Zoho CRM Integration
Connect your Zoho CRM to SuperWaba for real-time bidirectional sync between your WhatsApp contacts and Zoho CRM records. New WhatsApp conversations automatically create Leads in Zoho; changes in Zoho flow back to SuperWaba instantly.
Sync capabilities
What syncs automatically
| Direction | Trigger | What happens |
|---|---|---|
| SuperWaba → Zoho | New WhatsApp message from unknown number | Lead auto-created in Zoho with phone, name, source |
| SuperWaba → Zoho | Contact updated in SuperWaba | Zoho record updated with new fields |
| Zoho → SuperWaba | Contact/Lead created in Zoho | Contact auto-created in SuperWaba |
| Zoho → SuperWaba | Contact/Lead edited in Zoho | Local contact updated in real-time |
| Zoho → SuperWaba | Contact/Lead deleted in Zoho | Mapping removed (local contact preserved) |
Supported Zoho CRM modules
| Module | Sync support | Description |
|---|---|---|
| Leads | Full (read + write) | New WhatsApp contacts are created as Leads by default |
| Contacts | Full (read + write) | Converted leads or existing contacts sync bidirectionally |
| Deals | Read-only (inbound) | Deal info visible in SuperWaba contact panel |
| Accounts | Read-only (inbound) | Company/account info enriches contact profiles |
Field mapping
Outbound: SuperWaba → Zoho
| SuperWaba field | Zoho CRM field | Notes |
|---|---|---|
name | First_Name + Last_Name | Automatically split on whitespace |
phone | Phone | Primary deduplication field |
email | Email | Optional |
tags[] | Tag | Mapped as Zoho tag objects |
source | Lead_Source | See source mapping table below |
Source mapping:
| SuperWaba source | Zoho Lead_Source value |
|---|---|
whatsapp | |
instagram | |
facebook | |
messenger | Facebook Messenger |
livechat | Web Chat |
manual | Manual Entry |
campaign | Campaign |
api | API |
Inbound: Zoho → SuperWaba
| Zoho CRM field | SuperWaba field | Notes |
|---|---|---|
First_Name + Last_Name | name | Joined with space |
Phone or Mobile | phone | Phone preferred; Mobile as fallback |
Email | email | Optional |
Tag[].name | tags[] | Converted to string array |
| — | source | Set to zoho (prevents sync loops) |
Real-time sync via Watch API
SuperWaba subscribes to Zoho's Watch API for instant change notifications — no polling required.
Subscribed events
| Zoho Module | Events monitored |
|---|---|
| Contacts | create, edit, delete |
| Leads | create, edit, delete |
How it works
1. Record changes in Zoho CRM (user creates/edits/deletes)
2. Zoho Watch API sends notification to SuperWaba webhook
3. Webhook fetches full record details from Zoho API
4. Contact is created/updated in SuperWaba database
5. Changes appear in inbox immediately
Watch subscriptions auto-renew every 6 days (max Zoho expiry is 7 days).
Auto-sync: New WhatsApp contacts → Zoho Leads
Every time a new contact messages your WhatsApp Business number:
1. New WhatsApp message arrives from unknown number
2. Contact record created in SuperWaba (wa_contacts table)
3. Database trigger fires automatically
4. Checks if your org has an active Zoho connection
5. Skips if contact source is 'zoho' (prevents infinite loops)
6. Creates Lead in Zoho via upsert API (deduplicates by phone)
7. Saves mapping for future sync tracking
No manual action required — contacts flow to Zoho in seconds.
Manual sync options
Push to Zoho (outbound)
Push existing SuperWaba contacts to Zoho CRM as Leads:
- Batch upsert: up to 100 contacts per API call
- Deduplicates by phone number (won't create duplicates)
- Skips contacts that already have a Zoho mapping
Pull from Zoho (inbound)
Import Zoho CRM records into SuperWaba:
- First sync: fetches all Contacts (paginated, up to 10 pages)
- Incremental sync: only fetches records modified since last sync
- Deduplicates by phone number
Full sync (bidirectional)
Runs outbound push followed by inbound pull. Use for initial setup or reconciliation.
Conversation logging
When enabled, SuperWaba pushes conversation activity to Zoho:
| Activity | Zoho action |
|---|---|
| Conversation opened | Note added to Lead/Contact |
| AI agent summary generated | Note added with conversation summary |
| Conversation closed | Note updated with resolution |
| Labels/tags changed | Tags synced to Zoho record |
Sync loop prevention
Multiple safeguards prevent infinite sync loops:
- Source tagging — Contacts with
source = 'zoho'are never pushed back to Zoho - Mapping check —
zoho_contact_maptable checked before every sync - Zoho upsert dedup — Phone number deduplication as final safety net
- Channel ID tracking — Watch notifications include channel ID to identify source
Setup
Prerequisites
- Zoho CRM account (Free, Standard, Professional, or Enterprise)
- SuperWaba account with WhatsApp connected
- Admin access to your Zoho organization
Connect steps
- Go to Settings > Integrations > Zoho CRM
- Click Connect Zoho CRM
- Sign in with your Zoho account and authorize SuperWaba
- Grant all requested permissions (Contacts, Leads, Deals, Accounts, Notifications)
- Configure sync settings (direction, record type, field mapping)
OAuth permissions requested
| Scope | Purpose |
|---|---|
ZohoCRM.modules.contacts.ALL | Read/write Contacts |
ZohoCRM.modules.leads.ALL | Read/write Leads |
ZohoCRM.modules.deals.ALL | Read Deals |
ZohoCRM.modules.accounts.ALL | Read Accounts |
ZohoCRM.settings.modules.READ | Read module metadata |
ZohoCRM.notifications.ALL | Watch API for real-time sync |
Multi-region support
Zoho operates across multiple data centers. SuperWaba automatically detects and stores your region:
| Region | Supported |
|---|---|
| US (zoho.com) | Yes |
| EU (zoho.eu) | Yes |
| India (zoho.in) | Yes |
| Australia (zoho.com.au) | Yes |
| Japan (zoho.jp) | Yes |
| Canada (zoho.ca) | Yes |
Configuration
| Setting | Options | Description |
|---|---|---|
| Sync direction | One-way out, One-way in, Two-way | Controls which direction data flows |
| Default record type | Lead or Contact | Where new WhatsApp contacts land in Zoho |
| Auto-create | On/Off | Automatically create Zoho records for new conversations |
| Conversation logging | On/Off | Push conversation notes to Zoho records |
| Field mapping | Custom | Map SuperWaba fields to any Zoho custom fields |
Rate limits & optimization
Zoho API limits (per day, per Zoho org)
| Zoho Plan | Daily API credits |
|---|---|
| Free | 5,000 |
| Standard | 50,000 + 250/user |
| Professional | 50,000 + 500/user (max 3M) |
| Enterprise | 50,000 + 1,000/user (max 5M) |
How SuperWaba minimizes API usage
| Optimization | Effect |
|---|---|
| Batch upserts (100 records/call) | 1 credit per batch, not per record |
| In-database connection check | No HTTP call if no Zoho connection |
| Source filtering | Prevents credit waste from sync loops |
| Incremental sync | Only syncs records modified since last run |
| Phone dedup on upsert | Prevents duplicate record creation |
Disconnect
To disconnect Zoho CRM:
- Go to Settings > Integrations > Zoho CRM
- Click Disconnect
- This will:
- Revoke the OAuth refresh token at Zoho
- Deactivate the connection in SuperWaba
- Stop all Watch API notifications
- Preserve existing contact mappings (re-usable if you reconnect)
Troubleshooting
| Issue | Solution |
|---|---|
| Zoho changes not appearing | Check Watch API subscription is active in Settings |
| New contacts not syncing to Zoho | Verify auto-sync is enabled and connection is active |
| Duplicate records in Zoho | Ensure phone numbers include country code (E.164 format) |
| OAuth connect fails | Check that redirect URI matches exactly in Zoho API Console |
| Token refresh errors | Disconnect and reconnect — refresh tokens may be revoked |
| Wrong Zoho region | Disconnect and reconnect from the correct region |