AD OPERATIONS TEMPLATE
Discrepancy Investigation Template
Structured investigation of impression, click, or revenue discrepancies between any two ad tech systems (ad server vs. third-party, exchange vs. DSP, SSP vs. buyer).
Use this templateWhat's inside
Field | Details |
|---|---|
Campaign | Campaign name |
Advertiser | |
IO Number | IO-XXXX |
Discrepancy Type | Impressions |
System A | Your system (ad server, SSP, exchange, publisher) |
System B | Their system (third-party, DSP, buyer, agency, exchange) |
Investigated By | Your name |
Status | Investigating |
The Numbers
Metric
System A
System B
Difference
Diff %
Detail | System A | System B | ||
|---|---|---|---|---|
Impressions | ||||
Clicks | ||||
Conversions | ||||
Revenue / Spend |
Detail | Our Side | Their Side |
|---|---|---|
Reporting period | — | — |
Counting method | Ad server impression = served / rendered / viewable? | |
Data source | GAM, Xandr, Freewheel — report name | DCM, Sizmek, MOAT — report name |
Filters applied | Any geo, device, or line item filters |
Investigation Checklist
Work through these in order. Most discrepancies are caused by the first three items. Stop when you find the cause.
1. Date Range & Timezone
-
Confirm both reports cover the exact same dates
-
Confirm timezone alignment (UTC vs. Eastern vs. Pacific matters — a midnight boundary difference can shift a day's worth of impressions)
-
Check for partial-day data — did the campaign start or end mid-day?
2. Counting Methodology
-
Our ad server counts on serve vs. render vs. viewable — which one?
-
Their system counts on serve vs. render vs. viewable — which one?
-
If different: the gap IS the methodology difference, not a bug. Document and close.
-
Check if either system deduplicates (e.g., one user = one impression per session vs. per request)
3. Pixel / Tag Implementation
-
Is the third-party pixel firing on every impression? Check with browser dev tools
-
Is the pixel inside the ad creative or on the page? (Creative-level fires more reliably)
-
Is the pixel blocked by CORS, iFrame sandboxing, or Content Security Policy?
-
Is the pixel loaded synchronously or asynchronously? Async can miss fast-scrolling users
-
Check for cached pages — cached impressions fire our ad server but may not fire their pixel
4. Ad Blocking & Filtration
-
Ad blockers block third-party pixels but may not block our first-party ad server
-
IVT (Invalid Traffic) filtration — does one system filter bots more aggressively?
-
Check GIVT and SIVT rates in your verification vendor dashboard
5. Technical Issues
-
Latency: does the page unload before the pixel fires? (Common on mobile)
-
JavaScript errors: check browser console for errors near the ad tag
-
HTTPS/HTTP mismatch: mixed content blocking can silently drop pixels
-
Redirect chain: is the click tracker adding too many hops, causing timeouts?
Findings
What caused the discrepancy? Be specific — this is what you'll send to the buyer.
Finding | Details |
|---|---|
Root cause | What specifically caused the number difference |
Explainable gap | The portion of the discrepancy explained by this cause |
Unexplained gap | Any remaining discrepancy after the root cause is accounted for |
Within IAB tolerance? | IAB guidelines allow up to 10% discrepancy for display, 5% for video |
Resolution
Dimension | Details |
|---|---|
Agreed action | Bill on publisher numbers / bill on third-party numbers / split the difference / makegood |
Credit / adjustment | $X,XXX credit applied (if any) |
Makegood | X,XXX additional impressions to be delivered by [date] |
Prevention | What we'll change to reduce this discrepancy in the future |
Prevention
What should change so this doesn't happen again (or so it's caught earlier)?
-
Fix or action to prevent recurrence
-
Monitoring to add: automated discrepancy alert if gap > X% after day 2
-
Process change: reconcile third-party numbers at day 3 of every campaign, not end of flight
Communication Log
Track every touchpoint with the buyer. If this goes to finance or legal, the paper trail matters.
Date | What | Outcome | |
|---|---|---|---|
Name — buyer | Reported discrepancy | Investigation started | |
You → buyer | Shared findings | ||
Other Ad Ops templates
-
Ad Ops Troubleshooting GuideSymptom-based troubleshooting: quick reference table, step-by-step diagnostics for common ad ops issues, and escalation. -
Campaign Performance ReportClient-facing campaign report: delivery vs. goals, pacing, performance breakdown, optimizations, and recommendations. -
Campaign Trafficking ChecklistStep-by-step trafficking checklist: pre-flight verification, ad server setup, QA, go-live, and first 48-hour monitoring.