Skip to content
Google AdsFanvue API

Fanvue Google Ads conversion tracking

Fanvue Google Ads conversion tracking captures gclid, gbraid and wbraid on your tracking link, then uploads offline and enhanced conversions so Google Ads sees every Fanvue subscription, renewal and purchase.

Start for freeLast updated March 2025

What you get

Fanvue Google Ads conversion tracking is a server-side integration in Fanvue API. It closes the gap between a Google Ads click and revenue that happens later on Fanvue.com, days or weeks after the click, by uploading conversions directly to Google's servers instead of relying on browser-only tags.

  • gclid, gbraid and wbraid capture on every Fanvue tracking link, stored for 90 days
  • Offline conversion import via the Google Ads API for subscriptions, renewals, PPV and tips
  • Enhanced conversions for web using SHA-256 hashed email for better match rates
  • Optional GA4 Measurement Protocol events and Consent Mode v2 support

How does Fanvue Google Ads conversion tracking work?

A fan clicks a Google Ads search, display or video ad that lands on a Fanvue tracking link. Google appends a click identifier, gclid for standard clicks, gbraid for app-to-web clicks on iOS, or wbraid for privacy-sandbox web clicks. Fanvue API's landing script stores whichever identifier is present in a first-party cookie. When the fan later converts on Fanvue, Fanvue API builds a conversion record and uploads it to Google Ads using the Google Ads API's ConversionUploadService.UploadClickConversions call.

  1. Fan clicks a Google Ads ad linking to a Fanvue tracking link.
  2. The landing page stores gclid, gbraid or wbraid in a first-party cookie for 90 days.
  3. The fan subscribes, renews, buys a PPV message or tips on Fanvue.
  4. Fanvue API hashes the fan's email and builds the conversion upload.
  5. Fanvue API uploads the conversion to the matching conversion action in Google Ads.

Before you start

Have these five things ready before you open the Fanvue API dashboard:

  • A Google Ads account with conversion tracking enabled
  • A conversion action created for each Fanvue event you want to track (subscribe, purchase)
  • API access with a developer token and OAuth credentials for that Google Ads account
  • A Fanvue tracking link for the creator you are running ads for
  • A Fanvue API key with the ads-tracking scope enabled

Step-by-step setup

01Create a conversion action

In Google Ads, create a conversion action for each Fanvue event you want counted, typically one for subscriptions and one for purchases (renewals, PPV, tips). Note the conversion action ID.

Google Ads · Goals · Conversions
Conversion action
Fanvue - Subscribe
Category
Sign-up
Value
Use different values for each conversion

02Generate API credentials

Request a developer token in the Google Ads API Center and set up OAuth credentials for the account that owns the conversion actions. These allow server-side conversion uploads.

Google Ads API Center
Developer token
••••••••Xy4a
OAuth client
Configured

03Connect in the Fanvue API dashboard

Paste the customer ID, developer token and OAuth credentials into Ads Tracking → Google Ads in the Fanvue API dashboard. Fanvue API stores the credentials encrypted.

Fanvue API · Ads Tracking · Google Ads
Google Adsconnected

04Add your tracking link to Google Ads

Use your Fanvue tracking link as the final URL with the {gclid} value track parameter enabled, so Google Ads automatically appends the click ID.

Ad settings · final URL
Final URL
link.apifanvue.com/c/creator_xyz?gclid={gclid}

05Map Fanvue events to conversion actions

Map each Fanvue event to the matching conversion action ID you created in step 1. This mapping controls which conversion action receives the uploaded conversion.

Fanvue API · Event mapping
New subscription
Fanvue - Subscribe
Renewal / PPV / Tip
Fanvue - Purchase

06Send a test event

Click "Send test event" in the Fanvue API dashboard, then check the Google Ads Diagnostics tab for the conversion action to confirm it was received without a partial failure.

Fanvue API · Test event
UploadClickConversions200 OK

Capture the click ID

Google Ads can append gclid, gbraid or wbraid depending on the click's device and consent context. Fanvue API's tracking-link script reads whichever one is present and stores it in a first-party cookie for 90 days, matching the maximum age Google Ads accepts for offline conversion uploads.

capture-gclid.tsts
// capture-gclid.ts - run on your Fanvue tracking-link landing page
function captureGoogleClickIds() {
  const params = new URLSearchParams(window.location.search);
  const ids = { gclid: params.get("gclid"), gbraid: params.get("gbraid"), wbraid: params.get("wbraid") };
  const ninetyDays = 90 * 24 * 60 * 60 * 1000;
  const expires = new Date(Date.now() + ninetyDays).toUTCString();

  for (const [key, value] of Object.entries(ids)) {
    if (!value) continue;
    document.cookie = `_${key}_fv=${value}; expires=${expires}; path=/; SameSite=Lax; Secure`;
  }
}

captureGoogleClickIds();

Event mapping

Fanvue events map to Google Ads conversion actions and GA4 events as follows.

Fanvue eventGoogle Ads / GA4 eventRequired / recommended parameters
Tracking link clickpage_view (GA4)Recommended: gclid, gbraid or wbraid, page_location
Free follow / signupsign_upRequired: hashed email, gclid, conversion_date_time
New subscriptionsubscribe (conversion action)Required: gclid, conversion_value, currency_code
Renewalpurchase (conversion action)Required: conversion_value, currency_code, order_id
PPV message purchasepurchase (conversion action)Required: conversion_value, currency_code, order_id
Tippurchase (conversion action)Required: conversion_value, currency_code, order_id

Full payload example

The same offline conversion upload can be sent with a raw cURL call to the Google Ads API, the Fanvue API TypeScript client, or a plain Python request. All three produce the same conversion record. A fourth snippet shows the optional GA4 Measurement Protocol call.

google-ads-conversion.shbash
curl -X POST "https://googleads.googleapis.com/v17/customers/CUSTOMER_ID:uploadClickConversions" \
  -H "Authorization: Bearer OAUTH_ACCESS_TOKEN" \
  -H "developer-token: DEVELOPER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "conversions": [
      {
        "gclid": "<gclid>",
        "conversionAction": "customers/CUSTOMER_ID/conversionActions/CONVERSION_ACTION_ID",
        "conversionDateTime": "2025-03-01 14:32:11+00:00",
        "conversionValue": 9.99,
        "currencyCode": "USD",
        "orderId": "fanvue_sub_abc123",
        "userIdentifiers": [
          { "hashedEmail": "<sha256(lowercase(trim(email)))>" }
        ]
      }
    ],
    "partialFailure": true
  }'

Deduplication

Google Ads deduplicates conversions by order_id rather than a shared event_id. Fanvue API sets order_id to a stable identifier for each conversion, for example fanvue_sub_abc123, so retried uploads or a combination of enhanced conversions and offline conversion import never double count the same subscription or purchase.

Matching and privacy

Fanvue API only sends hashed personal data for enhanced conversions. Email addresses are trimmed of whitespace, lowercased, and hashed with SHA-256 before they leave Fanvue API's servers. Raw email addresses are never transmitted to Google Ads.

Consent Mode v2 signals, ad_user_data and ad_personalization, are read from your consent banner and passed with every conversion. If a fan has not granted ad_user_data consent, Fanvue API withholds the enhanced conversion fields and relies on modeled conversions instead, matching how Google Ads expects consent-aware traffic to behave.

Test and verify

Open the Diagnostics tab on the conversion action in Google Ads to see upload health, recent conversions and any partial failures. Send a test event from the Fanvue API dashboard and confirm it appears in Diagnostics within a few hours, since offline conversion imports are not always instant. A good result shows the conversion listed with status "Recorded" and the correct value and currency.

Troubleshooting

Seven common Google Ads conversion tracking issues and how to resolve them
SymptomLikely causeFix
Conversions show "Unverified" in Google AdsEnhanced conversions not enabled on the conversion actionTurn on enhanced conversions for web in the conversion action settings and confirm hashed email is being sent
Offline conversions never appeargclid missing or expired before upload (gclid expires after 90 days)Confirm the tracking-link cookie is set on click and upload conversions well within the 90-day window
UploadClickConversions returns PARTIAL_FAILUREMalformed conversion_date_time or wrong conversion action resource nameMatch the RFC 3339-style timestamp format and verify the customers/{id}/conversionActions/{id} path
App-to-web installs from Google Ads not attributedgbraid or wbraid not captured for iOS or privacy-sandbox trafficCapture all three click IDs, gclid, gbraid and wbraid, on the landing page script
GA4 events missing from Google Ads conversion importGA4 property not linked to the Google Ads account, or event not marked as a conversionLink GA4 to Google Ads in Admin, then mark the imported event as a conversion in Google Ads
Consent Mode blocks conversion modelingad_user_data or ad_personalization not set before the tag firesSet both Consent Mode v2 signals from your consent banner before any tracking call runs
Diagnostics tab shows "No recent conversions"Conversion action paused or no conversions uploaded in the last 7 daysCheck the conversion action is not paused and confirm Fanvue API is sending uploads on schedule

Frequently asked questions

Ready to build on Fanvue?

Get API keys, docs and MCP access in one click. Free trial, no credit card.