Google Ads: Data Manager, GA4, Consent Mode
Connect Google Ads, send only paid orders as conversions, correct refunds and refusals, and see how Consent Mode and GA4 fit with the store plugin.
What it is
Google Ads learns from the conversions you send it. This guide connects Google Ads in four parts:
- Spend: your Google Ads account brings its daily spend per campaign every night, for the ROAS report.
- Server conversions: your app's server sends each really paid order to a Google Ads conversion action, through Google's Data Manager API. A cash-on-delivery order is sent only when the courier's cash is settled.
- Corrections: after a partial refund the app sends a new value for the same order (a restatement). When an order already sent is refused, returned, cancelled or voided, the app tells Google to remove it (a retraction, through the Google Ads API).
- Consent: only orders whose shopper gave marketing consent are sent. The store plugin reads your consent banner, including Google Consent Mode.
Why it matters: Google bids for more of what you report. If you report refused parcels as sales, it buys more clicks like them.
Example: an online shop in Germany takes 200 orders in a month, average EUR 40. 12 orders are returned and 5 are partly refunded. Google first gets 200 purchases (for consented shoppers). The 12 returns are retracted and the 5 refunds restated at their new value, so Google ends the month with 188 sales at their real value.
Who it is for
- Shops that run Google Search, Shopping or Performance Max campaigns
- Cash-on-delivery sellers who want Google to learn from delivered, paid orders only
- EU and UK stores that need consent before ad measurement
- Owners who use GA4 and want to know how it fits
Before you start#
- You need access to Integrations; connecting and changing settings needs the Integrations Edit right.
- A Google Ads account with auto-tagging on. Your Google sign-in must have access to that account (or to its manager account).
- The CFI Order Attribution plugin on your WooCommerce store and a consent banner. See the store plugin.
- A conversion action in Google Ads for the paid orders (below).
Step by step#
- Open Integrations › Attribution, go to the Ad platforms tab and choose Connect on the Google Ads card.
- Choose Sign in with Google Ads and allow access on Google's page. The sign-in asks for Google Ads reporting and for the Data Manager permission, which conversions need.
- If you have several accounts, tick them under Choose the ad accounts to connect and choose Connect selected.
- In Google Ads, open Goals › Summary, choose + Create conversion action and select Conversions offline (Google Ads Help: offline conversions (opens in a new tab)). In Google's terms the conversion source is "Website (Import from clicks)" (Google: Data Manager, send events (opens in a new tab)).
- Open the new conversion action and copy its id: the number after
ctId=in your browser's address bar. - Copy your Google Ads customer id: it is shown in the top right corner of your Google Ads account (Google Ads Help: find your customer ID (opens in a new tab)).
- Back in the app, under Server conversions, choose Set up on the Google Ads card.
- Enter the Conversion action id and the Google Ads customer id. Add Manager account id (optional) only if you reach the account through a manager account.
- Check that the sheet says "Uses the connected account …". Keep both Events ticked: purchase once paid, and corrections.
- Tick Test only: Google checks the events without recording them, tick Send conversions to Google Ads and choose Save.
- Wait for a paid order, open Recent conversions and check its row.
- When it looks right, untick Test only and choose Save. You are live.
How to connect with the advanced form#
Use this when the sheet says "CFI’s Google Ads app isn’t set up on this server yet — use the advanced form."
- Choose Connect on Google Ads and open Advanced: paste credentials.
- Fill in Client ID, Client Secret, Refresh Token, Developer Token and Customer ID (the Ads account, e.g. 123-456-7890) from your own Google developer app. Login Customer ID is only for an account reached through a manager account.
- Choose Connect. The details are checked with Google before they are saved.
Note For server conversions, the refresh token must also carry Google's Data Manager permission. The Sign in with Google Ads button asks for it; a token you made yourself may not.
How to tag your Google ads#
- In the app, on the Ad platforms tab, find UTM templates — tag every ad with its campaign id and choose Copy on the Google Ads line.
- In Google Ads, open Admin › Account settings, then the tracking options, and paste the line in Final URL suffix (Google Ads Help: Final URL suffix (opens in a new tab)).
- In Admin › Account settings › Auto-tagging, keep Tag the URL that people click through from my ad ticked (Google Ads Help: auto-tagging (opens in a new tab)).
The line is utm_source=google&utm_medium=cpc&utm_id={campaignid}&utm_content={adgroupid}&utm_term={keyword}. Google fills in the campaign id on each click, and the report joins spend to orders by that id. Google has no campaign-name parameter; the report takes the name from your synced campaigns.
What each field means#
| Field | Meaning |
|---|---|
| Conversion action id | The digits after ctId= on the conversion action's page. |
| Google Ads customer id | The 10-digit account id; dashes are removed for you. |
| Manager account id (optional) | The 10-digit manager account id, only if you sign in through one. |
| Events | Purchase once paid; Corrections (refunds restated, returns and cancellations retracted). |
| Value sent | Net revenue (ex tax, after refunds) by default, or Cash collected, or Profit (needs the Gross profit report right and your confirmation). |
| Test only | Google checks the events without recording them. The card shows Test mode. |
Google needs a click id on the order (gclid, wbraid or gbraid) or the customer's contact details. Contact details are hashed (SHA-256) before they leave.
Consent Mode and your consent banner#
The store plugin stores nothing and fires nothing until consent is known. It reads, in this order: Global Privacy Control (always "no"), the WP Consent API (Complianz, CookieYes, Cookiebot and others), a custom variable you name in Custom CMP variable name, Google Consent Mode, then Complianz, CookieYes, OneTrust and Cookiebot directly.
For Google Consent Mode the plugin reads the latest consent command your banner pushed and uses its ad_storage value: granted means yes, denied means no. The plugin does not set Consent Mode itself; your banner or tag does.
What reaches Google today: one marketing decision per order. A "yes" order is sent with both ad_user_data (consent to send user data to Google for ads) and ad_personalization (consent to personalised ads) granted. Orders with "no" or no decision are never sent.
After the 2026-11 update, Google gets ad_user_data and ad_personalization separately, as the shopper chose them.
GA4 (Google Analytics 4)#
Be clear on this: the app does not send events to your shop's GA4 today. Sending settled sales to GA4 is a later idea, not built.
What you can do yourself:
- Keep your own GA4 tag on the shop (through your theme, Site Kit or Google Tag Manager). The plugin does not change it.
- Run GA4 behind the same consent banner, with Consent Mode so
analytics_storagefollows the shopper's choice (Google: consent mode (opens in a new tab)). - Remember that GA4's purchase count comes from the browser at checkout, so for cash on delivery it counts refused parcels too. Use the ROAS report for paid sales.
The store plugin has an old option, Legacy: send checkout events from this site, with a Google Analytics 4 card (Measurement ID, Measurement Protocol API secret). It is off by default, sends only a checkout event (never purchase) for consented shoppers, and is kept for shops that used it before. We do not recommend it.
Daily use#
An EU store with cookie consent
Use a consent banner that sets Google Consent Mode or supports the WP Consent API. Choose Ask everyone first (recommended) under Where consent is needed in the plugin. Expect Google to receive fewer conversions than you have orders: orders without consent are never sent.
A cash-on-delivery shop
Purchase reaches Google when the courier's cash is settled. If an order already sent is later refused, returned or cancelled, it is retracted. The app sends Google orders up to 90 days after the order time. See cash-on-delivery conversions.
A multi-location retailer
Only web orders that came through the store plugin carry a click id and a consent decision. Shop-counter (POS) sales carry neither, so they are not sent to Google.
Google Shopping
Products go to Google Merchant Center with the same ids as the Meta catalogue. See Meta catalogue, Pixel and Google Merchant.
What you see#
The Google Ads card under Server conversions shows On or Off, the conversion action id, Test mode and the last 7 days' counts. Example of Recent conversions:
| When | Platform | Event | Order | Value | Status |
|---|---|---|---|---|---|
| 2026-11-11 16:20 | Purchase | SO-2210 | EUR 38.50 | Sent | |
| 2026-11-11 16:20 | Purchase | SO-2214 | — | Skipped: no marketing consent | |
| 2026-11-12 08:05 | Purchase | SO-2219 | — | Skipped · No ad click or customer contact on the order |
In Google Ads, uploaded conversions show under the conversion action in Goals.
Good practice#
- Make the server conversion action the primary goal for purchases, and set a browser purchase tag to secondary, so Google does not count both.
- Start with Test only, then switch it off.
- Keep Corrections ticked, so refunds and refusals do not inflate your results.
- Keep auto-tagging on and the Final URL suffix in place.
Troubleshooting#
| What you see | Why | What to do |
|---|---|---|
| The Google Ads customer id has 10 digits. | Too few or too many digits. | Copy it from the top right corner of Google Ads. |
| The manager account id has 10 digits. | Same, for the manager account. | Leave it empty if you do not use one. |
| Enter the conversion action id — digits only. | Letters in the id. | Copy only the number after ctId=. |
| Enter the Google Ads customer id. | Switched on without a customer id. | Enter it, then save. |
| Connect the Google Ads account above first — server conversions use its sign-in. | No connected account matches the customer id. | Connect the account on the Google Ads card first, with the same id. |
| Google Ads validation failed: … | Google refused the advanced form details. | Check the developer token, customer id and refresh token. |
| Failed, with Google's message | Google refused the event, for example the sign-in lacks the Data Manager permission. | Connect again with Sign in with Google Ads. |
| Skipped: older than the platform accepts | More than 90 days since the click. | Nothing to do for that order. |
| Sign-in expired — connect it again | Google refused the saved sign-in; spend stops. | Choose Add account and sign in again. |
Limits and what is not there yet#
- Built and contract-tested; the order path verified end to end in a WooCommerce sandbox; not yet proven on a real ad account.
- Consent is one decision per order today. After the 2026-11 update,
ad_user_dataandad_personalizationare sent separately. - Today, if Google refuses the sign-in, events are tried again for about two hours and then marked Failed. After the 2026-11 update, a refused token or permission pauses Google and keeps the events waiting instead.
- After the 2026-11 update, erasing a customer's personal data also stops their waiting conversion events.
- No events are sent to GA4. Shopify orders are never sent (their consent is unknown).
- Planned: a health centre per destination.
Questions#
Do I still need the Google Ads tag on my site?
Not for these conversions; they come from the app's server. Keep auto-tagging on so clicks carry the gclid. If you keep a browser purchase tag, set it as a secondary goal.
Why does Google show more conversions than the app?
Google credits itself, uses its own windows and may model conversions for shoppers who declined cookies. The Insights tab shows both numbers side by side.
Can I send data to GA4 from the app?
Not today. Keep your own GA4 tag behind your consent banner.
What is the Data Manager permission?
Google's permission for uploading conversion data. The Sign in with Google Ads button asks for it with the reporting access.
