Solutions / CRM
Add WhatsApp to your CRM without owning Meta infrastructure.
Give every customer record a compliant WhatsApp channel. ClickMaker Connect handles Embedded Signup, token custody, template sync, message dispatch, delivery events and tenant isolation while your CRM keeps the user experience.
The problem
WhatsApp is not a checkbox feature
Building WhatsApp directly means operating OAuth flows, token rotation, webhook verification, retry queues, template policy and tenant boundaries. That is infrastructure work, not CRM work.
Each customer needs their own WABA and number, not a shared sender.
Meta tokens must be encrypted and refreshed without exposing them to browsers.
Webhooks arrive out of order, duplicated and with provider-specific payloads.
Messaging eligibility and the 24-hour service window must be enforced before send.
How it works
Integrate once. Serve every customer.
Your CRM becomes an OAuth-style client of ClickMaker Connect. A customer authorises your application, selects a connected number, and your backend calls a stable REST API with a scoped key.
Register your application
Create an application in ClickMaker Connect with redirect URLs, scopes and webhook endpoints. Each environment gets its own credentials.
Redirect for authorisation
Send the customer through ClickMaker authorisation. They pick an organization and WhatsApp number and grant only the scopes you requested.
Send through the API
Call /messages or /messages/template with the customer's authorization. Tokens are resolved server-side and scoped to that tenant.
React to signed events
Receive message.received, message.delivered and message.failed webhooks. Verify the signature, deduplicate by event ID and update your CRM timeline.
ClickMaker ConnectCustomer-owned WABA and phone number. Meta policy, templates and delivery remain under Meta's control.
Assets stay with the customerCapabilities
What you can build on the platform.
Contact and conversation sync
Map WhatsApp contacts and conversations to your CRM records with stable external IDs supplied by your application.
Template-aware messaging
List only approved templates for the selected WABA, including language variants and variable schemas.
Delivery truth
Queued, sent, delivered, read and failed are distinct states. Never mark a message delivered because Meta accepted the request.
Tenant-safe by construction
Every record, API key and webhook event is bound to an organization. Cross-tenant access fails closed.
Send a template from your CRM backend
TypeScriptimport { ClickMakerConnect } from "@clickmaker/connect"
const connect = new ClickMakerConnect({
apiKey: process.env.CLICKMAKER_API_KEY,
// Never expose this key to the browser.
})
await connect.messages.sendTemplate({
authorizationId: "auth_01J...",
to: "919876543210",
template: {
name: "appointment_reminder",
language: "en",
components: [
{ type: "body", parameters: [{ type: "text", text: "Rahul" }] },
],
},
externalId: "crm-appointment-8842",
})Examples reflect the documented API shape. Endpoints marked as planned in the developer portal are not yet available.
FAQ
Common questions.
Do we need our own Meta developer app?
No. ClickMaker operates the Meta application and Tech Provider integration. Your CRM registers an application with ClickMaker and receives scoped credentials.
Do we ever receive customer Meta tokens?
No. Meta access tokens are encrypted at rest inside ClickMaker and never returned by any API.
Can one CRM serve many customer organizations?
Yes. Each organization authorises your application independently and every subsequent request is scoped to that authorization.
ClickMaker Connect
Build WhatsApp into your CRM
Talk to our integration team about scopes, tenant mapping and a sandbox application.
No shared ClickMaker sender · Customers own their assets