Example deployment: CRM customer follow-up
A CRM workflow triggers timely follow-up messages after lead capture or deal movement, and every delivery event and reply is written back to the record timeline through middleware.
This is an example architecture, not a customer case study — use it as a technical starting point for your own deployment.
The business problem
Follow-up speed decides conversion, but reps forget, emails go unopened, and the CRM timeline doesn't show what the customer actually received.
Recommended architecture
- CRM workflowLead created or deal stage changed
- MiddlewareReceives the CRM event, applies consent rules
- SendiMessage APIPOST /send-message with contact + owner ids
- Managed messaging lineThe team's dedicated outreach line
- CustomerFollow-up arrives minutes after the trigger
- ReplyThe customer answers naturally
- Signed webhookreceive with the contact id
- CRM activity updateMiddleware writes the reply as timeline activity and notifies the owner
System trigger
Any CRM automation that can fire a webhook or HTTP request: Salesforce Flow, HubSpot Workflows, Zoho Deluge, Pipedrive webhooks, or Dynamics Power Automate. This example uses a generic middleware pattern that works with all of them.
SendiMessage API request
curl -sS https://api.sendimessage.com/v1/send-message \-H "X-API-Key: $SENDIMESSAGE_KEY" \-H "X-API-Secret: $SENDIMESSAGE_SECRET" \-H "Content-Type: application/json" \-d '{"number": "+15555550123","content": "Hi {{contact.first_name}}, thanks for reaching out — when works for a quick call this week?","status_callback": "https://your-endpoint.example.com/status?crm=your_crm&contact_id={{contact.id}}&owner_id={{owner.id}}&workflow=lead_follow_up"}'# → {# "status": "QUEUED",# "message_handle": "4e828182-a640-483f-bfe9-17ffcaa51d48",# "to": "+14155550123",# "service": null,# "is_outbound": true,# "error_message": null,# "date_sent": null# }
Channel behavior and SMS fallback
Sales follow-up benefits from iMessage's conversational feel where supported; SMS fallback keeps coverage complete. iMessage delivery is available on supported messaging lines and destinations. Recipients without iMessage receive SMS when fallback is configured — never assume universal iMessage availability.
Incoming replies
Replies route deterministically: the metadata you attached comes back on receive, so middleware knows the record and the owning rep. Automatic CRM synchronization is not claimed — your middleware performs the write-back via the CRM's API.
// "outbound" event → your your_crm endpoint// Verify the SendiMessage-Signature header (t={timestamp},v1=HMAC-SHA256 of// "{timestamp}.{raw body}", keyed with your webhook secret), then use// GET /v2/messages/{message_handle} for authoritative state and match it to// your contact_id in your_crm.
Messaging-line setup
Typically one line per sales team or brand. Keep outreach and support on separate lines for clean reply routing.
Security checklist
- API key in server environment variables or a secrets manager — never in client code.
- Webhook signatures verified before any record is updated.
- Only the fields a message needs (phone, first name, reference id) leave your system.
- Consent state checked in middleware before every send — STOP replies update the CRM immediately.
Pricing and managed onboarding
Per active line plus usage. Follow-up volume is usually modest — a single line covers most teams at the start. Every line goes through managed onboarding: use-case review, test line, credentials delivered securely, and guided production activation.
Want this setup?
Request the setup and the team will map this example to your systems, or book a review to talk it through first.