Scheduling Your Campaign

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 pertaining to 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 4am. 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 Delivery

Intelligent Delivery allows your 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 delivery 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 10pm at the latest. Read our page on Intelligent Delivery for more details on how this feature works.

Intelligent Delivery

Delivery Rules

Because a user’s optimal time can be anytime over the course of 24 hours, all Intelligent Delivery 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 delivery campaigns should incorporate at minimum a 3-day window to account for this.

Use Cases

Intelligent Delivery 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 Newsfeed 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 off of 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

Note that the trigger event “start session” can be the user’s very first app open, if your campaign’s segment applies to new users (for instance, if your segment consists of those with no sessions).

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 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 is met. Choose how long to delay your message after the user completes the trigger event.

In choosing your delay length, note that if you set a delay that is longer than the message’s duration for sending (see Step 4), no users will receive your campaign. 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 Delivery 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 cancelled. Instead of sending out both campaigns, your user’s first campaign will be cancelled 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). Please also note that you cannot make a “session start” both the trigger event and exception event for a campaign (however, you always have the choice to select any other custom event outside of this option).

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 her 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 her 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 her 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 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 multichannel or single channel campaign (with multiviariate testing). Note that an API Triggered Campaign is different from an API Campaign.

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 seconds, 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.

Editing Campaigns After Launch

After launching your campaign, it’s important to note what you can and cannot change and when the changes will come into effect.


Any content that is edited after your campaign is launched will be sent to your users correctly.

Scheduling and Recipients

If you edit when your campaign is scheduled to send, or which users your campaign should be sent to, those changes won’t be reflected in the actual campaign until after the current 24 hour period you are in ends.

Send Rate

Changing the rate at which your messages will send will go into effect at the beginning of the next time zone that is set to be delivered to.

Intelligent Delivery

When scheduling a campaign, you have the option of using Braze’s Intelligent Delivery feature, which means your message will be delivered to each user at the time Braze determines that individual is most likely to engage. We calculate the optimal send time based on a statistical analysis of the user’s past interactions with your app.

To use this feature, simply select “Intelligent Delivery” when scheduling a campaign. The only difference between this option and “Send at a designated time” is that the time of day each user receives your message will be determined by Braze. You can still choose the day(s) on which your message will send and create a recurring campaign.

You also have the option of specifying a certain time range during which your message should send. This is useful if your campaign pertains to a specific event, sale or promotion.

Optimal Send Time

If you’re using Intelligent Delivery, Braze recommends that your campaign’s segment filters allow for at least a 3-day window. For instance, instead of using the filters “first used more than 1 day ago” and “first used less than 3 days ago,” we recommend using the filters “first used more than 1 day ago” and “first used less than 4 days ago.” This is because time windows of less than 3 days may result in some users falling out of the segment before their optimal send time is reached.

It is also important to be aware of the limitations of using Intelligent Delivery within the first week of a user’s lifecycle. A new user will have limited data for Intelligent Delivery to use in determining the optimal time to send a message. It can, however, still be valuable. Consider a user that has recorded only one session. The time in which that user recorded their session could very well be the best time to attempt to engage them. Intelligent Delivery would only use data from the user’s first session, and as such would engage the user at that time. In general, Intelligent Delivery can more effectively calculate the optimal send time later in a user’s lifecycle.

Archiving Campaigns

If you’d like to stop a campaign from sending or clear it from your Dashboard, you can archive it. Go to the Campaigns page, click the gear icon next to the campaign’s name and click “Archive”:


Archiving a campaign will accomplish the following:

  • No further messages from that campaign will be delivered. In the case of in-app messages, no further in-app messages from that campaign will be displayed to users.
  • The campaign’s indicators will be removed from:
    • The Detailed Statistics graph on the App Usage page
    • The Detailed Statistics graph on the Revenue page
    • The Custom Events Over Time graph

There are also bulk actions you can use, such as deactivating and archiving multiple campaigns by checking the boxes next to the campaigns and clicking the buttons:

Archive selected

To view archived messages from the Campaigns page, click the “Archived” button:

Include archived

While clicking on an archived campaign will allow you to view its past results, you won’t be able to edit the campaign. You will need to unarchive campaign in order to edit it. In order to unarchive a campaign, you must select the campaign within the Archived folder and click “Unarchive Selected”:

Unarchive Campaign

Unarchiving a campaign does not make it live. This action will simply move your campaign to the “Active” campaign folder where you can make edits and review how the campaign is set up. At this point, your campaign will be stopped and won’t send any messages. If you wish to resume the campaign and begin sending messages, click the gear icon next to the campaign and select “Resume”:

Resume Campaign

Understanding Campaign Status

On your Braze Dashboard, your campaigns are grouped by their status. Below are the different statuses your campaigns could have and descriptions on what they mean:

  • Draft
    • Campaigns that are saved and never launched. Clicking on them allows you to continue editing and begin sending.
  • Active
    • Campaigns that are in the process of sending and fall under one of the following behaviors:
      • Scheduled to send once and has not yet begun sending
      • Scheduled to send once and is currently sending (local time zone and Intelligent Delivery campaigns send over the course of 24 hours)
      • Scheduled to send on a recurring schedule and has at least one occurrence that hasn’t finished sending
  • Archived
    • Campaigns that are no longer sending and are cleared from the “All Active” tab on the Dashboard, as well as the Detailed Statics graphs on the App Usage and Revenue pages.
    • To archive campaigns click on the gear icon to the right of the campaign, or simply check it off and select the “Archive Selected” button that appears above.
    • You cannot edit an archived campaign, and would therefore need to unarchive it to do so.
  • Inactive
    • Campaigns that have been paused but are still rendered editable. You can resume an inactive campaign by clicking the gear icon by the campaign’s name and selecting “Resume.”
  • Multivariate Testing in Progress
    • Campaigns with multivariate tests still running. Should they reach a point where a variant outperforms others with better than 95% confidence, the variant will marked as the “winner.”
  • Inactive Multivariate Test - Winner Selection Needed
    • Campaigns with multivariate tests that have finished running and are in need of a Dashboard user to declare a winner to inform which variant the remaining users will receive.
  • Completed
    • Campaigns that have finished sending and are not scheduled to send again in the future.

Duplicating Segments and Campaigns

Braze allows you to duplicate pre-existing segments and campaigns. This can be useful in cases where you wish to create a new segment or campaign that is very similar to an old one. By our cloning feature, you can create a second version of an old segment or campaign and make the necessary edits.

Cloning a Segment

To clone a segment, click the gear icon next to a segment and select “Duplicate.” Your new segment will automatically be titled “Copy of [Original Segment]” and you’ll be brought to its editing page.


Cloning a Campaign

To clone a campaign, click the gear icon next to a campaign and select “Duplicate.” Your new campaign will automatically be titled “Copy of [Original Campaign]” and you’ll be brought to its editing page. Duplicates of campaigns will remain drafts until you edit and launch them.


Campaign Connector


Braze’s Campaign Connector allows you to create campaigns that are triggered when users interact with active campaigns or News Feed Cards. This feature is useful because it enables you to deliver targeted, relevant content at the right time. This feature allows you to target users who complete the following interactions with active campaigns:

  • View in-app message
  • Click in-app message
  • Click e-mail
  • Open e-mail
  • Directly open push notification
  • Perform conversion event
  • Receive e-mail
  • Receive push notification
  • Are enrolled in control group

As well as users who complete the following interactions with active News Feed Cards:

  • View
  • Click

Delivery Rules

The Campaign Connector feature only works with active campaigns. In addition, you cannot use Campaign Connector to send a message to a user after they have completed an interaction with a campaign. For example, if you are a running a marketing campaign for 9 weeks and you set up a follow-on campaign that utilizes Campaign Connector at the beginning of week 4, the follow-on campaign will only deliver messages to users that interacted with the marketing campaign after the follow-on campaign was published (weeks 4-9). Therefore, in order to ensure that your follow-on campaigns reach every user that you are targeting, you should:

  • Set up your original campaign as a draft
  • Set up and publish your follow-on campaign
  • Publish the original campaign

These delivery rules are particularly pertinent if you are targeting users who are enrolled in a control group, receive an e-mail or receive a push notification. Because users will be enrolled in the control group as soon as you publish the original campaign, you must publish the follow-on campaign before you publish the original campaign. Similarly, if you publish the original campaign before the follow-on campaign, many users may receive your e-mail and/or push notification before the follow-on campaign is published.

How to Use the Campaign Connector Feature

Step 1: Create a New Campaign

Compose the messages that you wish to send to your users. You can select a classic campaign or a single channel campaign, depending on your use case.

Step 2: Select Interaction and Target Campaign

You can target users who interact with an active campaign, or users who interact with an active News Feed Card.

Targeting Users Who Interact with a Campaign

Select action-based delivery and add the “Interact with Campaign” trigger. Then, choose the trigger interaction. Next, you’ll select the active campaign that you’d like to target.

Interact with Campaign

Targeting Users Who Interact with a News Feed Card

Select action-based delivery and add the “Interact with Card” trigger. Then choose whether you’d like to target users who view a News Feed Card or users who click a News Feed Card. Select the active News Feed Card that you’d like to target.

Interact With Card

Step 3: Set Schedule Delay and Add Exceptions If Necessary

If you choose to set a schedule delay, you can add an exception to the trigger action. For example, you might want to resend an e-mail campaign to users who did not open the original e-mail. In this scenario, you can choose “Received e-mail” as the trigger and set a schedule delay of one week. Then you can add “Open e-mail” as an exception. Now, you’ll resend the e-mail to users who did not open the original e-mail within a week of receiving it.

Schedule Delay

Step 4: Proceed with Campaign Creation

Continue creating your campaign just as you normally would. Note that if you want to ensure that you send a message to every user that is going to interact with a specific campaign, then it would be best to target a segment that contains all of the users of your app.

Use Cases

You can use Campaign Connector to target users who engage or do not engage with active campaigns.

For example, you might choose to target users who clicked on a promotional push message that advertised free shipping so that you can send them a promotional push message advertising 15% off a purchase.

Or, you might follow up with users who clicked a deep link in an on-boarding in-app message by sending them another in-app message that highlights additional features. This way, you can target users that have demonstrated that they are interested in learning more about the features of your application and avoid annoying the users that prefer to discover these features by themselves.

You can also use this feature to target users who receive a push notification reminding them that they have abandoned their cart. For example, you might want to resend the notification to users who did not directly open it. However, you’ll likely want to exclude users that have made a purchase since you send the original notification, even if they did not directly open it. You can achieve this use case by adding a “Received push notification” trigger for campaign “Abandoned Cart,” setting a schedule delay and adding ‘Makes Purchase’ and ‘Directly opened push notifications’ as exceptions.

Campaign Alerts


We want to alert you when something doesn’t seem quite as expected and give you peace of mind that the ship is sailing smoothly. Campaign threshold alerts provide peace of mind — be the first to know if an important campaign sends more or less messages than you expect.

Campaign alerts are available for:

  • Recurring scheduled campaigns
  • Action-based campaigns
  • API-triggered campaigns

Setting Up Your Campaign Alert

Navigate to the analytics page of your campaign to start setting up your alert. Once you hit “Set Up Alert,” you’ll be able to specify upper and lower alert thresholds as well as the alert recipients and channels.

For a scheduled recurring campaign, you can set upper and lower thresholds for the messages sent each time the campaign sends. For a triggered campaign, you can set upper and lower thresholds for the number of messages sent hourly and daily.

You can set up an email alert, a webhook alert or both. Webhook alerts can be very useful, as they allow you to send an alert to a Slack channel. For more information on integrating campaign alerts with Slack, see our documentation.


Campaign Alert Webhook Payload

The following is a sample payload for the body of a campaign alert webhook. This example uses an alert that is configured to send when messages sent falls below 500 for a given campaign send.

{"text":"Your campaign 'Copy of Copy of Messages sent test' had fewer than 500 messages sent this run. It had 4 messages sent this run. See",
"campaign_name":"Copy of Copy of Messages sent test",