Indian D2C, fintech, and B2B SaaS teams running WhatsApp campaigns without CRM integration are flying blind — leads land in the BSP, customer history lives in HubSpot or Zoho, and ops teams reconcile manually with spreadsheets. The 2026 architecture wires both directions: WhatsApp inbound events push to CRM (lead created, message received, sentiment), CRM events push to WhatsApp (campaign trigger, lifecycle stage change, deal won). This guide is the integration playbook for HubSpot, Zoho CRM, Salesforce, LeadSquared, and Pipedrive — the four data flows that matter, the API patterns each CRM uses, the field mapping checklist, and the failure modes that desync your two systems.
The Four Data Flows Every WhatsApp + CRM Integration Needs
| Direction | Trigger | Action |
|---|---|---|
| WhatsApp → CRM | New inbound message from unknown number | Create lead/contact with phone, source: whatsapp |
| WhatsApp → CRM | Lead form submitted via Meta Native Flow | Update existing lead with form fields + tag |
| CRM → WhatsApp | Lead lifecycle stage changes | Trigger campaign or chatbot flow on contact |
| WhatsApp → CRM | Conversation status updates (sent, read, replied) | Append timeline event on contact record |
HubSpot Integration Pattern
WhatsApp → HubSpot (lead capture)
// On WhatsApp inbound webhook receipt:
POST https://api.hubapi.com/crm/v3/objects/contacts
Authorization: Bearer {HUBSPOT_PRIVATE_APP_TOKEN}
{
"properties": {
"phone": "+919876543210",
"firstname": "Priya",
"hs_lead_status": "NEW",
"lifecyclestage": "lead",
"lead_source": "whatsapp_ctwa",
"whatsapp_first_message": "Hi, looking for ...",
"whatsapp_received_at": "2026-04-28T14:30:00Z"
}
}
HubSpot → WhatsApp (campaign trigger)
Use HubSpot Workflows + custom webhook action. When lifecycle stage changes to "MQL" or "SQL", webhook fires to your BSP API to dispatch the appropriate WhatsApp campaign on that contact's number.
Zoho CRM Integration Pattern
WhatsApp → Zoho (lead capture)
POST https://www.zohoapis.in/crm/v6/Leads
Authorization: Zoho-oauthtoken {ACCESS_TOKEN}
{
"data": [{
"Last_Name": "Sharma",
"Phone": "+919876543210",
"Lead_Source": "WhatsApp",
"Lead_Status": "Not Contacted",
"WhatsApp_First_Message": "Hi, looking for ..."
}]
}
Zoho → WhatsApp (campaign trigger)
Use Zoho Workflow Rules with Custom Function (Deluge script) to call your BSP API when a lead is converted, deal stage changes, or a custom field updates. Deluge scripts execute synchronously up to 3 seconds — push the BSP call to a queue if slower.
Salesforce Integration Pattern
WhatsApp → Salesforce (lead capture)
POST https://yourdomain.my.salesforce.com/services/data/v60.0/sobjects/Lead
Authorization: Bearer {SALESFORCE_OAUTH_TOKEN}
{
"LastName": "Sharma",
"Phone": "+919876543210",
"LeadSource": "WhatsApp",
"Status": "Open - Not Contacted",
"WhatsApp_First_Message__c": "Hi, looking for ..."
}
Salesforce → WhatsApp (campaign trigger)
Use Salesforce Flow with HTTP Callout action or Apex trigger calling your BSP API on lead status change, opportunity creation, or custom event. Bulk operations should batch via Salesforce Bulk API to avoid hitting the per-second governor limit (10 callouts per second per org by default).
LeadSquared Integration Pattern
LeadSquared dominates Indian fintech and EdTech CRM market. Use the v2 API:
POST https://api.leadsquared.com/v2/LeadManagement.svc/Lead.Capture
?accessKey={ACCESS_KEY}&secretKey={SECRET_KEY}
[
{ "Attribute": "Phone", "Value": "+919876543210" },
{ "Attribute": "FirstName", "Value": "Priya" },
{ "Attribute": "Source", "Value": "WhatsApp CTWA" },
{ "Attribute": "mx_WhatsApp_Status", "Value": "Engaged" }
]
Pipedrive Integration Pattern
POST https://yourcompany.pipedrive.com/api/v1/persons?api_token={TOKEN}
{
"name": "Priya Sharma",
"phone": [{ "value": "+919876543210", "primary": true }],
"label": "WhatsApp Lead"
}
# Then create deal:
POST /api/v1/deals?api_token={TOKEN}
{
"title": "WhatsApp Lead - Priya Sharma",
"person_id": {PERSON_ID_FROM_ABOVE},
"stage_id": {NEW_LEAD_STAGE_ID}
}
Field Mapping Checklist
Map these fields on every CRM integration:
- Phone — primary key for matching. Normalise to E.164 (+91xxxxxxxxxx) on both sides.
- First name / Last name — capture from WhatsApp profile or first user message.
- Lead source — set to "WhatsApp", "WhatsApp CTWA", or "WhatsApp Inbound" for attribution.
- WhatsApp opt-in timestamp — DPDP Act audit trail.
- WhatsApp first message — text of initial inbound, useful for context and routing.
- WhatsApp last activity — for re-engagement campaign segmentation.
- WhatsApp service window state — "open" or "closed" for cost-aware messaging.
- WhatsApp opt-out flag — STOP request honour status.
- Conversation tags — chatbot-assigned segmentation.
The Four Failure Modes That Desync CRM and WhatsApp
- Phone normalisation drift. CRM stores +91-9876-543210, WhatsApp expects +919876543210 or 919876543210. Same person, different keys, two records. Normalise at integration boundary.
- Webhook retry storms. When CRM returns 5xx, BSP retries the webhook event. Without idempotency on the CRM side, you create duplicate records on every retry. Use unique constraints on phone or external_id.
- STOP request not propagated. Customer replies STOP on WhatsApp but CRM still shows them as opted-in. Wire the STOP webhook to update the CRM consent flag immediately.
- Lifecycle stage race condition. Customer opts in via WhatsApp form, CRM marks as MQL, campaign workflow triggers WhatsApp marketing template. But if the form submit and stage-change are async, the campaign may fire before consent is recorded. Sequence operations explicitly.
Recommended Integration Architecture
WhatsApp Cloud API (Meta)
│
▼ webhook
[BSP Webhook Receiver]
│ persist + queue
▼
[BSP Worker]
│
├─→ [BSP Database (conversations, contacts, attributes)]
│
└─→ [CRM Sync Service]
│
▼ HTTP
[CRM API (HubSpot / Zoho / Salesforce / etc.)]
│
▼ webhook
[CRM Webhook Receiver inside BSP]
│
▼
[Campaign / Flow Trigger Service]
│
▼
[WhatsApp Outbound]
Both directions use idempotency keys (wamid for WhatsApp side, CRM record id for CRM side) and a dedupe table to absorb retries.
Wire CRM + WhatsApp on RichAutomate.
Pre-built integrations for HubSpot, Zoho, Salesforce, LeadSquared, Pipedrive. Two-way sync, STOP propagation, lifecycle-stage triggers, and the dedupe layer that keeps both systems consistent.