---
title: "Prepare a campaign draft"
locale: en
url: https://tlg.builera.app/en/docs/agent-playbooks/prepare-campaign
verified: 2026-10-24
app_version: "2.0"
---

# Prepare a campaign draft

Create and check a campaign draft at a person's request without publishing it or starting a run on your own.


## Goal

You prepare a campaign draft that can be checked and handed to a person for approval. End this playbook at the draft. Do not start a run yourself, even if the content was saved successfully.

## Permissions needed

- `crm.read` to read campaigns and customer groups.
- `campaigns.write` to create, edit and preview drafts.
- `accounts.read` to check the accounts you plan to use.

Creating and editing campaigns requires an appropriate Manager-level role. This preparation playbook does not need `campaigns.run`; lacking run permission is a useful boundary.

The `setup` profile exposes commonly used campaign tools. Call operations without dedicated tool names through `tools_run` after reading their schemas.

## Ask the person before

Ask about the goal, audience, sending accounts, permitted content, stop conditions and completion criteria.

Get explicit consent before creating campaign data. Distinguish “draft a proposal in the conversation” from “save a draft in the workspace.” If the person only asks for advice, do not create a draft.

## Check first

Call `whoami`. Check permissions and granted accounts.

Read the campaign list to avoid duplicates. Read the relevant accounts and customer sources. Do not expand the audience yourself when the connection cannot see enough data.

Exclude do-not-contact recipients according to policy. Do not treat a customer's presence on a list as proof that they consented to every kind of content.

## Steps

1. Call `campaigns_list` — [`campaigns.list`](https://tlg.builera.app/en/docs/reference/rest/campaigns.list) — to find related campaigns.
2. Call `campaigns_get` if you are editing an existing campaign.
3. Call `accounts_list` to cross-check the planned accounts.
4. Read the [`campaigns.create`](https://tlg.builera.app/en/docs/reference/rest/campaigns.create) contract with `tools_describe`.
5. After the person agrees to create a draft, call `campaigns_create`.
6. Use `tools_run` with [`campaigns.update`](https://tlg.builera.app/en/docs/reference/rest/campaigns.update) if you need to update the configuration.
7. Call `campaigns_save_graph` — [`campaigns.save_graph`](https://tlg.builera.app/en/docs/reference/rest/campaigns.save_graph) — to save the draft flow.
8. Use `tools_run` with [`campaigns.preview`](https://tlg.builera.app/en/docs/reference/rest/campaigns.preview) to check it in advance.
9. Call `campaigns_get` to read back the saved data.
10. Hand over a summary and the points that still need approval.

> [!IMPORTANT]
> Stop point — ask the person
>
> Do not call `campaigns_publish`, `campaigns_start` or a test-send operation just because the preview is valid. Ask the person to explicitly approve the content, audience and accounts before publishing or running.

## Check after

Report the campaign ID, saved configuration and missing items. Confirm that you did not start the draft.

If you edited a campaign with ongoing activity, specify which draft parts you changed. Do not assume draft changes have become the running version.

## On errors

If the graph is invalid, read the error and fix the step that caused it. Do not publish to “see whether it runs.”

If you lack permissions, stop and ask an authorized person to handle it. If the audience or accounts do not match the request, ask for a decision instead of substituting another source yourself.

## When to stop

Stop when the draft has been saved and checked, when you do not have consent to create data, or when the next action would have an external effect.

See the [campaign guide](https://tlg.builera.app/en/docs/guides/campaigns) and [action confirmations](https://tlg.builera.app/en/docs/concepts/confirmations).

