Keep Zoho CRM Accounts and Contacts aligned with your connected SubscriptionFlow tenant through secure, bidirectional, real-time sync.
1) Overview
The SubscriptionFlow extension for Zoho CRM helps you:
- Connect your Zoho CRM organization (with multi-datacenter OAuth support)
- Connect your SubscriptionFlow tenant
- Automatically provision required Zoho CRM sync configuration (webhooks and Account email field)
- Sync bidirectionally between Zoho CRM and SubscriptionFlow:
- Zoho CRM → SubscriptionFlow: Accounts sync as Customers; Contacts sync as Contacts
- SubscriptionFlow → Zoho CRM: Customers sync as Accounts; Contacts sync as Contacts
- Prevent sync loops using origin tracking and deduplication logic
- Monitor sync activity through operational logging
After setup is completed, data sync is event-driven and handled automatically in both directions.
2) Prerequisites
Before using the extension, ensure:
- You are a Zoho CRM admin (or have permissions to install/configure extensions)
- You have an active SubscriptionFlow tenant
- You have SubscriptionFlow API credentials:
- Tenant Domain
- Client ID
- Client Secret
- You have admin access to configure webhooks in SubscriptionFlow (Settings → Webhooks)
- Internet access to load the extension widget and OAuth flow
Supported Zoho datacenters: US, IN, EU, AU, CA, SA, and JP.
3) Installation
- Install the SubscriptionFlow for Zoho CRM extension from Zoho Marketplace.
- Open Zoho CRM and navigate to the extension settings page: SubscriptionFlow - Settings.
- The onboarding console opens with three setup areas:
- Step 1: Zoho CRM OAuth
- Step 2: SubscriptionFlow connection
- Step 3: SubscriptionFlow webhook setup (for reverse sync)
4) Step 1 — Connect Zoho CRM
- In the extension settings page, click Connect Zoho.
- Complete the OAuth consent flow in the authentication window.
- After successful authorization, the extension:
- Fetches and stores your Zoho organization details
- Auto-registers Zoho CRM webhooks for Accounts and Contacts (create, edit, delete)
- Provisions the Account Email field in Zoho CRM when required for customer sync
Expected result
- Zoho connection status shows as Connected
- Organization name, Org ID, region, and API domain are displayed in the console
Notes
- OAuth supports Zoho multi-datacenter routing (your region is detected automatically during authorization).
- If webhook auto-registration fails, reconnect Zoho once to retry. The OAuth connection itself is still saved.
5) Step 2 — Connect SubscriptionFlow Tenant
In the SubscriptionFlow section, enter:
- Domain (e.g.,
https://yourtenant.subscriptionflow.com) - Client ID
- Client Secret
Click Connect SubscriptionFlow.
Expected result
- SubscriptionFlow status shows as Connected
- Your tenant domain is displayed in the console
- Webhook setup details for reverse sync are available in Step 3
Notes
- Connect Zoho first so the tenant Org ID is discovered automatically.
- SubscriptionFlow access tokens are stored securely and refreshed automatically when expired.
6) Step 3 — Configure SubscriptionFlow Webhooks (Reverse Sync)
SubscriptionFlow does not support programmatic webhook registration. To enable SubscriptionFlow → Zoho CRM sync, configure webhooks manually in your SubscriptionFlow tenant.
After Step 2 is complete, the extension settings console displays the webhook URLs for your organization.
6.1 Customer → Zoho Account webhook
In SubscriptionFlow, go to Settings → Webhooks → New Webhook and configure:
| Setting | Value |
|---|---|
| Module | Customers |
| Event | Customer Created |
| Method | POST |
| Payload Type | Default |
| URL | Copy from extension console (format: your-tenant-sf-link/api/webhooks/sf/customers?orgId={yourOrgId}) |
6.2 Contact → Zoho Contact webhook
Create a second webhook:
| Setting | Value |
|---|---|
| Module | Contacts |
| Event | Contact Created |
| Method | POST |
| Payload Type | Default |
| URL | Copy from extension console (format: your-tenant-sf-link/api/webhooks/sf/contacts?orgId={yourOrgId}) |
Expected result
- New or updated Customers in SubscriptionFlow create/update matching Accounts in Zoho CRM
- New or updated Contacts in SubscriptionFlow create/update matching Contacts in Zoho CRM
- Records originating from Zoho CRM are skipped automatically to prevent sync loops
7) Automatic Configuration Performed by the Extension
After Zoho CRM is connected, the extension automatically:
7.1 Email field handling in Accounts
- Ensures the Account Email field required for customer sync is available in Zoho CRM
- Adds the field to the Accounts layout when needed
During usage, Accounts should contain a valid email for the smoothest customer sync. If no Account email exists, the extension may use the primary related Contact email.
7.2 Zoho CRM webhook auto-configuration
Webhooks are automatically registered for your Zoho CRM organization:
| Module | Events |
|---|---|
| Accounts | create, edit, delete |
| Contacts | create, edit, delete |
No manual Zoho webhook copy/paste is required when auto-configuration succeeds.
7.3 Token management
- Zoho OAuth tokens and SubscriptionFlow API tokens are refreshed automatically
- Re-authorizing Zoho refreshes tenant context and re-registers webhooks
7.4 Sync loop prevention
- Records synced from Zoho CRM to SubscriptionFlow are tagged with
data_source = "Zoho CRM" - When those records trigger SubscriptionFlow webhooks back to the extension, they are skipped to prevent infinite sync loops
8) Data Sync Behavior
8.1 Zoho CRM → SubscriptionFlow (Accounts)
When an Account is created, updated, or deleted in Zoho CRM:
- A Zoho webhook event is triggered
- The extension fetches the latest Account data from Zoho CRM
- The record is mapped and upserted in SubscriptionFlow as a Customer
- Sync outcome is logged for troubleshooting
Mapping highlights: Account Name, email, phone, and billing/shipping address fields.
8.2 Zoho CRM → SubscriptionFlow (Contacts)
When a Contact is created, updated, or deleted in Zoho CRM:
- A Zoho webhook event is triggered
- The extension fetches the latest Contact data from Zoho CRM
- The record is mapped and upserted in SubscriptionFlow as a Contact
- Related Account linkage is preserved where applicable
8.3 SubscriptionFlow → Zoho CRM (Customers)
When a Customer is created or updated in SubscriptionFlow (via configured webhooks):
- SubscriptionFlow sends a webhook to the extension
- The extension checks the loop guard (data_source must not be Zoho CRM)
- The extension looks up an existing Zoho Account by email when possible
- The Customer is created or updated as a Zoho CRM Account
8.4 SubscriptionFlow → Zoho CRM (Contacts)
When a Contact is created or updated in SubscriptionFlow (via configured webhooks):
- SubscriptionFlow sends a webhook to the extension
- The extension checks the loop guard
- The related Customer/Account is resolved (created in Zoho CRM if missing)
- The Contact is created or updated in Zoho CRM, matched by email when possible
9) Validation and Important Notes
- Account records should include a valid email for smooth customer sync
- If SubscriptionFlow credentials change, reconnect the tenant in extension settings
- If Zoho OAuth is re-authorized, tenant context and webhooks are refreshed automatically
- Sync is organization-specific (each Zoho Org ID is tenant-isolated)
- Duplicate protection uses email matching where available
- Disconnecting either integration stops sync for that direction until reconnected
10) How to Verify Setup
Verify Zoho CRM → SubscriptionFlow
- Confirm both statuses are Connected in extension settings.
- Create a test Account in Zoho CRM (with a valid email).
- Verify the corresponding Customer appears in your SubscriptionFlow tenant.
- Update the Account in Zoho CRM and confirm the Customer updates in SubscriptionFlow.
- Create a test Contact in Zoho CRM.
- Verify the corresponding Contact appears in SubscriptionFlow.
Verify SubscriptionFlow → Zoho CRM
- Confirm SubscriptionFlow webhooks from Step 3 are configured and active.
- Create a test Customer in SubscriptionFlow (not originating from Zoho CRM).
- Verify the corresponding Account appears in Zoho CRM.
- Create a test Contact in SubscriptionFlow linked to that Customer.
- Verify the corresponding Contact appears in Zoho CRM.
11) Troubleshooting
Issue: Zoho auth does not complete in embedded page
- Re-initiate Connect Zoho and complete OAuth in the opened auth window.
- Return to extension settings and refresh status.
Issue: Zoho → SubscriptionFlow sync not working
- Verify Zoho shows Connected in extension settings.
- Reconnect Zoho once to re-register webhooks.
- Confirm the Account has a valid email.
- Create a fresh test Account/Contact after reconnecting.
Issue: SubscriptionFlow → Zoho CRM sync not working
- Verify SubscriptionFlow webhooks are configured (Step 3) with the correct org-specific URLs.
- Confirm the Customer/Contact was created directly in SubscriptionFlow (not synced from Zoho CRM).
- Reconnect SubscriptionFlow if credentials were changed.
Issue: Account sync fails
- Check that the Account has a valid email.
- Confirm SubscriptionFlow domain and client credentials are correct.
- Reconnect SubscriptionFlow if needed.
Issue: Contact sync fails
- Ensure both Zoho CRM and SubscriptionFlow connections are active.
- Verify the related Customer/Account exists or can be created.
- Retry with a newly created test Contact after confirming setup status.
Issue: Duplicate or looped records
- The extension skips records with
data_source = "Zoho CRM"on reverse sync. - If duplicates appear, verify email fields are populated consistently in both systems.
Issue: No records are syncing
- Verify both Zoho CRM and SubscriptionFlow show Connected.
- Reconnect both integrations once to reinitialize configuration.
- Re-test with fresh Account/Contact/Customer records.
12) Support
For setup help or production support, contact:
- Support Email: support@subscriptionflow.com
- Website: https://www.subscriptionflow.com/