# Bird Documentation

Welcome to Bird's documentation! Find guides and tutorials to help you set up and use our platform.

## Start using Bird

Set up an account, import your customer data, and learn how to start using Bird for marketing, sales, and payments.

[Get a demo →](https://bird.com/demo)

***

### Getting started: most popular articles

[Add users to your organization](/applications/settings/account/organization-settings/users#add-a-user-to-your-organization)

[Setup your first channel](/applications/channels/channels#supported-channels)

[Install a connector](/applications/automation/flows/concepts/triggers/connector-triggers#available-connectors)

[Import your contacts into Bird](#import-contacts-with-a-csv-file)

[Get started with AI employees](/applications/ai-features/ai-agents/how-to/create-your-first-ai-employee)

***

### Find your use case

You have to [register](https://bird.com/demo) for a Bird account before you can use any of these products or solutions.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Build a campaign</strong></td><td>Build and send an Email, SMS, WhatsApp, Push or RCS Campaign.</td><td></td><td><a href="#send-email-campaigns">#send-email-campaigns</a></td></tr><tr><td><strong>Build a Journey</strong></td><td>Create targeted marketing sequences that adapt to customer actions.</td><td></td><td><a href="/pages/vV8NCQ7SiPCUzrGWBObv">/pages/vV8NCQ7SiPCUzrGWBObv</a></td></tr><tr><td><strong>Get contacts into Bird</strong></td><td>Bring your contacts into Bird, with CSV uploads or data flows.</td><td></td><td><a href="#get-contacts-into-bird">#get-contacts-into-bird</a></td></tr><tr><td><strong>Target customers</strong></td><td>Manage your audience.</td><td></td><td><a href="#target-customers">#target-customers</a></td></tr><tr><td><strong>Design content</strong></td><td>Craft engaging message templates.</td><td></td><td><a href="#design-emails">#design-emails</a></td></tr><tr><td><strong>Build webforms</strong></td><td>Collect customer contact details and embed forms on your store or website.</td><td></td><td><a href="/pages/79DY9nMaNgi3J0Y8Oahk">/pages/79DY9nMaNgi3J0Y8Oahk</a></td></tr><tr><td><strong>Measure campaign performance</strong></td><td>See your campaign results.</td><td></td><td><a href="#measure-campaign-performance">#measure-campaign-performance</a></td></tr></tbody></table>

### Get contacts into Bird

To bring your contacts into Bird, you can install an [integration](/applications/integrations/integrations), such as [Shopify](/applications/integrations/integrations/supported-integrations/shopify) or [HubSpot](/applications/integrations/integrations/supported-integrations/hubspot), or import contacts with a [CSV file](/applications/audience/contacts/how-to/create-contacts). Each contact will have a [profile](/applications/audience/contacts/concepts/contact-profiles), where information about subscription statuses, event history, and custom and integration properties are stored.

<details>

<summary>Import contacts with a CSV file</summary>

[See the full article →](/applications/audience/contacts/how-to/create-contacts#bulk-import-new-contacts-from-a-csv)

1. Prepare your CSV file using the correct format, ensuring it includes at least one identifier like a phone number or email for each contact. Use the provided demo file as a template to avoid formatting issues.
2. Access the "Contacts" section from the side panel, click **Add Contact**, then **Import from CSV**. You can drag and drop the file or browse to select it from your device, then review it.
3. If the CSV file includes subscription statuses, you can skip this step. Otherwise, update the subscription status for each contact based on their opt-in preferences for marketing messages. If no marketing subscriptions are present, select **Import without updating subscription status**.
4. During import, you can add contacts to an automatically-generated list named with the import's date and time, or to new or existing lists. This can be customized during the import process.
5. Post-import, visit the **Imports** tab to view details of each import, such as the file name, lists added to, contacts skipped or updated, total contacts, and timestamps of import activities.

</details>

<details>

<summary>Import contacts by installing an integration</summary>

[See the full article →](/applications/integrations/integrations/quickstarts/find-and-install-an-integration)

1. Install an integration by clicking your name at the bottom left-hand side of your screen, then clicking **Integrations**.
2. Find and install your integration. Once you install an integration, contact data is automatically imported and contact profiles in Bird are updated.

**See also**

* [Integration data sync →](/applications/integrations/integrations/concepts/integration-data-sync)

</details>

### Target customers

Manage your audience and get granular with your targeting by creating dynamic [segments](/applications/audience/lists-and-segments/concepts/segments) and static [lists](/applications/audience/lists-and-segments/concepts/lists).

<details>

<summary>Create a segment</summary>

[See the full article →](/applications/audience/lists-and-segments/quickstarts/create-a-segment)

1. Navigate to **Audience** > **Lists & segments**.
2. Click **Create new** > **Create segment**.
3. Enter a name for your segment and an optional description.
4. In the **Segment definition** section, decide if the contacts should match "All" or "Any" of the specified conditions.
5. Apply filters by attributes or condition groups for precise audience targeting.
6. Utilize "and/or" filters to refine your selection further.
7. Preview the matching contacts, and when satisfied, hit the **Save Segment** button.

See also:

* [Contact activity](/applications/audience/contacts/concepts/contact-profiles#activity)
* [Create a segment based on contact activity](/applications/audience/lists-and-segments/how-to/create-commonly-used-segments)

</details>

### Design content

To craft your emails in Bird, you can choose from a library of [pre-designed templates](/applications/content/email-templates/how-to/use-a-prebuilt-email-template) or [design your own from scratch](/applications/content/email-templates/how-to/create-an-email-template). Our drag-and-drop email builder is easy to use, and templates can be personalized with both customer data and products from your ecommerce store.

<details>

<summary>Use a pre-built email template</summary>

[See the full article →](/applications/content/email-templates/how-to/use-a-prebuilt-email-template)

1. Navigate to **Content > Email templates > Template gallery**.
2. Search or browse to find a template.
3. Click on the template for more information.
4. To use it, click **Clone template**, set up your project, and click **Create template**.
5. Edit the template as needed and click **Publish** when you're ready to use it.

</details>

<details>

<summary>Create an email template from scratch</summary>

[See the full article →](/applications/content/email-templates/how-to/create-an-email-template)

1. Navigate to **Content > Email templates > Create blank email**.
2. Name your email, select a locale, and click **Create new email**.
3. Choose **Build from scratch** and click **Get started**.
4. Enter a subject line, add custom or prebuilt content blocks, and insert any variables.
5. Use desktop and mobile preview options in the email builder to check the email's appearance. For a more accurate view, send test emails to various email clients and devices.
6. Click **Publish** when you're ready to use it.

See also:

* [Email content, styling, and personalization](/applications/content/email-templates/concepts/email-content-styling-and-personalization)

</details>

### Send campaigns

Send your marketing campaign directly to your customers' inboxes by sending them an email campaign.

<details>

<summary>Send an email campaign</summary>

[See the full article →](/applications/campaigns/email-campaigns/how-to/send-an-email-campaign)

1. Confirm that your Email channel, [email template](/applications/content/email-templates/how-to/create-an-email-template), and opted-in customer segment or list are ready.
2. Go to **Campaigns > Create campaign**.
3. Name your campaign, choose **Email** as the type, optionally add tags, then **Save and continue**.
4. Choose target lists or segments from the **Send to** dropdown. Optionally exclude specific lists with **Don't send to**.
5. Click **Continue to content**.
6. Select the sending account and input your sender details.
7. Choose and configure your email template.
8. Check the message preview, select a test contact, and **Send a test message**.
9. Choose **Schedule or send**, select **Send now** or schedule for later.

See also:

* [Install Email](/applications/channels/channels/supported-channels/email/install-email)
* [Create an email template](/applications/content/email-templates/how-to/create-an-email-template)

</details>

<details>

<summary>Send a WhatsApp campaign</summary>

[See the full article →](https://docs.bird.com/applications/~/revisions/OYoUnNZ9nlJjA0Stlc4P/campaigns/whatsapp-campaigns/how-to/send-a-whatsapp-campaign)

1. Confirm that your WhatsApp channel, WhatsApp template, and opted-in customer segment or list are ready.
2. Go to **Campaigns > Create campaign**.
3. Name your campaign, choose **WhatsApp** as the type, optionally add tags, then **Save and continue**.
4. Choose target lists or segments from the **Send to** dropdown. Optionally exclude specific lists with **Don't send to**.
5. Click **Continue to content**.
6. Select the sending account and input your sender details.
7. Choose and configure your email template.
8. Check the message preview, select a test contact, and **Send a test message**.
9. Choose **Schedule or send**, select **Send now** or schedule for later.

See also:

* [Create a WhatsApp template](/applications/content/message-templates/how-to/whatsapp-message-templates/create-a-whatsapp-approved-message-template)
* [Install WhatsApp](/applications/channels/channels/supported-channels/whatsapp/quickstarts/install-whatsapp)

</details>

### Measure campaign performance

Spot trends, see which campaigns have performed the best, and dive into detailed data.

<details>

<summary>View campaign reports</summary>

[See the full article →](/applications/analytics/campaign-reports/how-to/view-campaign-reports)

1. Navigate to **Campaigns**.
2. Select your campaign, and click **View report**.

**Email Campaigns:**

* **Overview Tab**: Shows performance including delivery rates, open rates, and click rates.
* **Engagement Tab**: Highlights spam complaints and unsubscribes.
* **Bounce Tab**: Details on bounced emails, including types of bounces and bounce rates.
* **Rejection Tab**: Information on rejected emails and delivery failures.
* **Deliverability Tab**: Insights into email deliverability issues.

**WhatsApp Campaigns:**

* **Overview Tab**: Summarizes performance metrics like delivery and read rates.
* **Failure Reasons**: Explains why campaigns failed.

**SMS Campaigns:**

* **Overview Tab**: Presents sending and delivery performance.
* **Failure Reasons**: Details reasons for campaign failures.

Each tab presents critical data and visualizations to understand and improve your marketing efforts.

</details>


# Explore all features

Browse our guides by product area.

### Marketing

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Campaigns</strong></td><td>Campaign management</td><td></td><td><a href="/pages/5ctz8uYUjjEyfk5qopHi">/pages/5ctz8uYUjjEyfk5qopHi</a></td></tr><tr><td><strong>Journeys</strong></td><td>Marketing automation</td><td></td><td><a href="/pages/s7vKAR6krDvHsj9MnhC9">/pages/s7vKAR6krDvHsj9MnhC9</a></td></tr><tr><td><strong>Audience</strong></td><td>Contacts, lists, segments and suppressions.</td><td></td><td><a href="/pages/1FxoseVtt7tZYpaEAdAW">/pages/1FxoseVtt7tZYpaEAdAW</a></td></tr><tr><td><strong>Custom object + events</strong></td><td>Data syncs on every customer action.</td><td></td><td><a href="/pages/EpV0Kd1jSQcWwYvyUSj2">/pages/EpV0Kd1jSQcWwYvyUSj2</a></td></tr><tr><td><strong>Content</strong></td><td>Engaging messages on Email, RCS, Push, SMS and WhatsApp.</td><td></td><td><a href="/pages/lP6YWJ5o1RcXzl3mt6a9">/pages/lP6YWJ5o1RcXzl3mt6a9</a></td></tr><tr><td><strong>Sign-up forms</strong></td><td>Convert website visitors</td><td></td><td><a href="/pages/xF8iYXOHfs6nbFHB5jws">/pages/xF8iYXOHfs6nbFHB5jws</a></td></tr><tr><td><strong>Quizzes</strong></td><td>Interactive forms to gather customer information</td><td></td><td><a href="/pages/PPv8XosChIXpNdfC1h6y">/pages/PPv8XosChIXpNdfC1h6y</a></td></tr><tr><td><strong>Landing pages</strong></td><td>Capture leads, or drive customer action.</td><td></td><td></td></tr><tr><td><strong>Analytics</strong></td><td>Performance insights</td><td></td><td><a href="/pages/NyoXUZD9G8vDD7ATQsjA">/pages/NyoXUZD9G8vDD7ATQsjA</a></td></tr><tr><td><strong>Marketing settings</strong></td><td>Set Quiet Hours.</td><td></td><td><a href="/pages/WdeCbrDXu8i4tJY01sQC">/pages/WdeCbrDXu8i4tJY01sQC</a></td></tr></tbody></table>

### Support

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Inbox</strong></td><td>Centralized support inbox</td><td></td><td><a href="/pages/UJEcZkhFd0wUf0i9N4ko">/pages/UJEcZkhFd0wUf0i9N4ko</a></td></tr></tbody></table>

### Automation

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Flows</strong></td><td>Workflow automation</td><td></td><td><a href="/pages/lDZeyafWYLkwNudKr0vt">/pages/lDZeyafWYLkwNudKr0vt</a></td></tr></tbody></table>

### Payments

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Pay</strong></td><td>Online payments</td><td></td><td><a href="/pages/6lqBcYHMS9mmD5oHDclF">/pages/6lqBcYHMS9mmD5oHDclF</a></td></tr><tr><td><strong>Cards</strong></td><td>Issue cards</td><td></td><td><a href="/pages/bjPCzdarlDm0JXhgiZwy">/pages/bjPCzdarlDm0JXhgiZwy</a></td></tr></tbody></table>

### Channels

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Messaging</strong></td><td>Chat apps</td><td></td><td><a href="/pages/nwgMGjSSRbZKnKJF8WEc#messaging-channels">/pages/nwgMGjSSRbZKnKJF8WEc#messaging-channels</a></td></tr><tr><td><strong>Email</strong></td><td>Email messaging</td><td></td><td><a href="/pages/nwgMGjSSRbZKnKJF8WEc#email">/pages/nwgMGjSSRbZKnKJF8WEc#email</a></td></tr><tr><td><strong>Numbers</strong></td><td>SMS, MMS, and Voice-enabled numbers</td><td></td><td><a href="/pages/nwgMGjSSRbZKnKJF8WEc#numbers">/pages/nwgMGjSSRbZKnKJF8WEc#numbers</a></td></tr></tbody></table>

### Integrations

<table data-view="cards"><thead><tr><th></th><th data-hidden></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Marketing and CRM</strong></td><td></td><td></td><td><a href="/pages/wdwWyDCOz15tmZ6sNlBL#marketing-and-crm">/pages/wdwWyDCOz15tmZ6sNlBL#marketing-and-crm</a></td></tr><tr><td><strong>E-commerce</strong></td><td></td><td></td><td><a href="/pages/wdwWyDCOz15tmZ6sNlBL#ecommerce">/pages/wdwWyDCOz15tmZ6sNlBL#ecommerce</a></td></tr><tr><td><strong>Shipping and logistics</strong></td><td></td><td></td><td><a href="/pages/wdwWyDCOz15tmZ6sNlBL#shipping-and-logistics">/pages/wdwWyDCOz15tmZ6sNlBL#shipping-and-logistics</a></td></tr><tr><td><strong>Productivity</strong></td><td></td><td></td><td><a href="/pages/wdwWyDCOz15tmZ6sNlBL#productivity">/pages/wdwWyDCOz15tmZ6sNlBL#productivity</a></td></tr><tr><td><strong>AI</strong></td><td></td><td></td><td><a href="/pages/wdwWyDCOz15tmZ6sNlBL#ai">/pages/wdwWyDCOz15tmZ6sNlBL#ai</a></td></tr></tbody></table>


# Marketing: Getting started video

Step-by-step video and overview of Bird Marketing platform.

{% embed url="<https://youtu.be/YLi6-kScY4A>" %}


# Use cases


# Bird for travel

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Abandoned search recovery</strong></td><td>Track search queries and page views, and retarget potential customers with automated messages.</td><td></td><td><a href="/pages/04BpgCAIu66xoJLNvg2R">/pages/04BpgCAIu66xoJLNvg2R</a></td></tr><tr><td><strong>Flight confirmation</strong></td><td>Send personalized flight confirmation details once a customer has made a booking.</td><td></td><td><a href="/pages/e9q4V3dlxMNkDZCf59rW">/pages/e9q4V3dlxMNkDZCf59rW</a></td></tr><tr><td><strong>Holiday search campaigns</strong></td><td>Send targeted emails based on holiday searches.</td><td></td><td><a href="/pages/bFnMRQ6psMgh7v4KtIzN">/pages/bFnMRQ6psMgh7v4KtIzN</a></td></tr><tr><td><strong>Price alerts</strong></td><td>Send alerts via Email and Push notifications when prices change.</td><td></td><td><a href="/pages/90aa9v1yr7avVvJDuzNM">/pages/90aa9v1yr7avVvJDuzNM</a></td></tr></tbody></table>


# Abandoned search recovery

Track search queries and page views, and retarget potential customers with automated messages.

In this guide, we'll show you how to use web tracking to see what holidays potential customers are searching and viewing, and how to use journeys to retarget them with personalized offers.

### 1. Add website tracking

{% hint style="info" %}
If you have already installed one of the ecommerce platform integrations, such as [Shopify](/applications/integrations/integrations/supported-integrations/shopify), the web SDK is automatically installed on your store website.
{% endhint %}

The first step to setting up abandoned search recovery is to add tracking to your website. To do this, you'll need to install Bird's [web SDK](https://docs.bird.com/api/client-sdks/sdk-integration).

With the web SDK installed, you'll be able to:

* Identify visitors
* Track page views
* Track searches

This tracking information will automatically be added to [contact profiles](/applications/audience/contacts/concepts/contact-profiles) and used to create [segments](/applications/audience/lists-and-segments/concepts/segments).

### 2. Create a segment

Now that you're capturing search and page view information, you can create a segment to group users that are searching for a specific destination.

To do this:

1. Go to the **Marketing** section of your workspace, then go to **Audience** > **Lists & segments** > **Create new** > **Create new segment**.
2. Then, in the **Segment definition** section, use **Something was or was not done** and select **Page viewed** and **Search submitted** as events.
3. For the **Search submitted** event, you can match the query terms to a specific country search such as 'Bahamas'.

Take a look at the screenshot to see how it's done.

<figure><img src="/files/EYHSL0ALpjMenF8zKXkO" alt=""><figcaption></figcaption></figure>

**Save** your segment.

{% hint style="success" %}
Visitors to your website who view a specific page or submit a specific search will now automatically be added to the segment.
{% endhint %}

### 3. Build a dynamic email template

Now you can build a dynamic email template with variables.

You can add variables by typing `{{` or clicking the **Add variables** icon, and selecting the variable that you want to use.

For example, you might want to populate the subject line as follows:

* `Ready to book your next {{contact.attributes.interest}} vacation?`

1. Go to **Content** > **Email templates**, and use the drag and drop builder to design an email or set of emails that you want to send to website visitors who have abandoned a search.
2. To personalize the email with information relevant to the destination they were searching for, use variables.
3. **Test** and **Publish** your template so it's ready to send as part of a journey.

{% hint style="info" %}
**Tips**

* Remember to create and publish email templates for every stage of the journey!
  {% endhint %}

### 4. Set up a journey

Next, set up a journey to send your email templates.

1. From the **Marketing** section of your workspace, go to **Journeys** > **Create journey** > **Create from scratch**.
2. For the trigger, use **Added to segment** and select the segment you created in step two. When a contact is added to that segment, the journey will automatically start to run.
3. Next, add a **Wait** step, and set the wait time to s few hours. You don't want to email your customers the second that they view something, as that can be a bit overwhelming!
4. Below the **Wait** step, add a **Send an email** step, then select the first email template you created in step two. Remember to configure any of the variables you added by using the panel on the right-hand side of your screen
5. Repeat this process for the other email templates you have created
6. When you're ready, **Publish** your journey to set it live.

{% hint style="info" %}
**Tips**

* Use **Wait** steps to adjust how long your journey should wait before sending the next email.
* Use **Conditions** to only continue the journey if the customer hasn't completed their booking (see screenshot below)
* Add steps to target customers on other channels such as SMS and WhatsApp to increase engagement.
  {% endhint %}

Conditions example:

<figure><img src="/files/Q4GbzgvQL6rMnCK9pjuR" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
You've just set up an abandoned search recover journey!
{% endhint %}


# Flight confirmation

Send customers personalized confirmation emails with all their flight details and updates.

In this guide, we'll show you how to set up a journey that automatically delivers personalized flight confirmation emails to customers immediately after booking.

### 1. Create a personalized email template

First, create an email template that will be used to confirm the booking details.

1. Go to **Content** > **Email templates.**
2. Create a **new blank template** or choose one from the **template library.**
3. Use the drag-and-drop builder to design your email template.
4. Next, add dynamic variables to personalize the email, making it more relevant and useful for the customer. This will enhance their overall experience
   1. Add dynamic variables with booking details such as booking ID, flight details, and travel dates.

      * Example subject line: `Alright {{contact.attributes.displayName}}, your flight is confirmed!`

      <figure><img src="/files/GGOtNHo5Ra1b9SMhTFFK" alt=""><figcaption></figcaption></figure>

      <figure><img src="/files/jXIF7Z8XmRoRsIrsGc6t" alt=""><figcaption></figcaption></figure>

      <figure><img src="/files/cOeun2ajGsWh9cLcCaxt" alt=""><figcaption></figcaption></figure>

      <figure><img src="/files/XBZbU2EgzeZmUcEUADOT" alt=""><figcaption></figcaption></figure>
   2. Add variables by typing `{{` or clicking the **Manage variable**s, and creating the relevant variables.<br>
   3. **Preview** your template so it's ready to be used in the journey.<br>

      <figure><img src="/files/4tWUYhj3WzJusUjx6Vj6" alt=""><figcaption></figcaption></figure>
5. Once your template is done, click Publish to make it ready to use.

{% hint style="info" %}
**Tip**

* Include important booking details such as flight number, departure time, and check-in information.
  {% endhint %}

### 2. Set up a journey

Next, set up the Journey that will facilitate the flight confirmation journey.

1. Go to the **Marketing** section of your workspace.
2. Navigate to **Journeys** > **Create journey** > **Create from scratch**.
3. In the editor section on the right:

   * Select **Placed order** for the Trigger.
   * Select **Website** for the Connector.
   * Select **Website** for the Connector Instance.

   <figure><img src="/files/rgWEO2INyMPC2VOjnGB9" alt=""><figcaption></figcaption></figure>
4. If you do not have your website connected, select **Manage instance** to connect your website.
5. Next, select the action and choose **Send a Message**.

   * Fill out the sender email, name, and choose your confirmation template you created, select save once completed.

   <figure><img src="/files/ZlBCiw1DJQzfpCMvAs3c" alt=""><figcaption></figcaption></figure>
6. Finally, select **End Journe**y for completion.
7. When ready, Publish your journey to set it live.

{% hint style="info" %}
**Tips**

* Use Wait steps to manage the timing of the email.
* Add SMS notifications to provide updates via multiple channels.
  {% endhint %}

{% hint style="success" %}
You've just set up a Flight confirmation journey!
{% endhint %}


# Holiday search campaigns

Send targeted emails based on holiday searches.

In this guide, we'll show you how to create and send targeted email blasts to customers interested in holiday searches.

### 1. Create a dynamic segment

First, create a segment of users based on their vacation search activities. There are many ways to narrow down your target audience effectively.

1. Go to the **Marketing** section of your workspace, then go to **Audience** > **Lists & segments** > **Create new** > **Create new segment**.
2. In the **Segment definition** section:
   * Select **Something was or was not done**
   * Select **Ordered confirmed > Zero times**
   * Select **in the last** and select your desire time frame.
   * *Optional*: Define a specific SKU or Product ID (vacation name) they have not purchased.
3. ***OPTIONAL*** - additional Segment Definitions:
   1. To see if they clicked a particular link in the past:
      * Select **Something was or was not done**
      * Select **Email link Clicked** > **Zero times**
      * Select **in the last** and select your desire time frame.
      * *Optional*: Specify a particular link or campaign they interacted with.
   2. To see if they have a particular interest:
      * Select **Properties about someone**
      * Select **Interest**
      * Select **equals**
      * Enter key word for holiday/vacations
   3. To see if they viewed a specific page:
      * Select **Something was or was not done**
      * Select **Page view event** > **At least once**
      * Select Over All time
      * Under Select event property, click **Page URL**
   4. To see if they did a search on your page:
      * Select **Something was or was not done**
      * Select **Search submitted** > **At least once** > **Over All time**
      * *Optional*: can select **Search query terms** > **equals** > \[insert holiday], to show you the audience that used this query.

**Save** your segment.

Take a look at the screenshots to see how it's done.

Ordered confirmed

<figure><img src="/files/mc1fRv9b4Okb3OaHsKFD" alt=""><figcaption></figcaption></figure>

Email linked

<figure><img src="/files/omGSWo5pohjfbtTvqgBX" alt=""><figcaption></figcaption></figure>

Particular Interest

<figure><img src="/files/cCNgBLJ0yOIZd04ulRf4" alt=""><figcaption></figcaption></figure>

View a page

<figure><img src="/files/o99pdnaBMX5WBdVQe1Hj" alt=""><figcaption></figcaption></figure>

View a search

<figure><img src="/files/SDLJfftUN7ogEWGBaDhZ" alt=""><figcaption></figcaption></figure>

### 2. Build a holiday email template

Next, design a personalized targeted email based on holiday search patterns.

1. Go to **Content** > **Email templates**.
2. Create a **new blank template** or choose one from the **template library.**
3. Use the drag-and-drop builder to create a visually appealing holiday-themed email.
4. Add variables to personalize the subject line and body of the email.
   * Example subject line: `Discover the best deals for your {{contact.attributes.holiday_search}} vacation!`
5. **Test** and **Publish** your template for use in the campaign.

### 3. Configure and send the email campaign

Set up the campaign to send the holiday search email blast.

1. Go to **Marketing** > **Campaigns** > **Create new campaign**.
2. Select **Email** as your campaign type and fill out the necessary campaign information.
3. From the **Send to** drop-down, choose the [segment](https://docs.bird.com/applications/audience-and-contacts/lists-and-segments/concepts/segments) you created earlier. You can select more than one list or segment.
   * \[Optional] To exclude specific customers, use the **Don’t send** to drop-down to select the lists or segments to exclude.
4. Configure the campaign settings, including UTM parameters for tracking.
5. Next, fill out the **Sender** information section.
6. In the campaign content, select the holiday email template created earlier.
7. Map out your template variables.
8. Click **Schedule or send**.

{% hint style="info" %}
**Tips**

* Use A/B testing to find the most effective email variations.
* Personalize the content based on users' search history and preferences.
* Send follow-up emails based on user engagement with the initial email.
* For more information on sending an email [click here](/applications/campaigns/email-campaigns/how-to/send-an-email-campaign).
  {% endhint %}


# Price change alerts

Set up and send personalized price alerts to keep your customers informed and engaged.

In this guide, we'll show you how price alert flows notify subscribers/customers of a flight search/hotel booking/car rental they are interested in.

### 1. Build an email template

Design a personalized email template.

1. Go to **Content** > **Email templates.**
2. Create a **new blank template** or choose one from the **template library.**
3. Use the drag-and-drop builder to design your email template.
4. Make sure to drop in variables to personalise the email based on the contact's name and search details( source, destination, date of search, product searched). Map these variables with dynamic values from the price alert event your website/system triggered.
5. Once your template is done, click Publish to make it ready to use.

### 2. Set up a price drop automation

You can create a price alert flow in the following way:

* Your website/system can trigger an event to a Bird API endpoint with all the relevant details needed to personalize the price alert notification. Shared below is a sample event.<br>

  <figure><img src="/files/GqkQNTEeRNDV99elv0DU" alt=""><figcaption></figcaption></figure>

1. Go the **Process Automation** section, go to **Flows** > **New Flow** > **Webhook > Save.**\
   ![](/files/ZDvoOJAamgkJHfopwIuJ)
2. Select **Copy** and send the event of your choice(similar to the sample event share earlier) to this copied endpoint.\
   ![](/files/qwOh7EAdlu3MpgDem1Pk)
3. **General instruction:** Make sure to test every step after you've configured it.
4. Add new action, **Get Contact by identifier**
   * Add in the **Identifier Key(in this case will be "externalId" or "emailaddress" or "phonenumber")** and **Identifier Value( in this case will be the customerId you track this user within your system)**\
     ![](/files/laaNkyk9ZH2B49gVkxfO)
5. Add a new actio&#x6E;**, Conditional to check for price change if an increase or a decrease.** This step can be completely skipped depending on the event you pass to Bird. In the case, you pass the value of the change of the viewed product/search you don't need to add this step.

   * In branch A, check for Price decrease
     * Add conditional perimeters - new price is **less than** old price
   * In branch B, check for Price increase
     * Add conditional perimeters - old price is **less than** new price

   <figure><img src="/files/9hYoHRP1LVY8OMt9A4bt" alt=""><figcaption></figcaption></figure>
6. Add a new action, **Calculate.**

   If price increased or decreased, calculate the price change by using a simple formula:

   1. For Price increase, "new price"-"old price"
   2. For Price descrease, "old price"-"new price"

   ![](/files/NkWvOQdt4H7ntFCPrmj2)<br>
7. Add a new action, Send an email step\
   Configure the following:
   1. the email domain/channel you wish to send out the email from
   2. to whom you want to send out the email to.
   3. the email template that has to be send out and map the variables for personalisation\
      ![](/files/phVvvf1qvgVcxxjyycf5)
8. **Add a new action, Send Template message to channel.**

   Configure the following:

   1. the push channel you wish to send out the push notification from
   2. to whom you want to send out the push notification to.
   3. the push notification template that has to be send out and map the variables for personalisation\
      ![](/files/7KupRRLaQxJkXVfjNmC6)
9. **Terminate** flow for completion.
10. When ready, **Publish** your Flow to set it live.<br>

{% hint style="info" %}
**Tips**

* Make sure to test each step after configuring it.
* Monitor the flow to check if it's performing as expected.
  {% endhint %}


# Bird Support

Raise a support ticket or contact our team directly when you need help.

To raise a support ticket in Bird, start by clicking the **Help Center** icon in the bottom left corner of your Bird workspace. This opens the Help Center, where you can access assistance and explore resources.

<figure><img src="/files/Tig8DZc9xRMfXmfieIXo" alt=""><figcaption></figcaption></figure>

1. Choose **Create task** to raise a ticket with a member of the Bird support team.
2. **Choose the product f**rom the **Product** dropdown, select the product that needs attention.

{% hint style="info" %}
*Example: Select **Campaigns** for issues related to your marketing campaigns.*
{% endhint %}

3. **Set the priority -**\
   Open the **Priority** dropdown and choose how urgent your request is.

{% hint style="info" %}
*For immediate issues, select **Priority 1 - Business Critical**.*
{% endhint %}

4. **Describe your issue -**\
   Provide a detailed **Description** of the problem. The more context you give, the easier it will be for the team to help.
5. **Attach supporting files**\
   Add any relevant attachments like screenshots, screen recordings, or videos to help illustrate the issue.
6. **Submit your ticket**\
   Click **Submit** to send your request. Your ticket will now be created and assigned to a Customer Support representative.
7. **View your ticket**\
   Go to **Cases** to see your open support requests. Click on your ticket (e.g., *"My campaign won’t send"*) to track progress and view replies.
8. **Reply to your ticket**\
   In the ticket view, type your message in the **Write a reply** box. You can also add attachments like voice notes, screen recordings, or images.
9. **Track ticket status**\
   Use the **Status** tab to monitor the progress of your ticket.

{% hint style="info" %}
*Resolved tickets will show as "Resolved."*
{% endhint %}

10. **Close the case**\
    Once the issue is resolved, click **Close case** to mark it as complete.

If you reach out to our Support team and do not hear back, feel free to email them at <support@bird.com>.


# Product updates

Stay updated with the latest features, fixes, and improvements.

The Bird updates page is where we share everything new across the platform — from small improvements to major releases. It’s the easiest way to keep track of what’s shipping across Marketing, Customer Service, our CDP, and the developer tools.

Use it to:

* See the latest features and enhancements as they go live.
* Share updates with your team so everyone stays aligned.
* Find new capabilities that can improve your campaigns, journeys, segmentation, or support workflows.
* Follow how Bird is evolving week by week.

Check the page regularly to stay up to date with what’s new and what’s improved.<br>

{% embed url="<https://www.bird.com/changelog>" %}


# Language support

The Bird app supports multiple languages natively. If your browser is set to one of the supported languages, the app will automatically display in that language.

### Supported languages

The Bird app is available in the following languages:

| Language              | Locale code |
| --------------------- | ----------- |
| English               | en          |
| Portuguese (Portugal) | pt-PT       |
| Portuguese (Brazil)   | pt-BR       |
| Dutch (Netherlands)   | nl-NL       |
| German (Germany)      | de-DE       |
| French (France)       | fr-FR       |
| Spanish (Spain)       | es-ES       |
| Russian (Russia)      | ru-RU       |

### How it works

The app detects your preferred language from your browser settings and displays the interface in that language. All static text will be translated with correct locale rules for currency, plurals, and number formatting.

If you set a preferred language in the app, that setting takes priority over your browser language.

[Learn how to change your browser language →](https://support.google.com/accounts/answer/32047?hl=en\&co=GENIE.Platform%3DDesktop)

### Set your preferred language in Bird

You can also set your preferred language directly within Bird, independent of your browser settings.

1. Click your profile icon in the bottom left corner of the screen.
2. Click **Profile -> Profile Settings**
3. Under **Language**, select your preferred language from the dropdown.
4. Click **Save**.

Your language preference will be applied immediately.

<figure><img src="/files/hAaofzntT0uOF2tdu4Nx" alt=""><figcaption></figcaption></figure>

### Good to know

Some dynamically loaded content, such as custom pages and dashboards pulled from the API, may not yet be translated. We're continuing to expand translation coverage over time.


# Bird Pricing

Bird offers flexible pricing plans designed to scale with your business needs. This guide explains how **Monthly Targeted Contacts** are calculated for pricing and clarifies the additional **passthrough costs** for WhatsApp and SMS messaging.

You can find the Bird Pricing details here:

{% embed url="<https://bird.com/en-us/pricing>" %}

### What are Monthly Targeted Contacts?

Monthly Targeted Contacts represent the number of unique contacts (based on contact ID) you send at least one message to on any channel during a billing month. This pricing model is available through Bird's **Targeted Contacts Bundle** plans, which starts at 50,000 contacts. These messages to contacts can be sent through any of the following methods:

* Sending via Campaigns
* Sending via Journeys
* Sending via Flows
* Sending via API (new update)
* Sending via Support Inbox (new update)

You can see your bundle under **Settings > Billing > Overview > Bundles > Targeted Contacts**

<figure><img src="/files/E7ny12U0C7kg6uK0zGVM" alt=""><figcaption></figcaption></figure>

Click on Targeted Contacts to see your plan details:

* The tier which shows 0 unit price is included in your plan
* The tier above with unit price are your overrage charges if you exceed your plan limits

**Unit type: Contacts** is the monthly Targeted contacts bundle that you have subscribed to

**Unit type: Messages** is the monthly Message volume across any channel that you also get as part of your plan. Generally, it is 10 times the number of targeted contacts in your plan.

<figure><img src="/files/PJnlJrZVy1xq0vDPnfrX" alt=""><figcaption></figcaption></figure>

***

#### How Targeted Contacts are Calculated

A contact is counted as "targeted" when they are <mark style="color:orange;">**sent**</mark> (NOT delivered) at least one message from your account on any channel during the monthly billing period. Here's what you need to know:

* **Unique Count**: Each contact is counted only once per month, regardless of how many messages they receive
* **Monthly Reset**: The count resets at the start of each billing month
* **Cross-Channel**: A contact counts toward your total whether you reach them via email, SMS, WhatsApp, push notifications, Google RCS or multiple channels
* **Any Message Sending Method Counts**: All message types sent from campaign, journeys, flows, API or Support count toward your targeted contacts limit

***

### Understanding Bird Processing Fees

Bird charges Bird Processing fees for a <mark style="color:orange;">**send**</mark> attempt for <mark style="color:orange;">**all**</mark> outbound messages. Even a failed attempt to send a message will result in a charge of Bird Processing Fees, as sending involves the usage of our APIs.

* For WhatsApp, this means for all template messages, including service (session) messages.

### Understanding Passthrough Costs

Passthrough costs are fees charged by third-party carriers and platform providers that Bird passes directly to customers at cost. These costs are **additional** to your Targeted contacts subscription and it is applied based on usage.

#### WhatsApp Passthrough Costs

WhatsApp charges vary based on:

* **Message Type**: Marketing, utility, authentication, or service messages
* **Country**: Different rates apply per region
* **Conversation Windows**: 24-hour conversation sessions

**Meta's Passthrough Fees**: Variable by country and message type. This is based on WhatsApp message usage and it is additional to your subscription plan. It is charged to your wallet. The vendor fee is only charged when the WhatsApp message is processed/delivered.

To view current WhatsApp vendor fees, visit the WhatsApp [Bird pricing page](https://bird.com/en-us/pricing/whatsapp).

#### SMS Passthrough Costs

SMS costs include:

**Carrier Fees**: Charged by mobile network operators. This is based on SMS per message usage and it is additional to your subscription plan. It is charged to your wallet. The carrier fee is only charged when the message is accepted by the operator.

**Important**: SMS pricing is per segment. Messages longer than 160 characters may span multiple segments, with each segment charged separately.

To view current SMS carrier fees, visit the SMS [Bird pricing page](https://bird.com/en-us/pricing/sms).

{% hint style="info" %}
Note that there are no additional per message or pass-through costs for Email or Push notifications.
{% endhint %}

### Viewing my usage and costs

You can go to **Settings > Billing > Usage > Overall Usage** to view your costs and usage

Note that the Targeted contacts is charged only after the billing month and you cannot view your ongoing usage for the current month.

<figure><img src="/files/RiW40kCUHlu7H0OBaSgj" alt=""><figcaption></figcaption></figure>

You can go to **Settings > Billing > Usage > Reports** to generate downloadable itemized reports

<figure><img src="/files/NpFhVWJ7LeYncTFVi2iU" alt=""><figcaption></figcaption></figure>

### Flow charges

We charge for every invocation, even if the invocation fails.

### What about Pay as you Go?

For Pay as You Go bundle or trial plan, you do not purchase a Targeted Contacts subscription plan, hence all your spend is based on usage on a message level as defined in the below page:

{% embed url="<https://bird.com/en-us/pricing>" %}


# About Bird

Bird is the complete platform for enterprise brands to acquire, convert, and retain customers across every channel—powered by AI that actually understands your business.

## Why use Bird?

{% embed url="<https://youtu.be/IAZnwyb54FY?si=lhswpLWXFP5Xc-tH>" %}

## Our Product

### Our platform is built around 4 pillars:

**Grow** with our complete marketing suite that drives measurable customer acquisition and conversion.<br>

**Manage** your data with our Customer Data Platform (CDP) that unifies customer information across every touchpoint.<br>

**Reach** any channel with developer APIs that connect you to SMS, Email, WhatsApp, Voice, and more.<br>

**Automate** with AI and powerful workflows that scale your operations without scaling your headcount.<br>

## Our Channels

**Email Marketing**\
Send automated or one-off email campaigns.

**SMS Marketing**\
Grow your business using personalized texts.

**WhatsApp Marketing**\
Convert buyers with rich experiences on WhatsApp.

**Push Marketing**\
Engage your app users and bring them back for conversions.

**RCS Marketing**\
SMS messages with interactive, rich messaging that drives action.


# Marketing Dashboard


# Quickstarts


# Overview

A comprehensive overview of your campaign and journey performance across all communication channels

Dashboard provides a comprehensive overview of your campaign and journey performance across all communication channels. It helps you understand how your messages are performing and where you can optimize.

### **Accessing the Marketing Dashboard**

To navigate to the Marketing Dashboard:

1. From the left sidebar, go to **Marketing**

<div align="left"><figure><img src="/files/mRK1L0RRsXGKutlLDxbb" alt="" width="271"><figcaption></figcaption></figure></div>

2. Click on **Dashboard**
3. You will land on the **Overview** tab, which displays your key performance metrics

<figure><img src="/files/GFIg6nEFtE9wp3k5GsgW" alt=""><figcaption></figcaption></figure>

### **Overview Metrics**

The Overview section summarizes your marketing performance using the following metrics:

* **Delivery rate** – Percentage of messages successfully delivered to recipients
* **Open rate** – Percentage of delivered messages that were opened
* **Click rate** – Percentage of opened messages that resulted in a click
* **Unsubscribe rate** – Percentage of recipients who unsubscribed
* **Conversion rate** – Percentage of recipients who completed your desired action
* **Attributed revenue** – Revenue generated directly from your messaging campaigns

You will also find:

* **Messaging funnel** – A visual breakdown of message delivery, opens, reads, and clicks
* **Performance over time** – Day-by-day delivery, open, and click trends across channels

### **Platform Performance**

Scrolling down, you’ll see:

<figure><img src="/files/VmPde9taLNnJeXc0TYYb" alt=""><figcaption></figcaption></figure>

#### **Platform Performance Over Time**

A line/bar chart comparing performance across channels throughout your selected date range.

#### **Top Performing Platforms**

A table showing performance by channel (Email, SMS, WhatsApp), including:

* Sent
* Delivered
* Delivery rate
* Opens
* Open rate
* Clicks
* Click rate

### **Campaign Performance**

<figure><img src="/files/kkONYOQTUpzQk4X1PqxE" alt=""><figcaption></figcaption></figure>

Below platform performance, you will find a detailed table of all campaigns, including:

* Sent
* Delivered
* Delivery rate
* Opens
* Open rate
* Clicks
* Click rate

Click any campaign name to open a **full detailed Campaign Report**.

<figure><img src="/files/0BTPVkeqPhGJkO0jzaPw" alt=""><figcaption></figcaption></figure>

### **Journey Performance**

Journey performance is also displayed when enabled, allowing you to monitor results for your automation flows with the same key metrics.

<figure><img src="/files/0KAUN1W5fMVGTOR5rtqa" alt=""><figcaption></figcaption></figure>


# How to


# Create a Custom Dashboard

Tailor your analytics experience by creating personalized views

Custom Dashboards allow you to tailor your analytics experience by creating personalized views based on the metrics and visualizations that matter most to your team. This feature is especially useful if you want to track specific KPIs, compare campaign performance, or build dedicated reporting spaces for different teams (e.g., Email, SMS, Marketing Ops).

### **How to Create a Custom Dashboard**

#### **1. Navigate to Dashboard Management**

1. From the left sidebar, go to **Marketing**.
2. Click **Dashboard**.
3. In the top-right corner, click **Manage Dashboards**.

This opens the Dashboard Settings screen, where you can view your existing dashboards and create new ones.

<figure><img src="/files/27Biri1CeRcW9Gx6CH2A" alt=""><figcaption></figcaption></figure>

#### **2. Create a New Dashboard**

1. Click **Create Dashboard**.

<figure><img src="/files/87a6BH3ODz6VecOQ1EJQ" alt=""><figcaption></figcaption></figure>

2. Enter the **Title** of your dashboard.

   * Choose something descriptive, e.g., *“Email Performance Overview”* or *“SMS Conversion Tracker”*.

   <figure><img src="/files/wPysvF3xprW9wrdd4y9J" alt="" width="375"><figcaption></figcaption></figure>
3. (Optional) Add a **Description** to help teammates understand the purpose of the dashboard.
   * Example: *“A consolidated view of email metrics for the last 90 days.”*
4. Click **Save**.

Your dashboard is now created and ready for customization.

### **3. Add Widgets to Your Dashboard**

Widgets are the building blocks of your dashboard. Each widget displays a specific chart, table, or metric based on the data you choose.

To add your first widget:

1. Open your newly created dashboard.
2. Click the **+** button in the top-right corner.
3. Name the widget that you want to create.
4. Click **+ Add widget**

<figure><img src="/files/YsIXt05sJm6uMPycfff7" alt=""><figcaption></figcaption></figure>

### **4. Select a Data Source**

<figure><img src="/files/CIddTUYZ3VcC9UxhfQVO" alt=""><figcaption></figcaption></figure>

Inside the widget creator:

1. Select a **Category**, such as

<div align="left"><figure><img src="/files/BMsl5BpSArKDkyWeEcZz" alt="" width="294"><figcaption></figcaption></figure></div>

* **Marketing**
* **CRM**
* **Custom events**
* **Custom objects**

2. The available **Dimensions** and **Metrics** will update based on the category you select.

#### **What are Dimensions?**

Dimensions are attributes used to *group* or *filter* your data.\
Examples:

* Campaign name
* Platform name
* Journey ID
* Created at
* Variation
* Direction (inbound/outbound)

#### **What are Metrics?**

Metrics are numerical values that you want to *calculate* or *visualize*.\
Examples:

* Delivered
* Opens
* Clicks
* Bounced
* Click rate
* Open rate
* Skipped by campaign hold-out
* Delivered rate

You must select **at least one dimension or one metric** before continuing.

### **5. Build the Widget**

Once you’ve selected your dimensions and metrics, configure the widget settings on the right panel:

#### **A. Title**

Give your widget a clear and meaningful name.\
Examples:

* “Top Performing Campaigns”
* “Delivery Rate by Day”
* “Messaging Funnel Summary”

#### **B. Width**

Choose how wide the widget should appear on the dashboard.

* 100% (full width)
* 50% (half width, ideal for side-by-side charts)

#### **C. Limit**

Determine how many items appear in your chart or table.

* Example: Limit to top 20 campaigns.

#### **D. Chart Type**

Choose how your data should be visualized:

* **Table**
* **Bar chart**
* **Line chart**
* **Funnel**
* **Pie chart** *(if applicable)*

This depends on the data selected—some metrics are ideal for tables, others for charts.

#### **E. Filters (Optional)**

You can apply filters using any available attribute.\
Examples:

* Filter by platform → Email only
* Filter by tag → “Black Friday”
* Filter by date → last 30 days
* Filter by Journey ID

Filters help narrow the dataset to only what you want to display.

### **6. Finalize and Save the Widget**

Once all configurations are set:

1. Click **Run** to preview the widget with real data.
2. If everything looks correct, click **Save**.
3. Your widget will now appear on your custom dashboard.

Repeat these steps to add as many widgets as needed.

<figure><img src="/files/jWmpwZhC8jmYoauWvwCD" alt=""><figcaption></figcaption></figure>

### **7. View Your Custom Dashboard**

Your custom dashboard will now:

* Display next to the default *Overview* dashboard
* Display all widgets you have created
* Automatically refresh with updated performance data

You can return anytime to:

* Add more widgets
* Edit existing widgets
* Remove outdated sections

This allows you to continuously refine your dashboard to match your reporting needs.


# Campaigns

Boost revenue with campaigns on SMS, WhatsApp, Push and Email.

Campaigns enables you to send marketing messages to your customers on the most popular messaging channels. Engage and convert your customers.

## Get started

Follow our quickstart guide to build and send your first campaign.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Quickstart: Send a campaign</strong></td><td>Learn how to set up and send a campaign with Bird.</td><td></td><td><a href="/pages/JlsRc7YIxEXfSBnxqWo2">/pages/JlsRc7YIxEXfSBnxqWo2</a></td></tr><tr><td><strong>Quickstart: New campaign Builder</strong></td><td>Learn how to build campaigns with our new builder.</td><td></td><td><a href="/pages/ZsJZ6c0aohQ0QLpRzqpj">/pages/ZsJZ6c0aohQ0QLpRzqpj</a></td></tr></tbody></table>

### Send campaigns by channel

Send campaigns on any supported channel.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>WhatsApp campaigns</strong></td><td>Learn how to set up and send WhatsApp campaigns.</td><td></td><td><a href="/files/77cvbUiQ0ZcxIN84Mq5j">/files/77cvbUiQ0ZcxIN84Mq5j</a></td><td><a href="/pages/5N3LNUvGw0kVr1RUaDaT">/pages/5N3LNUvGw0kVr1RUaDaT</a></td></tr><tr><td><strong>Email campaigns</strong></td><td>Learn how to set up and send Email campaigns.</td><td></td><td><a href="/files/aAVLOU40XJuo0ysgoc4s">/files/aAVLOU40XJuo0ysgoc4s</a></td><td><a href="/pages/g6FMNg2Z1dNk8lEAaSHe">/pages/g6FMNg2Z1dNk8lEAaSHe</a></td></tr><tr><td><strong>SMS campaigns</strong></td><td>Learn how to set up and send SMS campaigns.</td><td></td><td><a href="/files/KoAx4qbsVHSNKYxOtwSs">/files/KoAx4qbsVHSNKYxOtwSs</a></td><td><a href="/pages/Jxd73wiSogORi11k8o1J">/pages/Jxd73wiSogORi11k8o1J</a></td></tr><tr><td><strong>Push Notifications campaigns</strong></td><td>Learn how to set up and send Push Notifications campaigns.</td><td></td><td><a href="/files/Pxhn3K3GT2nfc0XweiUd">/files/Pxhn3K3GT2nfc0XweiUd</a></td><td><a href="/pages/ZKEZAiredDUm0nXovXKm">/pages/ZKEZAiredDUm0nXovXKm</a></td></tr><tr><td>RCS campaigns</td><td>Learn how to set up and send RCS campaigns.</td><td></td><td><a href="/files/d343jEOWc1fIWz2lGYUs">/files/d343jEOWc1fIWz2lGYUs</a></td><td></td></tr></tbody></table>

### Test and manage campaigns

Organize with tags, A/B test content, and schedule campaigns to be sent later.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Schedule a campaign</strong></td><td>Learn how to schedule a campaign to be sent at a future date and time.</td><td></td><td><a href="/pages/fgzXvS90Ggqul7NJwfkX">/pages/fgzXvS90Ggqul7NJwfkX</a></td></tr><tr><td><strong>Tag a campaign</strong></td><td>Learn how to tag campaigns for better organization.</td><td></td><td><a href="/pages/N1tXtXQs6lbNvFAdupA6">/pages/N1tXtXQs6lbNvFAdupA6</a></td></tr><tr><td><strong>Run an A/B test</strong></td><td>Learn how to A/B test your campaigns to see which version performs better.</td><td></td><td><a href="/pages/Yid8yGtJfKpDauWRI6Rc">/pages/Yid8yGtJfKpDauWRI6Rc</a></td></tr></tbody></table>

### Reporting and analytics

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Campaign reports</strong></td><td>Learn how to analyze the performance of your campaigns</td><td></td><td><a href="/pages/iAgWsmVwlkWzEAxaubtl">/pages/iAgWsmVwlkWzEAxaubtl</a></td></tr></tbody></table>


# Quickstarts

Getting started guides for sending a marketing campaign with Bird.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Send a campaign</strong></td><td>Learn how to send a campaign with Bird.</td><td></td><td><a href="/pages/JlsRc7YIxEXfSBnxqWo2">/pages/JlsRc7YIxEXfSBnxqWo2</a></td></tr><tr><td><strong>Campaigns overview</strong></td><td>Learn the basics of Campaigns.</td><td></td><td></td></tr></tbody></table>


# Campaigns overview

How to get started with campaigns.

Campaigns let you send one-time messages to your audience across channels like Email, SMS, WhatsApp, or In-App. Let’s walk through how to get started.

#### Explore the Campaigns Dashboard

Navigate to Campaigns from the sidebar: **Marketing > Campaigns**

Here, you'll see a list of your previously sent campaigns, along with key metrics:

* Recipients
* Open rate
* Click rate
* And more

<figure><img src="/files/MMnL1tDVxeS7wD4Yl7sn" alt=""><figcaption></figcaption></figure>

Use the search bar or filter options to quickly find a specific campaign. You can filter by type (email, sms, whatsapp, push), tags, recipients and date.

<figure><img src="/files/fCuNgwdEOOBIo0y5YTn6" alt=""><figcaption></figcaption></figure>

Toggle between Sent, Draft, and All using the tabs at the top.

<figure><img src="/files/HEZDJgtR4ydyM2HD8Yt4" alt=""><figcaption></figcaption></figure>

Click on any campaign to dive deeper into performance, and then selecting **reports** or **campaign details.**

<figure><img src="/files/oqg6HWIBZcIrd5LA02yp" alt=""><figcaption></figcaption></figure>


# Send a campaign

Learn what you need to do to set up and send your first campaign with Bird.

Campaigns are one-off marketing messages that you can send with Bird. In this guide, we'll take you through the steps you need to complete to send your first campaign.

### Step one: Bring your contacts

The first step towards sending a campaign is to add some contacts to Bird so that you have some people to send your campaign to. You can either

* [Import a csv to create contacts](/applications/audience/contacts/how-to/create-contacts)
* [Install an integration](/applications/integrations/integrations/quickstarts/find-and-install-an-integration)

One of the most popular ways of doing this is to install an integration like [Shopify](/applications/integrations/integrations/supported-integrations/shopify), [WooCommerce](/applications/integrations/integrations/supported-integrations/woocommerce), or [HubSpot](/applications/integrations/integrations/supported-integrations/hubspot).

When you install an integration, data from that connector (including contacts) is automatically synced into Bird.

{% hint style="info" %}

#### Importing contacts via csv

There are other ways to add your contacts to Bird. For example, you can choose to add your contacts by [importing a CSV file](/applications/audience/contacts/how-to/create-contacts#bulk-import-new-contacts-from-a-csv).

It doesn't matter what method you choose for this guide, as long as you have some contacts in Bird.
{% endhint %}

* Go to **Settings > Workspace > Connectivity > Integrations**
* Search for your integration from the Marketplace and click on Install

<figure><img src="/files/XHwqmhWV8bJM8okcWwPu" alt=""><figcaption></figcaption></figure>

### Step two: Install a channel

The next step is to decide what channel to send your campaign on.

At this stage, this will largely depend on the contact details you have for your customers. If you have a lot of email addresses, but not many phone numbers, you'll probably want to start by sending an email campaign.

* Go to **Settings > Workspace > Connectivity > Channels**
* Search for your channel and click on Install

<figure><img src="/files/4yU0dOvL2h5UsN8gzCL5" alt=""><figcaption></figcaption></figure>

Install one of the following channels to begin with:

* [WhatsApp](/applications/channels/channels/supported-channels/whatsapp/quickstarts/install-whatsapp)
* [Email](/applications/channels/channels/supported-channels/email/install-email)
* [SMS](/applications/channels/channels/supported-channels/sms/quickstarts/install-sms)

### Step three: Build a segment or list

You can go to **Audience > Lists & Segments**

<figure><img src="/files/BON0YSV8p4MuHM6WtjTH" alt=""><figcaption></figcaption></figure>

Now that you've added some contacts to Bird, and installed the channel you want to use, it's time to build an segment or list that you can send your campaign to.

If you added contacts to Bird by installing a connector during step one, the simplest way to do this is to build a [segment](/applications/audience/lists-and-segments/concepts/segments).

{% hint style="info" %}

#### Advanced segmentation

If you want to get *really* advanced, you can even [segment your audience by ecommerce behavior](/applications/audience/lists-and-segments/how-to/create-commonly-used-segments).

For example, you could create an audience of customers who haven't made a purchase in the last 90 days—but we'd recommend keeping it simple for now.
{% endhint %}

If you added contacts to Bird by uploading a CSV during step one, you may have automatically created a [list](/applications/audience/lists-and-segments/concepts/lists) during the process.

### Step four: Create content

It's almost time to create your campaign! But first—what exactly will you send to your customers? You can either

* Create an [email](/applications/content/email-templates) or [message template](/applications/content/message-templates) to use in campaigns (except SMS)
* Create content directly in the campaign e.g SMS

The design part of the campaign process happens in the **Create content** part of your dashboard.

This is where you can create eye-catching [emails](/applications/content/email-templates) with our [email editor](/applications/content/email-templates/concepts/email-content-styling-and-personalization), or engaging messages for SMS and [WhatsApp](/applications/content/message-templates/concepts/whatsapp-message-templates).

Once you've designed and saved your message, you're ready to pull everything together into a single campaign!

### Step five: Create and send your campaign!

<figure><img src="/files/jaiACu37ChLWrkthMSUm" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Don't forget to subscribe to a plan before sending your campaign. If you haven't subscribed already, we'll nudge you before you send your campaign,
{% endhint %}

Sending a campaign is really simple.

All you need to do is go to **Campaigns** > **Create campaign**, and follow the steps.

You'll need to specify the list or segment that you created in [step three](#step-three-build-a-segment-or-list), and select the content you made in [step four](#step-four-design-a-message).

Jump into our detailed guides to learn how to send:

* A [WhatsApp campaign](/applications/campaigns/whatsapp-campaigns/how-to/send-a-whatsapp-campaign)
* An [email campaign](/applications/campaigns/email-campaigns/how-to/send-an-email-campaign)
* An [SMS campaign](/applications/campaigns/sms-campaigns/how-to/send-an-sms-campaign)
* A [Google RCS campaign](/applications/campaigns/push-notifications-1/how-to/send-a-google-rcs-campaign)
* A [Push notification campaign](/applications/campaigns/push-notifications/how-to/send-a-push-notification-campaign)

{% hint style="success" %}
That's it! You just learned how to send your first campaign with Bird. Sit back and watch t[he results](/applications/analytics/campaign-reports) roll in.
{% endhint %}


# Limitations & Supported Channels

### Overview

Understanding the limits and rate limits in Bird Campaigns helps you plan and execute successful marketing campaigns. This guide covers campaign limits, sending rate limits, channel-specific restrictions, and best practices for working within these constraints.

### Rate Limits

Rate limits control how quickly messages are sent to protect deliverability and comply with channel provider requirements.

**How rate limiting works**:

* Messages are queued and sent at the allowed rate
* Bird automatically throttles sends to stay within limits
* Large campaigns may take longer to complete if they exceed rate limits

#### Channel-Specific Rate Limits

Rate limits vary by channel and are determined by both Bird's infrastructure and external channel provider restrictions.

**SMS**

**Default**: 200 messages per second

**Carrier limits**: Additional limits may apply based on destination carrier

**RCS (Rich Communication Services)**

**Default**: 80 messages per second

**Carrier limits**: Varies by carrier and region

**Considerations**:

* Higher limits available for verified brands
* Rate limits may be lower during initial brand verification period

**WhatsApp Business**

**Default**: 80 messages per second

**Tier-based limits**: WhatsApp uses a tiered messaging limit system

**Quality-based limits**: Messaging limits adjust based on message quality ratings

**Tier structure**:

* Tier 1: 1,000 unique customers per 24 hours
* Tier 2: 10,000 unique customers per 24 hours
* Tier 3: 100,000 unique customers per 24 hours
* Tier 4 (Unlimited): Unlimited unique customers per 24 hours

**Important**: Limits reset every 24 hours and are based on unique customer conversations, not total messages.

**Learn more**: WhatsApp Business Channel Documentation

**Email**

**Default**: 400 messages per second

**ISP considerations**:

* Major ISPs (Gmail, Outlook) may apply their own receiving limits
* Warm-up schedules required for new sending domains

**Push Notifications**

**Mobile push**: 400 messages per second

**Platform limits**: Additional limits may apply from Apple (APNs) and Google (FCM)

### Message Size Limits

#### Character and Content Limits

**SMS**:

* Standard: 160 characters per message segment
* Unicode/emoji: 70 characters per message segment
* Maximum segments: 10 (1,600 standard characters or 700 unicode characters)

**RCS**:

* Text: 3,072 characters
* Image size: 500 KB per image
* Video size: 1.5 MB per video
* Rich cards: Up to 10 cards per carousel

**WhatsApp**:

* Text: 1024 characters
* Media file size: 16 MB for images, 16 MB for videos, 100 MB for documents

**Email**:

* Recommended Size: 100 KB to avoid clipping and delivery issues
* Total message size: 10 MB including attachments
* Attachment size: 25 MB total across all attachments
* Subject line: 256 characters recommended (no hard limit)

**Push Notifications**:

* iOS title: 75 characters
* iOS body: 235 characters
* Android title: 50 characters
* Android body: 240 characters

### Supported Channels

Bird Campaigns supports the following messaging channels. Click each channel for detailed documentation:

#### Marketing Channels

* [**Email**](https://docs.bird.com/applications/channels/channels/supported-channels/email) - Transactional and marketing email
* [**SMS**](https://docs.bird.com/applications/channels/channels/supported-channels/sms) - Short Message Service for global text messaging
* [**WhatsApp Business**](https://docs.bird.com/applications/channels/channels/supported-channels/whatsapp) - WhatsApp Business Platform messaging
* [**Push Notifications**](https://docs.bird.com/applications/channels/channels/supported-channels/push-notifications) - Mobile push notifications
* [**Google RCS**](https://docs.bird.com/applications/channels/channels/supported-channels/google-rcs) - Rich Communication Services for Android devices


# Concepts

Explanations about key topics of campaigns.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>A/B tests</strong></td><td>Learn about testing different variations of your campaign.</td><td></td><td><a href="/pages/NF41WM8ZVnmLNEYLiNWb">/pages/NF41WM8ZVnmLNEYLiNWb</a></td></tr><tr><td><strong>Branded links</strong></td><td>Learn about creating branded short links for your campaigns.</td><td></td><td><a href="/pages/CsRU9sYWV0zEjadvjjAD">/pages/CsRU9sYWV0zEjadvjjAD</a></td></tr><tr><td><strong>Calendar view</strong></td><td>Learn how to use the calendar view to see upcoming and past campaigns.</td><td></td><td><a href="/pages/7NXm6xlX5odUPOOSfa8K">/pages/7NXm6xlX5odUPOOSfa8K</a></td></tr><tr><td><strong>Campaign tags</strong></td><td>Learn about using tags to categorize and filter your campaigns.</td><td></td><td><a href="/pages/N1tXtXQs6lbNvFAdupA6">/pages/N1tXtXQs6lbNvFAdupA6</a></td></tr><tr><td><strong>Frequency limits</strong></td><td>Learn about frequency capping for campaigns.</td><td></td><td><a href="/pages/nPrzLi1sRCum8f5x58P2">/pages/nPrzLi1sRCum8f5x58P2</a></td></tr><tr><td><strong>Scheduling</strong></td><td>Learn about scheduling campaigns to send at a future date and time.</td><td></td><td><a href="/pages/SW9lc7nVM6odd1uv2JpB">/pages/SW9lc7nVM6odd1uv2JpB</a></td></tr></tbody></table>


# New Campaign Builder

We’ve redesigned the campaign building experience to make it faster, clearer, and more intuitive. The new interface replaces the old **left-to-right step-by-step** workflow with a **single-page, top-down layout**—so you can build and review your campaign in one place without jumping between steps.

Here’s what’s new and how to make the most of it.

### What’s New?

#### From Steps to Sections

**Old Experience:** Previously, you moved through campaign setup using a horizontal stepper across the top (e.g., Channels → Recipients → Content → Review).

<figure><img src="/files/zYIKyI0daTbZgiDLhJSy" alt=""><figcaption></figcaption></figure>

**New Experience:** Now, everything is organized into collapsible **sections on a single scrollable page.**

<figure><img src="/files/iiTqxrj9Q6DObgHyIMDB" alt=""><figcaption></figcaption></figure>

### Key Sections in the New Flow

**Left Pane**

* When you click **Create campaign**, you will start by selecting your channel.

<figure><img src="/files/pq41WsP9UzTobkXxnV5R" alt=""><figcaption></figcaption></figure>

* On the left side, you will start with the **Campaign name** and then following section
  * **Recipients:** Select Send to and Don't Send to lists and segments. You can also open advanced settings to see the following options:
    * Skip frequently messaged contacts
    * Limit maximum recipients
    * Global & Percentage Holdout settings

<figure><img src="/files/q1Kx0X9OLckYmXUWGl67" alt="" width="563"><figcaption></figcaption></figure>

* **Sender:** This is where you can select your sending domain, sender name and address

<figure><img src="/files/mkDF6DK7WoQ3Z5a261l9" alt="" width="375"><figcaption></figcaption></figure>

* **Schedule: You will now be able to select the different scheduling options here:**
  * **Immediately:** This will send the campaign immediately
  * **Fixed Time:** This is the scheduling option for future date and time
  * **Gradual Send (equal hourly limit):** A fixed number every hour
  * **Gradual Send (% per interval):** A fixed percentage in selected timeframe
  * **Double rate (2x increase per interval)**
  * **Auto warm-up** for optimization of new IPs

<figure><img src="/files/oUr5S7xzJQLGU2z3yKoI" alt="" width="375"><figcaption></figcaption></figure>

* **More settings:** This section contains all the non-mandatory settings which include
  * Tags
  * Tracking
  * Locale Matching
  * Additional data
  * A/B Testing

<figure><img src="/files/PrgPh0CJWSPE1dbqlUZJ" alt="" width="375"><figcaption></figcaption></figure>

**Right Pane**

* On the right side, you can create and select content

<figure><img src="/files/69xuH7pFcNuqepn8KzLW" alt=""><figcaption></figcaption></figure>

* Once added, you can see the content details and preview here

<figure><img src="/files/kEUCcr947OIUkqZo2Ba0" alt=""><figcaption></figcaption></figure>

* While your changes are auto-saved, you could still click on **Save as draft** at the top right
* Click on **Send test** on top right after you have added all details to open the testing window

<figure><img src="/files/sgR946twPzgui30t4GQ0" alt=""><figcaption></figcaption></figure>

* Click on **Send campaign** or **Schedule campaign** to launch the campaign

***

### Why We Made This Change

* **Faster Building:** No more clicking through steps—just scroll and go.
* **Easier Editing:** Change anything at any time without navigating back.
* **Better Visibility:** See your entire campaign in one place.
* **Mobile-Friendly:** Improved responsiveness for smaller screens.

***

### Tips for Using the New Builder

* Use the **section menu** to jump between areas quickly.
* Each section auto-saves as you go—no need to click “Next or Continue.”
* No change in the current functionality has been made, this is only a user experience change


# A/B tests

Learn how to run A/B tests on your email, SMS, Push and WhatsApp campaigns.

Not sure which subject line will lead to the best click-through rate? Trying to decide the most compelling CTA copy? Need some data to back up a discussion about the best hero image?

A/B testing takes the guesswork out of sending campaigns.

## How A/B testing works

Once you've decided what you want to test, and how you'll measure the success of your campaign, you'll add your content and establish the parameters of the test.

### Winning metric

The *winning metric* is what we measure to determine the 'winning' variant. You'll select this during the [configuration stage](#step-two-configure-your-a-b-test-settings). The options available to you will depend on the channel you're using to run your test.

* **Click-through rate**: The percentage of recipients who open your message and click at least one link inside.
* **Read rate**: (WhatsApp only): The percentage of recipients who open and read your message.
* **Open rate**: (Email only): The percentage of recipients who open your message.

The 'winning' variant will be the variant with the best result for whichever metric you select.

### Test size

{% hint style="warning" %}
You must have 100 recipients in a list or audience to be able to send them an A/B tested campaign.
{% endhint %}

During the configuration stage, you'll choose what percentage of your recipients you want to test your variants on.

The minimum size for your test list is 100 recipients, but remember that the larger your test size, the more accurate your results will be.

This is especially important if you're comparing more than two variants. Eight variants tested on 10% of a 100-recipient list won't lead to very statistically significant results!

We recommend that you test your campaign variants on a minimum of **10%** of your recipients.

### Test duration

By default, the test duration is set to **two hours**. You can increase this as required.

The longer you test your variants for, the more accurate your A/B test results will be. However, it's important to remember that the length of test window will affect the time that the winning variation is sent out, and factor this in when testing your campaign.

For example, if you know your best sending time is 11 AM on Thursdays, you might decide to A/B test your campaign for 24 hours at 10 AM on Wednesday, so that the winning variant is sent at the optimal time.

### Winner fallback

Sometimes A/B tests simply aren't conclusive. This can happen for a few reasons:

* **There's not enough data for the test to be conclusive**. For example, if you selected the 'Click-through rate' metric, but nobody clicked through on any of your variants. This can happen if the test duration was too short, or the testing sample size was too small.
* **Negligible differences (less than 1%) in the results**. For example, if you selected the 'Click-through rate' metric, and your first variant achieved an 8.1% click-through rate, while your second variant achieved an 8.7% click-through rate.

During the configuration stage, you'll choose what you want to happen if your test is inconclusive:

* **Manually select the fallback winner**: This option allows you to choose which variant you'd prefer to send.
* **Send all test variations equally to remainder recipients**: This option allows us to distribute the variants from the test equally among the remaining recipients.


# FAQs

### What channels can I A/B test on?

SMS, WhatsApp, Push and Email.

### Can I run an A/B test on multiple channels?

No, you can only run an A/B test on a single channel at a time. You can't combine multiple channels within a single A/B test campaign.

### What is the minimum audience/list size for running an A/B test?

Your audience or list size must include at least 100 contacts. The minimum test size is 10%.

### How are variants split between test recipients?

Test recipients are chosen and split at random based on the selected percentage.

### What happens when an A/B test is inconclusive?

If an A/B test is inconclusive, the system will either send the fallback variant selected during the configuration stage or send both variations equally to the rest of the audience. This is based on your fallback strategy selected during A/B test creation

### How many message variations can I test in a single campaign?

You can test a maximum of 8 message variations in a single A/B test.

### Can I use Recipient local timezone for scheduling A/B Test Campaigns?

No, currently scheduling for recipient local timezone is not supported for A/B Test campaigns.

### Can I use Limit Maximum Recipients scheduling A/B Test Campaigns?

No, currently limiting maximum recipients option is not supported for A/B Test campaigns.


# Short links

Increase brand recognition by personalizing short links with your own domain.

{% hint style="warning" %}
Short links are available for SMS, WhatsApp, Push and RCS messages
{% endhint %}

By default, when you add a link to a message template, we shorten the link so that it can be used for link click tracking

Shortened links will always be a Bird domain that looks similar to this: `brdX.eu`.

For example, the link <https://docs.bird.com/applications> might be shortened to something like this: `brd1.eu/psaH7QJ`.

### Branded subdomains

Branded subdomains combine a phrase that's representative of your brand, such as 'Bert's Bookshop' with our `brdX.eu` domain. Links that use branded subdomains might look like this: `bertsbooks.brd3.eu/hufR276`.

{% hint style="info" %}
The shorter your subdomain, the more space you'll have in your message for the rest of your content.
{% endhint %}

#### Set up a branded subdomain

{% hint style="danger" %}
Make sure that the subdomain you use is representative of your brand, or your account will be banned.
{% endhint %}

* From the sidebar, click **Settings**.
* Click the **Marketing > Custom Domains > Short links**

<figure><img src="/files/owSXULYC07Oq8IEKKgBB" alt="" width="214"><figcaption></figcaption></figure>

* Under 'Branded subdomain', click **Add**.

<figure><img src="/files/KFT0USRHP1E5RdfRaglv" alt=""><figcaption></figcaption></figure>

* Enter a subdomain in the below form:

<figure><img src="/files/dcQ534gpocWZ8zgZU2yM" alt=""><figcaption></figcaption></figure>

* Check the preview, then click **Create**.

### Branded domains

Branded domains require additional configuration in your DNS records, but give you complete control over the appearance of your short links. Once set up, your domain name will replace the `brdX.eu` domain in your short links.

So, instead of looking like this: `bertsbooks.brd3.eu/hufR276`

Your short links will look like this: `bertsbooks/hufR276`

#### Set up a branded domain

{% hint style="warning" %}

* You must use your own domain.
* To set up a branded domain, you will need access to your DNS settings.
  {% endhint %}

1. Navigate to **Settings > Marketing > Custom domains > Short links**

<figure><img src="/files/LbJrjNSP3TPRWfj9otQe" alt=""><figcaption></figcaption></figure>

1. Click the **Short links** tab.
2. Under Short link > click **Add**.
3. Enter your domain, such as `bird.com`
4. Click **Create**.

<figure><img src="/files/k0G1vjpycN2omYFJhPUA" alt=""><figcaption></figcaption></figure>

1. Copy the **Validation code TXT record** and add it to your DNS settings as a TXT record.
2. Copy the **A record** and add it to your DNS settings.
3. Click **Verify and close**.

<figure><img src="/files/Yz6luKd2Vab6X73jL9Ai" alt="" width="375"><figcaption></figcaption></figure>

DNS records may take some time to propagate. Once the DNS records are verified this domain will become active. In the meantime, your branded domain will be marked as 'Pending'.

### Adding branded links to a campaign

If you've kept the link shortening ON for WhatsApp, Push or RCS message templates, any link added to campaign message template will be automatically shortened.

<figure><img src="/files/Sa10yGyjo8KDm2bUDnVf" alt="" width="375"><figcaption></figcaption></figure>

For SMS campaigns, the link shortening toggle is available in campaign itself when building SMS content.

<figure><img src="/files/9jgu8U95si9g0Kq0LnwV" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="warning" %}
Turning link shortening off will disable link click tracking
{% endhint %}


# Scheduling

Schedule campaigns across all channels to maximize engagement and reach your audience at the perfect moment.

Scheduling your campaign can significantly enhance its impact and efficiency.

## How scheduling works

Scheduling a campaign allows you to set a future date and time for when your campaign will be automatically sent out.

All campaigns can be scheduled, no matter what channel you are sending them on.

After you've created your campaign, you'll be able to schedule it to send at a future time and date.

{% hint style="info" %}
When scheduling your campaign, you must choose a date and time that's at least 10 minutes ahead of the current time.
{% endhint %}

### Modifying a scheduled campaign

You can always return to modify the scheduled time or date if needed; however, bear in mind that other elements of the campaign (such as the template and audience) can't be adjusted once a campaign has been scheduled.

You can delete scheduled campaigns before they are sent.

### Scheduling Options

You can schedule a campaign in the third step of the campaign creation workflow:

<figure><img src="/files/B43eTRkxXma8k7sNXCg5" alt=""><figcaption></figcaption></figure>

You have the following options for scheduling based on the campaign channel

1. **Immediately:** Send the campaign immediately by clicking on Send Campaign button
2. **Fixed send time:** Select a specific date and time as well as a timezone to schedule the campaign for the future

<figure><img src="/files/QgCRUMtrGKhq6vYLUElg" alt=""><figcaption></figcaption></figure>

3. **Recipient local timezone:** You can also schedule your campaigns for recipient local timezone which is based on the Timezone attribute of the contact to personalize the send time for each contact.

* Note that recipient local timezone can run for longer periods in **Ongoing status (24-48 hours)** to cover all timezones of the world.
* You will also have additional options to configure for local recipient timezone
  * **If timezone has already passed for a contact**: You can select to send them immediately, skip or send next day. By default, they will be sent immediately
  * **If timezone is unknown for a contact**: You can select to send them immediately, skip or send on workspace default timezone. By default, they will be sent using default workspace timezone.

By default, recipient local timezone option will be selected and you can change to a specific timezone if needed.

<figure><img src="/files/IzEFXMkQRxPT3rRHpSym" alt=""><figcaption></figcaption></figure>

4. **Optimal send time**

You can schedule your campaign on a specific date using send time determined by AI based on past engagement of each contact in their local recipient timezone. Learn more about it here: [Optimal send time](/applications/campaigns/campaigns/concepts/optimal-send-time-with-ai).

<figure><img src="/files/sO4wBtuCwfRP75hZZDQe" alt=""><figcaption></figcaption></figure>

5. **Gradual send (equal hourly limit)**

You can select this option to send to your selected recipients gradually with a fixed number every hour. You can define date, time, timezone and recipients per hour value.

<figure><img src="/files/hJhEXLxuWxpeBrgTBLDv" alt=""><figcaption></figcaption></figure>

6. **Gradual increase (% per interval) - only for Email**

You can select this option to send to your selected recipients gradually with a fixed percentage increase in recipients with each time interval. You can define date, time, timezone, percentage increase, time interval and starting value.

<figure><img src="/files/tdWnre9bmGqucU0NMCBO" alt=""><figcaption></figcaption></figure>

7. **Double rate (2x increase per interval) - only for Email**

You can select this option to send to your selected recipients gradually with a fixed 2x increase in recipients with each time interval. You can define date, time, timezone, time interval and starting value.

<figure><img src="/files/IBZwOY5fi5oGsMgHudma" alt=""><figcaption></figcaption></figure>

8. **Auto warm-up (optimize for new IPs) - only for Email**

You can select this option to send based on a fixed daily auto-warm up schedule , especially when sending using a new domain or IP. You can define date, time and timezone for starting.

Note that this option can take multiple days to send the campaign based on the selected audience volume.

<figure><img src="/files/dQe9hQAlXgSzdm7qXH5u" alt=""><figcaption></figcaption></figure>

The warm up strategy is followed as per the following schedule:

| Week 1     | Daily Volume |
| ---------- | ------------ |
| Day 1      | 200          |
| Day 2      | 500          |
| Day 3      | 1,000        |
| Day 4      | 2,000        |
| Day 5      | 5,000        |
| Day 6      | 10,000       |
| Day 7      | 20,000       |
| **Week 2** |              |
| Day 8      | 40,000       |
| Day 9      | 50,000       |
| Day 10     | 75,000       |
| Day 11     | 100,000      |

### Why schedule a campaign?

Here are fours key reasons why you should consider scheduling your campaigns:

* **Time Zones:** By scheduling your campaigns, you can reach your audience when they are most likely to be active and engaged, regardless of their time zone, or yours. For some channels, you also need to abide by local laws and regulations when sending marketing campaigns.
* **Calendar Events:** Aligning your campaigns with holidays or significant events can make them more relevant and engaging to your audience.
* **Consistency:** Regularly scheduled campaigns can help keep your brand top-of mind for your audience, building a routine of expectation and engagement.
* **Optimal Engagement:** Use engagement metrics to identify when your audience is most active. Scheduling your campaigns for these peak times can significantly improve their effectiveness.


# Optimal send time with AI

Determining Optimal Send Times with AI.

### Overview

Sending the right message at the right time can significantly increase engagement with your marketing campaigns. AI-powered **Send Time Optimization (STO)** takes the guesswork out of deciding when to reach your audience by analyzing behavioral patterns and predicting the best time to send messages to each individual recipient.

This guide explains how AI-based send time determination works and how to leverage it to improve your campaign performance.

#### What Is Send Time Optimization (STO)?

**Send Time Optimization** is an AI-driven feature that analyzes historical engagement data (such as opens or clicks) to predict when each recipient is most likely to engage with your content. It helps you:

* Increase open and click-through rates
* Avoid inbox fatigue
* Personalize delivery without manual effort

### How does it work

AI models use the following data signals to predict optimal send times:

| **Data Signal**     | **Description**                                       |
| ------------------- | ----------------------------------------------------- |
| Engagement history  | When a user typically opens or clicks messages        |
| Timezone            | Adjusts for local time of each recipient              |
| Channel behaviour   | Channel-specific preferences (e.g., email vs. SMS vs) |
| Reach and Frequency | How recently and how often a user engages             |

The AI learns these patterns over time and updates predictions as new data comes in. Your workspace requires at least a few thousand data points for opens/clicks to train the model.

Note that currently we predict one optimal time per platform and per timezone. It is not individual to each contact.<br>

### How to use optimal send time in campaigns

\
You can follow these steps to apply optimal send time to your campaigns

* Under the Schedule section, select Sending type as Optimal send time

<figure><img src="/files/F8fyXM1cQtbnaaQhjgcr" alt=""><figcaption></figcaption></figure>

* For the first time, you will need to enable send time optimization under your workspace settings. The settings page can also be accessed under User icon > Admin console > Marketing > AI > Send time optimisation

<figure><img src="/files/coVHmB8PbGeN7y8vSdtZ" alt=""><figcaption></figcaption></figure>

* On this page <https://app.bird.com/preferences/marketing-ai/sto> you can turn it ON for different platforms

<figure><img src="/files/Ib38ONTNo7tKt6EAOZSP" alt=""><figcaption></figcaption></figure>

* Once you select Optimal send time, you can define the following options:
  * Date on which you would like to send
  * Fallback time for recipients who do not have sufficient past engagement data (clicks or opens) to determine optimal time for them
  * Timezone is fixed to be recipient's local timezone
    * Select what you would like to do if the timezone for a recipient has already passed on the selected date
    * Select what you would like to do if timezone is missing from the recipient

<figure><img src="/files/ka0FPdQ48tVIK00FppQX" alt=""><figcaption></figcaption></figure>

### Best Practices

* **Not recommended for time-sensitive campaigns**: Optimal send time will send based on the best time for each recipient in their local timezone which may extend the campaign sending time over all timezone depending upon the recipient timezone differences (may take upto 48 hours to cover all timezones of the world). Hence, for sending any time-sensitive campaigns like announcements or limited time offers you can use fixed send time or send immediately
* **Segment Smartly**: STO works best when combined with audience segmentation for relevance.
* **Measure Results**: Compare STO campaigns with fixed-time sends to evaluate performance gains.
* **Use Fallbacks**: For users with insufficient data, AI will use global or segment-level trends.

### FAQs

**Will STO send messages at different times for each recipient?**\
Yes. Each recipient receives the message at their predicted optimal time within your defined date in their local timezone.

**Can STO work across channels?**\
We train the data individually for each channel like Email, SMS, WhatsApp as the engagement behaviours for same recipient may differ across channels

**What if a user has no prior engagement history?**\
The AI uses a fallback time that you can define

**What happens if the optimal time for a user is within the Quiet Hours?**

If the determined optimal time falls within Quiet Hours, we find the nearest edge of the Quiet Hours and schedule the message for the next allowable hour after Quiet Hours. The message is enqueued to send at the closest boundary of Quiet Hours relative to the optimal time.

<br>


# Frequency Capping

Set per-channel limits across campaigns and journeys to reduce unsubscribes and complaints.

Do you get annoyed when you receive too many messages from a brand in a short space of time?

Sending messages too frequently can result in annoyed customers, increased unsubscribes, or even customer complaints.

Use the 'Skip recently emailed profiles' setting to exclude customers that you've messages recently from a campaign send.

## Frequency Capping Settings

The frequency capping settings are for each platform and can be found as below:

* Under **Settings > Marketing** > Select the platform like Email, SMS, WhatsApp, Push Notifications
* Under each platform, you will find a **Frequency Capping** section
* By default, Frequency Capping is set as 1 message per day. You can edit it individually for each platform which will apply to all messages sent across Campaigns and Journeys from this workspace.
* Number of messages dropdown allows you to select the number of messages and Frequency dropdown allows you to select number of days. E.g. 2 messages with 7 frequency means that one contact can receive only 2 messages in 7 days period for this platform across all campaigns and journeys.

<figure><img src="/files/NQ9tZhtBFHDK6ftYHeOA" alt=""><figcaption></figcaption></figure>

## Frequency Capping in Campaigns & Journeys

### Frequency Capping in Campaigns

When creating a campaign, under **Recipients > Advanced**, you will see a toggle to Skip recently messaged contacts. By default, the toggle is switched to ON, which means that recently messaged contacts will be skipped based on the criteria set for that platform in the Frequency Capping settings.

If you want to send them the campaign anyway and do not want to skip them, click the toggle to turn it OFF.

<figure><img src="/files/lNiL8wl56e7W1RgFXLpp" alt=""><figcaption></figcaption></figure>

### Frequency Capping in Journeys

When adding a Send Message step in Journeys, under **Advanced tab**, you will see a toggle to Skip recently messaged contacts. By default, the toggle is switched to ON, which means that recently messaged contacts will be skipped based on the criteria set for that platform in the Frequency Capping settings.

If you want to send them the message anyway and do not want to skip them, click the toggle to turn it OFF. It will apply to all journey runs for that message step.

<figure><img src="/files/mWLpWQCUJisNvBqZtVhD" alt=""><figcaption></figcaption></figure>


# Tags

Use tags to categorize and filter campaigns by theme, region, or season. Add up to 10 tags per campaign to keep your workspace organized.

Tags are keywords or phrases that help you to categorize and organize your campaigns, making them easier to search and manage.

## How tags work

Using tags allows for more efficient campaign management, as you can quickly filter and find specific campaigns based on the tags they're associated with.

This can be particularly useful if you manage a large number of campaigns or when looking for campaigns targeting a specific demographic, theme, or time of year.

While you set up your campaign, you can create and add tags.

{% hint style="info" %}
You can add up to **ten** tags to each campaign. For example, you might use 'Black Friday' and 'North America' to categorize your campaign.
{% endhint %}

### Tagging best practices

To use tags effectively:

* **Be consistent**: Use a consistent naming convention for tags to maintain an organized system.
* **Limit use**: While you can add up to ten tags per campaign, it's best to use the minimum number of tags needed to accurately describe and categorize your campaign to avoid clutter.

{% hint style="info" %}

#### Example

If you have a campaign focused on a summer sale for European customers, you might tag it with "Summer Sale", "Europe", and "Sale".

This way, when you need to find all campaigns related to summer sales or specifically targeting the European market, you can search for these tags.
{% endhint %}

### Adding tags to a campaigns

* You can add tags to a campaign under More settings > Tags in the campaign builder

<figure><img src="/files/4E0lNm8eTLuJlCMQRweM" alt=""><figcaption></figcaption></figure>

* You can create tags simply by typing any new tags in the Tags dropdown. Note that you cannot have spaces in tags and can only use alphanumerics, underscore (\_) or hyphens (-).

<figure><img src="/files/PAbNSzi85MDk977q3qzk" alt=""><figcaption></figcaption></figure>

* Tags are case-sensitive. Please search your existing tags in the dropdown to check for any similar ones before creating new
* Note that tags created here are also created for Journeys and Flows.
* Tags cannot be updated once the campaign is sent.


# UTM Parameters & Link Tracking

### Overview

UTM parameters are tags added to your campaign URLs that help you track the performance of your marketing efforts in analytics tools like Google Analytics. Bird's campaign platform makes it easy to add and manage UTM parameters across all your messaging channels.

### What are UTM Parameters?

UTM (Urchin Tracking Module) parameters are snippets of text added to the end of a URL to track where traffic comes from. They help you understand which campaigns, channels, and content drive the most engagement and conversions.

#### Standard UTM Parameters

* **utm\_source**: Identifies the source of your traffic (e.g., `bird` )
* **utm\_medium**: Identifies the marketing medium (e.g., `email`, `sms` , `rcs`, `whatsapp`, `push`)
* **utm\_campaign**: Identifies the specific campaign name (e.g., `summer_sale_2024`)
* **utm\_id**: Identifies the specific campaign id (e.g., `12345`)
* **utm\_term**: Identifies paid search keywords (optional)
* **utm\_content**: Specific content tags/keywords

Sample URL: [https://yourstore.com/sale?utm\_source=bird\&utm\_medium=email\&utm\_campaign=spring\_sale](https://yourstore.com/sale?utm_source=bird\&utm_medium=rcs\&utm_campaign=spring_sale)

### Defining UTM Parameters in Bird

#### Bird's Built-in UTM Builder

Bird provides an automated and dynamic UTM parameter builder:

* Under **Settings > Marketing > Analytics > UTM tracking** , you can find your pre-defined UTM parameters settings for messages sent from Campaigns, Flows and Journeys
* Bird inserts dynamic parameters like `platform_name`, `campaign_name`, `campaign_id` based on how the message is sent.

<figure><img src="/files/1e3bvYB6w0Elkt2YLs5U" alt=""><figcaption></figcaption></figure>

You can update the above settings as needed

* To add any more standard or custom UTM parameters, click on "Add UTM parameter"
* Fill in the UTM parameter values when sending from campaign, flow or journeys

<figure><img src="/files/4mT9YIoMWAWByfqSCV5J" alt=""><figcaption></figcaption></figure>

* Bird will automatically generate and append the properly formatted URL to all the links in the messages sent from campaigns, journeys or flows as defined here

### Customizing UTM Parameters

By default, the Tracking is turned ON and UTM parameters as defined in the settings will be applied to all campaigns, flows and journey message links.

You can also choose to turn them OFF/ON for specific campaigns or journeys

* For Campaigns, under **More settings > Tracking,** you can turn off applying UTM parameters. You can also customize the UTM parameters for that campaign if needed

<figure><img src="/files/Fk6KTJBAWaG9VTx1dikc" alt=""><figcaption></figcaption></figure>

* For Journeys, in a Send a Message step > Advanced tab, you can turn off applying UTM parameters for that message in the journey

<figure><img src="/files/OGHVk2F9SjRSUvADRYWa" alt="" width="375"><figcaption></figcaption></figure>

### Link Tracking

Bird track link clicks in the following ways:

* Links clicks in Bird are tracked irrespective of UTM parameters appended or not
* Email link clicks are tracked automatically. Please ensure you have your tracking domain verified under Settings > Marketing > Email > Domains.
* Other channels like SMS, WhatsApp, Push, RCS link clicks are track when they are shortened by Bird link shortener (standard or custom). Please ensure you do not disable Bird link shortening if you want to track link clicks.
* Bird automatically shortens URLs with UTM parameters to keep your messages clean and professional while maintaining full tracking capabilities.

Learn more about [short links](https://docs.bird.com/applications/campaigns/campaigns/concepts/short-links).

#### In Bird Dashboard

* View link performance directly in Bird on the Marketing Dashboard
* You can also view link clicks in Campaign and Journey reports.
  * View metrics including:
    * Total clicks
    * Unique clicks
    * Click rate: Unique clicks / Delivered %
    * Link Activity: Total and Unique clicks per URL

#### In Google Analytics

Track the full customer journey:

1. Log into Google Analytics
2. Navigate to **Acquisition > Campaigns > All Campaigns**
3. Filter by your Bird campaign/flow/journey names to see:
   * Traffic volume from each campaign/flow/journey
   * User behavior and engagement
   * Conversion rates and revenue attribution


# Holdout Groups

### Overview

Holdout groups, also known as control groups, are groups of your contacts that are intentionally excluded from receiving campaign messages. This allows you to measure the true impact of your campaigns by comparing the behavior of recipients against those who didn't receive your messages.

Bird offers two types of holdout groups: **Global Holdouts** that apply across all campaigns and **Campaign Holdout** for specific campaign testing.

### Why Use Holdout Groups?

Holdout groups help you answer critical questions about campaign effectiveness:

* What is the incremental impact of your messaging on conversions?
* Are your campaigns driving real behavior change or just reaching customers who would have converted anyway?
* What is the true ROI of your marketing spend?
* How do different campaign strategies compare in driving actual results?

### Global Holdout Groups

Global holdout groups exclude a group of contacts (based on a list or an attribute) from **all campaigns**, allowing you to measure the overall impact of your marketing efforts.

#### When to Use Global Holdouts

Use global holdouts when you want to:

* Measure the cumulative impact of all your marketing communications
* Understand baseline customer behavior without any marketing influence
* Calculate the overall incrementality of your marketing program
* Comply with customer preferences for reduced messaging frequency

#### Setting Up a Global Holdout

* Navigate to **Settings > Marketing > Analytics > Global Holdout**

<figure><img src="/files/c334HpW6VDQbMbGAJuWl" alt=""><figcaption></figcaption></figure>

* Configure your holdout settings:
  * Select a list
  * Select a boolean (toggle) type attribute which when TRUE would make the contact part of Global Holdout group.
* Click on **Save**

<figure><img src="/files/1PUjwAtjA3mSRqbEo8mi" alt=""><figcaption></figcaption></figure>

### Campaign-Level Holdout Groups

Campaign-level holdouts exclude a percentage of recipients from a specific campaign, allowing you to test the impact of individual campaigns.

#### When to Use Campaign-Level Holdouts

Use campaign-level holdouts to:

* Test the effectiveness of a specific promotion or announcement
* Measure incremental impact of different messaging strategies
* Validate whether a campaign drives meaningful behavior change
* A/B test campaign presence vs. absence (not just message variants)

#### Setting Up a Campaign Holdout

* Create or edit your campaign in the Campaign Builder
* Navigate to the **Recipients** section > Advanced settings
* Enable **Holdout Percentage**

<figure><img src="/files/PIZA1ft6YzGvAz1AS6CC" alt=""><figcaption></figcaption></figure>

* Configure holdout settings as **Holdout percentage**: Typically 10-20% for campaign-level tests

<figure><img src="/files/0Pep8aJKOTJrACjW7hLz" alt=""><figcaption></figcaption></figure>

* **Randomization**: Bird automatically creates random assignment
* Launch your campaign

The holdout group will be excluded from this campaign only and can receive other campaigns normally.

#### Analyzing Holdout Results

Currently, Bird doesn't support a ready report for Global or Campaign Holdout analysis.

* You can view Global Holdout and Percentage Holdout metric in Campaigns Report

<figure><img src="/files/gM5fPug6uWNAo52Ep8ed" alt=""><figcaption></figcaption></figure>

* You can also view it in Campaigns list view and Export to csv

<figure><img src="/files/QmSCiY6toA8BfMWr5Q73" alt="" width="375"><figcaption></figcaption></figure>

* You can find the contacts in segmentation who were skipped due to global holdout and export from Contacts page as needed
  * **Something was done or not done** > Select event = **Skipped Message Sending** at least once in the last x days
    * where **Reason equals global-holdout or campaign-holdout**

<figure><img src="/files/rnaNtmt0RvyoxI8nGD5T" alt=""><figcaption></figcaption></figure>

You will need to export this data from Bird for offline analysis as follows:

**Calculating Incrementality:**

```
Incrementality = (Exposed Group Conversion Rate - Holdout Group Conversion Rate) / Holdout Group Conversion Rate × 100
```

**Example**: If exposed contacts convert at 8% and holdout contacts at 6%, your incrementality is 33.3%.

### Combining Global and Campaign Holdouts

You can use both holdout types simultaneously, but be aware of how they interact:

* **Global holdout**: Excludes contacts from all campaigns
* **Campaign holdout**: Excludes additional contacts from specific campaigns after global holdout exclusion
* **Total exclusion**: The sum of both holdouts reduces your reach


# Calendar view

Visualize your email marketing activity with a handy calendar view.

The calendar view allows you to see campaigns that have already been sent, and ones that are scheduled or in draft.

Check in on your campaign sending frequency and see what campaigns you have planned for the future.

See the calendar view by going to **Campaigns** > **Calendar view icon** (next to "export")

<figure><img src="/files/3ogRCYrbyeUmTmvvQpVi" alt=""><figcaption></figcaption></figure>

### View and filter

You can change the view to see campaigns by month, week, or day.

<figure><img src="/files/xMlmE1hMOE6YFzpzaGde" alt=""><figcaption></figcaption></figure>

Use the filters (located on the top left-hand side) to edit the view by campaign status, type, tag, or recipient.

<figure><img src="/files/AEq7BlPIzSeWpsB1zkkL" alt=""><figcaption></figcaption></figure>


# How-to

How-to guides for sending campaigns with Bird.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Send a WhatsApp campaign</strong></td><td>Learn how to send a marketing campaign on WhatsApp.</td><td></td><td><a href="/pages/5N3LNUvGw0kVr1RUaDaT">/pages/5N3LNUvGw0kVr1RUaDaT</a></td></tr><tr><td><strong>Send an email campaign</strong></td><td>Learn how to send a marketing campaign on email.</td><td></td><td><a href="/pages/g6FMNg2Z1dNk8lEAaSHe">/pages/g6FMNg2Z1dNk8lEAaSHe</a></td></tr><tr><td><strong>Send an SMS campaign</strong></td><td>Learn how to send a marketing campaign on SMS.</td><td></td><td><a href="/pages/Jxd73wiSogORi11k8o1J">/pages/Jxd73wiSogORi11k8o1J</a></td></tr><tr><td><strong>Schedule a campaign</strong></td><td>Learn how to schedule a campaign to send at a future time and date.</td><td></td><td><a href="/pages/fgzXvS90Ggqul7NJwfkX">/pages/fgzXvS90Ggqul7NJwfkX</a></td></tr><tr><td><strong>Run an A/B test</strong></td><td>Learn how to test variations of your campaign to see which performs best.</td><td></td><td><a href="/pages/Yid8yGtJfKpDauWRI6Rc">/pages/Yid8yGtJfKpDauWRI6Rc</a></td></tr></tbody></table>


# Build a campaign audience

You can quickly setup your first campaign to reach customers through WhatsApp, Email, SMS, or in-app messages by following these steps.

Creating the right audience is key to sending relevant, high-performing campaigns. Let’s walk through how to build an audience list of customers who were previously active but haven’t purchased in the last 180 days.

#### Step 1: Create a New Audience Segment

1. Navigate to Marketing > Audience > Lists & Segments.
2. Click Create New to start a new segment.
3. Choose between:
   * Static segments: stay fixed once created.
   * Dynamic segments: update automatically as customers meet (or no longer meet) the conditions.

For this example, we’ll create a dynamic segment.

<figure><img src="/files/jMg4C6Rgvc9SW7XLhuPL" alt=""><figcaption></figcaption></figure>

#### Step 2: Define Your Audience Rules

Give your audience a name and add an audience tag to easily identify this customer segment.

We want to identify customers who were previously active but have been inactive for the past 180 days.

* Rule 1: Customers who have purchased at least once
  * Add a condition: **If something was done or not done**
  * Placed Orders ≥ **at least once, over all time**

This ensures we’re only looking at customers who were once engaged.

Rule 2: Exclude customers who’ve purchased recently

* Add an Exclusion condition: **If something was done or not done**
  * Placed Orders = **at least once, in the last 180 days**

This filters out anyone who’s made a purchase in the last 180 days.

The segment builder will automatically show how many contacts match this criteria so you can get a sense of scale.

#### Step 3: Save Your Segment

* Give your segment a clear name like “Previously active – 180 day inactive”
* Click Save Segment


# Schedule a campaign

Learn how to schedule a campaign in Bird. Set a future date, time, and timezone for automatic sending.

### What you'll need

* A campaign that's set up, tested, and ready to go.

### Step-by-step instructions

1. In the bottom left-hand corner of the campaign builder, click **Schedule,** then click **Fixed Send Time**.

<figure><img src="/files/3kev5ZTvP64lJwo6MUxj" alt=""><figcaption></figcaption></figure>

2. Under **Date and Time**, **s**elect the date and time that you want to schedule your campaign to be sent at.\
   \
   ![](/files/tolS8gcTpDKsmrH8Rakf)
3. Under **Timezone**, select the time zone that you are using to schedule your campaign.

<figure><img src="/files/RrAzdplitg4jzZYHDntH" alt=""><figcaption></figcaption></figure>

4. Click **Schedule** in the top right-hand corner.

<figure><img src="/files/ZpIUEPbgL3n5lP92oJ0l" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Your campaign has been scheduled!
{% endhint %}

{% hint style="warning" %}
Once a campaign has been scheduled, you can't pause sending. To stop your campaign from being sent, you'll need to delete the campaign.
{% endhint %}

### FAQs

#### Can I delete a scheduled campaign?

Yes, you can delete campaigns that have been scheduled.

1. To delete a scheduled campaign, go to the campaigns overview page: **Marketing > Campaigns > Scheduled.**

<figure><img src="/files/3RLnbubQ4mQ5ol3tqWQD" alt=""><figcaption></figcaption></figure>

2. Click on the "..." icon on the right-hand side of the campaign. Click **Unschedule.**

<figure><img src="/files/ERQqYrvrLwezW5e7LCxt" alt=""><figcaption></figcaption></figure>

3. Confirm your selection in the pop-up.

<figure><img src="/files/ZMPxzyWNXurUt76gcUkU" alt=""><figcaption></figcaption></figure>

#### Can I edit a campaign once I've scheduled it?

You can only modify the date and time the campaign is scheduled for. If you want to edit campaign details like recipient list, sender name or campaign content you need to unpublish the campaign, make the edits and then reschedule.

1. Go to the campaigns overview page: **Marketing > Campaigns > Scheduled.**

<figure><img src="/files/NIgIUAzc7Qc2SyZS8qSF" alt=""><figcaption></figcaption></figure>

2. Click on the "..." icon on the right-hand side of the campaign. Click **Edit Campaign.**

<figure><img src="/files/EqP0QGmp5KT8ewlAgp9N" alt=""><figcaption></figcaption></figure>

3. Confirm you want to **unschedule and edit.**

<figure><img src="/files/aqsZQSgUq32cyWRV86VV" alt=""><figcaption></figcaption></figure>

4. Make the changes you need, then click **Schedule**. **Before rescheduling, verify your scheduled time is still in the future—if the original time has passed while you were editing, you'll need to select a new date and time.**

<figure><img src="/files/q9EowEuuSeW9iFJWJNos" alt=""><figcaption></figcaption></figure>


# Duplicate a campaign

Save time by replicating an existing campaign to create a new campaign with the same content, recipients, and settings.

{% hint style="info" %}
You can replicate both 'draft' and 'sent' campaigns.
{% endhint %}

1. Go to **Campaigns**.
2. From the **List view**, find the campaign that you want to replicate.
3. Click the three dots on the right-hand side, then click **Duplicate**.

<figure><img src="/files/GWfE8TwjenzGNmt9ByhY" alt=""><figcaption></figcaption></figure>

1. Click **Yes, duplicate the campaign**.

{% hint style="success" %}
Success! You've replicated your campaign. Next, give your new campaign a recognizable name and continue editing it.
{% endhint %}


# Run an A/B test

Follow these steps to set up and send an A/B test campaign.

### What you'll need

* An installed [Email](/applications/content/email-templates) or [WhatsApp](/applications/channels/channels/supported-channels/whatsapp), [Push](/applications/channels/channels/supported-channels/push-notifications) or [SMS](/applications/channels/channels/supported-channels/sms) channel.
* At least two (and up to a maximum of eight) message templates with different content.
* A [list](/applications/audience/lists-and-segments/concepts/lists) or [segment](/applications/audience/lists-and-segments/concepts/segments) of opted-in contacts.

### Step one: Create your A/B test campaign and add content

1. Follow the instructions to [send a campaign](/applications/campaigns/campaigns/quickstarts/send-a-campaign).
2. Once you've configured the channel you're sending from, and selected the first message template that you want to test in the 'Campaign content' section, scroll down to **"More Settings"** and expand the dropdown.

<div><figure><img src="/files/63NmSYkgKdc678j0z9fM" alt=""><figcaption></figcaption></figure> <figure><img src="/files/wmW4nrjFbNRWg1GxjoLj" alt=""><figcaption></figcaption></figure></div>

3. Switch on the toggle to **create A/B test.** This will duplicate the selected content as both 'Variation A', and 'Variation B'. (Scroll back to the top of the page to see these variants created for you, ready for editing)

<figure><img src="/files/bu7Qo6EXc1JlrAHOJjHp" alt=""><figcaption></figcaption></figure>

3. Click 'Variation B', and **click edit email**. You will be taken to the email editor where you can make edit your email template, configure the template language, and any variables. Click **save** once you're happy with your changes and you'll be returned to the campaign editor.

<figure><img src="/files/e553pMesq7THwOmstsbq" alt=""><figcaption></figcaption></figure>

3. If you want to add more variations, click the **Clone** button on one of the templates in your A/B test, then repeat the process of selecting and configuring the new content.

<figure><img src="/files/t3e0kiwnlz559ORVSRRs" alt=""><figcaption></figcaption></figure>

### Step two: Configure your A/B test settings

Now that you've created your A/B test campaign and added the templates that you want to test, it's time to configure the rest of your settings.

1. Under 'Winning metric', select either **Click through rate**, **Read rate** (WhatsApp only) or **Open rate** (Email only).

<figure><img src="/files/znEl4rtRGSn9n44SYOJg" alt=""><figcaption></figcaption></figure>

2. Under 'Test size', drag and drop the bar between the test versions and the 'winner' to determine the percentage of recipients who will receive a test version of the campaign.
3. Under 'Test duration', enter the number of hours you want to run your test for before the winning version is sent.

<figure><img src="/files/4Gu7aOZxtFbw8XlBA7ww" alt=""><figcaption></figcaption></figure>

4. Under 'Winner fallback', either select **Manually select the fallback winner**, then choose the variation you want to send in event of an unclear test result, or select **Send all test variations equally to remainder recipients**.

<figure><img src="/files/AsoRdsHSVFm1BuGo8Lyt" alt=""><figcaption></figcaption></figure>

### Step three: Preview and test your A/B test campaign

The final step before you can start testing your campaign on your audience is to preview your campaign content, and send test variations to yourself or your team.

1. In the Campaign builder, go to the '**Email preview"** panel on the right-hand side.
2. From the **Variation** list, select the template you want to preview and test.

<figure><img src="/files/Y6JXJfQ6zsU0w5ftzims" alt=""><figcaption></figcaption></figure>

3. To send a test email, click **Send a test email** in the top right-hand corner. Select the variant you want to receive from the dropdown. From the **Simulated contact** drop-down, select the contact you want to send a test campaign message to. If you're sending an email, pick the contact's email address. If you're sending a WhatsApp, pick the contact's number.

<figure><img src="/files/NVYpFzlfSUK43sdficPA" alt=""><figcaption></figcaption></figure>

3. Click **Send a test message**.
4. The recipient will receive a test email. Check that all the templates look correct, that any variables have been replaced, and that any media and buttons are displaying correctly, and give it a final review for spelling and grammar.

### Step four: Send your A/B test campaign

Ready to send your A/B test campaign? In the Campaign builder, go to section 3: **Schedule.** Then choose either:

* **Immediate** to immediately send your test campaign variations to a percentage of your recipients.
* **Fixed send time** to [wait until a set date and time](/applications/campaigns/campaigns/how-to/schedule-a-campaign) to send your test campaign variations to a percentage of your recipients.
* **Optimal send time** to deliver messages at the best time for each recipient.

#### Sending phases

* Once your A/B test campaign has started to send, the status will change to **In progress**.
* Once the A/B test is complete, the status will change to **Waiting** while the results are analyzed.

{% hint style="success" %}
You've just scheduled an A/B test! Time to sit back, relax, and watch the [results](/applications/analytics/campaign-reports/how-to/view-a-b-test-campaign-reports) roll in.
{% endhint %}


# WhatsApp campaigns

WhatsApp is the world's most popular messaging platform, making it an excellent tool for reaching your customers.

## Get started with WhatsApp campaigns

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Install WhatsApp</strong></td><td>Learn how to install your first WhatsApp channel so you can start sending campaigns.</td><td></td><td><a href="/pages/VyfgFiPLvW0AjWNBsDqW">/pages/VyfgFiPLvW0AjWNBsDqW</a></td></tr><tr><td><strong>Create a message template to send as a campaign</strong></td><td>Learn how to create WhatsApp templates to send as campaigns.</td><td></td><td><a href="/pages/i9tMyWtcsoAezFOmz1EF">/pages/i9tMyWtcsoAezFOmz1EF</a></td></tr><tr><td><strong>Send a WhatsApp campaign</strong></td><td>Learn how to set up and send a WhatsApp campaign.</td><td></td><td><a href="/pages/5N3LNUvGw0kVr1RUaDaT">/pages/5N3LNUvGw0kVr1RUaDaT</a></td></tr><tr><td><strong>WhatsApp campaign reports</strong></td><td>Learn how to analyze the performance of your WhatsApp campaigns.</td><td></td><td><a href="/pages/nc813XV8WyMbDmpvWpQt">/pages/nc813XV8WyMbDmpvWpQt</a></td></tr></tbody></table>

### Why use WhatsApp for marketing?

* **High conversion rates:** WhatsApp campaigns have a 2.5x higher conversion rate compared to email campaigns.
* **High open rates:** On average, WhatsApp messages achieve a 75% open rate
* **Large user base:** With 2 billion monthly active users, you can reach a vast audience.

### Get WhatsApp for marketing

{% embed url="<https://bird.com/channels/whatsapp-marketing>" %}


# How-to


# Send a WhatsApp campaign

Send engaging marketing messages to your customers on WhatsApp

In this guide, we'll show you how to set up and send your first WhatsApp marketing campaign.

### What you'll need

* An installed [WhatsApp channel instance](/applications/channels/channels/supported-channels/whatsapp).
* A [verified WhatsApp Business Account](/applications/channels/channels/supported-channels/whatsapp/concepts/accounts-and-verification-levels/meta-business-account-verification-for-whatsapp#request-whatsapp-business-verification).
* An approved [WhatsApp message template](/applications/content/message-templates/concepts/whatsapp-message-templates).
* A [list](/applications/audience/lists-and-segments/concepts/lists) or [segment](/applications/audience/lists-and-segments/concepts/segments) of customers that have opted-in to receive marketing messages on WhatsApp.

### Create your WhatsApp campaign

* From the side menu, click Marketing > **Campaigns**.
* Click **Create campaign**.

<figure><img src="/files/0PUjljgv2OCV9vDVoCYJ" alt=""><figcaption></figcaption></figure>

* Select **WhatsApp** as the channel.

<figure><img src="/files/gNxNKfhrXQSsquT7oU4F" alt=""><figcaption></figcaption></figure>

* This will open the Campaign builder page for you
* In the 'Name' field, enter a name your campaign.<br>

<figure><img src="/files/vAexB8DgaMEXot2gjRci" alt=""><figcaption></figcaption></figure>

Note that your changes will be auto-saved in this view.

### Step 1: Select your recipients

* From the **Send to** drop-down, select the [list](/applications/audience/lists-and-segments/concepts/lists) or [segment](/applications/audience/lists-and-segments/concepts/segments) you want to send your campaign to. You can select more than one list or segment. You can also create a segment directly from the dropdown.

Note: You can only select upto 5 lists or segments here<br>

* \[Optional] If you want to prevent this campaign from being sent to specific customers, use the **Don't send to** dropdown to select the lists or segments that you want to exclude.<br>

**Advanced Options**

You can expand to define any advanced options such as:

* **Skip recently messaged contacts:** Turn this ON if you want the frequency cap settings defined in your workspace to be applied. By default, this is turned ON and the frequency cap settings are 1 message in 1 day.
* **Limit maximum number of recipients:** Turn this ON and define if you want to limit recipients to be targeted to a specific number. This will randomly select recipients to be limited out of your defined lists/segments
* **Global Holdout:** This will skip any recipients of they match the global holdout criteria defined in your workspace. If no criteria is defined, no one will be skipped. This is turned ON by default but no global holdout is defined by default on the workspace hence it will not impact your sending
* **Campaign Holdout:** This will skip recipients based on a defined percentage randomly as a control group out of your campaign recipients. This is OFF by default.

<figure><img src="/files/ZkoNM6KqPAJ2r7MTnqwM" alt=""><figcaption></figcaption></figure>

### Step 2: Select your Sender

* Use the **Send from** dropdown to choose the WhatsApp account or number that you want to send your campaign from.

Note that you need to select the sender before you can select the template as templates are approved for a specific WhatsApp account.<br>

<figure><img src="/files/Q9nMIKyOK2CLpgKBY8tN" alt=""><figcaption></figcaption></figure>

### Step 3: WhatsApp Template

Use the 'Select a template' option to choose the [WhatsApp message template](/applications/content/message-templates/concepts/whatsapp-message-templates) that you want to send as your campaign. You'll be able to see a preview of your message.

<figure><img src="/files/W2tzr0acgnfuMiV9bj1e" alt=""><figcaption></figcaption></figure>

* You can either select one of the approved templates in active status for the selected channel or create a new message template. Note that if you create a new one you need to wait till it gets approved before sending the campaign.

<figure><img src="/files/b7NrqDABIhcDNJWMeyes" alt=""><figcaption></figcaption></figure>

* If there are variables in your template message, map them in the **Variable Matching** section after adding the template under the template preview

<figure><img src="/files/8L9SPIPC0wbFRsdgUfJs" alt=""><figcaption></figcaption></figure>

### Step 4: Schedule

* Under Schedule section, you can select if you want to send the campaign on a fixed time, gradually or immediately
* For a fixed time scheduling, you can select a date, time and timezone for sending
* By default, we have selected local recipient timezone for scheduling but you can select a specific timezone

<figure><img src="/files/s0IJG3jylbG9gDBKij9l" alt=""><figcaption></figcaption></figure>

#### More Settings <a href="#more-settings" id="more-settings"></a>

**Tags**

You can optionally apply one or more tags to your campaign before sending

<figure><img src="https://docs.bird.com/applications/~gitbook/image?url=https%3A%2F%2F3861485111-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FU9kiDiTGVD8kkbnKKyEn%252Fuploads%252FA1nXNkEZpowz8N5nnw4G%252FScreenshot%25202025-08-19%2520at%25204.37.51%25E2%2580%25AFPM.png%3Falt%3Dmedia%26token%3Db77aea5a-fd3c-4fca-9b02-59aac89647bf&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=b311b971&#x26;sv=2" alt=""><figcaption></figcaption></figure>

**Additional data**

This section allows you to upload a csv file of additional data for personalization such as personalized links which are specific to the campaign. You can map this to the unique identifier of the targeted contacts when uploading as a column and then define which column contains the unique identifier for matching

Once done, you can map any predefined custom variables in the content to any columns of the uploaded csv file

**Tracking**

By default we have UTM parameters automatically appended to all the links in the message so that you can track clicks on your web analytics solution.

You can edit the UTM parameters under settings and also customize if needed for this campaign

<figure><img src="https://docs.bird.com/applications/~gitbook/image?url=https%3A%2F%2F3861485111-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FU9kiDiTGVD8kkbnKKyEn%252Fuploads%252FidvvJVQOW3LNGVdAbUyd%252FScreenshot%25202025-08-19%2520at%25204.39.53%25E2%2580%25AFPM.png%3Falt%3Dmedia%26token%3D2088f71f-ea12-4536-b16e-097ddd394cf3&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=2f9a5a9f&#x26;sv=2" alt=""><figcaption></figcaption></figure>

**Locale Matching**

Locale matching is set to Automatic by default which matches the template locale with the contact locale. You can have 3 options here:

* **Automatic Matching:** This will automatically send the template locale which matches the contact locale attribute. If contact Locale attribute is not set, it will send the default locale version.
* **Strict Language:** This will automatically send the template locale which matches the contact locale attribute. If contact Locale attribute is not set, it will NOT send the message.
* **Single Language:** This will only send the selected locale version of the template to all recipients.

<figure><img src="/files/BmHpWsseiLnsMifhOy9A" alt=""><figcaption></figcaption></figure>

**Campaign A/B Test**

You can turn ON A/B test for a campaign here. Note that if you have selected maximum recipient limit or recipient local timezone, you will need to change them before enabling A/B tests.

Once enabled, you will have 2 variations added for your message automatically by cloning. You can edit content for each of these variations

<figure><img src="/files/qLJIRBAv6dJEtQFsJYF4" alt=""><figcaption></figcaption></figure>

You can define A/B test settings as follows:

* Winning metric: Select click rate or conversion rate based on what you want to optimize on
* Test size: Select the test audience pool size for each variation. Rest of the audience will be sent the winning variation
* Test duration: Select how long the campaign will be waiting to collect winning metric data for the test result after sending to the A and B test pools before determining the winner
* Winner fallback: Select your strategy in case there is not sufficient data to make a test winner decision.

<figure><img src="https://docs.bird.com/applications/~gitbook/image?url=https%3A%2F%2F3861485111-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FU9kiDiTGVD8kkbnKKyEn%252Fuploads%252FRUUY2NBx1DoaD6Zgh3Vn%252FScreenshot%25202025-08-19%2520at%25204.40.37%25E2%2580%25AFPM.png%3Falt%3Dmedia%26token%3D9fa8363e-2434-433c-9643-2ee281d0c2a9&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=2d91a644&#x26;sv=2" alt=""><figcaption></figcaption></figure>

#### Estimated Recipients and Cost <a href="#estimated-recipients-and-cost" id="estimated-recipients-and-cost"></a>

At the bottom of the page on the left side, you will see number of estimated recipients based on your targeting criteria, contact attributes and campaign settings. Similarly you will also see the estimated cost of sending WhatsApp.

<figure><img src="https://docs.bird.com/applications/~gitbook/image?url=https%3A%2F%2F3861485111-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FU9kiDiTGVD8kkbnKKyEn%252Fuploads%252F8sttQxyysEtJ64aNvi6e%252FScreenshot%25202025-08-19%2520at%25204.29.48%25E2%2580%25AFPM.png%3Falt%3Dmedia%26token%3Ddc222b48-2f50-44eb-a497-228464d03f70&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=808aabbd&#x26;sv=2" alt=""><figcaption></figcaption></figure>

#### Send a test message <a href="#send-a-test-message" id="send-a-test-message"></a>

Click on Send test option on the top right to test your message before sending.

You can send your test to a contact and their selected contact or a proof list.

<figure><img src="/files/c08SNyMYabsxUGadvQvG" alt=""><figcaption></figcaption></figure>

### Send your campaign

Click **Schedule campaign or Send campaign button** on the top right to finally confirm to schedule or send.

#### Can I send bulk messages on WhatsApp?

Yes, with Campaigns, you can send bulk messages with WhatsApp by using an approved message and sending it to a predefined audience or list.

#### Do customers need to opt-in to receive WhatsApp messages from my business?

Yes. If you want to initiate a conversation on WhatsApp (sending a campaign on WhatsApp counts as initiating a conversation,) you must use an approved message template. Customers must have shared their mobile phone number with your business, and explicitly opted-in to receive messages.

Customers can start a conversation with your business whenever they like, without having previously opted in.


# Email campaigns

Bird handles over a third of global B2B and B2C email and is trusted by top brands worldwide.

## Get started with Email campaigns

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Install Email</strong></td><td>Learn how to install your first email channel so you can start sending Email campaigns.</td><td></td><td><a href="/pages/KBfKWMMqbwgXGWplaAz7">/pages/KBfKWMMqbwgXGWplaAz7</a></td></tr><tr><td><strong>Create and send an Email campaign</strong></td><td>Learn how to create and send Email campaigns.</td><td></td><td><a href="/pages/g6FMNg2Z1dNk8lEAaSHe">/pages/g6FMNg2Z1dNk8lEAaSHe</a></td></tr><tr><td><strong>Email campaign reports</strong></td><td>Learn how to analyze the performance of your email campaigns.</td><td></td><td><a href="/pages/xZ9sRwWLfNCehx8SZlxA">/pages/xZ9sRwWLfNCehx8SZlxA</a></td></tr></tbody></table>

### Why use Email for marketing?

* **Wide reach:** Email allows you to reach a large audience, making it ideal for both broad and targeted campaigns.
* **High ROI:** Email marketing consistently delivers a high return on investment by effectively converting leads into customers.
* **Personalization:** Emails can be easily personalized, enhancing engagement and building stronger relationships with your audience.

### Get Email for marketing

{% embed url="<https://bird.com/channels/email-marketing>" %}


# Concepts


# Email warmup

Starting with new domains and IP .

### Overview

IP or Domain warming is the process of methodically adding email volume to a new IP address gradually over several days and weeks in order to establish a positive sending reputation with mailbox providers.

Mailbox providers view email from a new IP address or domain as suspicious until they establish a positive sending reputation. It takes 4-8 weeks to achieve maximum deliverability (depending on targeted volume and engagement). Warming could take longer if mailbox providers don’t perceive that the email is "wanted" by the recipient (i.e., recipient has signed up explicitly). Certain mailbox providers limit senders to thresholds - number of messages delivered per day - until they establish a reputation.

Bird recommends starting off with your best performing messages - those to highly engaged recipients. Focus warming your most engaged subscribers and then add in the older segments as you progress. Older segments should be added to the engaged segments in chunks of 15% of your existing volume as not to tip your reputation from good to bad. The goal during your the warm-up process is to send to subscribers who are least likely to complain and bounce. This would include those that have opted-in most recently and are consistent openers/clickers.

During the Warm-up phase the more consistent you are with volume, frequency, complaint and bounce levels, the faster you will establish a positive sending reputation. If you send infrequently - anything less than weekly - it will take more time to build a positive sender reputation.

### Warm up Plan

* During weeks 1-2 send to your most active subscribers - those who have opened/clicked in the past 30 days
* During weeks 3-4 you can expand to subscribers who have opened/clicked in the past 60 days
* During the first 6 weeks do NOT send to subscribers who have not opened or clicked in the past 90 days
* If warming above 10 million subscribers, consider adding another IP

Here is a detailed day by day plan for warming up Email on Bird. You can select our Auto warm-up option under Schedule section > Sending Type when sending your first campaign for this to be done automatically.

| **Day** | **Volume** |
| ------- | ---------- |
| Day 1   | 200        |
| Day 2   | 500        |
| Day 3   | 1000       |
| Day 4   | 2000       |
| Day 5   | 5000       |
| Day 6   | 10,000     |
| Day 7   | 20,000     |
| Day 8   | 40,000     |
| Day 9   | 50,000     |
| Day 10  | 75,000     |
| Day 11  | 100,000    |
| Day 12  | 150,000    |
| Day 13  | 200,000    |
| Day 14  | 250,000    |
| Day 15  | 325,000    |


# How-to


# Send an email campaign

Send engaging marketing emails to your customers.

In this guide, we'll walk you through setting up and sending your first email marketing campaign with Bird.

### What you'll need

* An installed [Email channel](/applications/channels/channels/supported-channels/email) instance.
* An [Email message template](/applications/content/email-templates).
* A [list](/applications/audience/lists-and-segments/concepts/lists) or [segment](/applications/audience/lists-and-segments/concepts/segments) or customers that have opted-in to receive marketing messages on Email.

### Step one: Set up your Email campaign

1. Navigate to your Marketing Dashboard
2. Click Campaigns, then select Create in the top-right corner
3. Choose Email as your campaign channel
4. Give your campaign a clear, memorable name.

<figure><img src="/files/pq41WsP9UzTobkXxnV5R" alt=""><figcaption></figcaption></figure>

### Step two: Select your audience

1. Choose your recipient list or segment.
2. Select one or multiple audience lists by searching and adding each one.
3. Optionally, exclude specific groups from receiving this campaign.
4. Open Advanced settings to see the following options:
   * Skip frequently messaged contacts
   * Limit maximum recipients
   * Global & Percentage Holdout settings

<figure><img src="/files/ZPDnDJLxZIXZsd3A5Aph" alt=""><figcaption></figcaption></figure>

5. Click **Save and continue**.

### Step three: Choose your Email sender

1. Use the **Send from** dropdown to choose the Email account that you want to send your campaign from.

<figure><img src="/files/8CiRQXuiUV0pezNwFUeV" alt=""><figcaption></figcaption></figure>

2. In the **Sender name** field, enter the name that you want to send your email from.

<div align="left"><figure><img src="/files/nsmLTyPfVb6t14V42li2" alt=""><figcaption></figcaption></figure></div>

3. In the **Sender email address** field, enter the email address you want to send your campaign from. The domain name is automatically filled based on the **Send from** email channel you chose.

<div align="left"><figure><img src="/files/PRL6dYltvRDoe2Ze11vm" alt=""><figcaption></figcaption></figure></div>

4. \[Optional] If you want to use a different 'Reply-to' address, uncheck the **Use this as your reply-to address** box, and enter the email address that you want to use in the new field.<br>

<div align="left"><figure><img src="/files/n8uCepJYu5Tsg0eFaVsv" alt=""><figcaption></figcaption></figure></div>

### Step four: Schedule your campaign

Choose your sending type:

* Send immediately
* Fixed time – schedule a future date and time
* Optimal send time - delivers messages at the best time for each recipient.
* Gradual send – control delivery over time
* Auto-warmup - ideal for new IPs

{% hint style="warning" %}
If scheduling:

* Select the date and time
* Adjust the timezone as needed
* Set a fallback timezone for unknown locations
* Choose a time when your audience is most likely to engage
  {% endhint %}

<figure><img src="/files/KtoAiGhbo7OeDymsmJIS" alt=""><figcaption></figcaption></figure>

### Step five: Organize and track

Navigate to **More Settings** to setup the following.

1. Add tags to categorize your campaign.

<figure><img src="/files/0f8FjRHyqFEPVqRtDkiC" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Want to add a new tag? Start typing in the tag you want to create, and then select **Create New Tag.** This tag will then be saved to your Campaign tag list, ready to use for any other Campaign.
{% endhint %}

<figure><img src="/files/XSXDLeorWhSa8nqYi41H" alt=""><figcaption></figcaption></figure>

2. Set up custom tracking parameters to override defaults:

* Use dropdown to add parameters
* Define Medium (e.g., email, social, CPC)
* Toggle Customize tracking parameters on/off

<figure><img src="/files/tigJMROiJYf0lHbwuwM6" alt=""><figcaption></figcaption></figure>

3. Click **Locale matching** to ensure recipients get the right language version.

<figure><img src="/files/PGBuj57kpY0j7GJa3uwX" alt=""><figcaption></figcaption></figure>

### Step six: Choose your content

1. Click the **Select a template** button to choose the [Email message template](/applications/content/email-templates) that you want to send as your campaign. You'll be able to see a preview of your message.

<figure><img src="/files/c2cRXWjaQ9bvsN9acfhA" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Can't see your email template? Make sure it's set to **published.** You can check this by going to **content > email templates > selecting your template.**
{% endhint %}

2. \[Optional] If your message template is localized into more than one language, choose the language that you want to send it in.
3. If there are variables in your template message, map them in the **Template variables** section.
4. Click **Continue to preview**.

### Step seven: Preview and test your campaign

1. Click Send test to preview the campaign before launch. Select **Send test** in the top right hand corner.
2. Click the **Simulated contact** dropdown and search and select for a contact that you want to send a test message to. You can choose an: **Email Address, List or Contact.**

<figure><img src="/files/OlaN7vBXK9x2uvrTOTlr" alt=""><figcaption></figcaption></figure>

3. For **Contacts**: If the test message recipient has more than one email on their profile, select the email that you want to send to.

<figure><img src="/files/QnBDCWnHlYm7Ilk4OG1n" alt=""><figcaption></figcaption></figure>

4. Click **Send a test message**.

{% hint style="success" %}
You've just sent your first Email campaign! Time to sit back, relax, and watch the results roll in.
{% endhint %}

### FAQs

#### I can't send a test message. I'm seeing an error message that says “An error occurred while trying to send the message. Please, try again.”

This might stem from an unhealthy email channel. Visit **Enable Channels** > **Email** and double-click on the channel you want to inspect. If that channel is not healthy, you will see error messages to explain the issues. Once you have addressed these issues, you can try to send your email campaign again.


# SMS campaigns

Direct, personalized outreach.

{% embed url="<https://youtu.be/xTHzld0d9AI?si=UorEVLWcu7SRC03A>" %}

## Get started with SMS campaigns

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Install SMS</strong></td><td>Learn how to install your first SMS channel so you can start sending SMS campaigns.</td><td></td><td><a href="/pages/9YsbXaSOKh2BLTFaiqEE">/pages/9YsbXaSOKh2BLTFaiqEE</a></td></tr><tr><td><strong>Send an SMS campaigns</strong></td><td>Learn how to create and send an SMS campaign.</td><td></td><td><a href="/pages/Jxd73wiSogORi11k8o1J">/pages/Jxd73wiSogORi11k8o1J</a></td></tr><tr><td><strong>Best practices for MMS campaigns</strong></td><td>Learn about media sizes and dimensions for MMS campaigns.</td><td></td><td><a href="/pages/Evax25i2RjQkXzoBxqG5">/pages/Evax25i2RjQkXzoBxqG5</a></td></tr><tr><td><strong>SMS campaign analytics</strong></td><td>Learn how to analyze the performance of your SMS campaigns.</td><td></td><td><a href="/pages/cK9phxghO4bDdoSPUlK6">/pages/cK9phxghO4bDdoSPUlK6</a></td></tr></tbody></table>

### Why use SMS for marketing?

* **High engagement:** SMS messages have higher open and click-through rates compared to email, ensuring your promotions and notifications are seen and acted upon quickly.
* **Immediate delivery:** SMS delivers messages instantly, making it ideal for time-sensitive promotions, reminders, and alerts.
* **Direct and personal:** SMS allows for direct, personalized communication with customers, fostering stronger relationships and higher engagement.

### Get SMS for marketing

{% embed url="<https://bird.com/channels/sms-marketing>" %}


# Concepts


# Best practices for MMS campaigns

Bird allows you to add images and GIFs to your text messages. Add branded images, product photos, or graphics that align with your marketing communications.

<div align="left"><figure><img src="https://lh7-us.googleusercontent.com/nIA5gkZCyL6TznP2kk4801fnxZuhN5Shzt3eabFb7HC2LT-ZT5C8gUrB86EngMH0bJc-tpq7_wEIeLm5vY_tY8Of2JdKQnYvYdC368x5YeMynQPNFj2Rja7yGwOaiaYOxTXaM9Rj7iRXDblI1bAv5Zo" alt="" width="563"><figcaption></figcaption></figure></div>

Follow these best practices for sending images and GIFs in text messages to ensure they display perfectly for your recipients.

{% hint style="info" %}
When you include an image or GIF in a text message, it automatically converts from SMS to MMS.
{% endhint %}

### Context

Several factors influence how an image or GIF appears on a recipient's phone, such as the wireless carrier, the type of phone (iOS or Android), and the phone version.

By adhering to MMS best practices, you can enhance the likelihood of your media looking great for all your recipients.

Please keep in mind the following about MMS messages:

* The position of the image in an MMS cannot be changed, and it may display differently on iOS and Android devices.
* MMS is not available for all sending number types and countries. If MMS is unavailable, the message will be sent without the media.

### Supported media for MMS messages

Bird supports the following media types for MMS messages:

* PNG
* JPEG
* GIF

### File size limits

* All images and GIFs must be under 600 KB.

{% hint style="warning" %}
If a file size exceeds 600 KB:

* The image or GIF may be [compressed](#bird-compression-methods) and distorted.
* The message may not be delivered.
  {% endhint %}

### Image and GIF ratio and orientation

{% hint style="info" %}
Always optimize your images and GIFs for mobile.
{% endhint %}

When choosing a format, vertical is generally the best option, followed by square. Vertical media looks good on most devices and is less likely to be cut off or cropped since all media adjusts based on the width of the message.

Recommended image and GIF dimensions:

* **Square**: 1:1 ratio (600 x 600px)
* **Vertical**: 9:16 ratio (1080 x1920px)
* **Landscape**: 16:9 ratio (1920 x 1080px)

{% hint style="warning" %}
If the image or GIF is too large, it may be cut off, requiring recipients to click to expand and view the full content. Your images and GIFs should not be excessively wide or tall, as phones adjust multimedia to fit the width of the text message. Ratios exceeding 9:16 (or 16:9) may appear distorted.
{% endhint %}

### Tips for using GIFs

To improve delivery speed and user experience, adhere to the recommended size and ratio for images and GIFs. Experiment with different sizes to determine what works best for your brand and maintain consistency.

* **Use short animations**: The total duration should not exceed 6 seconds. Long GIFs may not hold your subscribers' attention, and they might not watch them to the end.
* **Use less colors per pixel**.
* **Reduce your frame rate**: Frame rate should be between 2 to 4 frames per second.
* **Do not use transparency**: Within the message thread, a transparent background appears solid with a randomly selected color. As a result, recipients may not see your image as intended, and it could look blurry or like a solid-color image.
* **Simplify your message**: Use animated images of product pictures, collections, or banners that are easy to understand. If it aligns with your brand’s concept, consider incorporating memes.
* **Use high color contrast**: Ensures that the image and its background are distinct, preventing the image from appearing blurry or as if it's a single solid color.
* **Use high gradient contrast**: If using a gradient, ensure the colors are sufficiently different from each other. Otherwise, it might look like a solid-color image.

### Bird compression methods

{% hint style="info" %}
If your file size is greater than 600KB, we will try to compress the GIF or image, which may affect its quality.
{% endhint %}

We compress files that are too large. We start with the method outlined in step one, then progress to steps two and three as required:

1. Reducing frames per second (fps) to 2-3 fps, but maintain the same total duration. This makes the animation less smooth.
2. Reducing the dimensions.
3. Reducing the image quality.


# How-to


# Send an SMS campaign

## How to create and send a SMS campaign

In this guide, we'll show you how to set up and send your first SMS marketing campaign.

### What you'll need

* An installed SMS channel instance.
* A [list](/applications/audience/lists-and-segments/concepts/lists) or [segment](/applications/audience/lists-and-segments/concepts/segments) of customers that have opted-in to receive marketing messages on SMS.

### Create your SMS campaign

* From the side menu, click **Campaigns**.
* Click **Create campaign**
* Select **SMS** as your channel
* Clicking on SMS will open the Campaign builder. You can start by giving your campaign a name.

<figure><img src="/files/pq41WsP9UzTobkXxnV5R" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/AZwNoipDB0NBtoX4676k" alt=""><figcaption></figcaption></figure>

### Step 1: Recipients

* Select the lists or segments in the **Send to** dropdown to target your campaign. You can create a segment directly from here as well.
* Select the lists or segments you want to exclude in the **Don't Send to** dropdown

**Note: You can only select up to 5 lists or segments here**

#### Advanced Options

You can expand to define any advanced options such as:

* **Skip recently messaged contacts:** Turn this ON if you want the frequency cap settings defined in your workspace to be applied. By default, this is turned ON and the frequency cap settings are 1 message in 1 day.
* **Limit maximum number of recipients:** Turn this ON and define if you want to limit recipients to be targeted to a specific number. This will randomly select recipients to be limited out of your defined lists/segments
* **Global Holdout:** This will skip any recipients of they match the global holdout criteria defined in your workspace. If no criteria is defined, no one will be skipped. This is turned ON by default but no global holdout is defined by default on the workspace hence it will not impact your sending
* **Campaign Holdout:** This will skip recipients based on a defined percentage randomly as a control group out of your campaign recipients. This is OFF by default.

<figure><img src="/files/HWn3i3HI1mixRC1YsiHq" alt=""><figcaption></figcaption></figure>

### Step 2: Sender

* **Automatic sender selection:** For SMS, by default your sender phone number will be selected based on the applicable coverage for your recipient's country. You can keep this turned ON as a best practice to ensure better delivery.

<figure><img src="/files/CrBM2kn2qrzxvFx7QnwT" alt=""><figcaption></figcaption></figure>

* **Manual sender selection:** If you want to select specific phone number to send from, you can disable it and select a number manually. If your targeted recipients include countries which are not covered by this number, they will fail sending

<figure><img src="/files/2FWnZm2Xlb7lPH41LPTS" alt=""><figcaption></figcaption></figure>

### Step 3: SMS Content

* On the right side of the builder, you can directly type in your SMS content including links
* You can ask the users to use STOP keyword to opt out or use our standard opt out link which will open our standard SMS unsubscribe page.
* You can also add any image for MMS campaign by following the image specifications guidelines
* Our SMS shortener is by default enabled. This will help track any link clicks. Note that no link clicks will be tracked without link shortener turned ON
* You can preview your SMS content by switching to the Preview tab

**Note that you cannot select SMS templates here.**

<figure><img src="/files/nnzl0NzEfdgCjSeiSuCP" alt="" width="375"><figcaption></figcaption></figure>

#### Adding personalization

You can add any personalization variables by clicking on **{ }** icon and select the type of variable from dropdown. For example, you can select Contacts > First name to insert first name dynamically.

<div><figure><img src="/files/aLJdnHWCRZtMQj6ACvDc" alt=""><figcaption></figcaption></figure> <figure><img src="/files/tGmOWgFnljlDbO7ddypc" alt=""><figcaption></figcaption></figure></div>

Once the variable is added, you must define a default value for that variable.

<figure><img src="/files/Y99yXTR7ZOVpT4QZrY98" alt="" width="375"><figcaption></figcaption></figure>

### Step 4: Schedule

* Under Schedule section, you can select if you want to send the campaign on a fixed time, gradually or immediately
* For a fixed time scheduling, you can select a date, time and timezone for sending
* By default, we have selected local recipient timezone for scheduling but you can select a specific timezone

<figure><img src="/files/EuqMjLdRYdA88yGwnBy5" alt=""><figcaption></figcaption></figure>

### More Settings

#### Tags

You can optionally apply one or more tags to your campaign before sending

<figure><img src="/files/GvIuVHUtc41wjlGBGlEB" alt=""><figcaption></figcaption></figure>

#### Tracking

By default we have UTM parameters automatically appended to all the links in the message so that you can track clicks on your web analytics solution.

You can edit the UTM parameters under settings and also customize if needed for this campaign

<figure><img src="/files/smAZKe75Tbp9NfI4AIzN" alt=""><figcaption></figcaption></figure>

#### Locale Matching

Locale matching is set to Automatic. This feature is more relevant for other channels where you can add multi-language templates and not relevant for SMS.

#### Campaign A/B Test

You can turn ON A/B test for an SMS campaign here. Note that if you have selected maximum recipient limit or recipient local timezone, you will need to change them before enabling A/B tests.

Once enabled, you will have 2 variation added for your SMS message automatically by cloning. You can edit content for each of these variations

<figure><img src="/files/Z32afpNrMAKzeQGCpi2B" alt=""><figcaption></figcaption></figure>

You can define A/B test settings as follows:

* Winning metric: Select click rate or conversion rate based on what you want to optimize on
* Test size: Select the test audience pool size for each variation. Rest of the audience will be sent the winning variation
* Test duration: Select how long the campaign will be waiting to collect winning metric data for the test result after sending to the A and B test pools before determining the winner
* Winner fallback: Select your strategy in case there is not sufficient data to make a test winner decision.

<figure><img src="/files/yArNYABDRgi6Q7iZYAyx" alt="" width="375"><figcaption></figcaption></figure>

### Estimated Recipients and Cost

At the bottom of the page on the left side, you will see number of estimated recipients based on your targeting criteria, contact attributes and campaign settings. Similarly you will also see the estimated cost of sending SMS.

<figure><img src="/files/1afihvIhTT4nh7AmE1zf" alt=""><figcaption></figcaption></figure>

### Send a test message

Click on Send test option on the top right to test your SMS before sending.

<figure><img src="/files/8dYRuykPkxrVk1gGnZv8" alt=""><figcaption></figcaption></figure>

You can send your test to a phone number, contact or a proof list.

<figure><img src="/files/2DaQbWjvFdca5e7jCi5F" alt=""><figcaption></figcaption></figure>

### Send or schedule your campaign

Click **Schedule campaign or Send campaign button** on the top right to finally confirm to schedule or send.


# Push notification campaigns

Push Notifications are one of the most effective tools for reaching your mobile app users with prompt, pertinent, and customized messages.

## Get started with push notifications campaigns

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Install push notifications</strong></td><td>Learn how to install your first push notifications channel so you can start sending push notifications campaigns.</td><td></td><td><a href="https://docs.bird.com/api/client-sdks/push-notifications">https://docs.bird.com/api/client-sdks/push-notifications</a></td></tr><tr><td><strong>Send an push notifications campaign</strong></td><td>Learn how to create and send a push notifications campaign.</td><td></td><td><a href="/pages/3UQcGiuoRzETviYu4SW1">/pages/3UQcGiuoRzETviYu4SW1</a></td></tr><tr><td><strong>Best practices for push notification campaigns</strong></td><td>Learn about capabilities and personalization for push notifications campaigns.</td><td></td><td><a href="/pages/en6iPHhRNvEdlKfgINHE">/pages/en6iPHhRNvEdlKfgINHE</a></td></tr><tr><td><strong>Push notifications campaign analytics</strong></td><td>Learn how to analyze the performance of your push notification campaigns.</td><td></td><td><a href="/pages/3UQcGiuoRzETviYu4SW1">/pages/3UQcGiuoRzETviYu4SW1</a></td></tr></tbody></table>

### Why use push notifications for marketing?

* **High interaction pates:** Push notifications achieve higher interaction and click-through rates than other communication methods, ensuring your promotions and updates are promptly seen and responded to.
* **Instant communication:** Push notifications deliver immediate messages, making them perfect for promotions, reminders, and alerts.
* **Direct and personal:** Push notifications enable direct targeted interactions with users, driving engagement and strengthening user relationships.

### Get push notifications for marketing

{% embed url="<https://bird.com/marketing-cloud>" %}


# How-to


# Send a push notification campaign

Instantly engage your mobile app users with timely and relevant notifications.

## How to create and send a push notification campaign

In this guide, we'll show you how to set up and send your first push notifications marketing campaign.

### What you'll need

* [Install](https://docs.bird.com/api/client-sdks/applications) a push notifications channel within an application configuration.
* Push Notifications message template.
* [list](/applications/audience/lists-and-segments/concepts/lists) or [segment](/applications/audience/lists-and-segments/concepts/segments) of contacts that have valid device tokens registered for Push Notifications.

### Create your Push Notifications campaign

* From the main side menu, click **Campaigns**.
* Click **Create campaign**. If no push notification channel is installed yet, click **Install** - it redirects you to the [Application settings](https://docs.bird.com/api/client-sdks/applications) to create a new application connected with Push Notifications.

<figure><img src="/files/1Zwrmo7zm0bMfrWE65Ve" alt=""><figcaption></figcaption></figure>

* Once Push Notification channel is installed select **Push notification.** You can start by giving your campaign a name.

<figure><img src="/files/DMac7YnPLtU6iPTLjnOY" alt=""><figcaption></figcaption></figure>

#### Step 1: Recipients <a href="#step-1-recipients" id="step-1-recipients"></a>

* Select the lists or segments in the **Send to** dropdown to target your campaign. You can create a segment directly from here as well.
* Select the lists or segments you want to exclude in the **Don't Send to** dropdown

**Note: You can only select up to 5 lists or segments here**

**Advanced Options**

You can expand to define any advanced options such as:

* **Skip recently messaged contacts:** Turn this ON if you want the frequency cap settings defined in your workspace to be applied. By default, this is turned ON and the frequency cap settings are 1 message in 1 day.
* **Limit maximum number of recipients:** Turn this ON and define if you want to limit recipients to be targeted to a specific number. This will randomly select recipients to be limited out of your defined lists/segments
* **Global Holdout:** This will skip any recipients of they match the global holdout criteria defined in your workspace. If no criteria is defined, no one will be skipped. This is turned ON by default but no global holdout is defined by default on the workspace hence it will not impact your sending
* **Campaign Holdout:** This will skip recipients based on a defined percentage randomly as a control group out of your campaign recipients. This is OFF by default.

<figure><img src="/files/06ZFc5841fayb3Q7ZBQo" alt=""><figcaption></figcaption></figure>

#### Step 2: Sender <a href="#step-2-sender" id="step-2-sender"></a>

Select the specific app to which you want to send this push notification to. This is the app that you installed for Push Notifications under **Developer > Applications**.

<figure><img src="/files/YNHxnhsZ6a1VwrdwUOE7" alt=""><figcaption></figcaption></figure>

#### Step 3: Push Template <a href="#step-3-whatsapp-template" id="step-3-whatsapp-template"></a>

Use the **Select a template** dropdown to choose the [Push Notifications message template](/applications/content/message-templates/how-to/create-push-notifications-message-templates) that you want to send as your campaign. You'll be able to see a preview of your message.<br>

<figure><img src="/files/SkgGylCW03GRQ543cA9N" alt=""><figcaption></figcaption></figure>

* If there are variables in your template message, map them in the **Variable Matching** section after adding the template under the template preview

<figure><img src="/files/P3NvBpMjawg8gz7u0GDS" alt=""><figcaption></figcaption></figure>

#### Step 4: Schedule <a href="#step-4-schedule" id="step-4-schedule"></a>

* Under Schedule section, you can select if you want to send the campaign on a fixed time, gradually or immediately
* For a fixed time scheduling, you can select a date, time and timezone for sending
* By default, we have selected local recipient timezone for scheduling but you can select a specific timezone

<figure><img src="/files/U2U9RvKUCkX3h8h1zfNS" alt=""><figcaption></figcaption></figure>

**More Settings**

**Tags**

You can optionally apply one or more tags to your campaign before sending

<figure><img src="/files/4E0lNm8eTLuJlCMQRweM" alt=""><figcaption></figcaption></figure>

**Additional data**

This section allows you to upload a csv file of additional data for personalization such as personalized links which are specific to the campaign. You can map this to the unique identifier of the targeted contacts when uploading as a column and then define which column contains the unique identifier for matching

Once done, you can map any predefined custom variables in the SMS content to any columns of the uploaded csv file

**Tracking**

By default we have UTM parameters automatically appended to all the links in the message so that you can track clicks on your web analytics solution.

You can edit the UTM parameters under settings and also customize if needed for this campaign

<figure><img src="/files/Fk6KTJBAWaG9VTx1dikc" alt=""><figcaption></figcaption></figure>

**Locale Matching**

Locale matching is set to Automatic by default which matches the template locale with the contact locale. You can have 3 options here:

* **Automatic Matching:** This will automatically send the template locale which matches the contact locale attribute. If contact Locale attribute is not set, it will send the default locale version.
* **Strict Language:** This will automatically send the template locale which matches the contact locale attribute. If contact Locale attribute is not set, it will NOT send the message.
* **Single Language:** This will only send the selected locale version of the template to all recipients.

<figure><img src="/files/KtUXgj7YArjTBuhuX39Y" alt=""><figcaption></figcaption></figure>

**Campaign A/B Test**

You can turn ON A/B test for a campaign here. Note that if you have selected maximum recipient limit or recipient local timezone, you will need to change them before enabling A/B tests.

Once enabled, you will have 2 variations added for your message automatically by cloning. You can edit content for each of these variations

<figure><img src="/files/CjeNP2QP11tVRqLLIUiG" alt=""><figcaption></figcaption></figure>

You can define A/B test settings as follows:

* Winning metric: Select click rate or open rate based on what you want to optimize on
* Test size: Select the test audience pool size for each variation. Rest of the audience will be sent the winning variation
* Test duration: Select how long the campaign will be waiting to collect winning metric data for the test result after sending to the A and B test pools before determining the winner
* Winner fallback: Select your strategy in case there is not sufficient data to make a test winner decision.

<figure><img src="/files/n6SC2pMDlEvBugh7flks" alt=""><figcaption></figcaption></figure>

**Estimated Recipients**

At the bottom of the page on the left side, you will see number of estimated recipients based on your subscription, targeting criteria, contact attributes and campaign settings.

<figure><img src="/files/lBsBXFHZ1v6U6t3EfGcA" alt=""><figcaption></figcaption></figure>

**Send a test message**

Click on **Send test** option on the top right to test your message before sending.

You can send your test to a contact and their selected contact or a proof list. Note that the contact must have a push token to receive the push notification.

<figure><img src="/files/iQxK3CDcsnvFYYRgjRPT" alt=""><figcaption></figcaption></figure>

#### Send your campaign <a href="#send-your-campaign" id="send-your-campaign"></a>

Click **Schedule campaign or Send campaign** button on the top right to finally confirm to schedule or send.

<figure><img src="/files/JTF6xMkg6eZdve933MKC" alt=""><figcaption></figcaption></figure>


# Google RCS campaigns

Google RCS (Rich Communication Services) campaigns enable businesses to send interactive, branded messages with rich media, quick replies, and suggested actions through Android's native messaging app,

### Why use Google RCS for marketing?

Here are three key reasons to use Google RCS for marketing:

**Enhanced engagement through rich media** - RCS supports high-resolution images, videos, carousels, and interactive buttons directly in messages, creating more compelling and visually appealing campaigns than plain SMS text.

**Higher conversion rates with interactive features** - Built-in quick reply buttons, suggested actions, and one-tap responses make it easier for customers to book appointments, make purchases, or engage with your brand without leaving the messaging app.

**Verified brand identity and trust** - RCS displays your business name, logo, and verified badge in conversations, helping customers distinguish legitimate brand messages from spam and building credibility for your communications.

### Get Google RCS for marketing

{% embed url="<https://bird.com/marketing-cloud>" %}


# How-to


# Send a Google RCS campaign

Send interactive, branded messages with rich media, quick replies, and suggested actions

## How to create and send a Google RCS campaign

In this guide, we'll show you how to set up and send your first Google RCS marketing campaign.

### What you'll need

* [Install](https://docs.bird.com/applications/channels/channels/supported-channels/google-rcs) a Google RCS channel
* Google RCS message template.
* [list](/applications/audience/lists-and-segments/concepts/lists) or [segment](/applications/audience/lists-and-segments/concepts/segments) of contacts with valid phone numbers

### Create your Google RCS campaign

* From the main side menu, click **Campaigns**.
* Click **Create campaign**.
* If no Google RCS channel is installed yet, click **Install** - it redirects you to create a new [Google RCS Agent and Channel](https://docs.bird.com/applications/channels/channels/supported-channels/google-rcs/create-a-google-rcs-agent-and-install-google-rcs-as-a-channel)

<figure><img src="/files/jgSeqXuBsrI7yt3CFriY" alt=""><figcaption></figcaption></figure>

* Once Google RCS channel is installed select **Google RCS.** It opens the campaign builder to start creating your campaign. You can start by giving your campaign a name.

<figure><img src="/files/AefPNCDJHnk0Mr6DmANa" alt=""><figcaption></figcaption></figure>

#### Step 1: Recipients <a href="#step-1-recipients" id="step-1-recipients"></a>

* Select the lists or segments in the **Send to** dropdown to target your campaign. You can create a segment directly from here as well.
* Select the lists or segments you want to exclude in the **Don't Send to** dropdown

**Note: You can only select up to 5 lists or segments here**

**Advanced Options**

You can expand to define any advanced options such as:

* **Skip recently messaged contacts:** Turn this ON if you want the frequency cap settings defined in your workspace to be applied. By default, this is turned ON and the frequency cap settings are 1 message in 1 day.
* **Limit maximum number of recipients:** Turn this ON and define if you want to limit recipients to be targeted to a specific number. This will randomly select recipients to be limited out of your defined lists/segments
* **Global Holdout:** This will skip any recipients of they match the global holdout criteria defined in your workspace. If no criteria is defined, no one will be skipped. This is turned ON by default but no global holdout is defined by default on the workspace hence it will not impact your sending
* **Campaign Holdout:** This will skip recipients based on a defined percentage randomly as a control group out of your campaign recipients. This is OFF by default.

<figure><img src="/files/06ZFc5841fayb3Q7ZBQo" alt=""><figcaption></figcaption></figure>

#### Step 2: Sender <a href="#step-2-sender" id="step-2-sender"></a>

Select the specific Google RCS channel from which you want to send this campaign to. This is the channel that you installed.

<figure><img src="/files/zIVSgcSxNoGtAtVJHmVz" alt=""><figcaption></figcaption></figure>

#### Step 3: Google RCS Template <a href="#step-3-whatsapp-template" id="step-3-whatsapp-template"></a>

Use the **Select a template** dropdown to choose the [Google RCS message template](https://docs.bird.com/applications/channels/channels/supported-channels/google-rcs/create-a-google-rcs-message-template) that you want to send as your campaign. You'll be able to see a preview of your message.

If there are variables in your template message, map them in the **Variable Matching** section after adding the template under the template preview<br>

<figure><img src="/files/dxcXt6GKjYKHQV8eu0V2" alt=""><figcaption></figcaption></figure>

#### Step 4: Schedule <a href="#step-4-schedule" id="step-4-schedule"></a>

* Under Schedule section, you can select if you want to send the campaign on a fixed time, gradually or immediately
* For a fixed time scheduling, you can select a date, time and timezone for sending
* By default, we have selected local recipient timezone for scheduling but you can select a specific timezone

<figure><img src="/files/U2U9RvKUCkX3h8h1zfNS" alt=""><figcaption></figcaption></figure>

**More Settings**

**Tags**

You can optionally apply one or more tags to your campaign before sending

<figure><img src="/files/4E0lNm8eTLuJlCMQRweM" alt=""><figcaption></figcaption></figure>

**Additional data**

This section allows you to upload a csv file of additional data for personalization such as personalized links which are specific to the campaign. You can map this to the unique identifier of the targeted contacts when uploading as a column and then define which column contains the unique identifier for matching

Once done, you can map any predefined custom variables in the SMS content to any columns of the uploaded csv file

**Tracking**

By default we have UTM parameters automatically appended to all the links in the message so that you can track clicks on your web analytics solution.

You can edit the UTM parameters under settings and also customize if needed for this campaign

<figure><img src="/files/Fk6KTJBAWaG9VTx1dikc" alt=""><figcaption></figcaption></figure>

**Locale Matching**

Locale matching is set to Automatic by default which matches the template locale with the contact locale. You can have 3 options here:

* **Automatic Matching:** This will automatically send the template locale which matches the contact locale attribute. If contact Locale attribute is not set, it will send the default locale version.
* **Strict Language:** This will automatically send the template locale which matches the contact locale attribute. If contact Locale attribute is not set, it will NOT send the message.
* **Single Language:** This will only send the selected locale version of the template to all recipients.

<figure><img src="/files/KtUXgj7YArjTBuhuX39Y" alt=""><figcaption></figcaption></figure>

**Campaign A/B Test**

You can turn ON A/B test for a campaign here. Note that if you have selected maximum recipient limit or recipient local timezone, you will need to change them before enabling A/B tests.

Once enabled, you will have 2 variations added for your message automatically by cloning. You can edit content for each of these variations

<figure><img src="/files/CjeNP2QP11tVRqLLIUiG" alt=""><figcaption></figcaption></figure>

You can define A/B test settings as follows:

* Winning metric: Select click rate or conversion rate based on what you want to optimize on
* Test size: Select the test audience pool size for each variation. Rest of the audience will be sent the winning variation
* Test duration: Select how long the campaign will be waiting to collect winning metric data for the test result after sending to the A and B test pools before determining the winner
* Winner fallback: Select your strategy in case there is not sufficient data to make a test winner decision.

<figure><img src="/files/nlvXwXHfYFKRAoFaerpW" alt=""><figcaption></figcaption></figure>

**Estimated Recipients**

At the bottom of the page on the left side, you will see number of estimated recipients based on your subscription, targeting criteria, contact attributes and campaign settings.

<figure><img src="/files/lBsBXFHZ1v6U6t3EfGcA" alt=""><figcaption></figcaption></figure>

**Send a test message**

Click on **Send test** option on the top right to test your message before sending.

You can send your test to a contact and their selected contact or a proof list. Note that the contact must have a phone number to receive the Google RCS message.

<figure><img src="/files/cOu0RGctTVh0ilnhIsH0" alt=""><figcaption></figcaption></figure>

#### Send your campaign <a href="#send-your-campaign" id="send-your-campaign"></a>

Click **Schedule campaign or Send campaign** button on the top right to finally confirm to schedule or send.

<figure><img src="/files/JTF6xMkg6eZdve933MKC" alt=""><figcaption></figcaption></figure>


# Troubleshooting Campaigns and FAQs

When sending campaigns, you may face a scenario where you added your targeted lists and segment but your estimated recipients are 0 or there are sending or delivery failures. This article will address common issues and how to troubleshoot them.

## Estimated recipients showing 0 or less than expected

You may add your Send to lists and/or segments which has contacts but your estimated recipients are still showing 0 or less than expected.

<figure><img src="/files/P9NhxJRuDCsfBk1vXkFp" alt=""><figcaption></figcaption></figure>

### Why this may happen and what you can do?

**Missing valid identifier (email, phone or push token):** The contacts in your lists or segment do not have the valid identifier required for the channel selected for your campaign. For example,

* For Email campaigns, email address is missing for the contacts
* For SMS/WhatsApp/RCS campaigns, phone number is missing for the contacts
* For Push campaigns, push token is missing for the contacts

**Troubleshooting Steps:**

* Go to Contacts and apply advanced filters to match the criteria of your lists or segments
* Add condition if Properties of contact > Email address exists OR Phone number exists

<figure><img src="/files/9ghSODNWX8wf4NECMS1h" alt=""><figcaption></figcaption></figure>

* You can click on any specific contact to see the identifiers like email, phone or push token

<figure><img src="/files/MHkHOfF9onrtZ90XHcaO" alt=""><figcaption></figcaption></figure>

* If missing for some contacts, you can re-import them via csv or adjust your integration attributes mapping sync if the data is present in the source platform

**Subscription attribute not set as Subscribed:** The contacts in your lists or segment do not have the Subscription attribute required for the channel set as Subscribed. For example,

* For Email campaigns, Email Subscription needs to be set as Subscribed
* For SMS campaigns, SMS Subscription needs to be set as Subscribed
* For WhatsApp campaigns, WhatsApp Subscription needs to be set as Subscribed

and so on.

**Troubleshooting Steps:**

* Go to Contacts and apply advanced filters to match the criteria of your lists or segments
* Add condition if Properties of contact > Email Subscription is Subscribed exists OR SMS Subscription is Subscribed OR WhatsApp Subscription is Subscribed etc. based on your channel for the campaign

<figure><img src="/files/FZAe0PxX19XRpehVI15I" alt=""><figcaption></figcaption></figure>

* You can click on any specific contact to see the attributes like Email Subscription, SMS Subscription, WhatsApp Subscription and so on

<figure><img src="/files/CcMCGwg4B3EYPlGrWdvQ" alt=""><figcaption></figcaption></figure>

* If the relevant subscription attribute is missing for some contacts, you can update the attributes by re-import them via csv or adjust your integration attributes mapping sync if the data is present in the source platform.

**Contact identifier (email, phone) is suppressed:** The contacts in your lists or segment are suppressed for the channel selected for your campaign for marketing use case. For example, contact's email address is suppressed for Email marketing.

**Troubleshooting Steps:**

* Go to Contacts and apply advanced filters to match the criteria of your lists or segments
* Add condition if If contact can receive Email Marketing OR SMS Marketing etc. based on your channel for the campaign

<figure><img src="/files/SfDEQn3NwpNHtho3Xbp9" alt=""><figcaption></figcaption></figure>

* You can click on any specific contact to see if their is a suppressed status on their identifier

<figure><img src="/files/wEvQEvoFdTnq8PxhSxEc" alt=""><figcaption></figcaption></figure>

* You can also search for the email or phone number in the **Audience > Suppression lists** section
* If you want to unsuppress the contact, you can manually go to their 3 dots and unsupress them, however we do not recommend unsuppressing unless you are sure that they have wrongly been suppressed. Identifiers will get automatically suppress due to opt outs and invalid identifier

**Don't Send to option has reduced your final recipients:** The contacts in your included lists or segments under Send to have been reduced due to exclusion lists or segments you have selected under Don't Send to

**Troubleshooting Steps:**

* Go to Contacts and apply advanced filters to match the criteria of your lists or segments
* Further add conditions which match the criteria of your exclusion lists or segments to check the final count of your contacts

**Missing contact locale when using Strict locale matching:** The contacts in your included lists or segments do not have the Locales attribute set with any value and you have selected Strict Locale matching.

**Troubleshooting Steps:**

* Go to Contacts and apply advanced filters to match the criteria of your lists or segments
* Add condition if Properties of contact > Locales has any value

<figure><img src="/files/YrEdF7DtHaJF4s570tpV" alt="" width="375"><figcaption></figcaption></figure>

* You can click on any specific contact to see the value of the Locales attribute
* If missing for some contacts, you can re-import them via csv or adjust your integration attributes mapping sync if the data is present in the source platform

## Campaign messages are not sent

Your campaign has Sent status but has sent 0 or less than expected as compared to the targeted recipients

* **Re-check your estimated and targeted recipients:** If you have missed this while building the campaign, check your estimated recipients by viewing your campaign again.

<figure><img src="/files/P9NhxJRuDCsfBk1vXkFp" alt=""><figcaption></figcaption></figure>

Note that your targeted segment is dynamic it may change over a period of time, hence you can check the **Recipients** metric in Campaign report which indicates what was the target audience at the time of sending

<figure><img src="/files/kBorriuw73XhX8NEAmhP" alt="" width="322"><figcaption></figcaption></figure>

* **Limit maximum recipients:** If you have set a max recipient limit when building the campaign, it will restrict sending to that number
* **Check Failure Reasons Tab in Campaign Reports:** Go to Campaign Reports > Failure Reasons to check why your messages are skipped or failed sending

Sending Failure Reasons will prevent all or partial messages of the campaign to be not sent. These can include the following:

<table data-header-hidden><thead><tr><th width="168.421875">Type</th><th>Description</th><th>Troubleshooting</th></tr></thead><tbody><tr><td><strong>Type</strong></td><td><strong>Failure Reason</strong></td><td><strong>Troubleshooting</strong></td></tr><tr><td>Excluded lists/segments</td><td>Contacts skipped as Lists/Segments are selected to be excluded in the campaign</td><td>Try recreating a segment with all your inclusions and exclusion segments/lists to check the final recipient count</td></tr><tr><td>Frequency cap reached</td><td>Recently messaged contacts have been skipped due to frequency cap</td><td>Turn off the toggle under <strong>Recipients > Advanced</strong> to <strong>Skip recently messaged contacts</strong>. Update <a href="/pages/nPrzLi1sRCum8f5x58P2">frequency cap</a> setting if needed.</td></tr><tr><td>Not subscribed</td><td>Subscription attribute of contacts is not marked Subscribed or they have opted out</td><td>Update the <strong>Subscription attribute</strong> if you think these are incorrect. Add condition in segment <strong>Properties of contact > Email/SMS/WhatsApp Subscription is Subscribed</strong></td></tr><tr><td>Suppressed</td><td>Recipient identifier i.e.Email / Phone number is suppressed</td><td>Create a segment adding the condition <strong>If contact can received Email/SMS/WhatsApp Marketing</strong></td></tr><tr><td>Template inactive or missing</td><td>Content template is not in active or published or approved status or is missing. Note that WhatsApp templates can be paused (deactivated) by Meta mid-campaign due to low quality</td><td>Send again by duplicating and reselecting the active/published template</td></tr><tr><td>WhatsApp sending restrictions</td><td>WhatsApp may have sending restrictions on a 24 hour rolling period for your account. WhatsApp also restricts sending marketing messages to US recipients.</td><td>Check your sending limits in WhatsApp Business Manager</td></tr><tr><td>Missing personalization</td><td>Personalization variable value not found for contact</td><td>Ensure you have a default value provided for all personalization variables</td></tr><tr><td>Missing template attribute</td><td>Attribute referenced in the content template does not exist</td><td>Check any references to contact attributes and ensure they do exist under Contacts > Manage data > Contact attributes</td></tr><tr><td>Missing content block</td><td>Content block referenced in the template does not exist</td><td>Check any references to Content blocks and ensure they do exist under Content blocks</td></tr><tr><td>Scheduled time passed</td><td>Recipients skipped as schedule time already passed in their timezone for local recipient timezone sending</td><td>Always ensure for your campaigns: Under Schedule > Time passed > Send immediately</td></tr><tr><td>No timezone found</td><td>Recipients skipped as no timezone is set on the contacts for local recipient timezone sending</td><td>Check the Timezone attribute of your contacts. Add condition to segment Properties of contact > Timezone > exists</td></tr><tr><td>Global Holdout</td><td>Recipients skipped due to global holdout applied on campaign</td><td>Check global holdout toggle under Recipients > Advanced</td></tr><tr><td>Campaign Holdout</td><td>Recipients skipped due to campaign holdout applied on campaign</td><td>Check Percentage holdout toggle under Recipients > Advanced</td></tr><tr><td>Audience Generation Failed</td><td>Failed to generate the final audience for the campaign</td><td>Try to resend the campaign by duplicating</td></tr><tr><td>Missing locale matching</td><td>Locale attribute is not set on the contact for strict locale matching</td><td>Check <strong>Locales</strong> attribute on contacts. Add condition: Properties of contact > Locales > exists</td></tr><tr><td>Missing Discount code</td><td>Discount pool referenced in the content template does not exist</td><td>Ensure you have referenced a discount pool in content which exists under Discounts</td></tr><tr><td>Discount codes unavailable</td><td>Discount pool referenced in the content template does not have sufficient coupon codes</td><td>Ensure you have sufficient number of available discount codes in the discount pool used in your content</td></tr><tr><td>Admin Failure</td><td>Recipient address was failed by Bird’s default policies for spam complaints, bounce and unsubscribe</td><td>You cannot bypass these failures as they help in reputation building</td></tr><tr><td>No subscription plan</td><td>Your subscription plan is terminated or expired</td><td>Please check your billing invoice status under Admin console > Billing > Invoices</td></tr><tr><td>Insufficient wallet balance</td><td>Your wallet does not have sufficient balance to send</td><td>Top up your wallet balance for SMS and WhatsApp third party fee under Admin console > Billing > Wallets</td></tr><tr><td>Unknown</td><td>Sending failed due to an unknown error</td><td>Try sending the campaign again after some time</td></tr><tr><td>No coverage for phone number</td><td>No coverage is available for the recipient’s phone number</td><td>Go to Admin console > Connectivity > Channels > SMS > Click on a channel > Destinations to check</td></tr><tr><td>Invalid email/phone</td><td>Recipients do not have a valid email or phone number</td><td>Check email address and phone identifiers of your contacts. These hard bounces will be suppressed for future</td></tr><tr><td>Maximum Recipient limit</td><td>Recipients skipped due to maximum recipient limit is reached as set in the campaign</td><td>Check your campaign > Recipients > Advanced > MAximum Recipient Limit</td></tr><tr><td>External data source error</td><td>External data source using Datafetch in liquid code of content template returned an error or cannot be parsed</td><td>Check your External data Source by clicking on Test configuration</td></tr><tr><td>Liquid error</td><td>Liquid code used in the content template returned an error due to rendering or parsing issue</td><td>Check the liquid syntax used in your template</td></tr><tr><td>Liquid nesting too deep</td><td>Liquid code used in the content template has more levels of nesting than supported causing rendering issues</td><td>Check the liquid syntax used in your template</td></tr><tr><td>Additional data missing</td><td>If all of your contacts do not have additional data personalization defined, they may be skipped</td><td>Check your additional data csv file has rows for all your recipients</td></tr><tr><td>Exceeding Sending Limits</td><td>If you are using a test sender which has sending limits</td><td>Do not use test channels like @birdmailbox.com for sending as they have limits</td></tr></tbody></table>

## Campaign messages are sent but not delivered

This means that Bird has sent the message but it has not been successfully delivered to the recipient. This may happen due to a variety of reasons.

**Campaign Reports:**

* **Failure Reasons Tab in Campaign Reports:** Go to Campaign Reports > Failure Reasons to check why your messages have failed delivery

<figure><img src="/files/KozMe41OSbh87WolGeQG" alt=""><figcaption></figcaption></figure>

You can also check the following sections in Campaign Report

* Campaign Reports > **Recipient Activity > Bounced** for Emails
* Campaign Reports > **Recipient Activity > Failed** for SMS, WhatsApp and Push

Additionally, you can go to check the message logs for each platform

**Message Logs:** Go to Developer > Select the platform and got to Logs to check the error.

* Developer > Email > Emails Log
* Developer > SMS > Message Log
* Developer > WhatsApp > Message Log

<figure><img src="/files/tiSMvgQTDanl9bd4dMeQ" alt=""><figcaption></figcaption></figure>

For any WhatsApp related delivery error messages coming from Facebook, please refer to the details on [WhatsApp Error Documentation](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes/).

## Campaigns seems to be stuck as Ongoing

Certain campaigns may take longer period of time for sending especially when the scheduling is based on Recipient local timezone.

It may take 24-48 hours to run the campaign for all timezones of the world. However, you can easily monitor the campaign report in real-time and sometimes majority of all your messages may have already been sent while waiting for a few timezones to come.

Read more about this: [Scheduling campaign](/applications/campaigns/campaigns/concepts/scheduling).


# Journeys

Intelligent marketing automation.

### What are Journeys?

Create targeted marketing sequences that adapt to customer actions across all communication channels. Bird Journeys automatically personalizes messages based on customer interactions like opens, clicks, and purchases, ensuring relevant content reaches the right [audience](https://bird.com/en-it/) at the right time.

### Before you start

Here's what you need to know before you start:

If you’re triggering an event from your online store, make sure you install Shopify or similar as a connector.

You'll also need to have one of the following channels installed so that you can send messages to your customers:

* WhatsApp
* SMS
* Email
* Push

### Get started with journeys

Dive into these how-to articles to learn how to add steps to a journey.

<table data-view="cards"><thead><tr><th></th><th data-hidden></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Create an abandoned cart recovery journey</strong></td><td></td><td></td><td><a href="/pages/xjrbuoOEvIa3e3bLvi5T">/pages/xjrbuoOEvIa3e3bLvi5T</a></td></tr></tbody></table>

### Learn about journey steps

Discover some of the most popular journey steps, and how to use them.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Send message step</strong></td><td>Learn how to send messages with a journey.</td><td></td><td><a href="/pages/Po6HeyEs9kNhCRApKEd5">/pages/Po6HeyEs9kNhCRApKEd5</a></td></tr><tr><td><strong>Wait step</strong></td><td>Learn how to delay a journey until a specific date and time, or until a period of time has passed.</td><td></td><td><a href="/pages/dRkxGDjowmxubEPrYz7L">/pages/dRkxGDjowmxubEPrYz7L</a></td></tr><tr><td><strong>Conditional step</strong></td><td>Learn how to branch your journey with conditional steps.</td><td></td><td><a href="/pages/2pvzjAEKM8jyxx5pQdxu">/pages/2pvzjAEKM8jyxx5pQdxu</a></td></tr><tr><td><strong>Update contact</strong></td><td>Learn how to automatically update contact attributes as contacts move through a journey,</td><td></td><td><a href="/pages/NToLo6HlaLLNazNLq0pq">/pages/NToLo6HlaLLNazNLq0pq</a></td></tr><tr><td><strong>End journey</strong></td><td>Learn how to terminate branches and journeys.</td><td></td><td><a href="/pages/9fn0xAgfWAOPlMykdaMC">/pages/9fn0xAgfWAOPlMykdaMC</a></td></tr></tbody></table>


# Quickstarts

Jump into our Journey quickstart guides.

<table data-view="cards"><thead><tr><th></th><th></th><th data-type="content-ref"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Build your first Journey</strong></td><td>Create your first automated customer workflow in minutes</td><td><a href="/pages/0u2RJyFAxbWzbuHCRfUr">/pages/0u2RJyFAxbWzbuHCRfUr</a></td><td></td><td></td></tr><tr><td><strong>Build a Journey for Abandoned checkout recovery</strong></td><td>Learn how to recover abandoned carts and lost revenue.</td><td><a href="/pages/QLvwVqnx7gPYDlxNln5J">/pages/QLvwVqnx7gPYDlxNln5J</a></td><td></td><td><a href="/pages/xjrbuoOEvIa3e3bLvi5T">/pages/xjrbuoOEvIa3e3bLvi5T</a></td></tr><tr><td><strong>Build a Journey for Welcome series</strong></td><td>Convert new subscribers into loyal customers with automated welcome sequences</td><td><a href="/pages/Qslw2Cc4taay8htTwqtl">/pages/Qslw2Cc4taay8htTwqtl</a></td><td></td><td></td></tr><tr><td><strong>Build a Journey to thank customers post-purchase</strong></td><td>Strengthen customer relationships after purchase with timely follow-ups</td><td><a href="/pages/Xq1YVYQkP4KDHMIGN241">/pages/Xq1YVYQkP4KDHMIGN241</a></td><td></td><td></td></tr><tr><td><strong>Build a Journey for a purchase anniversary</strong></td><td>Celebrate customer milestones to drive repeat purchases and loyalty</td><td><a href="/pages/fbMIiQKunaE3g2ouMZSC">/pages/fbMIiQKunaE3g2ouMZSC</a></td><td></td><td></td></tr></tbody></table>


# Build your first Journey

Create your first automated customer workflow in minutes.

Learn how to start building powerful automated customer journeys using Bird's visual builder.

## What you will learn

* How to start with templates or build from scratch
* Setting up trigger events like checkout abandonment
* Adding WhatsApp messages with template variables
* Creating backup communication paths across channels
* Configuring journey end logic

### Step by step guide

Journeys are automated, personalized flows that guide your customers through the buying process and encourage them to take action. While you can choose from a variety of templates (like abandoned cart recovery), let’s walk through how to build one from scratch.

#### 1. Start from the Journeys dashboard

* Go to **Marketing** > **Journeys**.
* Click **Create journey** in the top right corner.
* Choose **Start from scratch**.

<figure><img src="/files/dy2oDE7OAJBaLcJAKult" alt=""><figcaption></figcaption></figure>

#### 2. Name your journey and add a trigger

* Give your journey a descriptive name.
* Choose a trigger event that starts the journey.
* For this example, select **Checkout Abandonment**.
* Select the relevant connector (e.g. Shopify) and choose the correct instance.
* Click **Save**.

<figure><img src="/files/vEEIUhc0yEaeXQ35VskF" alt=""><figcaption></figcaption></figure>

#### 3. Add a wait step

* Add a **Wait** action to allow some time before sending the next message.
* Set the wait time to 1 hour using the dropdown options (minutes, hours, or days).
* Click **Save**.

<figure><img src="/files/F6vs073zZSTV35nZusXB" alt=""><figcaption></figcaption></figure>

#### 4. Add a WhatsApp message step

* Add a **Send a Message** action block.

<figure><img src="/files/I7yC3HE3xSSN92VzCdp4" alt=""><figcaption></figcaption></figure>

* Select WhatsApp as the channel.
* Choose a template from your pre-approved template library.

<figure><img src="/files/ezl0enkzeAoAAI0utVHf" alt=""><figcaption></figcaption></figure>

* Fill in any template variables using Shopify data (e.g. product name or abandoned cart details).
* For default values, you can enter placeholders like “there”.

<figure><img src="/files/FR01Cx0G4ioZxMgWlV4V" alt=""><figcaption></figcaption></figure>

* Click **Save**.

#### 5. Add a condition for unopened WhatsApp messages

* Add a **Condition** block.
* Select “If an event did or didn’t happen”.
* Set the event type to WhatsApp events, then choose Opened message.
* Use the condition Does not equal 1 since the journey started.
* Click **Save**.

<figure><img src="/files/okKLfMyEPiQ9iVu83oTi" alt=""><figcaption></figcaption></figure>

#### 6. Add an email fallback message

* Under the “No” path of the condition block, add another Send Message action.
* Select Email as the channel.
* Choose a sender email address and sender name.
* Select a previously created email template, or choose from the template library.
* Customize the message as needed.
* Click **Save**.

<figure><img src="/files/3HfZVFL5nChkvRduWnEn" alt=""><figcaption></figcaption></figure>

#### 7. End the journey

* Drag in the **End Journey** action and place it at the end of your flow.
* This marks the completion of the journey and ensures it finishes cleanly.

<figure><img src="/files/SXMQNEXRjezZRPYRTY9m" alt=""><figcaption></figcaption></figure>

#### 8. Publish your journey

* Once everything looks good, click **Publish** to activate your journey.

Congrats! Your first journey is now live.


# Build a Journey for Welcome series

Convert new subscribers into loyal customers with automated welcome sequences.

Welcome new subscribers with a series of personalized, well-timed messages. In this guide, you’ll learn how to use *Journeys* to set up a complete welcome series from scratch. We’ll walk through selecting your trigger, adding and arranging *“Send Message”* and *“Wait”* steps to build your flow, and verifying that your *sign-up forms* correctly funnel new subscribers into the welcome journey.

#### Step 1: Navigate to Journeys

1. Go to **Marketing** > **Journeys**.
2. Click **Create Journey** in the top-right corner.

<figure><img src="/files/1zdzqoEzbZyTMFiv9D6s" alt=""><figcaption></figcaption></figure>

#### Step 2: Choose your journey template

1. Select the **Welcome Series journey**.
2. Choose your channel focus—for this example, we’ll use SMS.
3. Review the journey preview and ensure all necessary channels and integrations are installed.
4. Click **Use this journey** to proceed.

<figure><img src="/files/ylRlQBD8orJM92l4FEdw" alt=""><figcaption></figcaption></figure>

#### Step 3: Set the journey trigger

1. Confirm the trigger is set to “**Contact added to a list.**”
2. Choose the specific list you want to target (e.g., New Sign ups).
3. If needed, adjust entry and exit conditions to control who qualifies for this journey.
4. Leave Global hold-out off unless you're running a control group test.
5. Click **Save** to confirm your trigger setup.

<figure><img src="/files/3zMTsEesE7V8gw9YDGue" alt=""><figcaption></figcaption></figure>

#### Step 4: Add your first message

1. Select the first Action in the flow and choose SMS as the channel.
2. Choose an existing SMS message or create a new one.
3. This will be the first welcome message your new subscribers receive.

<figure><img src="/files/XDmWk6Is4O68C7Ji3PYw" alt=""><figcaption></figcaption></figure>

#### Step 5: Add a wait time

1. Drag and drop a Wait block into the journey.
2. Set the wait time to 2 days to space out your communication naturally.

<figure><img src="/files/7X8ubMbke51QHYupfGgs" alt=""><figcaption></figcaption></figure>

#### Step 6: Add a second SMS

1. Add another Action block and again choose SMS.
2. Select or create your second message to continue engaging your subscribers.

<figure><img src="/files/NO03TOPLZx5xw16qPf7q" alt=""><figcaption></figcaption></figure>

#### Step 7: Add another wait time

1. Insert a second Wait block.
2. Set this wait time to 2 days as well.

<figure><img src="/files/XeAbd3Ij7BkywKmVnp30" alt=""><figcaption></figcaption></figure>

#### Step 8: Add the final SMS message

1. Drag in one more Action block and select SMS.
2. Choose the final message to conclude your welcome series.

<figure><img src="/files/2GYvAcWmmPEAiUZBSBch" alt=""><figcaption></figcaption></figure>

#### Step 9: End the journey

1. Drag the End Journey block to the final step in your flow.
2. This ensures the journey concludes properly for each contact.

<figure><img src="/files/CeqDikNMdphEDI4eWh5W" alt=""><figcaption></figcaption></figure>

#### Step 10: Publish your journey

1. Review your entire setup to make sure everything is in place.
2. Click **Publish** in the top-right corner to make your welcome journey live.

<figure><img src="/files/c7TkgXsWinhOhgPSMlgF" alt=""><figcaption></figcaption></figure>


# Build a Journey for Abandoned checkout recovery

Turn abandoned carts into sales with targeted multi-channel messaging.

An *abandoned cart* is when a customer visits your online store, places an item or items in their virtual cart, but never completes the checkout process.

This can cost your business valuable revenue. Abandoned cart recovery strategies encourage customers to return and complete their purchases.

In this article, you'll learn how to create an abandoned cart recovery journey.

### Before you start

Here's what you need to know before you start:

* You'll need to have [Shopify](/applications/integrations/integrations/supported-integrations/shopify) installed as a connector.
* You'll also need to have one of the following channels installed, so you can send abandoned cart recovery messages to your customers:
  * [WhatsApp](/applications/channels/channels/supported-channels/whatsapp)
  * [SMS](/applications/channels/channels/supported-channels/sms)
  * [Email](/applications/channels/channels/supported-channels/email)

### Step one: Create an abandoned cart recovery message template

Start by creating an abandoned cart recovery *message template* for either WhatsApp or SMS.

This message template will be sent later, by the journey that we'll set up in [step two](#step-two-find-the-abandoned-cart-recovery-journey-template).

{% tabs %}
{% tab title="WhatsApp" %}

### 1. Go to the message template builder

1. Create a message template by clicking **Content** > **Message templates** in the sidebar.
2. From here, [create and design a WhatsApp message template from scratch](/applications/content/message-templates/concepts/whatsapp-message-templates) by clicking **Create new message project** and selecting **WhatsApp** as the platform.
3. Under 'Interaction', select **WhatsApp approved**. You can learn more about this interaction type in our [guide](/applications/content/message-templates/concepts/whatsapp-message-templates/whatsapp-approved-message-templates).
4. Under 'WhatsApp Business Account', check the box next to the account you want to link this template to.
5. Under 'Category', select **Marketing**.
6. Select your message type. We'd recommend starting with **Text** to keep it simple.
7. Name your template, then click **Get started now**.

{% hint style="warning" %}
**WhatsApp Business Accounts**

* If you have more than one WhatsApp Business Account (WABA) installed in Bird, you'll need to select one of them during the message template setup process.
* In [step six](#step-five-add-your-recovery-message-template-to-your-journey), you'll need to choose the WhatsApp number that you want to send your message from. This number must be connected to the WABA that you selected in step one.
  {% endhint %}

Here's an example of the type of abandoned cart WhatsApp message you could create:

<div align="left"><figure><img src="/files/0MB5CzEtDwJHgU3uvTYB" alt="" width="484"><figcaption></figcaption></figure></div>

### 2. Add a checkout variable

To get your customers back to their shopping cart as soon as possible, you'll need to provide them with a link.

To do this, add a variable to your WhatsApp template. You'll populate this later, when you set up your abandoned cart journey.

1. Click the **Settings** icon at the top of your screen.
2. In the panel on the right-hand side of your screen, click the **Variables** tab.
3. Click **Add new variable**.
4. In the 'Name' field, enter `checkout_url`.
5. \[Optional] Add a description for this variable.
6. In the 'Example values per locale' section, enter `https://yourstorename.myshopify.com/cart`.
7. Click **Save variable**.
8. Go back to the message editor.
9. In the main text body, type two curly brackets `{{` where you want the cart URL to appear, then select your newly created `checkout_url`.\
   Your message should look like this in the **Editor** and the **Preview**:<br>

   <div align="left"><figure><img src="/files/T9ku2MynjZO07TvlpOG4" alt="" width="542"><figcaption></figcaption></figure></div>

   <div align="left"><figure><img src="/files/HzVCxu4VCPw7kKfPtSfz" alt="" width="476"><figcaption></figcaption></figure></div>
10. Click **Publish** to set your WhatsApp message template live.

{% hint style="warning" %}
You'll need to wait for WhatsApp to approve your message template before you can use it in your abandoned cart recovery flow.
{% endhint %}
{% endtab %}

{% tab title="SMS" %}

### 1. Go to the message template builder

1. Create a message template by clicking **Content** > **Message templates** in the sidebar.
2. From here, [create and design an SMS message template from scratch](/applications/content/message-templates/how-to/create-an-sms-message-template) by clicking **Create new message project** and selecting **SMS** as the platform.
3. Select your message type. We'd recommend starting with **Text** to keep it simple.
4. Name your template, then click **Get started now**.

Here's an example of the type of abandoned cart SMS message you might create:

<div align="left"><figure><img src="/files/UhWorMurVsbtTEkK8yeh" alt="" width="477"><figcaption></figcaption></figure></div>

### 2. Add a checkout variable

To get your customers back to their shopping cart as soon as possible, you'll need to provide them with a link.

To do this, add a variable to your SMS template. You'll populate this later, when you set up your abandoned cart journey.

1. Click the **Settings** icon at the top of your screen.
2. In the panel on the right-hand side of your screen, click the **Variables** tab.
3. Click **Add new variable**.
4. In the 'Name' field, enter `checkout_url`.
5. \[Optional] Add a description for this variable.
6. In the 'Example values per locale' section, enter `https://yourstorename.myshopify.com/cart`.
7. Click **Save variable**.
8. Go back to the message editor.
9. In the main text body, type two curly brackets `{{` where you want the cart URL to appear, then select your newly created `checkout_url`.\
   Your message template should look like this in the **Editor** and when you **Preview** your message:

   <div align="left"><figure><img src="/files/Cj95sHzvcgvZeA7OYF2P" alt="" width="481"><figcaption></figcaption></figure></div>

   <div align="left"><figure><img src="/files/VPOb80awu0lnVBzGcLtQ" alt="" width="563"><figcaption></figcaption></figure></div>
10. Click **Publish** to set your SMS message template live.
    {% endtab %}
    {% endtabs %}

### Step two: Find the Abandoned cart recovery journey template

Now that you've created your recovery message, it's time to set up your *journey*. This is where the automation happens!

{% hint style="info" %}
We've set up abandoned cart recovery journey templates for WhatsApp and SMS.

Choose the correct journey template for the channel you're using.
{% endhint %}

1. In the sidebar, click **Journeys**.
2. Click **Create journey**.
3. Click the **Abandoned cart recovery** journey template that you want to use (SMS or WhatsApp).
4. Give your journey a name.
5. Click **Use Journey.**<br>

   <div align="left"><figure><img src="/files/KHbjlPpQJEt56MjnJfgy" alt=""><figcaption></figcaption></figure></div>

### Step three: Configure the 'Checkout abandoned' journey trigger

<div align="left"><figure><img src="/files/jL9eCFPq4T1eNagi7d9x" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Shopify classes a checkout as 'abandoned' if it remains incomplete for more than ten minutes after the customer has provided their email information.
{% endhint %}

The journey is automatically set up to run when a 'Checkout abandoned' event is received from your Shopify store.

If you have multiple Shopify stores installed in Bird, you may need to click the trigger and use the 'Connector instance' dropdown to select the specific store that you want to use to trigger this journey.

<div align="left"><figure><img src="/files/SwmkhLju0ELi4DseiG7B" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Want to set up abandoned cart reminders for every Shopify store you own? You'll need to set up a new journey for each of your stores.
{% endhint %}

### Step four: Decide how long to wait before sending the recovery message

<div align="left"><figure><img src="/files/oIbcogK9krZYQkCFIDMZ" alt="" width="375"><figcaption></figcaption></figure></div>

By default, the journey will wait for 2 hours after it receives the 'Checkout abandoned' before sending a recovery message to the customer.

This is a good starting point, but you can customize the wait time if you want to. You can even choose to send the reminder at a specific time of day.

<div align="left" data-full-width="false"><figure><img src="/files/UBHoCLQdg3eh0t9uOg2c" alt="" width="375"><figcaption></figcaption></figure></div>

For example, if your store sells lower-value products that don't require much of a consideration time, a shorter wait time may work for you. Likewise, if your products are higher-value, and your customers take longer to consider making a purchase, you may want to give them some more time before sending a recovery message.

#### Don't rush your customers

How many times have you placed an item in your online shopping cart, only to be distracted by the doorbell ringing? If your customers get a reminder message every time they leave their cart for longer than ten minutes, you'll risk annoying them.

#### Don't wait until they completely forget

On the flip side, you don't want to wait until your customers have completely forgotten why they even needed a new frying pan. If you wait too long, they might go to a competitor instead, and you'll miss out on valuable revenue.

### Step five: Check how unsubscribed contacts are handled

<div align="left"><figure><img src="/files/EOxtT4DbLH3nM5cfJKcZ" alt="" width="375"><figcaption></figcaption></figure></div>

The abandoned cart journey uses a *conditional* to automatically filter out contacts who have [unsubscribed from receiving marketing messages](broken://pages/xbxguFXStPNfvtASraUz) from you on the selected channel.

For example:

* If you're using the WhatsApp journey template, the journey will check that the recipients are subscribed to WhatsApp.
* If you're using the SMS journey template, the journey will check that the recipients are subscribed to SMS.

Unsubscribed contacts will automatically be removed from the journey and won't be sent your recovery message.

You don't need to change anything here, but let's have a look at how the conditions are set up:

{% tabs %}
{% tab title="WhatsApp" %}
For a WhatsApp abandoned cart journey, the condition will check:

* That the contact has a phone number
* That the contact's WhatsApp subscription status is TRUE

<div align="left"><figure><img src="/files/t4vbApK5eNE2dijoVUWC" alt="" width="375"><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="SMS" %}
For a SMS abandoned cart journey, the condition will check:

* That the contact has a phone number
* That the contact's SMS subscription status is TRUE

<div align="left"><figure><img src="/files/nqDHPmI3AppI0QTDxu08" alt="" width="375"><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}

### Step six: Add your recovery message template to your journey

<div align="left"><figure><img src="/files/nCeZnO5tBDVN2zz890BQ" alt="" width="375"><figcaption></figcaption></figure></div>

Remember the recovery message template you made in [step one](#step-one-create-an-abandoned-cart-recovery-message)? Now's the time to add it to your journey, and populate the `checkout_url`.

{% tabs %}
{% tab title="WhatsApp" %}

1. Select the 'Send a message' step.
2. Choose the WhatsApp channel you want to send your recovery message from. If you have multiple channels/channel instances installed, you might have to scroll a little to find the right one.<br>

   <div align="left"><figure><img src="/files/eY9FotVAcN59mbYv53zf" alt=""><figcaption></figcaption></figure></div>
3. From the 'Template' dropdown, select the template that you made in step 1.
4. In the 'Template variables' section, click the curly brackets (`{}`).
5. Select the Shopify event, then click **Checkout URL**.<br>

   <div align="left"><figure><img src="/files/qR7KSKacr913SRLJDNBa" alt="" width="551"><figcaption></figcaption></figure></div>

   <div align="left"><figure><img src="/files/uY2VV6t2uAwD2TA26Vti" alt="" width="563"><figcaption></figcaption></figure></div>
6. In the 'Default' field, which is used as a fallback, enter the URL of your Shopify store.<br>

   <div align="left"><figure><img src="/files/KoxPzM2NwezeuF7jZd3q" alt=""><figcaption></figcaption></figure></div>
7. Click **Save**.
   {% endtab %}

{% tab title="SMS" %}

1. Select the 'Send a message' step.
2. Choose the SMS channel you want to send your recovery message from. If you have multiple channels/channel instances installed, you might have to scroll a little to find the right one.<br>

   <div align="left"><figure><img src="/files/Ejs5v1ms2cZRain6XB9e" alt=""><figcaption></figcaption></figure></div>
3. From the 'Template' dropdown, select the template that you made in step 1.<br>

   <div align="left"><figure><img src="/files/wW1qApMg4vPkO4WRDGZ5" alt="" width="297"><figcaption></figcaption></figure></div>
4. In the 'Template variables' section, click the curly brackets (`{{}}`).
5. Select the Shopify event, then click **Checkout URL**.<br>

   <div align="left"><figure><img src="/files/qR7KSKacr913SRLJDNBa" alt="" width="551"><figcaption></figcaption></figure></div>

   <div align="left"><figure><img src="/files/uY2VV6t2uAwD2TA26Vti" alt="" width="563"><figcaption></figcaption></figure></div>
6. In the 'Default' field, which is used as a fallback, enter the URL of your Shopify store.<br>

   <div align="left"><figure><img src="/files/KoxPzM2NwezeuF7jZd3q" alt=""><figcaption></figcaption></figure></div>
7. Click **Save**.
   {% endtab %}
   {% endtabs %}

### Step seven: Publish your abandoned cart recovery journey

Ready to set everything live? Click **Publish** in the top right hand corner to set your journey live.

{% hint style="success" %}
Success! You've just published your abandoned cart recovery journey. Now, customers who abandon their Shopify carts will receive a cart recovery message, reminding them to return to their cart.
{% endhint %}


# Build a Journey for Abandoned Browse

Turn abandoned browse visitors into sales with targeted multi-channel messaging.

Browse abandonment journeys help you re-engage customers who viewed products on your website or app but left without making a purchase or adding items to their cart. By using Bird's pre-built browse abandonment template, you can quickly set up an automated journey that reminds customers about the products they viewed and encourages them to return and complete their purchase.

This guide walks you through setting up a browse abandonment journey using Bird's template feature.

### Before you start

Here's what you need to know before you start:

* You'll need to have an e-commerce platform like Shopify installed as an integration. [Learn to install integration.](https://docs.bird.com/applications/integrations/integrations/quickstarts/find-and-install-an-integration)
* You'll also need to have one of the following channels installed, so you can send abandoned browse recovery messages to your customers:
  * [WhatsApp](/applications/channels/channels/supported-channels/whatsapp)
  * [SMS](/applications/channels/channels/supported-channels/sms)
  * [Email](/applications/channels/channels/supported-channels/email)

### Step one: Create an abandoned browse template

Start by creating an abandoned browse recovery *template* for either WhatsApp, SMS or Email etc.

This message template will be sent later, by the journey that we'll set up in [step two](#step-two-find-the-abandoned-cart-recovery-journey-template).

{% tabs %}
{% tab title="WhatsApp" %}

### 1. Go to the message template builder

1. Create a message template by clicking **Content** > **Message templates** in the sidebar.
2. From here, [create and design a WhatsApp message template from scratch](/applications/content/message-templates/concepts/whatsapp-message-templates) by clicking **Create new message project** and selecting **WhatsApp** as the platform.
3. Under 'Interaction', select **WhatsApp approved**. You can learn more about this interaction type in our [guide](/applications/content/message-templates/concepts/whatsapp-message-templates/whatsapp-approved-message-templates).
4. Under 'WhatsApp Business Account', check the box next to the account you want to link this template to.
5. Under 'Category', select **Marketing**.
6. Select your message type. We'd recommend starting with **Text** to keep it simple.
7. Name your template, then click **Get started now**.

{% hint style="warning" %}
**WhatsApp Business Accounts**

* If you have more than one WhatsApp Business Account (WABA) installed in Bird, you'll need to select one of them during the message template setup process.
* In [step six](#step-five-add-your-recovery-message-template-to-your-journey), you'll need to choose the WhatsApp number that you want to send your message from. This number must be connected to the WABA that you selected in step one.
  {% endhint %}

Here's an example of the type of abandoned browse WhatsApp message you could create:

<figure><img src="/files/dSN5WJOxS60XNbjWECzB" alt="" width="375"><figcaption></figcaption></figure>

### 2. Add variables

To get your customers back to their product page as soon as possible, you'll need to provide them with a link.

To do this, add a variable to your WhatsApp template. You'll populate this later, when you set up your abandoned browse journey.

1. Click the **Settings** icon at the top of your screen.
2. In the panel on the right-hand side of your screen, click the **Variables** tab.
3. Click **Add new variable**.
4. In the 'Name' field, enter `product_url`.
5. \[Optional] Add a description for this variable.
6. In the 'Example values per locale' section, enter `https://yourstorename.myshopify.com/product`.
7. Click **Save variable**.
8. Go back to the message editor.
9. In the main text body, type two curly brackets `{{` where you want the Product URL to appear, then select your newly created `product_url`.\
   Your message should look like this in the **Editor** and the **Preview**:<br>

<figure><img src="/files/0xXxtkZpqyq2z054UfV7" alt="" width="375"><figcaption></figcaption></figure>

1. You can also add other variables like `product_name`, `product_image_url`
2. Click **Publish** to set your WhatsApp message template live.

{% hint style="warning" %}
You'll need to wait for WhatsApp to approve your message template before you can use it in your abandoned browse recovery flow.
{% endhint %}
{% endtab %}

{% tab title="SMS" %}

### 1. Go to the message template builder

1. Create a message template by clicking **Content** > **Message templates** in the sidebar.
2. From here, [create and design an SMS message template from scratch](/applications/content/message-templates/how-to/create-an-sms-message-template) by clicking **Create new message project** and selecting **SMS** as the platform.
3. Select your message type. We'd recommend starting with **Text** to keep it simple.
4. Name your template, then click **Get started now**.

Here's an example of the type of abandoned cart SMS message you might create:

<figure><img src="/files/k3e4ai91mxzRcSR6pnvE" alt="" width="375"><figcaption></figcaption></figure>

### 2. Add variables

To get your customers back to their shopping cart as soon as possible, you'll need to provide them with a link.

To do this, add a variable to your SMS template. You'll populate this later, when you set up your abandoned cart journey.

1. Click the **Settings** icon at the top of your screen.
2. In the panel on the right-hand side of your screen, click the **Variables** tab.
3. Click **Add new variable**.
4. In the 'Name' field, enter `product_url`.
5. \[Optional] Add a description for this variable.
6. In the 'Example values per locale' section, enter `https://yourstorename.myshopify.com/product`
7. Click **Save variable**.
8. Go back to the message editor.
9. In the main text body, type two curly brackets `{{` where you want the cart URL to appear, then select your newly created `product_url`.\
   Your message template should look like this in the **Editor** and when you **Preview** your message:

<figure><img src="/files/55Xve8C887TStlNB62Qv" alt=""><figcaption></figcaption></figure>

1. You can also add other variables like `product_name`, `product_image_url`
2. Click **Publish** to set your SMS message template live.
   {% endtab %}

{% tab title="Email" %}
For Abandoned Browse Email for Shopify you can use **Viewed Product** trigger which will give you the options to personalize your email with following dynamic elements:

* **Product Image:** To add dynamic product image from the browsed product, you can add an image element and in place of Image URL Source, you can type in `{{event.properties.product_image_url}}`
* **Product Link:** To add dynamic product link to the product image from the browsed product, you can add an image element and in place of Image URL Link, you can type in `{{event.properties.product_url}}`
* **Product Name:** To add dynamic product name from the browsed product, you can add a text element and type in the variable `{{event.properties.product_name}}`
* **Product Currency:** To add dynamic product price currency from the browsed product, you can add a text element and type in the variable `{{event.properties.currency}}`
* **Product Price:** To add dynamic product price value from the browsed product, you can add a text element and type in the variable `{{event.properties.price}}`
* **Product Link:** To add personalized product link which was viewed, you can add a button element and type in the variable `{{event.properties.product_url}}` in the link field

To preview how the email would like live when sent from a journey with Cart Updated trigger, you can do the following steps:

* Switch to **Preview** section in Email editor
* Toggle to **Event** under Preview info
* In the event dropdown, select **Product Viewed** to preview how the email would look based on latest event received through the integration.

<figure><img src="https://docs.bird.com/applications/~gitbook/image?url=https%3A%2F%2F3861485111-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FU9kiDiTGVD8kkbnKKyEn%252Fuploads%252Fs7lrIl8hH064CV0RhNH8%252FScreenshot%25202025-03-26%2520at%25202.03.13%25E2%2580%25AFPM.png%3Falt%3Dmedia%26token%3D55e25640-eada-40dc-951d-465e71956b22&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=682578a&#x26;sv=2" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### Step two: Find the Abandoned Browse journey template

Now that you've created your recovery message, it's time to set up your *journey*. This is where the automation happens!

{% hint style="info" %}
We've set up abandoned browse recovery journey templates for Email but you can also add other channels with Send Message step.

Choose the correct journey template for the channel you're using.
{% endhint %}

1. In the sidebar, click **Journeys**.
2. Click **Create journey**.
3. Click the **Abandoned Browse recovery** journey template that you want to use (SMS or WhatsApp).
4. Give your journey a name.
5. Click **Use Journey.**<br>

<figure><img src="/files/CYVxOrhAmapztScKhsbK" alt=""><figcaption></figcaption></figure>

### Step three: Configure the 'Product Viewed' journey trigger

<figure><img src="/files/TgTvMPrGVKAW1aQzxRiT" alt=""><figcaption></figcaption></figure>

The journey is automatically set up to run when a 'Product Viewed' event is received from your Shopify store.

If you have multiple Shopify stores installed in Bird, you may need to click the trigger and use the 'Connector instance' dropdown to select the specific store that you want to use to trigger this journey.

{% hint style="info" %}
Want to set up abandoned browse reminders for every Shopify store you own? You'll need to set up a new journey for each of your stores.
{% endhint %}

### Step four: Decide how long to wait before sending the recovery message

<div align="left"><figure><img src="/files/oIbcogK9krZYQkCFIDMZ" alt="" width="375"><figcaption></figcaption></figure></div>

By default, the journey will wait for 2 hours after it receives the 'Product Viewed' before sending a recovery message to the customer.

This is a good starting point, but you can customize the wait time if you want to. You can even choose to send the reminder at a specific time of day.

<div align="left" data-full-width="false"><figure><img src="/files/UBHoCLQdg3eh0t9uOg2c" alt="" width="375"><figcaption></figcaption></figure></div>

For example, if your store sells lower-value products that don't require much of a consideration time, a shorter wait time may work for you. Likewise, if your products are higher-value, and your customers take longer to consider making a purchase, you may want to give them some more time before sending a recovery message.

#### Don't rush your customers

How many times have you viewed a product, only to be distracted by the doorbell ringing? If your customers get a reminder message every time they leave the product page for longer than ten minutes, you'll risk annoying them.

#### Don't wait until they completely forget

On the flip side, you don't want to wait until your customers have completely forgotten why they even needed a new frying pan. If you wait too long, they might go to a competitor instead, and you'll miss out on valuable revenue.

### Step five: Add your message template to your journey

The email template is by default added to the Send Message step

<figure><img src="/files/Nym8RrLS44TMgKwU0Yap" alt=""><figcaption></figcaption></figure>

If you want to change it or add more Send Message steps with other channels, you can do so.

Remember the recovery message template you made in [step one](#step-one-create-an-abandoned-cart-recovery-message)? Now's the time to add it to your journey, and populate the `product_url`.

{% tabs %}
{% tab title="WhatsApp" %}

1. Select the 'Send a message' step.
2. Choose the WhatsApp channel you want to send your recovery message from. If you have multiple channels/channel instances installed, you might have to scroll a little to find the right one.<br>

   <div align="left"><figure><img src="/files/eY9FotVAcN59mbYv53zf" alt=""><figcaption></figcaption></figure></div>
3. From the 'Template' dropdown, select the template that you made in step 1.
4. In the 'Template variables' section, click the curly brackets (`{}`).
5. Select the Shopify event, then click **Product URL and other variables.**
6. In the 'Default' field, which is used as a fallback, enter the URL of your Shopify store.
7. Click **Save**.

<figure><img src="/files/utYFAygGCV4QGUFlvad9" alt="" width="375"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="SMS" %}

1. Select the 'Send a message' step.
2. Choose the SMS channel you want to send your recovery message from. If you have multiple channels/channel instances installed, you might have to scroll a little to find the right one.<br>

   <div align="left"><figure><img src="/files/Ejs5v1ms2cZRain6XB9e" alt=""><figcaption></figcaption></figure></div>
3. From the 'Template' dropdown, select the template that you made in step 1.<br>

   <div align="left"><figure><img src="/files/wW1qApMg4vPkO4WRDGZ5" alt="" width="297"><figcaption></figcaption></figure></div>
4. In the 'Template variables' section, click the curly brackets (`{{}}`).
5. Select the Shopify event, then click **Checkout URL**.<br>

   <div align="left"><figure><img src="/files/qR7KSKacr913SRLJDNBa" alt="" width="551"><figcaption></figcaption></figure></div>

   <div align="left"><figure><img src="/files/uY2VV6t2uAwD2TA26Vti" alt="" width="563"><figcaption></figcaption></figure></div>
6. In the 'Default' field, which is used as a fallback, enter the URL of your Shopify store.<br>

   <div align="left"><figure><img src="/files/KoxPzM2NwezeuF7jZd3q" alt=""><figcaption></figcaption></figure></div>
7. Click **Save**.
   {% endtab %}
   {% endtabs %}

### Step six: Publish your abandoned browse recovery journey

Ready to set everything live? Click **Publish** in the top right hand corner to set your journey live.

{% hint style="success" %}
Success! You've just published your abandoned browse recovery journey. Now, customers who view the product pages will receive a browse recovery message, reminding them to return to the product.
{% endhint %}


# Build a Journey to thank customers post-purchase

Strengthen customer relationships after purchase with timely follow-ups.

A post-purchase journey is a great way to thank your customers after they’ve completed an order and encourage repeat purchases with a follow-up offer.

### What you will learn

* Connect your Shopify store to trigger messages after purchase
* Set up channel conditions for SMS and WhatsApp subscribers
* Create and customize message templates for each channel
* Configure and publish your automated customer journey

### Before you start

Make sure:

* You’ve already created the SMS and WhatsApp message templates you want to send.
* Your Shopify connector is installed.
* Both WhatsApp and SMS channels are installed and ready.

### Step by step guide

#### 1. Create a new journey

* Go to **Marketing** > **Journeys** in the left navigation.
* Click **Create journey** in the top right corner.
* In the Journey gallery, select the Post-purchase Thank You template for multi-channel (SMS and WhatsApp).

<figure><img src="/files/O2xRavO3rKlaHvKO9ig1" alt=""><figcaption></figcaption></figure>

#### 2. Review requirements

* A checklist will confirm if all necessary integrations (e.g., Shopify, WhatsApp, SMS) are installed.
* If everything is set up correctly, proceed to **Use journey**.

<figure><img src="/files/iZ28056UGNZF72y2mIvL" alt=""><figcaption></figcaption></figure>

#### 3. Set up the trigger (Shopify connector)

* In the trigger step, select the event that will start the journey: choose **Order Confirmed** from the Shopify event dropdown.
* Select your connector instance (useful if you manage multiple stores).
* Click **Save**.

<div align="left"><figure><img src="/files/ej6EpeK41v4EAQHMOoS6" alt=""><figcaption></figcaption></figure></div>

#### 4. Configure the condition step

* This step checks whether the contact is subscribed to WhatsApp or SMS.
* The condition includes:
  * Verifying the contact has a phone number.
  * Confirming they’ve opted in to either WhatsApp or SMS.
* There are two branches:
  * One for WhatsApp-subscribed users.
  * One for SMS-subscribed users.
* Click **Save**.

<figure><img src="/files/R1MW4EKlBZVprW8cch2J" alt=""><figcaption></figcaption></figure>

#### 5. Add a WhatsApp message

* In the WhatsApp branch:
  * Click on the **Send a message** step.
  * Select your WhatsApp channel.
  * Choose your thank you template from the template library.
  * For example: a message thanking them for their order and offering a shipping discount on their next one.
  * Click Select Template, review it, and click **Save**.

#### 6. Add an SMS message

* In the SMS branch:
  * Click on the **Send a message** step.
  * Select your SMS channel.
  * Choose your SMS thank you message from the library (with similar content as the WhatsApp version).
  * Review, customize if needed, and click **Save**.

#### 7. End the journey

* Click the **End Journey** step at the end of both branches.
* Optionally, you can name this step (e.g., “Success”).
* Click **Save**.

<figure><img src="/files/8MPX2rbkTk1pK1rxLgzm" alt=""><figcaption></figcaption></figure>

#### 8. Publish the journey

* Click **Publish** in the top right corner.
* Enter a version name and an optional description to track this version of the journey.
* Click **Save** to confirm and go live.

<figure><img src="/files/HCqWEsgUoVEZVzGUPQkf" alt=""><figcaption></figcaption></figure>

Your post-purchase thank you journey is now live and ready to engage customers with timely messages on the right channels.


# Build a Journey for a purchase anniversary

Celebrate customer milestones to drive repeat purchases and loyalty.

Celebrate your customers’ first purchase anniversary and build loyalty with a personalized SMS and a special offer.

### What you will learn

* Set up a segment for purchase anniversaries
* Create personalized message templates
* Build an automated journey
* Add customer variables to your messages
* Launch your anniversary campaign

### Before you begin

Make sure you’ve:

* Created a segment that identifies customers on their 1-year anniversary.
* Built an SMS message template with personalization and an opt-out link.

### Step by step guide

#### Step 1: Set up your segment

1. Go to **Marketing** > **Audience** > **List and Segments**.

<div align="center"><figure><img src="/files/gbQgF0ngwcNEPwaTT996" alt=""><figcaption></figcaption></figure></div>

2. Select the segment that captures 1-year purchase anniversaries.
3. Click **Edit Segment** to review:
   * The filter is based on First Order Confirmed (set to exactly 364 and 365 days ago).
   * This ensures you capture everyone whose anniversary falls within that range.

<div align="left"><figure><img src="/files/DXEbGzITWc9qxhmWdbde" alt=""><figcaption></figcaption></figure></div>

#### Step 2: Create your anniversary message

1. Go to **Content** in the left sidebar.
2. Click **Create new message template** in the top right corner.

<figure><img src="/files/gOFmBhTbd6Hpqqjpte8j" alt=""><figcaption></figcaption></figure>

3. Under Platform, choose SMS.
4. Select Plain Text and name your template (e.g., “1-Year Anniversary SMS”).
5. Click **Start from scratch** > **Get started now**.

<figure><img src="/files/qFCoBBtSYr8w6d9NSeEs" alt=""><figcaption></figcaption></figure>

Add personalization:

1. Go to **Settings** > **Variables**.
2. Click **Add New Variable** and name it first name.

<figure><img src="/files/9FoCNjRoYOpiDLwEg3XO" alt=""><figcaption></figcaption></figure>

3. Set the default value to there.
4. Save the variable.

<figure><img src="/files/luJ5a09Gxv4rxBtNHTuD" alt="" width="375"><figcaption></figcaption></figure>

Write your message:

1. Switch to the **Editor** tab.
2. Use personalization like: `Hey {{first name}}, happy 1st anniversary with us! Enjoy 10% off with code ONEYEAR.`
3. Add your opt-out link at the end.

<figure><img src="/files/EiVotVOI7ntVnLgcDNXp" alt="" width="375"><figcaption></figcaption></figure>

4. Preview your message on the right.

<figure><img src="/files/0tfoH8Ls5YpSwsoImY0M" alt=""><figcaption></figcaption></figure>

5. When ready, click **Publish** to save the template.

<figure><img src="/files/tWYGzczZbWk31KUmxFfQ" alt=""><figcaption></figcaption></figure>

#### Step 3: Build your journey

1. Go to **Journeys** on the left nav.
2. Click **Create journey** in the top right.

<figure><img src="/files/jTn8vKlHoyIvEEqESQyW" alt=""><figcaption></figcaption></figure>

3. Choose the Happy 1st Purchase Anniversary template.
4. Click **Use Journey** to open the builder.

<figure><img src="/files/8DEu3Iu8T6qGOPljpcbM" alt=""><figcaption></figcaption></figure>

#### Step 4: Configure your journey

Set the trigger:

1. Click the first step.
2. Choose **Contact added to a list** as the trigger.
3. Select the 1-year anniversary segment.
4. Leave entry/exit conditions empty for now.

<figure><img src="/files/xEVPg8cMAlOKqYZNLTC3" alt=""><figcaption></figcaption></figure>

5. Click **Save**.

Add the message:

1. Click the **Send a Message** step.
2. Choose SMS as the channel.
3. Select your anniversary message template.
4. Scroll down to configure variables:
   * Insert the first name variable.
   * Set the default value (e.g., "there").
5. Click **Save**.

<figure><img src="/files/pDzRkwnTJCZDTXrLauIU" alt=""><figcaption></figcaption></figure>

#### Step 5: Go live

1. Click **Publish** in the top right.

<figure><img src="/files/cBG5ncITsqRcRJi7ldfq" alt=""><figcaption></figcaption></figure>

2. Give your journey a version name and optional description.
3. Click **Save** to make it live.

<figure><img src="/files/YTBiDBw4OCHl8hzVDZWF" alt=""><figcaption></figcaption></figure>

Once activated, this journey will automatically celebrate your customers' 1-year milestone with a personalized SMS and a discount code—boosting loyalty and encouraging repeat purchases.


# Concepts

Learn about key Journey concepts

<table data-view="cards"><thead><tr><th></th><th></th><th data-type="content-ref"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Journey templates</strong></td><td>Get started with pre-made, customizable journey templates.</td><td><a href="/pages/amlZICbfr0VG8lffRqde">/pages/amlZICbfr0VG8lffRqde</a></td><td></td><td><a href="/pages/43PbbufDaZ8maNrfyPL3">/pages/43PbbufDaZ8maNrfyPL3</a></td></tr><tr><td><strong>Journey runs</strong></td><td>Get granular by looking at how individual contacts move through a journey.</td><td><a href="/pages/e2ynoWBxpIAiML98O7h5">/pages/e2ynoWBxpIAiML98O7h5</a></td><td></td><td><a href="/pages/XMVfCr4JL8ewh5m3K0aa">/pages/XMVfCr4JL8ewh5m3K0aa</a></td></tr><tr><td><strong>Journey insights</strong></td><td>Spot insights, trends, and errors with an overview of journey performance.</td><td><a href="/pages/1FAcTDjJBaPeCM7SaUiT">/pages/1FAcTDjJBaPeCM7SaUiT</a></td><td></td><td><a href="/pages/PU4NXJWakiKQEN2YVKN3">/pages/PU4NXJWakiKQEN2YVKN3</a></td></tr><tr><td><strong>Journey reports</strong></td><td>Pull detailed reports on journey performance.</td><td><a href="/pages/lfwSboMPAWnKfZJZ8e6a">/pages/lfwSboMPAWnKfZJZ8e6a</a></td><td></td><td><a href="/pages/zfNrPdJEmi0CZyo7OUfW">/pages/zfNrPdJEmi0CZyo7OUfW</a></td></tr><tr><td><strong>A/B Testing</strong></td><td>Run A/B tests to discover which message drives the best results</td><td><a href="/pages/GAJ47JvcEzlwgjd236ZU">/pages/GAJ47JvcEzlwgjd236ZU</a></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>


# Journey templates

Build journeys faster with pre-made, customizable templates.

To help you get up and running with journeys faster, we've created several journey templates for popular that you can use and customize.

<figure><img src="/files/0oTREFWMhY1xZjo0POvh" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}

#### Journey template requirements

* You can only start to edit a journey template when you've met all of the template requirements listed in the template preview.
* If you haven't met the requirements yet, you won't be able to click the **Create journey** button in step 5.
* Resolve requirement issues by clicking any requirement with the **Action required** label and following the instructions.<br>

  <div align="left"><figure><img src="/files/DMyBLmLa6cOmROLoiyOA" alt=""><figcaption></figcaption></figure></div>

{% endhint %}


# Journey runs

Track the performance of your journeys.

In this article, you'll learn how to track the performance of your journeys, and identify issues and areas for improvement.

## Journey 'runs'

{% hint style="warning" %}
Journey run logs are deleted 45 days after the completion of the run.
{% endhint %}

Each time a journey is triggered, a record is created. This record is called a 'run'.

A run tracks the trigger event, the events that follow, and the data that was collected or passed along at each stage.

### Find a journey's run record

{% hint style="info" %}
**Run records**: You can only see run records for published journeys that have been triggered at least once.
{% endhint %}

1. Go to **Journeys**.
2. Find the journey you want to view, then click the three dots on the right-hand side.
3. Select **View recent runs**.

<figure><img src="/files/5mx7SnJXCigyjIL10887" alt=""><figcaption></figcaption></figure>

### Filter run record results

<figure><img src="/files/7UnJWiBSWB26foHruHaA" alt=""><figcaption></figcaption></figure>

Use the **status**, **version**, **contact**, and **invocation date** fields to filter your results as follows:

* **Status** **filter**
  * **Completed**: Runs that have been completed successfully and as expected.
  * **Error**: Runs that experiences an error and have not been completed.
  * **In progress**: Runs that have not been completed yet, for example runs that span several days or weeks.<br>

    <figure><img src="/files/QXAWxxUBAMfSBiT4i8rH" alt=""><figcaption></figcaption></figure>
* **Version**: If you have published more than one version of a journey, you can select the specific version that you want to view run results for.<br>

  <figure><img src="/files/XBal2QdJhQQkWndLF17t" alt=""><figcaption></figcaption></figure>
* **Contact**: If you want to see how a journey ran for a specific contact, you can select that contact from the list.<br>

  <figure><img src="/files/5H6VxVWIVW20WGEYpFZf" alt=""><figcaption></figcaption></figure>
* **Invocation date**: Use the drop-down to define a specific timeframe that you want to view run results for, or use the pre-defined options (today, one day, one week, one month, or maximum timeframe).<br>

  <figure><img src="/files/fFZsiztUGMLRg4oMoiMa" alt=""><figcaption></figcaption></figure>

### How to view details of a specific run record

Once you have filtered your run results, click a specific run record to view more details.

On the right-hand side of your screen, under 'Events', you can see how the contact progressed through your journey, and a time log showing how long the contact spent at each step.

<figure><img src="/files/9S56eVQOQWEq5u5W1kLj" alt=""><figcaption></figcaption></figure>

Click on a step to highlight that step in the journey tree view, and see the following information:

* **Step ID**: A unique ID for the step.
* **Started at timestamp**: When the step began to execute.
* **Ended at timestamp**: When the step execution was completed.
* **Duration**: How long step execution took.
* **Input**: The data that the step received from the trigger, or from the previous step.
* **Output**: The data that the step passed on to the next step.

<figure><img src="/files/UExdzQiirBWSn5kWaQxo" alt=""><figcaption></figcaption></figure>

### How to troubleshoot a run that failed with an 'error'

If there was an error in a journey run, the 'error' label will be displayed next to the specific run record in your run results.

When you click on a run record with an 'error', the step that had the error will be highlighted in red in the 'Events' section, and in the journey tree view.

Click the action that had the error, and view the 'input' and 'output' information to understand more about what caused the run to fail.

### How to retry a failed run

* If you've published a new journey version in an attempt to fix the error, click **Retry with live version**.
* If you haven't published a new journey version, you can try the run again with the current version by clicking **Retry run**.

### FAQs

#### Q: Why can't I see any results in my journey runs

A: First, check that your journey has been triggered at least once. If your journey hasn't been triggered, there won't be any runs to display. Next, check the **invocation date** filters. By default, this is set to 'today', so if your journey hasn't triggered today, you won't see any results.


# Journey Insights

Journey Insights page provide valuable insights into user behavior at every step.

This article explains how to view, interpret, and act on **step-level insights** for a Journey — so you can see exactly how users move through each step, where they drop off, and which steps drive conversions.

### What you’ll learn

* How to open step-level insights for any Journey
* Key metrics available at each step and what they mean
* Filtering, comparing and exporting step data
* Practical examples, troubleshooting, and best practices

### Accessing step-level insights

* Open the **Journeys** page and select the Journey you want to view insights for or go to 3 dots menu and click on **View Insights.**
* Click the **Insights** option in the Journey side pane. This will also take you to Journey insights page showing metrics on each step and branch % for the journey.
* If you are already on the Journey builder canvas page, you can also click on **View Insights** on the top right

Click on **View Insights** from 3 dots menu

<figure><img src="/files/JaclQWX4Btd7osFLUM0z" alt=""><figcaption></figcaption></figure>

Click on **Insights** on the side pane

<figure><img src="/files/eLisYmUTKO49VCle2bnZ" alt="" width="375"><figcaption></figcaption></figure>

Click on **View Insights** on the Journey builder canvas

<figure><img src="/files/WuW3KmsBlBDirTiekkKQ" alt=""><figcaption></figcaption></figure>

* Click a specific step in the visual journey canvas to reveal that step’s metrics panel for detailed metrics. If the selected step has failed, click **View runs** to see runs that failed at that step.
* Use the filters on the top to choose **date range** and **journey versions.**

<figure><img src="/files/k0Sa87FHhssbl5CbHl7u" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If your journey has branches, insights will show the percentage of all users that have moved through each branch.
{% endhint %}

### Filter insights

#### **Filter by journey version**

* Use the dropdown on the left-hand side of your screen to filter between insights for all versions of your journey, and insights for a specific version.
* You can select multiple versions of a journey to view at once. The heatmap will superimpose data from all selected versions, but will display the latest journey structure.

{% hint style="warning" %}
Selecting multiple versions of a journey can lead to data inconsistencies at the step level.

For example, if the first version of your journey contained five steps, and the third version of your journey has ten steps, the five steps that have been present since version one will have been executed more times than the additional steps that were only added in the third version.
{% endhint %}

#### **Filter by time frame**

* Use the date and time picker on the left-hand side of your screen to filter insights for a specific time.

### Journey Metric Details

For each step you will see the following set of metrics based on the type of step:

For each metric definition, you can view this article on Reporting Metrics Definition.

### Trigger

Metrics shown on the step card

* **Entered:** Total number of times a journey run is triggered with any contact in the selected time range

Additional metrics on the step detail pane

* **Unique contacts:** Number of unique contacts for whom journey run is triggered at least once in the selected time range
* **Dropped:** Total number of entered runs which are rejected, exited or cancelled. In case of trigger, the runs can only be rejected in the selected time range
* **Rejected:** Total number of runs which are rejected due to an entry condition is not met in the selected time range

### Message Step

Metrics shown on the step card

* **Sent:** Total number of messages sent from Bird to the channel in the selected time range
* **Delivered (Delivery rate):**
  * Total number of messages delivered to the channel in the selected time range.
  * Delivery rate = % of Delivered/Sent
* **Opens (Open rate)**
  * Unique opens by contacts who opened or read the message at least once in the selected time range.
  * Open rate = % of Open/Delivered
* **Clicks (Click rate)**
  * Unique clicks by contacts who clicked a link in the message or a reply button (WhatsApp only) at least once in the selected time range.
  * Open rate = % of Clicks/Delivered
* **Conversions (Conversion rate)**
  * Unique conversions by contacts who opened or clicked the message and then resulted in a conversion event (Order Place or Order Fulfilled) within the channel attribution window in the selected time range.
  * Open rate = % of Conversions/Delivered
* **Revenue**
  * Total revenue from the conversion events in the selected time range.
* **Unsubscribes (Unsubscribed rate)**
  * Unique unsubscribes by contacts who submitted the unsubscribe page in email or SMS or replied with unsubscribe keyword for SMS in the selected time range. It also includes any list-unsubscribes on the subject line or email header.
  * Unsubscribe rate = % of Unsubscribes/Delivered
* **Waiting:** Total number of journey runs which are waiting in this step in the selected time range.

Additional metrics on the step detail pane

* **Entered:** Total number of journey runs which has entered this step in the selected time range
* **Unique contacts**: Number of unique contacts for whom journey run has entered this step in the selected time range
* **Completed:** Total number of journey runs which have completed this step in the selected time range
* **Failed:** Total number of journey runs which have failed at this step in the selected time range
* **Dropped:** Total number of entered runs which are rejected, exited or cancelled in the selected time range. In case of this step, the runs can only be exited or cancelled
* **Exited:** Total number of runs which are exited due to exit condition is met in the selected time range
* **Cancelled:** Total number of runs which are cancelled manually at this step in the selected time range
* **Skipped:** Total number of runs which are skipped sending a message at this step in the selected time range
  * **Global Holdout:** Total number of runs which are skipped sending a message at this step in the selected time range due to global holdout setting.
  * **Percentage Holdout:** Total number of runs which are skipped sending a message at this step in the selected time range due to percentage holdout settings defined on the trigger.

### Wait Step

Metrics shown on the step card

* **Entered:** Total number of journey runs which has entered this step in the selected time range.
* **Waiting:** Total number of journey runs which are waiting in this step in the selected time range.
* **Completed:** Total number of journey runs which have completed in this step and moved to next step in the selected time range.

Additional metrics on the step detail pane

* **Unique contacts:** Number of unique contacts for whom journey run has entered this step in the selected time range.
* **Dropped:** Total number of entered runs which are rejected, exited or cancelled in the selected time range. In case of this step, the runs can only be exited or cancelled
* **Exited:** Total number of runs which are exited due to exit condition is met in the selected time range
* **Cancelled:** Total number of runs which are cancelled manually at this step in the selected time range

### Condition Step

Metrics shown on the step card

* **Entered:** Total number of journey runs which has entered this step in the selected time range.
* **Completed:** Total number of journey runs which have completed in this step and moved to next step in the selected time range.

Additional metrics on the step detail pane

* **Unique contacts:** Number of unique contacts for whom journey run has entered this step in the selected time range.
* **Waiting:** Total number of journey runs which are waiting in this step in the selected time range.
* **Dropped:** Total number of entered runs which are rejected, exited or cancelled in the selected time range. In case of this step, the runs can only be exited or cancelled
* **Exited:** Total number of runs which are exited due to exit condition is met in the selected time range
* **Cancelled:** Total number of runs which are cancelled manually at this step in the selected time rangeRandom Sampler Step

Metrics shown on the step card

* **Entered:** Total number of journey runs which has entered this step in the selected time range.
* **Completed:** Total number of journey runs which have completed in this step and moved to next step in the selected time range.

Additional metrics on the step detail pane

* **Unique contacts:** Number of unique contacts for whom journey run has entered this step in the selected time range.
* **Waiting:** Total number of journey runs which are waiting in this step in the selected time range.
* **Dropped:** Total number of entered runs which are rejected, exited or cancelled in the selected time range. In case of this step, the runs can only be exited or cancelled
* **Exited:** Total number of runs which are exited due to exit condition is met in the selected time range
* **Cancelled:** Total number of runs which are cancelled manually at this step in the selected time range

### Update Contact Step

Metrics shown on the step card

* **Entered:** Total number of journey runs which has entered this step in the selected time range.
* **Completed:** Total number of journey runs which have completed in this step and moved to next step in the selected time range.

Additional metrics on the step detail pane

* **Unique contacts:** Number of unique contacts for whom journey run has entered this step in the selected time range.
* **Waiting:** Total number of journey runs which are waiting in this step in the selected time range.
* **Dropped:** Total number of entered runs which are rejected, exited or cancelled in the selected time range. In case of this step, the runs can only be exited or cancelled
* **Exited:** Total number of runs which are exited due to exit condition is met in the selected time range
* **Cancelled:** Total number of runs which are cancelled manually at this step in the selected time range

### Jump To Step

Metrics shown on the step card

* **Entered:** Total number of journey runs which has entered this step in the selected time range.
* **Completed:** Total number of journey runs which have completed in this step and moved to next step in the selected time range.

Additional metrics on the step detail pane

* **Unique contacts:** Number of unique contacts for whom journey run has entered this step in the selected time range.
* **Waiting:** Total number of journey runs which are waiting in this step in the selected time range.
* **Dropped:** Total number of entered runs which are rejected, exited or cancelled in the selected time range. In case of this step, the runs can only be exited or cancelled
* **Exited:** Total number of runs which are exited due to exit condition is met in the selected time range
* **Cancelled:** Total number of runs which are cancelled manually at this step in the selected time range

### End Journey Step

Metrics shown on the step card

* **Entered:** Total number of journey runs which has entered this step in the selected time range.
* **Completed:** Total number of journey runs which have completed in this step and moved to next step in the selected time range.

Additional metrics on the step detail pane

* **Unique contacts:** Number of unique contacts for whom journey run has entered this step in the selected time range.
* **Waiting:** Total number of journey runs which are waiting in this step in the selected time range.
* **Dropped:** Total number of entered runs which are rejected, exited or cancelled in the selected time range. In case of this step, the runs can only be exited or cancelled
* **Exited:** Total number of runs which are exited due to exit condition is met in the selected time range
* **Cancelled:** Total number of runs which are cancelled manually at this step in the selected time range

### Branch Metrics and Percentages

**Branch Percentage**: It is shown on the branch between 2 steps or when there are multiple branches after condition or random sampler steps. It is percentage of Entered this branch out of Entered all branches.

Branch Percentage = Entered this branch / Entered all branches

Metrics shown on hover

* **Entered this branch:** Total number of runs which entered this specific branch from the previous step in the selected time range.
* **Entered all branches:** Total number of runs which were completed from the previous step to move to the next step in the selected time range.
* **Dropped from all branches:** Total number of runs which were dropped from all the branches from the previous step in the selected time range. This may be due to failed, exited or cancelled runs.

<figure><img src="/files/XltHGnm0iG5IH8f4R4mj" alt="" width="260"><figcaption></figcaption></figure>

### Important notes when reading the metrics

**On Wait step, Entered and Completed may be different in a selected time range**

The journey metrics show a snapshot of the journey runs in a selected time range, which means that if you have a time filter of 30 days, **Entered** shows the total number of runs which entered in the journey in 30 days which may be 100. However, **Completed** may be more or less than Entered as more or less runs may have completed the Wait step in the 30 days as they may have entered and waiting before the selected time range. In this case, you can increase the time range to see more data.

**Impact of Deleting steps**

When you delete steps, the metrics are reset as it is new step and they are not combined with same step of the old version. You can still see metrics by selecting the older versions on the version filter. If the step is completely deleted, you can also see their metrics only by using the version filter.

**Why your branches may show > 100%**

* When a **Jump To** step is adding to a step and the branch, the **Entered** on the step would be greater than **Completed** form the immediate previous step. This causes the branch percentage to show > 100%
* If you have added or deleted steps in a new journey version, this may also cause > 100% branch percentages.

**Why my next step shows more Entered than Sent in previous step**

This may happen if messages sending is skipped due to reasons like global or percentage holdouts. These skip sending messages on a message step in a journey but allow the contacts to continue and enter the next step causing Entered on the next step to be higher than Sent on the previous step. Please click on the Message step to see detailed Entered and Skipped metrics for clarification.


# Journey reports

Pull detailed reports on journey performance.

View journey reports, and gain insights into sent, delivered, and read rates, all presented in an easy-to understand format.

## How to find a journey's report

1. Go to **Journeys**.
2. Find the journey you want to view, then click the three dots on the right-hand side.
3. Select **View insights**.

<figure><img src="/files/fopD5FWS4S8ZvmhvKKHb" alt=""><figcaption></figcaption></figure>

5. Click the **three dots** next to the journey name in the top-left corner
6. Select **View report** from the dropdown menu.

<figure><img src="/files/CmmzIS2hHByhdYDQgi7A" alt=""><figcaption></figcaption></figure>

### How to filter a report

#### **Filter by journey version**

* Use the dropdown on the top right corner of your screen to filter your report between insights for all versions of your journey, and insights for a specific version.

<figure><img src="/files/JrYr2vP3usBLK0Emzarl" alt=""><figcaption></figcaption></figure>

**Filter by channel**

* If your journey is set up to run on multiple channels, use the 'Filter by sender' dropdown to filter the report for a specific channel.

<figure><img src="/files/TrmcanyYYsHBeHOti10G" alt=""><figcaption></figcaption></figure>

#### **Filter by time frame**

* Use the date and time picker to filter insights for a specific time.

<figure><img src="/files/QX4OJqfaTguhZBxyTx9Y" alt=""><figcaption></figcaption></figure>

### Overview tab

#### Journey overview

In the reports 'Overview' tab, under 'Journey overview' you can see the following data:

* **Runs triggered**: The total number of times the journey has been triggered
* **Runs completed**: The total number of times a contact has successfully completed the journey
* **Unique contacts entered**: The total number of times distinct contacts have triggered the journey
* **Unique contacts completed**: The total number of times distinct contacts have completed the journey

#### Message delivery overview

In the reports 'Overview' tab, under 'Message delivery overview' you can see the following data:

* **Sent**: The total number of messages sent by this journey
* **Delivered**: The total number of messages delivered by this journey
* **Delivery rate**: The % of sent messages that were delivered successfully
* **Opens/Reads**: The number of messages that were opened or read
* **Opens/Reads rate**: The % of delivered messages that were opened or read
* **Clicks**: The total number of times links have been clicked in messages sent by the journey
* **Click-through-rate**: The % of delivered messages that drove a click

#### Channel overview

In the reports 'Overview' tab, under 'Channel overview', if your journey sends messages on more than one channel type, you'll be able to see performance metrics by channel, so you can easily compare channel performance.

### Channel tabs

Use the channel tabs to see the same data for a specific channel. This is helpful if your journey is set up to run on multiple channels.

For example, if your journey runs on both Email and WhatsApp, you can switch between the **Email** and **WhatsApp** tabs to see how your journey performs on each platform.


# Journey Events

Understand Journey events and use it to segment the right customers

Journey events allow you to segment contacts, trigger automations and workflows based on what happens to your customer journeys. Understanding each event type and when it fires is essential for building effective automation workflows.

## **Event Hierarchy Overview**

When a customer enters a journey, they either get rejected even before starting or proceed through various outcomes. Here's the hierarchy:

**Entry Point:**

* **Journey Run Rejected** — Stops here, appear on contact timeline

**If Validation Passes:**

* **Journey Run Started** — Customer enters journey and shows up on the contact timeline.
  * **Journey Run Exited** — Customer matched an exit condition
  * **Journey Run Cancelled** — Admin manually cancelled
  * **Journey Run Completed** — Journey finished (status: success or error)
  * **Journey Run Failed** — Critical system error prevented execution

**Key takeaway:** Every journey run is either **Rejected** OR **Started**. Once **Started**, it will end in exactly one of four states: *Exited, Cancelled, Completed,or Failed*.

## **Journey Run Rejected**

**What it means:** The journey run was rejected before it even started execution.

**When it triggers:** When a contact fails initial start conditions or eligibility criteria before the journey begins processing.

**Note:** Rejected runs do appear on the contact's timeline.

### **Use Case: License Renewal Journey**

You're sending a license renewal journey to customers, but some customers have opted out of communications on a specific channel let’s say WhatsApp which is defined in your start conditions of the Journey. A rejected run occurs when a customer's profile shows they're unsubscribed on WhatsApp before the journey processes.

## **Journey Run Started**

**What it means:** The journey run has been initiated and is actively processing for the contact.

**When it triggers:** When a customer enters a journey and passes initial validation checks.

**Scope:** This event covers ALL runs except those that are rejected, including all the outcomes below.

**Note:** This is a broad event that captures every successful entry into a journey.

### **Use Case: Welcome Email Campaign**

You want to track engagement from the moment anyone enters your onboarding journey. When a journey run starts, this can be used to measure total funnel entry.

## **Journey Run Exited**

**What it means:** The customer exited the journey because an exit condition was matched.

**When it triggers:** When a customer meets the criteria defined in your journey's exit conditions before completing the journey.

Exit conditions are intentional breakpoints designed to remove customers who no longer meet your campaign goals.

### **Use Case: Win-Back Campaign with Engagement Gate**

You're running a 30-day win-back campaign targeting inactive users. Your exit condition is: "Contact opens an email" (indicating they're re-engaged).

**Action:** When a run is exited, remove the customer from the win-back segment. This prevents duplicate messaging and focuses resources on truly inactive users.

## **Journey Run Cancelled**

**What it means:** An admin manually stopped the journey run for a specific contact.

**When it triggers:** When a team member manually cancels a journey for a contact through the Bird platform, typically to remove them from an active campaign.

This is a deliberate administrative action, not an automatic system event.

### **Use Case: Support Team Manual Override**

A customer reports to your support team requesting to be removed from an email campaign immediately. The support agent manually cancels their active journey run.

## **Journey Run Completed**

**What it means:** The journey finished processing and reached its end, regardless of whether the outcome was successful or resulted in an error.

**When it triggers:** When the journey has executed its steps and actions, and reaches and end state of a "success" or "error" status.

**Key distinction:** This event fires for BOTH successful completions and completions with errors. You can add conditions to differentiate between them.

### **Use Case: Journey Runs executed**

You can use this event to identify the percentage of all your Journeys that started and actually completed with a success or a failure.

**Action:** Create two conditions:

* \*\*If status = "error",\*\*identify why journeys failed and address them.
* \*\*If status = "success",\*\*denotes successful completion of your Journey designed as intended

## **Journey Run Failed**

**What it means:** The journey failed to execute at all due to internal system errors.

**When it triggers:** When the journey encounters a critical error before or during execution that prevents it from running properly (e.g., database issues, API failures, system timeouts, performance degradation).

This is different from a journey that runs but produces errors in its steps, this is a system failure to even start execution.

### **Use Case: Identify Investigations to be reported**

You are noticing a lot of Journey Runs Failing, this means there is a system issue and has to be addressed by the Bird platform team.

## **How to Set Up Conditions on Journey Events**

You can use these events to create powerful automated responses. Here's how to set up a condition:

1. In your Journey builder, start conditions or conditions, select **"If an event happened or did not happen"**
2. Choose the journey event you want to monitor (e.g., "Journey Run Completed")![](/files/1e46ea31f0a1355451ce388926cc154deff0b166)
3. Use the "Where" section to add filters based on specific attributes
4. For example, to catch errors in completed journeys:

* **Event:** Journey Run Completed
* **Where:** Status equals "error"![](/files/9bb3cffa1f86147462b86725af6a66cb65c1193f)

This allows you to treat successful completions and error completions differently in your downstream actions.

## **Best Practices**

* **Monitor Run Failed events closely:** These indicate system issues that need investigation
* **Use Completed + Status condition:** Separate successful outcomes from error outcomes for better reporting
* **Leverage Exited events:** Use these to keep your segments clean and prevent message duplication
* **Track Journey Run Started broadly:** Use this for total funnel metrics to understand overall journey performance


# Short links

Increase brand recognition by personalizing short links with your own domain.

{% hint style="warning" %}
Short links are only available for [SMS](/applications/channels/channels/supported-channels/sms) and [WhatsApp](/applications/channels/channels/supported-channels/whatsapp).
{% endhint %}

By default, when you add a link to an SMS message or WhatsApp [message template](/applications/content/message-templates), we shorten the link so that it can be used in UTM tracking.

Shortened links will always be a Bird domain that looks similar to this: `brdX.eu`.

For example, the link <https://docs.bird.com/applications> might be shortened to something like this: `brd1.eu/psaH7QJ`.

### Branded subdomains

Branded subdomains combine a phrase that's representative of your brand, such as 'Bert's Bookshop' with our `brdX.eu` domain. Links that use branded subdomains might look like this: `bertsbooks.brd3.eu/hufR276`.

{% hint style="info" %}
The shorter your subdomain, the more space you'll have in your message for the rest of your content.
{% endhint %}

#### Set up a branded subdomain

{% hint style="danger" %}
Make sure that the subdomain you use is representative of your brand, or your account will be banned.
{% endhint %}

* From the sidebar, click **Settings**.
* Click the **Marketing > Custom Domains > Short links**

<figure><img src="/files/owSXULYC07Oq8IEKKgBB" alt="" width="214"><figcaption></figcaption></figure>

* Under 'Branded subdomain', click **Add**.

<figure><img src="/files/KFT0USRHP1E5RdfRaglv" alt=""><figcaption></figcaption></figure>

* Enter a subdomain in the below form:

<figure><img src="/files/dcQ534gpocWZ8zgZU2yM" alt=""><figcaption></figcaption></figure>

* Check the preview, then click **Create**.

### Branded domains

Branded domains require additional configuration in your DNS records, but give you complete control over the appearance of your short links. Once set up, your domain name will replace the `brdX.eu` domain in your short links.

So, instead of looking like this: `bertsbooks.brd3.eu/hufR276`

Your short links will look like this: `bertsbooks/hufR276`

#### Set up a branded domain

{% hint style="warning" %}

* You must use your own domain.
* To set up a branded domain, you will need access to your DNS settings.
  {% endhint %}

1. Navigate to **Settings > Marketing > Custom domains > Short links**

<figure><img src="/files/LbJrjNSP3TPRWfj9otQe" alt=""><figcaption></figcaption></figure>

1. Click the **Short links** tab.
2. Under Short link > click **Add**.
3. Enter your domain, such as `bird.com`
4. Click **Create**.

<figure><img src="/files/k0G1vjpycN2omYFJhPUA" alt=""><figcaption></figcaption></figure>

1. Copy the **Validation code TXT record** and add it to your DNS settings as a TXT record.
2. Copy the **A record** and add it to your DNS settings.
3. Click **Verify and close**.

<figure><img src="/files/Yz6luKd2Vab6X73jL9Ai" alt="" width="375"><figcaption></figcaption></figure>

DNS records may take some time to propagate. Once the DNS records are verified this domain will become active. In the meantime, your branded domain will be marked as 'Pending'.

### Adding short links to a journey message

If you've turned ON the link shortening in your message template, any link you add to Send message step in the journeys will be automatically shortened.


# A/B Testing

Optimize your journeys by testing message variations, analyzing performance, and automatically delivering the best content to each audience segment.

A/B testing in Journeys helps you find which message variation performs best so that majority of your audience receives the best-performing content. You can test different versions of a message within a **Send Message** step—such as changing the subject line or content—and automatically pick the winner based on performance.

### What You Can Do

With A/B testing in a **Send Message** step, you can:

* Create **multiple message variations** (A, B, C, etc. upto 8 variations)
* Define **traffic distribution** between variations
* Choose a **winning metric** (like opens, clicks, or conversions)
* Set a **time limit** for the test to run (default: 365 days)
* Use **AI-based optimization** to automatically shift traffic to better-performing variations
* View detailed **results and winner metrics** in reports
* **Manually end** the test or **select a winner** anytime

### Setting Up an A/B Test

#### Add a Send Message Step

In your Journey builder:

* Drag a **Send Message** step onto the canvas.
* Select the message channel and content (Email, Push, SMS). Note that it is currently not supported for WhatsApp.
* Click **Create A/B Test** inside the step.

<figure><img src="/files/ZffamlqKo8xcnzKybjXj" alt="" width="375"><figcaption></figcaption></figure>

#### Add Variations

You’ll start with Variation A and B when you create an A/B test.

* When you create an A/B Test it will be in **Draft** status.
* To remove A/B Test, simply click on the Delete icon.

<figure><img src="/files/ChomB6ch7AywxL52WODt" alt="" width="375"><figcaption></figcaption></figure>

To add more:

* Click **Duplicate** on any variation to C, D and so on.

<figure><img src="/files/iqd8tbpuvvPnx1DioBEU" alt="" width="375"><figcaption></figcaption></figure>

* You can click **Edit template** to update the content
* Each variation can be edited to have:
  * Different subject lines or headers
  * Different message body or creatives
  * Different CTA wording or tone
* You can remove a variation after 2 variations using **Remove** option

**Tip:** Test one key element at a time (e.g., subject line or CTA) for clearer results.

### Configure A/B Test Settings

Once you’ve added variations, set up how the test will run.

* Click on **A/B Test Settings** to navigate to the settings page

<figure><img src="/files/cait86PJ1FqyPmOorsqT" alt="" width="375"><figcaption></figcaption></figure>

#### Test Name

You can give a name to your test so that you can uniquely identify it from any other tests you may add it in other message steps in the same journey.

#### **Sending Distribution**

Define what percentage of your audience should receive each variation to begin with. By default, it is equally distributed between all variations.\
Example:

* A → 50%
* B → 50%

The system will automatically adjust the distribution to the better-performing variation after initial data is analyzed.

#### **Winning Metric**

Choose the performance metric that decides the winner:

* **Open Rate**
* **Click Rate** (Default)
* **Conversion Rate**

#### Automatic Winner Selection

The test will run till the selected winning metric reaches statistical significance to determine a winner with sufficient confidence or the defined time duration limit whichever comes earlier.

#### **Time Duration**

Set how long the test should run before it ends with or without winner determination. By default, it is set as 365 days.

If no clear winner is determined within this time, you can manually select one.

Your changes to test settings will be automatically saved. You can also edit or duplicate to add more variations in this page

Additionally, you can preview your content by clicking on the preview eye icon.

<figure><img src="/files/CE8FSCgKW43pu0qYgUOv" alt=""><figcaption></figcaption></figure>

### Publishing a Test

When you are done with A/B Test settings, you can then publish the journey which would publish any draft tests created in the journey

* Once published, the test will show In Progress status
* You can click on View report to see the performance details for the test

<figure><img src="/files/EOhzYhWJALTUSikLUTLH" alt="" width="375"><figcaption></figcaption></figure>

* You can manually end the test at any time, by clicking on **A/B Test Settings > End Test**

<figure><img src="/files/151KeRtFpQEq8gyb6g4D" alt=""><figcaption></figcaption></figure>

### AI-Powered Optimization

Journeys uses an **AI-driven multi-armed bandit algorithm** to automatically optimize traffic distribution among variations in real time.

Instead of splitting audience traffic evenly for the entire test duration, the algorithm continuously **shifts more traffic to the better-performing variations** based on the chosen winning metric (e.g., click rate).

Here’s how it works:

#### **When AI Optimization Begins**

* AI optimization starts **after each variation has at least 50 delivered messages**.
* The test must have been running for **at least 2 days** to ensure there’s enough data for confident evaluation.

#### **How Optimization Works**

* Once activated, the algorithm dynamically updates traffic allocation—sending a higher share of new audience members to variations showing stronger performance.
* This approach allows your campaign to **maximize engagement even while testing is in progress**.

#### **When the Test Ends Automatically**

* The AI continuously monitors performance.
* The test **ends automatically** when:
  * The algorithm determines that **no further optimization is possible**, and
  * A **clear winner** is identified based on the **confidence level of performance** differences.
  * The **time duration limit** is reached.

If the algorithm finds that performance differences are **not statistically significant**, no automatic winner will be chosen.

The algorithm needs at least 95% confidence in 100 iterations of traffic distribution changes. It currently evaluates the performance and performs adjustments to distribution every 30 mins.

The maximum percentage change of traffic for each variation can be 20%. When the experiment reaches a stage where the traffic distribution cannot be more than 1% and the confidence reaches 95%, the test is completed.

### Selecting a Winner

You can **manually end a test** at any time by selecting **“End Test and Pick Winner.”**

There are three possible outcomes:

**Winner Automatically Selected by AI**

* The AI identifies a clear top performer and assigns the remaining traffic to that variation.
* The test ends automatically, and all future contacts entering this step receive the winning version.

**Manual Winner Selection**

* If the test ends without sufficient confidence or the test is still running, you can manually review performance metrics and choose a winner.

<figure><img src="/files/NaCnOb8mqE6NF0SbX1cZ" alt="" width="375"><figcaption></figcaption></figure>

**No Winner Determined**

* In cases where the data is inconclusive (low volume, small differences, or short duration), no winner will be automatically picked.
* You can still manually select a variation based on observed performance.

<figure><img src="/files/zJO6LY18TXlmjS44Es9A" alt="" width="375"><figcaption></figcaption></figure>

### Viewing Results

All test metrics and outcomes are available in the **A/B Test** tab on the **Journey Report page**.

Here you can see:

* Each variation’s performance based on winning metric
* Number of sent and deliveries per variation
* Variation performance changes over time (for AI-optimized tests)
* Selected or auto-selected winner

<figure><img src="/files/A0I4Zd3uqcAXh0ZCZfmh" alt=""><figcaption></figcaption></figure>

You can also view the metrics filtered by variation in the **Journey Insights** view by opening a **Send Message** step.

<figure><img src="/files/WJyvhU2KnEd7sV5Oi6ma" alt=""><figcaption></figcaption></figure>

### Best Practices

* Test only **one element at a time** for clear insights.
* Allow at least **2–3 days** for sufficient data before evaluating results.
* Ensure each variation has **enough recipients (≥50)** to enable AI optimization.
* Don’t end the test too early — confidence builds over time.
* Use results to refine future message content and improve journey performance.


# Recurring audience & waves

Trigger journey runs for a segment based on a recurring schedule.

{% hint style="warning" %}
**Early Access:** this feature is available for a limited set of customers.
{% endhint %}

A journey with a recurring audience trigger runs on a schedule — every day, week, or month — without anyone exporting CSVs or manually sending campaigns. At each scheduled time, Bird creates a **wave** that enrolls everyone matching your segment *at that moment*.

Use a recurring journey when you want to reach the *current* members of an audience on a repeating cadence — a weekly digest to your active users, a monthly billing reminder, a quarterly NPS survey — without rebuilding the journey or launching a campaign each time.

### How it works

When you publish a recurring journey, Bird schedules waves according to your cadence. At each scheduled time:

1. Bird resolves the audience — the contacts who match the segment **right now**, not when you configured the journey.
2. A **wave** is created and one **journey run** is launched per matched contact.
3. Each run flows through the journey steps independently, just like any other journey.

Membership is evaluated at wave time, so suppression changes, preference updates, and segment changes between waves are reflected automatically.

### Setting up a recurring journey

1. Create a new journey and choose **Recurring audience** as the trigger.
2. Pick your **segment**.
3. Set the **frequency**, **hour**, **minute**, and **timezone** for the schedule. The trigger card shows a preview of the next few waves so you can confirm before publishing.
4. Configure **re-entry** behavior (see below).
5. Add the rest of your journey steps and publish.

{% hint style="info" %}
**Minimum cadence is once per day.** You can't schedule waves more frequently than daily — for example, "daily at 9 AM" works, but "every hour" is not supported.
{% endhint %}

### Re-entry and cooldown

A contact can match the same audience across multiple waves. The **Allow Re-entry** toggle and **Re-entry cooldown** control what happens when they do.

| Setting                            | Behavior                                                                                                                                   |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Re-entry off**                   | A contact enters the journey at most once. Subsequent waves exclude contacts who have already started a run in this journey.               |
| **Re-entry on, cooldown = 0**      | Every wave starts a fresh run for every matched contact, even if they're still in an active run from a previous wave.                      |
| **Re-entry on, cooldown = N days** | A contact can re-enter only after N days have passed since their last entry. Subsequent waves exclude contacts within the cooldown window. |

Pick re-entry settings based on the message. A monthly billing reminder usually wants re-entry on — every match is a new billing cycle. An onboarding-style sequence usually wants re-entry off — you only want each contact to receive it once.

### Waves vs. runs

These two terms are easy to confuse:

* A **wave** is one scheduled execution of the recurring trigger. One wave per scheduled time (plus any manual waves you start).
* A **run** is one contact's path through the journey. A single wave launches one run per matched contact.

So a daily journey targeting a segment of 1000 contacts produces one wave per day, each kicking off 1000 runs.

### Past waves, upcoming, and manual control

Once your journey is live, the trigger panel exposes three tabs:

{% columns %}
{% column %}
**Configuration** — the audience, schedule, and re-entry settings. On a live journey you can pause or resume the schedule from here.

{% hint style="info" %}
Entry Conditions aren't available for this trigger type. The segment is the filter.
{% endhint %}
{% endcolumn %}

{% column %}

<figure><img src="/files/KxACKfnOKg3u2u6mGPPF" alt="" width="369"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column width="50%" %}
**Past waves** — every wave that has fired, with its date, time, status, number of runs created, and a link to the journey runs it produced. Each wave also has a **Show metrics** drawer — the numbers are aggregated across runs from this wave.
{% endcolumn %}

{% column width="50%" %}

<figure><img src="/files/CvUSIoRxy0WyzaPbfIVI" alt="" width="374"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
**Upcoming** — the next scheduled wave times based on your cadence.
{% endcolumn %}

{% column %}

<figure><img src="/files/xcP48j4pl2jEiDsN4QGi" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

#### Start a wave manually

From the **Past waves** tab of a live journey, click **Start wave** to launch an out-of-schedule wave immediately. The manual wave behaves exactly like a scheduled one — it resolves the audience at click time, launches a run per matched contact, and shows up in the past-waves list alongside scheduled waves.

Use this for one-offs and tests: an ad-hoc send to the current segment without waiting for the next scheduled time.

#### Wave progress

{% columns %}
{% column %}
While a wave is launching, the trigger panel shows a **Progress** counter. This counts how many runs have been **created** out of the resolved audience — it doesn't track whether those runs have moved through the journey. Once the counter reaches the audience size the wave is marked **Completed**, regardless of where the individual runs are.

To see what's happening to the runs themselves, open **View journey runs**.
{% endcolumn %}

{% column %}

<figure><img src="/files/ZTXgDhvj0rkwLN9IuOxE" alt="" width="360"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

#### Canceling a wave

While a wave is still launching runs, you can click **Cancel wave** to stop further launches. **Runs that have already been created continue to execute** — canceling only stops new runs from being created. To stop already-launched runs, you'd need to act on those individual runs in the journey runs view.

### Pausing the schedule

On a live journey, you can **Pause** the schedule from the Configuration tab. Pausing:

* Stops future scheduled waves from firing.
* Does **not** affect runs from prior waves — they continue executing.
* Does **not** prevent you from triggering a manual wave with **Start wave**.

Use pause for content refreshes or while debugging — no need to delete and recreate the journey. Click **Resume** to put the schedule back on track; the next wave will fire at the next scheduled time.

{% hint style="info" %}
The schedule pause is separate from journey publication. A live journey with a paused schedule is still live — it just won't fire automatically.
{% endhint %}

### Limits and considerations

* **Cadence minimum**: once per day.
* **Audience size**: large segments may take time to inject — runs are created progressively, not all at once.
* **Frequency caps still apply**: sends inside each wave count toward your workspace's frequency caps. See [Frequency Capping](/applications/journeys/journeys/concepts/frequency-capping).
* **A/B testing**: variants and confidence accumulate **across all waves**, not per wave.


# UTM Parameters & Link Tracking

### Overview

UTM parameters are tags added to your campaign URLs that help you track the performance of your marketing efforts in analytics tools like Google Analytics. Bird's campaign platform makes it easy to add and manage UTM parameters across all your messaging channels.

### What are UTM Parameters?

UTM (Urchin Tracking Module) parameters are snippets of text added to the end of a URL to track where traffic comes from. They help you understand which campaigns, channels, and content drive the most engagement and conversions.

#### Standard UTM Parameters

* **utm\_source**: Identifies the source of your traffic (e.g., `bird` )
* **utm\_medium**: Identifies the marketing medium (e.g., `email`, `sms` , `rcs`, `whatsapp`, `push`)
* **utm\_campaign**: Identifies the specific campaign name (e.g., `summer_sale_2024`)
* **utm\_id**: Identifies the specific campaign id (e.g., `12345`)
* **utm\_term**: Identifies paid search keywords (optional)
* **utm\_content**: Specific content tags/keywords

Sample URL: [https://yourstore.com/sale?utm\_source=bird\&utm\_medium=email\&utm\_campaign=spring\_sale](https://yourstore.com/sale?utm_source=bird\&utm_medium=rcs\&utm_campaign=spring_sale)

### Defining UTM Parameters in Bird

#### Bird's Built-in UTM Builder

Bird provides an automated and dynamic UTM parameter builder:

* Under **Settings > Marketing > Analytics > UTM tracking** , you can find your pre-defined UTM parameters settings for messages sent from Campaigns, Flows and Journeys
* Bird inserts dynamic parameters like `platform_name`, `campaign_name`, `campaign_id` based on how the message is sent.

<figure><img src="/files/1e3bvYB6w0Elkt2YLs5U" alt=""><figcaption></figcaption></figure>

You can update the above settings as needed

* To add any more standard or custom UTM parameters, click on "Add UTM parameter"
* Fill in the UTM parameter values when sending from campaign, flow or journeys

<figure><img src="/files/4mT9YIoMWAWByfqSCV5J" alt=""><figcaption></figcaption></figure>

* Bird will automatically generate and append the properly formatted URL to all the links in the messages sent from campaigns, journeys or flows as defined here

### Managing UTM Parameters in Journeys

By default, the Tracking is turned ON and UTM parameters as defined in the settings will be applied to all journey message links.

For Journeys, in a **Send a Message step > Advanced** tab, you can turn off applying UTM parameters for that message in the journey.

<figure><img src="/files/OGHVk2F9SjRSUvADRYWa" alt="" width="375"><figcaption></figcaption></figure>

### Link Tracking

Bird track link clicks in the following ways:

* Links clicks in Bird are tracked irrespective of UTM parameters appended or not
* Email link clicks are tracked automatically. Please ensure you have your tracking domain verified under Settings > Marketing > Email > Domains.
* Other channels like SMS, WhatsApp, Push, RCS link clicks are track when they are shortened by Bird link shortener (standard or custom). Please ensure you do not disable Bird link shortening if you want to track link clicks.
* Bird automatically shortens URLs with UTM parameters to keep your messages clean and professional while maintaining full tracking capabilities.

Learn more about [short links](https://docs.bird.com/applications/campaigns/campaigns/concepts/short-links).

#### In Bird Dashboard

* View link performance directly in Bird on the Marketing Dashboard
* You can also view link clicks in Journey insights and reports.
  * View metrics including:
    * Total clicks
    * Unique clicks
    * Click rate: Unique clicks / Delivered %
    * Link Activity: Total and Unique clicks per URL

#### In Google Analytics

Track the full customer journey:

1. Log into Google Analytics
2. Navigate to **Acquisition > Campaigns > All Campaigns**
3. Filter by your Bird campaign/flow/journey names to see:
   * Traffic volume from each campaign/flow/journey
   * User behavior and engagement
   * Conversion rates and revenue attribution


# Frequency Capping

Set per-channel limits across campaigns and journeys to reduce unsubscribes and complaints.

Do you get annoyed when you receive too many messages from a brand in a short space of time?

Sending messages too frequently can result in annoyed customers, increased unsubscribes, or even customer complaints.

Use the 'Skip recently emailed profiles' setting to exclude customers that you've messages recently from a campaign send.

## Frequency Capping Settings

The frequency capping settings are for each platform and can be found as below:

* Under **Settings > Marketing** > Select the platform like Email, SMS, WhatsApp, Push Notifications
* Under each platform, you will find a **Frequency Capping** section
* By default, Frequency Capping is set as 1 message per day. You can edit it individually for each platform which will apply to all messages sent across Campaigns and Journeys from this workspace.
* Number of messages dropdown allows you to select the number of messages and Frequency dropdown allows you to select number of days. E.g. 2 messages with 7 frequency means that one contact can receive only 2 messages in 7 days period for this platform across all campaigns and journeys.

<figure><img src="/files/NQ9tZhtBFHDK6ftYHeOA" alt=""><figcaption></figcaption></figure>

## Frequency Capping in Journeys

When adding a Send Message step in Journeys, under **Advanced tab**, you will see a toggle to Skip recently messaged contacts. By default, the toggle is switched to ON, which means that recently messaged contacts will be skipped based on the criteria set for that platform in the Frequency Capping settings.

If you want to send them the message anyway and do not want to skip them, click the toggle to turn it OFF. It will apply to all journey runs for that message step.

<figure><img src="/files/mWLpWQCUJisNvBqZtVhD" alt="" width="375"><figcaption></figcaption></figure>


# Tags

Use tags to organize journeys by theme, audience, or time of year. Filter and search across large numbers of journeys quickly.

Tags are keywords or phrases that help you to categorize and organize your journeys, making them easier to search and manage.

## How tags work

Using tags allows for more efficient journey management, as you can quickly filter and find specific journeys based on the tags they're associated with.

This can be particularly useful if you manage a large number of journeys or when looking for journeys targeting a specific demographic, theme, or time of year.

While you set up your journey, you can create and add tags.

{% hint style="info" %}
You can add up to **ten** tags to each campaign. For example, you might use 'abandoned-cart' and 'north-america' to categorize your journeys
{% endhint %}

### Tagging best practices

To use tags effectively:

* **Be consistent**: Use a consistent naming convention for tags to maintain an organized system.
* **Limit use**: While you can add up to ten tags per campaign, it's best to use the minimum number of tags needed to accurately describe and categorize your campaign to avoid clutter.

{% hint style="info" %}

#### Example

If you have a campaign focused on a summer sale for European customers, you might tag it with "summer-sale", "europe", and "sale".

This way, when you need to find all campaigns related to summer sales or specifically targeting the European market, you can search for these tags.
{% endhint %}

### Adding tags to a journey

* You can add tags to a journey upon creation or update any time later

<figure><img src="/files/2VWriwv3puq14X8PaLSI" alt="" width="375"><figcaption></figcaption></figure>

* You can create tags simply by typing any new tags in the Tags dropdown. Note that you cannot have spaces in tags and can only use alphanumerics, underscore (\_) or hyphens (-).

<figure><img src="/files/VUIKFKsdJdqFujvuZUG0" alt="" width="375"><figcaption></figcaption></figure>

* Tags are case-sensitive. Please search your existing tags in the dropdown to check for any similar ones before creating new
* Note that tags created here are also created for Campaigns and Flows.
* You can update tags by clicking on **Edit details** from journey list view or from journey tree view 3 dots > **Rename**

<figure><img src="/files/U79RlhiKgrVB7Hd00dxV" alt="" width="375"><figcaption></figcaption></figure>


# Holdout Groups

### Overview

Holdout groups, also known as control groups, are groups of your contacts that are intentionally excluded from receiving journey messages. This allows you to measure the true impact of your campaigns by comparing the behavior of recipients against those who didn't receive your messages.

Bird offers two types of holdout groups: **Global Holdouts** that apply across all journeys and **Journey Holdout** for specific journey testing.

### Why Use Holdout Groups?

Holdout groups help you answer critical questions about marketing effectiveness:

* What is the incremental impact of your messaging on conversions?
* Are your campaigns driving real behavior change or just reaching customers who would have converted anyway?
* What is the true ROI of your marketing spend?
* How do different campaign strategies compare in driving actual results?

### Global Holdout Groups

Global holdout groups exclude a group of contacts (based on a list or an attribute) from **all journeys**, allowing you to measure the overall impact of your marketing efforts.

#### When to Use Global Holdouts

Use global holdouts when you want to:

* Measure the cumulative impact of all your marketing communications
* Understand baseline customer behavior without any marketing influence
* Calculate the overall incrementality of your marketing program
* Comply with customer preferences for reduced messaging frequency

#### Setting Up a Global Holdout

* Navigate to **Settings > Marketing > Analytics > Global Holdout**

<figure><img src="/files/c334HpW6VDQbMbGAJuWl" alt=""><figcaption></figcaption></figure>

* Configure your holdout settings:
  * Select a list
  * Select a boolean (toggle) type attribute which when TRUE would make the contact part of Global Holdout group.
* Click on **Save**

<figure><img src="/files/1PUjwAtjA3mSRqbEo8mi" alt=""><figcaption></figcaption></figure>

### Journey Step-Level Holdout Groups

Journey-level holdouts exclude a percentage of recipients from a specific campaign, allowing you to test the impact of individual campaigns.

#### When to Use Journey-Level Holdouts

Use campaign-level holdouts to:

* Test the effectiveness of a specific promotion or announcement
* Measure incremental impact of different messaging strategies
* Validate whether a campaign drives meaningful behavior change
* A/B test campaign presence vs. absence (not just message variants)

#### Setting Up a Journey Holdout

* Go to Advanced Tab of a Send Message Step
* You can disable Global holdout for a message if needed
* Enable **Holdout Percentage**
  * You can select to apply the same journey holdout group as defined on the trigger to all the steps of the journey

<figure><img src="/files/hIy4EloXcMY5tdFj12H1" alt="" width="375"><figcaption></figcaption></figure>

* You can define a step-level journey holdout group which applies to only this message.

<figure><img src="/files/g3l86hXhRuuzrkTsodPY" alt="" width="375"><figcaption></figcaption></figure>

* **Randomization**: Bird automatically creates random assignment based on the percentage

The holdout group will be excluded from the specific journey steps only and can receive other journey messages normally.

#### Analyzing Holdout Results

Currently, Bird doesn't support a ready report for Global or Journey Holdout analysis.

* You can view Global Holdout and Percentage Holdout metric in Journey Insights for a specific message step

<figure><img src="/files/QsnZ2jRlioAds1uvN6t0" alt="" width="375"><figcaption></figcaption></figure>

* You can view Global Holdout and Percentage Holdout metric in Journey Report

<figure><img src="/files/GbeJtSIDZpxlQxhVlljv" alt=""><figcaption></figcaption></figure>

* You can also view it in Journeys list view and Export to csv

<figure><img src="/files/zXogN0TJPjZWCYWUTxyc" alt="" width="335"><figcaption></figcaption></figure>

* You can find the contacts in segmentation who were skipped due to global holdout and export from Contacts page as needed
  * **Something was done or not done** > Select event = **Skipped Message Sending** at least once in the last x days
    * where **Reason equals global-holdout or journey-holdout**

<figure><img src="/files/rnaNtmt0RvyoxI8nGD5T" alt=""><figcaption></figcaption></figure>

You will need to export this data from Bird for offline analysis as follows:

**Calculating Incrementality:**

```
Incrementality = (Exposed Group Conversion Rate - Holdout Group Conversion Rate) / Holdout Group Conversion Rate × 100
```

**Example**: If exposed contacts convert at 8% and holdout contacts at 6%, your incrementality is 33.3%.

### Combining Global and Campaign Holdouts

You can use both holdout types simultaneously, but be aware of how they interact:

* **Global holdout**: Excludes contacts from all campaigns
* **Journey holdout**: Excludes additional contacts from specific journey steps after global holdout exclusion
* **Total exclusion**: The sum of both holdouts reduces your reach


# How-to

<table data-view="cards"><thead><tr><th></th><th></th><th data-type="content-ref"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Add journey triggers</strong></td><td>Set up triggers that automatically start your journeys when key events happen</td><td><a href="/pages/ChGS3v8qYR7FzQ0avBOX">/pages/ChGS3v8qYR7FzQ0avBOX</a></td><td></td><td></td></tr><tr><td><strong>Use a send message step in a journey</strong></td><td>Automatically send messages to your customers.</td><td><a href="/pages/MiW2x1DNB6ifJ63R87AM">/pages/MiW2x1DNB6ifJ63R87AM</a></td><td></td><td><a href="/pages/Po6HeyEs9kNhCRApKEd5">/pages/Po6HeyEs9kNhCRApKEd5</a></td></tr><tr><td><strong>Use a wait step in a journey</strong></td><td>Wait for a set period of time before sending another message or performing another action.</td><td><a href="/pages/TQ83jLY2WgnPXXeGvqfU">/pages/TQ83jLY2WgnPXXeGvqfU</a></td><td></td><td><a href="/pages/dRkxGDjowmxubEPrYz7L">/pages/dRkxGDjowmxubEPrYz7L</a></td></tr><tr><td><strong>Use a conditional step in a journey</strong></td><td>Tailor your customers' journey experience with a conditional step.</td><td><a href="/pages/c1UmHxTncSB7KFktXyLc">/pages/c1UmHxTncSB7KFktXyLc</a></td><td></td><td><a href="/pages/2pvzjAEKM8jyxx5pQdxu">/pages/2pvzjAEKM8jyxx5pQdxu</a></td></tr><tr><td><strong>Use an update contact step in a journey</strong></td><td>Edit a contact profile when something happens in a journey.</td><td><a href="/pages/AeKWtxJdzG6xeVeL3wgH">/pages/AeKWtxJdzG6xeVeL3wgH</a></td><td></td><td><a href="/pages/NToLo6HlaLLNazNLq0pq">/pages/NToLo6HlaLLNazNLq0pq</a></td></tr><tr><td><strong>Use an end journey step in a journey</strong></td><td>Complete your journey with an end jourbey step.</td><td><a href="/pages/RK1QmS1DXXJTibEfxMfL">/pages/RK1QmS1DXXJTibEfxMfL</a></td><td></td><td><a href="/pages/9fn0xAgfWAOPlMykdaMC">/pages/9fn0xAgfWAOPlMykdaMC</a></td></tr></tbody></table>


# Add journey triggers

Set up triggers that automatically start your journeys when key events happen.

## What you will learn

* What a **journey trigger** is
* Types of triggers you can use
* How to set up triggers step by step
* How to apply filters and refine pathway logic
* Best practices & tips

## What is a journey trigger?

A **journey trigger** (or entry trigger) is the event or condition that causes a contact to enter a journey. Once triggered, the journey can send messages, apply logic, or take actions along multiple steps.

You can think of a journey trigger as the “door” into the automation: when a person meets the trigger condition, they become eligible to go through the rest of the journey.

#### Common Use Cases for Triggers

* When someone takes a specific action or an event happens (e.g. places an order, signs up, adds to cart)
* When someone is added to a segment or list
* Based on a date property (e.g. birthday, subscription anniversary)
* Based on profile changes (e.g. status changes, attribute updates)

### Types of Triggers & When to Use Them

Below are commonly supported trigger types in journeys:

| Trigger Type                           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Use Case / Example                                                                       |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| **Event Trigger**                      | Trigger when a tracked event occurs (e.g. “Order Placed”, “Checkout Started”, "Viewed product"). Events come from different integrations.                                                                                                                                                                                                                                                                                                                                                  | Send a welcome email after a user signs up                                               |
| **Segment / List Addition or Removal** | Trigger when someone is added to or removed from a list or segment                                                                                                                                                                                                                                                                                                                                                                                                                         | Trigger a nurture sequence when someone joins a “Trial Users” segment                    |
| **Date Property Trigger**              | Trigger when a date field changes or on a recurring date (e.g. birthday)                                                                                                                                                                                                                                                                                                                                                                                                                   | Send a message for an upcoming appointment date                                          |
| **Contact Updated Trigger**            | Trigger when a contact’s attribute changes (e.g. “status” goes from “inactive” → “active”)                                                                                                                                                                                                                                                                                                                                                                                                 | Move someone into a re-engagement journey when they become active                        |
| **Message delivered or clicked**       | Trigger when message sent from campaign is delivered or clicked                                                                                                                                                                                                                                                                                                                                                                                                                            | Send a follow up message when campaign delivered or clicked                              |
| **Related Object Trigger**             | <p><strong>Related Object Created:</strong> Triggers when new related object record for a contact is created</p><p><strong>Related Object Updated:</strong></p><p>Triggers when existing related object to a contact is updated</p><p><strong>Related Object Deleted:</strong></p><p>Triggers when existing related object to a contact is deleted</p><p><strong>Added/Removed from Object:</strong> Triggers when a contact is added or removed from a new or existing related object</p> | Send a message when a related account is activated                                       |
| **Recurring audience**                 | Sends the journey to a segment or list on a schedule — daily, weekly, or monthly. Each scheduled execution is called a **wave** and creates runs for whoever matches the audience at that moment, subject to re-entry rules.                                                                                                                                                                                                                                                               | Send a monthly billing reminder to everyone currently in the *Active customers* segment. |

### How to Add a Journey Trigger

1. Navigate to **Journeys** in the menu
2. Click **Create Journey**

<figure><img src="/files/DOYFQUWhJP7QPfAj5Z8R" alt=""><figcaption></figcaption></figure>

1. Then click on **Create from Scratch**

<figure><img src="/files/0QVPu6gaFx9Gvt8ITc6Y" alt=""><figcaption></figcaption></figure>

1. Give a name and tags to the journey
2. Choose trigger type:
   * **Most popular**
     * Checkout started (event)
     * Added to list
     * Viewed product (event)
   * **Your store**
     * Placed order (event)
     * Added to cart (event)
     * Shopify (or any integration)
   * **Your subscribers or contacts**
     * Added to or Removed from Segment / List
     * Contact Updated
     * Date Property
     * Application - Custom events
   * **Other triggers**
     * Message delivered or Message clicked
     * Related object updates - created, deleted, updated, added to /removed from object

<figure><img src="/files/9WqUuV9Rkx55lCQLkdt7" alt=""><figcaption></figcaption></figure>

1. Configure trigger details:
   * If **Integration Event** trigger, choose the connector and event name, e.g. Checkout

<figure><img src="/files/jTn9bv2d8JGYmVDOgCwB" alt="" width="310"><figcaption></figcaption></figure>

* If **Application** trigger, choose the Application and custom event

<figure><img src="/files/bGc9UYhFpNs3d3qnpt3p" alt="" width="375"><figcaption></figcaption></figure>

* If **Segment/List**, choose which segment or list to use

<figure><img src="/files/2HeiEWwNZ6ZwreJOKgLe" alt="" width="306"><figcaption></figcaption></figure>

* If **Date property**, select the date attribute of the contact and when relative to date the journey should trigger on or before.

<figure><img src="/files/fpYDkJNH8lYPCWPVRQIk" alt="" width="306"><figcaption></figcaption></figure>

* If **Contact Updated**, choose the contact attribute which is updated

<figure><img src="/files/SEcVGGFLmNGmTrSd1XY5" alt="" width="306"><figcaption></figcaption></figure>

* If **Related object** triggers, choose the trigger type and related object

<figure><img src="/files/XkFGmaoPICziv932b8bw" alt="" width="375"><figcaption></figcaption></figure>

* If **Message delivered or clicked**, select the event and the campaign

<figure><img src="/files/CfWb2Q8Vg8darKsiTXG0" alt="" width="375"><figcaption></figcaption></figure>

1. (Optional) Add **Entry conditions** — narrow down which events or entries count.
2. (Optional) Add **Exit conditions** — exit the contact at any time from the journey
3. (Optional) Add any additional settings e.g. end on segment exit or re-enter when getting added to segment again. Additionally you can enable global or journey holdout.
4. Save the trigger settings
5. Continue building the rest of the journey logic with different steps
6. Publish the journey

Once live, whenever a contact meets the trigger criteria, they’ll enter the journey path unless filtered out.

## Entry and Exit Conditions

* Entry conditions will filter contacts from entering the journey at the trigger level itself.

Any contact who satisfies the entry conditions will only move to the next step and the rest will be marked as **Rejected**.

* Exit conditions will exit contacts at any point of the journey at the trigger or any other step if they satisfy the exit conditions

Any contact who satisfies the exit conditions will immediately exit from any step and will be marked as **Exited**.

You can turn ON entry or exit conditions toggle to add any AND/OR statements for the conditions.

<figure><img src="/files/D9uSqFGNuYOLI2ZeuNHV" alt="" width="375"><figcaption></figcaption></figure>

You can add following types of entry conditions:

* **Properties about someone:** Based on contact attribute values

<figure><img src="/files/sRKPDY5NbrTefVTFFCNv" alt="" width="375"><figcaption></figcaption></figure>

* **If someone is or not in the list:** Based on if a contact is or not in the selected list in this condition

<figure><img src="/files/m5jHwFKUWJOwcap3810A" alt="" width="375"><figcaption></figcaption></figure>

1. **If someone is or not in the segment:** Based on if a contact is or not in the selected segment in this condition

<figure><img src="/files/2eWmQlStYpJDyAtEqXVm" alt="" width="375"><figcaption></figcaption></figure>

* **If an event happened or did not happen:** Based on if a contact has a selected event that has occurred or not

<figure><img src="/files/9iVsDEDLFLtufwyCXTMu" alt="" width="375"><figcaption></figcaption></figure>

* **Properties about event:** Based on the properties of the event or object selected in the trigger. This option will only show values if the trigger is event or related object.

<figure><img src="/files/kRQt0aVY83WI5DHMhCEr" alt="" width="375"><figcaption></figcaption></figure>

## Additional trigger settings

There are some additional settings on the trigger to define journey behaviour which are for the **Added to segmen**t trigger.

* **Allow re-entry:** When enabled, it allows the contact to re-enter the journey if they get added to segment again by satisfying the segment conditions again.
* **End on segment exit:** When enabled, it immediately ends the journey for the contact if they exit the segment by not satisfying the segment conditions anymore.

<figure><img src="/files/LVCHBxem2g1XsMfsGWbj" alt="" width="375"><figcaption></figcaption></figure>


# Use a send message step in a journey

Deliver personalized messages to your customers across WhatsApp, SMS, and Email within automated journeys.

In this article, you will learn how to add a **send a message step** to a journey. This step is essential for delivering marketing content to your contacts through journeys.

There are specific channels through which businesses can send promotional, marketing, and notification updates to their customers. By utilizing the "send a message" step, you can communicate with your customers via the following channels:

* [WhatsApp](/applications/channels/channels/supported-channels/whatsapp)
* [SMS](/applications/channels/channels/supported-channels/sms)
* [Email](/applications/channels/channels/supported-channels/email)

{% hint style="info" %}

### Good to know

* This step uses message templates. If you update a message template that is used in a published journey, the journey will continue to use the original version of the message template that was selected when the journey was published.
* To use the latest version of a template in your journey, you must manually update the "Send a message" step associated with that template. This ensures the journey fetches and utilizes the most recent template version.
* If a template used in a published journey gets deleted, the journey will encounter an error at the step that requires that template, causing it to fail.
  {% endhint %}

### What you'll need

* A [message template](/applications/content/message-templates)
* An installed [channel](/applications/channels/channels)

### Step one: Add the send message step

Assuming your journey already has a trigger set up, you can now add a *Send a message* step.\
From the right-hand action bar, drag the *Send Message* action into the journey builder.\
You’ll see a blue plus icon or a grey drop area indicating where the step can be placed.\
Simply drop the action at the desired location in your journey to add it.

<figure><img src="/files/VKdTWCGpyHaROg3aYvWu" alt=""><figcaption></figcaption></figure>

### Step two: Configure the send message step

1. Choose the channel instance of your choice. All installed channel instances will be available here.

<figure><img src="/files/YWtYv5NfHouoGOUtRvLK" alt=""><figcaption></figcaption></figure>

2. After selecting the channel instance, select the message template that you want to use.
3. After selecting the template, you can see a preview of the message template. Check that everything looks right.
4. If there are any variables in your message template, configure them here. Make sure you add a default value in case there is no matching variable available in the recipient's contact profile.
5. **Save** the step.

<div align="left"><figure><img src="/files/cxb37Pphyq3xOP7ZjKBE" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="success" %}
Success! You've added a send message step.
{% endhint %}


# Use a wait step in a journey

Using Wait step in Journeys.

In this section, you'll learn how to add a **wait step** in your journey. Wait steps are crucial to ensuring the timed execution of events, helping optimize engagement with contacts at prime moments.

Businesses often require time gaps between sending a series of messages or assessing certain conditions. A 'wait' step in a journey allows you to:

* Schedule a series of brand engagement messages.
* Dispatch content at high engagement times.
* Introduce delays ensuring components like data capture or condition assessments work optimally.

{% hint style="info" %}

### Good to know

The configuration options for a wait step are:

1. Wait X Minutes
2. Wait X Hours
3. Wait X Days
4. Wait X Days and delay until a specific time of day

If you choose to create a delay of X days, each day will be calculated as a 24-hour period. If you choose to wait X days and delay until a specific time of day, each day will still be calculated as a 24-hour day.
{% endhint %}

<figure><img src="/files/YBtmJxGFSrpL136RsAYz" alt=""><figcaption></figcaption></figure>

### Example

Let's say you want to have a time delay for "Wait 1 Day, until 10 AM" and then send a message:

* Contact A enters your series at 9 AM. Waiting 1 day (24 hours) would land your recipient at 9 AM the next day and the message would send 1 hour later at 10 AM. The total amount of time between when they trigger the flow and when they receive the first message is 25 hours.
* Contact B enters your series at 11 AM. Waiting 1 day (24 hours) would land your recipient at 10 AM the day after next. In order to send at your specified time of 10 AM, we'd need to wait another 23 hours. This means Contact B would receive your message almost a full day later than Contact A.

#### Delay until a specific time of day

You may want to control what time of day contacts receive a specific journey email, SMS, or WhatsApp message. This can be useful when you want to standardize the time of day people receive your messages, for example, if you know that your audience typically opens emails at a certain time.

Within the settings for a time delay component, you can choose **Delay until a specific time of day**. If you have an message following this time delay, this will establish the send time for that message.

<figure><img src="/files/kgQwxS1XunsPH4Lrae50" alt="" width="375"><figcaption></figcaption></figure>

After choosing a time of day, you can then select a timezone. You can choose a specific timezone in order to ensure each contact receives your message at your preferred time of your choice. By default, it will be set as Recipient Local Timezone determined by Bird.\
\
One benefit to choosing the "Wait X Days" option, without selecting a set time, is that each contact will then receive the email, SMS, or WhatsApp message at the same time they entered the journey - which is likely when they'll be most active, as that's the same time they performed the action that added them to the journey.

#### Delay until a specific day of the week

You may want to control what day of the week contacts receive a specific journey message. This can be useful when you want to standardize the day of the week people receive your messages, for example, if you know that your audience typically converts on weekends.

<figure><img src="/files/O8A97YFJ6P4NXvRtayR0" alt="" width="375"><figcaption></figcaption></figure>

#### Enable condition to check for an event

You may want to wait for the specified time before taking the customer further on the journey, however you may want to take them on a different path as soon as they perform an action e.g. placed an order.

In this case, you would Add a Wait step which waits for 2 days to next reminder if customer doesn't complete a purchase but as soon as they place an order they should go to a branch for order confirmation

<figure><img src="/files/9giUJDuVcVH5bdNuD6ZS" alt="" width="375"><figcaption></figcaption></figure>

After adding condition, the Wait step will branch off based on Placed Order vs Else

<figure><img src="/files/bm3dy0G77LkVOJ8t4QwK" alt=""><figcaption></figcaption></figure>

#### Wait until a date attribute of a contact

In cases where you do not want to wait until a fixed number of days but actually until a date attribute for each contact who enters the journey, for e.g. I want to wait until the renewal date of the contact before sending the next message, you can take the following steps:

* Switch to Exact time tab
* Select the date attribute till which the Wait step should wait
* Give a default if it is missing value for a contact
* Select any offset from this date as in on the date, x days before or after
* Select timezone (by default it is local recipient timezone)

<figure><img src="/files/9yzYYsTHWDSYOaYROsWr" alt="" width="375"><figcaption></figcaption></figure>

### What you'll need

* A journey with two or more steps

### Step one: Add the wait step

Assuming you already have a journey or are building a journey that has a trigger set up, you now can add a ‘Add the wait’ step.

1. Hover your mouse pointer over the nodes of the journey tree or in between two steps and you’ll see an add a step icon.
2. Select the add a step icon.
3. Select the **Wait** step.

### Step two: Configure the wait step

1. By default, the wait step is set to a time delay of 5 minutes. For marketing purposes, we recommend increasing this time.
2. If you want to wait until a certain amount of time has passed, configure the time delay you want to use, by choosing minutes, hours, or weeks.
3. If you want to wait until a specific date and time, click the toggle and configure the time delay until a specific time of day, then add the time and the timezone the step should wait for.
4. Click **Save**. The tree will be updated.

{% hint style="success" %}
Sucess! You've added a wait step.
{% endhint %}

### FAQs

#### I am unable to find the timezone I want to use

Please reach out to support.

#### Do timezones account for daylight saving

Yes, we automatically account for daylight savings. If you do not see this reflected, try publishing the journey again. If the issue persists, please contact support.


# Use a conditional step in a journey

Brand your journey into specific user paths.

In this article, you'll learn how to add a **conditional step** to a journey. Conditional steps allow you to branch your journey into specific user paths.

{% hint style="info" %}

### Good to know

The conditional step:

* Creates branches or 'user paths' when it is added to a journey. By default, an 'ELSE' path is always created as a fallback.
* All conditional branches return to the parent tree, unless you have used the [End journey step](broken://pages/LStgyYkGx6JMNkx79zwN) to terminate them.
* You can create multiple branches with a single conditional step.

#### Applying conditional filters

When setting up your conditional step, there are two types of filters you can apply:

* **Properties about someone**: Filter based on contact attributes, including custom attributes and synced connector events.
* **If someone is in or not in a list**: Filter for a specific list, or choose to combine two or more lists. This is particularly useful when building a journey to send marketing emails.
  {% endhint %}

### What you'll need

* A journey with a trigger
* A contact with attributes

### Step one: Add the conditional step to a journey

1. Hover your mouse pointer over the last node of the journey tree or over a conditional step’s path you’ll see an ‘add step’ icon.
2. Select the add a step icon.
3. Select the **Conditional step**.

### Step two: Configure the conditional step

1. Give the branch a name.
2. Select a conditional filter type.
3. Configure the filter by selecting an attribute and setting up the filter.
4. Click **Save**, unless you want to add an [additional filter](#optional-step-three-add-an-additional-filter) or [multiple branches](#optional-step-four-add-multiple-branches).

If you click **Save**, your journey will be updated, and the ELSE path will now be visible.

### \[Optional] Step three: Add an additional filter

If you want to layer additional filters at this stage, follow these steps:

1. Below your existing filter configuration, in the **Condition** section, click **Add +**. A new conditional block will appear.
2. Select the conditional filter type.
3. Configure the additional filter by selecting an attribute and setting up the filter.
4. Click **Save**, unless you want to add [multiple branches](#optional-step-four-add-multiple-branches).

If you click **Save**, your journey will be updated, and the ELSE path will now be visible.

### \[Optional] Step four: Add multiple branches

If you want to add multiple branches to your journey, follow these steps:

1. Below your existing filter configuration, in the **Condition** section, click **New branch +**.
2. Give the branch a name.
3. Select the conditional filter type.
4. Configure the additional filter by selecting an attribute and setting up the filter.
5. Double-check the setup of your branches before you continue.
6. When you've finished setting up your additional branches, click **Save**.

Your journey will be updated, and the ELSE path, any branches you have configured previously, and your new branch will now be visible.

### Step five: Terminate your branches

1. Hover over the branch that you want to terminate. At the last node of that branch, select the **Add step** icon.
2. Select the **End journey** step. This will terminate the path.

If you want to remerge the branch back into the main journey tree, you can delete the **End journey** step by clicking it, then clicking the **Delete** icon.

{% hint style="success" %}
Success! You've set up a conditional step.
{% endhint %}

### FAQs

#### How do I remove a branch while leaving the other branches in place?

From the conditional step setup, find the branch that you want to remove, and click the **Delete** icon.

#### What happens when two branches are configured the same way?

The journey will run with the first matching branch from the configured branches, from left to right. Contacts moving through the journey will only move through this branch.


# Use an update contact step in a journey

Automatically refresh contact attributes to personalize each customer’s path.

In this article, you'll learn how to add an **update contact step** to a journey. This allows you to automatically update contact attributes as a contact moves through the journey.

{% hint style="info" %}

### Good to know

* You can only update the contact attributes for existing contacts.
* You can update multiple attributes with the same **update contact step**.
* It's best practice to use the **update contact step** at the end of a journey. This reduces the number of steps that you need to use, and makes it easier to keep the journey clean.
  {% endhint %}

### What you'll need

* A journey with a trigger
* A contact with attributes

### Step one: Add an update contact step to a journey

1. In the journey builder, drag the **Update Contact action** from the right-hand panel and **drop it** where you want it to appear in the flow.\
   You’ll see a blue plus icon or a grey drop area showing valid placement spots.

### Step two: Configure the update contact step

1. Click **Add +.**
2. Select the contact attribute that you want to be updated. For example, you might want to update a custom attribute called ‘note’ about this contact.
3. Configure the update that you want to make to the selected attribute.
4. \[Optional] Layer additional contact attribute changes by clicking the **Add +** button and repeating steps 2-3.
5. Click **Save**.

<figure><img src="/files/HtWn7UrANt2x59fmPr8Q" alt=""><figcaption></figcaption></figure>

If you want to delete an update contact condition, click the **Delete** icon next to the step configuration.

{% hint style="success" %}
Success! You've just added an update contact step.
{% endhint %}

### FAQs

#### Can I update attributes from an external system?

Yes, you can update contact attributes that are synced from an external system via a connector in a journey.


# Use an end journey step in a journey

Use the End Journey step to close automation paths cleanly after specific outcomes.

In this article, you'll learn how to add an **end journey step** to a journey. This allows you to terminate a journey at a specific step.

{% hint style="info" %}
**End journey steps** can only be added at the end of a conditional path, or an entire journey. You can't add an **end journey step** in the middle of a path.
{% endhint %}

{% hint style="info" %}

### Good to know

The 'end journey' step is useful when:

* A conditional step branches the journey into multiple paths.
* You want to intentionally terminate one branch once a specified conversion or goal is met.
* You have complex journeys with numerous branches or nested conditionals and wish to end specific paths at specific points.
  {% endhint %}

### What you'll need

* A journey with two or more steps, and/or a conditional step.

### Step one: Add the end journey step

1. Hover your mouse pointer over the last node of the journey tree or over a conditional step’s path you’ll see an ‘add step’ icon.
2. Select the add a step icon.
3. Select the **End journey** step.

{% hint style="success" %}
Success! You've added an end journey step.
{% endhint %}


# Troubleshooting Journeys and FAQs

This article outlines common issues and questions you may face when building journeys and how to troubleshoot them.

### Journey Message step is not sending

Your journey message step may not send messages immediately due to following reasons

#### Frequency Capping is reached

For a Message step in Journeys, there is an Advanced tab which allows you to toggle a setting called "Skip recently messaged contacts". This toggle is ON by default and if messages across campaigns and journeys to same contact exceed the frequency capping settings, then it will skip sending messages.

Troubleshooting Steps:

* If you want to send the message irrespective of the frequency cap, toggle OFF "**Skip recently messaged contacts**" from the Advanced tab of the Send Message step in the journey for the frequency cap to be not applied

<figure><img src="/files/1xxZVp1BpXeo2Bu3RD03" alt=""><figcaption></figcaption></figure>

The frequency capping settings are defined for each platform under

* Settings > Marketing
* Select specific platform like Email, SMS, WhatsApp or Push > **Frequency capping**
* Update this frequency capping settings if you want to set it to a different value

<figure><img src="/files/l2vKcowxNgKMVnKyug4a" alt=""><figcaption></figcaption></figure>

### Journey is not getting triggered

#### Using segment trigger which has 6 hours default delay

When you use any of the below triggers in a journey, there is an inherent 6 hour delay between when the condition is satisfied and when the journey is triggered.

* Added to segment/Removed from segment
* Date property

<figure><img src="/files/QvqAsI0lV5WpbPdc8AVK" alt=""><figcaption></figcaption></figure>

#### Using segment trigger and updating the segment

When you publish a segment trigger journey and then later update the segment definition by editing the segment, it would no longer run. This is because the journey is still published with the older version of the segment.

If you want to edit the segment after publishing the segment trigger journey:

* Edit the segment
* Edit the journey and re-select the segment in the trigger
* Publish the journey again

Now, your journey is published with your latest changes and will trigger as expected.

#### Contact is already in progress with the journey

When a contact enters a journey with an **In Progress** run, they cannot re-enter the journey again unless they have completed, exited, rejected or errored from the journey. This is applicable for all triggers except Related Object triggers.

### Condition step is failing or stuck

When defining a condition step and selecting a property value, do not update the Data type dropdown from its prefilled value. This dropdown indicated the data type and changing it may cause failed evaluation of the condition. For example,

When selecting a property like Birthdate, the data type will be pre-selected as Date by default. DO NOT change its value from the dropdown.

<figure><img src="/files/97Ryi76qESxtPK69idtK" alt=""><figcaption></figcaption></figure>

### Analyzing Journey Insights

**On Wait step, Entered and Completed may be different in a selected time range**

The journey metrics show a snapshot of the journey runs in a selected time range, which means that if you have a time filter of 30 days, **Entered** shows the total number of runs which entered in the journey in 30 days which may be 100. However, **Completed** may be more or less than Entered as more or less runs may have completed the Wait step in the 30 days as they may have entered and waiting before the selected time range. In this case, you can increase the time range to see more data.

**Impact of Deleting steps**

When you delete steps, the metrics are reset as it is new step and they are not combined with same step of the old version. You can still see metrics by selecting the older versions on the version filter. If the step is completely deleted, you can also see their metrics only by using the version filter.

**Why your branches may show > 100%**

* When a **Jump To** step is adding to a step and the branch, the **Entered** on the step would be greater than **Completed** form the immediate previous step. This causes the branch percentage to show > 100%
* If you have added or deleted steps in a new journey version, this may also cause > 100% branch percentages.

**Why my next step shows more Entered than Sent in previous step**

This may happen if messages sending is skipped due to reasons like global or percentage holdouts. These skip sending messages on a message step in a journey but allow the contacts to continue and enter the next step causing Entered on the next step to be higher than Sent on the previous step. Please click on the Message step to see detailed Entered and Skipped metrics for clarification.

### FAQs

**How to update the journey for contacts who have already entered the journey?**

You cannot update the journey or messages by updating the journey as the entered contacts will follow the version of the journey they entered in. When you make edits to the journey, a new journey version is published and it is applicable to new contacts who will enter from now on.

You can only cancel the runs from the Runs page and make them re-enter by satisfying the trigger criteria again.

**How to exit contacts who have already entered the journey?**

You cannot make the contacts exit by updating the journey as the entered contacts will follow the version of the journey they entered in. When you make edits to the journey, a new journey version is published and it is applicable to new contacts who will enter from now on.

To exit existing contacts, you can only try to find them using the segment Journey entered event and then cancel their runs manually from the Runs page.

**How to make contacts who completed a journey enter a second journey?**

You can achieve this in following ways:

* **Update contact to enter another list:** You can add an Update contact step at the end of the first journey which adds them to a list which acts as a trigger for the second journey

<figure><img src="/files/SVZoD7uRX0FJOnuqq6h8" alt=""><figcaption></figcaption></figure>

* **Update contact attribute value:** You can add an Update contact step at the end of the first journey which updates a contact attribute value.
  * You can then create a segment using Properties about Contact and use this attribute value.
  * This segment can now be used as a trigger for the new journey.
* **Use Journey Completed event in segment:** You can directly create a segment using Journey Completed event
  * Create a segment using **Something was done or not done > Journey Run Completed where Journey is \<journey name>**

<figure><img src="/files/3NXOAeVBNNDWzj1xpLNu" alt="" width="375"><figcaption></figcaption></figure>

* Use this segment as a trigger for the second journey.<br>


# Contacts

Customers and potential customers, all in one place.

Bird's CRM is where all your customer and potential customer contacts are stored, managed, and organized in one place, accessible across the entire platform.

<table data-view="cards"><thead><tr><th></th><th data-hidden></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Concepts</strong></td><td></td><td></td><td><a href="/pages/MV7JIxes4Qtdc9Wof6uh">/pages/MV7JIxes4Qtdc9Wof6uh</a></td></tr><tr><td><strong>How-to</strong></td><td></td><td></td><td><a href="/pages/SM62SzDamY9jPlYuUqvp">/pages/SM62SzDamY9jPlYuUqvp</a></td></tr></tbody></table>


# Concepts

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Contacts</strong></td><td>Learn about the data we store about contacts.</td><td></td><td><a href="/pages/O0ory4QfZC1cvendCQt7">/pages/O0ory4QfZC1cvendCQt7</a></td></tr><tr><td><strong>Profiles</strong></td><td>See what's stored on an individual contact profile.</td><td></td><td><a href="/pages/J5mCK3KmGRcRVk4ql7an">/pages/J5mCK3KmGRcRVk4ql7an</a></td></tr></tbody></table>


# Contacts

## Where does contact data come from?

Contact data either comes from interactions that your customers have with you via the Bird platform, or from importing contacts, either manually or via [Connectors](/applications/integrations/integrations).

This allows you to integrate data from external sources into your contact profiles in Bird's CRM, giving you a complete picture of your customers' interactions and behaviors.

## How are contacts used?

### Contacts in Campaigns

Create [segments](/applications/audience/lists-and-segments/concepts/segments) and [lists](/applications/audience/lists-and-segments/concepts/lists), which can be used to target specific sets of customers with [Campaigns](/applications/campaigns/campaigns). Send campaigns personalized with customer data from your CRM.

### Contacts in Journeys

Trigger journeys on contacts when they meet the trigger criteria. Add entry/exit conditions as well as condition branches based on contact properties or events.

### Contacts in Content Editing

Contact attributes and events can be used to personalize content by using variables or advanced personalization with liquid coding.

### Contacts in Flows

Use this information in [Flows](/applications/automation/flows) to create custom logic based on specific customer details and personalize messages using CRM data.

### Contacts in Inbox

Surface customer information in [Inbox](/applications/inbox/inbox) to provide your agents with context about the person they're talking to.

This means that your agents can easily pull up a customer's contact profile, which includes a wealth of information about that customer, such as their contact details, previous interactions with your company, and any other relevant information.

The contacts directory is a centralized location within MessageBird where all of your contact information is stored. This directory allows you to easily access and manage all of your customer data in one place.

## Contacts List

The contacts directory is your centralized CRM location where all customer information is stored, allowing you to easily access and manage all customer data in one place.

### Overview

By default, the list view displays columns for the contact's display name, first name, last name, created date, and updated date.

You can easily change the columns that are displayed by clicking on the "columns" symbol located in the top right corner of the directory. This allows you to choose which attributes to display, making it easier to access the information that is most important to you and your team.

<figure><img src="/files/UCBpPDZAKeR51Zx7fRMN" alt=""><figcaption></figcaption></figure>

### Contact filtering

You can apply simple filters like list or company. However, the most useful way of filtering contacts would be using **Advanced filters** which will allow you to add the same filters as used for segmentation.

Contacts can be filtered using [attributes](broken://pages/ILty7HQuUadhEmiVkLh5#contact-attributes) or [identitifers](broken://pages/ILty7HQuUadhEmiVkLh5#contact-identifiers). These attributes can come from connector integrations, CSV uploads, or be defined manually.

By filtering contacts based on these attributes, you can quickly find the information you need to personalize your interactions with customers or to create targeted campaigns.

For example, you could use the "attribute = is unknown" filter to identify customers who haven't provided certain information, allowing you to follow up and fill in any missing details. You could also use the "attribute = equals" filter to find customers who meet specific criteria, such as customers who have made a purchase in the last month.

These filtered contacts can then be saved as an [Audience](broken://pages/n2Tg6Kqb1dC8uVKG5n5g).

### Bulk Actions

You can select one or more contacts and apply bulk actions on them. The bulk actions will appear at the bottom of the list.

<figure><img src="/files/2ndaqK1KdctdsUsorI9e" alt=""><figcaption></figcaption></figure>

Note that for **Add to list** bulk action, you can only select **800 contacts at a time**. If you want to do more, you should use Contacts csv import option under **Manage data > Import from CSV** and select the list(s) to add to under **Apply categories** step of import.

<figure><img src="/files/YzBv1udPCoON17SV5ZlT" alt=""><figcaption></figcaption></figure>


# Data Model for Contacts

Understanding Bird’s Data Model for Unified Contacts

Bird’s data model is designed to unify all customer information into a single contact profile. This profile consolidates identifiers, attributes, events, objects, and lists so you can segment, analyze, and personalize communications effectively.

### The Contact: Central Object

The **contact** is the central object in Bird’s data model. Every contact has a **Contact ID** (visible in the profile URL), which uniquely identifies it within Bird.

<figure><img src="/files/J2NpMHJD4ZWSVnDwfg5u" alt=""><figcaption></figcaption></figure>

### Identifiers

Identifiers are unique values that Bird uses to recognize and unify a contact across multiple channels.subscriptions

<figure><img src="/files/HM4OPU5aVGNPc8jl0uQU" alt=""><figcaption></figcaption></figure>

* **Standard identifiers (provided by Bird):**
  * Email: This identifier makes the contact eligible for email communication
  * Phone: This identifier makes the contact eligible for SMS, RCS and WhatsApp communication
  * Push token: This identifier makes the contact eligible for Mobile Push communication
  * Visitor ID: This identifier is created when tracking page or form viewed events using Bird SDK
  * Chat ID: This identifier is created when tracking live chat interaction on website using Bird SDK
* **Custom identifiers (user-defined):**
  * Any unique ID from your systems (e.g., CRM ID, loyalty ID)
  * Must be unique per contact (no duplicates across profiles)

*Note that if there are multiple values for the same identifier e.g. two or more email addresses or two or more phone numbers, the message will be sent to only one of them which is last updated or added.*

### Attributes

Contacts can have one or more attributes—data fields that store descriptive information.

<figure><img src="/files/AFF0IbRsimf1ZTQISAhb" alt=""><figcaption></figcaption></figure>

* **Attributes can be of type:**
  * String: Text, Arrays, Single or Multiselect options
  * Boolean
  * Number
  * Date and Time
* **Standard attributes:** These are predefined by Bird which can be used for storing contact details
  * Display name
  * First name
  * Last name
  * Age
  * Birthday
  * Country
  * City
  * Province
  * Postal code
  * Locale
  * Timezone
  * Platform Subscription are also boolean attributes which are similar to other attributes which help indicate the user consent to receiving communication from a platform. Any platform attribute not set as Subscribed will be filtered out when sending communication on that platform from Campaigns.
    * Email Subscription
    * SMS Subscription
    * WhatsApp Subscription
    * RCS Subscription
    * Push Subscription
* **Custom attributes:** created by users to store any additional information

**Suppressions:** Note that contact identifiers can be suppressed such as Email or Phone number for specific platforms due to reason like unsubscribed or invalid email/phone. You can learn more about [consent and subscriptions](/applications/audience/contacts/concepts/consent-and-subscriptions).

**Updating attributes and identifiers:**

* Via [Contacts API](https://docs.bird.com/api/contacts-api)
* [CSV import](https://docs.bird.com/applications/audience-and-contacts/contacts/how-to/add-contacts)
* Manual creation and updates
* Integration syncs
* Data flows

### Lists

Contacts can optionally be added to one or more lists.

* Being in a list allows you to group contacts for targeting.
* A contact can be **removed** from a list, which marks them as **Unsubscribed** from that list.
* Removal can happen manually or when a user clicks a **list unsubscribe link** in an email.

**Adding contacts to lists:**

* Via [Contacts API](https://docs.bird.com/api/contacts-api/api-reference/manage-contact-lists/add-contacts-to-a-list)
* [CSV import](https://docs.bird.com/applications/audience-and-contacts/contacts/how-to/add-contacts)
* Manual updates
* Journeys or Flows Actions

### Events

Events represent actions or interactions associated with a contact. They appear as a **timeline** on the contact profile.

<figure><img src="/files/HkL074QfIRjyCCJ5IQK5" alt="" width="375"><figcaption></figcaption></figure>

* **Standard (semantic) events:** These are pre-defined by Bird, such as:
  * Ecommerce Events: Placed an order, Updated cart, Viewed product, Viewed page, Checkout, Checkout abandoned etc.
  * Messaging Events: Sent message, Received message (delivered), Opened message, Clicked message link, Failed to deliver message, Bounced message, Marked as Spam, Unsubscribed message.
  * Journey Events: Journey started, Journey rejected, Journey completed, Journey exited, Journey cancelled
  * List / Segment events: Subscribed to list, Unsubscribed from list, Updated segment membership
  * Discount event: Discount assigned, Discount failed
* **Custom events:** user-defined actions that fit your specific use cases e.g. Opened an account, Made a transaction etc.

**Creating or Updating events:**

Following methods can be used for managing events for contacts

* **Standard events:** API, SDK, integration sync, or data flows
* **Custom events:** API, SDK, or data flows

You can find Events API [here](https://docs.bird.com/api/contacts-api/tracking-contact-events) and SDK event tracking details [here](https://docs.bird.com/api/client-sdks/event-tracking).

### Objects

Objects represent related entities that can be connected to contacts.

* **Standard object:** Company
* **Custom objects:** created by users to model business-specific entities

One or more custom objects records of one or more custom object types can be associated to a contact

**Examples of custom objects:**

* Accounts
* Subscriptions
* Bookings
* Loyalty Programs

For example, each of these custom objects can have one or more records of them associated to a contact as shown below:

<figure><img src="/files/uuzzHdOkmJmcFK0AonsP" alt=""><figcaption></figcaption></figure>

**Key points:**

* Objects can exist standalone but can also be linked to contacts in a **one-to-many relationship**.
* Custom objects act like relational tables associated with contacts.
* Each object can have its own **custom attributes**.

**Creating or Updating events:**

* **Company Object:** API, CSV Import, or data flows
* **Custom Objects:** API or data flows

You can find Custom Objects API [here](https://docs.bird.com/api/contacts-api/api-reference/manage-custom-objects) .

### Using the Data Model

#### Segmentation

You can build segments using:

* Identifiers and attributes
* Events (standard or custom)
* Company or any related custom objects

#### Content Personalization

When sending campaigns or journeys, you can personalize content using:

* **Identifiers and attributes:** available in all communications from Campaigns and Journeys
* **Event properties:** available only in Journeys, when the trigger is that same event
* **Related custom object properties:** available only in Journeys, when the trigger is the same related object

#### Journey Triggers

You can trigger journeys based on

* Added to list / Removed from list
* Added to segment / Removed from segment
* Contact Updated: where one of the attribute values are updated
* Any standard or custom events
* Related object is updated/added/removed from contact

#### Journey Conditions

You can add entry or exit conditions or define condition steps for branching in journeys based on:

* Attributes and Identifiers
* If contact is part of a list or not
* If contact is part of a segment or not
* Any standard or custom event
* Properties of an event selected as the trigger

### How to use discounts or coupons or offers for personalization?

Note that discounts are not associated with contact object directly in any way. Discounts can be stored separately under Content > Discounts by uploading a csv of discount codes in a discount object or by creating a discount code directly syncing with Shopify integration.

* Uploaded or created Discounts can be used for unique discount codes only in Emails
* Contacts will get Discount code assigned and Discount code failed events associated with them if a discount code is sent or failed to send for them

### How to use adhoc data such as unique links for personalization?

Users can upload a csv file with adhoc data columns mapped to contact identifiers under Advanced > Additional data section.

The columns in the Additional data csv can then be used for mapping content variables in campaigns.

### Summary

Bird’s unified contact profile brings together all customer data into a single view, including:

* **Identifiers** for unique recognition
* **Attributes** for descriptive context
* **Lists** for subscription management
* **Events** for behavioral tracking
* **Objects** for relational data modeling

This structure allows you to create precise segments, automate customer journeys, and deliver deeply personalized experiences at scale.


# Contact profiles

Every contact that is stored in Bird has a *contact profile*. This is where you can see all available data that you have about that contact.

## View a contact profile

1. From **Audience** > **Contacts**, find the contact you want to view.
2. Click to select the contact. You'll be taken to the contact's profile.

### Subscription statuses

Subscription statuses for [WhatsApp](/applications/channels/channels/supported-channels/whatsapp), [SMS](/applications/channels/channels/supported-channels/sms), [Push](/applications/channels/channels/supported-channels/push-notifications) and [Email](/applications/channels/channels/supported-channels/email) are recorded on each contact's profile.

<figure><img src="/files/fX3OYZ415DYhw2rFRcn7" alt=""><figcaption></figcaption></figure>

### Identifying properties

In the 'Identifiers' section of a contact profile, unique information such as phone numbers and email addresses are stored.

{% hint style="info" %}
An *identifier* is a unique piece of information, such as a phone number or email address, that is used to identify a specific contact in your contact directory.
{% endhint %}

### Bird properties

In the 'Bird' section, additional properties are stored. These properties are sourced from CSV imports, by adding individual contacts manually, or by updating a contact's profile in [Inbox](/applications/inbox/inbox) or via [Flows](/applications/automation/flows).

{% hint style="info" %}
*Bird properties* are non-unique pieces of information that are connected to a contact profile, and can be used to personalize customer experiences.
{% endhint %}

Here's the information you can find by default in the Bird properties section:

* **Display name**
* **First name**
* **Last name**
* **Avatar URL**
* **Country**
* **Created at**
* **Updated at**
* **SMS subscription**
* **Email subscription**
* **WhatsApp subscription**
* **Locales**
* **Gender**
* **Lists**

### Integration properties

<figure><img src="/files/ANhOpyFSZUPFmRLVWAV9" alt=""><figcaption></figcaption></figure>

Connector properties are sourced from installing [integrations](/applications/integrations/integrations), such as [Salesforce](/applications/integrations/integrations/supported-integrations/salesforce), [HubSpot](/applications/integrations/integrations/supported-integrations/hubspot), or [Shopify](/applications/integrations/integrations/supported-integrations/shopify). On a contact's profile, these properties will be displayed below the Bird properties.

## Events

<div align="left"><figure><img src="/files/wo4OiLsyK8yIe9lVjfDD" alt=""><figcaption></figcaption></figure></div>

The 'Events' panel is a visual timeline of every event that a contact has engaged with. This includes events from within Bird, such as campaigns they've been sent, and events from installed ecommerce connectors, such as an abandoned checkout in Shopify.

You can filter the activity panel by event type and date.

Here's the event types you can find in the Activity section:

### Bird activity

* Message sent
* Message bounced
* Message delivered
* Message marked spam
* Message opened
* Message subscribed
* Message unsubscribed
* Message link clicked
* WhatsApp message sent
* WhatsApp message read
* WhatsApp reply clicked
* WhatsApp message delivered
* Email sent
* Email unsubscribed
* Email opened
* Email marked as spam
* Email link clicked
* Email delivered
* Email bounced
* SMS message sent
* SMS link clicked
* SMS message delivered
* Chat message delivered
* Chat message successfully sent
* Segment membership changed

Learn how to [segment an audience based on Bird activity](/applications/audience/lists-and-segments/how-to/create-commonly-used-segments).

### Ecommerce connector activity

* Checkout abandoned
* Order confirmed
* Order canceled
* Checkout started
* Order fulfilled

{% hint style="info" %}
**Note:** Contact activity timeline events are retained for 2 years.
{% endhint %}

Learn how to [segment an audience based on ecommerce activity](/applications/audience/lists-and-segments/how-to/create-commonly-used-segments#example-segment-your-contacts-based-on-ecommerce-connector-behavior).


# Consent and subscriptions

Learn how consent is collected, recorded on contact profiles, and best practices for WhatsApp, Email, and SMS compliance.

## Unsubscribe vs Suppression

**Unsubscribe:**

* A contact actively withdrawing permission to receive **marketing messages** via Campaigns
* Managed at the **channel level** (e.g., can unsubscribe from SMS but stay subscribed to Email)
* Only applies to Campaign messages, not Inbox messages
* Triggered by customer action (clicking unsubscribe link, texting "STOP")

**Suppression:**

* A **compliance block** that prevents you from sending messages to a specific identifier (phone number or email address)
* Works at the **identifier level**, not contact level
* Can be triggered multiple ways: unsubscribe, spam complaints, hard bounces, manual addition, or global suppression list
* More comprehensive than unsubscribe—includes automatic blocks for deliverability issues

**Key relationship:** When a contact unsubscribes from a channel, it automatically creates a suppression (compliance block) for that identifier on that channel.

**Example:**

* A contact unsubscribes from SMS = Creates a suppression on their phone number for SMS
* That same contact's email can still receive emails (different identifier, different channel)
* If their email hard bounces = Automatic suppression added for that email address


# Managing unsubscribes

Learn how contact unsubscribes work in Bird.

When a contact ‘unsubscribes’, they are withdrawing their permission for you to send them marketing messages with [Campaigns](/applications/campaigns/campaigns). This is also known as ‘opting out’.

**Important:** Unsubscribing automatically blocks that contact from receiving messages on that channel (this is called a suppression). Learn more about [suppressions](/applications/audience/suppressions).

**Note:** If you manually change a contact's subscription status back to "Subscribed," this does not automatically remove them from the suppression list. You'll need to unsuppress them separately, as contacts can be suppressed for other reasons beyond unsubscribing (like spam complaints or delivery failures).

{% hint style="warning" %}
Contacts can only unsubscribe from messages that are sent with [Campaigns](/applications/campaigns/campaigns). They cannot unsubscribe from messages that are sent via [Inbox](/applications/inbox/inbox).
{% endhint %}

### How unsubscribes are tracked and managed

Unsubscribes are managed on a channel level. This gives contacts control over the type of marketing messages that they receive from your business when you send them via Campaigns.

For example, a contact might decide to unsubscribe from your SMS messages, but stay subscribed to your WhatsApp and Email messages. When they unsubscribe from SMS, they will remain subscribed to the other channels.

This also means that a contact who wants to unsubscribe from all of your marketing messages must unsubscribe from each channel individually.

{% hint style="info" %}
Contacts can only unsubscribe from one channel at a time. Unsubscribing via a text message will only unsubscribe them from SMS, not from the other channels they are subscribed to.
{% endhint %}

### How opt-outs work per channel

{% hint style="warning" %}
Opt-out handling differs depending on the channel. Not all channels support automatic keyword-based opt-outs.
{% endhint %}

#### SMS

SMS has **fully automated** opt-out handling.

* [SMS](https://docs.bird.com/applications/channels/channels/supported-channels/sms/concepts/opt-in-and-opt-out-compliance)
* **Keyword detection** — When a contact replies with an opt-out keyword (e.g. STOP, UNSUBSCRIBE, END, QUIT, CANCEL), Bird automatically processes the opt-out.
* **Automatic confirmation** — Bird sends a localized opt-out confirmation message to the contact.
* **Automatic suppression** — The contact's identifier is added to the suppression list, blocking future marketing sends on that channel.
* **Enforced opt-out links** — For SMS, opt-out links are automatically included in outbound marketing messages.

No additional setup is required — this works out of the box for SMS campaigns.

#### Email

Email does **not** have automatic keyword-based opt-out handling. Instead, Email opt-outs are managed through **unsubscribe links** included in your email content. When a contact clicks the unsubscribe link, a suppression is created.

Bird's suppression enforcement works for Email — if a contact is on your suppression list, Email marketing messages will be blocked from sending to them.

#### WhatsApp

WhatsApp does **not** have automatic keyword-based opt-out handling. If a contact replies "STOP" to a WhatsApp Campaign, the message will be received and displayed, but it will **not** automatically trigger a suppression or update the contact's subscription status.

This is because WhatsApp's protocol does not follow the same STOP-keyword convention as SMS. WhatsApp's own compliance model relies on users blocking the business number directly in the WhatsApp app, and WhatsApp's quality rating system penalizes businesses that receive high block/report rates or negative feedback.

However, Bird's suppression **enforcement** does work for WhatsApp — if a contact is on your suppression list, WhatsApp marketing messages will be blocked from sending to them.

**To manage WhatsApp opt-outs, you need to handle this yourself.**

Here are your options:

**Option 1: Build a Flow (recommended)**

Create a Flow to automatically detect opt-out keywords and update the contact:

1. Go to Workflows
2. Create a flow using the Message Lifecycle trigger
3. Add a conditional step to monitor for keywords (e.g., if text = "stop")
4. Use the **"Create or Update Contact by Identifier"** step to update the contact's `subscribedWhatsApp` attribute to `false`

This updates the contact-level subscription status, which in turn blocks future WhatsApp marketing sends.

**Option 2: API-based suppression**

Use the [Suppressions API](https://docs.bird.com/api/contacts-api/api-reference/manage-contact-suppressions) to bulk-import or individually add contacts to your WhatsApp suppression list. This is useful for handling historical opt-outs you may have missed.

**Option 3: CRM**

Manage suppressions or contact-level subscription statuses manually.

#### Channel comparison

| Feature                                | SMS                  | Email | WhatsApp |
| -------------------------------------- | -------------------- | ----- | -------- |
| Automatic keyword opt-out (STOP, etc.) | ✅                    | ❌     | ❌        |
| Automatic opt-out confirmation reply   | ✅                    | ❌     | ❌        |
| Enforced opt-out links                 | ✅                    | ❌     | ❌        |
| Unsubscribe link support               | :white\_check\_mark: | ✅     | ❌        |
| Suppression enforcement (blocks sends) | ✅                    | ✅     | ✅        |
| Contact-level subscription tracking    | ✅                    | ✅     | ✅        |

### Why it’s important to manage unsubscribes

It’s important to manage unsubscribes properly for several reasons:

* To comply with privacy regulations and avoid potential legal consequences.
* To protect your customers and demonstrate that you respect their privacy.
* To keep your operations up-to-date and efficient.

#### Comply with privacy regulations

{% hint style="info" %}
You are responsible for complying with local laws and regulations.
{% endhint %}

When you collect and process your customers’ personal information, you are agreeing to handle that data in accordance with local and global laws, regulations, and industry standards.

Privacy compliance requirements can vary based on industry, geographic location, and the nature of the data you are collecting and processing, so be sure to check the specific regulations that apply to your operations.

Many countries have strict regulations governing marketing communications, such as the General Data Protection Regulation (GDPR) in the European Union or the CAN-SPAM Act in the United States.

These regulations often require that recipients have the option to unsubscribe or opt out of marketing emails and messages. Tracking opt-outs ensures that your marketing campaigns comply with these legal requirements, reducing the risk of legal consequences and fines.

#### Respect your customers' preferences

Respecting your audience's preferences is crucial for maintaining a positive brand image and building trust. If customers no longer wish to receive your marketing messages, ignoring their opt-out requests can lead to frustration and damage your reputation.

#### Cost efficiency

Sending marketing messages to individuals who are no longer interested in your products or services can be costly and counterproductive.

By tracking opt-outs and removing opted-out contacts from your mailing lists or campaigns, you can save on marketing expenses and focus your efforts on a more engaged audience.

#### Improved targeting

Analyzing opt-out data can provide insights into why individuals are opting out of your campaigns. This information can help you refine your targeting and messaging strategies to reduce opt-outs in the future.

For example, if you notice a high opt-out rate after a particular type of message, you can adjust your content accordingly.

#### Data analysis

Opt-out data can be part of your overall data analysis efforts. It allows you to measure the effectiveness of your campaigns by tracking how many recipients choose to opt-out. High opt-out rates might signal issues with your content, frequency, or targeting that need attention.

#### Segmentation and personalization

Tracking opt-outs enables you to segment your audience more effectively. You can separate opted-out individuals from your active audience and create targeted campaigns for each group. This allows you to personalize content and offers based on engagement levels.

#### Maintain a clean database

Over time, databases can become cluttered with inactive or irrelevant contacts. By regularly tracking and removing opt-outs, you can maintain a clean and up-to-date database. A clean database helps improve email deliverability rates and overall campaign performance.

#### Customer feedback

Some opt-out processes include optional feedback mechanisms where individuals can provide reasons for unsubscribing. Analyzing this feedback can provide valuable insights into customer dissatisfaction, helping you address underlying issues and improve your marketing practices.


# Opt-ins, consent, and subscription statuses

Learn how to collect and manage customer consent for marketing across WhatsApp, Email, and SMS channels.

Learn how consent is collectes, recorded on contact profiles, and best practices for [WhatsApp](#whatsapp-compliance), [Email](#email-compliance), and [SMS](#sms-compliance) compliance.

## Single consent vs double consent

When creating a [sign-up form](/applications/sign-up-forms/overview), you can choose the 'form to sign-up' option, which asks users to enter their email address or phone number in order to subscribe to Email, SMS, or WhatsApp, and to be added to a specific list.

Lists are set up to require either [single consent](#single-consent) or [double consent](#double-consent). If you set up a list to require double consent, customers will need to perform an additional step before they are subscribed and added to th specified list.

### Single consent

If the list you are using is set up for single consent only, then customers will be marked as 'subscribed' as soon as they submit their email address or phone number, and will be added to the specified list.

### Double consent

If the list you are using is set up for double consent, then customers will be sent an email, SMS, or WhatsApp message as soon as they submit their email address or phone number.

This message will ask the customer to confirm that they want to subscribe on that channel.

The customer must reply to that message to confirm that they want to subscribe. They will only be subscribed and added to the specified list if they reply with confirmation.

### Contact subscription statuses

{% hint style="info" %}
**Channel-specific subscription statuses**

* Contacts can choose which channel(s) they subscribe to. This means that a contact could be subscribed to just one channel, or to multiple channels.
* Understand that consent for WhatsApp does not imply consent for Email, or vice-versa.
  {% endhint %}

Subscription statuses are recorded on contact profiles. For each channel, the available subscription statuses are:

* **Subscribed**: This indicates that the customer has actively opted-in to receive marketing communication on that channel.
* **Unsubscribed**: This indicates that the customer had opted-out of receiving marketing communication on that channel. Messages sent to this customer on this channel will not be delivered.
* **Blank**: This indicates that the customer has neither opted-in, nor opted-out of receiving marketing communication on that channel. In certain circumstances, you can still [send marketing messages to customers with a *Blank* subscription status](/applications/audience/contacts/concepts/consent-and-subscriptions/opt-ins-consent-and-subscription-statuses/contacts-with-a-blank-subscription-status).

### WhatsApp compliance

{% hint style="info" %}
Read more about [WhatsApp's opt-in policies](https://developers.facebook.com/docs/whatsapp/overview/getting-opt-in/).
{% endhint %}

#### Consent requirements

* Contacts must grant explicit consent to communicate using business-initiated WhatsApp messages.
* Consent can be obtained via specific keywords in a WhatsApp thread or manually if they've given express and verifiable consent​.

#### **Opt-in process**

* You can collect opt-ins on and off WhatsApp, including via your website, interactive voice response (IVR) flows, or in person with customers signing a physical document​​.

#### **Best practices**

* Avoid messaging customers too frequently, provide clear opt-out instructions, and respect opt-out requests promptly to maintain customer satisfaction​​.

#### **Regulatory compliance**

* Adhere to the WhatsApp Business Messaging Policy, which includes securing necessary notices and consents, protecting data, and complying with applicable laws​​.

#### **Key laws**

* Ensure compliance with regulations like GDPR, especially when it comes to data protection and privacy​​.

### Email compliance

#### **Consent and unsubscribe options**

* Every email should include an unsubscribe link, allowing recipients to opt-out easily.

#### **Compliance with laws**

* Adhere to key laws such as GDPR, CAN-SPAM Act, and CASL. These laws require explicit consent for email marketing and mandate clear opt-out mechanisms.

#### **Best practices**

* Regularly update your email list to remove unengaged subscribers, ensure content relevance, and maintain email deliverability.

### SMS compliance

**Consent requirements**

* Obtain explicit consent before sending marketing messages. Consent can be captured through sign-up forms, in-store sign-ups, or via digital channels.

#### **Opt-out mechanism**

* Provide a clear and easy way for contacts to opt out of SMS communications, such as texting a keyword like "STOP."

#### **Compliance with laws**

* Follow regulations like TCPA (Telephone Consumer Protection Act) and GDPR, which mandate clear disclosure and consent for SMS marketing.

#### **Best practices**

* Send messages during appropriate hours, personalize content, and keep the frequency of messages reasonable to avoid overwhelming subscribers.


# Contacts with a 'blank' subscription status

Learn when and how you can contact customers who haven't explicitly opted in or out of your marketing messages.

Engaging with non-subscribers (customers who have neither explicitly opted-in or opted-out) requires an understanding of channel-specific compliance and ethical marketing practices.

If a contact's subscription status for a particular channel is 'blank', this means the contact has neither subscribed nor unsubscribed from receiving marketing messages on that channel.

You can send them messages on that channel, but you should [exercise caution when contacting them](broken://pages/o3S7ORaS00yMAwnc8b62).

{% hint style="info" %}
**Email and WhatsApp**

You can send [Emails](broken://pages/o3S7ORaS00yMAwnc8b62#email-compliance) and [WhatsApp](broken://pages/o3S7ORaS00yMAwnc8b62#whatsapp-compliance) messages to customers with a 'blank' subscription status as long as you comply with local laws and regulations.
{% endhint %}

{% hint style="danger" %}
**SMS sending restriction**

You can only send [SMS](broken://pages/o3S7ORaS00yMAwnc8b62#sms-compliance) messages to customers who have actively subscribed by providing express consent. SMS messages sent to contacts with an SMS subscription status of 'Unsubscribed' or 'Blank' will not be delivered.
{% endhint %}


# Optimal Marketing Channel

Optimal Channel Selection helps you automatically choose the best communication channel for each customer — significantly improving message engagement and marketing ROI. Instead of manually deciding whether to send a message via Email, SMS, WhatsApp, Push Notification, or RCS, our prediction model analyzes real-time behavior and historical engagement to make the most effective choice.

Use this feature to:

* Improve open, click-through, and conversion rates
* Reduce channel fatigue and unnecessary spend
* Deliver personalized experiences at scale

**Prerequisites:**

* Active installed channels you want to include (Email, SMS, WhatsApp, Push, RCS)
* Sufficient historical engagement data (typically 30 days minimum)

### How It Works

The system analyzes historical engagement data across all available channels to build predictive model for each contact. These models consider factors such as open rates, click-through rates, and channel-specific behaviors to determine the optimal channel for future communications.

#### **Understand Customer Preferences**

The model evaluates each contact's

* **Channel engagement history** (opens, clicks, reads, replies)
* **Delivery success rates**

#### **Segment Smartly**

You can create audience segments based on **Predictions for Contact**:

To create segment using Predictions, you can follow these steps:

* Create a segment and select condition as **Predictions for Contact**

<figure><img src="/files/Gqxcyil4lIERMykVD4ip" alt="" width="375"><figcaption></figcaption></figure>

* Select **Optimal Marketing Platform** as attribute

<figure><img src="/files/Udqe7KSJj5VAVVurLYSY" alt=""><figcaption></figcaption></figure>

* Enter or select options like **Email, SMS, WhatsApp, Push, Google RCS**

#### **Continuous Optimization**

The system continuously learns from Real-time engagement signals. Models automatically re-train to reflect changing contact behavior.

The model considers **cost vs. expected engagement** when selecting a channel.

### **Fallback Strategy**

If the first choice fails (e.g., SMS is suppressed), the AI will automatically **fallback** to the next best channel based on:

1. Cost
2. Predicted engagement




---

[Next Page](/applications/llms-full.txt/1)

