Documentation

User Manual

SubscriptionFlow for Zoho CRM — installation, connection setup, webhook configuration, sync behavior, and troubleshooting.

Product
SubscriptionFlow
Platform
Zoho CRM

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

  1. Install the SubscriptionFlow for Zoho CRM extension from Zoho Marketplace.
  2. Open Zoho CRM and navigate to the extension settings page: SubscriptionFlow - Settings.
  3. 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

  1. In the extension settings page, click Connect Zoho.
  2. Complete the OAuth consent flow in the authentication window.
  3. 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:

SettingValue
ModuleCustomers
EventCustomer Created
MethodPOST
Payload TypeDefault
URLCopy from extension console (format: your-tenant-sf-link/api/webhooks/sf/customers?orgId={yourOrgId})

6.2 Contact → Zoho Contact webhook

Create a second webhook:

SettingValue
ModuleContacts
EventContact Created
MethodPOST
Payload TypeDefault
URLCopy 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:

ModuleEvents
Accountscreate, edit, delete
Contactscreate, 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:

  1. A Zoho webhook event is triggered
  2. The extension fetches the latest Account data from Zoho CRM
  3. The record is mapped and upserted in SubscriptionFlow as a Customer
  4. 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:

  1. A Zoho webhook event is triggered
  2. The extension fetches the latest Contact data from Zoho CRM
  3. The record is mapped and upserted in SubscriptionFlow as a Contact
  4. 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):

  1. SubscriptionFlow sends a webhook to the extension
  2. The extension checks the loop guard (data_source must not be Zoho CRM)
  3. The extension looks up an existing Zoho Account by email when possible
  4. 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):

  1. SubscriptionFlow sends a webhook to the extension
  2. The extension checks the loop guard
  3. The related Customer/Account is resolved (created in Zoho CRM if missing)
  4. 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

  1. Confirm both statuses are Connected in extension settings.
  2. Create a test Account in Zoho CRM (with a valid email).
  3. Verify the corresponding Customer appears in your SubscriptionFlow tenant.
  4. Update the Account in Zoho CRM and confirm the Customer updates in SubscriptionFlow.
  5. Create a test Contact in Zoho CRM.
  6. Verify the corresponding Contact appears in SubscriptionFlow.

Verify SubscriptionFlow → Zoho CRM

  1. Confirm SubscriptionFlow webhooks from Step 3 are configured and active.
  2. Create a test Customer in SubscriptionFlow (not originating from Zoho CRM).
  3. Verify the corresponding Account appears in Zoho CRM.
  4. Create a test Contact in SubscriptionFlow linked to that Customer.
  5. 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: