Cookiebees
3Send back: Real revenue back to the ads

GA4, TikTok & more

Every platform hears about the same sale.
In its own language.

GA4, TikTok, Snapchat, Pinterest, Reddit and LinkedIn each want a sale in a different shape. One engine sends it to all of them with the same hashed identity, the same event id and the same value, so every ad account describes the same orders.

30-day free trialNo card requiredSet up in minutes

Why does TikTok show fewer sales than my store?

Is GA4 getting the purchases the browser never sent?

Integrations · order #10482 · ₹2,4990 of 5 received

GA4

Measurement Protocol

purchase

TikTok

Events API

CompletePayment

Snapchat

Conversions API

PURCHASE

Pinterest

Conversions API

checkout

Reddit

Conversions API

Purchase

Each platform under its own name for a purchase. One event id, one value, one set of hashes.

Do I need a developer for every new ad platform?

Is every platform told the same value for the same order?

What it is worth

Try a new channel without rebuilding your tracking.

A new platform in one card

Paste the ids it asks for, send a test event, switch on. Identity, value and the duplicate rule are already decided.

The same sale, the same value

Every platform reads the value through one rule, and every send records where its value came from.

Leads to every platform

Qualified and won stages go to TikTok, LinkedIn and the rest as well as Meta and Google, from the same pipeline.

One sale, every platform

One order. Each platform gets it under its own name.

TikTok calls a purchase CompletePayment, Snapchat PURCHASE, Pinterest checkout. Each platform’s card offers the store events it has a name for: purchase, checkout started, add to cart, product viewed and search. Each send matches on that platform’s own click id, kept from the visit.

  • ttclid, ScCid, epik, rdt_cid and li_fat_id kept on the visit
  • Store events switched on per platform
  • Purchase follows When a sale counts, so held cash-on-delivery sales wait
  • A platform with no checkout event is simply not offered one
Event stream · order #10482 · Purchase0 sent
PlatformIts name for itMatched on
GA4purchase_ga client id
TikTokCompletePaymentttclid
SnapchatPURCHASEScCid
Pinterestcheckoutepik
RedditPurchaserdt_cid
event id order.10482value ₹2,499one set of hasheson every row
One sale, one value, sent to every platform you switched on.

GA4

GA4 gets the sale on the visitor’s own session.

Purchases and the events you switch on go to GA4 through the Measurement Protocol, on the client id and session id from the visitor’s own GA cookies, so the sale joins the session it belongs to. No email or phone is ever sent to GA4. Send it to Google directly, or through your own server GTM container.

  • Client id and session id from the _ga cookies
  • No personal data, as Google’s policy requires
  • Checked against Google’s debug endpoint before going live
  • Lead stages as GA4 events, for lead generation sites
GA4 · Measurement Protocol · order #10482

client_id

from the visitor’s _ga cookie

1873655912.1759385531

session_id

from their _ga_ session cookie

1759397730

event

switched on for this store

purchase

transaction_id

the order id

10482

value · currency

what the buyer paid

2499 · INR
email · phone · namenever sent to GA4, by Google’s policy
Sent to Google Analytics directly, or through your own server GTM container.

One standard

Hashed once. The same person on every platform.

Identity is not rebuilt for each platform. The email, phone, name and address a person is sent under are hashed once, by the same rule Meta uses, and relabelled for each API, so the same buyer is the same buyer everywhere. Every send lands in the Event stream with its payload and its status.

  • SHA-256 before anything leaves
  • Phones placed in the right country, never guessed
  • A test mode on every platform whose API offers one
  • A reply that carries an error is a failure, never a send
Event stream · purchase payload

What came in

email

the shopper typed it

phone

from checkout

address

city, zip, country

click id

captured on landing

→

What we sent

em

a1f4…9c02

ph

7be1…44d8

ct / zp / country

3d90…b7e1

fbc / gclid

passed through raw

external_id

stable per customer

Match quality

0/10

Nothing leaves as plain text. Every identifier is SHA-256 hashed first.

GA4, TikTok & more, on your own site.

Start a workspace and watch it work on your next order or lead, or let us walk you through it.

Switching it on

Each platform, the same four steps.

  1. 1

    Open its card

    One card per platform on the Integrations page, saying what it needs and where to find it.

  2. 2

    Paste the ids it asks for

    Usually a pixel id and an access key. Secret ones are encrypted at rest.

  3. 3

    Send a test event

    Where the platform has a test mode, the test stays out of your reporting, and its answer shows on the card.

  4. 4

    Switch on the events you want

    Purchase, checkout, cart, product view and search, by the names that platform uses.

Inside the module

Inside GA4, TikTok & more

Meta and Google have their own pages; everything else goes through this one engine.

GA4 Measurement Protocol

On the visitor’s own client and session, direct or through server GTM

TikTok Events API

Store events and lead stages, matched on ttclid

Snapchat, Pinterest, Reddit

Conversions APIs, each on its own click and browser ids

LinkedIn Conversions API

Qualified and won leads, matched on li_fat_id

One identity everywhere

The same hashed email and phone, the same event id and value, whichever platform it goes to

Event stream

Every send to every platform, with its payload

The payload preview runs through the same code that sends, so what you inspect is what each platform received.

Where this sits

One of the four steps an order goes through.

Every feature reads the same identity. Open any of them; each has its own page.

Add the next channel without new tags

One sale.Every platform, counted the same.

Connect the store once. Each platform you add gets the same sale, the same buyer and the same value, from its first order.