crm-inbox-trigger

n8n community node: CRM inbox webhook trigger with tenant check and message formatting

Documentation

n8n-nodes-crm-inbox-trigger

Community node for n8n: a single Trigger node (CRM Inbox Trigger) that receives CRM
inbox webhooks (WhatsApp/Instagram/etc via a CRM relay), authenticates them, checks
whether the bot is enabled for the tenant, and formats the inbound message
(text passthrough, audio transcription via OpenAI Whisper, or image analysis via an
OpenAI vision model).

Scope

This node only does message intake and formatting. It does not queue messages,
debounce bursts, or write to any database — that's left to the rest of your workflow.

Setup

  1. npm install && npm run build
  2. Install the package into your n8n instance (community node, or copy dist/ +
    package.json into ~/.n8n/nodes/node_modules/n8n-nodes-crm-inbox-trigger/).
  3. Restart n8n.
  4. Create credentials:
    • CRM Bearer Token API — the token your CRM sends as Authorization: Bearer <token>.
    • OpenAi account (n8n's built-in OpenAI credential) — used for transcription and
      image analysis.
  5. Add a CRM Inbox Trigger node, set:
    • Bot Status URL — your tenant/bot-enabled check endpoint (GET, expects
      { "botEnabled": boolean }).
    • Tenant ID — sent as the Tenant-Id header on that check.
    • Authentication — how to authenticate the bot-status call, if at all.
    • Model — vision model for image analysis (default gpt-4o-mini).

Output

One item per valid inbound message:

{
  "origin": "Inbox",
  "user_name": "Joseph Baptista",
  "user_id": "157235c6-7db1-4758-8d96-77dcd47c682e",
  "message": "hola",
  "raw_data": { "headers": {}, "params": {}, "query": {}, "body": {} }
}

No item is emitted (only a 200 ack) when the tenant's bot is disabled or when
conversationId is missing from the payload.

Discussion