{"id":2235,"date":"2026-05-11T10:00:00","date_gmt":"2026-05-11T10:00:00","guid":{"rendered":"https:\/\/aaxonix.com\/resources\/?p=2235"},"modified":"2026-04-11T18:45:20","modified_gmt":"2026-04-11T18:45:20","slug":"zoho-crm-intercom-integration","status":"publish","type":"post","link":"https:\/\/aaxonix.com\/resources\/zoho-crm-intercom-integration\/","title":{"rendered":"Zoho CRM and Intercom Integration: Sync Conversations, Leads, and Support Context"},"content":{"rendered":"<style>\n.aax-post{font-family:'Poppins',sans-serif;color:#1a2332;max-width:820px;margin:0 auto;line-height:1.75}\n.aax-post h2{font-size:1.55rem;font-weight:600;margin:2.5rem 0 .9rem;color:#0a1628}\n.aax-post h3{font-size:1.15rem;font-weight:600;margin:1.8rem 0 .6rem;color:#1a2332}\n.aax-post p{margin:0 0 1.1rem}\n.aax-post ul,.aax-post ol{margin:0 0 1.1rem;padding-left:1.5rem}\n.aax-post li{margin-bottom:.45rem}\n.aax-post table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.93rem}\n.aax-post th{background:#0a1628;color:#fff;padding:.6rem 1rem;text-align:left}\n.aax-post td{padding:.55rem 1rem;border-bottom:1px solid #e8edf4}\n.aax-post tr:nth-child(even) td{background:#f5f7fb}\n.aax-post .faq-section{background:#f5f7fb;border-radius:10px;padding:1.8rem 2rem;margin:2.5rem 0}\n.aax-post .faq-item{margin-bottom:1.2rem;border-bottom:1px solid #e0e6ef;padding-bottom:1.2rem}\n.aax-post .faq-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}\n.aax-post .faq-question{font-weight:600;color:#0a1628;margin-bottom:.5rem}\n.aax-post .faq-answer{color:#3a4a5c;line-height:1.65}\n.aax-post .aax-cta{background:linear-gradient(135deg,#0a1628 0%,#1a3a5c 100%);border-radius:12px;padding:1.8rem 2rem;margin:2.5rem 0;text-align:center}\n.aax-post .aax-cta p{color:#e8edf4;margin:0 0 1.2rem;font-size:1.05rem}\n.aax-post .aax-cta a{display:inline-block;background:#fff;color:#0a1628;font-weight:600;padding:.65rem 1.6rem;border-radius:6px;text-decoration:none;font-size:.95rem}\n<\/style>\n<div class=\"sp-toc-wrap\"><nav class=\"sp-blog-toc\" id=\"spBlogToc\" style=\"display:none\">\n  <h4><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\" style=\"vertical-align:-2px;margin-right:6px\"><path d=\"M2 2h12v2H2zm0 4h8v2H2zm0 4h10v2H2z\"\/><\/svg>On this page<\/h4>\n  <ol class=\"sp-toc-list\" id=\"spTocList\"><\/ol>\n<\/nav><\/div>\n<div class=\"aax-post\">\n\n<p>When your sales team works in Zoho CRM and your support team runs conversations through Intercom, customer context gets fragmented fast. A lead chats with support about pricing, but the sales rep never sees that conversation. A deal closes in the CRM, but the support agent handling the onboarding ticket has no visibility into the contract value or product tier. Zoho CRM and Intercom integration solves this by creating a live data bridge between both platforms, syncing conversations, leads, and deal context in both directions. This guide walks through a practical Make (formerly Integromat) scenario that connects Zoho CRM and Intercom, covering conversation logging, lead creation, deal data push, and error handling from start to finish.<\/p>\n\n<h2>Why Zoho CRM and Intercom Need a Direct Integration<\/h2>\n\n<p>Zoho CRM handles pipeline management, deal tracking, and contact records. Intercom handles real-time messaging, support tickets, and product tours. Without a connection between them, your teams operate on incomplete data.<\/p>\n\n<p>Here is what breaks without an integration:<\/p>\n\n<ul>\n<li>Sales reps miss pre-sale conversations that happened in Intercom before a lead entered the pipeline<\/li>\n<li>Support agents lack deal stage or contract value context when handling tickets from paying customers<\/li>\n<li>Marketing cannot segment contacts based on combined CRM and messaging behaviour<\/li>\n<li>Managers cannot report on the full customer journey from first chat to closed deal<\/li>\n<\/ul>\n\n<p>A Make scenario running between the two platforms eliminates these gaps. Every Intercom conversation gets logged as a CRM note. New Intercom contacts automatically create Zoho CRM leads. And when a deal progresses in the CRM, the relevant data pushes back to Intercom as custom attributes so support agents see it in real time.<\/p>\n\n<p>The result is a single source of truth that spans both platforms. Your <a href=\"https:\/\/aaxonix.com\/resources\/zoho-crm-contact-management-india\/\" class=\"sp-content-link\">CRM contact records<\/a> carry the full conversation history, and your Intercom workspace reflects live deal status without anyone copying data manually.<\/p>\n\n<h2>Setting Up the Make Scenario for Zoho CRM and Intercom<\/h2>\n\n<p>Make is the preferred automation platform for this integration because it supports both Intercom webhooks and the Zoho CRM API as native modules. You get visual scenario building, error handling routes, and scheduling controls without writing code.<\/p>\n\n<h3>Step 1: Create Connections<\/h3>\n\n<p>In your Make dashboard, create two connections:<\/p>\n\n<ol>\n<li>Intercom connection: authenticate with your Intercom workspace using OAuth. Make requests read\/write access to conversations, contacts, and tags.<\/li>\n<li>Zoho CRM connection: authenticate with your Zoho CRM account. Make connects via the Zoho API v2 and requests access to modules like Leads, Contacts, Deals, and Notes.<\/li>\n<\/ol>\n\n<p>Both connections persist across scenarios, so you set them up once and reuse them in every workflow.<\/p>\n\n<h3>Step 2: Choose Your Trigger<\/h3>\n\n<p>For the primary sync scenario, use the Intercom &#8220;Watch Events&#8221; trigger module. This module listens for webhook notifications from Intercom and fires the scenario whenever a matching event occurs. The key events to watch are:<\/p>\n\n<ul>\n<li><strong>conversation.user.created<\/strong>, fires when a visitor or lead starts a new conversation<\/li>\n<li><strong>conversation.admin.closed<\/strong>, fires when an agent closes a conversation<\/li>\n<li><strong>contact.created<\/strong>, fires when a new contact is added to Intercom<\/li>\n<\/ul>\n\n<p>Configure the webhook URL that Make generates and register it in your Intercom Developer Hub under the Webhooks section. You can select multiple event topics on a single webhook endpoint.<\/p>\n\n<h3>Step 3: Build the Scenario Flow<\/h3>\n\n<p>After the trigger, add a Router module to branch the scenario into three parallel paths based on the event type. Each path handles a different sync operation: conversation logging, lead creation, or deal data push. This keeps the scenario modular and easy to debug.<\/p>\n\n<h2>Syncing Intercom Conversations to Zoho CRM Notes<\/h2>\n\n<p>The first route in your Make scenario handles conversation sync. When Intercom fires a <code>conversation.admin.closed<\/code> event, the scenario captures the full conversation thread and writes it as a note on the matching Zoho CRM record.<\/p>\n\n<h3>Mapping Conversation Data<\/h3>\n\n<p>The Intercom webhook payload includes the conversation ID, the contact&#8217;s email, the conversation body (HTML), tags, and the assigned agent. Use a Make &#8220;Get a Conversation&#8221; action module to pull the complete conversation parts if the webhook payload only contains a summary.<\/p>\n\n<p>Then add a Zoho CRM &#8220;Search Records&#8221; module to find the matching Lead or Contact by email address. If a match exists, use the &#8220;Create a Note&#8221; module with these mappings:<\/p>\n\n<table>\n<tr><th>Zoho CRM Note Field<\/th><th>Intercom Source<\/th><\/tr>\n<tr><td>Note Title<\/td><td>&#8220;Intercom Conv #&#8221; + conversation.id<\/td><\/tr>\n<tr><td>Note Content<\/td><td>conversation.body + agent name + tags<\/td><\/tr>\n<tr><td>Parent Module<\/td><td>Leads or Contacts (from search result)<\/td><\/tr>\n<tr><td>Parent ID<\/td><td>Record ID from search result<\/td><\/tr>\n<\/table>\n\n<p>This approach ensures every closed conversation appears as a timestamped note inside the CRM. Sales reps reviewing a contact&#8217;s record see the full support history without switching to Intercom. If your team uses <a href=\"https:\/\/aaxonix.com\/resources\/zoho-crm-automation-guide\/\" class=\"sp-content-link\">Zoho CRM automation workflows<\/a>, you can trigger follow-up tasks when specific conversation tags appear in these notes.<\/p>\n\n<h2>Creating Zoho CRM Leads from Intercom Contacts<\/h2>\n\n<p>The second route handles lead creation. When Intercom fires a <code>contact.created<\/code> event, the scenario checks whether the contact already exists in Zoho CRM and creates a new lead if no match is found.<\/p>\n\n<h3>Deduplication Logic<\/h3>\n\n<p>Before creating a lead, add a Zoho CRM &#8220;Search Records&#8221; module that queries both the Leads and Contacts modules by email. If either search returns a result, the scenario skips lead creation and optionally updates the existing record with any new data from Intercom (like company name or phone number).<\/p>\n\n<p>If no match exists, the &#8220;Create a Record&#8221; module fires with these field mappings:<\/p>\n\n<table>\n<tr><th>Zoho CRM Lead Field<\/th><th>Intercom Contact Field<\/th><\/tr>\n<tr><td>First Name<\/td><td>contact.name (parsed)<\/td><\/tr>\n<tr><td>Last Name<\/td><td>contact.name (parsed)<\/td><\/tr>\n<tr><td>Email<\/td><td>contact.email<\/td><\/tr>\n<tr><td>Company<\/td><td>contact.companies[0].name<\/td><\/tr>\n<tr><td>Phone<\/td><td>contact.phone<\/td><\/tr>\n<tr><td>Lead Source<\/td><td>&#8220;Intercom&#8221;<\/td><\/tr>\n<tr><td>Description<\/td><td>contact.custom_attributes.utm_source<\/td><\/tr>\n<\/table>\n\n<p>Setting the Lead Source to &#8220;Intercom&#8221; lets you filter and report on leads that originated from your messaging platform versus other channels. This is critical for measuring the ROI of your Intercom investment and aligning it with your broader <a href=\"https:\/\/aaxonix.com\/resources\/zoho-crm-integrations-india\/\" class=\"sp-content-link\">Zoho CRM integrations strategy<\/a>.<\/p>\n\n<h3>Handling Name Parsing<\/h3>\n\n<p>Intercom stores the full name as a single field. Use a Make text function to split it: <code>{{split(contact.name, \" \")[1]}}<\/code> for the first name and <code>{{split(contact.name, \" \")[2]}}<\/code> for the last name. Add a fallback that sets the last name to &#8220;Unknown&#8221; if the contact only provided a first name, since Zoho CRM requires the Last Name field.<\/p>\n\n<h2>Pushing CRM Deal Data to Intercom Custom Attributes<\/h2>\n\n<p>The third route works in the opposite direction. When a deal progresses in Zoho CRM, the relevant data pushes to Intercom so support agents see deal context directly in the conversation sidebar.<\/p>\n\n<h3>Setting Up the Zoho CRM Trigger<\/h3>\n\n<p>Create a separate Make scenario with a Zoho CRM &#8220;Watch Records&#8221; trigger on the Deals module. Configure it to fire on record updates, filtered to changes in the Stage, Amount, or Closing Date fields. This prevents the scenario from firing on every minor edit.<\/p>\n\n<h3>Writing to Intercom Custom Attributes<\/h3>\n\n<p>Intercom supports custom attributes on contact objects. Before running this scenario, create these custom attributes in your Intercom workspace under Settings > Data > People Data:<\/p>\n\n<ul>\n<li><strong>crm_deal_stage<\/strong> (text), stores the current pipeline stage<\/li>\n<li><strong>crm_deal_value<\/strong> (number), stores the deal amount<\/li>\n<li><strong>crm_expected_close<\/strong> (date), stores the expected closing date<\/li>\n<li><strong>crm_deal_owner<\/strong> (text), stores the assigned sales rep name<\/li>\n<\/ul>\n\n<p>In the Make scenario, after the Zoho CRM trigger fires, add an Intercom &#8220;Update a Contact&#8221; module. Search for the Intercom contact by email (pulled from the Zoho deal&#8217;s contact association), then map the deal fields to the custom attributes.<\/p>\n\n<p>Support agents now see live deal data in the Intercom sidebar when chatting with a customer. If a customer on a $50,000 deal contacts support, the agent immediately knows the deal value and stage without asking the sales team. This context-aware support reduces resolution time and prevents awkward interactions where an agent does not know the customer&#8217;s commercial relationship with your company.<\/p>\n\n<h2>Bidirectional Sync and Conflict Resolution<\/h2>\n\n<p>Running data in both directions creates the risk of sync loops. If updating a Zoho CRM record triggers a scenario that updates Intercom, which then triggers another scenario that updates Zoho CRM, you get infinite loops that burn through your Make operations quota.<\/p>\n\n<h3>Preventing Sync Loops<\/h3>\n\n<p>Use these strategies to prevent loops:<\/p>\n\n<ol>\n<li><strong>Timestamp comparison:<\/strong> Store a &#8220;last_synced_at&#8221; custom field on both platforms. Before updating a record, compare the incoming data&#8217;s timestamp against the last sync timestamp. Skip the update if the incoming data is older.<\/li>\n<li><strong>Source tagging:<\/strong> Add a &#8220;sync_source&#8221; field. When Make updates a Zoho CRM record, set sync_source to &#8220;intercom&#8221;. Configure your Zoho CRM trigger to exclude records where the most recent change came from &#8220;intercom&#8221;. Apply the same logic on the Intercom side.<\/li>\n<li><strong>Make scenario scheduling:<\/strong> Instead of running on instant webhooks, schedule the Zoho-to-Intercom scenario to run every 15 minutes. Batch processing reduces the chance of rapid back-and-forth updates.<\/li>\n<\/ol>\n\n<p>For teams managing complex automation chains, understanding how <a href=\"https:\/\/aaxonix.com\/resources\/zoho-crm-api-webhooks-india\/\" class=\"sp-content-link\">Zoho CRM API and webhooks<\/a> work at the protocol level helps you design sync logic that scales without hitting rate limits.<\/p>\n\n<h2>Error Handling and Monitoring<\/h2>\n\n<p>Production integrations need error handling that goes beyond &#8220;retry on failure.&#8221; Make provides built-in error handling routes that you should configure on every module in your scenario.<\/p>\n\n<h3>Common Failure Points<\/h3>\n\n<table>\n<tr><th>Error Type<\/th><th>Cause<\/th><th>Resolution<\/th><\/tr>\n<tr><td>401 Unauthorized<\/td><td>Expired Zoho CRM or Intercom OAuth token<\/td><td>Make auto-refreshes tokens, but check connection health weekly<\/td><\/tr>\n<tr><td>404 Not Found<\/td><td>Contact deleted between trigger and action<\/td><td>Add a filter after search to skip if no results<\/td><\/tr>\n<tr><td>429 Rate Limited<\/td><td>Too many API calls in a short window<\/td><td>Add a &#8220;Sleep&#8221; module (2-3 seconds) between batch operations<\/td><\/tr>\n<tr><td>Duplicate Record<\/td><td>Race condition in lead creation<\/td><td>Use upsert logic: search first, create only if not found<\/td><\/tr>\n<tr><td>Field Validation<\/td><td>Zoho CRM mandatory field missing<\/td><td>Add default values in the mapping for required fields<\/td><\/tr>\n<\/table>\n\n<h3>Setting Up Error Routes<\/h3>\n\n<p>On each critical module, right-click and add an error handler route. Configure it to:<\/p>\n\n<ol>\n<li>Log the error details (module name, input data, error message) to a Google Sheet or a dedicated Zoho CRM custom module for audit purposes<\/li>\n<li>Send a Slack notification or email alert to your integration admin<\/li>\n<li>Use the &#8220;Break&#8221; error directive for transient errors (rate limits, timeouts) so Make retries automatically<\/li>\n<li>Use the &#8220;Ignore&#8221; directive for known non-critical errors (like trying to update a deleted contact)<\/li>\n<\/ol>\n\n<p>Monitoring is equally important. Make&#8217;s scenario execution history shows every run with input\/output data for each module. Set up a weekly review cadence to check for patterns, especially around failed lookups that might indicate data quality issues in either platform.<\/p>\n\n<h2>Testing Your Integration Before Going Live<\/h2>\n\n<p>Never deploy an integration directly to production. Follow this testing sequence to validate each sync path.<\/p>\n\n<h3>Test Sequence<\/h3>\n\n<ol>\n<li><strong>Conversation sync test:<\/strong> Create a test conversation in Intercom, close it, and verify the note appears on the correct Zoho CRM record within 60 seconds<\/li>\n<li><strong>Lead creation test:<\/strong> Add a new contact in Intercom with a unique email not in your CRM. Confirm the lead appears in Zoho CRM with all fields mapped correctly and Lead Source set to &#8220;Intercom&#8221;<\/li>\n<li><strong>Deduplication test:<\/strong> Add another Intercom contact with an email that already exists in Zoho CRM. Confirm the scenario updates the existing record instead of creating a duplicate<\/li>\n<li><strong>Deal push test:<\/strong> Update a deal stage in Zoho CRM and verify the custom attributes update on the matching Intercom contact within the scheduled interval<\/li>\n<li><strong>Error handling test:<\/strong> Temporarily revoke the Intercom API token and trigger the scenario. Confirm the error route fires, logs the failure, and sends the notification<\/li>\n<\/ol>\n\n<p>Use Make&#8217;s &#8220;Run once&#8221; button during testing to execute the scenario manually. Check the execution log for each module&#8217;s output and verify data accuracy at every step. Only switch to scheduled or instant execution after all five tests pass consistently.<\/p>\n\n<p>If your team also uses <a href=\"https:\/\/aaxonix.com\/resources\/zoho-flow-automation-india\/\" class=\"sp-content-link\">Zoho Flow for automation<\/a>, consider running simpler one-directional syncs there and reserving Make for the complex bidirectional workflows that need router logic and advanced error handling.<\/p>\n\n<p>For a full overview of all available options, explore our <a href=\"https:\/\/aaxonix.com\/resources\/zoho-integrations-complete-guide\/\" class=\"sp-content-link\">complete guide to Zoho integrations<\/a>.<\/p>\n<div class=\"faq-section\">\n<h2>Frequently Asked Questions<\/h2>\n\n<div class=\"faq-item\">\n<p class=\"faq-question\">Can I sync Intercom conversations to Zoho CRM in real time?<\/p>\n<p class=\"faq-answer\">Yes. Using Make&#8217;s instant webhook trigger with the Intercom conversation.admin.closed event, closed conversations sync to Zoho CRM as notes within seconds. For open or ongoing conversations, you can set up a scheduled scenario that polls Intercom at regular intervals.<\/p>\n<\/div>\n\n<div class=\"faq-item\">\n<p class=\"faq-question\">Does this integration work with Zoho CRM Free Edition?<\/p>\n<p class=\"faq-answer\">The Zoho CRM API, which Make uses to read and write records, is available on the Standard plan and above. The Free Edition does not include API access, so you need at least the Standard tier for this integration to function.<\/p>\n<\/div>\n\n<div class=\"faq-item\">\n<p class=\"faq-question\">How many Make operations does the Zoho CRM and Intercom sync use per month?<\/p>\n<p class=\"faq-answer\">Each scenario run consumes one operation per module executed. A typical conversation sync run uses 3-4 operations (trigger, search, create note). For a team processing 500 conversations per month, expect roughly 1,500-2,000 operations for conversation sync alone. Make&#8217;s free plan includes 1,000 operations, so most teams need a paid plan.<\/p>\n<\/div>\n\n<div class=\"faq-item\">\n<p class=\"faq-question\">What happens if a contact exists in Intercom but not in Zoho CRM?<\/p>\n<p class=\"faq-answer\">The lead creation route in the Make scenario handles this automatically. When a new Intercom contact is detected, the scenario searches Zoho CRM by email. If no match is found, it creates a new lead with the contact&#8217;s details and sets the Lead Source to &#8220;Intercom&#8221; for tracking purposes.<\/p>\n<\/div>\n\n<div class=\"faq-item\">\n<p class=\"faq-question\">Can I push Zoho CRM data to Intercom without Make?<\/p>\n<p class=\"faq-answer\">You can use Zoho CRM&#8217;s native webhook feature to send data on record updates, but you still need a receiving endpoint to process the payload and call the Intercom API. Make simplifies this by handling both sides. Alternatives include Zapier, n8n, or a custom middleware built on your own server.<\/p>\n<\/div>\n<\/div>\n\n<div class=\"aax-cta\">\n<p>Aaxonix builds production-grade Zoho CRM integrations with Intercom, Slack, and other platforms your team depends on, with proper error handling, deduplication, and bidirectional sync. Book a free consultation to get a scoped integration plan and a walkthrough of your current data flow.<\/p>\n<a href=\"https:\/\/aaxonix.com\/contact\/\">Book a free consultation<\/a>\n<\/div>\n\n<p>A working Zoho CRM and Intercom integration removes the friction between sales and support by keeping both teams informed with the same customer data. Start with the conversation sync scenario, validate it with the testing sequence above, then expand to lead creation and deal data push as your team gets comfortable with the automation. The full Make scenario typically takes 2-3 hours to build and test, and the payoff is immediate: no more context switching, no more duplicate data entry, and a complete view of every customer interaction in both platforms.<\/p>\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>On this page When your sales team works in Zoho CRM and your support team runs conversations through Intercom, customer context gets&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2231,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[586],"tags":[488,72,587,493,521,302,10],"class_list":["post-2235","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-zoho-crm-sales","tag-crm-integration","tag-customer-support","tag-intercom","tag-lead-sync","tag-make-automation","tag-sales-automation","tag-zoho-crm"],"_links":{"self":[{"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/posts\/2235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/comments?post=2235"}],"version-history":[{"count":2,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/posts\/2235\/revisions"}],"predecessor-version":[{"id":2668,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/posts\/2235\/revisions\/2668"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/media\/2231"}],"wp:attachment":[{"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/media?parent=2235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/categories?post=2235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/tags?post=2235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}