Every order reaches Meta.Even when the Pixel can't.
Ad blockers, iPhone Safari and closed tabs hide real sales from your ads. Trakero sends every order from your own server, counted once, so Meta, Google and TikTok learn from what actually sold.
Free. A real browser checks your pixels, cookies and ad-blocker exposure in about 30 seconds.
Free plan, no card
Pay with bKash, Nagad or bank
Support in Bangla and English
Set up in one afternoon
Sample orders, real routing rulesBrowser Pixel (dashed) · Trakero, from your server (solid)
1A shopper opens a product page. Her ad blocker stops the Pixel; the same event reaches Trakero through your own domain.
0
Delivered
0
Recovered by Trakero
0
Duplicates merged
0
Pixel hits blocked
Works with your store and your ad platforms
WooCommerce
Shopify
WordPress
Tag Manager
Meta
Google Analytics
Google Ads
TikTok
Snapchat
Pinterest
X
LinkedIn
Microsoft Clarity
WooCommerce
Shopify
WordPress
Tag Manager
Meta
Google Analytics
Google Ads
TikTok
Snapchat
Pinterest
X
LinkedIn
Microsoft Clarity
Why browser tracking misses sales
Three ways your pixel loses a sale it should have seen
The shopper paid. The money is in your account. But the pixel in their browser never told Meta or Google, so the ad that brought them gets no credit, and the next ad is aimed worse.
blocked
1Ad blockers stop the pixel
Ad blockers, Brave and many privacy extensions block Meta's, TikTok's and Google's scripts before they load. The purchase happens; the pixel never runs.
Trakero sends the purchase from your server too, so the order reaches Meta and Google whether or not the pixel ran.
shop.com/p?fbclid=IwAR3x…
2iPhones hide who clicked
On iPhone, Link Tracking Protection strips click ids like fbclid and gclid from links opened in Mail, Messages and Safari Private Browsing, and apps that ask not to be tracked share less. The sale arrives without the click that caused it.
When a click id does arrive, Trakero keeps it for the whole visit and sends it with the order. When it was stripped, the order's hashed phone and email let Meta and Google still match the buyer.
1234567✕Day 1Day 8
3Safari deletes cookies after 7 days
Safari caps cookies written by scripts at 7 days, and at 24 hours when the visitor came from a tracking link. Someone who clicks today and buys next week looks like a brand-new visitor.
With the WooCommerce plugin or the PHP SDK, your own server refreshes the visitor cookie, which Safari does not cut short, so returning buyers are still recognised and credited.
The problem
Your pixel is not seeing every sale
Pick what your shopper's browser is doing. Watch where the browser Pixel's purchase goes, and where Trakero's does.
Illustration of what happens on shoppers’ devices, not a measurement.
Side by side
Ten orders, two ways of tracking them
The same ten orders, tracked by the browser Pixel alone and by the Pixel with Trakero. Sample
Browser Pixel only
10 orders · Sample
#10231Normal checkout
Delivered
#10232Ad blocker
Blocked
#10233Normal checkout
Delivered
#10234iPhone Safari, came back on day 9
No click id, no ad credit
#10235Ad blocker
Blocked
#10236Closed the tab before the thank-you page
Never sent
#10237Normal checkout
Delivered
#10238Ad blocker
Blocked
#10239Browser and server both sent it
Delivered
#10240Normal checkout
Delivered
Meta can credit 5 of 10
Pixel + Trakero
10 orders · Sample
#10231Normal checkout
Pending…
#10232Ad blocker
Pending…
#10233Normal checkout
Pending…
#10234iPhone Safari, came back on day 9
Pending…
#10235Ad blocker
Pending…
#10236Closed the tab before the thank-you page
Pending…
#10237Normal checkout
Pending…
#10238Ad blocker
Pending…
#10239Browser and server both sent it
Pending…
#10240Normal checkout
Pending…
Meta can credit 10 of 10
Ten sample orders showing the mechanism, not a measured rate. Your numbers depend on your shoppers.
Browser + server is not enough on its own
Two pipes are not a tracking system
Adding a server copy to the pixel is the right start. On its own it brings new problems: double counts, silent failures and data the platforms can't match. These are the gaps, and what fills them.
A typical browser + server setup
With Trakero
The pixel and the server each send the purchase, with different ids. Meta counts it twice and your ROAS looks better than it is.
Both copies carry one event id, and a purchase is one per order id, so every platform keeps one.
A send fails because Meta was slow or a token expired. Nobody notices until the numbers drop.
Failed sends retry for hours. Anything still failing shows the reason and what to do, and you are told.
Server events go out with only an IP address, so Meta can match few of them to a person.
Phone numbers (+880 and Bangla digits), email, name and city are cleaned and hashed before they leave, so more events match.
Cash-on-delivery orders are counted when placed, including the ones that get cancelled.
Hold the purchase for 1–48 hours. A cancellation in that time stops it everywhere, pixels included.
To see what happened you open Events Manager, GA4, TikTok and your server logs one by one.
One screen shows every order and what each platform, browser and server, received, skipped or rejected.
What accurate data does for your ads
01
Every real sale reaches Meta and Google
from the browser and the server, counted once
02
The ad systems learn from real buyers
so they find more people like them
03
Spend goes to what actually sells
fewer taka on ads that only look good
04
More orders from the same budget
and reports you can trust
The product
See every order's journey
Search an order and see each copy that arrived and where it was delivered. When a shopper says they paid, you can check in seconds. Sample store
A customer says they paid? Search the order and see every copy and every delivery.
Sample
ID: 10231
Order #10231·৳2,450 · Cash on delivery
Delivered
Browser copy received
14:02:11
Server copy received · merged into the same event
14:02:12
Delivered to Meta CAPI
212 ms · matched on email, phone, fbc
Delivered
Delivered to Google Analytics 4
184 ms
Delivered
Delivered to TikTok Events API
236 ms
Delivered
Sample
Event
Destination
Status
Attempts
Details / Reason
Purchase
Meta CAPI
Retrying
2/8
Meta returned 503, next try in 2 min
Purchase
Meta CAPI
Failed
1/1
token expired · Reconnect Meta
Purchase
Google Analytics 4
Delivered
1/1
HTTP 200 · 184 ms
AddToCart
Meta CAPI
Delivered
1/1
HTTP 200 · 198 ms
PageView
TikTok Events API
Delivered
1/1
HTTP 200 · 236 ms
Purchase
Google Ads
Delivered
1/1
HTTP 200 · 162 ms
Sample
Net revenue
৳4,82,300
Last 30 days
Orders
197
Deduplicated & verified
Ad spend
৳1,15,000
Meta + Google + TikTok
ROAS
4.19×
Sample
Daily attributed revenue (last 14 days)
Day 1Day 7Day 14 (Today)
Deduplication
Browser and server both saw the order. Meta counts it once.
The order is authoritative. Every copy (browser, server, retry, webhook redelivery) resolves to one logical event, keyed by the order id. That same event_id is sent to Meta, so even Meta's side can't double count.
1
Layer 1: ingestion
Exact replay from the same source within 48 h → dropped before it is queued.
2
Layer 2: order ledger
First copy creates the logical event. Later copies from other sources become receipts on it.
3
Layer 3: Meta
One delivery, event_id purchase_10023. Meta dedups on it too.
Event inspectororder #10023 · ৳2,580
Send a copy to begin.
Built for Bangladesh
Type a Bangladeshi number the way customers do
Bengali digits, a trunk 0, dashes, +880. Trakero normalizes it the way Meta and Google each specify, then SHA-256 hashes it before it is stored anywhere. This demo runs the real rules in your browser. Nothing is sent.
Add Meta (or GA4, or TikTok) in Trakero with the same pixel id you use today.
2
Switch off the old sender
Pause that platform's tag in the old system the same day, so no purchase is sent twice.
3
Check, then move the next
When Events Manager shows Trakero's events, repeat for the next platform.
Free Cloudflare Workers tracking
A free Cloudflare Worker, or Trakero?
Many ads in Bangladesh show how to send Meta events from a free Cloudflare Worker. It can work for a small site. Here is what you take on when you run one yourself, with Cloudflare's own limits.
Set-up
DIY Cloudflare WorkerCopy or write a Worker script, add your tokens as secrets, route your domain to it. Every platform is more code.
TrakeroInstall the WooCommerce plugin, the Shopify app or one snippet. Connect each platform in the dashboard.
Free limit
DIY Cloudflare Worker100,000 requests a day on the Workers Free plan. Every page view and add to cart is a request.
TrakeroA free plan by events a month. Duplicates we drop are never counted.
When the limit runs out
DIY Cloudflare WorkerCloudflare skips the Worker or shows error 1027 until midnight UTC. Those events are not tracked, and nothing tells you.
TrakeroNothing is dropped. Events past your plan are stored and shown; you get a warning at 80%.
Duplicate purchases
DIY Cloudflare WorkerOnly stopped if your script stores every order id and the pixel shares its event id.
TrakeroBuilt in: one purchase per order id, one event id for browser and server.
When Meta or Google fails
DIY Cloudflare WorkerThe request ran once. If it failed, the event is gone unless you build a queue.
TrakeroRetries with backoff; a failed event shows why, with the fix.
Bangladeshi phone numbers
DIY Cloudflare WorkerYou write the cleaning and hashing yourself.
Trakero+880, 01…, Bangla digits and spaces cleaned and SHA-256 hashed for you.
Seeing what happened
DIY Cloudflare WorkerWorker logs show requests, not what each platform did with your order.
TrakeroAn event debugger: every order, every platform, the reply and the reason.
When an API changes
DIY Cloudflare WorkerYou update the script.
TrakeroTrakero updates it; you change nothing.
DIY Cloudflare Worker
Trakero
Set-up
Copy or write a Worker script, add your tokens as secrets, route your domain to it. Every platform is more code.
Install the WooCommerce plugin, the Shopify app or one snippet. Connect each platform in the dashboard.
Free limit
100,000 requests a day on the Workers Free plan. Every page view and add to cart is a request.
A free plan by events a month. Duplicates we drop are never counted.
When the limit runs out
Cloudflare skips the Worker or shows error 1027 until midnight UTC. Those events are not tracked, and nothing tells you.
Nothing is dropped. Events past your plan are stored and shown; you get a warning at 80%.
Duplicate purchases
Only stopped if your script stores every order id and the pixel shares its event id.
Built in: one purchase per order id, one event id for browser and server.
When Meta or Google fails
The request ran once. If it failed, the event is gone unless you build a queue.
Retries with backoff; a failed event shows why, with the fix.
Bangladeshi phone numbers
You write the cleaning and hashing yourself.
+880, 01…, Bangla digits and spaces cleaned and SHA-256 hashed for you.
Seeing what happened
Worker logs show requests, not what each platform did with your order.
An event debugger: every order, every platform, the reply and the reason.
Duplicates we drop are never billed. Pay in taka with bKash, Nagad, Rocket, Upay, Pathao Pay or bank transfer; your plan starts when the payment is verified.
Dollar prices are for stores outside Bangladesh, set on their own and never converted from taka. Duplicates we drop are never billed. Your plan starts when the payment is verified.
Monthly prices from each company's own pricing page, checked 24 October 2026. A request in server-side GTM also counts script loads, so the same traffic uses more requests than events.
A short email when Meta, Google or TikTok change a tracking rule that affects stores, and when we add a free tool. A few a year. Unsubscribe in one click.
We use your address only for these emails. Privacy policy.
FAQ
Straight answers
Not covered here? Write to us and a person who builds Trakero answers.
Do I remove my Meta Pixel?
No. Keep the Pixel and add Trakero. Both send the same event_id, so Meta keeps one copy and fills gaps from the other. Match quality goes up and nothing is double counted.
Does this get around consent or ad blockers' purpose?
Trakero respects consent: when a shopper denies ads consent, no ad cookies are set and no event is sent to ad platforms. It moves measurement onto your own domain and server, which is how Meta and Google recommend sending conversions. It is not designed to evade privacy choices.
Is my customers' data safe?
Email, phone, name and address are normalized and SHA-256 hashed inside our ingestion service before anything is queued or stored. Raw values never reach our database or logs. Destination tokens are encrypted with AES-256-GCM and can never be read back, even by us in the dashboard.
What happens if Meta is down?
Your store keeps sending and we keep accepting. Deliveries retry with backoff for about six hours. If your Meta token expires, sending pauses and the events wait. They do not burn their retries. Reconnect, and they go out.
We are cash on delivery. When is a purchase a purchase?
You decide. Send the purchase when the order is placed, confirmed or delivered. The order id makes it count once whichever moment you choose, and a later refund or cancel is linked to the same order.
Which platforms work today?
Stores: WooCommerce through our plugin, any website through the JavaScript SDK, any backend through the server API or the PHP, Node and .NET SDKs, and Google Tag Manager. Shopify is in beta. Destinations: Meta, Google Analytics 4, Google Ads, TikTok, Snapchat, Pinterest, LinkedIn and X, each through its server API, plus browser pixels from one snippet.
Why does my Meta Pixel miss purchases?
Three reasons cover most of it. Ad blockers and privacy browsers stop the pixel from loading. iPhones remove click ids such as fbclid from links opened in Mail, Messages and private browsing. And Safari deletes cookies written by scripts after 7 days, so a shopper who buys a week after clicking looks new. Trakero also sends each purchase from your server, with the same event id and hashed contact details, so Meta still gets it and can match the buyer.
Is browser plus server-side tracking enough?
It is the right base, not the whole job. Without a shared event id the same purchase is counted twice; without retries a failed send is lost; without clean, hashed phone numbers Meta can match few server events; and you still have to check every platform separately. Trakero handles all four and shows each order's journey on one screen.
Is a free Cloudflare Worker good enough for server-side tracking?
For a small site sending only to Meta, it can work. The Workers Free plan allows 100,000 requests a day; when they run out the Worker is skipped until midnight UTC and those events are lost. Deduplication, retries, phone hashing and a log of what Meta received are yours to build. Trakero has them built in.
Is it Trakero or Trackero?
It is Trakero, at trakero.com. People sometimes type Trackero or Trakaro; it is the same product: server-side tracking for ecommerce stores, built in Bangladesh.
Start counting every order today
Create a free account, connect your store and watch a test order arrive in Meta Events Manager.