---
title: "Create and run a campaign"
locale: en
url: https://tlg.builera.app/en/docs/guides/campaigns
verified: 2026-10-24
app_version: "2.0"
---

# Create and run a campaign

Select people, sending accounts, and a sequence, then send a test before starting.


Create a campaign by combining an audience, sending accounts, and a sequence. Before starting, check the content and send a test to someone who has agreed to receive test messages.

## Who can do this

**Owner** and **Manager**.

## Before you start

Prepare people from appropriate sources, active accounts, and content written by your team. Read [Do not contact](https://tlg.builera.app/en/docs/concepts/do-not-contact) and [Limits and warm-up](https://tlg.builera.app/en/docs/concepts/limits-and-warmup) before deciding on the scale.

## Where to start

Open **Campaigns**, then select **Create campaign**.

![Campaign list in the Demo workspace](https://tlg.builera.app/docs-media/en/campaigns.webp "Start in Campaigns")

## Steps

1. **Name the campaign** and choose a goal: reach people you have never spoken to, or follow up with people who have messaged before.

2. **Choose a starting point.** Under **Start from**, select a preset or **Empty sequence**, then click **Create and compose sequence**. Presets are only starting frameworks; review every step.

3. **Select the audience.** Use people from People, a list, selected people, or group scan results. A group source is a list of people found — the campaign does not send messages to the group.

4. **Add filters** by stage or tag, then review the audience preview. The actual recipient count may be lower than the number of profiles in the source because excluded or ineligible people are skipped.

5. **Select sending accounts.** Check each account's login status and ability to send.

6. **Build the sequence** using **Add step**:

   | Step type | Purpose |
   |---|---|
   | `send` | Send a text message |
   | `send_file` | Send a file; this step is skipped for strangers |
   | `wait` | Wait for a period of time |
   | `branch` | Branch on a condition, such as whether the person has replied |
   | `react` | React to the person's latest message |
   | `handoff` | Assign the conversation to a person, change the stage, or add a tag |

   Waiting for a reply differs from waiting for a fixed duration — read each step's description.

7. **Write content and variants.** Use `{ten}`, `{nhom}`, `{chu_de}`, and `{tai_khoan}` to fill in context; use `{Hi|Hello}` to randomly select wording. `{{name|you}}` supplies fallback text when the name is missing. Unmatched braces make the content invalid; unknown variables trigger warnings.

   Variants are separate versions of content within the same step; spintax provides choices within one version. Choices stay consistent for each recipient and do not change on retries.

> [!WARNING]
> **Technical send test** sends real messages on Telegram and counts toward limits. Select only someone who has agreed to receive test messages.

8. **Test the current version.** Select an account and a private chat to receive the test, then click **Send test**. Editing the content afterward invalidates the previous test — send another test.

9. **Start the campaign** once the test passes. Every message still goes through the safety gate: running hours, do-not-contact rules, limits, account status, and connectivity can hold or reject jobs.

## Result

The campaign runs using its published version. **Pause** temporarily stops progress; messages already sent cannot be recalled.

> [!WARNING]
> Read the confirmation dialog before you **Stop** a campaign. Stopping does not delete messages that have reached Telegram.

## Check

See [Campaign results](https://tlg.builera.app/en/docs/guides/campaign-results). Editing a running campaign creates a draft; when you publish it, people already partway through the sequence continue on their own version.

## If something goes wrong

Check why recipients are held or skipped in the recipients tab. Do not raise limits before understanding the cause.

## Do it with the API or MCP

Use [campaigns.create](https://tlg.builera.app/en/docs/reference/rest/campaigns.create), [campaigns.save_graph](https://tlg.builera.app/en/docs/reference/rest/campaigns.save_graph), and [campaigns.test](https://tlg.builera.app/en/docs/reference/rest/campaigns.test) — MCP `campaigns_create`, `campaigns_save_graph`, `campaigns_test`. Agents should see the [prepare a campaign](https://tlg.builera.app/en/docs/agent-playbooks/prepare-campaign) playbook.

