Roadmap9 planned · latest release v2.6.0

What we are building, and what just shipped

A platform you run your business on should tell you where it is going. The board below is the real order of work, and the log underneath it is every release since — fixes included.

Roadmap

What is being built, what is queued behind it, and what we are still thinking about. Shipped work moves to the log.

Now

3

In active development. Dates slip, but these are the things being built this quarter.

ChannelsQ3 2026

Native POS app for iOS and Android

The web POS works, but it assumes a connection and a keyboard. The native app is built for a counter: card reader pairing, receipt printing, and a local cache that keeps selling through a dropped Wi-Fi connection, then reconciles the queue when it comes back.

Same catalog, same stock pool, same customer record as the rest of the hub. A shop sale decrements the stock a marketplace listing is quoting from, in the same second.

ChannelsQ3 2026

Amazon FBA stock reconciliation

FBA inventory currently syncs as a single available number. That is enough to avoid overselling and not enough to run a business on — it hides units in transit, units held for inspection, and the ones Amazon has quietly lost.

The rebuild models FBA as a fulfilment location with its own ledger: inbound shipments, reserved units, unfulfillable stock, removals, and a reconciliation report that flags the gaps worth opening a reimbursement case over.

CatalogQ4 2026

Multi-location stock and allocation rules

One stock pool is the right default and the wrong answer for anyone running a warehouse alongside three shops. Allocation rules let each channel draw from a named set of locations, with buffers so a marketplace listing never eats the last unit off a shop floor.

Rules are evaluated at read time, so changing a buffer republishes availability everywhere without a re-sync.

Next

3

Specced and queued. Work starts as soon as something above it ships.

Orders & paymentsQ4 2026

Subscriptions and recurring orders

Subscriptions are the clearest case of the app-tax problem: a recurring order is a first-class commerce object, and paying a percentage of it to a third party to schedule a charge is hard to justify.

Native recurring orders, running through whichever processor you already use, with dunning, customer-facing pauses, plan changes, and the resulting orders landing in the same queue as everything else.

Orders & paymentsQ4 2026

Multi-currency pricing and settlement

Automatic conversion produces prices no merchandiser would choose and margins nobody can predict. Price books get explicit per-currency amounts, with rounding rules and an optional rate-based suggestion you can override.

On the settlement side, orders keep both the presentment amount and the amount that landed in your account, so the payout reconciliation stops being a spreadsheet exercise.

MarketingQ1 2027

Customer segments across email and SMS

The marketing suite can already send to a list. What it cannot do yet is define that list from behaviour — bought twice in ninety days, only ever through the marketplace, lapsed since spring.

Segments become a shared object: the same definition drives a campaign, gates a promotion, and picks the price list a B2B account sees.

Exploring

3

Problems we think are worth solving. No commitment, and no date — yet.

Developers

Headless storefront starter kits

The API is public and documented, which is not the same as having somewhere to start. A pair of maintained starter storefronts would cut the first week of a headless build down to an afternoon.

The open question is the maintenance contract. A starter kit that drifts a year behind the API is worse than no starter kit, so this only ships if we can commit to keeping it current.

Catalog

Assisted catalog enrichment

Every marketplace wants the same product described its own way — its taxonomy, its attribute names, its title length limits. Doing that by hand is why catalogs go stale on the third channel.

The version worth building drafts the mapping and holds it for review. Nothing reaches a live listing without someone approving it, and every generated field stays traceable back to the master record.

Platform

White-label billing for agencies

Agencies already run client accounts under one organisation. The part they still do in a spreadsheet is rebilling — taking platform costs, adding their retainer, and invoicing under their own name.

Doing this properly means tax handling across jurisdictions and a clear answer to who owns the customer relationship when an account moves on. Both are worth getting right before writing code.

Log

Everything that has shipped, newest first — including the fixes that never make it into a launch post.

v2.6.0
AddedImproved

Order routing rules and split fulfilmentLink to this entry

Until now an order was fulfilled from wherever you told it to be fulfilled from, one location per order. That falls apart the moment a basket mixes a warehouse item with something only the Lisbon shop stocks.

Added

  • Routing rules. Order lines are assigned to a location by a rule set you control — priority order, proximity to the shipping address, or stock availability. Rules are evaluated per line, not per order.
  • Split fulfilment. When no single location can cover the basket, the order splits into fulfilments that pick, pack and ship independently. The customer sees one order and gets one tracking email per parcel.
  • Manual reassignment. Any fulfilment can be moved to another location before it is picked, and the stock reservation follows it.

Improved

  • Reservations are now held against the assigned location rather than the global pool, so a pending order stops making stock look available somewhere it isn't.
  • The order timeline records which rule matched and why, which turns "why did this ship from Porto" into a one-click answer.
v2.5.0
Added

Account price lists and quote approvalsLink to this entry

B2B and B2C on one catalog was already the point. This release adds the pricing machinery that makes it usable for wholesale accounts.

Added

  • Price lists. A named set of prices — fixed amounts or a percentage off the base price — attached to one account or a group of them. A customer signed into a B2B account sees their prices everywhere, including in the API.
  • Order minimums and multiples. Per-account minimum order values, minimum quantities and case-pack multiples, enforced at the basket rather than caught later by a human.
  • Quotes. A sales rep builds a quote from the same catalog, applies a line-level discount, and sends it for approval. An accepted quote converts to an order with the agreed prices locked in and an expiry date.
  • Payment terms. Net 30 and net 60 as a checkout option for accounts that are approved for it, with the invoice raised at fulfilment.
v2.4.0
AddedImprovedFixed

TikTok Shop connector, and faster marketplace syncsLink to this entry

Added

  • TikTok Shop connector. Catalog publish, order import, stock sync and fulfilment updates, with the same attribute mapping UI as the other marketplace connectors. Video-linked products carry their attribution through to the order record.
  • Channel-level publish rules, so a product can be held back from one marketplace without being unpublished everywhere.

Improved

  • The sync pipeline now batches attribute changes instead of publishing a product per change. A 20,000-SKU catalog update that took most of an hour finishes in a few minutes.
  • Connector errors are grouped by cause rather than listed per SKU, which turns a wall of 4,000 failures into the three mapping problems actually behind them.

Fixed

  • Stock could briefly overshoot on a marketplace when a cancellation and a new order landed in the same sync window. Adjustments are now applied in event order rather than by timestamp.
  • Currency rounding on marketplace price publishes used the base price rather than the channel price for a small set of currencies.
v2.3.0
AddedChanged

A promotion engine that stacksLink to this entry

Promotions were a single discount code with a percentage on it. Anything beyond that meant an app and a monthly bill.

Added

  • Rule-based promotions. Conditions on cart value, quantity, product, collection, customer group or channel; outcomes covering percentage off, fixed amount off, free shipping and buy-X-get-Y.
  • Stacking control. Each promotion carries a priority and an exclusivity flag, so you decide what combines with what instead of discovering it at checkout.
  • Scheduling. Start and end times per promotion, with a preview that shows what a given basket would pay at a chosen moment.
  • Automatic promotions that apply without a code, for channels where codes make no sense — marketplaces and POS included.

Changed

  • Existing discount codes were migrated to single-condition promotions. Codes and their redemption history are unchanged; they are now editable with the full rule set.
v2.2.0
AddedImprovedFixed

Webhooks v2, with signing keys and replayLink to this entry

Added

  • Signing keys. Every delivery carries an HMAC signature and a timestamp, so an endpoint can verify a payload came from us and is not being replayed by someone else. Keys are rotatable with an overlap window.
  • Per-endpoint subscriptions. Choose exactly which events an endpoint receives instead of taking the full firehose and filtering on your side.
  • Delivery log and replay. The last 30 days of attempts, with request and response bodies, and a replay button for anything that failed while your service was down.

Improved

  • Retries moved to exponential backoff over 24 hours. An endpoint that comes back within a day catches up on its own.
  • Payloads now include the full resource rather than an id, which removes a follow-up API call from most integrations.

Fixed

  • Deleting an endpoint no longer leaves queued deliveries retrying against it.
  • Order events could fire before the associated fulfilment was readable through the API.

Something missing from this list?

The order things get built in comes from the merchants running on the platform. Tell us what is blocking you and we will tell you honestly where it sits.