Skip to content
Browse documentation

Offline conversion feeds

Let Google Ads import your conversions on a schedule from a secret HTTPS CSV URL, matched by gclid, gbraid or wbraid — no API access required.

Last updated 4 min read

On this page

An offline conversion feed is a secret HTTPS URL that returns your conversions as a CSV in Google's Conversions from clicks format. Google Ads downloads it on a schedule you set and credits each conversion to the ad click with the same gclid (or gbraid / wbraid for iOS traffic). Feeds need no Google Ads API access and work alongside the Google Ads API connection.

Feeds are on Google Ads → Offline conversions (/app/google-ads?tab=feeds). Creating and editing them needs the Manager role; any staff member can preview them.

Before you start#

  • Conversions must carry a Google identifier. That happens automatically when the click came through your tracking template with gclid={gclid} (or auto-tagging put gbraid/wbraid on the landing page), or when the postback sent gclid=.
  • Create the conversion actions in Google Ads first: Goals → Conversions → New → Import → Other data sources or CRMs → Track conversions from clicks. Note their names exactly — the feed refers to them by name.

Create a feed#

  1. Click New feed.
  2. Fill in the form:
FieldNotes
Feed nameUp to 100 characters, e.g. Leads → Google Ads. Also used as the CSV file name.
Lookback (days)1–90. Every fetch contains the conversions of the last N days. Google ignores clicks older than 90 days.
Conversion valueRevenue, Payout, Sale amount or No value (value and currency columns stay empty).
StatusActive, or Paused (URL returns 404).
Include pending conversionsOff by default. Google cannot retract uploads: pending conversions rejected later stay counted.
  1. Under Offer → Google conversion action, add one row per mapping (at least 1, at most 50):

    • Offer;
    • Event — one event code of the offer, or Any event;
    • Google Ads conversion action name — exactly as in Google Ads (case-sensitive), up to 100 characters.

    When an offer has both a specific event row and an Any event row, the specific one wins.

  2. Save. The feed's HTTPS URL appears in the table:

URL
https://app.trackcrown.com/feeds/google-ads/9f0c2b7e4d1a8c3f5e6b7a9d0c1e2f3a4b5c6d7e

Connect it in Google Ads#

  1. Go to Goals → Conversions → Uploads → Schedules and add a schedule.
  2. Source HTTPS, paste the feed URL, leave username and password empty.
  3. Choose the frequency — daily, or every 6 hours.

The Connect in Google Ads card next to the table repeats these steps. The table shows Last Google fetch and Fetches so you can confirm Google is downloading the file.

What the feed contains#

Each fetch lists, oldest first:

  • conversions of the mapped offers (and events) in the lookback window,
  • with status approved (plus pending when included),
  • that are not duplicates,
  • that carry a gclid, gbraid or wbraid.

Up to 200,000 rows per fetch. Conversion Time is local time in the workspace time zone, declared once on the Parameters: line.

CSV
Parameters:TimeZone=Asia/Kolkata
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
Cj0KCQjw8eOLBhC1ARIsAOzx5cG,Lead,2026-10-10 14:03:12,25,USD
Cj0KCQjw8eOLBhC1ARIsAOzx9aB,Purchase,2026-10-10 18:45:01,129.9,USD

When at least one conversion in the window has only an iOS identifier, the feed switches to Google's identifier-column variant. Every row then fills exactly one of the three identifier columns (Google rejects rows with several):

CSV
Parameters:TimeZone=Asia/Kolkata
Google Click ID,GBRAID,WBRAID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
Cj0KCQjw8eOLBhC1ARIsAOzx5cG,,,Lead,2026-10-10 14:03:12,25,USD
,0AAAAAo4mICkT9yPZ0D2Ldr,,Lead,2026-10-10 15:20:44,25,USD

Values are written exactly (12.5000 → 12.5, never through floating point). A UTC workspace writes Parameters:TimeZone=+0000.

Preview#

Choose Preview CSV in the row menu to see exactly what Google will receive. The preview tells you when iOS identifiers are present (iOS identifiers present) or when the feed is empty (No rows yet).

Manage a feed#

Row menu (Manager and above):

ActionEffect
EditChange any setting or mapping. The URL stays the same.
Pause / ResumeA paused feed answers 404, so Google's scheduled run fails until you resume it.
Generate new URLIssues a new secret token; the old URL stops working immediately. Update the schedule in Google Ads.
DeleteRemoves the feed and its URL.

Security and limits#

  • The 40-character token in the URL is the only credential. Anyone with the URL can read the click IDs it lists — treat it like a password and Generate new URL if it leaks.
  • Unknown, paused and suspended-workspace feeds all answer the same 404 Not found.
  • Each URL may be fetched 30 times per 10 minutes, and each IP address 120 times; beyond that the answer is 429 with Retry-After.
  • A temporary database problem answers 503 with Retry-After: 300.
  • HEAD validates the URL without generating the file or counting a fetch.
  • Responses carry Cache-Control: no-store and X-Robots-Tag: noindex, nofollow.

Troubleshooting#

ProblemFix
Google reports unknown conversion namesNames must match the Google Ads conversion actions exactly, and the actions must use Track conversions from clicks.
Rows are missingCheck the conversion is approved (or include pending), within the lookback, not a duplicate, mapped, and has a Google identifier (open it in Reports → Conversions).
Google says the click is too oldGoogle only accepts clicks from the last 90 days.
The schedule fails with 404The feed is paused, deleted, or its URL was regenerated.
gbraid rows rejectedUse the URL as is: the feed already writes one identifier per row.

See also: Google Ads API · Parallel tracking.

Something unclear or missing in this article?Tell us