---
name: three-day-ad-test
description: Set up a clean 3-day Meta ad test that compares formats (reel vs image vs carousel) or angles for one offer, with equal budgets, an end date, UTMs per ad and a decision rule written before launch. Use when the user wants to "test ads", "A/B test creatives", "which format works", or launch something new without burning money.
---

# Three-day ad test

Most ad tests fail before they start: unequal budgets, no end date, no rule for picking a winner, and nobody knows which sale came from which ad. This skill sets up a test you can actually read.

Needs the TalkToAds connector (Meta) and the creatives (videos/images) ready.

## Steps

1. **Write the rule first.** Agree with the user, in chat, before creating anything:
   - What's being tested (one thing: format, OR hook, OR angle, not all three)
   - Budget per variant per day (equal for all)
   - Duration: 3 full days
   - How the winner is picked: **real revenue per ₹1,000 spent**, from the payment gateway, split by `utm_content`
   - What happens to the winner (gets the losers' budget) and the losers (paused)

2. **One campaign, one ad set per variant.** Call `create_campaign` with `objective: "OUTCOME_SALES"` and **no** campaign budget, so each ad set gets its own (ABO). Equal budgets is the point of the test.

3. **Ad sets.** For each variant, call `create_ad_set` with the same targeting (same country, same age, broad), same optimisation (`OFFSITE_CONVERSIONS` with the purchase `pixel_id`) and the same daily budget. Put the end date in each ad set name (e.g. `Test | reel | ends 28 Oct`) and tell the user to set a reminder. On that day, `pause` the losers. If they'd rather have Meta stop it automatically, they can set an end date on each ad set in Ads Manager.

4. **Ads with UTMs.** Call `create_ad` for each creative. Link = landing page + `?utm_campaign=<test-name>&utm_content=<variant>` (e.g. `img1`, `carousel`, `reel`). Same headline and primary text across variants unless the text is what you're testing.

5. **Show and wait.** Show the whole setup as a table: variant, ad set, budget, end date, link. After a yes, `go_live` on the campaign.

6. **Day 3: read it.** Pull `get_performance` at `level: "adset"` for the test window. Ask for the payments export, group revenue by `utm_content`, and compute revenue per ₹1,000 spent per variant. Apply the rule from step 1. Don't change the rule after seeing the numbers.

## Rules

- Equal budgets, same audience, same dates. Otherwise it's not a test.
- Don't touch anything during the 3 days. No budget changes, no edits.
- Meta's "winner" by cost per purchase can be wrong if purchases are mis-attributed. Pick the winner on the gateway's money.
- If no variant beats 1x real ROAS, the problem is the offer or the page, not the format.

## From Sanskar's ad account

On 21 Oct 2026 the course offer ran this exact setup: an image ad set with 5 images and a carousel ad set with 5 cards, ₹600/day each, both ending 3 days later, with `utm_content=img1..img5` and `carousel` on every link. The rule was written in chat before launch: not profitable after 3 days → stop. The same day a second test added a reel ad set next to images and carousel for a different course, at ₹600/day each.
