Conversion tracking
Upload Offline Conversions to Google Ads, Step by Step
How to upload offline conversions to Google Ads in 2026: the DIY Google Sheets route, the June 15 API-to-Data-Manager change, and why to upload profit.
Uploading offline conversions sends Google the sale it never saw: the order that closes after the click, the value that lands days later. The DIY route is a scheduled Google Sheet keyed to the Google Click ID (GCLID), and it still works in 2026 — only the Google Ads API upload path was cut off on June 15. The lever most stores miss is the number in that sheet. Upload profit, not revenue, and bidding optimizes for margin.
What offline conversions are, and why upload them
Smart Bidding learns from the conversions it can see. For a store that only fires a purchase tag on-site, that means revenue at checkout: it never sees the refund three weeks later, the shipping that ate the margin, or the fact that “it does not know your COGS.” Offline conversion import is how you send the real outcome back to Google after the fact, so the algorithm bids on what happened, not on what the pixel guessed.
The mechanic is a match. You captured a GCLID when the visitor clicked; you attach that GCLID to the order; later you send Google a row that says “this click became this conversion, worth this much, at this time.” Google credits the click and Smart Bidding folds the value into its model.
How to upload offline conversions, step by step
This is the no-new-tool route: a Google Sheet and the Google Ads interface, nothing bought. One r/PPC operator’s line on this whole topic was that “there isn’t much information on this anywhere,” so here is the whole loop.
- In Google Ads, create an offline conversion action: Goals → Conversions → New → Import → then the manual Google Sheets or file route.
- Capture the GCLID on every order. Google appends it to your landing-page URL; store it in a hidden checkout field and save it on the order record.
- Build a sheet with the columns below, one row per order.
- Set the conversion value to profit, not revenue (the formula is under “Where your numbers live”).
- Upload it, or schedule the sheet to upload daily.
- Confirm it landed: Google Ads → Goals → Conversions → Uploads shows the row count and any errors.
The sheet is the copyable artifact. These are the columns Google expects:
| Column | What goes in it |
|---|---|
| Google Click ID | The gclid you captured at checkout |
| Conversion Name | The exact name of your offline conversion action |
| Conversion Time | When the order closed, in your account time zone |
| Conversion Value | The order’s profit, not its revenue |
| Conversion Currency | USD |
What changed on June 15, 2026
The headline scared a lot of people into thinking offline conversions were
going away. They are not. What changed is one specific pipe: the Google Ads
API stopped accepting new advertisers for its UploadClickConversions
request, and that work is migrating to the Data Manager API. If you upload
through the interface, none of this touches you. Here is the whole decision in
one table.
| Upload route | Cut off June 15? | What to do |
|---|---|---|
| Google Sheet / CSV (Google Ads UI) | No | Keep using it. It is the route in this guide. |
| Google Ads API (your script or a connector) | New setups only | Importing before the cutoff kept you allowlisted to migrate; new starts get a “not allowlisted” error. Move to the Data Manager API. |
| Data Manager | No; it is the destination | Google’s go-forward hub. Pair the GCLID with first-party data; GCLID-only is now the legacy path. |
So the DIY sheet above is the durable route: it did not change, and it is the one you control end to end.
Where your numbers live
The GCLID and the timestamp are plumbing. The value is the decision. Don’t send revenue — send what the order was actually worth to you:
- GCLID
- Appended to your landing URL as ?gclid=…; capture it to a hidden field and save it on the order
- Conversion time
- Your order record’s paid/fulfilled timestamp, in the account time zone
- Order revenue
- Your store’s order export
- COGS, shipping, fees, refunds
- Product cost, the carrier invoice (not the rate you charged), your processor statement, your refund rate
The conversion value you upload is one line of arithmetic: contribution margin = revenue − COGS − shipping − payment fees − expected refunds. That per-order margin is what belongs in the Conversion Value column. If you’re not sure the margin number is right, derive it first: your break-even ROAS is built from the same ratio, and the calculator there shows you the figure to feed Google. Pulling these four cost lines cleanly is where most stores stall, and that difficulty is the finding, not a failure — it is exactly what the scan does for you.
Upload profit, not revenue
Here is the turn most tutorials never take. Everything above works whether you upload revenue or margin. If you upload revenue, you have taught Google to buy more revenue, and it will, including the orders that lose you money on shipping and fees. You are uploading revenue. Upload profit instead: feed Smart Bidding the contribution margin per order and it starts optimizing for the money you keep, not the money that passes through.
That is a bigger build than one sheet, and it is the real system under this whole page. If you want the short version of whether it is worth it for your account, the clean test is the first thing I run: see how the scan works.
Quick answers
Can I still upload offline conversions with a Google Sheet in 2026?
Yes. The June 15, 2026 change blocked new adopters of the Google Ads API upload request; it did not touch the manual or scheduled Google Sheets and CSV uploads in the Google Ads interface. If you upload through the UI, nothing changed for you.
What changed with Google Ads offline conversion import on June 15, 2026?
The Google Ads API stopped accepting new advertisers for the UploadClickConversions request; accounts that were actively importing in the months before the cutoff keep access to migrate, and everything moves to the Data Manager API. Uploads through the Google Ads UI were not affected.
Do I need a GCLID or an order ID to upload offline conversions?
You match each conversion to a click with the Google Click ID (GCLID) you captured at checkout, or with first-party data through enhanced conversions. GCLID still works and Google still recommends sending it, but GCLID-only (no first-party data alongside it) is now treated as the legacy path. To change a value already uploaded, you restate it against the same order ID.
Should I upload revenue or profit as the conversion value?
Upload profit: revenue minus COGS, shipping, fees, and expected refunds, if you want bidding to chase margin. Google bids on the number you feed it. Feed it revenue and it will happily buy more high-revenue, low-margin orders; feed it contribution margin and it optimizes for the money you actually keep.
The fine print — where these numbers come from
I ran a daily gross-profit conversion upload — Report Pundit export → Google Sheet → Google Ads — on my own store in 2025. Operator experience, past tense: the same pipeline this guide describes, run on real orders.
The margin-blindness is arithmetic, not a claim: in that catalog, the lead product was 90% of revenue but only 75% of gross profit, so the values Smart Bidding saw overvalued it about 3x relative to its real contribution. Stated as fact; no lift number is claimed.
Platform mechanics (the June 15, 2026 API cutoff, the Data Manager migration, GCLID-plus-first-party guidance) read from the Google Ads Developer Blog and Google Ads Help on 2026-07-18. Re-check against Google's current docs at publish — deadlines move.
Product names and logos are the property of their respective owners, shown for identification only. No endorsement implied.