Scheduling Your Campaign

This reference article goes over the three different delivery methods Braze offers (Scheduled Delivery, Action-Based Delivery, and API-triggered Delivery) and how to set them up and use them.

Choosing how your campaign gets delivered is crucial in developing an effective campaign. Thankfully, with Braze you have fine-tuned control over when and how your campaigns get sent.

Every savvy marketer knows that timing is key, which is why Braze provides multiple scheduling options that will empower you to reach users at precisely the right time. Ample flexibility, however, may cause uncertainty over which type of schedule fits best with your campaign’s goals. To help you get the most of Braze’s platform, we’ve created this handy guide that reviews your scheduling options, best practices, and use cases.

Scheduled Delivery

Campaigns sent using time-based scheduled delivery are delivered on specified days.

Time based

Option 1: Send as soon as Campaign is launched

If you choose to send a message as soon as it’s launched, it will begin sending as soon as you finish creating your campaign.


This type of schedule is designed for one-off campaigns that you wish to send immediately, such as messages about a current event. A sports app, for instance, may schedule push notifications on score updates using this option. In addition, when sending test messages aimed at just yourself or your team, this option allows you to deliver them immediately. If you plan on editing the campaign and re-sending it after viewing the test, be sure to check the box that makes users re-eligible to receive the campaign. By default, Braze sends a campaign to a user just once, unless that box is checked.

Option 2: Sending at a Designated Time

Scheduling a campaign for a designated time allows you to specify the days and times your campaign will send. You can send a message once, daily, weekly or monthly at a certain time of day, as well as specify when your campaign should begin and end. If you choose Scheduled Delivery and don’t choose to send at user local time, your campaign will send according to the time zone specified on your “Company Settings” page.

Designated time

Local Time Zone Campaigns

You can deliver the message in users’ local time zones so that members of your international audience won’t receive a notification at 4 am. Local time zone campaigns need to be scheduled 24 hours in advance to ensure that eligible users from all time zones can receive it. Read our FAQ page on this feature to understand how local time zone campaigns work and the associated delivery rules.

Segments targeted with local time zone campaigns should include, at minimum, a 2-day window to incorporate users from all time zones. For instance, if your campaign is scheduled to send in the evening but has just a 1-day window, then some users may have fallen out of the segment when their time zone is reached. Examples of filters that create a 2-day window are “last used more than 1 day ago” and “last used less than 3 days ago,” or “first purchased more than 7 days ago” and “first purchased less than 9 days ago.”

Use Cases

Designated time schedules are best suited for messages scheduled in advance and recurring campaigns - such as onboarding and retention - that run regularly on all qualified users.

Option 3: Intelligent Timing

Intelligent Timing allows you to deliver a campaign to each user at a different time. Braze calculates each individual’s time based on when that user typically engages with your app and its notifications. You can optionally specify that intelligent timing campaigns send only during a certain portion of the day - for instance, if you are notifying users of a promotion that ends at midnight, you may want your messages to send by 10 pm at the latest. Read our page on Intelligent Timing for more details on how this feature works.

Intelligent Timing

Delivery Rules

Because a user’s optimal time can be anytime over the course of 24 hours, all Intelligent Timing campaigns must be scheduled 24 hours in advance. In addition, similar to designated time campaigns, messages with a 1-day window will miss users who fall out of the segment before their optimal time in their time zone is reached. Segments for intelligent timing campaigns should incorporate at minimum a 3-day window to account for this.

Use Cases

Intelligent Timing campaigns work best for one-off and recurring messages where there is some flexibility regarding delivery time - for instance, they aren’t well suited for breaking news or timed announcements.

Action-Based Delivery (Event Triggered Campaigns)

Instead of sending your campaign on certain days, you can trigger them to send after a user completes a certain event. Here are the steps for setting up an event-based schedule:

Setting Up a Triggered Campaign

Step 1: Select a trigger event, which can be:

  • Starting a session
  • Purchasing an item
  • Interacting with News Feed cards (see Braze’s Campaign Connector)
  • Interacting with other campaigns
  • Entering a location
  • Completing any custom event
  • Performing the campaign’s primary conversion event
  • Performing the exception event for another campaign
  • Adding an email address to a user profile

You can also further filter trigger events through Braze’s Custom Event Properties which allows for customizable event properties for both custom events and in-app purchases. This feature allows you to further tailor which users receive a message based on the specific attributes of the custom event, allowing for greater campaign personalization and more sophisticated data collection. For example, in the following screenshot, an Abandoned Cart custom event is further targeted by the “cart value” property filter. This campaign will only reach users who’ve left between $100 and $200 worth of goods in their carts.

Custom Event Properties Pic

Keep in mind that you can still send a triggered campaign to a specific segment of users, so users who aren’t a part of the segment won’t be able to receive the campaign even if they complete the trigger event. If you notice users not receiving the campaign even though they qualified for the segment, please read our section on reasons why a user might not have received a triggered campaign.

With respect to the trigger event for when a user adds an email address to their profile, the following rules apply:

  • The trigger event will be fired after the user profile attribute updates. This means that the evaluation of the campaign’s segments and filters will happen after the attribute updates. This is beneficial because it enables you to do things like set up a filter of “email address matches” to create a trigger campaign that only sends to Gmail users and fires as soon as they add their email address.
  • The trigger event will fire when an email address is added to a user profile. If you have multiple user profiles that you create that have the same email address, the campaign may fire multiple times, once for each user profile.

In addition, triggered in-app messages still abide by in-app message delivery rules and will appear at the beginning of an app session.

triggered 1

Step 2: Select how long to wait before sending the campaign, after the trigger criteria are met. Choose how long to delay your message after the user completes the trigger event.

Additionally, users who complete the trigger event after your campaign is launched will be the first to start receiving the message once the delay has passed. Users who have completed the trigger event prior to the campaign launching will not qualify to receive the campaign.

triggered 2

You may also elect to send the campaign on either a specific day of the week (by choosing “on the next” and then selecting a day) or a specific number of days (by selecting “in”) in the future. Choose the time you wish the user to receive your message on that day. Alternatively, you may choose to send your message using the Intelligent Timing feature instead of manually selecting a delivery time.

triggered 7 triggered 8

Step 3: Select an exception event that will disqualify users from receiving this campaign. You can only do this if your triggered message sends after a time delay. Exception events can be making a purchase, starting a session, performing one of a campaign’s designated conversion events, or performing a custom event. If a user completes the trigger event but then completes your exception event before the message sends due to the time delay, she will not receive the campaign. Users who do not receive the campaign due to the exception event will automatically be eligible to receive it in the future, the next time they complete the trigger event, even if you do not elect for users to become re-eligible.

You can read more about how to employ exception events in our section on use cases.

triggered 3

If you are sending out a campaign with the trigger event equalling the same exception event, the initial campaign will be canceled. Instead of sending out both campaigns, your user’s first campaign will be canceled and we will automatically re-schedule a new campaign based on the exception event’s message delivery time.

For example, if your first trigger event starts at 5 minutes and the exception event’s time starts at 10 minutes, you would rely on the exception event’s 10 minutes as the official campaign’s message delivery time).

Step 4: Assign the campaign’s duration by specifying a start time and optional end time. If a user completes a trigger event during the specified time frame, but actually qualifies for the message outside of the time frame due to a scheduled delay, then she will not receive the campaign. Therefore, if you set a time delay that is longer than the message’s time frame, no users will receive your campaign. In addition, you can elect to send the message in users’ local time zones.

triggered 4

Step 5: Select whether the user will receive the campaign during a specific portion of the day. If you give the message a time frame and the user either completes the trigger event outside the time frame or the message delay causes them to miss the time frame, then by default the user will not receive your message.

triggered 5

In the case where a user completes the trigger event within the time frame, but the message delay causes the user to fall out of the time frame, you can check the box below so that these users will still receive the campaign:

triggered next available

If a user doesn’t receive the message because she misses the time frame, then she will still be qualified to get it the next time she completes the trigger event, even if you did not elect for users to become re-eligible. If you do elect for users to become re-eligible, then users can receive the campaign each time they complete the trigger event, assuming they qualify during the specified time frame.

If you have also assigned the campaign a certain duration, then in order to receive the message, a user must qualify within both the duration and the specific portion of the day.

Step 6: Determine whether users can become re-eligible for the campaign. If you allow users to become re-eligible, you may specify a time delay before the user can receive the campaign again. This will prevent your triggered campaigns from becoming spammy.

triggered 6

Use Cases

Triggered campaigns are very effective for transactional or achievement-based messages.

Transactional campaigns include messages sent after the user completes a purchase or adds an item to their cart. The latter case is a great example of a campaign that would benefit from an exception event. Say your campaign reminds users of items in their cart that they haven’t purchased. The exception event, in this case, would be the user buying the products in their cart. For achievement-based campaigns, you can send a message 5 minutes after the user completes a conversion or beats a game level.

In addition, when creating welcome campaigns, you can trigger messages to send after the user registers or sets up an account. Staggering messages to be sent on different days following registration will allow you to create a thorough onboarding process.

Why Did a User Not Receive My Triggered Campaign?

Any of these things will prevent a user who has completed the trigger event from receiving the campaign:

  • The user completed the exception event before the time delay had fully elapsed.
  • The time delay caused the user to become qualified to receive the campaign after the duration has ended.
  • The time delay caused the user to become qualified to receive the campaign outside of the specified portion of the day.
  • The user has already received the campaign, and users do not become re-eligible.
  • While users are re-eligible to receive the campaign, they can only re-trigger it after a certain period of time, and that period of time has not yet elapsed.

Segmenting a triggered campaign on user data recorded at the time of the event may cause a race condition. This happens when a change in the user attribute on which the campaign is segmented hasn’t yet been processed for the user at the time that segment membership is determined and the campaign is sent and can lead to the user not receiving the campaign.

For example, imagine you want to send an event-triggered campaign to male users who just registered. When the user registers, you record a custom event registration, and simultaneously set the user’s gender attribute. The event may trigger the campaign before Braze has processed the user’s gender, preventing them from receiving the campaign.

It is a best practice to make sure that the attribute on which the campaign is segmented is flushed to Braze’s servers before the event. In cases where this is not possible, the best way to guarantee delivery is to use Custom Event Properties to attach the relevant user properties to the event and apply a property filter for the specific event property instead of a segmentation filter. In the example above, you would add a gender property to the custom event registration so that Braze is guaranteed to have the data you need at the time your campaign is triggered.

API Triggered Campaigns (Server Triggered Campaigns)

API Triggered Campaigns are ideal for more advanced transactional use-cases. Braze API Triggered Campaigns allow marketers to manage campaign copy, multivariate testing and re-eligibility rules within the Braze dashboard while triggering the delivery of that content from their own servers and systems. The API request to trigger the message can also include additional data to be templated into the message in real-time.

Setting up an API Triggered Campaign

Setting up an API Triggered Campaign is easy. First, create a new multi-channel or single-channel campaign (with multivariate testing).

API Triggered Creation Step

Next, simply configure your copy and notifications the same way as you would were it a normally scheduled notification and select “API Triggered Delivery”. For more information on the triggering of these campaigns from your server please see the documentation section on API Triggered Campaigns.

API Triggered Delivery Step

Using the Templated Content Included With an API request

In addition to triggering the message, you can also include content with the API request to be templated into the message within the trigger_properties object. This content can be referenced in the body of the message by saying something like {{ api_trigger_properties.${ some_value_included_with_request }}}. See the following social notification example use-case for additional context:

Social Example Delivery Window

For information regarding triggering messages with API Triggered Delivery, please see this section of our technical documentation.

Re-eligibility with API Triggered Campaigns

The number of times a user receives an API triggered campaign can be limited using re-eligibility settings, meaning the user will receive the campaign only once, or once in a given window, regardless of how many times the API trigger is fired.

For example, if you are using an API triggered campaign to send the user a campaign about an item they recently viewed, you can limit the campaign to send a maximum of one message a day regardless of how many items they viewed while firing the API trigger for each item. On the other hand, if your API triggered campaign is transactional, you will want to make sure that the user receives the campaign every time they do the transaction by setting the delay to 0 minutes:

Re-eligibility settings

Re-eligibility with Campaigns and Canvas

Whenever you schedule a recurring or triggered campaign or Canvas, you have the option of allowing users to become re-eligible for it. By default, Braze sends a message to a user only once, even if they re-qualify. By checking “Allow users to become re-eligible to receive campaign or re-enter this Canvas”, you are overriding this default behavior and allowing qualified members to receive messages again once they’ve received the first instance of the campaign or Canvas. You can state the timeline on which users would ultimately become re-eligible.

Re-eligibility for Canvas variants is tied to Canvas entry rather than message receipt. Users who enter a Canvas and do not receive any messages will not be able to re-enter the Canvas unless re-eligibility is enabled. For example, let’s say that a user without an email address enters a daily recurring Canvas that contains one step. The Canvas step only contains an email message, so the user does not get the engagement. This user will not be able to enter the Canvas again unless the Canvas has re-eligibility enabled. If you have an active recurring or triggered Canvas without re-eligibility, and you’d like users to re-enter the Canvas until they receive a message from it, you can consider allowing users to be re-eligible for entry by adding a filter to the entry criteria that excludes customers who’ve received a message from the Canvas.

In the case of triggered campaigns with re-eligibility turned on, users who did not actually receive the campaign (despite completing the trigger event) will automatically qualify for the message the next time they complete the trigger event, even if you did not make users re-eligible. By making users re-eligible for a triggered campaign, you are enabling them to actually receive (and not simply trigger) the message more than once.

Additionally, if you are trying to send a message immediately with a re-eligibility of 0 minutes, we will always attempt to schedule it right away regardless of how a user has received previous iterations of the Campaign or Canvas.


With regards to multivariate testing, Braze determines variant re-eligibility for all campaigns, triggered in-app messages, and Canvases using the following rules:

  • When variant percentages are not changed, each user will always enter the same variant of a campaign, triggered in-app message, or Canvas entry every time they are re-eligible.
  • If the variant percentages change, users may be redistributed to other variants.
  • Control groups will remain consistent if the variant percentage is unchanged, and no users who previously received messages will ever enter the control group on a later send, nor will any user in the control group ever receive a message.
New Stuff!