Practical guide

How to Create a Campaign Performance Report With AI

A useful campaign report is a decision record, not a collage of platform screenshots. Use AI to reconcile definitions, surface anomalies, and draft explanations only after you freeze the reporting contract and retain the underlying exports. The method below separates delivery, attributed outcomes, and causal evidence so a reader can decide what to continue, change, test, or stop without.

By Two Prune

A useful campaign report is a decision record, not a collage of platform screenshots. Use AI to reconcile definitions, surface anomalies, and draft explanations only after you freeze the reporting contract and retain the underlying exports. The method below separates delivery, attributed outcomes, and causal evidence so a reader can decide what to continue, change, test, or stop without mistaking an attribution model for proof of incrementality.

Freeze the reporting contract before reading results

Write a one-page contract that names the decision, campaign boundary, reporting period, currencies, time zone, included channels, conversion definitions, attribution model, lookback window, counting rule, source systems, and data-finalization date. Record each extract's retrieval time and stable file name. If definitions changed during the campaign, preserve both versions and state which rows each version affects.

Google Analytics documents that attribution settings include a reporting model, channels eligible for credit, and lookback windows. Its current guidance also notes that changing attribution settings affects historical and future reporting data. Treat that as a platform-specific warning about definitions, not as a universal measurement rule. See Attribution settings in Google Analytics.

Give AI the contract and a schema, not unrestricted access to invent metric meanings. Ask it to flag missing fields, inconsistent labels, mixed currencies, duplicate campaign IDs, and incompatible conversion definitions. A person should approve every mapping that changes a total.

Sources: [1]

Build a reconciled fact table

Create one row per campaign, channel, audience, creative, and reporting interval at the finest level shared by the source systems. Keep raw and derived fields separate. A practical table includes spend, impressions, reach, clicks, sessions, observed key events, attributed conversions, attributed value, refunds or reversals, source, extraction time, maturity status, and reconciliation note.

Run three reconciliations before calculating performance:

Do not force mismatched totals to agree. Preserve the variance and name its likely mechanism, such as consent loss, cross-device behavior, time-zone cutoffs, offline conversion lag, or different counting scopes. AI can draft a variance explanation, but the evidence artifact should link each explanation to the source rows.

  • Delivery: platform spend and delivery totals agree with the frozen exports, within a stated tolerance.
  • Journey: click or session totals are directionally reconcilable across tagged links and analytics, with known loss explained.
  • Outcome: business-system outcomes use the same identity, time, value, cancellation, and deduplication rules as the report.

Separate delivery, attribution, and incrementality

Use three evidence lanes. Delivery answers what the campaign bought and reached. Attribution allocates observed outcomes under a declared model. Incrementality asks what outcomes occurred because of the intervention, using a suitable experiment or causal design. Never let an attributed conversion total silently become an incremental lift claim.

Google Ads describes Conversion Lift as a treatment-and-control experiment that estimates conversions caused by ads and distinguishes those results from standard attributed conversion reporting. It also notes that delayed conversions can require modeling. See About Conversion Lift based on users. If no valid lift study exists, report incrementality as not measured rather than estimating it from click-through rate, return on ad spend, or an AI-generated counterfactual.

Add a maturity field to every result. Google Analytics says modeled key-event data may update for as long as 12 days, depending on reporting and attribution settings. See Modeled key events. Your own source systems may have different delays; document them directly and mark the report preliminary until the agreed window closes.

Sources: [2] [3]

Make AI produce checks, not conclusions

Provide the reconciled table, decision question, and allowed claim vocabulary. Ask AI to return a structured exception list with row IDs, suspected issue, evidence, and a proposed check. Then ask for alternative explanations for each material movement. Useful prompts include:

Reject prose that introduces a number not present in the fact table, describes correlation as causation, or omits a material contradiction. Keep a claim ledger with claim, source cells, transformation, confidence, owner, and approval status.

  • Which changes disappear when the comparison period, audience mix, or conversion definition is held constant?
  • Which results depend on immature data or a platform-only metric?
  • What evidence would distinguish creative fatigue from audience saturation or auction pressure?
  • Which recommendation changes if attributed value is 20 percent lower or costs finalize 10 percent higher?

Use a decision table instead of a winner list

For each proposed action, record the observed signal, competing explanation, evidence strength, operational constraint, decision, owner, and next measurement. “Scale” is incomplete unless it states the unit being scaled, the boundary, a stop condition, and how performance will be rechecked. “Test” should name the hypothesis, treatment, comparison, primary outcome, minimum decision window, and contamination risks.

A compact report can contain an executive decision table, the frozen contract, reconciled scorecard, anomaly and maturity notes, experiment results, claim ledger, and appendices linking to the raw extracts. Readers should be able to reproduce the headline totals without asking the author which dashboard settings were used.

Worked example: a late-converting launch

A synthetic software launch ran paid search, social video, and a partner newsletter for 21 days. The first draft combined platform-reported conversions and announced that social had the best return on ad spend. The reporting contract revealed three problems: social used a seven-day view-through window, search used a 30-day click window, and the billing export finalized upgrades seven days after trial start.

The analyst rebuilt the fact table around paid upgrades from the billing export, kept platform attribution in separate columns, and marked the last seven campaign days immature. Search had 84 attributed upgrades, social 119, and the partner channel 31; the reconciled mature billing cohort contained 171 upgrades in total, so those figures could not be added. No randomized lift study had been run, so incremental conversions were recorded as not measured.

AI flagged that social's apparent advantage was concentrated in view-through credit and generated three plausible explanations. The team did not call a winner. It continued search at its current boundary, capped social spending until mature billing data arrived, and designed a geo-balanced holdout for the next launch. The retained artifact included the source manifest, metric dictionary, reconciliation table, maturity schedule, claim ledger, and signed decision table.

Preserve the assessment boundary

Two Prune can use a realistic campaign-reporting simulation to observe whether a participant defines metrics, reconciles sources, uses AI critically, distinguishes attribution from causal evidence, and communicates a bounded decision. That is evidence of observed assessment performance. It is not marketing attribution software, assurance of campaign results, an audit opinion, scientific proof about a campaign, or an automated employment decision.

Sources

  1. 1.Attribution settings in Google Analytics · support.google.com
  2. 2.About Conversion Lift based on users · support.google.com
  3. 3.Modeled key events · support.google.com