# Meta campaign draft: WIT New-Car Paint Correction (Diwali)

Status: DRAFT, everything PAUSED. Nothing is published and no money is spent until Nik approves and turns it on.
Offer facts: `../OFFER.md`. Ad copy: `../copy/ads.json` (readable version `../copy/AD-COPY.md`). Creatives: `../creative/renders/`. Review page: `../site/public/review/ads/`. Import sheet: `bulk-import.csv`.

## Account

| Field | Value |
|---|---|
| Ad account | WIT KNR 2021 one perfume · `act_237776924771639` |
| Pixel | `1856400822441029` (page fires `Lead` + CAPI with one shared event id) |
| Facebook Page / Instagram | `[WIT_FB_PAGE_ID]` / `[WIT_IG_ACCOUNT_ID]`: fill in before import |

## Campaign

| Field | Value |
|---|---|
| Name | `WIT \| NEW-CAR PAINT CORRECTION \| Leads-Web \| KNR-HNK-SDPT` |
| Objective | Leads |
| Budget | ABO (ad set budgets, no campaign budget) |
| Special ad category | None |
| Status | PAUSED |

## Ad sets (one per studio)

The CRM routes leads by ad set name, so each name carries exactly one studio code. The campaign name has all three codes, so route on `utm_term` (ad set name) first and fall back to `utm_content` (ad name, which also starts with the code).

| Ad set name | Studio | Location | Budget |
|---|---|---|---|
| `WIT_KNR_Karimnagar-15km_24-60_NCPC` | KRNG | Karimnagar city centre + 15 km | ₹400/day (suggested, Nik approves) |
| `WIT_HNK_Hanumakonda-15km_24-60_NCPC` | HNKD | Hanumakonda (Meta lists it as "Hanamkonda") + 15 km | ₹400/day (suggested) |
| `WIT_SDPT_Siddipet-15km_24-60_NCPC` | SDPT | Siddipet city centre + 15 km | ₹400/day (suggested) |

Same settings in all three:
- Conversion location: Website. Performance goal: maximise conversions. Event: `Lead` on pixel `1856400822441029`.
- Age 24 to 60, all genders. Location type: people living in or recently in the area.
- Advantage+ audience on with no extra interests (the 15 km radius and the ₹15 lakh qualifier on the page do the filtering). Languages: leave blank so Telugu and English users both qualify.
- Advantage+ placements. Each ad uses placement asset customisation: 4:5 PNG for Feeds, 9:16 PNG for Stories, Reels and Status.
- Attribution: 7-day click, 1-day view (account default).
- Status PAUSED.

## Ads (4 per ad set = 12)

Each ad set runs two concepts, and each concept goes to both doors. Same creative, same copy, only the landing door changes, so the door test is clean.

| Ad name (KNR shown; HNK and SDPT the same pattern) | Concept | Door | Landing URL | CTA |
|---|---|---|---|---|
| `KNR_C2-torch_VSL` | C2 Torch test | VSL | `https://offer.washintime.com/v/krng/` | Learn More |
| `KNR_C2-torch_CHAT` | C2 Torch test | Chat | `https://offer.washintime.com/c/krng/` | Learn More |
| `KNR_C1-diwali_VSL` | C1 Diwali new-car gift | VSL | `https://offer.washintime.com/v/krng/` | Get Offer |
| `KNR_C1-diwali_CHAT` | C1 Diwali new-car gift | Chat | `https://offer.washintime.com/c/krng/` | Get Offer |

HNK ads use `/v/hnkd/` and `/c/hnkd/`; SDPT ads use `/v/sdpt/` and `/c/sdpt/`.

URL parameters on every ad (Meta fills the `{{...}}` values):
```
utm_source=meta&utm_medium=paid&utm_campaign=newcar-pc-2026&utm_content={{ad.name}}&utm_term={{adset.name}}
```

Images per ad:
- Feed: `NCPC-<concept>-<studio>-4x5.png` (1080×1350). This is the file named in `bulk-import.csv`.
- Stories/Reels: `NCPC-<concept>-<studio>-9x16.png` (1080×1920). Add it in Ads Manager after import via "Edit placement asset".

Primary text in the import is the medium version. Add the short and long versions as extra text options in Ads Manager (multiple text options) so Meta can rotate them; the three headlines likewise. All of it is on the review page with copy buttons.

### Bench (ready to swap in)

| Order | Concept | Rendered for |
|---|---|---|
| 1 | C5 Usually ₹3,000, free | KRNG, HNKD, SDPT |
| 2 | C3 Pooja-day stains | KRNG |
| 3 | C7 ₹15 lakh+ cars only | KRNG |
| 4 | C6 Before / after (labelled "Illustration") | KRNG |
| 5 | C4 10 slots text-only note | KRNG |
| 6 | C8 Telugu headline | KRNG, only after Praneet reads the Telugu |

To use a bench concept in HNK or SDPT, add it to `best3` (or the studio list) in `copy/ads.json` and run `node creative/src/build.mjs --only C3`; the `{Studio}` slot fills itself.

## Instant Form backup (optional 4th ad set, spec only, not in the CSV)

Use only if the website doors stall (for example, page speed or pixel problems). These leads already sync into the WIT Lead Desk CRM.

- Ad set: one per studio when used, named `WIT_KNR_InstantForm-backup_NCPC` (HNK / SDPT the same), so CRM routing by name still works. Same campaign, conversion location **Instant forms**, same location, age and placements as above, ₹300/day suggested.
- Form type: Higher intent (adds a review screen before submit).
- Intro: "New car this Diwali? Its first paint correction is on us. Premium wash + machine paint correction at WIT {Studio}. Usually ₹3,000. Free for the first 10 new-car owners."
- Custom questions, in this order, exact wording:
  1. "Have you purchased a new vehicle recently?" Yes / No
  2. "Is your car worth more than ₹15 lakh?" Yes / No
- Contact fields: Full name, Phone number (labelled WhatsApp number), plus short answer "Car model".
- Instant forms can't stop a "No" answer from submitting. The CRM must tag any lead with a No as not eligible and keep it out of the 10-slot count and the call queue.
- Completion screen: "Thanks. WIT {Studio} will call you from a local number in the next few minutes to pick your slot." Button: WhatsApp the studio (KRNG 918886499902 · HNKD 919666718719 · SDPT 919666200900).
- Privacy policy URL: `[WIT_PRIVACY_URL]`.
- Ads: reuse the C2 and C1 creatives, CTA "Get Offer".

## Kill and scale rules

A "qualified lead" means both qualifier answers were Yes and the phone number reached the Lead Desk. The page only fires `Lead` for those, so Meta's Leads column is qualified leads. Booked visits come from the Lead Desk, not Meta.

1. First 48 hours: no edits, so ads exit learning. The only exception is rule 2.
2. Pause any ad that has spent ₹600 with 0 qualified leads.
3. After ₹1,200 spend on an ad, pause it if its cost per lead is more than twice the ad set's average.
4. Door test: once each door in an ad set has spent ₹1,500, or the ad set has 10 qualified leads (whichever comes first), compare the doors on cost per booked visit from the Lead Desk, then cost per lead. Move both concepts to the winning door and fill the freed slots with the next bench concepts on that door.
5. Slots full: when a studio's 10 free slots are taken (the landing page switches to the "All 10 free slots are taken" waitlist), pause that studio's ad set the same day.
6. Slow fill: if an ad set has fewer than 3 booked visits after ₹2,400 total spend, swap the weakest ad for the next bench concept before touching the budget.
7. No budget increases. Ten slots per studio fill without scaling; the ₹400/day figure only needs to be revisited if the slots are lifted.
8. Speed to lead: studio staff call within 5 minutes of the push alert. If calls aren't happening, pause the ad set until they are, because unanswered leads waste the spend.

## Before import (checklist)

- [ ] Nik approves the ₹400/day per ad set figure. **Check the ad account currency first.** The CSV writes `400` in the account currency, so if the account bills in USD, change it before importing.
- [ ] Fill `[WIT_FB_PAGE_ID]` and `[WIT_IG_ACCOUNT_ID]` in `bulk-import.csv`.
- [ ] Upload all PNGs from `../creative/renders/` to the ad account's media library first. Bulk import matches images by file name.
- [ ] Both doors are live for all three studios (`/v/<slug>/`, `/c/<slug>/`), the slot counter reads from the CRM, and a test submit fires `Lead` in Events Manager (Test Events) with a matching CAPI event.
- [ ] After import, check each ad set's location. Bulk import sometimes drops the radius on city targeting, so re-enter "+15 km" if needed. Confirm Advantage+ placements, then add the 9:16 placement image and the extra text options to each ad.
- [ ] Telugu (C8) stays off until Praneet reads it.
- [ ] Everything stays PAUSED until Nik says go.
