Google Ads integration ad cost next to margin, not next to clicks
The Google Ads panel knows what you spent and how many clicks came out of it. It does not know how many of those orders came back, what the goods cost, or which deals closed on the phone a month later. We wire Google Ads to the CRM, the shop, the accounting system and the data warehouse, and we send CRM conversions back into Google so that bidding works on your real sales.
- 3.53 to 4.19how much revenue came back from every unit of ad budget in our founders' shop, before and after the ads were wired to sales data. The budget was 6.9% lower at the same time. Details and the caveat in the proof section
- 302 productshow many items a rule pulled out of the campaigns in our own shop in six months, because they did not earn once returns were counted
- 2 to 6 weeksfrom the workshop to a working link between Google Ads, the CRM, margin data and the warehouse, depending on how many sources are in play
The problem
Why does the Google Ads panel not tell you what a campaign earns?
The panel counts what it can see: cost, clicks, form conversions and whatever value somebody typed into the goal settings. It does not know that one parcel in four from that campaign came back. It does not know what the goods cost. It does not know that last quarter's best customer signed on the phone, three weeks after the click. The campaign with the best return in the panel is often the one doing the most damage to the P&L.
The result is always the same. Budget goes where the numbers look good, not where the margin stays. The algorithm bids toward the signal you handed it, a form fill, so it delivers more form fills, including the ones that will never buy. An overrun shows up on the invoice, not on the day it happened.
The data can be joined and this is not a research project. The Google Ads API documentation describes both directions: GAQL queries that pull cost, clicks and conversions per campaign, and offline conversion import that sends a deal from the CRM back to Google together with the click identifier. Cost comes back in micros, where a million micros is one unit of currency, and that is where most first attempts trip. What is missing is not the interface. It is the decision about which numbers you put side by side and what counts as a conversion in your company.
- Budget goes to products that do not earn once returns are counted
- Deals closed on the phone never reach Google, so bidding does not know about them
- You learn about an overrun from the invoice, two weeks too late
- Google, Meta and the shop report three different revenues for the same campaign
Why now
What changed, so that wiring Google Ads to company data takes weeks?
The direction from Google to you is ready today. Google Ads has a daily data transfer into BigQuery that loads the campaign, ad group, keyword and conversion tables on its own, and anything outside that standard set is picked up with a GAQL query. Nobody writes an export per report and nobody asks a person for a CSV file.
The direction from you to Google matters more and is still rarely used. Offline conversion import sends a deal from the CRM back to Google with its real value, a conversion adjustment lowers that value after a return, and Customer Match keeps the list of existing customers current with no manual exports. Bidding then works on your sales rather than on a form event.
The third change is the AI agent. A rule will calculate margin and fire an alert, but it will not answer the question 'how much did we spend this month on campaigns that lost money after returns'. BOND, our company AI agent, answers that in a plain sentence in 5 to 10 seconds, with no login to the panel and no report to build.
What changes
What do you see once Google Ads sits next to sales data?
Ad cost next to revenue and margin
Spend from Google Ads stands in one table with shop revenue, cost of goods and returns. You count return on budget after returns, not on orders that may still come back.
Per campaign, product and market, refreshed every 24 hours
CRM sales go back into Google
A won deal in the CRM sends Google an offline conversion with the value and the click date. Bidding stops optimising for the number of forms and starts optimising for deals that actually closed.
Imported on the click identifier, value taken from the CRM, not from the goal settings
Products with no margin drop out of the campaign
A rule checks margin after returns per product and pulls the items that do not earn out of the campaign before they eat the budget. The number decides, not the specialist's hunch.
302 products pulled out of the campaigns in our own shop in six months
A spend alert on the same day
A scheduled query on cost watches the daily and the monthly threshold, plus the deviation from the average of the previous weeks. The message goes to Slack or by email to whoever owns the account.
Daily threshold, monthly threshold and deviation from average, checked every hour
Google and Meta in one table
Cost from every channel lands in the warehouse next to revenue from your order system. One definition of cost, revenue and return on budget for the whole of marketing.
One table instead of three exports glued together in a spreadsheet
Questions about campaigns in a plain sentence
'How much did we spend yesterday on shopping campaigns', 'which products have negative margin after returns today', 'has cost per acquisition in Germany gone up'. The AI agent answers out of your own data.
An answer in 5 to 10 seconds, with no login to the panel
Proof
Do you police your own campaigns this way?
Yes. The only numbers we can show without asking a client for permission to publish their results come from our founders' companies. Below is a clothing brand where Google Ads is wired to orders, returns and cost of goods, together with what those numbers do NOT prove.
Built for ourselves. These are not client deployments but implementations inside the founders' own companies. We say so plainly, because proof you cannot verify is not proof.
SurfBottheir agentSurf Inc., a premium clothing brand, an online store and two physical shops
- 16
- people from the company work with the agent
- 21
- systems wired in permanently
- 89
- processes run without a human
- 323
- thousand lines of the agent’s code
The agent is wired into the order system, the ERP, the store, the data warehouse and the ad systems. Launched in March 2026, fully running in May. In that time the rule on margin after returns pulled 302 products out of the campaigns.
8 of 21 systems it works in
PrestaShop
- BaseLinker
- Comarch Optima
BigQuery
Google Ads
Meta Ads
GA4
Zalando
- Before
- From February to August 2025 every unit of ad budget came back as 3.53 in online revenue, and advertising ate 28.3% of that revenue.
- After
- In the same months of 2026 the ratio is 4.19, and advertising's share of revenue is down to 23.9%. The ad budget is 6.9% lower on sales 10.3% higher.
Return on ad spend from 3.53 to 4.19, 18.5% higher, on a budget 6.9% lower
And in your company
What if our account looks different?
Four sentences we hear most often on a first call about Google Ads, and what we answer to each of them.
If you are after a neighbouring piece, there are separate pages for the automatic campaign report, for the BigQuery integration and for marketing automation as a whole.
An agency runs the campaigns and the agency does the reporting.
A report is not the same thing as data. The agency optimises what it sees in the panel, and we deliver to that panel and to your warehouse what the panel does not have: margin after returns and conversions from the CRM. Agencies are usually glad of it, because they get a stronger signal for bidding, and you keep the data after you change supplier.
We have no data warehouse at all.
You do not need one on day one. We start with what exists: a Google Sheet, the database under the shop, an export from the order system. We propose BigQuery when there are more than three sources, or when you want to keep history independently of the ad panels. That is a separate decision and it is made in the workshop, not at signature.
Our sales close on the phone, the panel only shows forms.
That is the case where offline conversion import pays back the most. There is one condition: the click identifier has to be stored with the lead in the CRM, so we set that up before the first import. After that the CRM sends the deal with its real value the moment the stage flips to won, and sends an adjustment on a cancellation or a return.
We are afraid the algorithm will go wild once the conversion data changes.
That is why the changes go in stages, running side by side. New conversions are observed first while the existing bidding goal stays untouched. Only once the CRM data flows in steadily do we switch bidding over, and we judge the effect after 30 days on the same campaigns rather than in the week of the switch.
- Advertising and analytics
- Google Ads, GA4, Google Tag Manager, Meta Ads
- CRM
- HubSpot, Pipedrive, Salesforce, Microsoft Dynamics
- Sales and shop
- Shopify, WooCommerce, PrestaShop, BaseLinker, Allegro
- Accounting and cost of goods
- Xero, sevDesk, Comarch Optima, Fakturownia
- Data
- BigQuery, Google Sheets, SQL databases
- Alerts and the automation layer
- Slack, Google Workspace, Microsoft 365, Make, n8n, custom integrations over the API
What comes out of Google Ads and what goes back into it
The two directions that make up the integration. The scope of a first rollout is settled in the workshop, because every row needs different data on your side.
| Data | Direction and method | What it is for |
|---|---|---|
| Cost, clicks and conversions per campaign | out of Google Ads into the warehouse, daily transfer or a GAQL query | cost put side by side with revenue and margin after returns |
| Shopping campaign results per product | out of Google Ads into the warehouse, report keyed on the product identifier | the list of items to pull out of the campaign |
| Search terms and what they cost | out of Google Ads into the warehouse, on a schedule | terms that cost money and do not sell, ready to exclude |
| Sales, returns and cost of goods | out of the shop, the order system and accounting into the warehouse | margin after returns per product, campaign and market |
| Won deals and contracts | out of the CRM into Google Ads, offline conversion import on the click identifier | bidding toward closed deals instead of form fills |
| Returns and cancellations | out of the order system into Google Ads, conversion value adjustment | the algorithm stops bidding toward sales that came back |
| The list of existing customers | out of the CRM into Google Ads, Customer Match refreshed every 24 hours | exclusions and separate bids for customers you already have |
In most companies a first rollout covers two rows: cost into the warehouse and CRM conversions into Google. The rest goes in once the first table shows what is missing for the decision.
How we do it
Five steps from the panel to numbers you can split a budget on
Each step ends with something you can judge before you decide on the next one.
Workshop
We establish what you split the budget on today, which numbers are missing for that decision and where they sit: in the shop, in the order system, in the ERP, in the CRM. We also define what counts as a conversion in your company, because everything else follows from it. Usually one week.
Integration design
Data directions, frequency, the definition of margin after returns, alert thresholds and the place where the click identifier is stored. We pick the tool: a daily transfer into BigQuery, a scenario in Make or n8n, a custom integration over the API. We take the simplest route that is enough.
Pilot on real data
We pull your recent months and compare them against the panel number by number, so that every difference is explained before anyone makes a decision on it. CRM conversions are only observed during this stage, with no change to bidding.
Production
Schedules, error monitoring, alerts on spend and on deviation, the rule that pulls products with no margin. We hand over the documentation and show you how to change an alert threshold or add a new market to the table on your own.
Measurement after 30 and 90 days
We check whether bidding on CRM conversions moved cost per acquisition, whether the rule cuts too much and whether the alerts reach the right people. We tune the thresholds to what actually arrives, not to what we assumed in the workshop.
Before and after
How the budget conversation changes
Before
- You split the budget on the return the panel shows, because no other number exists
- Sales closed on the phone never make it back to Google
- You learn about an overrun once the month is closed
- Someone glues the Google and Meta figures together by hand in a spreadsheet
After
- You split the budget on margin after returns, per campaign and per product
- A won deal from the CRM goes back to Google with its value and click date
- The alert on spend and on deviation arrives on the day it happened
- Google, Meta and the shop stand in one table, counted on one definition
The first table of cost against margin is visible in the pilot week. The effect of CRM conversions on bidding is judged after 30 and 90 days, because the algorithm needs data before it shifts.
For the person signing this off
What a head of marketing gets out of it
The budget conversation stops being an argument about whether the panel is lying. You have one number: what the campaign cost and what was left of it after returns and cost of goods. That number comes out of your own sales, not out of an ad vendor's panel, so it holds up in front of the board.
The second thing is personal. When spend runs over plan, you hear it first, from an alert, rather than from the chief executive after the invoice. A decision to pull a product or to move budget has a rule and data under it, so you do not have to defend it with a hunch. The same goes for a decision not to pull it.
- One definition of cost, revenue and return on budget across every channel
- An alert on spend and on deviation before the month closes
- CRM conversions inside Google, so bidding knows your real sales
- The data stays in your warehouse, including after you change agency or tool
What it costs
The workshop has a published price, the integration is quoted after it
The process workshop costs EUR 3,500 net per week, and on Google Ads one week is usually enough, because the scope is narrow: campaign data, sales data and the definition of margin. We quote the integration after the workshop, once it is clear how many sources are in play and whether cost of goods is available in a system at all.
There is no separate fee for the Google Ads API itself. You pay the ad budget and the tools the integration stands on: BigQuery, Make or n8n, billed straight by the vendor with no commission from us. Where the AI agent is in scope, model queries cost the vendor EUR 0.005 to 0.07 each. If the integration runs on your own infrastructure, you pay nothing beyond what you already have.
Process workshop
EUR 3,500 net
per week, on Google Ads usually one week
A self-contained piece of work. It ends with a data map, a written definition of margin after returns and an integration plan you can execute without us.
- Data map: what is in Google Ads, in the shop, in the CRM, and what is missing
- The definition of a conversion and of margin after returns, written down and approved
- Tool recommendation: transfer into BigQuery, Make, n8n or the API
- Alert thresholds and the metrics to measure after 30 days
- Most popular
Workshop and Google Ads integration
Quoted after the workshop
scope follows from the number of sources and the state of the margin data
The option most companies choose. A working integration within 2 to 6 weeks of the workshop, checked against your own campaigns from recent months.
- Everything in the workshop
- Cost and campaign results pulled into the warehouse or a spreadsheet
- Cost, revenue, returns and margin per campaign and per product in one table
- Offline conversion import from the CRM and value adjustment after a return
- Alerts on spend and on deviation, plus the rule that pulls products with no margin
Integration and an AI agent for campaigns
Quoted after the workshop
for teams that ask about campaigns several times a day
Everything in the integration plus BOND, answering questions about cost and margin in a plain sentence. An agent rollout usually takes around 2 months.
- Everything in the Google Ads integration
- An AI agent on ad, shop and CRM data, answering in 5 to 10 seconds
- Alerts written out: what went up, what went down and in which campaign
- Access for marketing, sales and the board, in English and in Polish
If the workshop shows that panel reports and one export into a spreadsheet are enough for you, we say so and show you how to set them up. The workshop ends with a document that stands on its own, including with a different supplier. And if it turns out there is nothing to wire together, because cost of goods and returns are written down nowhere, the first step is tidying that up, not an integration.
Frequently asked questions
What is a Google Ads integration?
It is a link between the ad account and the systems where you keep sales and customers. In one direction we pull cost, clicks, conversions and product results, so they can be put side by side with revenue, returns and cost of goods. In the other direction we send Google conversions from the CRM, adjustments after returns and customer lists, so that bidding works on your data instead of on a form event.
How long does a Google Ads integration take?
One week of workshop and 2 to 6 weeks of build, depending on the number of sources and the state of the margin data. Pulling cost into a warehouse or a spreadsheet usually works after the first week of build. The slower half is the side that needs cost of goods and returns added, because that data tends to be scattered between the shop, the order system and accounting.
How do CRM sales get back into Google Ads?
On first contact we store the click identifier that Google appends to the landing page address alongside the lead. When the deal moves to won, the CRM sends Google an offline conversion with that identifier, the date and the real contract value. On a cancellation or a return an adjustment follows, so the conversion value drops instead of staying in the statistics.
How is this different from an automatic campaign report?
A campaign report answers the question of what happened last week and sends itself to the board or the client on Monday. A Google Ads integration is the layer underneath: it delivers data the panels do not hold and sends conversions back into Google. You can have one without the other, but a report built on integrated data talks about margin rather than only about cost per conversion.
Do we need BigQuery for this?
Not always, and we say so plainly. With one ad account and one shop a Google Sheet refreshed daily is enough. A warehouse starts to earn its place with several channels, several markets, or when you want to keep history independently of the panels. Then the data stays with you after a change of agency, ad system or reporting tool.
How do you calculate margin after returns?
From the revenue on orders attributed to a campaign we subtract returns from the same period, cost of goods from the ERP or the product record, and ad cost from Google Ads. The definition is settled in the workshop, because companies treat shipping cost, discounts and marketplace sales differently. What matters is one definition across every channel, otherwise comparing Google with Meta means nothing.
What about GDPR when sending customer data to Google?
Offline conversions need only the click identifier, so personal data never leaves your systems at all. Customer Match lists need an email address or a phone number, sent as a hash, and there you need a legal basis and consent collected where the customer left the data. The set of fields and the retention period are settled in the workshop and written into the documentation.
Do we have to change agency or the way campaigns are run?
No. We work on your account and with your agency if you have one, because we do not run campaigns. We deliver the data and the mechanics: cost put next to margin, conversions from the CRM, alerts and rules. Decisions on bids, creative and account structure stay with whoever makes them today, with better material to hand.
Let us find what your panel is missing
The free consultation takes 30 minutes. You tell us what you spend a month, where the sales data sits and whether cost of goods is written down anywhere. We show you which table can be built straight away and what needs the data tidied up first. You do not have to share the account or any system at this stage.
We run at most two rollouts at a time, so that someone is actually sitting on each of them.
Book a free consultationPS. If you cannot say today which campaign earns after returns, that is not a problem with the panel. It is the missing link between advertising and sales. Once it is wired, you split the budget by margin instead of by a number the panel worked out its own way. That is where the workshop starts.