Marathon in Trellis has two main screens and one big idea: you plan the whole sale up front, then the system runs it wine-by-wine while you watch (and steer) from the Live Board. Exactly one wine is up for sale at any moment — when it sells out or slows down, the next one takes its place automatically, with no gap in between.
The module runs two kinds of event, chosen when you create one: a Marathon (the multi-day, back-to-back-deals blowout that takes over the storefront in special event mode) and a Daily Offer (a wine in the storefront's normal daily-offer slot, launched and cleaned up automatically). Everything in this guide — the planner, verification, swap rules, the Live Board — applies to both; the Daily Offers section covers what's different.
Planning happens in the Planner (Marathon → Planner). Everything after launch happens on the Live Board (Marathon → Live Board). Anyone can watch the board; making changes takes Marathon edit access.
The module has a few more screens worth knowing: the Calendar (Marathon → Calendar) is a month view of every scheduled event — its chips click straight through to the Planner or the Live Board. The Sales Floor (/salesfloor) is a display-only hype screen of every live sale, open to the whole company — point a TV at it with ?kiosk=1. Admins also get a Module Admin page (Marathon → Admin) with the health switchboard and error log. And after a big sale, the Marathon Issues page (Orders → Marathon Issues) is where order collisions get triaged — see After the sale.
Two companion documents live beside this guide under Marathon → Documentation: the Pre-Flight Checklist (the tick-through run sheet for launch day) and the Schematic (the technical deep-dive, for developers).
Open the Planner, hit + New, and give the event a name, a store, and an event type — Marathon or Daily Offer. The type decides where on the storefront your wines appear, so pick it deliberately; Daily Offer events wear a gold badge everywhere so the two never get mixed up. A Daily Offer also picks a lane — Both (the whole store), Web (the website), or App (the mobile app) — covered in the Daily Offers section. From there the planner walks you through six steps. They're tabs, not a one-way street: hop between them in any order, and your work saves automatically as you go.
Search the catalog and pull in every wine you might run. Nothing in the pool touches the storefront — this is just gathering, so gather generously. Each wine shows its Shopify and Linnworks counts plus revenue potential to help you weigh candidates.
You don't have to add wines one by one. The picker has filters — type (red, white, rosé, sparkling…), country, varietal, region, vintage, and minimum units on hand — that stack with the search box. Narrow the list to what you're after, then hit Add all to pull in everything that matches, and optionally type a label in tag them as… first so the whole batch lands already tagged. "All Italian reds with 20+ units, tagged italians" is one filter and one click.
The pool is a whiteboard, so hash things out right here: drag wines to sketch a rough running order, and tag them to cluster ideas — hit + tag on a wine and label it "reds", "day one", "openers", whatever fits how you think. A wine can carry several tags, and the tag bar above the list shows a count for each — click a tag there to see just those wines. To tag a bunch at once, hit Select, check off the wines (or select all shown while a tag filter is on), type the label, and Apply tag.
Blocks are the chapters of your sale — the "hours." Create them, give each a title and description, and pull wines in from the pool with + Add wines: a picker over the pool with search, the same type / varietal / region / price / score filters as the pool step, tag chips, and an Unplaced only switch. Tick wines and Add selected, narrow the list and Add all shown, or type a SKU and press Enter to drop the top match in — keeps the query, so a list of SKUs flows straight through. Every row carries its verify colour. Going the other way works too: in the pool step's Select mode, pick wines and Add to block. Order is everything: the top block runs first, and within a block wines go up for sale top to bottom. Drag to reorder blocks or wines until the story reads right.
A wine can hold slots in more than one block — plan a favorite for a morning run and an encore in the finale. The planner won't stop you; it just flags repeats (also in #1 on the wine's row, and an in #1 flag in the picker) so deliberate encores are easy and accidental doubles are obvious. Keep in mind a later run sells whatever the earlier one left behind — if the first run drinks the well dry, the encore comes up, hits the stock-out floor, and swaps right past. You can also always bring a wine back on the fly — see adding a wine mid-sale.
You can also set up a safety net: mark one block as the default block (the Set As Default Block button on its card). It leaves the running order and gets no time slot — instead, whenever a block sells out before its time is up, the default block takes the stage and cycles through its wines, swapping on stock-out, until the next scheduled block starts right on time. It remembers its place: if it was cut off mid-wine filling one gap, the next gap picks up with that exact wine. Think of it as the house pour that covers every intermission.
For each wine, choose what makes it step aside for the next one: run until it's gone, step down at a threshold, or wait for a human. The rules are explained in plain English in the next section. There's a set all in block to… shortcut when a whole block shares one rule.
Verify makes sure each wine's product details are complete enough to sell — everything the storefront and app surfaces render: title, price, producer, vintage, varietal, a country or region, and the rest. You've been seeing this state since step 1: pool rows and picker rows carry a green edge (verified, in stock), an amber edge with a note of what's missing, or a red edge when the SKU isn't on the store's Shopify at all. The Verify step is a fix list, not a roll call: it shows only the wines that aren't green, one row per wine wherever it sits in the plan, and reads "All verified — nothing to fix" when the plan is clean. Re-check re-reads the product reference and records the sign-off. When a wine falls short, open it right there in the audit editor — it's tabbed by field group and has a live Storefront Content tab showing exactly what Shopify holds — fill in the gaps, and save. Trellis re-checks it instantly.
Timing comes last on purpose: shape the whole sale first, then commit to a clock. For a Marathon, build the day like a calendar: the timeline is one continuous strip across the event's whole date range — drag blocks from the pool onto it and pull their edges to size each window. An optional Hand back at time sets when the event ends and the storefront returns to normal, independent of the last block's edge. For a Daily Offer, the step is one decision: pick the Drops at moment and the offer runs for 24 hours from there (editable if a special case needs longer or shorter) — a Thursday 10 AM drop runs until Friday 10 AM, when the next offer takes over. Back-to-back daily offers schedule cleanly: today's offer still running never blocks tomorrow's from being armed.
The Launch step shows a checklist of everything the sale needs — blocks titled and timed, every wine ruled, verification warnings called out. The hard requirements (blocks, times, rules, a configured storefront surface) must be green; verification lines are warnings you should clear but that won't stop the launch. Then two buttons: Activate Now starts the sale immediately, or Schedule arms it to start itself on time.
A swap rule answers one question: when should this wine hand off to the next one? There are three policies, and one of them has four flavors.
A Daily Offer event puts a wine in the storefront's normal daily-offer slot — homepage, cart, and the mobile app all follow along together. You plan it exactly like a Marathon (usually one block, often just one wine, rule set to on stock-out), verify it, and schedule it. The launch itself is hands-off.
Every Daily Offer runs in a lane: Both is the normal choice and covers the whole store. Web targets just the website and App just the mobile app — and because the two are completely separate, a Web offer and an App offer can run at the same time with different wines. The one rule: the same wine can't be in two lanes at once (the Launch checklist enforces it — sales couldn't be told apart).
Here's what the system does around a scheduled start time: about four minutes before, it quietly stages your wine behind the current offer (the old offer keeps the spotlight). It then confirms the storefront accepted the wine — the Live Board narrates this with a 🎬 banner (staged → in collection ✓). Five seconds before start, your wine takes the front of the slot — that's the moment shoppers see the new offer, timed to land right on the dot. The event goes live, and a few seconds later yesterday's offer (and any strays) are retired from the slot automatically. Your job: have the plan scheduled at least ten minutes early, and watch the banner do its thing.
Differences from a Marathon worth knowing: a Daily Offer doesn't switch the storefront into special event mode (it uses the everyday look), and while Activate Now works in a pinch, the storefront takes a minute or two to catch up instead of flipping exactly on time — scheduling is the way. And when a Daily Offer sells out with nothing next in the plan, it holds rather than ending early: the slot keeps the sold-out wine, the team gets a Slack alert, and the Live Board banners it — so someone can decide whether to add a follow-up wine or let it ride until the next offer. Everything else — swap rules, blocks, the Live Board, mid-sale additions — behaves exactly as described in the rest of this guide.
Once the sale is live, the board is mission control. Reading it top to bottom:
The event cards across the top hold the vitals: the event clock, bottles sold with the current pace, revenue, and the time of the last order that came through. On a real sale those numbers come straight from orders as customers check out — they move within seconds, not minutes.
The current-wine card is the star of the screen: what's up right now, how many bottles it has sold since it went up (counted from actual orders, not inventory math), how fast it's selling right now, and the rule that will eventually bring it down ("Advance: on stock-out", "Advance: at threshold — 90% sold", and so on). A wine on a timed rule — or a block on a lap timer — shows a live Swap in countdown to the handoff. When standby pre-staging is on, the card's on deck strip shows the wines already quietly staged behind the current one, so the next handoff is instant.
The block columns show the whole running order as a checklist: a struck-through wine has had its turn, the pulsing garnet dot marked LIVE is on stage now, and hollow dots are waiting in the wings. Sold-out wines sink below the still-pending queue so the wines that can actually run stay front and center. Each block has a progress bar, and finished blocks tuck themselves away behind a toggle. Long blocks get their own queue tools: a filter box, a play next action on any waiting wine, and type-a-position for precise reordering.
Every waiting wine also carries its own intel, right on the row: the bottles it has left (refreshed about once a minute), ran earlier if it has already had a turn this sale (with how many it sold — hover for where and when), also in … if it's queued in another block too, and on stage now if that same wine is the one selling right now. No more guessing whether the encore pour still has bottles behind it.
The Recent Elevation Log — behind the Log toggle at the top right of the current-wine card, sliding open beside the wine — is the sale's play-by-play, written in plain sentences with who (or what) did it:
It scrolls back through the last 200 entries, so the whole day's story is always at hand.
What happens on its own: blocks advance on schedule with no gap between wines. If the last wine in a block sells out early, the next block starts early rather than leaving a dark storefront. When the event's end time arrives, the sale wraps itself up and the board becomes the recap.
The board also speaks up when something needs you. Banners appear for: a scheduled event past its start time that can't launch (with the exact reason why — fix the blocker and the system keeps retrying on its own), a Daily Offer's pre-launch staging (the 🎬 banner, or a ⚠ if the storefront is slow to accept the wine), the automatic engine being switched off or gone quiet (your manual controls still work), a store missing its storefront setup, and stray tagged wines competing for the featured slot. A quiet board is a healthy board.
The board runs the plan by itself; these controls are for when the room reads differently than the plan predicted. All of them need Marathon edit access. They live on the action strip under the current wine: a button shows only when it applies right now (a Daily Offer usually sees just Hold, lane coverage and Stop), the Marathon toolkit — Loop, Loop Timer, Last Call, Dynamic Block — sits under More, and Stop Event stays on its own at the right.
Before running a real sale — or when training someone new — run a fake one. Tick the Test event box when creating the event and you get the entire Marathon experience with zero storefront involvement: same planner, same verification, same Live Board, same swap rules, but the bottles are pretend.
You choose the pretend starting bottle count and how fast stock drains on its own. Then, on the Live Board, the Sell 1 / Sell 5 / Sell 25 buttons let you play customer — hammer a wine with orders and watch its swap rule fire exactly as it would live. Test events wear a TEST badge everywhere so no one mistakes the rehearsal for opening night.
A big sale generates a burst of orders, and bursts create collisions: the same customer ordering five times in an afternoon, some orders on hold and some not, or the same person shipping to two different addresses. The Marathon Issues page (Orders → Marathon Issues) scans the sale window and groups every flagged customer for triage. It lives under the Orders menu — it's a fulfillment tool, open to everyone, not part of the edit-gated Marathon planner.
The page is split into tabs, one issue type per view: Hold Collision (a customer with some orders held and some not — a split shipment waiting to happen), Address Mismatch (one customer, more than one ship-to), Parked (orders parked in Linnworks inside the window), Multiple Issues (customers hitting more than one of the above), Ignored (flags someone reviewed and dismissed — dismissing is undoable), and Actions (a ledger of every bulk change made from this page). Each order row links straight to the order in Shopify admin and Linnworks.
Two bulk actions do the heavy lifting. Hold Selected is a check-the-boxes editor for a collision group: checked orders get the Weather Hold (the Shopify order tag and the Linnworks hold service, applied to the right order even when Linnworks has merged shipments), and unchecking an already-held order releases it — restoring the shipping service it had before the hold, no guessing. Shipped orders are skipped automatically. Update All Addresses consolidates an address-mismatch group onto whichever order's ship-to you pick, writing to both Linnworks and Shopify and verifying both took the change before reporting success.
Your account now requires a second factor. It takes a minute, and you only do it once on this account.
If you lose your phone, one of these gets you back in. Each works once. This is the only time they are shown — we store only a hash, so nobody can look them up for you later.
Enter the six-digit code from your authenticator app.
Enter one of the codes you saved when you set this up. It will clear your current authenticator so you can set up a new one — the code is then spent.