> This page is part of the [Customer.io documentation](https://docs-customerio.netlify.app). For the complete index, see [llms.txt](https://docs-customerio.netlify.app/llms.txt).
> Last updated: July 20, 2026

# Message frequency limits

A message frequency limit is the maximum number of messages someone can receive in a specific time frame. You can set message limits for one or more message channels so your customers get the right amount of communications from you. Message frequency limits help you stay in compliance, control the cost of messaging, and maintain good rapport with your audience.

## How it works

In Customer.io, you create message limits in your workspace settings that apply to [one or more message channels](#limits-dont-apply). Then you decide which workflows count towards your limits. By default, no workflow counts towards a limit.

**You can set message limits for any workflow to ensure you don’t overmessage your audience**. Within an automation or API-triggered broadcast, you can set an overarching limit on the workflow and also change the limit for individual messages.

You might set a limit for SMS marketing automations to stay in compliance of state laws, but not set one for transactional messages that send order confirmations or broadcasts that inform profiles of updates to your terms and conditions.

When your workflow tries to send to a recipient that’s reached your message limit, your workflow records the message as *Undeliverable*, unless you enabled a [retry window](#understand-automatic-retries).

### Which message channels can you limit?

Channel

Sent through

Can limits apply?

Email

Customer.io

Yes

[Custom SMTP](/messaging/channels/email/deliverability/custom-smtp/use-your-smtp-server/)

Yes

Push notifications

Yes

Webhooks ([Send and receive data](/messaging/send/workflows/webhooks/action/) action)

Yes

SMS

[Twilio](/messaging/channels/sms/get-started/#do-i-need-to-set-up-a-twilio-account)

Yes

[Customer.io](/messaging/channels/sms/get-started/#do-i-need-to-set-up-a-twilio-account)

No

WhatsApp

[Twilio](/messaging/channels/whatsapp/get-started/#set-up-twilio)

Yes

[Meta/Facebook Business](/messaging/channels/whatsapp/get-started/#set-up-meta)

No

In-app

No

[Inbox messages](/messaging/channels/in-app/inbox/get-started/)

No

LINE

No

Slack

No

You can apply your workspace’s message limits to email, push notifications, and webhooks.

You can also apply them to SMS or WhatsApp, but only when you integrate with Twilio. You can’t apply workspace message limits to SMS managed by Customer.io or WhatsApp managed by Meta/Facebook Business.

This message limit feature doesn’t apply to in-app or inbox messages, but there are other mechanisms you can use to limit those. To limit [in-app](/messaging/channels/in-app/send-in-app-message/#expiration) or [inbox](/messaging/channels/in-app/inbox/send-inbox/#message-expiration) messages, you can set expiration dates. With in-app messages, you can also set [page rules](/messaging/channels/in-app/send-in-app-message/#page-rule) to limit your messages.

## Calculating message limit time frames

Your workflow calculates the time frame of a message limit—minutes, hours, or days—by comparing message deliveryThe instance of a message sent to a person. When you set up a message, you determine an audience for your message. Each individual “send”—the version of a message sent to a single member of your audience—is a delivery. timestamps.

This is particularly important to remember for daily message limits. Your workflow applies message limits through a relative window—the time between messages—rather than real calendar days.

For example, say you have a couple running automations that count towards the same message limit called “Standard limit” of two emails per day, and [the retry window](#understand-automatic-retries) is off.

Workspace message limit:

[![message-limit-workspace.png](https://docs.customer.io/images/message-limit-workspace.png)](#7b9c5e2b7b8fb19eeddbdc878652f3d4-lightbox)

Automation message settings:

[![message-limit-campaign.png](https://docs.customer.io/images/message-limit-campaign.png)](#50b14263220d96f5697872d4a7940036-lightbox)

A profile receives two emails across these automations within a 24-hour period. When one of these automations attempts to send them a third email while those two still count towards the limit, it’s blocked. The email isn’t retried; the email is marked *Undeliverable* right away, and the profile continues forward in the workflow.

Note, this profile only stops receiving messages from the automations with the “Standard limit” set. They could still receive emails from other automations without message limits or with a different message limit. Check out the [examples below](#examples) for more info.

## Retry windows

You can automatically retry messages that hit the message limit by adding **retry windows**. They help ensure relevant messages make their way to your audience and help account for [timing edge cases when Customer.io processes messages](/messaging/send/message-limits/set-up-message-limits/#account-for-timing-edge-cases-with-automatic-retries).

If you set your workflow to auto-retry messages that hit the limit, your workflow first records the message as *Attempted* and then follows your retry window. During this time, a profile waits at that step in their journey. If after the retry window the message wasn’t delivered, then the message is recorded as *Undeliverable* and the profile moves on in the workflow.

**You assign retry windows to automations or API-triggered broadcasts**. You can’t assign automatic retries to one-time sends or transactional messages. A window can be up to 48 hours. The automation or API-triggered broadcast holds the profile in the workflow until the *Attempted* messages is delivered. After the retr

A retry window starts when your message hits the message limit—it’s attempted, but blocked. Your workspace retries the message when a slot opens up, which happens once the oldest message counted towards the limit ages out of the limit’s time frame. If a slot doesn’t open up before the retry window ends, the message is marked *Undeliverable*, and your workflow stops trying to send it.

For example, imagine your automation counts towards a message limit of 3 emails per day and the retry window is 36 hours. A profile reaches the message limit 2 hours after the first email that counted towards the limit. Then 2 hours after that, a message is blocked from sending. 24 hours after the oldest counted email was sent, a slot would open up and a retry of an attempted email could succeed. If the retry window passes (36 hours after the message was first attempted) and the attempted message still hasn’t sent, it’s marked *Undeliverable* and the system stops retrying.

[![retry-calculation.png](https://docs.customer.io/images/retry-calculation.png)](#b8d4f4a2e5991a926967901be7d9902a-lightbox)

## Examples

### A person enters 2 campaigns with different message limits for the same channel

You assign message limits to workflows and messages, but we calculate message limits per profile. In practice, this means that any workflow with a limit for a message channel, like email, will count towards the limit for that channel.

For example, imagine Sid is part of two campaigns. You assigned the limit 2 emails/week to Campaign A and the limit 5 emails/week to Campaign B.

1.  On Monday, both campaigns send 1 email. This means Sid received 2 emails total.
2.  On Tuesday, Campaign A tries to send another email. The message is blocked by the limit because Sid has already received 2 emails for the week. It doesn’t matter than one of the emails was sent from a campaign with a different limit.
3.  On Wednesday, Campaign B sends another email successfully to Sid because Sid hasn’t reached the email limit set on that campaign.

### When a message limit has an individual & shared limit for the same channel

You can combine individual channel and shared limits so a person doesn’t surpass a total number of messages.

For example, if you had a shared limit of 3 emails and SMS per week and an individual channel limit of 1 email per week, then profiles would receive up to 3 texts per week and *no more than 1 email*.

[![individual-and-shared-limit.png](https://docs.customer.io/images/individual-and-shared-limit.png)](#7f6140db427483bd7180a9555aa0e164-lightbox)

### When a message overrides the limit set on a campaign

If a message action differs from the campaign’s message limit, then journeys follow the settings on the message.

For example, let’s say you assign an SMS limit to a campaign. You set one of the SMS messages to not count towards any limit. When a person gets to this SMS message, they receive the SMS message no matter the number of texts they’ve received in your campaign or workspace. This message does not count towards any message limit.

*   *   [How it works](#how-it-works)
        *   [Which message channels can you limit?](#limits-dont-apply)
    *   [Calculating message limit time frames](#understand-message-limit-calculation)
    *   [Retry windows](#understand-automatic-retries)
    *   [Examples](#examples)
        *   [A person enters 2 campaigns with different message limits for the same channel](#a-person-enters-2-campaigns-with-different-message-limits-for-the-same-channel)
        *   [When a message limit has an individual & shared limit for the same channel](#when-a-message-limit-has-an-individual--shared-limit-for-the-same-channel)
        *   [When a message overrides the limit set on a campaign](#when-a-message-overrides-the-limit-set-on-a-campaign)

Copy page

Copy page [Download .md](/messaging/send/message-limits/overview.md)

Is this page helpful?

![](https://docs.customer.io/images/export-success.png) ![](https://docs.customer.io/images/export-failure.png)

# How can we make it better?

Close

Do you need help from Customer.io support?  No  
 Yes

What part of Customer.io do you need help with? 

How can we improve this page?

Email (optional):  Please provide a valid email address

 I am not a bot

 

We appreciate your feedback!

Our support team will contact you as soon as possible
