Skip to content

How to Connect Intercom to Odoo: Customer Messaging Integration

DeployMonkey Team · March 23, 2026 9 min read

Why Connect Intercom to Odoo?

Intercom handles customer messaging — live chat, chatbots, product tours, and email campaigns. Odoo handles your business operations — CRM, invoicing, inventory, and project management. Without integration, your support team works in Intercom while your sales team works in Odoo, creating data silos and missed opportunities.

Connecting Intercom to Odoo ensures that every chat conversation can become a CRM lead, every customer interaction is logged against their Odoo contact, and your sales team sees the full picture without switching tools.

Integration Approaches

MethodDifficultyBest For
Zapier / MakeEasySimple sync, low volume
Intercom Webhooks + Custom CodeMediumReal-time, full control
n8n Self-HostedMediumNo per-task costs
Custom Odoo ModuleHardDeep integration, high volume

What to Sync

Intercom to Odoo

  • New conversations become CRM leads or helpdesk tickets
  • Contact data (name, email, company) syncs to Odoo partners
  • Conversation tags map to Odoo lead tags
  • Custom attributes flow to Odoo partner fields
  • Conversation ratings feed into customer satisfaction tracking

Odoo to Intercom

  • Customer subscription status updates Intercom user attributes
  • Invoice and payment status visible in Intercom user profile
  • Product/plan information for support context
  • Account owner assignment for routing conversations

Step 1: Get Intercom API Credentials

  1. Go to Intercom → Settings → Integrations → Developer Hub
  2. Create a new app or use your existing workspace
  3. Generate an Access Token with the scopes you need
  4. Required scopes: read conversations, read users, write users

Step 2: Set Up Webhooks

In Intercom Developer Hub, configure webhooks to fire on these events:

  • conversation.created — new chat started
  • conversation.closed — conversation resolved
  • conversation.rating.added — customer rated support
  • contact.created — new contact identified
# Webhook payload example (conversation.created)
{
  "type": "notification_event",
  "topic": "conversation.created",
  "data": {
    "item": {
      "type": "conversation",
      "id": "123456",
      "source": {
        "body": "I need help with my subscription",
        "author": {
          "email": "[email protected]",
          "name": "Jane Smith"
        }
      }
    }
  }
}

Step 3: Create Odoo Webhook Handler

# In your Odoo custom module controller
from odoo import http
import json, hmac, hashlib

class IntercomWebhook(http.Controller):
    @http.route('/intercom/webhook', type='json', auth='none', csrf=False)
    def handle_webhook(self, **kwargs):
        data = json.loads(http.request.httprequest.data)
        topic = data.get('topic')
        
        if topic == 'conversation.created':
            self._create_lead(data['data']['item'])
        elif topic == 'contact.created':
            self._sync_contact(data['data']['item'])
        
        return {'status': 'ok'}
    
    def _create_lead(self, conversation):
        source = conversation.get('source', {})
        author = source.get('author', {})
        
        http.request.env['crm.lead'].sudo().create({
            'name': f"Intercom: {source.get('body', '')[:80]}",
            'email_from': author.get('email'),
            'contact_name': author.get('name'),
            'description': source.get('body'),
            'source_id': self._get_intercom_source().id,
        })

Step 4: Sync Contacts Bidirectionally

Set up a scheduled action in Odoo that runs every hour to push updated customer data back to Intercom. This keeps Intercom agents informed about subscription status, recent orders, and account details without leaving the chat window.

import requests

def sync_partner_to_intercom(partner, intercom_token):
    requests.post('https://api.intercom.io/contacts', 
        headers={'Authorization': f'Bearer {intercom_token}'},
        json={
            'email': partner.email,
            'name': partner.name,
            'custom_attributes': {
                'odoo_customer_id': partner.id,
                'subscription_plan': partner.plan_id.name or '',
                'total_invoiced': partner.total_invoiced,
            }
        })

Common Use Cases

  • Sales qualification: Chat visitor asks about pricing, Intercom bot qualifies, creates Odoo lead with score
  • Support context: Agent sees customer's open invoices, recent orders, and subscription tier in Intercom sidebar
  • Churn prevention: Customer with overdue invoice starts a chat, agent is alerted to offer payment plan
  • Onboarding tracking: New customer's onboarding progress in Odoo updates Intercom for targeted product tours

DeployMonkey + Intercom

DeployMonkey instances provide stable webhook endpoints for Intercom integration. Our AI agent can help configure the CRM lead source, map custom fields, and test the webhook flow end to end.