These are not benchmarks of seller performance. They are properties of the platforms themselves, established by reading their reporting and their APIs directly, and they are published because they change how every other number on this page must be read.
Shopee TH
Shopee credits a conversion to the hour the ORDER is placed, not the hour of the click
The seven-day attribution window is an eligibility window, not a timing one: a click on day t followed by a purchase on t+4 lands entirely on t+4. A past hour’s ad metrics therefore do not grow later as conversions arrive. The practical consequence is that in any hour where the platform concentrates checkout, ads-attributed orders spike and cost per attributed order falls — and the hour looks like the best money the seller spent, whether or not the ads did anything.
Evidence: 100% of attributed-GMV rows checked (180,695 rows across every broad-attributed hour on the audited shops) sit in an hour that also carries a shop order in that same shop-local hour.
Shopee TH
Shopee’s broad attribution is multi-touch and cannot be de-duplicated
Broad credits any purchase within seven days of a click to every campaign the buyer touched. It over-counts distinct orders by roughly 1.1× to 2.9×, and because ads reporting carries no order key anywhere, the duplication cannot be removed from campaign aggregates. Any ROAS computed on this basis is an upper bound. Spend, by contrast, is exact.
Evidence: Audited on production shops against the order tables; the over-count range is measured, and the absence of an order key is a property of the reporting surface itself.
Shopee TH
A Shopee daily budget of 0 means UNLIMITED, not “off”
The legal domain of a daily-budget write is {0} ∪ [100, ∞) in THB, and 0 is a trap: it removes the cap rather than the campaign. Anything strictly between 0 and the 100 THB platform minimum is rejected outright with a range error, so a 40 THB budget is not a small budget — it is an API error. “Stop spending” has no budget representation at all; the only way to express it is a pause.
Evidence: Established against the live campaign API, including the specific rejection error returned for the (0, 100) interval, and confirmed by a production incident in which a “stop this campaign” push written as a budget of 0 let the campaign run uncapped.
Shopee TH
An accepted daily budget is a floor, not a cap
On a shop with Campaign Surge enabled, Shopee raises a campaign’s daily budget by 20% each time the campaign exhausts it, up to five times — a hard ceiling of 1.2⁵ = 2.48832× the number the seller wrote. A second family exists at 30% a step, 1.3⁵ = 3.71293×. The toggle is shop-level and is distinct from wallet auto-recharge, which never touches a campaign budget.
Evidence: Read from the shop toggle endpoint and measured against realised spend. The toggle is enabled on roughly six in ten of the 60+ shops whose account state we ingest.
Shopee TH
Shopee stores a daily budget at coarser precision than you send it
A fractional budget is a number you can send but can never read back unchanged. Anything that pushes a budget and then reads the campaign back to confirm the write will see its own fractional intent against the platform’s rounded copy, and an exact-equality check will call that difference drift on a write that in fact succeeded.
Evidence: Measured on a live campaign write: a budget pushed with four decimal places was stored rounded to two, and the read-back returned the platform’s rounded copy rather than the value sent.
Shopee TH
Thai Shopee ad spend is almost entirely auto-bid, all-placement
99.4% of campaign spend on the panel is auto-bidding and 99.6% is all-placement. This is a product constraint rather than a fleet preference: sellers cannot set a CPC bid any more. The steering lever that remains is a target ROAS, which 86.7% of spend carries.
Evidence: THB 42.9M of campaign spend across the intraday panel, read from campaign settings.
Shopee TH
Shopee’s bundle-deal redemption flag tags only about a third of qualifying orders
The flag marks about 33% of the orders that actually meet a deal’s qualification threshold. Comparing a units-based baseline against a flag-based during-rate therefore makes a bundle deal look as though it reduced qualification. Measure both sides in units, or the sign of the comparison flips.
Evidence: Historical deals across 60+ shops, comparing orders that meet the threshold against orders the platform tags as redeemed.
TikTok Shop TH
TikTok Shop hourly ad reporting cannot support intraday analysis
Two independent defects, either of which alone is disqualifying. Clicks are zero on all 1,669,959 hourly rows, although the sibling daily table carries 3.3M clicks over the same period — so CPC and CVR are simply unavailable at hour grain. And 94.1% of all expense is stamped at hour 0, while hours 17–23 carry 0.0% of spend and 5.2% of attributed orders. Seven consecutive hours cannot produce orders on zero spend: the hour dimension is not a real clock. Lazada publishes no hourly ad fact at all, so the cross-platform question cannot be answered there either.
Evidence: The tell is row concentration: TikTok’s hour-0 row count is 10.80× the median hour, against 1.01× for the equivalent Shopee table, whose every hour carries the same row count and whose spend concentration at hour 0 is 9.4%. The TikTok daily totals are correct — hourly expense reconciles to daily at exactly 1.000 per shop-day — so the table is safe at day grain and unsafe at hour grain.