How to Import Affiliate Conversions into Google Ads (Offline Conversion Import)

Capture the GCLID on your landing page, pass it through your affiliate link, and upload conversions to Google Ads and Microsoft Ads so bidding optimizes for sales, not clicks.

In this article
  1. Why media buyers need conversion data back in Google Ads
  2. Capturing the GCLID and passing it through the affiliate link as a sub-ID
  3. Building the upload file
  4. Scheduling uploads vs manual uploads
  5. Microsoft Ads equivalent (MSCLKID)
  6. Bidding on imported conversions (value, delays)
  7. Common errors and how to fix them
  8. Start sending conversions back to your ad accounts
  9. FAQ

Google Ads offline conversion import lets an affiliate send conversions that happened on a brand's website back into Google Ads. You capture the GCLID when the visitor lands on your page, pass it through your affiliate link as a sub-ID, and later upload a file that pairs each GCLID with a conversion name, time and value. Smart Bidding then optimizes toward sales, not clicks.

This guide covers the full loop for media buyers running paid search to affiliate offers: capturing the click ID, building a file Google accepts, scheduling uploads, the Microsoft Ads equivalent, and the errors that break imports. If you promote programs through MassPartner, the affiliate dashboard can generate the upload file for you, as described below.

Why media buyers need conversion data back in Google Ads

When you send paid traffic to an affiliate offer, the conversion happens on the brand's site. You can't put your Google tag on their checkout, so Google Ads sees clicks and spend but no sales. Without conversions, Target CPA and Target ROAS have nothing to learn from, and your reporting stops at the click.

Offline conversion import closes that gap. The brand records the sale against your click ID, the conversion comes back to you with the GCLID you passed, and you upload it to Google. Google's offline conversion imports FAQ says to upload all conversions and assign values if you want to use Target CPA, Target ROAS or Max conversion value bidding.

Check the program terms before you build anything. Many brands prohibit paid search entirely, ban brand bidding including misspellings, or restrict specific ad networks. Also check Google's ad policies for your vertical and target countries, especially for gambling, financial and crypto offers.

The GCLID only exists in the URL of the page your ad points to. That means you need a page you control (a review, comparison or pre-sell page) where a script can read it before the visitor clicks through to the offer.

  1. Turn on auto-tagging. Google's GCLID setup guide lists auto-tagging as a prerequisite for offline conversion import. With it on, Google appends a gclid parameter to your landing page URL.
  2. Read and store the GCLID. Google's sample capture script stores the value for 90 days and only accepts it when a gclsrc parameter is absent or contains aw. The GCLID is case-sensitive, so store it exactly as received.
  3. Append it to every outbound affiliate link. Put the click ID in a sub-ID parameter so it travels with the click and comes back attached to the conversion.
  4. Respect consent rules. Google's guide reminds advertisers to follow local cookie consent requirements. Only store the click ID where your consent setup allows it.

Here is a minimal version for links marked with a data-affiliate attribute. It keeps the most recent click ID and records which network it came from:

<script>
(function () {
  var p = new URLSearchParams(window.location.search);
  var gclid = p.get('gclid'), gclsrc = p.get('gclsrc'), msclkid = p.get('msclkid');
  var KEY = 'aff_click', TTL = 90 * 24 * 60 * 60 * 1000;

  function save(id, net) {
    try { localStorage.setItem(KEY, JSON.stringify({ id: id, net: net, exp: Date.now() + TTL })); } catch (e) {}
  }
  function load() {
    try { var o = JSON.parse(localStorage.getItem(KEY)); return o && o.exp > Date.now() ? o : null; } catch (e) { return null; }
  }

  if (gclid && (!gclsrc || gclsrc.indexOf('aw') !== -1)) save(gclid, 'google');
  else if (msclkid) save(msclkid, 'microsoft');

  var click = load();
  if (!click) return;
  document.querySelectorAll('a[data-affiliate]').forEach(function (a) {
    var url = new URL(a.href);
    url.searchParams.set('sub1', click.id);   // click ID
    url.searchParams.set('sub2', click.net);  // network marker
    a.href = url.toString();
  });
})();
</script>

Keep the click ID in the same sub-ID slot across all your campaigns. If you also run your own tracker, forward conversions there with an affiliate postback that includes your sub-IDs; our guides to postback URLs and sending postbacks to your tracker cover the setup.

Building the upload file

Set up the conversion action first

In Google Ads, create a conversion action for offline conversions under Goals and add a data source. The GCLID setup guide flags the primary vs secondary choice as critical for Smart Bidding: primary actions are used for bidding, secondary actions are observation-only.

Create the action before you start capturing GCLIDs, or early conversions can't be imported. Then wait 4 to 6 hours after creating it before your first upload; uploads in that window can take up to two days to appear.

Required columns and time-zone format

Google's file import instructions define the columns. Don't add columns beyond the ones listed.

Column Required? Rule
Parameters:TimeZone (row above the headers) Yes, unless every Conversion Time carries a zone A time zone ID such as America/Chicago (recommended) or a GMT offset such as -0500 or +0000, without quotes
Google Click ID Yes The GCLID exactly as captured
Conversion Name Yes Must match the conversion action name exactly, including capitalization
Conversion Time Yes A supported format, e.g. yyyy-MM-dd HH:mm:ss, yyyy-MM-dd HH:mm:ss+0000 or yyyy-MM-dd HH:mm:ss America/Los_Angeles
Conversion Value No If blank, the action's default value is used
Conversion Currency No Three-letter ISO 4217 code such as USD
Order ID No Unique transaction ID that helps Google reject duplicates

Google recommends a time zone ID over a fixed offset because it avoids errors around daylight-saving changes, and it names missing or incorrect time zone data as a frequent cause of upload errors. A valid file looks like this:

Parameters:TimeZone=+0000
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
EXAMPLE-GCLID-1,affiliate_sale,2026-10-08 14:22:05,120.00,USD
EXAMPLE-GCLID-2,affiliate_sale,2026-10-09 09:03:41,85.50,USD

Using the MassPartner export files

In the MassPartner affiliate dashboard, the Exports page generates a CSV for Google Ads or Microsoft Ads from your conversions. Each file includes your most recent conversions (up to 1,000 rows), takes the click ID from sub1, and skips conversions without one.

Google Ads file Microsoft Ads file
Columns Google Click ID, Conversion Name, Conversion Time, Conversion Value, Conversion Currency Microsoft Click ID, Conversion Name, Conversion Time, Conversion Value, Conversion Currency, Adjustment Time (left blank)
Conversion Name affiliate_sale affiliate_sale
Time format 2026-10-08 14:22:05 (no offset) 10/08/2026 02:22:05 PM
Value Sale amount reported by the brand, or your commission if no sale amount was sent Same
Currency Currency of the conversion, USD if none Same

Four edits before uploading:

  • Add the Parameters:TimeZone= line at the top, matching the time zone of the timestamps (for UTC, +0000).
  • Name your conversion action affiliate_sale, or replace the value in the file with your action's exact name.
  • Remove conversions the brand has rejected, and rows whose click IDs belong to the other ad network. Your sub2 network marker and the sub-ID breakdown in your reports make this quick.
  • Decide which value you want Google to optimize: the brand's sale amount or your own commission (see bidding below).

What about enhanced conversions for leads?

Google now labels file-based GCLID import as a legacy feature and recommends importing through Google Ads Data Manager. Its upgrade path, enhanced conversions for leads, matches hashed email addresses and phone numbers collected on your own lead form.

For most affiliates, the lead form sits on the brand's site, so you don't hold that data and usually shouldn't without a clear contractual and privacy basis. Google says GCLIDs are required when you aren't using a tag to collect user-provided data, so GCLID-based import remains the practical route for affiliate traffic.

Scheduling uploads vs manual uploads

Manual uploads are fine for testing and low volume. For anything you bid on, schedule them. Google's file import instructions list Google Sheets, HTTPS and SFTP as sources for scheduled uploads, and Google alerts you by email if a scheduled run fails.

Frequency matters more than method. Google's FAQ says Smart Bidding responds best to uploads at least daily, and if that isn't possible, on a consistent schedule such as every two days or weekly. Google also suggests including an extra day of data in each upload, since very recent conversions may not be recorded yet.

Duplicates aren't a problem with overlapping files: Google doesn't count a conversion twice when the click ID, conversion name and time match. Data Manager file sources (Google Sheets, SFTP, HTTP, cloud storage) re-import the last 90 days on every run, according to the GCLID setup guide.

A practical workflow for affiliates: download the export daily, apply the edits above, and paste the rows into a Google Sheet that a scheduled upload reads. If your tracker supports Google Ads uploads, feeding it conversions through postbacks removes the manual step entirely.

Microsoft Ads equivalent (MSCLKID)

Microsoft Advertising uses the MSCLKID, which auto-tagging appends to your landing page URL as msclkid. The capture script above already handles it. Microsoft's OfflineConversion reference sets these rules:

  • Create an offline conversion goal first, then wait two hours before sending conversions. Data can take up to six hours to appear in reporting.
  • The conversion name must match an existing goal name.
  • The conversion time must be within the last 90 days, later than the click, and inside the goal's conversion window.
  • Duplicate conversions with the same MSCLKID and conversion time are ignored. With the goal's count type set to Unique, only the first conversion after a click counts.
  • API uploads require UTC timestamps, while uploads in the web interface offer time zone options.

The Microsoft Ads export described above uses the same affiliate_sale name and sub1 click ID. Before your first upload, compare its header row with the template in your Microsoft Advertising account and select the correct time zone during upload.

Bidding on imported conversions (value, delays)

Start as secondary, then switch to primary

Google's FAQ recommends daily uploads for one to two conversion cycles before you include the imported action in the Conversions column. Run it as a secondary action until the numbers match your network stats, then promote it to primary.

Choose the value you bid on

Value-based bidding needs a value that reflects your economics. As an affiliate, that's usually your commission, not the brand's order total.

Example: on an offer paying a $50 CPA, upload 50 as the conversion value. A Target ROAS of 150% then aims for $50 of commission per $33 of spend. Uploading a $400 order value instead would push Google to overbid by a factor of eight.

Plan for delays and reversals

Two delays stack up: the time until the brand reports or approves the conversion, and your upload cadence plus Google's processing, which can take 24 to 48 hours to fully appear. Recent days will look under-reported, so judge campaigns on windows longer than your typical lag.

You also have to decide between uploading pending conversions (fast, but some will be rejected) or approved ones (accurate, but late if the program has a hold period). If you upload at pending, use conversion adjustments to remove what the brand later reverses: Google allows retractions and restatements up to 55 days after a conversion was first recorded, per its FAQ. Keep an eye on commission reversals in your dashboard so your bidding data matches what you're actually paid.

Common errors and how to fix them

Google's troubleshooting page for offline conversion imports lists the errors you'll see most often:

Error Usual cause Fix
Identifiers too old Google only keeps the GCLID for 90 days, or the conversion fell outside the conversion window Upload more often
Invalid conversion time The conversion time is earlier than the click, almost always a time zone mismatch Fix the Parameters:TimeZone row or the per-row zone
Click too recent The click happened less than 6 hours ago Retry after 6 hours
Wrong Google Ads account for clicks The upload account didn't serve the click, or no matching "Import from clicks" action exists there Upload to the right account; for manager accounts, enable cross-account conversion tracking
Check permissions The uploading account isn't linked to the manager account that owns the action Upload through the manager account
Conversion name mismatch affiliate_sale in the file, a different name in Google Ads Match the name exactly, including capitalization

Two problems don't show up as named errors. Spreadsheet apps can alter GCLIDs (case changes, truncation), so edit CSVs in a plain-text editor or format the column as text. And if almost every row fails, the cause is usually in capture, not the file: check that sub1 actually contains a GCLID on new conversions.

Start sending conversions back to your ad accounts

MassPartner affiliates can download Google Ads and Microsoft Ads conversion files from the dashboard, with click IDs taken from the sub-IDs on their tracking links. Joining is free; see how it works for affiliates or browse programs in the marketplace.

FAQ

Can an affiliate use offline conversion import without access to the brand's website?

Yes. You need auto-tagging, a landing page where you capture the GCLID, and conversion data that returns the GCLID you passed as a sub-ID. The brand never has to install your Google tag.

How long after the click can I upload a conversion to Google Ads?

Google's FAQ allows GCLID-based conversions up to 90 days after the click (63 days for enhanced conversions for leads), and the conversion must also fall within the action's conversion window. Microsoft Ads requires the conversion time to be within the last 90 days and inside the goal's conversion window.

Should I upload pending or approved conversions?

Uploading approved conversions keeps data clean but adds the program's hold time to your feedback loop. Uploading pending conversions is faster; if you do, retract rejected ones with conversion adjustments within Google's 55-day limit.

Which ad platforms does the MassPartner conversion export support?

Google Ads and Microsoft Ads. Both files read the click ID from sub1 and use the conversion name affiliate_sale.

Why does Google say my conversion happened before the click?

Usually the time zone is wrong: the timestamps are in one zone and the file declares another. Set Parameters:TimeZone to the zone your conversion times are actually in.

Glossary terms in this article

About the author

Daniel Reyes

Tracking & Ad-Tech Editor

Daniel covers affiliate tracking and ad-tech for the MassPartner editorial team: postbacks, click IDs, conversion imports, attribution and fraud signals. His guides are checked against official platform documentation and MassPartner's own product docs.

More articles by Daniel →