Integration Guide

How to Connect InstantDM with Zoho CRM (Step-by-Step Guide)

Learn how to connect InstantDM with Zoho CRM to automatically capture Instagram DM leads as Zoho contacts and leads. Step-by-step guide using webhooks, Make.com, and Zapier.

Meta Business Partner
30,000+ creators
$9.99/mo flat

Connecting InstantDM to Zoho CRM automatically creates Leads or Contacts in Zoho whenever someone interacts with your Instagram DM automations. Lead data from flow responses - name, email, phone, interests - flows directly into Zoho without manual entry.

This guide covers setup via Make.com, Zapier, and Zoho's native webhook/API options.


Why Connect InstantDM to Zoho CRM?

  • Auto-create Leads from Instagram DM flows with all captured data
  • Zero manual entry - leads appear in Zoho within seconds
  • Tag lead source as "Instagram DM" for pipeline tracking
  • Trigger Zoho workflows - auto-assign leads, send emails, create tasks
  • Works with Zoho One - data flows into Zoho's full suite (Campaigns, Desk, Analytics)

Common Use Cases

  • Create a Zoho Lead when someone completes a DM lead capture flow
  • Add Instagram leads to a Zoho CRM campaign
  • Trigger a Zoho Blueprint when a new Instagram lead arrives
  • Log DM interactions as Notes on a Lead or Contact
  • Sync flow responses to custom Zoho fields

What You'll Need

Requirement Details
InstantDM account Trendsetter, Trendsetter Pro, or any Multi plan
Zoho CRM account Free, Standard, Professional, or Enterprise
InstantDM API key Found at Settings → API in your InstantDM dashboard
Automation platform (optional) Make.com or Zapier for no-code setup

Method 1: Via Make.com (Recommended)

Step 1: Set Up the Webhook

Follow Steps 1-4 in the Make.com integration guide to create a webhook scenario receiving InstantDM events.

Step 2: Add a Zoho CRM Module

  1. After the webhook trigger, add a Filter: event equals flow_completed.
  2. Click "+" and search for Zoho CRM.
  3. Select Create a Record.
  4. Connect your Zoho CRM account (Make.com handles OAuth).
  5. Set the module to Leads.

Step 3: Map Fields

Zoho CRM Field Make.com Mapping
Last Name {{data.response_variables.full_name}}
Email {{data.response_variables.email}}
Phone {{data.response_variables.phone}}
Lead Source Instagram DM
Description Completed "{{data.flow_name}}" flow. Interest: {{data.response_variables.interest}}. IG: @{{data.username}}
Company Instagram Lead

Tip: Zoho CRM requires Last Name for Leads. If your flow only captures a full name, map it to Last Name.

Step 4: Handle Duplicates

  1. Before creating, add Zoho CRM → Search Records.
  2. Search Leads where Email equals {{data.response_variables.email}}.
  3. Use a Router:
    • Branch 1 (found): Zoho CRM → Update a Record.
    • Branch 2 (not found): Zoho CRM → Create a Record.

Step 5: Test and Activate

  1. Run once in Make.com.
  2. Trigger a test event from InstantDM.
  3. Verify the Lead appears in Zoho CRM.
  4. Activate the scenario.

Method 2: Via Zapier

Step 1: Create the Zap

Follow the Zapier integration guide to set up a webhook trigger.

Step 2: Add Zoho CRM Action

  1. Add a Filter: event exactly matches flow_completed.
  2. Add Zoho CRM → Create Module Entry.
  3. Connect your Zoho account.
  4. Select module: Leads.
  5. Map fields as shown in Method 1.

Step 3: Test and Activate

  1. Test with sample data.
  2. Verify in Zoho CRM.
  3. Turn the Zap on.

Method 3: Via Zoho Flow (Native)

Zoho Flow is Zoho's built-in automation platform - no third-party tool needed.

Step 1: Create a Zoho Flow

  1. Go to flow.zoho.com and click Create Flow.
  2. Select Webhook as the trigger.
  3. Zoho Flow generates a webhook URL.
  4. Copy this URL.

Step 2: Configure in InstantDM

  1. Go to Settings → API in InstantDM.
  2. Paste the Zoho Flow webhook URL.
  3. Select events and save.

Step 3: Add Zoho CRM Action

  1. In Zoho Flow, add Zoho CRM → Create Record.
  2. Select module: Leads.
  3. Map the webhook payload fields to Zoho CRM fields.
  4. Activate the flow.

Advantage: Zoho Flow is included with Zoho One and most Zoho CRM plans, so there's no additional cost.


Method 4: Direct API Integration

For developers who want a direct connection.

Step 1: Create a Zoho API Client

  1. Go to api-console.zoho.com.
  2. Click Add Client → Server-based Applications.
  3. Set the redirect URI to your server's callback URL.
  4. Note the Client ID and Client Secret.
  5. Generate a refresh token using the OAuth flow.

Step 2: Build a Webhook Receiver

const express = require('express');
const app = express();
app.use(express.json());

const ZOHO_API_DOMAIN = 'https://www.zohoapis.com';
let accessToken = process.env.ZOHO_ACCESS_TOKEN;

async function refreshToken() {
  const response = await fetch('https://accounts.zoho.com/oauth/v2/token', {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: new URLSearchParams({
      refresh_token: process.env.ZOHO_REFRESH_TOKEN,
      client_id: process.env.ZOHO_CLIENT_ID,
      client_secret: process.env.ZOHO_CLIENT_SECRET,
      grant_type: 'refresh_token',
    }),
  });
  const data = await response.json();
  accessToken = data.access_token;
  return accessToken;
}

app.post('/instantdm-webhook', async (req, res) => {
  const { event, data } = req.body;
  
  if (event !== 'flow_completed') {
    return res.status(200).json({ status: 'skipped' });
  }
  
  const lead = {
    data: [{
      Last_Name: data.response_variables.full_name || data.username,
      Email: data.response_variables.email,
      Phone: data.response_variables.phone,
      Lead_Source: 'Instagram DM',
      Company: 'Instagram Lead',
      Description: `Completed "${data.flow_name}" flow. Interest: ${data.response_variables.interest || 'N/A'}. Instagram: @${data.username}`,
    }],
  };
  
  try {
    let response = await fetch(`${ZOHO_API_DOMAIN}/crm/v5/Leads`, {
      method: 'POST',
      headers: {
        'Authorization': `Zoho-oauthtoken ${accessToken}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(lead),
    });
    
    // Refresh token if expired
    if (response.status === 401) {
      await refreshToken();
      response = await fetch(`${ZOHO_API_DOMAIN}/crm/v5/Leads`, {
        method: 'POST',
        headers: {
          'Authorization': `Zoho-oauthtoken ${accessToken}`,
          'Content-Type': 'application/json',
        },
        body: JSON.stringify(lead),
      });
    }
    
    const result = await response.json();
    res.status(200).json({ status: 'created', result });
  } catch (error) {
    res.status(500).json({ status: 'error', message: error.message });
  }
});

app.listen(3000);

Custom Fields in Zoho CRM

Creating Custom Fields

  1. Go to Setup → Customization → Modules and Fields → Leads.
  2. Drag a new field type onto the layout.
  3. Name it (e.g., "Instagram Username") - Zoho auto-generates the API name.

Mapping Custom Fields

Custom Field API Name InstantDM Source
Instagram Username Instagram_Username data.username
Instagram User ID Instagram_User_ID data.instagram_user_id
Flow Name Flow_Name data.flow_name
Interest Interest data.response_variables.interest

In Zoho's API, custom field names use underscores instead of spaces. Check the field's API name in Setup → Fields.


Triggering Zoho CRM Automations

Workflow Rules

  1. Go to Setup → Automation → Workflow Rules.
  2. Create a rule for the Leads module.
  3. Trigger: On a record action → Create.
  4. Condition: Lead Source equals "Instagram DM".
  5. Actions: Send email, create task, update field, or call a webhook.

Blueprint (Sales Process)

  1. Go to Setup → Automation → Blueprint.
  2. Create a blueprint for the Leads module.
  3. Define states: New → Contacted → Qualified → Converted.
  4. Instagram leads enter at the "New" state automatically.

Assignment Rules

  1. Go to Setup → Automation → Assignment Rules.
  2. Create a rule for Leads.
  3. Condition: Lead Source equals "Instagram DM".
  4. Assign to a specific user or round-robin among a team.

Troubleshooting

Issue Solution
Lead not appearing in Zoho Check the automation platform execution log. Verify the Zoho connection is authorized.
"Mandatory field not found" error Zoho Leads require Last Name. Ensure it's mapped.
Duplicate leads Add a search step before creating. Use Zoho's built-in duplicate check or search by email.
Zoho API returning 401 Access token expired. Re-authenticate in Make.com/Zapier, or refresh the token in your custom code.
Custom fields not visible Check the field's API name in Zoho Setup. Ensure the field is on the layout and has proper permissions.
"Instagram DM" not in Lead Source Add it as a picklist value: Setup → Customization → Modules → Leads → Lead Source field.

Frequently Asked Questions

Can I use Zoho Flow instead of Make.com or Zapier?

Yes. Zoho Flow is included with most Zoho plans and works as a native webhook receiver. It's a good choice if you're already in the Zoho ecosystem and want to avoid additional platform costs.

Does this work with Zoho CRM Free Edition?

Zoho CRM Free Edition has limited API access and automation features. The Make.com/Zapier methods work, but Workflow Rules and Blueprints require a paid plan (Standard or higher).

Can I create Deals instead of Leads?

Yes. Change the module from "Leads" to "Deals" in your automation platform. Deals require additional fields like Deal Name and Stage. Map the flow name or interest as the Deal Name.

How do I sync data back from Zoho to InstantDM?

Use Zoho CRM's Workflow Rules to trigger a webhook when a Lead status changes. Point the webhook at a Make.com/Zapier scenario that calls the InstantDM API to send a follow-up DM.


What's Next

Ready to Automate Your Instagram DMs?

Join 30,000+ creators and brands using InstantDM today.

Start Your Free Trial

No credit card required. Setup in under 15 minutes.