In short
- Google Ads spend is in the ad account's currency, fixed when the account was created.
- GA4 revenue is in the property's reporting currency, which is US dollars unless someone changed it.
- Dividing one by the other mixes in an exchange rate: in our example, 4.68 instead of 4.00.
- Set GA4 to the currency you sell in, or convert spend at one stated rate.
- Then take revenue from the paid channels only, over all of the spend.
Your Google Ads account bills you in euros. Your GA4 property reports revenue in US dollars, because nobody changed the setting when it was created. Divide one by the other and you get a return on ad spend that looks like a fact: a number, two decimal places, ready for the monthly report.
It is not a fact. It is dollars divided by euros, and the answer moves every time the exchange rate does, even if the ads and the shop do exactly the same. Before asking which marketing makes you money, check that both sides of the sum are counted in the same money.
An example
An invented shop that sells in euros. Last month its Google Ads campaigns cost €2,000, and the paid channels in GA4 brought in sales worth €8,000. The true return is €8,000 ÷ €2,000 = €4 back for every €1.
Here is what the same month looks like depending on the reporting currency of the GA4 property. The exchange rates are round illustrative figures, not today's.
| GA4 reports revenue in | Paid revenue shown | Ad spend (euros) | Revenue ÷ spend | Off by |
|---|---|---|---|---|
| Euros | €8,000 | €2,000 | 4.00 | – |
| US dollars (at 1.17) | $9,360 | €2,000 | 4.68 | +17% |
| Pounds (at 0.87) | £6,960 | €2,000 | 3.48 | −13% |
| Swedish kronor (at 11.0) | SEK 88,000 | €2,000 | 44.00 | +1,000% |
The last row is easy to spot. The dollar row is the dangerous one: 4.68 looks entirely believable, and it is 17% too high.
It also drifts. If next month the rate falls from 1.17 to 1.10 and the shop sells exactly the same, GA4 shows $8,800, and the return reads 4.40 instead of 4.68. That is a 6% decline in a report about ads that did not change at all.
Why it happens
The two products keep their money in different places, and neither converts to the other.
- Google Ads: an account's currency "is permanently set when you set up your account" and "cannot be updated because it is used to determine how you are billed". Your spend is in the currency of your Google Ads bill.
- GA4: revenue is shown in the property's reporting currency, and "by default, the global currency type of a property or reporting view is USD". If your site sends a purchase in euros to a property set to dollars, GA4 converts it "using the prior day's exchange rate".
So a European shop whose property was left on the default has every sale quietly turned into dollars. The revenue is not wrong as a dollar figure. It just cannot be divided by a spend figure in euros.
A return on ad spend is only a ratio when both numbers are in the same currency. Otherwise it is partly an exchange rate.
Where it bites
- Properties left on the default. Any business outside the US whose GA4 property still reports in dollars.
- Agencies. One client's ad account may be in pounds and the property in euros, and the report template divides them the same way for every client.
- Month-on-month reports. A rise or fall in the return can be the exchange rate, with nothing in the report saying so.
- BigQuery. In GA4's BigQuery export, "the raw transaction values included in the data are in local currency", not the reporting currency. Revenue from the export and revenue from GA4's reports can be in different currencies for the same property.
How to get the right number
- Check both currencies. The Google Ads one is the currency you are billed in. The GA4 one is in Admin, under Property settings.
- If you sell in one currency, set GA4 to it. Google says businesses that transact in a single currency other than USD can choose another one in Property Settings. The change is retroactive: "previous data will be converted to the newly configured currency". Tell anyone who reads the property before you change it, because every revenue figure they have seen will change.
- If the two still differ (say the ad account was opened in dollars and cannot change), convert the spend, not the revenue, at one stated rate for the period, and write the rate next to the result. It is an approximation, since GA4 converted each sale at the previous day's rate, but it is an honest one.
- Make sure each purchase carries its currency. Google notes that if you set
valuein your event data, "currencyis required for revenue metrics to be computed accurately". - Then use the paid channels only. Same currency is necessary, not sufficient: dividing all revenue by ad spend credits the ads with organic sales. See why your return on ad spend counts sales your ads didn't make.
Before trusting the revenue side at all, it is worth checking it is counted right: orders recorded once, each carrying its value. Our free GA4 audit checks those in about a minute, read-only.
How Glancely handles it
Glancely reads both currencies from Google when a source is connected: each Google Ads account's, for its spend, and each GA4 property's reporting currency, for its revenue. On the Revenue page, when the two differ, both columns are still shown, the return is left blank, and a note says why: nothing is converted. Cost per conversion is still shown, because a count of conversions has no currency. The assistant is told the same and asked to say so rather than divide.
Kosmas Botsis · Founder of Glancely
Kosmas Botsis is the founder and lead data engineer of KB Analytics, an analytics engineering practice in Athens working with clients across Europe and the US: more than 250 projects for over 194 clients, and in Toptal's top 3% of talent. Glancely is what came out of that work.
About Kosmas at KB AnalyticsMore from the blog
- Why every cohort table looks like it is getting worse
Group customers by the month they arrived and newer groups always look worth less, because they have had less time to spend. Here is a fair way to compare them, in GA4 and in BigQuery.
- Why your return on ad spend counts sales your ads didn't make
Divide all of your revenue by your ad spend and the ads take credit for every organic, direct and email sale. Here is how to work out the return on the channels you actually pay for, and why it can be five times lower.
- Why your Google Ads campaigns don't line up with GA4's
Put Google Ads spend beside GA4 revenue by campaign and half the rows often come back empty, because the join is on a name and the names don't agree. Here is where GA4's campaign name comes from, and how to match them without hiding your best campaign.