The Playbook
Every play, in full. Start with the diagnostic table if you don’t already know which lever is the constraint.
Diagnose first. Then pick the play.
Most wasted effort in ecommerce comes from running a play against a lever that wasn’t the constraint. Work the sequence.
Decompose revenue
Split the last 12 months into the five terms. Whichever is furthest below its own trend or a credible benchmark is the constraint.
Size the prize
Model the play at a directional uplift before building anything. If a realistic result doesn’t clear the effort, it goes back in the backlog.
Ship one change
One variable, one measurement window, one pre-agreed success metric. Bundled releases produce unattributable outcomes.
Symptom → constraint
A fast triage table. Read the symptom, jump to the lever.
Traffic
Are enough qualified people arriving, and at what cost?
Prune the index
SymptomHundreds of thousands of thin listing, filter or pagination URLs indexed; crawl budget spread across pages that can never rank.
PlayClassify URLs by demand and content depth. Keep and enrich the ones with search demand; noindex the rest; 301 true duplicates. Re-check crawl stats and impressions monthly, not weekly — the lag is real.
Fix the brand/non-brand split
SymptomA majority of paid search spend sits on brand terms with 80%+ impression share and near-100% top-of-page rate.
PlayRun a geo or time-based brand holdout to measure true incrementality. Reallocate the recovered budget to non-brand and shopping. Most retailers find a meaningful share of brand clicks are cannibalising free organic clicks.
Feed quality before bid strategy
SymptomShopping impression share is low and no bidding change fixes it.
PlayAudit GTIN, brand and category coverage; restructure titles to lead with the terms people actually search; fix disapprovals and price mismatches. Feed completeness is an eligibility problem, not a bidding problem — bidding cannot buy impressions you’re not eligible for.
Build category pages for demand, not for the catalogue
SymptomThe site’s navigation mirrors internal merchandising hierarchy rather than how customers search.
PlayMap real query volume to landing pages. Where demand exists for an attribute combination and no page does, create one with unique content and internal links. Where a page exists with no demand, don’t index it.
Conversion
Of the people who arrive, how many finish?
Mine on-site search
SymptomZero-result and low-CTR internal queries are never reviewed.
PlayPull the top zero-result queries weekly. Split into three buckets: synonym gaps (fix the search index), catalogue gaps (buying decision), and spelling. Searchers typically convert at several times the site average, so this is the highest-leverage small fix on most sites.
Answer the three PDP questions above the fold
SymptomHigh PDP traffic, weak add-to-cart rate.
PlayEvery product page must answer, without scrolling: is it in stock, when will it arrive, and what does delivery cost. Everything else — imagery, specs, reviews — is secondary to those three. A concrete delivery date outperforms a range.
Strip the checkout
SymptomSteep drop between cart and payment.
PlayCount required fields and remove every one not needed to fulfil or bill. Offer guest checkout. Match payment methods to the market — in South Africa that means instant EFT and pay-later options alongside cards, not cards alone.
Fix mobile weight before mobile design
SymptomMobile is the majority of sessions and a minority of revenue, with a CVR gap far wider than the category norm.
PlayMeasure field data, not lab scores. Attack the largest contentful paint element first — usually an unoptimised hero or product image — then third-party tags. Aesthetic redesign before performance work is a common and expensive inversion.
Order value
How much is in the basket when they finish?
Engineer the free-delivery threshold
SymptomThe threshold was set once, years ago, and never revisited against actual AOV distribution.
PlayPlot the basket-value histogram. Set the threshold above the current median but inside the fat part of the distribution — roughly 15–25% above AOV is the usual landing zone. Then show progress to threshold in the cart. Model the delivery cost absorbed against the incremental margin before committing.
Bundle on genuine co-purchase data
SymptomCross-sell modules are populated by category rules and get ignored.
PlayBuild recommendations from actual basket affinity, not category adjacency. Place them at the moment of commitment — cart and post-add — rather than on the PDP where they compete with the primary decision.
Change the default sort
SymptomListing pages default to price ascending, training every customer into the cheapest SKU.
PlayDefault to a relevance score blending conversion rate, availability and margin. Keep price sort available, just not first. This is one of the few single-line changes with a measurable margin effect.
Repeat rate
Do they come back without being bought again?
Target the second order, not loyalty
SymptomRetention programmes aimed at the whole base while most customers never place a second order.
PlayFind the median days-to-second-order among customers who do repeat. Trigger lifecycle contact at roughly half that window. The first-to-second conversion is where the retention curve is steepest and cheapest to bend.
Replenishment triggers on consumables
SymptomPredictable-cycle categories treated with the same generic campaign calendar as one-off purchases.
PlayDerive per-category repurchase intervals from order history and trigger on elapsed time since purchase, not on campaign date. Low build cost, and it converts on intent rather than discount.
Track owned-channel share as a risk metric
SymptomRevenue growth looks healthy but paid share of revenue is climbing every quarter.
PlayReport owned (direct, organic, email, app) versus rented (paid) revenue share monthly alongside growth. A business growing while owned share falls is buying its growth and will find the cost curve eventually.
Leakage
What did you book but not keep?
Kill post-order cancellations
SymptomOrders confirmed then cancelled because stock wasn’t really there.
PlayTrace the availability signal end to end — buffer settings, sync frequency, reservation at add-to-cart versus at payment. Every cancellation costs the acquisition spend, the margin and a share of that customer’s future orders. It is almost always cheaper to fix than to acquire the replacement.
Read returns as a content defect log
SymptomReturns tracked as a logistics cost line, never routed back to merchandising.
PlayBreak return reasons down by category and SKU. “Not as described” and “wrong size” are content and sizing problems with a PDP fix. Treating returns purely as reverse logistics guarantees they recur.
Sweep media waste quarterly
SymptomAutomated campaign types running unattended for months.
PlayReview search terms, placements and audience overlap. Negative out the queries that structurally cannot convert, and check whether prospecting and retargeting are bidding against each other for the same user.
Cost the delivery promise honestly
SymptomDelivery treated as a marketing lever without a per-order cost model.
PlayModel cost per order by basket size, weight and region against the revenue the promise generates. Free next-day on a low-value rural order can be margin-negative even when the conversion lift is real.
Rules that stop the playbook lying to you
A personal reference kept in the open. Plays are added when they’ve been run, and removed when they stop holding up. Nothing here is a service offer or a guarantee of outcome.
