Key takeaways
- Choose API first if you have developers and several systems; choose a ready-made connector if it covers exactly your need, and check what it does not do.
- Use webhooks to bring delivery status back into the CRM instead of asking about each message.
- Sync opt-outs and consent in both directions, and let the CRM or a consent database be the source of truth.
- Test with test keys before you switch to live, and run a reconciliation that finds events that went missing.
Should you use an API first or a ready-made connector?
There are two ways to get messages out of a CRM or another business system. Both can be right; the choice depends on how much you want to control yourself.
| Area | API first | Ready-made connector |
|---|---|---|
| Control | You decide triggers, fields and flow | Limited to what the connector supports |
| Time to first message | Needs developer time | Often quicker to get started |
| Several systems and channels | The same API can serve all your systems | Typically one connector per system |
| Maintenance | You own the code and update it | Depends on who maintains the connector |
| What to ask | Documentation, testing, webhooks, limits | Which fields, triggers and channels it covers, and what it does not do |
Which events and webhooks should the CRM use?
Your CRM should not ask for the status of every message. Let the provider call you when something changes. ZafeConnect’s webhooks send a POST to your address for the events message.delivered, message.failed, message.opened and message.clicked.
- Store the message ID you receive when sending on the contact’s activity in the CRM, so each webhook can be matched to the right record
- Update status on every webhook, make the update safe to repeat, and never move a message backwards once it is delivered or failed
- Verify the signature in X-ZafeConnect-Signature (HMAC-SHA256 over the timestamp and the raw body) before you trust the call
- Return a 2xx quickly and process in a queue; ZafeConnect retries up to 5 times if your endpoint does not acknowledge
- Show the error code on the record, so an employee can see why a message did not arrive
How do you sync opt-outs and consent?
Consent and opt-outs are what most often go wrong when two systems have to agree. Pick one place as the source of truth, typically the CRM or a consent database, and let everything else follow it.
- Check the consent field in the CRM before every marketing send
- Update the CRM straight away when a person opts out, for example by replying to an SMS, and stop later sends to that person
- Sync in both directions: an opt-out that reaches your system must go into the CRM, and consent withdrawn in the CRM must stop sending
- Store when, how and with what wording consent was given
- Keep transactional and marketing messages apart, so an opt-out from marketing does not stop a code
- Replies and opt-outs need a number that can receive replies, and how they come back into your system depends on the setup; ask the provider before you build on it
How do you test and go live?
Treat the integration like any production system. ZafeConnect’s API has live and test keys, so you can build and test in the test environment before you switch to live.
- Build against the test key until the flow works from CRM to message and back to the CRM with status
- Give each service its own key, and keep keys on the server, not in a browser or in a CRM field that others can see
- Respect the rate limits: 1,000 requests per minute per key, and up to 10,000 messages per bulk request at 100 requests per minute
- Test failures: an invalid number, an endpoint that is down and a message without consent
- Switch to the live key and start with a small group before you open to everyone
- Reconcile: find messages with no final status, and ask the API about them
Which SMS providers support easy integration with CRM systems?
That depends on your CRM and your setup, so a list of providers would be guesswork. Set these requirements instead:
- Public API documentation that you can read before you talk to a salesperson
- Test and live keys and clear error codes
- Signed webhooks with retries, so status can come back into the CRM
- The ability to send and schedule, also in bulk
- Several channels behind the same integration, so you do not build a new one when you add email or RCS
- A clear statement of which CRM systems have ready-made connectors and what needs your own development
How ZafeConnect fits
ZafeConnect’s developer documentation is public and describes a REST API with X-API-Key, live and test keys, sending of SMS, RCS, WhatsApp and email, bulk and scheduled sending and signed webhooks. You can also connect your existing systems, and ZafeConnect states that you can be live in as little as 2 weeks. We do not list ready-made connectors for particular CRM systems here; tell us which one you use, and we will say how it can be connected.