> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brudcast.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create and send a campaign

> Build a campaign end to end: pick channels, choose an audience, write each channel's content, clear the send checklist, then send or schedule.

export const DemoVideo = ({id, title, embedUrl, src, poster, duration}) => {
  if (embedUrl) {
    return <figure className="brd-media" data-media-id={id}>
        <iframe className="brd-media-frame w-full aspect-video" src={embedUrl} title={title} allow="accelerometer; autoplay; clipboard-write; encrypted-media; picture-in-picture" allowFullScreen />
      </figure>;
  }
  if (src) {
    return <figure className="brd-media" data-media-id={id}>
        <video className="brd-media-frame w-full aspect-video" src={src} poster={poster} controls playsInline preload="metadata" />
      </figure>;
  }
  const label = duration ? `Video walkthrough coming soon · ${duration}` : "Video walkthrough coming soon";
  return <Placeholder id={id} kind="video" label={label} description={title} ratio="16 / 9" icon={<PlayIcon />} />;
};

export const Loop = ({id, src, alt, caption}) => {
  if (!src) {
    return <Placeholder id={id} kind="loop" label="Animation coming soon" description={alt} icon={<PlayIcon />} />;
  }
  return <figure className="brd-media" data-media-id={id}>
      <video className="brd-media-frame" src={src} autoPlay muted loop playsInline aria-label={alt} />
      {caption && <figcaption className="brd-media-caption">{caption}</figcaption>}
    </figure>;
};

export const Screenshot = ({id, src, srcDark, alt, caption}) => {
  if (!src) {
    return <Placeholder id={id} kind="screenshot" label="Screenshot coming soon" description={alt} icon={<ImageIcon />} />;
  }
  return <figure className="brd-media" data-media-id={id}>
      <img className="brd-media-frame block dark:hidden" src={src} alt={alt} />
      <img className="brd-media-frame hidden dark:block" src={srcDark || src} alt={alt} />
      {caption && <figcaption className="brd-media-caption">{caption}</figcaption>}
    </figure>;
};

By the end of this page you'll have sent or scheduled a campaign to your contacts on one or more
channels.

<Screenshot id="ss-campaigns-create-a-campaign-hero" alt="The campaign composer with Setup, Audience, Content and Delivery sections and the Before you send checklist on the right" />

<Info>
  **Before you start:**

  * Access to at least one channel. Email and push need a subscription. SMS is paid from your
    wallet, so it needs credits instead.
  * A sender for each channel you'll use: a verified sending domain or the
    [Brudcast trial address](/get-started/quickstart) for email, an approved
    [sender ID](/channels/sms/sender-ids) for SMS, and an active [push app](/channels/push/connect-firebase)
    for push.
  * Contacts in a list or segment, or individual contacts.
  * Your organization's business address, which every campaign email prints in its footer. See
    [Organization settings](/organization/organization-settings).
</Info>

<Accordion title="Watch the walkthrough" icon="circle-play">
  <DemoVideo id="V11" title="Create a multi-channel campaign" duration="4 min" />
</Accordion>

<Steps>
  <Step title="Open the composer">
    Go to **Campaigns** and select **Create Campaign**.

    The composer has four sections, **Setup**, **Audience**, **Content** and **Delivery**, with a
    link to each at the top. On the right, **Before you send** lists what's still missing, and
    **Live summary** shows your reach and credit cost as you go.

    Once you've picked a channel, the draft saves itself as you work, and the header shows when it
    last saved.
  </Step>

  <Step title="Name it and pick channels">
    Enter a **Campaign name**, then select one or more **Channels**. Each channel you select adds its
    own block under **Content**.

    <Loop id="lp-campaigns-create-a-campaign-add-channel" alt="Selecting SMS next to Email adds an SMS block below the Email block" />

    Leave **Type** on **Regular**. **A/B Test** saves its settings, but the current release doesn't
    split the audience or pick a winner when the campaign sends, so a test campaign goes out as one
    version. See [Test two versions of an email](#test-two-versions-of-an-email).

    If a channel is locked, selecting it explains why and offers **Save draft & subscribe**, which
    saves your work before it takes you to checkout.
  </Step>

  <Step title="Draft with AI or start from a template (optional)">
    Under the name, **Draft with AI** writes a first version of every channel from a short brief.
    See [Draft with AI](/campaigns/create-a-campaign#draft-with-ai).

    **Browse templates** fills the channels from a saved template instead. See
    [Reuse a template](/templates/overview#reuse-a-template).
  </Step>

  <Step title="Choose the audience">
    In **Audience**, select **Choose audience**. Search across lists, segments and contacts, select
    the ones to send to, then select **Done**. The section shows how many distinct contacts you'll
    reach, and how many on each channel.

    <Screenshot id="ss-campaigns-create-a-campaign-01-audience" alt="The Audience section showing the number of contacts, split by channel, with two lists attached" />

    For exclusions and how reach is counted, see [Choose the audience](#choose-the-audience).
  </Step>

  <Step title="Write each channel's content">
    Work down the **Content** section, one block per channel:

    * **Email:** pick a **Sender identity**, write the **Subject**, select **Open builder** to design
      the body, and add **Preview text**.
    * **SMS:** pick a **Sender ID** and write the **Message**. The counter under it shows how many
      segments each message is billed as.
    * **Push:** choose the **Apps** to send through, then write the **Title** and **Body**.

    <Screenshot id="ss-campaigns-create-a-campaign-02-content" alt="The Content section with an Email block and an SMS block stacked, the SMS counter reading 1 segment billed" />

    Every field is described in [Write content for each channel](/campaigns/write-content-per-channel).
  </Step>

  <Step title="Check the delivery settings">
    In **Delivery**, **Track opens**, **Track clicks** and **Include unsubscribe link** are on by
    default. Turn on **UTM tracking** to tag your links, add **Tags** to organize the campaign, and
    add **Footer text** to print your own line in the email footer.
  </Step>

  <Step title="Clear the checklist">
    **Before you send** marks each item as done or outstanding, and shows how many are left. Each
    outstanding item has a button that takes you to the fix, whether that's a field in the
    composer, your sender settings, or a top-up.

    <Screenshot id="ss-campaigns-create-a-campaign-03-checklist" alt="The Before you send checklist with two items left: Write the SMS message and a credit top-up" />

    Every check is listed in [The send checklist](/campaigns/send-checklist).
  </Step>

  <Step title="Preview the email">
    If you designed the email in the visual builder, select **Preview** in the Email block to see
    the message as it will arrive, footer included. See
    [Test and preview](/campaigns/send-checklist#test-and-preview).
  </Step>

  <Step title="Send or schedule">
    When the checklist reads **Ready**, either:

    * Select **Send**. The confirmation shows how many people the campaign will reach, on how many
      channels, and what it will cost in credits. Select **Send now**.
    * Or select **Schedule**, pick a time under **Send at**, and select **Schedule**.

    Either way, you land on the campaign's page.
  </Step>
</Steps>

## What happens next

* **If you sent it now:** Brudcast reserves credits for every channel at once, then starts sending.
  The campaign page shows **Sending now** with a live count of messages sent. See
  [Credits: estimates and holds](/campaigns/send-checklist#credits-estimates-and-holds).
* **If you scheduled it:** the campaign waits as **Scheduled**. At its send time, Brudcast runs the
  same checks again, reserves credits and sends. See [Schedule a campaign](#schedule-a-campaign).
* When every channel has finished, the status moves to **Sent** or **Completed**, and the results
  fill in. See [Campaign results](/campaigns/results).

## Draft with AI

**Draft with AI** in the composer's setup area turns a short brief into a first version of every
channel you've turned on. Fill in the **Goal** (required), and optionally the **Audience**, a
**Tone** (**Friendly**, **Professional**, **Playful**, **Urgent** or **Formal**) and **Key info**
such as offer details, dates and links. Select **Draft it**, and Brudcast writes the email subject,
preview text and a designed body, the SMS message, and the push title and body. It names the
campaign too, unless you already have.

To try again, select **Edit brief**, change it, and select **Redraft everything**. Redrafting
replaces the drafted copy, so do it before you've made edits you want to keep.

Everything AI writes is an ordinary field you can edit. In the email builder you can also redesign
the whole email or a selected block, rewrite, shorten, lengthen, proofread or change the tone of a
block's copy, write alt text for an image, and translate the email into another language. For the
subject and preview text, AI offers alternatives rather than replacing what you wrote.

| Field           | Limit                              |
| --------------- | ---------------------------------- |
| Goal            | 2,000 characters                   |
| Audience        | 500 characters                     |
| Key info        | 2,000 characters                   |
| Reference image | PNG, JPEG, GIF or WEBP, up to 5 MB |

<Note>
  A merge tag that gets mangled doesn't fail loudly: it sends as empty text. So any AI rewrite or
  translation that drops, adds or renames a tag is thrown away and your original stays. If a rewrite
  seems to change nothing, that's why. Block redesigns never touch the words at all.
</Note>

## Choose the audience

The **Choose who receives this** dialog searches lists, segments and contacts at once. Each row is
tagged **List**, **Segment** or **Contact** and shows its size or address. Select a row to add it,
and select it again to remove it. The bar at the bottom updates a moment later with the number of
sources, the distinct contacts they add up to, the reach on each channel and the estimated credit
cost.

Select **Exclusions**, then **Don't send to**, to leave people out. Anyone in an excluded source is
left out even if an included list or segment contains them.

The total is the number of **distinct** contacts across everything you included, minus everyone
excluded. A contact in two of your lists counts once, and only contacts whose list membership is
subscribed are included. Reach on each channel counts the contacts who have somewhere to receive
that channel's message: an email address that's verified or unverified and not suppressed, a phone
number that's verified or unverified and hasn't opted out, or an active device registered with one
of the campaign's push apps. Where a contact has several addresses or numbers on a channel, the
primary one is used, so each contact gets at most one message per channel.

Brudcast works the audience out again when the campaign starts sending, so anyone who joined or left
a list in the meantime is counted as they are at that moment.

If nobody in the audience can be reached on any of the campaign's channels, the send checklist shows
**No one in this audience can be reached on**, followed by the channel names, and the campaign can't
send. One reachable channel is enough: if only SMS can reach anyone, the SMS goes out and the email
channel sends nothing.

## Test two versions of an email

<Accordion title="Watch the walkthrough" icon="circle-play">
  <DemoVideo id="V12" title="A/B test a subject line" duration="2 min" />
</Accordion>

Set **Type** to **A/B Test** in **Setup** to add an **A/B test** section to the top of the Email
block. Tests work on the email channel only, so the option reads **A/B Test (Email only)** until
Email is selected, and removing Email puts the campaign's type back to **Regular**.

| Setting         | Allowed values                                 |
| --------------- | ---------------------------------------------- |
| Test variable   | **Subject line**, **Content** or **Send time** |
| Variants        | 2 to 4                                         |
| Winner criteria | **Open rate** or **Click rate**                |
| Test sample     | 1% to 100% of the audience. The default is 20  |
| Test duration   | Any positive number of hours. The default is 4 |

<Warning>
  **Check before you rely on a test.** Brudcast saves these settings with the campaign and copies
  them when you duplicate it. In the current release, sending doesn't split the audience into a test
  sample or pick a winner: every recipient gets the subject and body from the Email block. If you
  need a test to run, contact [support@brudcast.com](mailto:support@brudcast.com) before you send.
</Warning>

## Schedule a campaign

Select **Schedule** in the composer's header, pick a date and time under **Send at**, which has to
be in the future, and select **Schedule**. The campaign moves to **Scheduled** and its page shows
**Scheduled for**, followed by the date and time. You pick the time in your browser's time zone, and
a teammate elsewhere sees the same moment in their own local time.

Brudcast checks for campaigns that are due about every 30 seconds. When yours is due, it runs the
send checks again, reserves credits, and starts sending. Because the checks run again, a scheduled
campaign can still be held up by something that changed since you scheduled it, such as your wallet
balance or a sender approval. If a check fails, the campaign stays **Scheduled** and Brudcast tries
again on each pass until it can send or you cancel it. The **Before you send** list on the
campaign's page shows what's wrong.

To change a scheduled campaign's content or audience, open it and select **Edit**; it stays
scheduled for the same time. To change the time, or send it straight away, cancel it, select
**Duplicate**, and send or schedule the copy.

While a campaign sends, its page shows **Sending now** with a live count and a progress bar.
Brudcast hands each channel its recipients in batches and checks between batches whether you've
paused or cancelled, so either takes effect quickly. See
[Campaign results](/campaigns/results#pause-resume-and-cancel-a-send).

## Troubleshooting

<AccordionGroup>
  <Accordion title="The button reads “Send · 2 items left”" icon="circle-alert">
    **Why:** the send checklist still has outstanding items, so **Send** and **Schedule** stay
    disabled.

    **Fix:** work through **Before you send**. Each item's button takes you straight to the fix.
  </Accordion>

  <Accordion title="“Subscribe to a channel to send campaigns”" icon="circle-alert">
    **Why:** your organization doesn't have access to any campaign channel yet.

    **Fix:** select **View plans** and subscribe to a channel. See
    [Plans and subscriptions](/billing/plans-and-subscriptions).
  </Accordion>

  <Accordion title="“Top up 300 credits to cover this send”" icon="circle-alert">
    **Why:** the wallet doesn't hold enough credits for the estimated cost of every channel.

    **Fix:** select **Top up** and buy at least the amount shown. The estimate refreshes when the
    credits arrive. See [Credits: estimates and holds](/campaigns/send-checklist#credits-estimates-and-holds).
  </Accordion>

  <Accordion title="Sending is refused with a message such as “Sending domain mail.example.com is not verified”" icon="circle-alert">
    **Why:** when you press **Send**, Brudcast checks every channel's sender and your account
    settings again, and refuses the send if anything is missing.

    **Fix:** find the message in [The send checklist](/campaigns/send-checklist), which says how to
    clear each one.
  </Accordion>
</AccordionGroup>

## Related

<Columns cols={2}>
  <Card title="Segments" icon="filter" href="/contacts/segments">
    Build the group a campaign sends to.
  </Card>

  <Card title="Write content for each channel" icon="pen-line" href="/campaigns/write-content-per-channel">
    Every field in the email, SMS and push blocks.
  </Card>

  <Card title="The send checklist" icon="list-checks" href="/campaigns/send-checklist">
    What each check means and how to clear it.
  </Card>

  <Card title="Campaign results" icon="chart-column" href="/campaigns/results">
    See what happened after you sent.
  </Card>
</Columns>
