Carepatron · Growth · 27 July 2026

SMS replies now have somewhere to go

Customers have been texting us back since January. Nobody could see it. Here's what was found, what's built, and the four steps left before it's live.

What was found

821
inbound texts since January, none seen by a human
100%
of free-text replies answered by Twilio's developer demo bot
376
STOPs honored by Twilio but invisible to Customer.io
164
real conversations recovered from the last 8 weeks

The root cause

All three Twilio numbers still had their inbound webhook on the factory default — Twilio's demo URL. Anyone who texted back got: "Thanks for the message. Configure your number's SMS URL to change this message." Verified on real threads: mid-trial prospects asking pricing questions received that, from us.

"Hi Glen! How long is the trial?" "Hi, yes that would be great" "Does it integrate with Square?" "I do need some help now" "Can you cancel my Carepatron subscription pls"

A second gap: because Customer.io never saw any inbound, it still counts all 376 STOP-senders as subscribed. Twilio blocks the sends regardless, so there's no compliance breach — but CIO's SMS metrics have been blind.

What people actually said · Jun 1 – Jul 27, after removing 148 auto-responder / tapback messages

General / context replies
72
Questions (product, plans, help)
51
Cancel / churn-risk
13
Warm interest signals
10
Booking-related
7
"Thanks" — no action
7
Opt-out in words, not keywords
4

Volume runs ~2–3 real replies per working day. The four worded opt-outs ("please stop texting me") slipped past Twilio's keyword handling — those people are still subscribed and are flagged first in the backlog file.

The system that's built everything in draft

Customer texts back
Twilio forwards to Customer.io · STOP / START / HELP handled automatically, never enter the flow
Campaign 95 — "SMS Reply Triage & Routing"
Splits on one question: are they a paying customer?
Paid → Customer Success
Ack text
"Our support team will reply by email shortly"
Intercom conversation
Opens in the CS inbox as the customer, tagged [SMS reply] — normal SLAs apply
Trial / free → Sales
Ack text
"Someone from our team will be in touch soon"
Pipedrive activity — due today
On the matched person, with the full reply text. Same proven pipe as the signup-dropoff sync
Loop guard: max one ack per person per 3 days — so a practitioner's after-hours auto-responder can't ping-pong with ours.

Component status

Campaign 95 — triage & routingDraft — trigger, branch, acks & webhooks all wired; canvas note explains the flow
Ack messages + Pipedrive emitterDraft — content set, Pipedrive payload preview-validated end to end
Pipedrive activity subscription (850612)Disabled — creates a due-today task on the person when a sales reply lands
Intercom connectionBlocked — needs an access token from you; placeholder header until then
Twilio webhooks (3 numbers)Untouched — still on the demo URL; flipped last, so there's never a silent gap
Backlog workbookReady~/Downloads/sms-reply-backlog-jun-jul-2026.xlsx

The backlog file — 164 threads, ready to hand over

114
Sales tab — trial & free repliers, HIGH rows first (cancels, pricing, warm leads)
46
CS tab — paying customers, incl. unanswered cancel requests
4
Opt-out tab — do these first; they're still subscribed

Each row: who they are (162 of 173 senders matched in Pipedrive), plan state, what they said, which SMS they were replying to, a suggested action, and a Pipedrive link. The Read-me sheet has a suggested opener: honest, brief, "your text didn't reach a human — that was our mistake and it's fixed."

Go-live — in order

  • Unsubscribe the 4 worded opt-outsYou
    Opt-out tab of the backlog file. Two minutes, and it's the only compliance-flavored item — do it before any new SMS send.
  • Create an Intercom access tokenYou
    Intercom → Settings → Developer Hub → new internal app, conversations write scope. Paste it to Claude — the CS branch is dead until then.
  • Review campaign 95, then say goYou
    Open it in Customer.io — the blue canvas note walks the flow. Nothing sends until you approve.
  • Enable everything + flip Twilio webhooks + live testClaude
    Same session as your go: actions → automatic, campaign started, Pipedrive sub enabled, then the three numbers repointed to Customer.io. The demo bot dies the same minute the routing goes live. Verified with a real test reply.
  • Forward the backlog tabs to Glen + CS leadYou
    One email each with their tab. The follow-ups decay fast — same-week is worth real money here.
  • Week-one match-rate checkClaude
    Compare Twilio's inbound log against CIO reply events. Sampled CIO phone formats suggest an estimated 10–30% of replies may not match a profile — if the real number is bad, a one-off phone-normalization backfill fixes it.
0 of 6 done

Decisions locked & fine print

Why route by plan state, not by what the message says
Your call from the grill: paid → CS, trial/free → sales. It's one reliable attribute Customer.io already knows (segment 18, "Paying customers"), instead of fragile content classification on ~70 messages a month. A trialist texting "cancel" still goes to sales — that's a save conversation.
Why Customer.io sits in the middle, not custom middleware
A raw Twilio payload is a phone number and a body. Customer.io is the only system that instantly resolves that to a person — name, email, plan, which campaign they replied to — so sales gets "Sarah, day 6 of trial, replied to the reactivation SMS" instead of a bare number. Zero infrastructure to maintain, and opt-out compliance lives in the same place.
What happens to STOP / START / HELP now
Unchanged and automatic: Twilio suppresses at carrier level and sends the confirmation. New: Customer.io finally hears about it — opt-outs are recorded per sender number, SMS-only (email subscriptions are untouched). The 376 historic STOPs stay blocked by Twilio either way; backfilling them into CIO is optional metrics hygiene, parked.
Known limits, stated plainly
1) This triages replies; it isn't a two-way texting inbox. Humans respond by email or call — the right move for this volume. If SDR text-threading ever becomes a real motion, sales gets its own numbers in a conversational tool; the blast number never does both jobs. 2) Replies from numbers CIO can't match become anonymous events — unroutable. Measured in week one (item 6). 3) The Intercom "create conversation by email" API shape is the one unverified piece — tested the moment the token arrives.
Component reference (for future sessions)
Campaign 95 · branch 736 on segment 18 · acks 737/739 (templates 676/678) · Intercom webhook 738 (template 677, placeholder token) · sales emitter 740 (template 679) → event sms_reply_sales → CDP source 156602 → Pipedrive destination 334088 subscription 850612 (disabled) · loop-guard segment 217 · Twilio webhook target https://track.customer.io/inbound/sms.