If a user who should have received a message hasn’t, there could be a few reasons why. This troubleshooting guide will help you get to the heart of the problem. 

First, understand how each message gets delivered

  • We send manual messages immediately (unless you’ve scheduled one). This means that we’ll look for all the users who match your filters, and we’ll send it as soon as we find them.
  • For auto-messages, we check once per hour to see who has become eligible to receive your messages. A ping from an active user will also trigger messages to be sent.
  • For smart campaigns, we check once every 2 hours to see who should enter, exit and receive messages. If a user logs in, that will also trigger messages to be sent. For more information about smart campaigns delivery, read our doc: Why aren’t some users receiving messages in my campaign?
  • For in-app messages, we only deliver when a user is online to receive them. We will only match and send in-app messages when users “ping”, i.e: when they are online and your app is sending us updates about them. The 'Last seen' value tells you when the user was last available on your site to receive a message.
  • Messages which have a push notification attached to them will send immediately. 

Next, answer these questions 

If you still haven't figured out why your message isn't sending, you'll need to answer the following questions: 

Are you sending the message to a large audience?

Messages with a large audience might take some time for us to process. When you set a message live, we check all the message filters and see which of your users match them. The larger the message, the longer this processing can take to complete. 

You can look at expected delivery times for small (less than 1000 users), medium (1000 to 100,000 users) and large messages (100,000+ users) on our status page.

Do users match the filters you’ve set?

In Intercom, all messaging is trigger based. In other words, recipients have to match the filters you’ve set on a message before they become eligible to receive it. Examples of filters would be “Signed up less than 30 days ago” and “Plan is free.’

When you add filters to a message, these become the criteria that Intercom uses to check a users’ eligibility for the message. For example, if you have a message set up with the filters above, it would look like this:

Currently no users match these filters, so no-one will receive the message. However, as it’s an auto message, Intercom will check every hour to see who matches these filters and it will send the message to any users who do.

If users match this message’s filters, they will show on the right hand-side of the window. Here’s how the message looks when people match the filters:

Has that user unsubscribed? 

If a user has unsubscribed from email messages from your app, they won’t receive any more bulk emails from you. They can still receive in-app messages and email messages sent only to them, however they won’t receive any manual and automatic email messages. 

Has the message bounced?

If Intercom tries to send a message to a recipient and there is a permanent failure, also known as a hard bounce, we won’t attempt email deliveries to that recipient again. This is because it’s dangerous to continually attempt delivery to hard bounced addresses and it can harm your sending reputation and ability to get messages to the email inbox.

Has that user marked the message as spam? 

Equally, if a recipient marks one of your emails as spam, you won’t be able to send them any more emails from your Intercom app. 

Users who are unsubscribed, bounced or who have marked your messages as spam will automatically be removed from the audience of bulk messages. If you try to send a message to someone who has previously bounced or complained, Intercom won’t attempt delivery.

If you try to send a message and all the recipients are ineligible to receive it, you might see a message which says: “we’re preparing this email and it’ll start sending shortly."

Have you scheduled your message to send inside a delivery window? 

If you’ve scheduled your messages to send at a certain time or inside a delivery window, that might delay delivery. For example, you might want to set a message live at 9am in another timezone while you’re fast asleep - you can schedule a message to do this.

You can also set up delivery windows, which might affect delivery times for messages. If you have a message with a delivery window of 9am to 5pm, it will deliver when it falls within that time window in the recipient’s time zone. If we don’t know the recipient’s time zone, we will fall back to the timezone of the app.

Note: Messages with delivery windows send according to the recipient’s timezone, not the sender’s timezone, unless there is no location data available for the recipient, in which case we fallback to using the app’s timezone.

Did this answer your question?