Make Your SamCart Funnel Pay for Its Facebook Ads
A $27 front end rarely pays for the ad that sold it. Your bumps and upsells can, once Meta sees every SamCart order at full value and finds them more buyers.
IN THIS PLAYBOOK · 10 SECTIONS
Where Your Data Breaks
“Is this funnel paying for its ads?” If you sell a $27 workshop on SamCart with Facebook ads, you’ve asked yourself that. Say a sale costs $40 in ads. The front end loses $13 on every buyer, and that’s the plan: the order bump and the upsell are there to win it back. Whether they do depends on what Meta sees about each order.
- Meta counts sales, not order value. Out of the box, Meta’s bidding treats a $27 sale and a $141 order as equals, so it buys more of whichever comes cheaper.
- Two senders, double sales. When SamCart’s built-in Meta integration and a
Purchasescript on your thank-you page both report the same order, Meta counts one buyer twice and learns from a sale that never happened. - The click and the order live on different sites. The ad lands on your sales page, and the order closes on SamCart. Lose the click at that hop, and you can’t tell which ad paid for itself.
Here’s the play: make the funnel pay for its own ads. It starts with one clean signal. AnyTrack sends Meta one Purchase per SamCart order, at the full value of every funnel step, with the ad click from your sales page attached. Then you run the strategy on that signal: launch, keep the ads that earn back their spend, scale them, switch Meta to value bidding, and split your buyers by order value into new campaigns.
Setup takes about 45 minutes, and you need no developer. You paste one Tag in two places, add one hidden field, connect one webhook, and turn off the old Meta senders.
From Your SamCart Funnel to One Full-Value Order
Follow the funnel from the Facebook ad through the bump, upsell, and downsell. SamCart sends AnyTrack the whole order, Meta gets one full-value Purchase, and order values seed your next campaigns.
Steps marked with the AnyTrack node run automatically. No extra code, no manual tagging.
Example Scenario
You’re a coach. You sell a $27 workshop, a $17 workbook as the order bump, and a $97 mini-course as the upsell. Buyers who decline the upsell see a $47 starter course as the downsell. A buyer who takes the bump and the upsell spends $141. Your sales page runs on WordPress, the checkout runs on SamCart, and you spend about $100 a day on Meta, with no developer on call.
Run the numbers. At $40 in ads per sale, the front end alone returns $0.68 for every ad dollar. Now say 30% of buyers add the bump, 20% take the upsell, and 15% of the rest take the downsell. Your average order value (AOV) becomes $57.14, and the same ads return $1.43. The funnel pays for its ads, and every buyer joins your list for free, ready for your next offer. These are example numbers, not benchmarks, so plug in your own.
Four things need to happen:
- One full-value
Purchaseper order, sent to Meta by one system, with the ad click from your sales page attached. - ROAS for every ad, so you keep the ads that pay for themselves and turn off the rest.
- Meta bidding on order value, so it looks for more $141 buyers instead of more $27 ones.
- Audiences by order value, so your best buyers seed new campaigns and front-end buyers see the upsell again.
- An AnyTrack account on Starter or above, which the Conversion API requires
- A SamCart Pro plan or higher, for the order webhook, order bumps, and upsells (on a legacy plan without webhooks, connect SamCart via Zapier)
- A front-end offer with at least one order bump or upsell
- Admin access to SamCart and to your sales page builder
- Access to your Meta ads account and Events Manager
Step 1: Add the Tracking Tag to Your Sales Page and SamCart
The Tracking Tag opens the session when the ad click lands, collects the fbclid and UTMs, and adds the AnyTrack Click ID to your buy buttons. In SamCart, the same Tag tracks the checkout and keeps the Click ID with the order. It goes in both places, every time.
- In AnyTrack, create a property for your sales page’s domain.
- Copy the Tracking Tag from Property Settings > Tracking Script.
- Paste the Tag into your sales page’s header code, in your page builder’s custom code settings.
- In SamCart, click your profile icon and go to Settings > Tracking & Pixels.
- Paste the Tag into Embed HTML/Scripts in Header.
- Turn on Fire Pixels Before Redirect.
- Enter
atclidin Content URL parameter. - Click Add Parameter and enter
atclid. - Save.
Step 2: Add a Hidden Click ID Field in SamCart
The hidden field gives SamCart a second place to keep the AnyTrack Click ID with each order, next to the Content URL parameter from Step 1. SamCart’s webhook returns the Click ID with the order, and that’s how AnyTrack ties every sale to the ad click that started it.
- In SamCart, go to Custom Fields > New Custom Field.
- Set both Name and Label to
atclid. - Select Hidden as the field type.
- Save.
Step 3: Connect SamCart to AnyTrack
SamCart’s webhook sends AnyTrack the whole order when the funnel ends: the front end with its bump, and every upsell or downsell the buyer took. The webhook comes from SamCart’s server, not from a pixel on your thank-you page. AnyTrack turns each SamCart order into one Purchase with the full total and every product. Value bidding learns from that total, and your value audiences filter on it.
- In the AnyTrack Integration Catalog, install SamCart and copy the webhook URL.
- In SamCart’s App Marketplace, install the Webhooks app and paste the webhook URL.
- Create a webhook rule with Rule Type Global Rule, Action Send Notify URL for POST for Orders, and Trigger Order Completed.
- In AnyTrack, open Property Settings, select your property, and expand the Samcart section.
- Turn off Enable client side purchase tracking, then click Save.
With the toggle and the webhook both active, AnyTrack records every order twice. Check the toggle even if you never turned it on: properties connected before May 2025 can have it on. The toggle covers purchases only, so the Tag keeps tracking InitiateCheckout on your checkout. If you use SamCart’s Slide Checkout, also turn on Enable Slide checkout in the same section.
Step 4: Make AnyTrack Meta’s Only Purchase Sender
Value bidding learns from what each order is worth. If two systems report the same order, Meta sees two buyers where you had one. So keep one sender: the one that carries the ad click.
Between turning off SamCart’s Meta Pixel Tracking and turning on AnyTrack’s Conversion API, Meta gets no purchases. Do both back to back.
First, retire the old senders:
- In SamCart, click your profile icon, go to Settings > Tracking & Pixels, and turn off Meta Pixel Tracking.
- On the same tab, delete any Meta code from the header and footer script boxes. Keep the AnyTrack Tag.
- Open each product’s Advanced tab and delete any Meta code from the header, the footer, and Fire pixels/scripts after an order is completed.
- Go to Apps > Installed Apps and disconnect the Facebook app if you see it.
- Remove the Meta Pixel and any
Purchasescript from your sales page and your thank-you page. The Tag loads the Meta Pixel for you.
Then connect Meta in AnyTrack:
- Go to Tracking Pixels, add a new pixel, and click Connect Facebook Pixel.
- Follow the prompts to connect your Business Manager, the Meta Pixel your campaigns already use, and your ad account.
- Turn on Server-to-Server Tracking, then save.
Your campaigns keep optimizing on the same pixel and the same Purchase event. Only the sender changes. From here, the Tag loads your Meta Pixel and sends only PageView from the browser. Every InitiateCheckout and Purchase reaches Meta through the Conversion API, deduplicated by event ID. Your connected ad account syncs its spend into the Campaign Report, next to the revenue from your SamCart orders. That pairing gives you ROAS for every ad.
Step 5: Place a Test Order
Prove the signal before you spend on it.
- In Meta Events Manager, open your pixel’s Test Events tab and copy the test event code.
- In AnyTrack, open Tracking Pixels > your Facebook Pixel and paste the code into Test Event Code, in the Facebook Conversion API section.
- In SamCart, turn on Test Mode.
- Open your sales page, click through to the checkout, and complete a test order with the bump and the upsell, through to the thank-you page.
- In AnyTrack, open the SamCart integration’s Events Log and find one
Purchasewith the full order total. - In Meta’s Test Events tab, find one Server
Purchasewith the same value, usually within 30 seconds. - Delete the test event code in AnyTrack and turn off Test Mode in SamCart.
After your first real orders, open Purchase in Events Manager. It should come from Server only. A Browser Purchase means a second sender is still live, so go back to Step 4. If two senders reported your orders before, Ads Manager now shows fewer purchases, each at its full order value. That drop is the double count leaving, not lost sales. The Meta CAPI Test Mode guide covers the test tools in detail.
Step 6: Launch the Campaign Stack
Launch day. Two campaigns fit a $100-a-day funnel: one finds new buyers, and one wins back checkout abandoners. Both carry the UTM Tracking Template, so the Campaign Report ties every order to the ad that earned it.
- In AnyTrack, open Tracking Pixels > your Facebook Pixel > Ads Integrations and copy the UTM Tracking Template.
- In Ads Manager, paste it into the URL parameters at the campaign level of both campaigns.
- Back in Ads Integrations, click Verify Ads Settings. A green mark next to each campaign means the template is in place.
Prospecting: the front-end offer
Your main engine. It sells the $27 workshop and lets the bump and the upsell lift the order.
- Destination: your sales page, with the UTM Tracking Template at the campaign level.
- Budget: $80 of your $100 a day, in one campaign with one ad set and 3 to 5 ads, so Meta’s learning isn’t split thin. Hold the budget steady through the first week. A large budget change can send the ad set back into learning.
- Audience: Advantage+ audience, with buyers excluded: a website custom audience of
Purchase, 180-day window. - Event tracking: generates the
InitiateCheckoutevents that fill the abandoner audience and thePurchaseevents that fill the buyer exclusion. - Conversion objective: Sales, optimized for
InitiateCheckoutat launch. At $40 a sale, $80 a day buys about 14 purchases a week, far from the roughly 50 a week Meta’s learning wants. Checkouts come in faster. Move up toPurchaseat about 50 purchases a week, then to Maximize value of conversions when your volume meets Meta’s recommendation (see the loop below).
Retargeting: checkout abandoners
The warmest people in your account: they opened the checkout and left.
- Destination: your SamCart checkout page, with the same UTM Tracking Template. The Tag in SamCart collects the click there.
- Budget: the other $20 a day. The audience size is the ceiling, so raise the budget only as the pool grows.
- Audience: a website custom audience of
InitiateCheckoutminusPurchase, 7-day window. - Event tracking: fed by the
InitiateCheckoutevents from your SamCart checkout; generates thePurchaseevents that move buyers out of this audience. - Conversion objective: Sales, optimized for
Purchase. The audience is small and already warm, so it needs no ladder.
The Optimization Loop
Here’s what happens with nobody at the keyboard. A buyer orders the workshop and takes the upsell. SamCart sends the whole order when the funnel ends, and Meta gets one Purchase worth $124 with both products, tied to the ad that started it. The buyer drops out of the abandoner audience and into the buyer exclusion, so you stop paying to reach them. At $124, the order also counts toward your $100+ buyer audience, which gets your next offer and seeds your lookalike. Every new checkout refills the abandoner pool, and every order shows Meta one more example of who buys and how much they spend. Meta folds these events into delivery on its own schedule, not the second they arrive. Still, each order leaves your campaigns better informed than the one before.
Your part is a weekly pass with three tasks, and each one feeds that loop more or better signal:
- Measure. Open the Campaign Report and drill down to your ads. Read ROAS for each ad. 1.0 is your break-even line: at 1.0 or more, the ad pays for itself. Divide revenue by purchases for your AOV. A rising AOV means Meta is finding more bump and upsell buyers.
- Improve. Turn off ads still under 1.0 after they’ve spent about three times your cost per sale, a common test budget. Meta moves delivery to the ads above the line. When the campaign holds 1.0 or more for a week, raise its budget by about 20%, and repeat while ROAS holds. Tune the abandoner window as you go: shorter when the same people see your ads too often, longer when the pool runs dry. Then split off a 3-day
InitiateCheckoutminusPurchaseaudience as your hottest abandoner tier, with its own ad, and exclude it from the 7-day ad set. Scaling also moves prospecting up the ladder:- At about 50 purchases a week, switch the optimization event from
InitiateCheckouttoPurchase. Expect the ad set to re-enter learning. - At Meta’s recommended volume for value bidding, at least 100 purchases with at least 5 different values in 14 days, switch to Maximize value of conversions and test it for at least 3 weeks.
- At about 50 purchases a week, switch the optimization event from
- Expand. As ROAS holds and your budget grows, split your buyers by order value. Give each group its own campaign, with the UTM Tracking Template from Step 6:
- Upsell retargeting. Build a website custom audience of
Purchasewith a value under $50, 30-day window. These buyers bought the front end, with or without the bump, and skipped both offers. Show them the mini-course again, and excludePurchasewith a value of $97 or more, so buyers drop out once they take it. - Next offer to $100+ buyers. Build a website custom audience of
Purchasewith a value of $100 or more, 180-day window. In this funnel, $100 or more means the buyer took the upsell: they already said yes to a $97 offer. Show them your next, bigger one. - Lookalike of $100+ buyers. Once 100 or more people have ordered $100 or more, seed a 1% Lookalike Audience from the same audience in a new prospecting campaign. At $100 a day, about 15 buyers a month take the upsell, so plan this campaign for after you scale.
- Upsell retargeting. Build a website custom audience of
Each pass builds on the last. Your orders decide who Meta looks for next, and the buyers it finds raise the AOV that pays for the next round of ads.
Frequently Asked Questions
SamCart already sends my sales to Meta. Why add AnyTrack?
For the strategy, not the sale. AnyTrack carries the ad click from your sales page to the order, sends Meta one Purchase per order at its full value, and shows ROAS for every ad from the same orders. Keep one sender only. If SamCart's Meta integration stays on next to AnyTrack, Meta counts each order twice.
Do I need a developer for this setup?
No. You paste one Tag in two places, create one hidden field, and set up one webhook rule. Everything else is a toggle or a copy and paste.
Do bumps, upsells, and downsells count as separate purchases?
No. SamCart sends the whole order in one webhook when the funnel ends: the front end, the bump, and every upsell or downsell the buyer took. AnyTrack records it as one Purchase, and Meta gets one Purchase with the full total and every product.
When do I switch to value bidding?
When your purchase volume supports it. Meta recommends at least 100 purchases with at least 5 different values in 14 days. Test it for at least 3 weeks, first without a ROAS goal. Expect a higher cost per sale and fewer sales, and judge the test by ROAS and average order value.
My ads go straight to my SamCart checkout. Does this still work?
Yes. The Tag in SamCart opens the session on the checkout page and collects the fbclid and UTMs there. Skip the sales page part of Step 1 and do the rest as written.
Do I need Cross-Domain Tracking for my sales page and SamCart?
No. The Tag on your sales page adds the AnyTrack Click ID to the links that point to SamCart, and SamCart returns it with each order. One property covers both sites.
I accept PayPal. Will PayPal take the credit for my sales?
Not after you add paypal to Ignored Sources. Open Property Settings, select your property, open the Settings tab, and add paypal under Attribution Settings. The ad click then keeps the credit. The change applies to new data only.
Wrapping Up
Here’s what you shipped:
- One
Purchaseper SamCart order, with every funnel step in the full order value and AnyTrack as the only sender, so no order counts twice. - ROAS for every ad, so you keep the ones that pay for themselves.
- A prospecting and abandoner stack, with a ladder from
InitiateCheckoutto value bidding. - Audiences by order value: the upsell again for front-end buyers, and your next offer plus a lookalike for upsell buyers.
Chealsea Wierbonski, Group Product Manager at Google, also runs a business on SamCart and Meta Ads. In Chealsea’s words, AnyTrack “solved my biggest challenge”: “accurately tracking my entire funnel across Samcart and Meta Ads.”
The front end gets you the buyer. The bump and the upsell pay for the ad. Now Meta can tell the difference.
Explore Related Playbooks
Taboola Advertorial + ClickFunnels 2.0 Tracking
Taboola readers cross two domains before they buy. Stitch ad, advertorial, and ClickFunnels 2.0 into one tracked journey and send the full order value.
Track Affiliate Commissions in Google Analytics 4
Your commissions live in network dashboards while GA4 shows zero revenue. Stream every payout into Google Analytics 4, attributed to its true source.
Track Affiliate Commissions to Facebook Ads
The affiliate redirect hides which ad earned the sale. Close the loop with AutoTagged links and postbacks so Facebook learns which ad set converted.

