Measurement · Cross-platform
Reading Google and Meta together
An assistant connected to Google Ads and Meta can now answer one question with both accounts in front of it. Three mistakes survive that connection: adding conversions across the two, trusting a declared platform list over the connected one, and reading a missing day as a drop. Each one produces a confident number that is wrong.
The connection is the easy half
Getting an assistant to reach both ad platforms used to be the whole job. That part is now close to solved: there are MCP servers, exports, connectors and consoles, and the options are laid out here. What nobody ships with the connection is the set of rules for reading two accounts that were never designed to be read together.
So the failure mode changed. An assistant with one platform gave you a partial answer and you knew it was partial. An assistant with both gives you a complete-looking answer, in one paragraph, with a total at the end. The total is the part to distrust.
Every mistake below has the same shape. Each platform is answering a question about its own ads only, and the assistant is treating the two answers as if they came from one system.
Three words this page uses precisely
- Declared
- The platforms a record says the account runs. Somebody typed it in once, and nothing checks it again.
- Connected
- The platforms whose permissions exist right now and would answer if you called them. When the two lists disagree, this is the one that is true.
- Collection gap
- A date with no rows because the import never ran, as opposed to a date with rows that are all zeros. On a chart the two are the same dip.
What survives being added, and what never does
Google Ads and Meta each report on their own ads only, and neither platform can see the other. That makes some of their numbers addable and others not, and the dividing line is whether two platforms can both claim the same event. Cost is safe, because each platform bills its own spend and no euro can be counted twice by two systems. Clicks are safe too, since a click happens on one platform or the other, and impressions add up arithmetically even if reading them as reach still misleads. Conversions are not safe, because both platforms are willing to take credit for the same sale, and revenue, ROAS, CPA and CPL all inherit that double count. One line covers the whole table: add what a platform spent or served, and never add what it claims it caused.
| Metric | Add Google + Meta? | The verdict, and why |
|---|---|---|
| Cost | Yes | Safe. Each platform bills its own spend, so no euro is counted twice. |
| Clicks | Yes | Safe. A click happens on one platform or the other, never on both. |
| Impressions | Yes, with care | Arithmetically safe. Read as reach it is wrong: one person on both platforms is two impressions. |
| Conversions | No | Both platforms can claim the same sale. The sum is larger than the business. |
| Revenue | No | Same double claim, with the money attached. This is the one that reaches a board slide. |
| ROAS | No | A ratio built on a number you cannot add. Averaging two of them is worse. |
| CPA and CPL | No | Derived from conversions, so they inherit the double count. |
The table has no middle column for judgement. A metric is either free of double claims or it is not, and no amount of care with the numbers moves a row from one side to the other.
Mistake one: adding conversions
Each platform decides which of its own touchpoints deserves the credit, and each uses a window it was given separately. Google documents its own default plainly:
“If you don’t customize the click-through conversion window when you create a new conversion, the default window is 30 days.” And: “A March 13 conversion from this interaction, which wasn’t counted within the last window, won’t be retroactively counted.”
Google Ads Help, About conversion windows (retrieved 28 August 2026)
Meta carries its own attribution setting, chosen in its own interface, and documented on its own help pages. The exact numbers matter less than the structure, and the structure is the problem: two windows, set independently, over one buyer who does not know either exists.
The fix is not a better model or a longer window. The fix is a rule the assistant is told before it answers: cost, clicks and impressions add; conversions, revenue and every ratio built on them do not.
Why one platform alone already gives you four different numbersMistake two: the declared list beats the connected one
Every account record somewhere carries a field like active platforms. Somebody typed it in when the account was set up. The connections are a different thing entirely: the permissions that exist right now, the ones that would answer if you called them.
Those two lists are supposed to agree. In our own build they have disagreed, and the cost was specific: a report was written from the declared list and left out 27 % of the spend. The report looked complete. Nothing in it said a platform was missing, because as far as the record was concerned nothing was.
Why the assistant picks the wrong one
A declared list is a tidy field with a tidy answer, so it reads like the authoritative one. The connected list has to be derived, it comes back messier, and it sometimes contradicts the tidy field. An assistant asked which platforms does this client run will reach for the tidy field unless told otherwise.
Our own guide for models says it in one line, and it is the line worth stealing: what is connected wins. A platform that is declared and not connected is a platform with no data, and a report that does not say so is a report with a hole in it.
The other thing nobody owns: looking back at what you decidedMistake three: a gap read as a fall
A chart cannot tell you the difference between a day with no spend and a day that was never collected. Both arrive as a zero, both draw the same dip, and the second one is not a fact about the account at all.
How the two look on the way in
- A real zero comes with rows. The campaigns exist, the day exists, and every number on it is a zero.
- A collection gap comes with nothing. No rows for that date, because the import did not run or the platform was slow to close the day.
- A summary flattens both. By the time either reaches a chart they are the same pixel, and the chart cannot tell you which one it drew.
The question to make the assistant answer before it interprets any curve: how many days of this period actually have rows, and what is the status of each source? An answer that cannot name the coverage is an answer about a chart, not about an account.
Collection lag also makes the freshest day of any period the least trustworthy one. Ad platforms keep adjusting a day after it closes, and conversions in particular arrive late. The last two or three days are provisional, whatever the chart implies.
The block to paste in before you ask anything
None of the three mistakes needs a smarter model. Each one needs a rule stated in advance, because an assistant given two totals and no rules will add them. Paste this into the context, the project instructions or the system prompt, wherever your assistant keeps what it should already know.
Reading rules for more than one ad platform
ADD ACROSS PLATFORMS cost, clicks, impressions
NEVER ADD conversions, revenue, ROAS, CPA, CPL
Each platform attributes with its own window and
cannot see the other, so one sale can be claimed
twice. Report each platform separately instead.
And what it has to say before it answers
BEFORE ANY NUMBER Name the platforms that are CONNECTED, not the
ones a record declares active. If the two lists
disagree, the connected list wins, and say so.
BEFORE ANY TREND State how many days of the period have rows. A
day with no rows may be a day that was never
collected. Say which one it was.
TREAT AS PROVISIONAL The last 3 days of any period, and any
conversion metric inside them.
WHEN THEY DISAGREE Give both figures, separately, then name one
business-side number as the tiebreaker:
sales, or qualified leads out of the CRM.
NEVER Invent a total that no platform reported.
If the honest answer is two numbers, give two.
Copy it as it is. The wording matters less than the fact that the rules arrive before the data does.
Questions people ask before trusting a cross-platform number
Can I add Google Ads and Meta conversions together?
No. Each platform decides on its own which of its own touchpoints deserves the credit, using its own window, and neither platform can see the other. A person who saw a Meta ad and later clicked a Google ad can be counted once by each. Adding the two totals counts that sale twice.
What can I safely add across ad platforms?
Cost, clicks and impressions. Each platform bills its own spend, so cost has no overlap. A click happens on one platform or the other. Impressions add up arithmetically, with the caveat that the same person reached on both platforms is two impressions and one person.
Why do two platforms claim the same sale?
Because each one is answering about its own ads only. Google Ads Help states that a new conversion action defaults to a 30-day click-through window. Meta has its own attribution setting, chosen separately in its own interface. Two independent windows over the same buyer produce two independent claims.
My assistant says spend fell on Tuesday. How do I know it really fell?
Check whether Tuesday has rows at all. A day with no rows can be a day that was never collected, which looks identical to a day with no spend once it reaches a chart. Ask for the coverage of the period and the status of each source before reading the shape of the curve.
The account record lists four platforms and the report covers two. Which one is right?
The connected one. A declared platform list is what somebody typed into a record; the connections are the permissions that exist right now. Our own build has had the two disagree, and a report built on the declared list left out 27 % of the spend.
Does an MCP server fix this?
No. An MCP changes how the assistant reaches the data, not what the data means. The same two totals arrive faster and are still not addable. What helps is telling the assistant the rules before it answers, which is what the block above is for.
Which number do I use when the two platforms disagree?
Report both separately, then pick one business-side figure as the tiebreaker: sales, or qualified leads out of the CRM. That figure is counted once by a system with no stake in the answer, which is exactly what neither ad platform can offer.
Related reading
Related reading. Marketing attribution: the four dials that make one platform disagree with itself. Connect your AI to your ad data: the three ways to get an assistant to the numbers in the first place. Google Ads MCP: which servers can change your account and which only read. What not to automate: the jobs that stay yours once the reading is handled.
See both accounts read in one pass
The rules above are what our own console is built on. It imports one closed day from each connected account, reports each platform separately, and never writes a total that no platform reported. The free audit runs that reading on accounts you already have, and the analysis is yours whether we work together or not.
Have your Google and Meta accounts read, free →
Last updated: .