Delivering Webhook Notifications

A Webhook notification is the object delivered when an event is triggered, and notifications have data payloads that contain references to the Intercom objects associated with the event.

Every webhook payload is slightly different, but they do share a number of common fields which will help you identify the type of notification you have received, when the event took place and more. You can find a more detailed description here

There may be instances when we pause, suspend or delay delivery of notifications, so let's take a look at how we handle these scenarios.

Paused subscription notifications

If your endpoint URL responds with more than 1000 consecutive HTTP error codes in a 15-minute window, we pause your Webhook topic notifications for 15 minutes after which we start sending as normal again.

Suspended subscriptions

If your endpoint URL responds with HTTP error codes for more than seven days, we suspend your Webhook subscription, and you will stop receiving any further notifications.

If we suspend your subscription, we display an error banner on the Webhooks page under the Configure menu of the relevant App in your Developer Hub.

Webhooks suspended banner

After resolving any issues with your server, you can resume suspended subscriptions by pressing Set live from the top right of the page.

We only suspend Webhook subscriptions for Private apps. Webhook subscriptions used in Public apps are never suspended.

Rate limiting

We will prioritise the first 150,000 events per minute of your Webhook topic notifications and then rate limit all further notifications with a lower priority.

Slow topic notifications

We prioritise Webhook topic notifications for endpoint URLs that successfully respond within 500ms. If response times exceed 500ms, we deliver topic notifications with a lower priority.

Throttling

If we receive an HTTP 429 (Too Many Requests) response from your endpoint URL, we throttle further notifications with a delay that starts at 1 minute and extends to 2 hours. We drop any throttled notifications if we do not receive a successful response within 2 hours.

Delivery order

When you receive a notification, you should check the timestamp in the created_at field to confirm when the action took place. This will allow you to determine the right action to take in your App, as we do not offer any guarantee on the order of Webhook topic notifications.

Duplicate notifications

Because we want to be sure your app has received a notification, we will resend it if we do not receive a HTTP 200 (OK) response from your endpoint URL within 5000ms. This means you may receive duplicate notifications if your response takes longer than 5000ms to reach our servers.

To avoid this, we recommend responding with HTTP 200 (OK) immediately upon receipt and before you trigger any long-running tasks.

Queued notifications

If Intercom's System Status interrupts notification delivery, we will store them and resume sending once we restore the service. We will always prioritise the most recent notifications and process older delayed notifications with a lower priority.

Handling high volumes

Events in Intercom with the potential for generating a high volume of webhook topic notifications are related to the content_stat and contact objects.

For example, the volume of content_stat notifications is typically five times the size of the audience receiving the outbound message content if this is being sent via multiple channels, like chat, email, and mobile push.

To handle this, you will want to configure your endpoint URL server to handle spikes in velocity and volume to minimize paused and suspended webhook subscriptions or rate-limited and throttled webhook topic notifications.

Ensuring delivery behind a firewall

If the endpoint you configure is behind a firewall, you must add the IP addresses Intercom sends Webhook Notifications from to your allow list. If you do not, you will not receive any notifications.

The IP addresses Intercom sends Webhook Notifications from are:

USA 34.231.68.152 34.197.76.213 35.171.78.91 35.169.138.21 52.70.27.159 52.44.63.161

Europe 54.217.125.63 54.246.173.113 54.216.9.3

Australia 52.63.36.185 3.104.68.152 52.64.2.165