Skip to main content
HOME>Use Cases>Attribution Reconciliation: A Month-End Report That Matches the Ad Platforms
Use Case8 min read

Attribution Reconciliation: A Month-End Report That Matches the Ad Platforms

Thirty campaign rows are reconciled against Google Analytics and Meta Ads, cost per acquisition is checked against each channel's ceiling, and every restatement is written as a full row after the analytics lead approves it.

Get started
Kylon TeamProduct

The month-end report says one thing, the platforms say another

The attribution report is a Google Sheet with one row per campaign and twelve columns, from spend and conversions to cost per acquisition, the channel, the source of each figure, the channel ceiling and the flag. Thirty rows across six channels. Every figure is meant to agree with Google Analytics for conversions and with Meta Ads for paid social spend, within a tolerance the analytics lead sets.

It rarely agrees on the first try. Meta counts conversions on its own attribution window and Google Analytics on another, and a mis-tagged UTM puts a campaign in the wrong channel. The analyst's exceptions memo lists the rows they noticed, not every row that misses. Then the data refreshes, the tolerance changes, a UTM fix moves a campaign, and someone updates three cells in a row that has twelve.

Who works in the room

People

  • Analytics lead

    Sets the tolerance and channel ceilings, approves every restated row and signs off the month

  • Marketing analyst

    Writes the exceptions memo and revises it after review

  • Channel owners

    Explain mismatches in their channel and confirm tagging fixes

Agents

  • FinReconciler

    Pulls each campaign's figures from Google Analytics and Meta Ads, checks CPA against the ceiling and proposes complete restated rows

    Google AnalyticsMeta AdsGoogle Sheets
  • NovaMemo reviewer

    Walks the exceptions memo line by line, lists what it left out and drafts questions to channel owners

    Google DriveGoogle SheetsGmailSlack

Month-end reconciliation happens in one Kylon room. Fin is the room's default agent because the numbers are its job, so a question about why a campaign's CPA moved reaches Fin without a mention. Nova reviews memos and writes to channel owners. Fin reads Google Analytics and Meta Ads through grants the analytics lead approved for the room, and splits the thirty rows across parallel helpers that each pull one campaign's figures and return one reconciled set. When a row will not reconcile from the data alone, Fin hands it to Nova with each source's figure side by side.

Month-end, row by row

Tolerance, channel CPA ceilings and column rules come from the report folder in Google Drive. One more rule lives in the room guidelines: a restated row is written whole, all twelve columns, never cell by cell.

  • Agent works
  • Person decides
  • Arrives or gets recorded
Scroll sideways to see the whole flow.
StageWhat happensWho actsWho decides
ReconcileAll 30 rows compared with Google Analytics and Meta Ads, with CPA worked out and checked against each channel's ceilingFinThe analytics lead approves restated rows before they reach the sheet
Exceptions memoEach printed line of the analyst's memo is checked, then campaigns the memo left out that also miss are listedNovaThe analyst revises the memo, and the sheet is not touched
Data refreshLate conversions in Google Analytics re-derive the rows they touch, and all 30 rows are reported againFinThe analytics lead approves the restatements
Tolerance changeEvery row is checked again against the new tolerance, not only the rows flagged beforeFinThe analytics lead sets the tolerance
UTM fixCampaigns that change channel are re-derived, and both channels' figures moveFin, then Nova for the channel ownersChannel owners confirm the tagging; a person sends each note
Channel summarySix channel rows are written, including any channel with nothing flaggedFinThe analytics lead approves the six rows and signs off the month
Stages of a monthly attribution reconciliation. Campaigns, channels and thresholds in this example are illustrative.

When the data refreshes after the report is out

Google Analytics keeps attributing conversions for days after a campaign's spend has landed. When the refresh arrives, Fin re-derives only the rows the new data touches, twelve this month, but reports all thirty, so the analytics lead sees the restated rows next to the ones that held. A report that lists only what changed cannot show that the rest were checked.

A tolerance change or a UTM fix reaches further. A tighter tolerance can flag a row that passed last week, so every row is checked again. A UTM fix that moves a campaign from display to paid social changes two channels at once. In each case Fin proposes the complete row with every column filled from the current figures, because a row with a new CPA and last week's flag tells two different stories.

What the checks catch

  • A restated row with new spend but last week's CPA and flag left in the other columns
  • Campaigns that miss tolerance but were left out of the exceptions memo
  • A refresh report that lists only the restated rows instead of all thirty
  • A channel summary with five rows because one channel had nothing flagged
  • A campaign moved to a new channel by a UTM fix but still counted in the old one

What stays with people

  • Setting the tolerance and each channel's CPA ceiling
  • Approving every restated row before it is written to the sheet
  • Deciding with the channel owner whether a mismatch is a tagging problem or a real gap
  • Signing off the month's channel summary

Integrations in this workflow

Kylon is not an analytics tool or an attribution product, and it does not replace either. It sits across Google Analytics, Meta Ads and the report sheet and holds the reconciliation between them.

  • Gmail
  • Google Analytics
  • Google Drive
  • Google Sheets
  • Meta Ads
  • Slack
  • Google Analytics supplies conversions by source, medium and campaign
  • Meta Ads supplies spend and platform-reported conversions for paid social
  • Google Sheets holds the attribution report, written one full row at a time
  • Google Drive keeps the tolerance, the channel ceilings and the analyst's exceptions memo
  • Gmail carries questions to channel owners, sent by a person from Nova's drafts
  • Slack is where channel owners answer quick questions about a campaign's tagging

Where to start

Reconcile last month's report before this month's. Connect Google Analytics and Meta Ads to the room, share the report sheet, and make this the rule in the room guidelines: a restated row is written in full, and only after the analytics lead approves it.

“Twelve rows changed. All thirty were checked, and the report shows it.”

Set it up with your agent

Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.

Set-up prompt

Your first company harness. Where humans and agents run your business together.

Get started

More Use Cases

View all

Ad Creative Approvals: A Launch Board That Matches What Is Actually Live

The agency's launch sheet is audited against live Meta Ads campaigns and Instagram posts, every creative gets a status and a launch window on the Miro board, and holds, budget cuts and late approvals are absorbed mid-wave. The desk lead approves every board change.

Media, publishing & agenciesApprovals & reviewsMarketing operations

Ad Delivery Make-Goods: Every Shortfall Settled as a Bonus Placement or a Credit

Insertion orders are reconciled against delivered impressions and contract terms in one Kylon room. Agents work Attio, the Notion delivery report and the Outlook contract threads, re-run bonus allocations when numbers change, and the ad operations lead approves every outcome.

Media, publishing & agenciesMarketing operations