Skip to main content
TrackingConsulting
Now booking · 2–4 day turnaround

Duplicate conversions · Conversion tracking

Recover 40–80% of your Duplicate conversions ad revenue.

Done-for-you 1st-party server-side tracking on Meta, Google, TikTok and Microsoft. Built in 2–4 days. You own the entire stack. No monthly SaaS fees.

✓ 30-minute call · No commitment · You leave with a written remediation plan even if we’re not the right fit.

Built in 2–4 daysOne-time fee95% accuracy guaranteed400-day cookie lifetime1st-party server-side

Built on — and certified for — the platforms that matter

Stape

Pro Partner

Meta

Tech Provider

Google

Tag Manager

TikTok

Events API

Microsoft

UET Partner

LinkedIn

CAPI Partner

Pinterest

CAPI Partner

Built on the same partner stack used by enterprise DTC brands.

Ariful Islam — Founder, Tracking Consulting

Meet your consultant

Ariful Islam

Founder · 8+ years in paid media & tracking

Verified earnings

$200K+

earned on Upwork

Top Rated Plus
4.9/5 · 300+

Verify the receipts

You work directly with Arif — no SDR, no account manager.

By the numbers

No fake testimonials. Just the math.

70+

Platforms supported

Shopify · Woo · Magento · BigCommerce · 65 more

8+ / 10

Meta EMQ guaranteed

in writing — keep working free until hit

2–4d

Build to live

accurate data flowing within 7 days

$0

Monthly fees, ever

one-time fixed price · you own the stack

400d

Cookie lifetime

max RFC 6265bis allows · 57× Safari ITP

9

Ad channels covered

Meta · Google · TikTok · MS · LI · Pin · Snap · Reddit · X

95%+

Tracking accuracy

verified vs Stripe · GA4 · ad-platform reports

30 min

Free founder call

no SDR · no pitch deck · written remediation plan

Numbers from realistic engagements. Your specific recovery depends on your iOS share, ad-blocker rate, and current setup — we’ll quantify it on the call.

Real clients · real videos · real outcomes

Don’t take our word for it. Watch the receipts.

Founders, marketers, and agency owners describing the before-and-after of their Duplicate conversions tracking rebuild — in their own words, on camera.

The problem

How one order turns into two conversions

Duplicate conversions-specific issues
Leak #01

Pixel and CAPI send the same order with no shared ID

Deduplication requires an identical event_name and an identical event_id on both hits. Miss the ID on either side, or send "Purchase" from one and "purchase" from the other, and Meta reads one sale as two separate buyers.

Leak #02

The server event arrives after the dedup window has closed

Meta matches a browser and server pair within roughly 48 hours. A nightly CRM batch, a retried webhook or an offline upload lands too late, so a correctly-tagged event still gets counted as brand new.

Leak #03

Three separate things are firing the same purchase

A native platform channel pixel, a custom checkout pixel and a GTM container all send Purchase. No single one of them is misconfigured. Together they turn every order into a small crowd.

Leak #04

The confirmation page counts again on every refresh

Order-status pages can be revisited, bookmarked and reloaded — and on some platforms customers get emailed a link straight back to them. Without transaction_id or event_id handling, each visit is a fresh conversion.

Who this is for

Honest about who we’re a fit for.

We don’t take every project. Here’s how to tell if we’re right for you.

Good fit

You’re a great fit if…

  • You run Duplicate conversions (or are migrating to it)
  • You spend $5K+/month on paid ads (Meta, Google, TikTok, Microsoft, LinkedIn)
  • Your reported ROAS doesn’t match what your bank account is saying
  • You want to own your tracking stack — no monthly SaaS fees forever
  • You have 2–4 days to do this once and never think about it again
Not a fit

Skip us if…

  • You spend less than $500/month on paid ads (browser pixel is fine)
  • You want a SaaS dashboard with monthly fees forever (Triple Whale, Hyros)
  • You need attribution modeling — we fix the data foundation, not multi-touch reports
  • You want a 6-month enterprise consulting engagement (we ship in 4 days)
  • You expect us to manage your ad accounts (we don’t — that’s a different service)

If you’re still unsure, book the call anyway — we’ll tell you straight whether we can help.

Our position

If your reported ROAS disagrees with your bank account, you don’t have an attribution problem. You have a data foundation problem. No SaaS dashboard fixes that — only a rebuilt 1st-party server-side stack does.

Ariful Islam — Founder
The outcome

What changes when one order equals one conversion

One event per order, on every platform, every time

Server-side

The same deterministic ID travels with the order through browser and server, so a refresh, a retry or a redundant tag can't manufacture a second sale.

The Events Manager overlap warning goes quiet

8+ EMQ

Meta's own diagnostics stop flagging redundant events, which is the fastest independent confirmation that deduplication is genuinely working.

Reported ROAS lines up with what your books say

Deduped

Not because the platform got generous, but because it stopped counting revenue twice. Expect the headline number to go down and become usable.

Bidding is trained on the real number

Backend-verified

Smart Bidding and Advantage+ optimize toward the conversions you report. Feeding them two purchases per order teaches them to buy traffic that performs half as well as it appears to.

The full transformation report

Before vs after — built in 2–4 days, accurate data within 7 days

We deliver the 1st-party server-side stack in 2–4 business days. Each metric below measured 7 days pre-launch vs 7 days post-launch using your own ad-platform reports + Stripe + GA4. No 30-day waiting game.

Attribution accuracy

  • Reported ROAS vs Stripe match
    Before60% (35% drift)
    After95%+ match
  • iOS conversion match rate
    Before~58%
    After~92%
  • Cross-domain click-ID retention
    Before~40%
    After~95%
  • Server-attributed conversions
    Before0%
    After100%

Audience quality

  • Meta Event Match Quality
    Before4.5 / 10
    After8+ / 10
  • Cookie lifetime (Safari)
    Before7 days (ITP cap)
    After400 days (max allowed)
  • Lookalike seed-list size
    BeforeShrinking as signal decays
    AfterRebuilt from server-side matches
  • Identity match params sent
    Before1–2 (email maybe)
    After9 (email · phone · IP · UA · click_id · etc.)
  • Retargeting list health
    BeforeDecaying
    AfterCompounding

Bidding performance

  • Smart Bidding stability
    BeforeRetraining weekly
    AfterLocked-in
  • CPA trend
    BeforeDrifts up as signal degrades
    AfterBidding learns from complete data
  • ROAS variance week-over-week
    Before±35%
    After±5%
  • Conversion volume Meta sees
    Before65%
    After95%+

Compliance & ownership

  • GDPR / CCPA audit-ready
    BeforeWeak
    AfterAudit-clean
  • Consent Mode v2 wiring
    BeforeNot configured
    AfterFully wired + verified
  • 3rd-party cookie deprecation ready
    BeforeNo
    AfterYes
  • Data ownership
    BeforeVendor-locked
    After100% yours

Server-side

money events from your backend

8+ / 10

Meta EMQ guaranteed

95%+

tracking accuracy

A typical engagement

The shape of a typical Duplicate conversions rebuild

We’re not going to invent a fake testimonial here. Instead — here’s the realistic pattern of what happens, anonymized but accurate to engagements we ship.

Day 0 — They arrive

A 7-figure Duplicate conversions store spending ~$25K/month on Meta. Reported ROAS shows 4.1× in Ads Manager. Their bookkeeper’s number says 2.6×. The founder doesn’t know which is real, so they keep doubling down on what looks like a winning campaign — except cash flow tells a different story.

Day 1 — Audit

We screen-share. Within 20 minutes we’ve found the leaks: native pixel firing twice on iOS, CAPI dedup using the wrong event_id (Meta is double-counting), GA4 showing 38% (not set), and the Customer Events API never enabled. The 1.5× ROAS gap explains itself.

Day 2–3 — Build

Server-side GTM container goes live on data.theirstore.com. Meta CAPI rebuilt with full advanced matching. Google Enhanced Conversions wired. TikTok Events API turned on. All event_ids deterministic. iOS recovered.

Day 4 — Launch

Live-fire test purchases through every funnel step. Meta Event Match Quality goes from 4.5 to 8.7 — verified live in Events Manager. They get a Notion runbook + Loom walkthrough so their dev team can extend it.

Day 5–7 — Accuracy

Conversion data starts flowing cleanly. Day 7: reported ROAS reads 2.8× (matches Stripe within 5%). Lookalike audiences grow because Meta finally has clean seed data. Their CAC dashboard makes sense for the first time in a year.

Day 30 — The math compounds

Smart Bidding has 30 days of clean signal. CPA drops 18%. They scale Meta budget 40% because they finally trust the data. Net new revenue from the recovered tracking: roughly $14K/mo above what they were getting before.

Numbers above are realistic averages from engagements we’ve shipped. Your specific recovery depends on your iOS share, ad-blocker rate, and current setup — we’ll quantify it on the call.

The cookie window unlock

400-day cookie lifetime — the longest your browser allows

Default Duplicate conversions setups put cookies on a 7–30 day timer. Safari ITP caps client-set cookies at 7 days. That kills your retargeting windows, shrinks lookalike audiences, and starves Smart Bidding of historical signal.

We set 1st-party cookies via HTTP headers on your own subdomain — exempt from ITP’s 7-day cap. Lifetime: 400 days. The maximum Chrome, Firefox and Safari currently permit.

  • 57× longer retargeting window vs Safari default

    Reach users who saw your ad 6 months ago instead of last week.

  • Bigger lookalike seed pools

    More retained users in your custom audience = better lookalike quality on Meta, Google, TikTok.

  • Smart Bidding has 13× more signal history

    Algorithms optimize on 400 days of behavior, not 7 days. CPA stabilizes faster.

  • Critical for high-AOV / long-consideration purchases

    If your average buyer takes 30+ days to convert, default cookies miss them. 400-day cookies don’t.

Cookie lifetime — head to head

How long cookies survive in real-world traffic

Safari ITP (default)7 days
Chrome / Firefox (typical)30 days
Meta default retargeting window90 days
Google Ads default cookie540 days(but capped by browser)
Our 1st-party server-side400 days

400 days is the hard maximum enforced by RFC 6265bis (Chrome 104+, Safari 17+, Firefox 110+). We set it via HTTP Set-Cookie: Max-Age=34560000 on your subdomain. Survives Safari ITP’s 7-day client-side cap.

Under the hood

What’s actually happening on your server-side stack

Six capabilities your default Duplicate conversions setup doesn’t have. Built on the same Stape Pro stack used by enterprise DTC brands.

Cookie window

Cookie Keeper

400-day 1st-party cookies

Set via HTTP headers on your subdomain — the maximum browsers allow. Survives Safari ITP’s 7-day cap that kills retargeting.

Ad-block resistance

Custom Loader

Custom-loaded GTM scripts

Your gtm.js and analytics scripts load through a custom path on YOUR domain. uBlock, AdBlock Plus, Brave can’t identify them as trackers.

Attribution

Click ID Restorer

Click ID restoration

fbclid / gclid / ttclid / wbraid recovered from the URL and persisted server-side. Multi-redirect funnels stop dropping attribution. Safari user IDs restored.

Profit signal

POAS Data Feed

POAS — Profit on Ad Spend

Send actual profit data (not revenue) to Meta / Google. Smart Bidding optimizes for the metric that matters: net margin, not gross revenue.

Identity

User ID

Cross-session User ID

Stable userID generated server-side from IP + UA + SSL fingerprint. Stitches anonymous → known → returning visitors across 400 days.

Audience signal

GEO Headers

GeoIP enrichment

Country, region, city, postal code passed to Meta / Google CAPI from your server — without exposing the raw user IP to the browser.

Compliance

Anonymizer

PII hashing by default

Email, phone, name, address are SHA-256 hashed on your server before they leave for Meta or Google. Zero raw PII in transit.

Quality filtering

Bot Detection

Bot traffic detection

Bot/scraper traffic identified at the gateway and blocked from polluting your audiences. Smart Bidding optimizes against humans, not bots.

Reliability

Dedup logic

Browser ↔ server dedup

Deterministic event_id and event_time so Meta / Google never double-count. Your reported ROAS stops contradicting Stripe.

Reputation

Dedicated IP

Dedicated outbound IP

Your sGTM gets a dedicated static IP for outgoing CAPI requests. Better deliverability to Meta, Google, TikTok — no shared-IP noise.

Residency

Multi-region

EU / US region routing

GDPR-conscious stores route their CAPI traffic through EU regions (Stape EU or self-hosted GCR europe-west). No US data hop.

Data warehouse

BigQuery export

BigQuery + Looker dashboard

Server logs + GA4 raw events streamed to BigQuery. Looker Studio dashboard branded for your team. Premium tier.

We’re official Stape Pro partners — every Power-Up above is enabled and configured for you. Or we self-host the equivalent on your Cloud Run / GKE if your traffic justifies the cost crossover. You pick.

Live data flow

What your stack is doing — right now

Every conversion fires through your subdomain, gets enriched with hashed identity params, deduped against the browser pixel, then forwarded to Meta CAPI, Google EC, TikTok Events API and Microsoft UET in parallel.

You see this stream live in your sGTM debug console — not a SaaS dashboard you rent. It’s your data, on your server, on your subdomain.

  • p99 latency< 80ms
  • Avg. event payload9 identity params
  • Browser → Server dedupDeterministic event_id
  • Failure handlingRetry · queue · dead-letter
sgtm-debug · data.fix.com
streaming
10:42:18[INFO ]evt=PageView | id=ev_a3f2.. | ua=ios17 | ip_hash=ok
10:42:18[OK ]→ meta.capi status=200 emq_pred=8.6
10:42:18[OK ]→ google.ec status=200 match=enhanced
10:42:24[INFO ]evt=AddToCart | id=ev_b1c8.. | val=$84.00
10:42:24[DEDUP]browser↔server merged on event_id=b1c8..
10:42:24[OK ]→ meta.capi status=200 emq_pred=8.7
10:42:24[OK ]→ tiktok.eventsapi status=200
10:42:31[INFO ]evt=Purchase | id=ev_c9d4.. | val=$184.00
10:42:31[POAS ]profit=$58.42 sent (margin 31.7%)
10:42:31[OK ]→ meta.capi status=200 emq=8.8 ✓
10:42:31[OK ]→ google.ec status=200 ✓
10:42:31[OK ]→ microsoft.uet status=200 ✓
10:42:33[BOT ]blocked: ua=AhrefsBot · 1 evt suppressed
uptime: 99.98%all channels healthy
Every paid-media channel · 1st-party server-side

CAPI / Events API ready for every ad platform you run

One server-side gateway. Every major ad platform fed real conversion data, deduped, with full identity match.

Meta

Conversions API

Server-side

Google

Enhanced Conv.

Server-side

TikTok

Events API

Server-side

Microsoft

UET Server

Server-side

LinkedIn

CAPI

Server-side

Pinterest

CAPI

Server-side

Snapchat

CAPI

Server-side

Reddit

CAPI

Server-side

X / Twitter

Events API

Server-side
What you get

What a deduplication rebuild covers

Item 01

A source inventory: everything firing every money event

Native platform integrations, app-installed pixels, custom pixels, hardcoded snippets and container tags — listed with what each one sends and whether it should exist.

Item 02

A deterministic event_id derived from your order ID

Never a timestamp, never a random string. The ID is reproducible from the order itself, so browser and server independently arrive at the same value.

Item 03

One owner per platform per event, everything else removed

Each platform gets exactly one authoritative source for each event. Redundant tags are switched off deliberately and documented so nobody re-adds them next quarter.

Item 04

GA4 transaction_id hygiene and refresh handling

Purchase events carry a stable transaction_id, and repeat views of the confirmation page are suppressed rather than relying on GA4 to clean up after you.

Item 05

Google Ads counting rules and import paths corrected

"Every" versus "one" set correctly per action, and any action being counted by both the native tag and a GA4 import reduced to a single path.

Item 06

Before-and-after overlap and dedup verification

Meta's overlap report, the raw event counts and your order table compared across the same window so the fix is demonstrated, not asserted.

The honest math

Three ways to fix your tracking. One of them makes sense.

Option 1

Hire a senior tracking engineer

$15K–$25Kin dev cost

or 2–4 weeks of senior FTE time

  • 2–4 weeks before anything ships
  • Misses iOS / Safari / dedup edge cases
  • No EMQ guarantee — it’s “done” when they say so
  • Pixel debugging is not their day job

Option 2

Triple Whale / Hyros / Northbeam

$300–$2,000/month forever

$18K–$120K over 5 years

  • You rent a dashboard — they own your data
  • Cancel and you lose attribution overnight
  • Per-event / per-visitor pricing surprises
  • Still doesn’t fix your underlying tracking
Recommended

Option 3 — us

Done-for-you 1st-party server-side

$400–$1,800one-time

pay once · own the stack forever

  • Live in 2–4 days · accurate data within 7
  • iOS / Safari / dedup all handled by default
  • Meta EMQ 8+ guaranteed in writing
  • You own everything — server, container, runbook

We’re upfront: if you have a senior in-house dev with capacity and 4 weeks, hiring is fine. If you spend $1M+/yr on ads and want a SaaS dashboard layered on top, Triple Whale works. For most paid-ad advertisers between, we’re the math that makes sense.

From the founder’s desk
Ariful Islam — Founder
Available now

Ariful Islam

Founder & lead engineer

  • Experience8+ years in tracking
  • Engagements300+ DTC brands shipped
  • Specialty1st-party sGTM · CAPI
  • PartnerStape Pro · Meta Tech

“I’ll personally walk through your tracking on the call. No SDR. No sales pitch.”

I’ve spent 8 years rebuilding tracking for DTC brands, SaaS founders, agencies, and one thing I’ve learned: most tracking problems aren’t technical — they’re trust problems. You don’t know who to believe. Your current vendor swears it’s fine. Meta’s reports look great. Stripe says otherwise.

On our call, I’ll personally show you exactly what’s leaking, exactly what it would cost to recover, and whether you should hire us at all. If your current setup is genuinely fine, I’ll tell you. If a $400 browser-side fix is enough, I’ll say so. No upsell pressure.

Book the call. Worst case, you walk away with a free 47-point audit checklist. Best case, we deliver your 1st-party server-side stack in 2–4 days and your data is fully accurate within 7 days.

Arif— Founder

How it works

Built in 2–4 days. Accurate data within 7.

We deliver the entire 1st-party server-side stack in 2–4 business days. You start collecting accurate, deduped conversion data the moment it goes live — and within 7 days every signal is flowing cleanly to Meta, Google, TikTok and the rest.

1Day 1

Kickoff + audit

30-min call. We map your current pixels, GTM, dataLayer, consent setup, and ad-platform integrations. You get a written report of every leak.

2Day 2–3

Build the stack

Server-side GTM container deployed on your subdomain. Meta CAPI · Google EC · TikTok Events API · Microsoft UET wired. Identity match + dedup configured.

3Day 4

QA + go-live

Live-fire test purchases across every funnel step. Meta EMQ verified at 8+. Tag Assistant + Pixel Helper passes. Side-by-side report delivered.

4Day 5–7

Verify accuracy

Your data flows clean. Within 7 days every signal — Meta, Google, TikTok, Microsoft — is fully accurate. Notion runbook + Loom walkthrough handoff.

Diagnose it honestly

Two hits isn't duplication. Two counts is.

A browser event and a server event for the same order is the architecture working, not a bug. Duplication is what happens when the platform can't tell those two apart — or when three separate systems are firing.

Normal — not a fault

  • The same purchase appears twice in the network tab

    Browser and server both sending is deliberate: the browser carries fbp, fbc and click IDs, the server carries authority over whether the order really happened. If both hits share event_name and event_id, one gets collapsed.

  • Events Manager displays a deduplication notice

    That panel is telling you it saw a matched pair and kept one. Seeing it alongside a healthy dedup rate is confirmation the setup is correct, not a warning that something needs fixing.

  • A Google Ads action set to "Every" counts more than once

    For lead or add-to-cart actions, counting every conversion per click is often the right setting on purpose. Check the counting rule before you decide the tag is misbehaving.

  • Platform totals run a few percent above your order count

    Modeled conversions, cross-device matching and window differences all nudge platform numbers up. Duplication doesn't look like a margin — it looks like a multiple.

Actually broken

  • The platform sits at roughly 2x your order count, steadily

    A clean multiple that holds week after week is a duplicated source. Attribution differences are messy and move with your channel mix; they never produce a tidy doubling.

  • One transaction_id appears twice in GA4

    Same order, two events, different session IDs — the confirmation page is being counted again on refresh or back-navigation. Every customer who reloads is inflating your revenue.

  • Dedup rate is low while both browser and server are sending

    The pair isn't matching. Either the server event has no event_id, it's generating a random one, or it's fired from a delayed job arriving outside Meta's roughly 48-hour matching window.

  • Reported revenue exceeds what your books say for the period

    Value is being double-counted along with the event. This is the version that matters most, because Smart Bidding and Advantage+ are optimizing toward a revenue figure that doesn't exist.

Diagnostic sequence

One test order tells you almost everything

You can confirm or rule out duplication in about fifteen minutes with your browser's network tab and one purchase.

  1. 1

    Place one test order and count the hits

    Open the network tab before checkout, then filter on the platform's endpoint — facebook.com/tr, google-analytics.com/g/collect, googleads.g.doubleclick.net. Count how many purchase hits leave for each platform.

  2. 2

    Read the event_id on every hit

    Expand each request and compare event_id for Meta and transaction_id for GA4. If they're missing, or different on each hit, deduplication is impossible no matter what the platform documentation promises.

  3. 3

    Refresh the confirmation page twice

    Watch whether the purchase event fires again on each reload. If it does, there's no idempotency guard, and every customer who refreshes or hits back is adding a phantom conversion.

  4. 4

    Inventory every source that can fire the event

    Web GTM container, a hardcoded snippet in the theme, the platform's native channel app, a server container, and any partner or app integration. Write the list down; almost nobody has only one.

  5. 5

    Compare a closed week to your order count

    Platform purchase count divided by backend order count. A ratio near 2.0 names your problem. A ratio near 1.1 means you have an attribution question, which is different work.

  6. 6

    Check the counting rule on each Ads action

    In Google Ads, open the conversion action and read whether it counts every conversion or one per click. A purchase action left on "Every" counts a repeat visit as a second sale.

Source-of-truth validation

One paid order, one conversion, on every platform

The target isn't fewer conversions. It's exactly one per order, everywhere, with the before-and-after ratio written down so nobody has to argue about why the number moved.

Source of truthYour order table — one paid order equals one conversion, on every platform
  • Record the exact order count and revenue total from your backend for a closed seven-day window.
  • Put each platform's event count for that window beside it; the target ratio is one to one, not lower.
  • Confirm in Events Manager that browser and server Purchase pairs are collapsing at a healthy dedup rate.
  • Spot-check ten order IDs end to end: one row per order per platform, one value, one currency.
  • Reload the confirmation page five times and confirm no sixth event is created anywhere.
  • Sign-off is 95%+ one-to-one match against your order export, with the before-and-after ratio documented.

Straight talk

When you don't have a duplication problem

This one gets misdiagnosed more than anything else I work on, usually in the direction of paying for a rebuild you don't need.

  • Your platform count and your order count are within a few percent. That's an attribution difference, and it's a different job entirely.
  • The two hits you found carry the same event_name and the same event_id. That's the correct design — check the dedup rate before spending anything.
  • You run one hardcoded pixel with no server feed and no native channel integration. There's only one source; the cause is elsewhere.
  • Your Google Ads lead action is set to count "Every" conversion on purpose. If that's wrong for you, changing it takes ten seconds.

Got questions?

The honest answers.

No buzzwords, no upsell. If we don’t know, we say so.

01Can I fix this myself?

The diagnosis, yes — and you should do it before hiring anyone. Place one test order, open your browser's network tab, filter for the platform's endpoint and count how many times the purchase event goes out. Then check whether each one carries an event_id and whether those IDs match. If you find two hits with the same ID, deduplication is working and your problem is elsewhere. If you find two hits with different IDs or no ID at all, you've found it. Fixing it is harder than finding it, because usually one of the sources is a native integration you can't fully control.

02When do we NOT need this?

If your platform count and your order count are within a few percent of each other, you don't have a duplication problem — you have an attribution difference, which is a different job. Also skip this if you're running a single hardcoded pixel with no server-side feed and no native channel integration: there's only one source, so there's nothing to deduplicate. Duplication is a problem of having too many well-meaning integrations, not too few.

03Am I losing money because of this?

Not directly — the orders and the revenue are real and unaffected. What's damaged is the decision-making. Inflated ROAS makes weak campaigns look fundable, and automated bidding trained on doubled conversions will keep buying the traffic that produced them. The cost shows up in budget allocation over the following weeks, not in your revenue line today.

04Why does deduplication work sometimes and not others?

Timing and consistency. Deduplication needs the same event name, the same ID, and both hits inside the platform's matching window. Intermittent failure usually means the server event is fired from a delayed process — a retried webhook, a queued job, a nightly sync — so some pairs land inside the window and some don't. That looks random from the reports and is completely deterministic once you look at the timestamps.

05Should I just turn off the browser pixel and go server-only?

Tempting, and occasionally right, but usually not. The browser hit carries fbp, fbc and click IDs that the server can't generate on its own, and it arrives instantly. The better architecture is both, properly paired: browser for identity signals, server for authority over whether the conversion happened. Going server-only to dodge a dedup problem trades one kind of inaccuracy for another.

06My ROAS will go down after this. How do I explain that internally?

Say it plainly: the number was counting some orders twice, and now it counts each one once. Nothing about the business changed. I'll give you the before-and-after reconciliation against your own order records so the conversation is about evidence rather than about whose fault the drop is. In my experience it's a much easier conversation to have with the sheet in hand.

07Does this apply to lead forms too, or just ecommerce?

Both, and lead gen is often worse. A form that fires on button click and again on the confirmation page, plus a CRM webhook sending the same lead server-side, will triple-count. The fix is the same shape: pick the record ID from your CRM as the deterministic event_id and let one source own the event.

Still have questions? Book a 30-min call — bring them all.

The call

What happens on your free 30-min call

No pitch deck, no SDR, no upsell pressure. Founder-led. Bring your ad-platform screens and your Duplicate conversions setup — we’ll work through it together.

Min 1–5

We get the lay of your store

What you sell, what you spend on ads, who handles dev. Quick context-gathering — no questionnaire upfront.

Min 5–15

We audit your tracking live

Screen-share. We open your Meta Events Manager, GTM, and ad reports. You see exactly which conversions are leaking.

Min 15–25

We map a fix

What needs rebuilding, what stays. The exact Duplicate conversions setup we'd ship and what it would recover for you.

Min 25–30

Decide. Or don’t.

If we're a fit, we send a 1-page proposal in writing. If not, you walk away with a free remediation plan you can hand to anyone.

No pitch deckFounder-led, not SDRYou leave with a written planZero commitment
Free · 30 minutes · No commitment

Let's find out how many times one order gets counted

Give me one recent order ID and access to the ad accounts. I'll trace it through every platform and show you the count before we talk about a rebuild.

Free · 30-min consultation · No commitment · Replies in under 2 hours · Available worldwide via WhatsApp

95% guarantee · fixed-fee