← All articles
6 min read

Tracking Affiliate Conversions in Google Ads with Offline Conversion Upload

Google Ads can ingest affiliate conversions via Offline Conversion Imports. Here's how to pipe affiliate postbacks into Google using the gclid you captured at click time.

When your conversion happens on a merchant's site, Google's tag can't fire. The replacement is Offline Conversion Imports (OCI) — you upload conversions to Google with the original gclid, and Google credits the right ad and keyword.

What you need

  • A Google Ads account with conversion tracking enabled.
  • A conversion action of type Import — Other data sources.
  • The original gclid, captured on landing and stored as a SubID in your affiliate link.
  • An OAuth-enabled service account that can call the Google Ads API.

The OCI payload

{
  "operations": [{
    "create": {
      "gclid": "Cj0K...XYZ",
      "conversionAction": "customers/123/conversionActions/456",
      "conversionDateTime": "2026-06-07 12:34:56+00:00",
      "conversionValue": 49.0,
      "currencyCode": "USD",
      "orderId": "ORDER-12345"
    }
  }]
}

From postback to upload

  1. Affiliate postback arrives with gclid in SubID and a payout.
  2. Your endpoint enqueues a conversion-upload job.
  3. A worker batches conversions and posts to googleads.googleapis.com.
  4. Google ingests within a few hours — Smart Bidding uses the new signal.

Latency rules

  • Conversions must be uploaded within 90 days of the click. Earlier is better — Smart Bidding ignores stale signals.
  • Re-uploading the same orderId is fine; Google deduplicates.

Verifying it works

In Google Ads → Tools → Conversions, open your conversion action and check the Diagnostics tab. After ~24h you'll see imported count, match rate, and any rejected rows.

Common errors

  • UNPARSEABLE_GCLID: the gclid got truncated or mangled — usually missing URL encoding.
  • CONVERSION_PRECEDES_CLICK: timestamps are off; check timezones.
  • EXPIRED_GCLID: the click is older than the conversion window of the action.