Pick a creator to open the conversation.
Same ranking a creator opens on their own Leaderboard tab — first name, photo, badges, and commission earned in the period, active creators only. Creators now see this whole board (owner 2026-09-23) — there is no top-10 cut any more, so what you read here is exactly what they read. Commission counts each creator's own rate on their code and link sales plus their rate on ad revenue their videos earned, and a creator Into Month 2 🚀✨ is on the higher pair — so the order can differ from ad spend or sales volume.
All time is the board everyone opens on, and its commission and sales are the same figures as the per-creator table on Overview. The dated windows read momentum, not standing - a creator who started today can out-earn one who has been running a fortnight.
The 10% pays on every store sale carrying the creator's discount code or their link — the code on its own counts, they don't have to send the customer through the link. The one exception is traffic we put spend behind: if the order's UTMs show it came from an ad, it pays no 10%, because that revenue already pays them the 1% below. TikTok organic counts — that's where the creators post, so it's their audience — but a TikTok post we boost does not. The 1% on ad revenue has no ROAS threshold.
Comma-separated, case-insensitive. An order is ad-driven when its utm_source is in the source list (platforms we only ever appear on by paying) or its utm_medium is in the medium list (we paid for it, whatever the platform).
This is what separates TikTok organic from TikTok ads. A creator's own post arrives as utm_source=tiktok with an organic or empty medium, so it pays. A boosted one carries utm_medium=paid (or utm_source=tiktokads), so it doesn't. Never add plain tiktok to the source list — it would cut creators out of their own organic sales.
You pause ads in Meta Ads Manager yourself — the hub has read-only Meta access and the daily sweep mirrors each ad's status automatically (paused in Meta → "Turned off" here, running again → back to Live). Turning off freezes figures — accrued commission stays owed and payable; the creator gets a gentle notification, never a verdict.
Wise builds a template per currency corridor, so its headers are not fixed. Download your own template once from wise.com/batch/templates, and if a header differs, correct it here — our_field = Wise header, one per line. Only the right-hand side should change.
Changes apply retroactively to what dashboards display — commissions are always computed live from the current rules.
Paste rows as JSON array or CSV with columns: ad_name, date, spend, impressions, clicks, purchases, revenue, ad_status (ad_status optional — the ad's Meta status, mirrored automatically: not ACTIVE → Turned off, ACTIVE again → Live). Rows are matched to videos by the CH-… code inside the ad name. Re-ingesting a day overwrites it (safe to re-run).
Every order carrying a creator's discount code is attributed to them automatically. Their affiliate link is Shopify's own /discount/CODE URL, so it applies the code itself — link sales and code sales are the same signal, and both pay. Orders whose UTMs say we paid for the click pay the 1% ad rate instead of the 10% (paying both would charge us twice for the same media). A used code never pays nothing — it is organic or an ad sale, never zero. Revenue is the order subtotal after discounts, before shipping and tax. The last few days are re-swept on every run, so refunds and edits correct themselves.
For a sale a creator clearly made where nothing in the order points at them — the customer forgot to type the code, or the UTMs were lost. Name the order and the creator, and every sweep from now on attributes it. Do not correct the day by hand instead: the hourly sweep rebuilds each day from Shopify and would erase that within the hour. Saving looks that one order up immediately and tells you what it pays, or that it could not be found.
One row per order, exactly as the hub stored it, with what it pays. Reconcile a creator against Shopify by counting their rows. Paid is what that order adds to their commission; a row paying 1% came from traffic we bought, 10% is their own. If Total and Sum of rows ever differ, the totals are being built from something other than these orders and that is a bug — tell me.
Rows: creator, date, orders, revenue — creator can be their slug, @handle, name, or their discount code. Count every order carrying the creator's discount code or their link — the code on its own counts. Then drop the orders whose UTMs say we put ad spend behind them (the values set in Rules → What counts as "came from an ad"); those already pay the creator 1% as ad revenue. TikTok organic is never dropped — that's the creators' own posts; only boosted TikTok traffic is. Optional sources breaks orders down per link (utm_content: store / product), and optional excluded reports what you filtered out. Re-ingesting a day overwrites it.
Creator sales are swept from Shopify by this server, hourly. Ad numbers are pushed in daily by the creative-engine winner scan, because this server holds no Meta credential:
Approved videos queue per product and wait for the launch day — every few days, everything approved since the last run goes live together instead of an ad set starting the moment one batch happens to fill. On that day each waiting batch uploads its videos to AdNova under their full ad names, one ad set per batch is duplicated from that product's EXCLUDING AUDIENCE template (that duplication is what carries the campaign, the UK + US + AU targeting and the customer exclusions), and each video becomes one ad per landing page — all off the same page, all starting 00:01 the next day. A batch that reaches the size limit stops taking videos and a fresh one opens behind it; both go on the same launch day. Videos keep syncing to Drive on approval, exactly as before.
Each batch runs one copy set, so a batch is the unit of the test and the read stays clean. A set that has never run always gets the next slot; after that the best measured ROAS wins, except every 3rd batch, which goes to the least-used set so the pool keeps learning.
Creator batches are numbered CNW#1, CNW#2, … — their own namespace, because a batch is whatever five creators filmed, not a scripted concept with a hypothesis. Brief DCT numbers run separately and the two can never collide.