TL;DR
A store at 12 orders a week cannot feed a purchase-optimized Meta ad set, which stabilizes at a minimum of 50 events over a 7-day period at the ad set level [1]. The practical move is a proxy event further up the funnel, and the choice is constrained by what each channel can actually receive. Begin-checkout exists on Meta, TikTok, Pinterest, Snapchat and OpenAI Ads. Reddit's conversions API has no begin-checkout event, and Google Ads takes purchase and nothing else. Add-to-cart is the widest option available, and it quietly changes what you bid against, because add-to-cart value is cart value rather than order value.
Key Takeaways
- Meta's published yardstick is 50 optimization events over a 7-day period, measured at the ad set level, and Meta says missing it can increase your cost per result [1][2].
- Meta's own Marketing API exposes
dynamic_lp_conversions_thresholdon the learning stage object, so 50 is a rule of thumb rather than a fixed gate [3]. - TikTok's number is not 50. Its help documentation says volatility typically starts to decline after about 25 campaign results or 7 days [4].
- Google Ads has no event threshold to clear at all. It has a primary versus secondary switch, where primary actions are used for bidding as long as the standard goal they are part of is used for bidding, and secondary actions are for observation only when they sit in a standard goal [5].
- Begin-checkout is the strongest proxy event, but no begin-checkout or initiate-checkout event exists on Reddit's conversions API, so the Reddit ladder stops at add-to-cart.
- On Google Ads at low volume the levers are the bid strategy and which conversion action counts as primary, because there is no funnel event to switch to.
- Switch back to purchase once the ad set clears its platform's threshold on purchases in a rolling 7 days, and expect a fresh learning period when you do.
Start with the channel where the question has no answer
Google Ads breaks the premise of this article, so it is worth getting out of the way first.
Every other ad platform in a Shopify stack will accept a mid-funnel event and optimize toward it. Google Ads, in a server-side setup, receives purchase. There is no add-to-cart sender and no begin-checkout sender behind it, so "optimize on add-to-cart instead" is not a configuration you can reach from the tracking side. What Google Ads gives you instead is a different dial: conversion actions are split into primary and secondary, where primary actions "are conversion actions that are reported in the 'Conversions' column in your reports and used for bidding as long as the standard goal they are part of is used for bidding", and secondary actions are for observation only when they sit in a standard goal [5].
So on Google Ads a low-volume store tunes which conversion action is primary, whether the bid strategy is value-based or volume-based, and how long it waits before judging either. The complete Google Ads conversion tracking guide covers the setup side. Everything below applies to Meta, TikTok, Pinterest, Snapchat, Reddit and OpenAI Ads.
What counts as low volume on each platform?
There is no industry threshold. Each platform publishes its own, they disagree, and two of them are dated.
| Platform | Published threshold | What the platform says it means |
|---|---|---|
| Meta | 50 events over 7 days, per ad set [1] | The learning period "stabilizes with a minimum of 50 events over a 7-day period", and learning happens at the ad set level [1] |
| Meta (API view) | A per-ad-set dynamic value [3] | The learning stage object carries dynamic_lp_conversions_threshold and dynamic_lp_days_threshold, plus a status of LEARNING, SUCCESS or FAIL [3] |
| TikTok | About 25 campaign results or 7 days [4] | "Typically, volatility starts to decline after about 25 campaign results or 7 days from when the campaign enters the learning phase" [4] |
| Google Ads | None | Primary actions are used for bidding as long as the standard goal they are part of is used for bidding, and secondary actions are observation only when they sit in a standard goal [5] |
| Reddit, Snapchat, Pinterest, OpenAI Ads | Not published | No first-party minimum-conversion figure found on their own documentation |
The Meta rows are the interesting pair. Meta's merchant-facing guidance says 50, and its budget advice is built from that number: "not meeting the minimum events threshold can increase your costs per result" [2]. Meanwhile Meta's API reference exposes a dynamic conversions threshold per ad set [3]. Both are Meta's. Plan the budget against 50, and treat the API field as the reminder that your ad set may want more or fewer.
For the four platforms with no published figure, I am not going to invent one. Nothing on Reddit's, Snapchat's, Pinterest's or OpenAI's own documentation states a minimum, and a made-up number here would be the most quotable wrong thing in the article.
Which proxy events can each channel actually receive?
This is the part that gets skipped, and it is the part that decides your answer. The event sets are not symmetric across platforms, so the same "switch to begin-checkout" advice is executable on some channels and impossible on others.
| Channel | Funnel events available below purchase |
|---|---|
| GA4 | view_item, view_item_list, add_to_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info, search |
| Meta | ViewContent, ViewCategory, AddToCart, InitiateCheckout, AddPaymentInfo, Search |
| TikTok | ViewContent, AddToCart, InitiateCheckout, AddPaymentInfo, Search |
| view_content, view_category, search, add_to_cart, initiate_checkout | |
| Snapchat | VIEW_CONTENT, LIST_VIEW, SEARCH, ADD_CART, START_CHECKOUT |
| OpenAI Ads | contents_viewed, items_added, checkout_started |
| ViewContent, Search, AddToCart. No begin-checkout event exists | |
| Google Ads | None. Purchase only |
Read the bottom two rows together and the ladder becomes concrete. Add-to-cart is the widest rung, available on Meta, TikTok, Pinterest, Snapchat, OpenAI Ads, Reddit and GA4. Begin-checkout is the better rung when you can reach it, because it sits closer to the order, and it exists everywhere except Reddit and Google Ads.
If you are running Reddit at low volume, the ladder stops at add-to-cart and that is the whole decision. Reddit's conversions API setup guide covers what is there.
The decision table by weekly order volume
Run the arithmetic on an illustrative store doing 12 orders a week. That is 12 purchases in 7 days across every channel combined, before you split them between two Meta ad sets and a TikTok ad group. One ad set might see four. Against Meta's 50-event yardstick, four is not a slow start, it is a permanent stall, and Meta's own status enum has a name for where that ad set ends up: FAIL, the status for an ad set that lacks sufficient results to exit the learning phase [3].
| Weekly orders (whole account) | Meta and TikTok | Google Ads | |
|---|---|---|---|
| Under 10 | Add-to-cart, one ad set only, one creative set | Add-to-cart | Purchase as primary, volume-based bidding, judge over a longer window than a single week |
| 10 to 25 | Begin-checkout, still consolidated into one ad set | Add-to-cart | Purchase as primary, keep secondary actions out of the bidding goal [5] |
| 25 to 60 | Begin-checkout, or purchase if a single ad set is taking most of the spend | Add-to-cart | Purchase as primary |
| Over 60 | Purchase, per platform threshold, with begin-checkout kept as a secondary signal | Purchase | Purchase as primary |
Consolidation matters more than the event choice at the bottom of that table. Meta counts events per ad set [1], so three ad sets at 40 events each clear nothing while one ad set at 120 clears comfortably. Splitting a low-volume account by audience is the most common way merchants make their own threshold problem worse, and no event choice repairs it.
Why delivery reliability is not what makes this hard
There is a tempting explanation for why low-volume optimization goes badly, and it is wrong: that the funnel events are flaky because they come from the browser.
In a server-side Shopify setup they mostly do not. Purchase is built from the orders/create webhook, so it exists whether or not a browser stayed alive through the thank-you page. Funnel events are also delivered server-side to every ad platform, which leaves page views as the genuinely browser-delivered hit. Browser events respect Shopify's Customer Privacy API signals, which is the one place a consent decision changes what leaves the store.
So the proxy question really is a question about availability and volume, not fragility. You are not choosing add-to-cart because purchase might get lost. You are choosing it because 12 purchases a week is not enough signal for a bidding algorithm, and the add-to-cart count for the same week is several times larger.
What does optimizing on a proxy cost you?
An optimizer gets very good at the thing you ask for. Ask for add-to-carts and you will get cheap add-to-carts, from people who add to cart.
There is a second cost that is easier to miss. Add-to-cart value is per-unit price multiplied by quantity, so a value-based bid strategy that used to bid against order value is now bidding against cart value. Cart value is systematically different: no shipping, no tax, no post-purchase upsell, and no correction for the carts that get abandoned. If your ROAS target was calibrated on orders, it is now measuring something else with the same name. Why your add-to-cart value is wrong on Shopify goes through where those numbers come from.
The mirror-image case is worth a glance if you are growing fast, because the constraints invert at scale: conversion tracking for high-volume stores is the same decision made from the other end.
How do you know when to switch back?
Use the platform's own number on the event you actually want, not on the proxy.
For Meta, that means checking whether the ad set produced 50 purchases in the last rolling 7 days [1]. Not 50 add-to-carts. Not 50 across the account. If it did, the ad set can carry purchase optimization on its own. For TikTok, the same check against about 25 campaign results [4]. For Google Ads there is nothing to clear, so the switch never comes up.
Two things happen when you make the change. Meta says that "making changes to your ad set can trigger a new learning period" [1], and changing the optimization event is one of those changes, so budget a week of unstable delivery. And your reported cost per result will jump, because you moved from a cheap event to an expensive one. The first is a real cost. The second is arithmetic, and the number to watch through it is blended cost per order from your own Shopify reports rather than the platform's cost per result.
Keep a note of the date you switched. When somebody asks in three weeks why performance changed, that date is the cheapest evidence you have.
FAQ
Can I optimize on add-to-cart and still report on purchases?
Yes, and you should. Optimization event and reporting event are separate choices in every platform here. Send the full funnel plus purchase, optimize the ad set on add-to-cart or begin-checkout, and judge the campaign on orders from Shopify.
Why does my Meta ad set say it is still learning after two weeks?
Because the learning period is measured on events at the ad set level, and 50 over 7 days is Meta's stated stabilization point [1]. Two weeks at 15 events never gets there. Meta's API also exposes a dynamic per-ad-set threshold, so your specific ad set may need a different number than 50 [3].
Is begin-checkout always better than add-to-cart?
It is closer to the order, so it correlates better with buyers, but it is also rarer. If begin-checkout volume is under the platform threshold too, add-to-cart is the working choice. On Reddit the question does not arise, because no begin-checkout event exists there.
Does TikTok use the same 50-event rule as Meta?
No. TikTok's own help documentation puts the point where volatility starts to decline at about 25 campaign results or 7 days from entering the learning phase [4]. Carrying Meta's number across platforms is one of the more common planning errors.
What about Snapchat, Pinterest and OpenAI Ads thresholds?
They do not publish one that I could find on their own documentation. Use the same funnel logic, watch delivery stability directly, and do not apply Meta's 50 to them as if it were a standard.
Get the funnel events flowing before you pick one
You cannot optimize on begin-checkout that never reaches the platform. WeltPixel Conversion Tracking sends purchase server-side to nine integrations, and the funnel events to every one of them except Google Ads, with the event set as a per-pixel toggle list and a Minimal preset that ships begin-checkout and purchase only, which is exactly the shape a low-volume store wants. Install it from the Shopify App Store listing [6], turn on the funnel events for the channels above, then choose your optimization event inside the ad platform where that choice lives.
One caution on sequencing: pick the event before you scale the budget, not after. Meta counts from the last significant edit [3], and a mid-scale switch resets the clock on the ad set you were about to judge.
Sources
- Meta, "Optimize your ad campaign" (learning at the ad set level; 50 events over 7 days; ad set changes can trigger a new learning period), developers.meta.com/horizon/resources/optimize-ad-campaign/, last updated April 8, 2026, accessed September 10, 2026
- Meta, "Launch your ad campaign" (missing the minimum events threshold can increase costs per result), developers.meta.com/horizon/resources/launch-ad-campaign/, accessed September 10, 2026
- Meta Marketing API v26.0, AdCampaignLearningStageInfo (
conversions,status,dynamic_lp_conversions_threshold,dynamic_lp_days_threshold), developers.facebook.com/docs/marketing-api/reference/ad-campaign-learning-stage-info/, accessed September 10, 2026 - TikTok Ads Help Center, "Learning phase" (about 25 campaign results or 7 days), ads.tiktok.com/help/article/learning-phase, last updated June 2026, accessed September 10, 2026
- Google Ads Help, "Primary and secondary conversion actions", support.google.com/google-ads/answer/11461796, accessed September 10, 2026
- WeltPixel Conversion Tracking, Shopify App Store listing, apps.shopify.com/weltpixel-conversion-tracking, accessed September 10, 2026