Back to all articles
ShopifyAffiliate Marketing

Your Meta Pixel Is Lying About Affiliate Sales: Fixing Attribution in Both Directions

The browser pixel misses affiliate orders it should see and Meta claims affiliate orders it did not earn, so the two dashboards never agree. Learn why each one is wrong, how server-side conversion tracking from Reveshare fixes the undercount, and a monthly routine for reading both reports without paying twice.

Your Meta Pixel Is Lying About Affiliate Sales: Fixing Attribution in Both Directions

Open Ads Manager and your affiliate dashboard side by side for the same month. Meta says paid social drove a certain amount of revenue. Reveshare says affiliates drove another amount. Add them to email, organic and direct, and the total is more than Shopify says you actually sold.

This is not a bug in either tool. It is two systems answering different questions with different rules, and each one is wrong about affiliate sales in its own direction. The pixel in the browser misses purchases it should have seen. Meta's attribution model claims purchases it merely passed near. Meanwhile your affiliate program has a code on the order and an unambiguous claim.

This post explains both errors, how server-side conversion tracking in Reveshare fixes the undercount, how to read the two dashboards together without double paying, and what to do when a whitelisted creator ad makes both systems right at once.

Run your affiliate program on Shopify

Install Reveshare from the Shopify App Store and start turning customers into ambassadors.

Get the app →

1. Why the browser pixel undercounts

The Meta pixel was built for a web where a script on the checkout page could read cookies, see the order, and fire a purchase event. Three things have broken that.

Checkout Extensibility. Shopify's modern checkout runs custom code inside sandboxed web pixels rather than as scripts pasted into the theme. That is good for security and speed, but a pixel that was never migrated, or that was migrated without the right customer data scopes, fires without the identifiers Meta needs to match the purchase to an ad view.

Browser privacy changes. Apple's App Tracking Transparency prompt and Safari's cookie limits mean a large share of iOS users are invisible to the browser pixel. The purchase happens, the pixel fires, and Meta cannot connect it to anything.

Ad blockers and consent tools. A meaningful slice of shoppers block third-party scripts outright, or decline tracking in a consent banner. The pixel never loads.

The result is that a real, ad-influenced purchase happens and Meta records nothing, or records a purchase with no match. Your cost per purchase looks worse than it is, and the delivery system learns from an incomplete picture of who buys.

Two errors
in opposite directions, which is why the gap never looks consistent

The pixel undercounts because it cannot see every buyer. The attribution model over-claims because it counts everyone it saw. Some months one dominates, some months the other, so the difference between the two dashboards swings without a pattern.

2. Why Meta over-claims affiliate sales

The second error runs the other way. Meta's default attribution setting credits a purchase to an ad if the buyer clicked it within seven days or viewed it within one day. That is a generous rule, and it is applied to every purchase Meta can match, including ones your affiliates drove.

Picture the path. A shopper follows a creator, sees the creator's post, clicks the Sneakylink, does not buy. Two days later your retargeting ad appears in their feed. They do not click it. On day four they come back through the creator's link and buy with the minted code.

Reveshare attributes that order to the creator. The code is on the order, the click is within the 30-day window, there is no ambiguity. Meta also attributes it to your retargeting campaign, because the shopper viewed the ad within a day of buying. Both dashboards show the same order as their own.

How Meta decides

  • Any purchase it can match to a person who saw or clicked an ad
  • Seven-day click, one-day view by default
  • No knowledge of affiliate codes, links or programs
  • Optimised to show ads are working, because that is what the model measures

How Reveshare decides

  • A code on the order or a click inside the program's window
  • The code on the order wins when there is a conflict
  • No knowledge of ad impressions or views
  • Built to decide who gets paid, so it is deliberately strict

Neither is lying by its own rules. The problem is that the rules overlap, and if you treat both reports as truth you conclude that paid social and affiliates each deserve credit for the same sale.

3. The sum-of-channels problem

Every ecommerce operator eventually notices that channel reports add up to more than revenue. It is worth being precise about why, because the fix depends on it.

Shopify records one order for one amount. Each marketing tool then asks "did I touch this order?" and, by its own rule, says yes or no. Meta says yes to anything it saw. Google says yes to anything it saw. Your email tool says yes to anyone who opened a message. Reveshare says yes only when a code or a tracked click is on the order. The claims are not exclusive, so they overlap, and the overlap is the gap.

The practical danger is not the accounting. It is what people do with the numbers. If the growth team believes Meta's figure, they raise the ad budget on the strength of sales affiliates actually drove. If finance believes the affiliate figure and Meta's figure both, they conclude the commission and the ad spend each paid for themselves when only one did.

Product tour

See how attribution actually works

Sneakylinks track the sale even when the code is never typed. Post-checkout referrals turn the thank-you page into your recruiter.

4. Fixing the undercount: server-side conversion tracking

The pixel undercount is the fixable half, and Reveshare fixes it for the affiliate slice of your orders.

Reveshare does not track from the theme. It sees orders through Shopify's Web Pixels API and order webhooks, and it validates commission on the server. That means it knows about an affiliate-driven purchase whether or not the shopper's browser allowed a pixel to fire. The Meta integration passes that knowledge on.

  1. Add your Meta Pixel ID once

    In the Meta integration settings, enter your Pixel ID. This is a one-time step and does not require touching your theme or your checkout.

  2. Attributed purchases are sent to Meta server-side

    When an order is attributed to an affiliate in Reveshare, the purchase event is sent to Meta from the server rather than from the shopper's browser. Ad blockers, iOS privacy settings and consent banners do not stop it.

  3. Meta's optimisation learns from affiliate buyers

    The delivery system now sees purchases from the shoppers your creators bring in. Those buyers are often exactly the audience your ads should find, so the extra signal improves targeting for your paid campaigns, not just the reporting.

Two things to be clear about. First, this closes the gap for affiliate-attributed orders. Orders with no affiliate involvement still depend on your primary Meta integration through Shopify's own channel app, which you should have migrated to Checkout Extensibility already. Second, sending an event to Meta does not change who gets paid. Commission is decided in Reveshare by the code on the order and the window. The event is information for Meta's model, not a transfer of credit.

5. Reading the two dashboards together

The way out of the sum-of-channels trap is to assign each dashboard a job and refuse to let it do the other one.

Reveshare is the source of truth for commission. An order with an affiliate code or a tracked click inside the window is an affiliate order and earns commission. Refunds reverse it. This number is contractual, auditable and strict. Nobody argues with it, including the affiliate, because the rule is written down.

Meta's numbers are for optimisation. Cost per purchase, return on ad spend and audience performance in Ads Manager tell you which campaigns and creatives to fund and which to pause. They are comparative, not absolute. A campaign with a lower cost per purchase than another is better, even if neither figure is exactly true.

Shopify is the source of truth for revenue. When you need a total, use the store's own number and treat every channel report as a claim against it.

QuestionUseDo not use
How much commission do we owe?ReveshareMeta, Shopify
Which ad creative should get more budget?MetaReveshare
What did we sell this month?ShopifyAny channel report
Is the affiliate program paying for itself?Reveshare revenue net of refunds, against commission paidMeta's revenue figure
Did paid social grow this month?Meta, compared with last month on the same settingsThe affiliate dashboard

Once each tool has one job, the overlap stops being a problem. Meta can claim an affiliate order all it likes. It does not affect what you pay, and it only affects your ad decisions relative to other ads that overlap in the same way.

6. A monthly reconciliation routine

Twenty minutes once a month keeps everyone honest and catches the cases that actually need attention.

First week of the month

  • Pull last month's affiliate orders from Reveshare, net of refunds. This is the commission base.
  • Pull the same month's total orders and revenue from Shopify. Note the affiliate share as a percentage.
  • Export purchases from Ads Manager for the same period and note how many carry an affiliate code. Most tools let you compare on order ID.
  • Record the overlap: orders both Meta and Reveshare claim. Track the percentage month over month, not the absolute number.
  • If the overlap jumps sharply, check whether a whitelisted creator ad launched that month, or whether retargeting spend increased. Both raise it and neither is a problem.
  • If Reveshare's affiliate count falls while Shopify orders hold steady, check that the Web Pixel is still active and that a checkout change did not remove it.

The overlap percentage is the useful output. A stable overlap means both systems are behaving. A rising overlap with rising retargeting spend means you are paying commission and ad cost on the same shoppers, which is a decision to make deliberately rather than an error to fix. If the overlap is large and you would rather not pay twice, the lever is a shorter cookie window in the affiliate program, not a change to Meta.

7. Whitelisted creator ads: when both systems are right

There is one case where Meta and Reveshare will both claim an order and both deserve to. When you run a creator's post as a paid ad from their handle with their code in the caption, a shopper who clicks the ad and buys with the code was driven by the ad, which is Meta's claim, and by the creator's content and code, which is Reveshare's claim.

Do not try to resolve this. Decide the payment terms before the ad launches and let both dashboards record it.

  • Commission. The order carries the creator's code, so it earns their normal rate plus whatever bonus you agreed for the ad period. Reveshare handles this through the usual monthly payout.
  • Ad performance. Meta reports the ad's cost per purchase including these orders, which is correct, because the ad produced them.
  • Your economics. Cost per acquisition for that order is ad cost plus commission. Compare it against your brand ads on the same basis. Creator ads often win even with commission included, because the creative converts better. If they do not, the bonus rate is too high or the post was the wrong pick.

Conclusion

The pixel undercounts affiliate purchases because it cannot see every browser, and Meta over-claims them because its attribution rule counts everyone it touched. Both dashboards are behaving as designed, and neither is the truth about revenue. Fix the undercount by adding your Pixel ID to the Reveshare Meta integration so affiliate-attributed purchases reach Meta from the server, then give each dashboard one job: Reveshare decides commission, Meta ranks ads, Shopify reports revenue. Track the overlap between them monthly as a percentage, and treat whitelisted creator ads as the one case where both claims are legitimate and already priced in.

See pricing that scales with you

Compare plans and find the right fit for your brand and creator volume.

View pricing →

Frequently Asked Questions