Your CRM
- Contacts and consent state
- Workflow and automation triggers
- Conversation UI in the record
SMS API for CRMs
Your users want to text from the record they are already looking at. The API call is the easy part. What follows it is sender registration, consent records, opt-out handling, delivery reconciliation, and a carrier relationship nobody on your roadmap owns. Tells gives you the REST surface and takes the telecom operation.
A CRM adds SMS by calling a messaging API from the record that triggered it and by accepting webhook callbacks that write delivery status, inbound replies, and opt-outs back onto that record. Tells provides that as one OAuth2 authenticated REST surface covering SMS and MMS, RCS with automatic SMS fallback, AI voice agents, call announcements, and number intelligence across United States and Canada routes. The Tells team prepares and tracks 10DLC, short code, and toll-free registrations, so the work your engineers own stays inside your own product.
Architecture
Tells is the messaging layer between your application and the carriers. Your CRM stays the system of record. Nothing about your data model has to move.
Two integration points do most of the work: an outbound call when your workflow fires, and an inbound endpoint that receives everything the network has to say back.
Message paths
A record changes, an automation runs, or a user hits send in your conversation view. Your service authenticates with an OAuth2 bearer token and posts the message to the Tells API. Because number intelligence is available in the send path, your platform can check carrier and line type, CNAM, and a 0 to 100 activity score before spending a segment on a number that will not convert.
Carrier acceptance, delivery receipts, inbound messages, replies, call completions, and opt-out events arrive at endpoints you own. Your CRM writes them onto the record, so the conversation thread and the consent state stay accurate without a polling loop or a nightly reconciliation job.
Webhook events
These are the message lifecycle events the platform surfaces. Map each one to a write on your side before you ship, because every one of them changes what your users see in the record.
Design your handler to be idempotent and to tolerate retries. Message lifecycle events are not guaranteed to arrive exactly once in any messaging platform, so key your writes on the message identifier.
Number intelligence
CRM databases accumulate bad numbers: disconnected lines, landlines typed into a mobile field, and contacts who have not been reachable in years. Number intelligence lets your platform decide before it sends.
Know whether the number is mobile, landline, or VoIP before a workflow burns a segment on it.
The caller name on record for the number, useful when your users need to confirm they are messaging the right party.
A 0 to 100 score you can threshold on, so stale records get suppressed or routed to a different channel instead of sent.
These run in real time and are usable directly in the send path for routing and suppression decisions. Detail: Number intelligence.
Compliance
When your platform sends on behalf of your customers, you inherit questions that a single brand sending for itself never faces. Here is the honest split.
Registration outcomes are decided by carriers, The Campaign Registry, and external vetting partners. Carrier and registry approval decisions remain outside any provider control, including ours. More detail on the operational split lives on Managed SMS compliance.
Beyond SMS
The reason to integrate once is that the second and third channel do not become second and third integrations. These attach to the same REST surface and the same relationship.
Verified brand sender with rich cards, carousels, and quick replies, falling back to SMS automatically on devices that cannot receive it. Tells handles the Google verification submission for your brand.
Detail: /solutions/rcs-messagingAgents that share conversation context across SMS and voice and escalate to a human with the full transcript and captured fields, so your CRM record keeps the whole thread.
Detail: /solutions/ai-sms-voice-agentsBranded SMS delivered ahead of an outbound dial through the same REST API, so the call your users place is not an unknown number on the recipient side.
Detail: /solutions/sms-call-announcementsUse cases
A conversation view on the contact, with replies threaded back automatically instead of pasted in by a rep.
Stage changes, appointment reminders, and follow ups sent by the automation your customers already configured.
Each of your customers sends under their own registered sender, with suppression and consent tracked per tenant.
A message within seconds of a lead landing, triggered by the same event that creates the record.
Line type and activity checks that keep unreachable numbers out of campaigns and out of your delivery statistics.
A conversation that starts on SMS and moves to an AI voice agent or a human without losing context.
Before you build
Access is provisioned per account, so the first step is a scoping conversation rather than a signup form. These are the questions that actually shape your build.
FAQ
Call a messaging API from the workflow or user action that should send, and expose a webhook endpoint that receives delivery status, inbound messages, replies, and opt-out events so your records stay accurate. With Tells that is one OAuth2 authenticated REST surface, and the sender registration behind it is performed by the Tells team rather than by your engineers.
If your platform sends on behalf of customers, each sending brand generally needs its own registration rather than one shared under your name. Tells prepares, submits, and tracks those filings and works the carrier review follow ups. Your part is supplying accurate brand and use case information. Carrier and registry approval decisions remain outside any provider control, including ours.
Inbound messages and replies arrive as webhook callbacks to an endpoint you own, and your handler writes them onto the matching contact. Because the events are pushed rather than polled, the conversation thread in your interface reflects what actually happened on the network.
Yes. Carrier and line type, CNAM, and a 0 to 100 activity score are available in real time and usable directly in the send path, so your platform can suppress or reroute before a message is dispatched.
STOP and HELP handling runs automatically on the platform side, and an opt-out event is delivered to your webhook endpoint. Write it to the contact as suppression state and enforce it in your own send logic as well, so the consent decision is visible to your users inside the CRM.
The full endpoint reference, SDKs, Postman collection, and sandbox environment are provided with account credentials during onboarding rather than published openly. Plan the integration spike for after access rather than before it.
Yes. RCS with automatic SMS fallback, AI SMS and voice agents, and SMS call announcements are reached through the same REST surface and the same account relationship, so adding them later is a scope conversation rather than a new vendor integration.
Fifteen minutes on volumes, sender types, and how your platform sends on behalf of customers. That conversation is what shapes registration, and registration is what paces the launch.
Prefer email? Developer onboarding runs through dave@tells.co.