Conversions APIs

Report your goals to Meta, LinkedIn, TikTok and Google Ads from our server instead of from the browser - matched only through the click identifier the network set itself.

1. Why server-side at all?

A browser pixel has to survive three things before it can report a conversion: an ad blocker, a tracking-prevention setting, and the visitor closing the tab before the pixel fires. A server-side call survives all three, because it does not happen in the browser at all.

MousePlayer already knows when one of your goals was reached - that is what goals are for. The Conversions APIs simply forward that fact to the ad network from our server.

This is not a replacement for your pixel. Keep it. Every network deduplicates the two against each other, and we send the identifiers needed for that.

2. What we send - and what we never send

The only thing that identifies the visitor in these calls is the cookie or click identifier the network set itself. Nothing else about the person leaves our server.

NetworkIdentifier usedWhere it comes from
Meta_fbp, _fbcFirst-party cookies set by the Meta pixel
LinkedInli_fat_idFirst-party cookie set by the LinkedIn Insight Tag
TikTok_ttp, ttclid_ttp is a cookie, ttclid comes from the ad click URL
Google Adsgclid, wbraid, gbraidFrom the ad click URL, or the _gcl_aw cookie afterwards
Microsoft AdvertisingmsclkidFrom the ad click URL, or the _uetmsclkid cookie the UET tag writes

Never sent: email address, phone number, name, or IP address - not even hashed. If a visitor has no click identifier, nothing is sent at all. An untargeted conversion is worth less to you than an accurate count.

Only with consent

Every one of these calls sits behind the same consent gate as the recording itself. A session without consent produces no conversion report, regardless of the switch in your project settings.

3. Google Ads has three identifiers, not one

This surprises people, so it is worth stating plainly. Google uses gclid for a single ad click. When Apple's tracking prevention makes a single click unattributable, Google sends wbraid or gbraid instead, which stand for a group of clicks.

The three are mutually exclusive - Google rejects a conversion that carries two. We send exactly one, and gclid wins when more than one is present, because it is the most precise.

They are only in the URL once

The identifier appears in the address only on the first page after the ad click. The Google tag then stores it in the _gcl_aw cookie. We read the cookie as a fallback - without it, a conversion on the third page of the visit would find no identifier at all.

4. Setting it up

Meta, LinkedIn and TikTok

Two fields each: the ID of the pixel or conversion rule, and an access token you create in the network's own interface. Both are stored AES-256-GCM encrypted and are never shown again after saving.

Google Ads needs six

Google is the exception, and the reason is worth knowing before you start: unlike the other three, Google issues no simple access token. Access runs through OAuth with a refresh token, and the Ads API additionally requires a developer token.

FieldWhere to find it
Customer IDTop right in Google Ads. Digits only, without the dashes.
Conversion action IDGoals and conversions, then the action you want this booked on.
Developer tokenYour Google Ads manager account, API Center.
OAuth client ID and secretGoogle Cloud Console, Credentials, OAuth client of type "desktop app".
Refresh tokenYou generate this once yourself for the scope adwords.

LinkedIn has two routes, and you want the short one

In Campaign Manager: Data, Signals Manager, Direct API, Generate access token. That is the route for advertisers sending their own data - no developer application, no review. The token does not expire, and Campaign Manager will not show it a second time, so copy it straight away.

The other route, a developer app requested through LinkedIn's Developer Portal, exists for platforms that send on behalf of many advertisers. It needs company page verification and an approved use case, and you do not need any of it here.

Microsoft Advertising is the easy one

After Google Ads you expect the same weight - OAuth, a developer token, an approval step. It is the opposite: two fields. The UET tag ID you already use in the browser, and a token you copy from Microsoft Advertising under the UET tag, "Use Conversions API", "Copy Token". Nothing to apply for.

Use the same tag ID as your browser tag. That is what lets Microsoft recognise the server-side event and the browser event as one conversion instead of two.

The developer token needs Google's approval ("Basic access"), and that takes a few days. It is the one step you cannot finish in a minute, so start it first. We never see your Google password - only the refresh token, and you can revoke it at any time.

5. When a conversion is reported

Exactly once per goal and session. MousePlayer debounces this before the call goes out, and the payload additionally carries an ID so the network can debounce it a second time on its side. A visitor who adds five items to the basket produces one conversion, not five.

What you will see in your ad account

The conversion carries the name of your goal, its value and currency if you set one, and the time it happened. It arrives within a minute in normal operation.

If nothing arrives

  • No click identifier. The visitor did not come through an ad of that network, or arrived before the pixel had set its cookie. Nothing is sent - this is expected, not an error.
  • No consent. The gate came first.
  • The network accepted the call but rejected the conversion. Google, TikTok and several others answer with HTTP 200 and an error inside the response body. We read the body, not just the status, and the reason appears in the delivery log.

All trademarks named here belong to their respective owners. MousePlayer has no business relationship with these providers.