Media plan QA checklist: what to verify before a programmatic campaign goes live
Part of Programmatic media planning

The short answer
Media plan QA compares what was built in the buying platform with what the client approved, before any money moves. Check eight areas: geography, language, attached site lists, exclusions, deal setup, frequency caps, tracking and naming. A second person, not the builder, runs the checks and records evidence for each one.
Key takeaways
- QA tests the build against the approved plan, so the approved version of the plan has to exist before QA starts.
- Launch failures can be quiet: a list on the wrong level, a floor in the wrong currency or a tag that never fired.
- Tracking can be tested before spend with Google's Tag Assistant and a tagged test click.
- A naming convention that carries the list version and market makes every later report traceable to the plan.
What should be checked before a programmatic campaign goes live?
Prelaunch QA answers one question: does the campaign in the buying platform match the plan the client signed? It is not a second round of planning. The plan, the approved site list and the deal terms are fixed inputs, and QA looks for every place where the build drifted from them, using the media plan, the approved list version and the seller's deal confirmation. How the plan itself is built is covered in the programmatic media planning guide.
| Area | What can go wrong | Evidence to keep |
|---|---|---|
| Geography | A province or state left out, or an exclusion missing for a market the client does not serve | A screenshot or export of the targeted and excluded locations |
| Language | The line item language setting does not match the language of the creative assigned to it | The language setting beside the creative names |
| Site lists | An old list version attached, or the list attached to one line item and not its twin | The imported placement count beside the approved count |
| Exclusions | A shared exclusion list not applied to a new campaign, or applied too late to take effect | The list names applied at each level, with the date added |
| Deals | Wrong deal ID, the deal not yet active, or a floor read in the wrong currency | The deal ID, floor and currency matched against the seller's confirmation |
| Frequency | A cap set at a level that does not do what the plan intended | The cap, its level and its time window |
| Tracking | A conversion tag that is unverified, or landing page URLs missing campaign parameters | The conversion status and one tested click URL |
| Naming | Names that do not carry the market, list version or flight, so reports cannot be traced | The final names for every campaign, line item and creative |
How do you confirm site lists are attached to the right line items?
A site list can be correct and still be useless if it sits on the wrong object. Work from the platform outward: export what each line item actually targets and compare it with the approved version. Counting is the fastest test. If the approved list holds 84 domains and the line item shows 79, someone needs to know which five were dropped.
Five steps to verify list attachment
- Export the targeting from the platform. Download the placement or URL targeting of every live line item rather than reading it on screen.
- Match the version. Confirm the list name or file name carries the same version number the client approved, and that no earlier version is still attached anywhere.
- Compare counts and spot check entries. Match the totals, then open ten entries at random and confirm the domains are spelled exactly as approved.
- Check every twin. When campaigns are split by device, format or language, each split needs the same list unless the plan says otherwise.
- Check the limits. In Display & Video 360, a line item can target a combined 10,000 apps and URLs, and Google's help page (opens in a new tab) says to use channels for larger lists.
Exclusions need the same care, plus attention to timing and hierarchy. In Google Ads, placement exclusions (opens in a new tab) can be applied at the account, campaign or ad group level, account level exclusions override the lower levels, and new account level exclusions typically take effect within 12 hours. A shared exclusion list added on launch morning may not be working when the first impressions serve, so apply it the day before.
Which settings can break at launch?
The settings that break can be ones nobody argued about in planning: defaults and fields copied from the last campaign. Record the exact value, not a tick. The frequency capping guide explains how to choose a cap level; QA only confirms the build matches the choice.
| Setting | Why it breaks | What to check |
|---|---|---|
| Deal floor currency | In OpenRTB 2.6 (opens in a new tab), the Deal object's bidfloorcur defaults to USD and does not inherit from the impression's currency | A CAD deal shows CAD on the seller's confirmation and in the buying platform |
| Deal seat | The Deal object's wseat field lists the buyer seats allowed to bid, and the seat IDs must be agreed between the bidder and the exchange in advance | The deal was set up for the seat ID the desk buys from |
| Private auction flag | private_auction set to 1 restricts bids to the named deals; set to 0, open bids are also accepted | The seller confirms whether the inventory is offered only through the deal |
| Frequency cap level | In Google Ads, Display caps (opens in a new tab) can sit at the campaign, ad group or ad level, while Video caps sit at the campaign level only | The cap is set where the plan's intent says, per day, week or month |
| Creative approval | Google says most ads are reviewed within one business day (opens in a new tab), and some take longer | Every creative shows an approved status, not pending, before the start date |
How do you check tracking before spend starts?
Tracking is the one area that can be tested end to end without buying an impression. Prove that a click from the campaign reaches the right page with its parameters intact, and that a conversion there is recorded where the plan says it will be reported.
Tracking checks before the first impression
- Each conversion action the plan reports on shows a healthy status, not Unverified or Tag inactive; Google's Tag Assistant guide (opens in a new tab) walks through a test conversion and says verified actions update after about 30 minutes.
- The team allowed for slower updates: Google's conversion tracking help (opens in a new tab) says tag status may take up to 48 hours to update after corrections.
- Every landing page URL carries utm_source, utm_medium and utm_campaign, the three parameters Google Analytics (opens in a new tab) says to always use, so traffic does not report as not set.
- The utm_campaign value matches the campaign name in the naming convention, character for character.
- Where Google Ads auto-tagging is on, the team knows that Google Analytics 4 gives auto-tagging priority (opens in a new tab) over manual tagging and offers no override.
- One tester clicked a test URL and checked the address bar on the final page, since a redirect, such as a vanity URL forwarding to a store page, can drop the query string.
How should campaigns and line items be named for QA?
Definition
- Naming convention
- A fixed order of fields, joined by a separator, that every campaign, line item and creative name follows, so a name alone tells a reader the client, market, channel and list version behind a row in a report.
Names matter because the reviewer must match each platform object to a line of the plan, and because reports, invoices and reconciliation files carry the name, not the plan. A name that includes the list version answers the question clients eventually ask: which approved list was this line item running on?
| Field | Example value | Why QA needs it |
|---|---|---|
| Client and product | storage_units | Separates products that share an advertiser account |
| Market and language | mb_en | Lets the reviewer check geography and language against one field |
| Buying route | pmp or oe | Shows whether a deal ID should be attached |
| List version | list_v4 | Ties delivery to the approved list |
| Flight | 2026q4 | Keeps an earlier flight's line item from being mistaken for the live one |
Who should run QA on a media plan?
The builder checks their own work first but cannot be the last check, because people read what they meant to set rather than what they set. A second person who did not build the campaign, such as a buyer from another account or a QA lead, works through the checklist with the plan open beside the platform.
A two person QA routine
- Builder self check. The builder fills in the evidence column for all eight areas and flags anything they are unsure of.
- Independent check. A second person repeats the checks from the platform exports, without relying on the builder's notes.
- Resolve differences in writing. Each mismatch is fixed or accepted with a reason; questions about the plan itself go to the planner.
- Record the sign off. The reviewer names the plan version and list version checked, with the date and time.
- Recheck after launch. Within the first day of delivery, the reviewer confirms spend started on every line item and that served placements come from the attached list.
What does launch QA catch on a real campaign?
Fictional example
A Manitoba self storage campaign
A fictional Winnipeg self storage operator with sites in Winnipeg and Brandon plans a fall display campaign in English, timed for students leaving residence and families downsizing. The plan has an open auction line item, a private marketplace deal with a regional news publisher and a campaign level frequency cap.
A buyer from another account runs the second check on Friday morning. The open auction line item carries list version 3, while the client approved version 4, which removed two real estate listing sites. The deal ID is right, but the buying platform shows the floor in US dollars while the seller's confirmation says CAD.
The reviewer's test click on the Brandon landing page redirects to the Winnipeg page and loses its campaign parameters. The builder attaches version 4, the seller corrects the deal currency and the web team fixes the redirect. The reviewer signs off on plan version 2 and list version 4, and rechecks served placements on Tuesday.
How does PlacementGraph give QA a fixed list to check against?
Frequently asked questions
Should launch QA check creative as well as targeting?
Yes, for the parts that can break the plan: approval status, each creative's language against its line item, the formats the deal accepts, and the click URL. Whether the creative is good is a separate review owned by the creative team.
Is a soft launch at a small budget a substitute for QA?
No. A small first day budget limits the cost of a mistake, but it only reveals problems that show up in delivery. A wrong list version, a missing exclusion or stripped campaign parameters can run quietly at any budget. Run the checks first, then treat a modest first day as a safety margin.
What should the QA record contain?
The plan version and list version checked, the reviewer's name and the date, the evidence for each of the eight areas, and every mismatch with its resolution. Keep it with the campaign files, so a delivery question months later can be answered from the record.
Does QA change when the client's own team builds the campaign?
The checks stay the same, but the access changes. If the agency cannot see the client's buying platform, ask the client's team for exports of targeting, exclusions, deals and caps, plus a tested click URL. Agree in writing which side signs off each area, so no check falls between the two teams.
Sources
- App, channel, and website targeting (opens in a new tab)Display & Video 360 Help
- Exclude placements at the account level (opens in a new tab)Google Ads Help
- OpenRTB 2.6 specification (opens in a new tab)IAB Tech Lab
- Frequency capping: Definition (opens in a new tab)Google Ads Help
- About the ad review process (opens in a new tab)Google Ads Help
- Use Tag Assistant to troubleshoot your unverified or inactive conversion actions (opens in a new tab)Google Ads Help
- How Google Ads tracks website conversions (opens in a new tab)Google Ads Help
- URL builders: Collect campaign data with custom URLs (opens in a new tab)Google Analytics Help
- About auto-tagging (opens in a new tab)Google Ads Help
Researched and written by PlacementGraph Research. Read how we research, source and update these pages. Corrections: diana@placementgraph.com.