Google Ads
AppRefer captures the gclid from your Google ads, uploads conversions to the conversion actions you choose through Google's Data Manager API, and imports campaign spend.
One sign-in per Google Ads account
The Google sign-in is stored once per AppRefer organisation and Google Ads Customer ID. Other apps in the same organisation that use the same Customer ID can use it without signing in again; each app keeps its own conversion actions.1. Connect your Google Ads account
- Copy your Customer ID, the 10-digit number at the top right of Google Ads (XXX-XXX-XXXX).
- In Settings → Integrations → Google Ads, enter it and click Connect with Google.
- Sign in with a Google account that has admin access to that Google Ads account and allow access (Data Manager and Google Ads). You return to AppRefer when it's done.
Access tokens last an hour; AppRefer refreshes them with the stored refresh token, so there is nothing to renew by hand.
2. Choose a conversion action per event
Google counts and bids on each conversion action separately, so AppRefer only sends an event that you have mapped to an action. There is no fallback action: an unmapped event is skipped rather than counted as the wrong kind of conversion.
- Create in Google (recommended). In Settings → Google Ads Conversion Actions, click Create in Google next to an event. AppRefer creates a click-import conversion action with a matching category and fills in its ID. Save to keep it.
- Use an existing action. In Google Ads, create an offline click-import action (Goals → Conversions → New conversion action → Import → Other data sources or CRMs → Track conversions from clicks), then paste its numeric ID next to the event.
| Event key | When it happens |
|---|---|
install | First launch of an install attributed to Google. |
qualified_install | Also sent for Google installs with a deterministic match (Play Install Referrer, or a match score of 90 or more). Map it through the API if you want a stricter install signal. |
startTrial | A free trial starts. |
qualified_trial | A held trial qualifies (see Qualified trials). |
purchase | A paid purchase, including trial conversions and every renewal. |
intro_purchase, promo_purchase | A paid introductory or promotional first period. |
subscribe | A subscription plan change. |
sign_up, add_to_cart, initiate_checkout, search, view_content | Matching SDK events. |
Mappings are stored in googleConversionActions on the Google integration, keyed by event name.
3. Point your ads at AppRefer
Google can block click trackers it hasn't certified, so Google ads use a separate landing page instead of the redirect link other networks use. Create a tracking link with network google and use its /g/ URL as the ad's Final URL, with auto-tagging on:
https://apprefer.com/g/{linkId}
campaign_id={campaignid}&campaign_name={campaignname}&adgroup_id={adgroupid}&keyword={keyword}The /g/ page is a real, crawlable app page with App Store and Google Play buttons. It doesn't redirect by itself. It shows your app's name, icon and screenshots from the store listing, or your own headline, screenshots, features and FAQs if you set them on the link. AppRefer saves the gclid when the page loads and records the click once the browser reports which store it is heading to.
Native Android App campaigns can send people straight to Google Play instead. When Google Play Install Referrer supplies a gclid, the install is attributed to Google with that gclid, with no landing page visit needed. A Play referrer with UTM tags but no gclid stays organic.
What AppRefer sends
POST https://datamanager.googleapis.com/v1/events:ingestEach upload carries the gclid, the event time, the conversion action, the value and currency when known, and a stable transaction ID that is reused on retries. Google doesn't use IP address or user agent for this kind of match, so none is sent.
A gclid is required
Google can only credit a conversion with agclid. Installs without one (organic, or other networks) are never uploaded to Google. If conversions are missing, check that the ad uses the /g/ Final URL with auto-tagging on, or, for Android App campaigns, that Install Referrer returns a gclid.Spend sync
Once connected, AppRefer imports campaign spend, impressions and clicks for the main Customer ID and any extra IDs in customerIds. Spend is stored in each account's own currency, read from Google; an account that returns no valid currency is refused rather than assumed to be USD.
If one Google Ads account runs campaigns for several apps, add a customerOwnership rule per Customer ID, with the same shape and fail-closed behaviour as Meta's ad account ownership:
{
"customerIds": ["123-456-7890"],
"customerOwnership": {
"1234567890": { "mode": "shared", "campaignIds": ["20123456789"] }
}
}Customer IDs match with or without dashes. A shared account with no campaign IDs or name prefixes imports nothing and records an error.
Test the connection
Test Connection sends a validate-only upload to one of your mapped conversion actions. Nothing is recorded in Google Ads. Map at least one action first.
Troubleshooting
| Problem | Fix |
|---|---|
| UNAUTHENTICATED | The sign-in expired or was revoked. Click Connect with Google again. |
| PERMISSION_DENIED | The Google account you signed in with needs admin access to that Google Ads account. |
| No conversion action to test against | Map or create at least one conversion action, then test again. |
| Conversions not showing yet | Google can take up to 24 hours to show imported conversions. |