Guides · Intercom
Get a Mac notification for new Intercom conversations and replies
Intercom posts a notification the moment a customer starts a conversation, replies, opens a ticket or signs up as a lead. Point your app's webhooks at EventBar and each one pops up in your menu bar, with today's count of new conversations a glance away, even when the Intercom inbox is closed.
Needs: the free EventBar app on your Mac, an EventBar account, and an Intercom workspace and an app in the Intercom Developer Hub (a private app for your own workspace is free to create), where Intercom's webhooks live. About five minutes. Intercom preset, signature verified.
Steps
- Create the webhook URL. In the EventBar dashboard, open the Webhooks tab, pick the group this belongs to (one group per site or app is the usual shape), choose the provider Intercom, name it, and press Create. Copy the URL; it stays visible and can be rotated any time.
- Paste it into Intercom. In the Intercom Developer Hub: open your app (or create one), then Configure, then Webhooks. Paste the URL into Endpoint URL, pick topics such as
conversation.user.created,conversation.user.replied,ticket.createdandcontact.lead.created, and save. Each topic names the permission it needs; turn that on under Configure, then Authentication, if Intercom asks. Then open the app's Basic Info page, copy the Client secret and paste it into the hook card in EventBar. Send a test request on the Webhooks page is the quickest first delivery. - Trigger one. Most services offer a test delivery; otherwise do the real thing once. It shows up in the dashboard's Events tab within a second and in the menu bar, as an undefined type named after the event. That first one is your proof the wiring works.
- Make it read well. Press Define on the new type and give it a title and a body template. Fields come from the payload, nested ones with dots. The table below is a starting point.
This preset is on Plus and Pro. Free can do the same with a Generic JSON hook and a type field of topic, without the signature check.
What you'll see
| Type | Title | Body template |
|---|---|---|
conversation.user.created | New conversation | {data.item.source.author.name} ({data.item.source.author.email}) · {data.item.source.subject} |
conversation.user.replied | Customer replied | {data.item.source.author.name} · {data.item.title} |
conversation.admin.replied | Teammate replied | {data.item.conversation_parts.conversation_parts.0.author.name} replied |
ticket.created | New ticket | {data.item.ticket_type.name} #{data.item.ticket_id}: {data.item.ticket_attributes._default_title_} |
contact.lead.created | New lead | {data.item.name} · {data.item.email} |
Every type has its own switch in the menu bar, so a noisy one can be quiet on this Mac and still counted. Counts cover the last hour, 24 hours, 7 days, 30 days and all time.
Worth knowing
- The type is the notification's
topic, so every topic you subscribe to gets its own switch and count. Intercom also sends apingwhen you press Send a test request, and now and then on its own; mutepingfrom the menu bar once the wiring works. - The signature is
X-Hub-Signature: sha1=…, a hex HMAC-SHA1 of the body with the app's client secret, the same secret for every topic. Duplicates are dropped by the notificationid(notif_…), so Intercom's resends after a slow answer never count twice. - Message bodies such as
source.bodyare HTML, and a conversation's subject is often empty for chat messages, so the templates above lean on the author's name and email.{data.item.id}is the conversation id if you want it in the text. - Intercom checks the URL with a
HEADrequest when you save, which EventBar answers.
The full contract, including how each preset reads a payload and what the answers mean, is in the API docs. Something about Intercom's payload changed? Tell us and we'll fix the guide.