SMS Errors
Troubleshoot common problems with Sift's SMS channel
SMS Errors
Common problems with the SMS channel and how to fix them.
Agent Not Responding to Texts
Problem: A lead texts your Sift number and gets no reply.
Check these in order:
Go to Billing → Usage. If credits remaining shows 0, your monthly allowance is exhausted (SMS spends 20 credits per reply).
- Fix: Buy a top-up pack from Billing → Usage → Buy Credits, or enable auto-recharge to prevent future interruptions.
- Your allowance resets on the 1st of every month.
Go to Deploy → SMS. Confirm the toggle shows Enabled and your number is displayed.
If SMS was accidentally disabled, re-enable it. The same number is retained.
Go to Leads, search by the lead's phone number, and open their profile.
If the lead previously texted STOP, their status shows SMS opted out. Sift silently discards all messages from opted-out leads — they must text UNSTOP to re-enable their number before Sift will respond again.
You cannot manually un-opt a lead on their behalf — the UNSTOP must come from the lead's own phone to satisfy UK PECR opt-out requirements.
AI response time is normally 5–15 seconds. Occasional spikes to 30 seconds occur during high load. If the number is correctly set up and quota is available, try texting a simple message like "hello" to confirm the channel is live.
Lead Texted STOP by Mistake
Problem: A lead texted STOP and now wants to engage — but Sift isn't responding to their messages.
Cause: STOP triggers Twilio's opt-out system. Sift marks the lead as opted out and discards all future messages from that number. This is permanent until the lead actively re-enables.
Fix: Ask the lead to text UNSTOP to your Sift number from their phone. Twilio processes the UNSTOP and their next message will be treated normally by Sift.
UNSTOP must come from the lead's own mobile number — you cannot trigger it from the Sift dashboard. This protects leads from having opt-out decisions overridden without their consent.
"Reply STOP to opt out" Appearing on Every Message
Problem: A lead sees "Reply STOP to opt out." at the start of every reply, not just the first one.
Expected behaviour: Sift prepends "Reply STOP to opt out." only on the first message in a conversation — as required by UK messaging regulations. Subsequent messages in the same thread do not include it.
Cause: This typically means the conversation was reset or deleted, causing Sift to treat each text as a new conversation. Common triggers:
- You deleted all chat logs via Settings → Data Management → Delete All Chat Logs
- The lead's conversation record was erased (GDPR erasure)
- The lead is texting from a different number than before
Fix: If the lead is a genuine returning contact (not a GDPR erasure case), the repeated opt-out notice is a minor inconvenience, not a fault. It resolves itself once the conversation record persists. Do not delete chat logs during an active conversation with a lead.
Number Not Provisioned / No Number Showing in Deploy
Problem: You go to Deploy → SMS and see no number, or the Enable button doesn't complete provisioning.
Lead Says They Sent a Text but It's Not in Sift
Problem: A lead claims to have texted your Sift number but no conversation appears in the Leads dashboard.
Check these in order:
-
Confirm the number: Verify the lead texted the correct number (the one shown in Deploy → SMS). A common mistake is texting an old agency number.
-
Check opt-out status: If the lead is already in your Leads list and is marked as opted out, their message was discarded silently.
-
Check credits: If your credit balance was at zero at the time, inbound messages are still received but the AI cannot respond. The message should still appear in Leads or Chat Logs — if it's not there, proceed to step 4.
-
Check message format: Very short messages (a single character, or a blank message) may be discarded. The lead should send a proper enquiry message.
-
Contact support: If none of the above apply and the lead is confident they texted the correct number, contact support@sift.software with the lead's number and approximate time of the text for investigation.
SMS Replies Going to the Wrong Lead / Conversations Mixed Up
Problem: Sift appears to be replying to one lead but the response references another lead's property enquiry.
Cause: Sift threads SMS conversations by phone number. If two leads use the same phone number (e.g., a couple sharing one phone to enquire about properties), their messages merge into one conversation.
Fix: This is a data quality issue rather than a Sift fault. If it becomes a regular problem, note that each lead should contact using their own number. You can manually split conversations by erasing the lead record and having each person re-enquire separately.
Long Agent Replies Are Being Split Into Multiple Texts
Problem: Sift's reply arrives as 2 or 3 separate SMS messages rather than one.
Cause: Standard SMS has a 160-character limit per segment. When Sift's response is longer, Twilio automatically splits it into multiple parts (known as "concatenated SMS"). Each part arrives separately, though most modern smartphones display them as one message.
This is not a fault. Message splitting is handled by Twilio transparently. It does not affect your credit usage — Sift counts AI responses (20 credits each), not individual SMS segments.
If you want shorter responses, go to Agent Setup → Custom Instructions and add an instruction such as: "Keep all SMS replies under 140 characters. Be concise."
Webhook Signature Errors (for Technical Users)
If you're reviewing server logs and see Invalid Twilio SMS webhook signature errors:
- This means Twilio's
X-Twilio-Signatureheader doesn't match the expected HMAC-SHA1 for the webhook URL. - Common cause: The webhook URL configured in Twilio's console doesn't match the URL
Sift expects. Check that
TWILIO_WEBHOOK_BASE_URLin your environment matches the Railway deployment URL exactly (no trailing slash, correct protocol). - This error causes Sift to return a 403 to Twilio. Twilio does not retry 403 responses — the message is lost.
- In development mode (no
TWILIO_AUTH_TOKENset), all signatures pass. Production requires the token.