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
- After the webhook trigger, add a Filter:
eventequalsflow_completed. - Click "+" and search for Zoho CRM.
- Select Create a Record.
- Connect your Zoho CRM account (Make.com handles OAuth).
- Set the module to Leads.
Step 3: Map Fields
| Zoho CRM Field | Make.com Mapping |
|---|---|
| Last Name | {{data.response_variables.full_name}} |
{{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
- Before creating, add Zoho CRM → Search Records.
- Search Leads where Email equals
{{data.response_variables.email}}. - 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
- Run once in Make.com.
- Trigger a test event from InstantDM.
- Verify the Lead appears in Zoho CRM.
- 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
- Add a Filter:
eventexactly matchesflow_completed. - Add Zoho CRM → Create Module Entry.
- Connect your Zoho account.
- Select module: Leads.
- Map fields as shown in Method 1.
Step 3: Test and Activate
- Test with sample data.
- Verify in Zoho CRM.
- 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
- Go to flow.zoho.com and click Create Flow.
- Select Webhook as the trigger.
- Zoho Flow generates a webhook URL.
- Copy this URL.
Step 2: Configure in InstantDM
- Go to Settings → API in InstantDM.
- Paste the Zoho Flow webhook URL.
- Select events and save.
Step 3: Add Zoho CRM Action
- In Zoho Flow, add Zoho CRM → Create Record.
- Select module: Leads.
- Map the webhook payload fields to Zoho CRM fields.
- 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
- Go to api-console.zoho.com.
- Click Add Client → Server-based Applications.
- Set the redirect URI to your server's callback URL.
- Note the Client ID and Client Secret.
- 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
- Go to Setup → Customization → Modules and Fields → Leads.
- Drag a new field type onto the layout.
- 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
- Go to Setup → Automation → Workflow Rules.
- Create a rule for the Leads module.
- Trigger: On a record action → Create.
- Condition: Lead Source equals "Instagram DM".
- Actions: Send email, create task, update field, or call a webhook.
Blueprint (Sales Process)
- Go to Setup → Automation → Blueprint.
- Create a blueprint for the Leads module.
- Define states: New → Contacted → Qualified → Converted.
- Instagram leads enter at the "New" state automatically.
Assignment Rules
- Go to Setup → Automation → Assignment Rules.
- Create a rule for Leads.
- Condition: Lead Source equals "Instagram DM".
- 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
- Connect to Pipedrive CRM for a simpler CRM alternative.
- Set up Airtable for flexible lead tracking.
- Read the Salesforce guide if you need enterprise CRM features.
- Build a Custom AI Agent to qualify leads before they reach your CRM.
- Explore the full API docs at instantdm.com/instagram-api-docs.