Track Google Ads clicks and conversions
Connect advertising clicks to confirmed outcomes. Set up ValueTrack and gclid, then configure cost import and offline conversion delivery separately.
Choose a campaign matching scheme
For Google Ads, decide whether a campaign is represented by its ID or name before launch. The value in the tracking link must match the value used by cost import. Create a source, flow and offer, then document campaign, group, advertisement and search context fields. Keep different naming schemes explicitly separated in reports. A keyword field can help with search traffic, while placement context is useful where the source supplies it. Review advertisement and destination requirements under Google Ads policies. Analytics setup does not remove platform requirements for advertising, data collection and consent. Test the entire route before using the link for working traffic.
Use ValueTrack for ID matching
For campaign_key=id in the cost integration, use utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={creative}. These populate the click campaign, group and creative fields. Optional dimensions such as sub4={keyword} and sub5={placement} can add context where supported by the advertisement format. Remove conflicting old parameters: explicit campaign takes precedence over utm_campaign, and explicit adset or creative can override the corresponding UTM fields. For name matching, the source preset uses campaign={_campaign}. Define that custom parameter in Google Ads because ValueTrack does not supply campaign names automatically. Verify existing links and historical reports before changing the integration mode.
Preserve gclid and the internal clickid
Google Ads auto-tagging adds gclid. Preserve it through redirects, shorteners and intermediate pages. inotrack generates a separate internal clickid; pass {clickid} to the advertiser in the offer URL and receive it back with the incoming postback. This links the conversion to a recorded click and makes its saved gclid available to the outgoing adapter. Do not substitute gclid for {clickid} or treat every external identifier as interchangeable. Although incoming parameter parsing can retain wbraid or gbraid, the offline conversion adapter described here uses gclid. Test with a real advertisement click identifier and verify the tracker conversion record.
Import costs through Google Ads API
Automatic cost import uses Google Ads API. The connection needs customer_id, developer_token and access_token; login_customer_id is used for a manager account where required. The client fetches daily costs, impressions and clicks with campaign, ad group and advertisement details. In ID mode, all three matching levels use identifiers, so link values must follow the same scheme. The scheduler refreshes costs hourly and reads the previous day again at the day boundary. Compare consistent dates and currency, and inspect the last successful import. An empty cost cell requires an access and matching check before it can be interpreted as no spend. Avoid duplicating imported costs manually.
Return offline conversions
The google_ads_oci adapter implements Upload Click Conversions. Outgoing delivery needs a separate configuration with the customer account, conversion action, developer token and OAuth credentials. Map tracker goals to the intended Google Ads actions and review advertising data consent settings. The validateOnly mode checks a request without uploading a conversion, and still requires a real click gclid. A successful HTTP status can contain a row rejection, so the adapter checks partialFailureError. Access to this upload method depends on Google developer token eligibility. Having the adapter does not guarantee access for every new account. Investigate delivery responses and account requirements instead of inventing replacement identifiers.
Review reports after launch
Start with campaign and ad group comparisons, then drill into advertisements and additional labels. Reconcile clicks, unique visits, conversions and costs over a shared period before interpreting CPC, EPC, ROI or profit. The account and tracker observe different stages, so click discrepancies need investigation rather than forced equality. Bot filtering and antifraud checks help investigate suspicious traffic; review rejected requests separately and record protection changes. Offer caps restrict destination availability and activate the flow fallback path. They are separate from the Google Ads campaign budget. Test cap behavior and confirm that fallback destinations comply with platform requirements, particularly when several offers share a flow.
Questions
Why does a campaign ID fail to match costs?
Check campaign_key=id and remove any conflicting campaign parameter that overrides utm_campaign. Compare group and advertisement values too.
Does validateOnly mean the conversion was uploaded?
No. It validates the request without uploading the event. Check actual delivery and subsequent attribution separately.
Read next
More in this section
Run inotrack on your own server
One command on a clean VPS, 10–15 minutes. Get your key right after you pay on the site, or a free one for 7 days.
Questions? Message us on Telegram: @SmokeJung.