Marketing is how you reach people. Grow is how you find out whether it worked.
Marketing has four tabs: Create (write posts, make visuals) · Reach (broadcasts) · Offers (every way you give money off) · Links (tracking).
Grow has four: Overview · Customers · Traffic · Earnings.
Almost nothing in this chapter is plan-gated. Every discount engine, every broadcast, every chart and every customer record is the same on Free as on Pro. What Free limits is how much AI you can spend — and the one structural exception, video.
The reach ladder: what each rung can actually touch
Three ways to reach out, three different consent rules. Which rung you can use is decided by how the customer reached YOU — never by your plan.
1 · Message one customer
From an order. Reaches that exact person on the channel they last used. This is relationship mail, not marketing, so it honours only a hard unsubscribe — and drafting it is free and un-metered on every plan.
WhatsApp, Instagram, Messenger
Only inside 24 hours of THEIR last message. Outside it Meta rejects a freeform send, so the channel shows as blocked and you fall back to email rather than failing silently.
No live channel at all
You get Copy instead of Send. Nothing is lost — you paste it wherever you actually talk to them.
2 · Re-engage a cohort
From Customers, by email, the moment you pick any segment. Up to 500 people. The cohort is the unit of action — there are no per-person toggles, so you can't exclude one name.
Silence counts as yes
Someone who was never asked the marketing question is INCLUDED — the reasoning being that they already bought from you. Only an explicit opt-out is held back.
A hard unsubscribe always wins
Checked when you send, and re-checked again at the moment each mail actually goes out — so someone who unsubscribes in between still isn't emailed.
3 · Broadcast
Telegram only, up to 1000 people, once every 24 hours. Reaches anyone who has ever messaged your Telegram bot — there's no consent question to answer, because starting a bot IS the opt-in.
There is no WhatsApp broadcast
Meta's 24-hour window makes one impossible without paid message templates. That's a rule of Meta's, not a setting of ours, and it isn't coming as a toggle.
STOP is a whole word
'stop', 'unsubscribe' and '/stop' opt someone out of your broadcasts forever. 'stop please' does not — it just reads as a message.
Write a post
The problem — Blank caption box, forty products, and no idea what to say about any of them. You know the product better than anyone; that's exactly why writing about it is hard.
Where
What you'll see
A list of your published products, each with a Create promo button. Tap one and you land on that product's own promo page: an angle box, a generate button, and every pack you've made for it, newest first.
Each pack is a card headed by its angle — or "General promotion" if you left the angle blank — and the date. Inside: Captions, Hashtags, and a Short blurb, each with its own copy button that flips to "Copied ✓" for a second.
Set it up
- Pick a published product and press Create promo.
- Optionally type a marketing angle — "weekend sale", "new flavour", "Hari Raya special". Up to 200 characters. Leave it blank for an evergreen promo.
- Press Generate promo content. You get 3 captions, 8–12 hashtags and a one-line blurb, written in your shop's voice for a Southeast Asian audience.
- Edit anything in place, or press Generate another pack for a different take.
Free and ProDraws your monthly owner-tools AI allowance — 5 actions on Free, 40 on Pro.
Details worth knowing
- That allowance is shared. The same 5-or-40 covers your co-pilot, promo packs, the Studio's brief drafting, and the growth insight cards. It is not 5 promo packs and 5 co-pilot questions.
- Only published products appear here. Drafts don't — there's no point writing a caption for something nobody can buy. (The Studio is more relaxed; see below.)
- The page shows your 12 most recent packs per product. Older ones aren't deleted, they just stop being listed — nothing you generate is ever thrown away.
- Everything is grounded in your real product facts. It's told never to invent ingredients, features, awards or discounts. If a claim isn't in your product, it won't appear in the caption.
- Hashtags come back without the
#. They're cleaned on the way in and on the way out, so a copy is always paste-ready.
Works with — Marketing Studio, Plan & billing
Marketing Studio
The problem — You have one phone photo and no budget for a shoot, and everyone else's feed looks professional.
Where
What you'll see
A product picker with a thumbnail and price, a Type row — Image · Voiceover · Video — and a brief box with a ✨ Draft with AI button beside it. Underneath, a gallery of everything you've generated for that product.
At the bottom, a line telling you where you stand — "Pro plan · 50 images, 5 videos, 20 voiceovers per month." Read it carefully: that's your cap, not your remaining balance.
Set it up
- Pick a product.
- Pick Image, Voiceover or Video. For a voiceover, pick a language.
- Press ✨ Draft with AI to get an editable brief — or just write your own, up to 2000 characters. For a voiceover the box is called Script.
- Press Generate. Images and voiceovers land in under a minute; video takes a few minutes and the card says so while it works.
- For an image you like, Use as product image adds it to that product's storefront gallery.
Free (limited)a small monthly taster of images and voiceovers, and no video. Pro — 50 images, 5 videos, 20 voiceovers per month.
Details worth knowing
- The three caps are independent. Running out of video doesn't touch your images. A single clip costs roughly a thousand images to make, which is exactly why they don't share one budget.
- Video on Free is a structural zero, not a small number. The button is disabled and says "Video generation is a Pro feature."
- Drafts are fair game here. Unlike Write a post, the Studio offers any product that isn't archived — so you can make the visuals before you publish.
- Voiceovers speak 8 languages — English (US and UK), Bahasa Indonesia, Bahasa Melayu, Thai, Vietnamese, Filipino and Mandarin. The script is drafted in the language you pick.
- Your allowance is checked before a job starts, so an exhausted cap never leaves you waiting on something that was never going to finish.
- Drafting the brief costs an owner-tools action — the same pool as Write a post — and is counted separately from the generation itself.
- A product gallery holds 12 images. At 12, Use as product image refuses with "That product already has 12 images." It adds to the gallery; it doesn't replace your main photo.
Works with — Generate a photo on the product editor
Broadcasts
The problem — New drop, restock, weekend special — and no way to tell everyone at once.
Where
What you'll see
Three audience chips, each with its live count next to it: Past buyers (the default), All Telegram contacts, and Choose people. Then a message box with a character counter, and Preview & send — which shows you the exact text your customers will receive, footer included, before anything goes out. Below it all, your recent broadcasts.
Set it up
- Choose your audience. Past buyers means anyone with an order that reached paid or beyond.
- For Choose people, pick from a list showing each contact's order count and last order date — past buyers sort first, then most recent, then name. There's a search box and a Past buyers only toggle.
- Write the message — 5 to 3500 characters.
- Press Preview & send, read it, then send.
- History below shows audience, sent, failed and when.
Free and ProNo plan gate, on either tier.
Details worth knowing
- The 24 hours starts when you press send, not when delivery finishes — and a broadcast that reaches nobody still burns the window. If you sent to an empty segment by mistake, you're waiting a day. The warning tells you how long: "the next one can go out in about 3 hours."
- Every broadcast gets
— Reply STOP to unsubscribe.appended. You don't write it and you can't remove it. It's in the preview so you can see it. - STOP has to be the whole message.
stop,unsubscribeand/stopopt someone out; "stop please" doesn't. Anyone opted out is excluded from the counts, the picker, and the send. - Opting out of broadcasts doesn't mute support. They can still message you and still get replies — it only stops proactive marketing.
- Sending is durable. It's paced to stay under Telegram's rate limits and resumes where it left off if it's interrupted, so a crash mid-send can't re-blast everyone.
- "Failed" only shows when it's above zero. A clean send just reads
Past buyers · 84 sent.
Comment → DM auto-reply
The same review gates Instagram and Messenger as inbox channels, and posting a promo pack straight to Instagram. See Instagram & Messenger.
Which offer should I use?
The problem — Three different discount engines, overlapping mechanics, and no obvious reason to pick one over another. The honest answer is that cost isn't the deciding factor — none of them are plan-gated — so the question is only ever who should be able to get this discount.
Which offer should I use?
Three engines, none of them plan-gated. The only real questions are who should get the discount, and whether they should have to type anything.
Who is this discount for?
This is the whole decision. The mechanics overlap almost completely — what differs is who can reach the discount.
One person, or a group you choose
A discount code. You control who knows it — leave 'Let the AI assistant share this code' OFF so your bot never hands it to someone else.
Everyone whose order qualifies
An automatic offer. There is no code, so there's nothing to leak, nothing to type, and nothing to forget.
Anyone who keeps coming back
A reward program. It mints a personal, single-use code and emails it by itself, forever, without you remembering anything.
Should the customer have to type something?
A code is friction: they have to know it, remember it, and type it correctly at checkout. Some won't.
The code IS the point
Codes only. A code is what makes 'DM me for 10% off' work, and what lets you hand one person a discount without repricing your shop.
I just want the price lower
Automatic offer. It applies itself at checkout, on your storefront and your pay links alike.
Only one goods discount ever lands
If the customer typed a code, the automatic engine stands down entirely — they do not stack. Two automatic offers don't stack either: the single best discount wins, and ties go to the older offer.
The one exception
A code scoped to the DELIVERY fee doesn't touch goods, so it can ride alongside an automatic offer. Storefront only — a delivery code on a pay link reads as invalid.
Set the limits before you set the discount
Every engine takes a minimum spend, an expiry and a usage cap, and all three are optional. A percent-off with no minimum, no expiry and no cap is an open tab against your margin — and codes get screenshotted.
The short version
| Reaches | Customer types a code? | Best for | |
|---|---|---|---|
| Discount codes | Whoever you tell | Yes | Targeted: DMs, win-backs, one apology |
| Automatic offers | Everyone who qualifies | No | Repricing: welcome offers, bundles, BXGY |
| Reward programs | Whoever earns it | Yes — a personal one, emailed | Standing habits, run unattended |
Free and ProEvery offer engine is on, in full, on both plans. No caps, no counts.
Works with — Discount codes, Automatic offers, Reward programs
Discount codes
The problem — A code your customer types at checkout. The oldest trick there is, and still the only one that lets you hand one person a discount without repricing your shop.
Where
What you'll see
Your active codes, each summarised in one line — WELCOME10 · 10% off · min $30.00 · 3 / 100 used · Until 31/12/2026 — with Edit and Archive. Codes the AI is allowed to share carry an "AI
shares" badge.
Set it up
- Type the code —
WELCOME10. It uppercases as you type; up to 40 characters. - Choose Type: Percent (1–100%) or Fixed amount.
- Choose Applies to: Order subtotal or Delivery fee.
- Optionally set a minimum subtotal, an expiry, and a maximum number of uses.
- Optionally turn on Let the AI assistant share this code — this lets your customer-facing assistant offer it in chats when it would save a sale.
- Save.
Free and ProNot gated, not counted.
Details worth knowing
- Codes are case-insensitive.
welcome10andWELCOME10are the same code, always. - The AI-shareable switch is the important one. Off means the bot never volunteers it — which is what you want for a VIP or win-back code you only meant to send to specific people. On means it may proactively offer it, quoting your discount verbatim, but only when the customer's order could actually use it. It never invents a code and never quotes a discounted total.
- Uses are counted safely. Two people checking out at once can't push a 100-use code to 101, and an abandoned checkout gives its reservation back within a few hours.
- Editing a code doesn't rewrite history. Past orders keep the amount they were actually charged.
- Archiving frees the code. You can create
WELCOME10again afterwards. - There's no per-customer limit. Max uses is a global counter, so a code that escapes onto a deals forum is spent by strangers, not rationed one each. Cap it.
Common problems
| What you see | What's happening |
|---|---|
| "A coupon with that code is already active." | You already have it. Archive the old one first. |
| Buyer says "That code isn't valid." | Wrong code, archived, or it hasn't started yet. |
| Buyer says "That code has expired." | Past its expiry date. |
| Buyer says "That code is no longer available." | Max uses reached. |
| "Your cart doesn't meet this code's minimum." | Their subtotal is below your minimum spend. |
| The code applied, then quietly vanished | A delivery code on an order with no delivery fee to cut. |
Works with — Which offer should I use?, The assistant's discount authority
Automatic offers
The problem — A code is friction. The customer has to know it, remember it, and type it. Half won't.
Where
What you'll see
A ✨ Welcome offer preset button that fills the whole form in one tap — 10% off, first order only
— and below it the four mechanics. Existing offers list as a plain sentence: Buy 2, get 1 at 100% off · min $30.00 · 3 / 100 used · No expiry, with a New customers badge where it applies.
Set it up — Pick a Discount type:
- Percent off order (1–100%) or Amount off order
- Buy X, get Y — set Buy, Get, and the % off the Get items (100 = free). Leave products blank for "buy any 2, get 1"; or tick to target specific ones.
- Bundle price — pick 2 or more products and a price for the set together.
Then optionally: First order only (welcome offer), a minimum subtotal, an expiry, and a usage cap.
Free and ProNot gated, not counted.
Details worth knowing
- One promotion applies per order, and the best discount wins. If two qualify, the customer gets the bigger one; a tie goes to the older offer. They never combine.
- "First order" means first paid order. Someone who filled a cart and bailed still qualifies — the gate only flips after they've actually bought.
- Buy X get Y always discounts the cheapest qualifying items, which is what buyers expect.
- Bundles need every product present, and price a variant at its cheapest unit — deliberately in the buyer's favour.
- They work on your storefront and your pay links alike, and your assistant can describe them — but it's told there is no code and never to invent one.
- The name is only ever shown to you. Leave it blank and it saves as "Promotion", or "Welcome offer" if it's first-order-only.
Works with — Which offer should I use?, Discount codes
Reward programs
The problem — Standing reasons to come back, that run without you remembering anything. You're not going to notice a birthday or count someone's tenth order. Something else has to.
Where
What you'll see
Three rows, each with an Email pill and a plain-English "When it sends:" line, so you know what you're switching on before you switch it on. Birthday has a Preview email → link that shows you the real thing.
Set it up
- Birthday — turn on, optionally Include a one-time discount code (default 10%). (Needs birthdays on file — they're collected at checkout.)
- Loyalty stamp card — set paid orders to earn a reward (2–50, default 10) and the reward (1–100% off; 100 = a free order).
- Refer a friend — set the friend's reward and the referrer's reward (both default 10%).
Then Save programs.
Free and ProNot gated, not counted.
Details worth knowing
- Everything runs on a daily check, not instantly. Someone who qualifies this afternoon gets their email tomorrow morning. Nothing fires the moment an order is paid.
- Every reward code is personal, single-use, and percent-off the goods — and is never AI-shareable, so your bot can't leak someone's private reward to another customer.
- They expire. Birthday codes last 30 days; loyalty and referral codes last 60.
- Birthday is once a year per customer, guaranteed, even if the check runs twice.
- Referral is a share link on the buyer's own order page — "Refer a friend", with a Copy button. Both sides get their code only once the friend actually pays for a first order, and it's a code for a future order — it doesn't discount the friend's current checkout.
- Turning a program off clears its settings. Switch it back on and you're re-entering the numbers.
- Opted-out customers are skipped by every one of the three.
Tracking links
The problem — "Which post actually led to orders?" — a question your follower count cannot answer.
Where
What you'll see
A create form and a table: Label · Short link · Source · Clicks · Orders. The label is your own note-to-self; tap it for the full report on that link.
Set it up
- Pick a destination from Where should this link send people? — your shop, an order form, a product, or a pay link, all listed by name. (You never hand-type a URL. There's a "Paste a different link…" escape hatch under Advanced if you need one.)
- Name this link — for you, not the customer. "May 12 Instagram carousel".
- Pick Where will you post it? — Instagram, TikTok, Facebook, or Somewhere else — and a Placement: Post, Story, Reel, Bio / profile, DM or Other.
- Create link. You get a short link like
selza.app/l/a7bK2cto paste. - The table shows Clicks and Orders per link.
Free and ProUnlimited.
Details worth knowing
- Clicks tell you how many tapped; Orders tells you how many bought. Orders is the column that answers the question you actually asked.
- Tap a link's name for clicks by day, unique visitors, buyer rate, device and app/browser breakdowns, the last 30 individual clicks, and the lifetime value of the customers it brought.
- The two click numbers differ on purpose. The table's Clicks is all-time and includes link preview bots; the report's Clicks excludes them. The report is the honest one.
- "Came from" is almost always blank, and that's not a bug — Instagram, TikTok and Facebook strip the referrer. That's why there's an App / browser breakdown: it catches those apps anyway.
- Country isn't tracked on this setup. The report says so where you'd look for it.
- The Source column shows the raw value —
instagram · post, notInstagram · Post. - Lifetime value on a link is all-time, even when the clicks above it are windowed to 30 days. A link's buyers keep counting long after the post stopped being clicked.
Works with — Traffic, Which channel brings good customers?
Win back quiet customers
The problem — Twelve customers have gone quiet and you'd have to email them one at a time.
Where
What you'll see
The panel is not a button and not a page — it appears between the filters and the table the moment
you pick any segment other than Everyone. It's headed Re-engage 12 customers, with the line "One
email each — they reply to you directly."
Set it up
- Pick a segment, e.g. Lapsed > 30d.
- The panel appears, pre-filled with: "It's been a while! We just wanted to check in. If you'd like to order again from your shop, we'd love to hear from you."
- Edit it — line breaks are kept — and optionally add a discount code.
- Press Send to 12.
Free and ProUp to 500 customers per campaign; message 10–2000 characters.
Details worth knowing
- The cohort is the unit — there are no per-person toggles. You can't drop one name. If the segment is wrong, change the segment.
- It appears for every segment, not just the lapsed ones. Pick VIP and you'll get a panel offering to send your best active customers a "It's been a while!" win-back. Read the draft.
- Only customers with an email on file are in the cohort — the count in the heading already reflects that.
- The email carries your branding and your reply address. Replies land in your inbox, not ours. It has an Order again button pointing at your storefront, and an unsubscribe link.
- Keep it short. Long emails trip spam filters on a young sending domain — which is the reason for the 2000-character ceiling, not a technical one.
- There's no cooldown. Unlike broadcasts, nothing stops you sending to the same people again an hour later. Restraint is entirely yours.
Works with — Customers, Message one customer, Broadcasts
Message one customer
The problem — "Your cake's running a day late" — and you want it to reach them, on the channel they actually read.
Where
What you'll see
A Messages section at the foot of the order, subtitled "Your email thread with this customer — draft with AI, send on their channel". It's collapsed unless they've replied, in which case it opens itself with a "2 new" badge. Above the composer sits the whole thread — everything you've sent and every receipt Selza sent for you.
Set it up
- Pick an intent: Status update · Answer a question · Apology · Thank you.
- Add a note. Answer a question and Apology need one — the button stays disabled until you do.
- Press Draft message — it writes in your shop's voice, grounded in that order's real facts.
- Review and edit. It's a draft, and it's meant to be.
- Pick a channel — it defaults to the most recently active one — and send. Or Copy it.
Free and Pro⚠️ Drafting is free on every plan and never touches your AI allowance, whatever you may have been told elsewhere. The only limit is an anti-runaway cap of about ten drafts an hour.
Details worth knowing
- It goes into that customer's inbox thread as a message from you, and takes the thread over from the bot — the assistant stops auto-replying there, exactly as if you'd replied in the inbox.
- The channel picker only appears when there's a choice. With one live channel there's just a send button; with none, there's only Copy and the line "No live channel to send on — copy and send it yourself."
- The default is the most recent activity, not strictly their last message — your own replies count toward it too. It's usually the same channel either way.
- It's never a dead end. Copy is always there, so an unreachable customer costs you a paste, not the draft.
Customers
The problem — "Who are my VIPs? Who's gone quiet? Whose birthday is this month?"
Where
What you'll see
A Show: row of four chips — Everyone · Repeat (2+) · VIP (S$200+) · Lapsed > 30d — with the rest tucked under More filters. Above them, a collapsible Shop overview; below, your customers ranked by lifetime spend.
Set it up — Filter by segment. The four above are inline; New (1 order), > 60d, > 90d, 🎂 Birthday this month and your Tags live under More filters.
Free and Pro
Details worth knowing
- VIP means S$200+ lifetime paid. Fixed, not configurable, and written into the chip label — so a shop that doesn't price in Singapore dollars still sees "S$200+" while its amounts render in its own currency.
- Each customer carries a lifecycle badge: Active · Due to reorder · At risk · Lapsed.
- The lapsed windows overlap. Someone 100 days quiet is in all three of 30, 60 and 90 — they're cumulative, not bands. And someone who never paid is in none of them.
- Shop overview ignores your chips — it's every customer, always, so it reads as a stable dashboard rather than shifting under you. It also stays hidden until someone has actually paid, and auto-collapses the moment you pick a segment.
- It shows paying customers, repeat rate, average order value and lifetime revenue — plus your Best sellers and Where your buyers are, which is what you want before making a delivery-zone or ad-targeting call.
- Tags are free-form and filterable, but you add them on a customer's own page, not here.
- The list is your top 500 by lifetime value. Silently. There's no "showing 500 of 640" notice, so a big shop can't see — or re-engage — its quietest customers from this page.
- No search, no sorting, no export. Ranking is always lifetime spend, descending.
Works with — Win back quiet customers, One customer's story
One customer's story
The problem — Everything about one person before you reply to them.
Where
What's there — Contact & notes (name and phone are editable; email isn't; notes are private and the support bot appends to them too); Tags with quick-add suggestions; an Insights card; every order; their support chats; their cross-channel Journey; and Data & privacy.
Free and Pro
What the Insights card tells you
Lifetime value, Potential value, average order, paid orders, Buys every ~14d, last order, and a lifecycle badge — then a row of one-liners: when they were due to reorder ("overdue, worth a nudge"), customer since, First came via, how they prefer to pay, where they usually want it delivered, birthday, email engagement, refund rate, average review, and their favourite products.
Details worth knowing
- "Potential value" is a projection, not a promise — what they've paid plus expected future spend, from their own buying rhythm and how long similar customers keep buying. It says so, labels itself Low / Medium / High confidence, and refuses to guess for anyone who's never paid.
- A lapsed customer's potential is roughly what they've already spent. They're assumed churned. That's deliberately conservative.
- This "lifetime value" is a forecast. The one on Which channel brings good customers? is a sum of what's already happened. Same two words, two different numbers — don't compare them.
- The Journey shows the last 12 events, with a link to the full timeline.
- The marketing warning here reads the support opt-out, not the checkout consent box.
- Erase personal data is the PDPA / GDPR button. It redacts email, name, phone, notes, order details and chat history, opts them out, and keeps order amounts and status as financial records. The record stays visible, redacted. It can't be undone.
Customer journeys
The problem — How do people actually move from "saw your post" to "paid"? No single funnel shows it, because they cross channels.
Where
What you'll see
Two views. Behavior is the shapes: Does chatting drive sales? as two bars with a 2.4× badge,
AI-attributed revenue, average first reply time, journeys over time, a Journey funnel (Visited →
Began checkout → Tapped Pay → Paid) that calls out its biggest leak, a Journey flow tree,
Most common paths as chip sequences, chat outcomes, and Weekly retention as a cohort heatmap.
People is the individuals: a table of who, their channels, whether they chatted, whether they bought, and when they were last seen.
Set it up — Switch views, and pick a period: 7d · 30d · 90d.
Free and ProViewing is free; the Behaviour insights card costs one owner-tools action to generate or refresh.
Details worth knowing
- The all/chatted/converted/anonymous filter only exists on the People view. Behavior has no filter row.
- The period toggle does nothing on People. It shows the most recent 100 journeys whatever you pick. On Behavior it works normally.
- It includes visitors who never bought, listed as Visitor a3f9c2d1 — because the interesting question is usually about the people who didn't buy.
- "Anonymous" means "we couldn't tie this person to a customer record" — not "never bought". It's a different axis from Converted, and someone can plausibly be both.
- The insight card always has advice. If the AI is unavailable or you've spent your allowance, it falls back to deterministic rules and labels itself Rule-based rather than showing nothing.
- The biggest leak only shouts when it's real — the funnel calls one out at a 40%+ drop, not for every step.
Works with — Which channel brings good customers?
Which channel brings good customers?
The problem — Instagram sends the most clicks. That doesn't mean it sends the most value.
Where
What you'll see
A page titled Customer value (the link says "Lifetime value" — same place), and three tables: By acquisition channel, By delivery area, and By device. No period toggle — this is all-time by design.
Set it up — Nothing. Every customer's lifetime spend is credited to where they first came from — so a channel gets credit for everything a buyer ever spends, not just their first order.
Free and Pro
Details worth knowing
- First touch means their earliest order, paid or not. The moment they arrived, not the moment they paid — so a channel that starts a slow relationship isn't robbed of the credit.
- Channels are named the way you'd name them: Quote form · Storefront · Pay link · Booking ·
Discover. An order we can't place reads
unknown. - Customers = paying / total acquired. The second number is everyone that channel brought, including people who never bought. Avg LTV is per paying customer.
- By delivery area is Singapore planning districts read from real checkout postcodes — your most valuable neighbourhoods, ranked by average value rather than volume.
- By device is not LTV and not first-touch. It's average order value, for storefront sessions that fired analytics and converted. The page calls it "an observation, not a targeting lever" and asks you not to price or treat customers differently by device. Take that at face value: it's a partial slice.
- Built entirely from data you already have. Nothing new is collected.
Works with — Tracking links, One customer's story
Grow overview
The problem — "How is my business doing, and what should I do next?"
Where — Grow
What's there
- Net revenue for the window, plus orders, average order, repeat rate and conversion — each with a change indicator.
- Performance — Revenue & orders, Revenue by channel, Your strongest products.
- Your biggest opportunity — see below.
- Where shoppers get stuck — see below.
- Who's buying — Paying · Repeat · VIPs · Lapsed, a customer mix donut, and new-vs-returning revenue over six months.
- How to grow — AI-recommended next steps.
- More reports — Product performance · Support insights · Customer journeys.
Free and ProAI recommendations cost an owner-tools action to generate; the rest is free and always on.
Details worth knowing
- Net here is
paid revenue − platform fees − refunds— the same net as Earnings, so the two pages can't disagree. - Customer numbers are all-time, not windowed — loyalty is a lifetime signal. The period toggle moves the revenue charts, not your repeat rate.
- The card labels itself. "How to grow" carries an AI chip when a model wrote it and a heuristic chip when the deterministic rules did — so you always know which you're reading.
- Stale AI advice is labelled stale rather than shown as current, and collapses after 14 days.
- Sections vanish when they have nothing to say. No opportunity, no friction — no heading. An absent section is good news, not a broken page.
Works with — Earnings, Traffic
Your biggest opportunity
The problem — Ten charts, and no idea which number to act on.
Where
What you'll see — One callout under a What to fix heading, with a title, a sentence of arithmetic, and a button that takes you to the tool that fixes it.
Set it up — Nothing. It's a ladder, checked top to bottom, and you get the first rung that fires:
| # | Fires when | It says |
|---|---|---|
| 1 | A checkout field loses 25%+ of the people who reach it | Shoppers stall at the "phone" field |
| 2 | 60%+ of carts abandoned, on at least 5 carts | Most carts don't make it to checkout |
| 3 | A product has 8+ views and either no orders or under 3% buying | "Kaya Toast" gets looks but few orders |
| 4 | 3+ paying customers have gone quiet | 7 customers have gone quiet |
| 5 | Repeat rate under 20%, on at least 3 orders | Most buyers order only once |
Free and Pro
Details worth knowing
- There is no AI in this. It's a plain calculation over numbers already on the page — which is why it's always there, never says "generating", never goes stale, and never costs an action.
- You get one, not five. The rung order is the priority order: a checkout field beats a hidden gem because it's costing you people who already decided to buy.
- No rung fires, no section. A shop with none of these problems doesn't get an empty card telling it so.
- It recomputes on every load and can't be dismissed. Fix the thing and it moves on to the next.
Works with — Where shoppers get stuck
Where shoppers get stuck
The problem — Something on your shop is broken or confusing and nobody will ever tell you. They just leave.
Where
What you'll see — A table called Taps that went nowhere: What they tapped · Page · Issue · Taps, worst first, up to 8 rows, with a link to your storefront editor.
Set it up — Nothing. It surfaces taps that went nowhere, in three kinds:
| Issue | Means |
|---|---|
| Repeated taps | Someone hammered the same thing. It looks broken, or nothing happened. |
| Looks clickable, isn't | They tapped something that isn't a control. It's mislabelled. |
| Page was slow | The page froze under their finger. |
Free and Pro
Details worth knowing
- It's grouped by what you'd recognise — the button's own words and the kind of page — not by URL. Every product page collapses into one Product page row, so "price gets rage-tapped" reads as one real problem instead of forty rows of one tap each.
- Pages are named, not pathed: Storefront home · Product page · Checkout.
- A tap with no text falls back to its element, so you may see
<button>. That's a control with no label — which is often the bug itself. - No AI, no allowance, no staleness. Same as the opportunity callout: it's counting, not thinking.
- The section is absent when there's nothing to report. Silence here is genuinely good news.
Works with — Your biggest opportunity, Traffic
Traffic
The problem — Where do visitors come from, and where do they drop off?
Where
What you'll see
Two views: Summary (the calm 80% — visitors, conversion rate, average active time, orders from visits, a visitor chart and the Storefront funnel) and Details (the deep cards). Both end with your order forms and tracking links, so you never have to click out to see where orders come in.
Details adds: When people visit (a day-by-hour heatmap), Traffic sources, Product performance, Time on page, Audience, Where your customers are, Visitor country, and Checkout field drop-off.
Free and Pro
Details worth knowing
- The funnel is strict on purpose. Each step only counts sessions that completed every step before it, so the bars can only ever go down. Added to cart isn't a step — it's an annotated sub-row, because pay links and bookings reach checkout without a cart and would otherwise make the funnel climb.
- Checkout field drop-off is the data behind Your biggest opportunity's first rung — and that rung's button lands you here.
- Bots are filtered from the headline numbers and shown separately as "incl. bots".
- Product and time-on-page figures roll up hourly, so today can lag by up to an hour.
- "0s" is never shown for active time. With no sample yet it says "not enough data yet" — a zero next to real visitor counts reads as broken.
- Traffic sources only distinguishes two things: Marketplace (Discover) and Own channel. Everything else you brought yourself collapses into one row — use Tracking links for per-post detail.
- Visitor country needs a CDN geo header. If it's empty it says so, and points you at the region breakdown above, which works regardless.
Works with — Earnings, Form performance
Form performance
The problem — Which order form turns views into paid orders?
Where
What you'll see — A table headed Order forms — the card the heading above calls "form
performance" — with Form · Views · Submitted · Quotes · Paid · Submit rate,
and each form's /f/slug under its name. It sits on both the Summary and Details views.
Set it up — Nothing. Per-form: views → submitted → quoted → paid.
Free and Pro
Details worth knowing
- It's four steps, not three. Quotes sits between submitted and paid — that's the gap where you're the bottleneck, not your form.
- Tap a form for its full funnel with the drop-off at each step.
- Form views include bots. The rates are directional; the shape between steps is the useful part.
- ⚠️ The empty state points at a door that no longer exists. It says "Create one under Sales → Forms". Forms was folded into Sales → Order links. Same forms, new door.
Works with — Traffic, Order links