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

# One-off campaigns

> The inbox you pick decides the type automatically — audience from labels, one send, then done.

A one-off campaign is a single message to a defined group of contacts, sent once at a time you choose. There's no separate "make this one-off" switch — the inbox you pick decides it.

## The inbox decides the type

Choose an **SMS**, **Twilio SMS**, or **WhatsApp** inbox and the campaign is one-off, automatically. Choose a **Website** inbox and it becomes an [ongoing campaign](/campaigns/ongoing) instead — the two features don't overlap on the same inbox.

## Audience

The audience is built from **labels**, not a saved filter: tag the contacts you want to reach, then select those labels when you build the campaign. A contact matches if it carries *any* of the labels you picked — not all of them.

<Info>
  Audience membership is resolved when the campaign actually sends, not when you save it. Adding or
  removing a label between now and send time changes who's included.
</Info>

See [Labels and custom attributes](/inbox/labels) for how labels work and how renaming one is handled.

## The message

What you're allowed to send depends on the channel:

<Tabs>
  <Tab title="SMS and Twilio SMS">
    Free-form text, with Liquid available: `{{ contact.name }}`, `{{ agent.name }}` (the campaign's
    sender), `{{ inbox.name }}`, and `{{ account.name }}` all resolve at send time.
  </Tab>

  <Tab title="WhatsApp">
    A pre-approved template only — free text isn't an option for an unsolicited send. See
    [WhatsApp campaigns](/campaigns/whatsapp) for what that requires.
  </Tab>
</Tabs>

## Scheduling

Pick a send time, or leave it blank — a blank schedule is backfilled to right now. Either way, sending
isn't instant: a cron runs every five minutes to pick up due campaigns, so expect up to a five-minute
delay even for a "send now" campaign. Tied will still pick up a delayed one for up to three days past its
scheduled time — a campaign that couldn't send exactly on time doesn't just silently expire.

<Note>
  The SMS campaign form marks the schedule field **required** — "leave it blank" only applies where the
  form itself allows a blank value.
</Note>

## Active → completed

A one-off campaign sends exactly once, but *when* it flips from `active` to `completed` depends on the
channel:

<Tabs>
  <Tab title="SMS and Twilio SMS">
    The moment the campaign starts processing, it flips to `completed` and won't run again.
  </Tab>

  <Tab title="WhatsApp">
    **Completion happens only after the entire audience has been processed** — see [WhatsApp
    campaigns](/campaigns/whatsapp) for what that means if a run gets interrupted partway through.
  </Tab>
</Tabs>

Once completed, the campaign record itself is locked against further edits. If you need to send it again, create a new one.

<Note>
  A failure sending to one contact doesn't stop the rest, on SMS and WhatsApp — delivery problems are
  logged per contact and the campaign keeps going. The Twilio path is narrower: it only rescues Twilio's
  own error classes, so a timeout or a network error there aborts the remaining contacts rather than
  logging and continuing.
</Note>

## Next

<CardGroup cols={2}>
  <Card title="WhatsApp campaigns" icon="message-square-more" href="/campaigns/whatsapp">
    Template rules, opt-in, and per-message cost on top of everything here.
  </Card>

  <Card title="Ongoing campaigns" icon="repeat" href="/campaigns/ongoing">
    The other type — for a Website inbox, running continuously instead.
  </Card>

  <Card title="Labels and custom attributes" icon="tags" href="/inbox/labels">
    Building the labels a one-off campaign's audience is made of.
  </Card>

  <Card title="Channel fees" icon="radio" href="/pricing/channel-fees">
    What each send actually costs, per channel.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.