
Ads Manager shows 300 add to carts for the week. Shopify shows a thin column of orders. The founder asks what is broken, and the honest answer is "not sure yet".
When Meta ads get add to carts but no purchases, the cause sits in one of three places: your tracking, your checkout, or the traffic itself. Most advice jumps straight to trust badges and page speed. This guide starts one step earlier: prove the gap is real, then fix the part of the funnel that leaks.
Check tracking first, because a broken event can create a gap that does not exist. Meta counts what your pixel and Conversions API send it. Shopify counts what happened in your store. If the two disagree on add to carts, fix the counting before you touch the checkout.
Meta defines the three events plainly in its pixel reference:
| Event | When it should fire |
|---|---|
| AddToCart | When a product is added to the shopping cart |
| InitiateCheckout | When a person enters the checkout flow, before completing it |
| Purchase | When a purchase is made, on the thank you or confirmation page |
Anything that makes AddToCart fire more often, or stops Purchase from firing, widens the gap on paper. Checks 1 to 4 below catch those cases.
Use Shopify's own funnel as the referee. If Shopify also shows many cart additions and few completed checkouts, the drop-off is real. If Shopify shows far fewer cart additions than Meta reports, suspect tracking.
Shopify's behaviour reports split the funnel into four steps:
A few things to keep in mind when you compare:
Say, for illustration, Meta reports 400 add to carts from your ads in a week and Shopify shows 150 sessions with cart additions from all traffic. That is not a checkout problem yet. That is a counting problem, and checks 2 to 4 come first. If you want the full Meta vs Shopify reconciliation, our guide to Meta purchases not matching Shopify orders covers it.
A duplicate AddToCart event doubles your add to carts and halves your apparent add to cart to purchase rate. It is one of the most common causes of a fake gap.
Store owners report it in the open. One Shopify Community thread describes the add to cart event firing twice on a popular theme while a default theme fired once. Another describes add to cart firing on every page view.
How to test it:
Scripts can also break the cart in the other direction. In one thread, a store with 18 add to carts, 12 checkouts and 0 purchases found that a third-party analytics script was causing cart errors. Removing it fixed the add to cart bug. If the pixel itself looks broken, start with our Meta pixel not firing on Shopify checklist.
Yes, it can. Many Indian D2C brands run a third-party checkout such as GoKwik, Shopflo or Shiprocket Checkout, and these change where checkout and purchase events come from.
CustomerLabs' GoKwik setup guide explains the split. Page view, view content and add to cart come from Shopify's scripts. Initiate checkout, add payment info and purchase come from GoKwik's scripts. The guide says this "causes a break in user journey". If the checkout provider's events never reach Meta, or reach it without the click details, Meta sees the add to cart and loses the purchase.
The reverse also happens. Aimerce noted in August 2026 that if the checkout provider sends Purchase to the Meta pixel while your Shopify setup also sends it, the same order counts twice. And WATI's help centre notes that GoKwik, Shopflo and Zecpe bypass Shopify's default checkout flow, so tools that read Shopify's abandoned checkouts cannot see these shoppers.
What to check:
They need a matching event ID. If you send the same event from both the browser pixel and the Conversions API, Meta can only merge the two copies when they share a key.
Meta's deduplication guide recommends matching the event_id and event_name on both copies. When Meta receives the same event_id and event_name within 48 hours, it discards the later copy. Without that match, or the alternative fbp and external_id method, both copies stay.
Duplicated AddToCart with a clean Purchase gives you exactly the pattern in the title: lots of add to carts, few purchases. In Events Manager, open each event and compare the browser and server counts and the deduplication status.
If tracking holds up, the drop-off is real, and most of it happens in checkout. Across 50 studies, Baymard puts the average documented cart abandonment rate at 70.22% (page updated October 2026), so some loss is normal. Your job is to find the avoidable part.
Baymard's survey of US shoppers lists the reasons people gave for abandoning during checkout, leaving out those who were just browsing:
| Reason | Share |
|---|---|
| Extra costs too high (shipping, tax, fees) | 40% |
| Delivery too slow | 20% |
| Did not trust the site with card details | 19% |
| Site wanted an account | 18% |
| Checkout too long or complicated | 17% |
| Website errors or crashes | 17% |
| Could not see total cost up front | 12% |
| Card declined | 10% |
| Not enough payment methods | 9% |
The survey covers US shoppers, so treat it as a direction, not an Indian benchmark. Here is how the same causes show up in an Indian checkout.
A shipping fee or COD charge that appears only on the payment screen is the classic leak. Razorpay's checkout guide (updated August 2026) gives the example of a ₹150 shipping charge at the final step breaking trust, and recommends showing shipping on the product page or cart drawer. If your ad says "free shipping above ₹499", check that the cart says the same thing.
A shopper who chose UPI and hit a failure often does not come back. Razorpay lists UPI failures when the UPI Intent flow is not enabled, which forces shoppers to type a UPI ID by hand. Check your payment gateway's failure report next to Shopify's completed checkouts. If you restrict COD by pincode or order value, check that the rule is not blocking the shoppers your ads target. Our guide on reducing RTO on COD orders covers partial COD and pincode rules in detail.
Every extra step costs completions. Baymard's survey lists forced account creation at 18%. Razorpay recommends guest checkout. If your checkout asks for an OTP before showing the price, test it on a slow phone connection and see how long the step takes.
The fastest way to see all of this is to place an order yourself from an ad on your phone, inside the Instagram app, on mobile data. Note every point where you would have quit.
If the campaign's performance goal is add to cart, Meta finds people who add to cart. As Meetsocial puts it, the algorithm then chases add to carts, not purchases.
Brands often switch to add to cart because a new pixel has too few purchases to optimise on. That can make sense for a short spell. But if the campaign has run for weeks on add to cart, a high add to cart count with few orders is the campaign doing what you asked. Check the conversion event at the ad set level, then read our guide on Meta ads learning limited before you switch, so the change does not throw the ad set off course.
Some add to carts come from people researching price and delivery, not buying. In a Shopify Community thread about a furniture brand with high add to carts and few purchases, replies pointed out that shoppers often add to cart just to check the total and delivery cost. Baymard's survey adds that 42% of shoppers who abandon say they were just browsing.
Bot traffic is the other suspicion. Niblin, which sells bot alerts, notes that Meta does not confirm bot traffic and suggests comparing Meta's add to carts with Shopify's. Treat that as a hypothesis to test, not a diagnosis. Signs worth checking:
If the add to carts come from real shoppers who drop at checkout, go back to check 5. If they come from one odd placement, exclude it and watch the next 3 days.
Match what you see in Meta and Shopify to the row below, then start with that row's first fix.
| What you see | Likely cause | First fix |
|---|---|---|
| Meta add to carts far above Shopify cart sessions | Duplicate AddToCart or missing dedup | Test one add to cart; fix event_id matching |
| Shopify shows orders, Meta shows few purchases | Third-party checkout not sending Purchase to Meta | Test order through the one-click checkout |
| Shopify also shows high carts, low checkouts | Real checkout friction | Show shipping early; check payment failures |
| High add to carts on an add to cart goal | Optimisation event | Move to purchase when volume allows |
| Spike from one placement, no checkouts | Low-intent or suspicious traffic | Exclude the placement and retest |
Watch Meta, Shopify and your payment data side by side every day, so a gap shows up before a week of spend goes into it. The hard part of this problem is that the evidence sits in 3 places: Meta, Shopify and your payment gateway. Clevrr AI connects Shopify, Meta Ads and Razorpay in one place and checks them every morning. When add to carts climb while orders stay flat, Klev, Clevrr's AI agent, flags the gap and shows which side it comes from: the ads, the store or the payments. Clevrr Pixel, its first-party pixel, connects shopper sessions to campaigns and creatives, so you can see which ads bring carts that never convert.
Most often, shoppers leave at checkout because of a surprise cost, a payment failure or an extra step such as a forced login. Before you fix the checkout, confirm the gap is real: compare Meta's add to carts with Shopify's sessions with cart additions, and test that the add to cart event fires only once per click.
Sometimes. A duplicate AddToCart event, pixel and Conversions API events without a matching event ID, or a one-click checkout that never sends Purchase to Meta can all create the pattern. If Shopify's funnel shows far fewer cart additions than Meta, or Shopify shows orders Meta does not, start with tracking.
Only for a short period, when your pixel has too few purchases to optimise on. A campaign set to add to cart finds people who add to cart, not people who buy. Once purchase volume allows, move the campaign to purchase and give it time to settle before you judge results.
It can. With a third-party checkout, Shopify's scripts send the add to cart while the checkout provider's scripts send checkout and purchase events. If those events never reach Meta, purchases go missing. If both send Purchase, orders double count. Place a test order and check Events Manager.
When you see Meta ads add to cart but no purchase, run the checks in order. Prove the gap with Shopify's funnel, rule out duplicate events, checkout splits and missing deduplication, then fix the checkout leaks your shoppers hit. Only then judge the campaign and the traffic.
Want the gap flagged the morning it opens? Start free with 500 credits.
Join hundreds of D2C brands using Clevrr AI to automate their growth and efficiency.
Join 500+ D2C founders using Clevrr AI to automate their operations and scale faster.
Get Started Free