Skip to main content

Intercom integration

Manage Intercom contacts, conversations, companies, and tickets and react to inbox events on behalf of your clients without leaving TaskJuice.

What it does

The Intercom integration lets your agency run customer messaging and support operations on behalf of your clients without leaving TaskJuice. Connect a client's Intercom workspace once and you can work across contacts, companies, conversations, tickets, tags, notes, segments, data attributes, and teammates — creating and updating records, searching them, and driving the Inbox itself by assigning, closing, snoozing, and tagging conversations. Nineteen webhook triggers cover the contact, company, conversation, and ticket lifecycles, so inbox activity can start or steer any workflow.

Connect an Intercom account

  1. Open your workspace in TaskJuice and navigate to Connections.
  2. Choose Intercom and click Connect.
  3. Sign in to the Intercom workspace that should authorize the connection and approve the permissions configured on the TaskJuice OAuth app in the Intercom Developer Hub.
  4. TaskJuice returns you to the workspace with the connection ready to use in any workflow.

Intercom does not take a scope parameter on the authorization URL. Permissions are configured on the OAuth app itself in the Developer Hub, and the access token inherits whatever that app was granted — so an action that returns 403 usually means the app is missing a permission, not that the connection is broken.

Intercom access tokens are long-lived and do not expire on a fixed schedule. To revoke access, open Intercom, navigate to Settings, App settings, Authorized apps, and remove TaskJuice. See the Intercom OAuth setup guide for the full grant flow and permission configuration.

Set up webhook triggers

Intercom has no API for creating webhook subscriptions. Its documentation is explicit: subscriptions are created by hand in the Developer Hub, and they belong to your Intercom app rather than to a single workspace. So TaskJuice routes deliveries it receives, but cannot subscribe on your behalf.

To make a trigger fire:

  1. Add the Intercom trigger to a workflow and publish it. TaskJuice shows you the workspace's ingress URL.
  2. In the Intercom Developer Hub, open your app and go to Webhooks.
  3. Paste the ingress URL as the endpoint. Intercom validates it with a HEAD request before saving.
  4. Tick the topics matching the triggers you use — the topic for each trigger is listed below.
  5. Copy the app's Client Secret from its Basic Info page into the trigger's signing secret field.

Intercom signs every delivery with an HMAC-SHA1 hex digest of the raw request body on the X-Hub-Signature header, formatted as sha1=<hex>. TaskJuice verifies that signature against the client secret before activating the workflow, and rejects anything that fails.

Note that webhook topics are gated on the app's permissions. Subscribing to contact.user.created requires "Read and write users", for example — a topic you have no permission for simply never delivers.

Triggers

Contacts and leads:

  • intercom/contact-created — a new user contact is created (contact.user.created).
  • intercom/contact-user-updated — a user contact is updated (contact.user.updated).
  • intercom/contact-user-tagged — a tag is applied to a user contact (contact.user.tag.created).
  • intercom/contact-lead-created — a new lead is created (contact.lead.created).
  • intercom/contact-lead-updated — a lead is updated (contact.lead.updated).
  • intercom/contact-lead-added-email — a lead supplies an email address (contact.lead.added_email).
  • intercom/contact-lead-signed-up — a lead converts to a user (contact.lead.signed_up).
  • intercom/contact-lead-tagged — a tag is applied to a lead (contact.lead.tag.created).
  • intercom/contact-unsubscribed — a contact unsubscribes from email (contact.unsubscribed).

Companies:

  • intercom/company-created — a company is created (company.created).
  • intercom/company-updated — a company is updated (company.updated).

Conversations:

  • intercom/conversation-created — a contact starts a conversation (conversation.user.created).
  • intercom/conversation-user-replied — a contact replies to a conversation (conversation.user.replied).
  • intercom/conversation-admin-closed — a teammate closes a conversation (conversation.admin.closed).
  • intercom/conversation-rating-added — a contact rates a conversation (conversation.rating.added).
  • intercom/conversation-part-tagged — a tag is applied to a conversation part (conversation_part.tag.created).

Tickets:

  • intercom/ticket-created — a ticket is created (ticket.created).
  • intercom/ticket-state-updated — a ticket changes state (ticket.state.updated).
  • intercom/ticket-attribute-updated — a ticket attribute changes (ticket.attribute.updated).

Every activation carries Intercom's notification_event envelope. The record itself is at data.item, and the workspace id is at app_id.

Intercom splits its contact topics by role, so there is no bare contact.created or contact.tag.created topic — pick the .user. or .lead. variant for the audience you mean, or use both triggers.

Actions

Contacts

  • intercom/create-contact — create a contact as a user or a lead.
  • intercom/get-contact — fetch one contact by Intercom ID.
  • intercom/update-contact — update a contact; send only the fields you want changed.
  • intercom/list-contacts — list contacts with cursor pagination.
  • intercom/search-contacts — search contacts with a field/operator query.
  • intercom/delete-contact — permanently delete a contact.
  • intercom/merge-contact — merge a lead into an existing user.
  • intercom/list-contact-companies — list the companies a contact belongs to.
  • intercom/list-contact-notes — list the notes left on a contact.
  • intercom/list-contact-segments — list the segments a contact belongs to.
  • intercom/list-contact-tags — list the tags applied to a contact.
  • intercom/list-contact-events — list one contact's data events (90-day retention).
  • intercom/add-note-to-contact — add a note to a contact.
  • intercom/get-note — fetch one note by ID.
  • intercom/tag-contact / intercom/untag-contact — apply or remove a tag.
  • intercom/attach-contact-to-company / intercom/detach-contact-from-company — manage company membership.

Companies

  • intercom/create-company — upsert a company keyed on your own company_id.
  • intercom/update-company — update a company addressed by its Intercom ID.
  • intercom/get-company — fetch one company by Intercom ID.
  • intercom/find-companies — find companies by name, company_id, tag, or segment.
  • intercom/list-companies — list companies, one page per call.
  • intercom/scroll-companies — walk the full company list with Intercom's scroll cursor.
  • intercom/list-company-contacts — list the contacts at a company.
  • intercom/list-company-segments — list the segments a company belongs to.
  • intercom/tag-companies — tag or untag companies in bulk.

Conversations

  • intercom/create-conversation — start a conversation from a contact.
  • intercom/get-conversation — fetch one conversation with its part history.
  • intercom/list-conversations — list conversations with cursor pagination.
  • intercom/search-conversations — search conversations with a field/operator query.
  • intercom/reply-conversation — reply as a teammate or as the contact.
  • intercom/update-conversation — set custom attributes or mark the conversation read.
  • intercom/close-conversation / intercom/open-conversation / intercom/snooze-conversation — drive Inbox state.
  • intercom/assign-conversation-to-teammate / intercom/assign-conversation-to-team — route a conversation.
  • intercom/attach-contact-to-conversation / intercom/detach-contact-from-conversation — manage participants.
  • intercom/tag-conversation / intercom/untag-conversation — apply or remove a tag.

Tickets

  • intercom/create-ticket — open a ticket against one or more contacts.
  • intercom/get-ticket — fetch one ticket by ID.
  • intercom/update-ticket — change ticket state, assignment, or attributes.
  • intercom/search-tickets — search tickets with a field/operator query.

Messaging and content

  • intercom/send-message — send an admin-initiated in-app or email message.
  • intercom/create-data-event — record a data event against a contact.
  • intercom/create-article — publish a help-centre article.

Workspace configuration

  • intercom/list-tags / intercom/create-tag / intercom/delete-tag — manage workspace tags.
  • intercom/list-segments / intercom/get-segment — read saved segments.
  • intercom/list-data-attributes / intercom/create-data-attribute / intercom/update-data-attribute — manage custom contact and company fields.
  • intercom/list-admins / intercom/get-admin — read teammates.
  • intercom/set-admin-away — set a teammate's away state and reassignment behaviour.
  • intercom/list-activity-logs — read workspace admin activity for an audit window.
  • intercom/get-me — identify the teammate and workspace behind the connection.

Known limitations

  • Intercom enforces a per-app rate limit (1,000 requests per minute on most plans). When the budget is exhausted Intercom returns 429, which TaskJuice surfaces as a retryable error so downstream resilience policies can back off.
  • Every action sends the Intercom-Version: 2.11 header. If your workspace depends on behaviour that changed in a later version, contact support so the bundle can be republished against your target version.
  • The bundle targets the US API host (api.intercom.io). Workspaces hosted in the EU (api.eu.intercom.io) or Australia (api.au.intercom.io) are not supported yet.
  • Webhook subscriptions are created by hand in the Intercom Developer Hub — see the setup section above. TaskJuice cannot create them, because Intercom exposes no API for it.
  • Because subscriptions belong to your Intercom app rather than to a workspace, use the workspace-scoped ingress URL TaskJuice gives you. The shared app-level route cannot tell your client workspaces apart and will refuse the delivery.
  • Pagination uses cursor-style starting_after tokens. Each list action returns one page per call along with the cursor for the next page, so workflows that need every page should drive paging explicitly.
  • intercom/scroll-companies uses Intercom's scroll cursor, which allows one active scroll per workspace and expires after one minute. Run it in a tight loop, not spread across a long workflow.
  • intercom/list-contact-events accepts exactly one of User ID, Intercom User ID, or Email. Supplying more than one is rejected by Intercom.
  • Personal access tokens are not supported. Use the OAuth flow, which issues a workspace-scoped access token tied to the authorizing teammate.
Was this helpful?