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

# Step 4 — Review & publish

> Run the Meta dry run, resolve issues, and publish paused campaigns to Meta.

The final step is **Review & handoff** — your pre-flight check before anything goes to Meta. Here you confirm the setup, resolve dry-run issues, get approval if required, and publish.

## Campaign summary

A read-only summary of the campaign: ad account, name, objective, schedule, Facebook Page, budget, and conversion event. A second panel shows how many ad sets and ads will be created, with a per-ad-set breakdown.

## Launch variation mode

Choose how creatives and audiences expand into ads:

| Mode                              | What it does                                                                                |
| --------------------------------- | ------------------------------------------------------------------------------------------- |
| **Creative × audience** (default) | One ad per creative inside each audience ad set — the cleanest read on which creative wins. |
| **Creative testing** (A/B)        | Each creative gets its own ad set for isolated, like-for-like comparison.                   |
| **Full variation** (Max)          | Every creative, text, headline, description, CTA, and URL combination becomes its own ad.   |

The ad-set and ad counts shown always match exactly what will be published.

## The Meta dry run

AdLoft runs a live **dry run** that validates your draft against Meta's rules and builds a preview of every API call. Open **Debugging & Meta dry run** to see:

* All validation issues, marked as **errors** (must fix) or **warnings** (informational).
* The exact API payload preview for each entity.

You can't publish until the dry run passes with no blocking errors. Each builder step also shows its blocker and warning counts so you can jump straight to what needs fixing.

## Benchmark context

A collapsible panel compares the draft to your brand's targets: the source benchmark, your destination target, and the gap to goal. Set [goals](/integrations/goals) on the brand for this to be meaningful.

## Approval

If your organization uses the [review gate](/campaigns/approval-workflow), the primary action is **Request review** (or **Resubmit for review** after a rejection). An owner or admin then approves or requests changes. Organizations without non-admin members can **Mark ready for handoff** directly.

## Publish to Meta

When the draft is approved and the dry run passes, click **Publish to Meta**.

<Info>
  Everything is created **paused** in Meta Ads Manager. After publishing, you turn the campaign on yourself in Meta — AdLoft never starts spend on your behalf.
</Info>

### Publish requirements

To publish, all of these must be true:

* You're an **owner** or **admin**.
* Your plan includes Meta publishing (an active subscription or trial).
* The draft is **approved** (with approval timestamp when review is required).
* A connected Meta account with a valid token exists for the destination.
* The dry run is ready with no blocking errors.

### What gets created

AdLoft creates, in order and all **paused**:

1. A **campaign** (unless you're targeting an existing one).
2. An **ad set** per ad set (with targeting, optimization, and pixel/conversion).
3. An **ad creative** per ad (uploading media to Meta first).
4. An **ad** per ad, linked to its creative and ad set.

### Launch records and partial failures

Every publish creates a **launch record** visible under **Recent launches**:

| Status         | Meaning                                                   |
| -------------- | --------------------------------------------------------- |
| **Published**  | All entities created successfully. The draft is archived. |
| **Partial**    | Some entities were created, some failed.                  |
| **Failed**     | Nothing was created.                                      |
| **Publishing** | The launch is in progress.                                |

<Warning>
  If a launch ends **partial**, review what was created in Meta before publishing again to avoid duplicate campaigns. AdLoft blocks a re-publish until you've checked.
</Warning>

After a successful publish, AdLoft archives the draft and returns you to the Campaigns hub. See [Campaign publish errors](/troubleshooting/publish-errors) if a publish fails.
