Skip to main content

Gift Vouchers

Marzipan now sells and manages gift vouchers: stored-value codes a customer buys and somebody else spends later.Sell them from a voucher product, which behaves like any other product but issues a code instead of shipping something. Set the amounts on offer, let buyers enter their own, choose an expiry, and optionally restrict what a voucher can be spent on. A voucher belongs to one market, and the buyer picks who it goes to, what the message says and the day it should arrive.A new Gift Vouchers area lists every code you’ve issued, with the unspent balance, what was issued and redeemed this month, and what’s expiring in the next 30 days. Every voucher has a full ledger of its movements alongside an activity trail, and can be resent, adjusted or voided. Codes are masked to their last four characters everywhere, and revealing one is a deliberate step that asks why and records it.Customers spend a voucher in the same box as a discount code. It can pay for goods, delivery and subscriptions, in part or in full, over as many orders as it takes, though never for another voucher. Refunding an order puts the value back on the code.
  • Issue by hand - for goodwill or a phone order, emailed to the recipient or handed over yourself
  • Liability report - issued, redeemed, lapsed and outstanding, month by month, under Insights
  • Emails - four new templates under Settings > Notifications, in a Gift Vouchers group
  • Expiry - off by default, with a warning email before a balance lapses
See Gift Vouchers and Settings > Gift Vouchers.

Gift Checkout

Customers can now send an order to somebody else. Checkout asks who the order is for, and a gift adds a step for the message, the recipient’s details, a date not to deliver before, and a date to tell them on.The reveal date is a real promise: nothing reaches the recipient before it, and the email goes out at eight in the morning in your own timezone. Deliver after now holds the parcel itself rather than only showing on the order page, so a gift bought in September for Christmas stays put.Billing stays with the buyer and delivery goes to the recipient. Where a gift needs an account, as a subscription does, the recipient is created as an ordinary customer, and an existing customer gifted something at their office never has their own delivery address repointed.Turn it on with Let customers buy gifts under Settings > Cart & Checkout, and reword every question under Branding & Web Components. See Gift orders.

Gift Subscriptions

A subscription can now be sold as a prepaid gift: a fixed number of deliveries, charged once, that never auto-renews.The giver and the recipient are held separately, so billing email stays with the person who paid and the person receiving it is never charged. At the end of the term the giver chooses what happens (hand it over, stop, or keep gifting it), and both people are told at different times, the giver first so they get the chance to renew before the recipient hears anything.Cancelling a gift stops the renewal, not the deliveries. Six new email templates cover the whole life of a gift, under Settings > Notifications in a Gift group.See Gift subscriptions.

Recurring Events in Separate Date Ranges

A recurring event can now run in separate date ranges while keeping one weekday pattern and one set of times. A venue that only opens during school holidays previously had to create an event per holiday, which split its ticketing, waitlist and reporting across events that were really one product.Set the ranges under Dates on the event form. A range masks the pattern rather than restarting it, so a monthly event keeps its day of the month across a gap and a weekly one still lands on the weekdays you picked. Removing a range keeps any dates that have already sold tickets.See Recurring events.

Ticket Sales Cut-Off on Recurring Events

The sales cut-off was measured from a recurring event’s first date, so once that date passed the gate stayed shut: every later date reported sales as closed and refused to add to the cart, however far off it was and however many tickets were left.The cut-off now counts from the date being bought. A series is only closed once every remaining date has passed its own cut-off. See Create.
Two API endpoints have been removed: GET /v1/events/{event}/availability and GET /v1/events/{event}/check-dates. Both were served by a second recurrence generator that ignored the weekday selection and never matched a date on a recurring event, so they only ever worked for one-off events. Use Check Occurrence Availability instead, which is scoped to a single date.

Reward Points and Vouchers

Buying a gift voucher never earns points, and by default neither does the part of an order a voucher paid for. Turn Exclude voucher payments off under Settings > Rewards to let redemptions earn. See Earning and redemption.
Send a customer a link to pay an order themselves, rather than taking their card details over the phone. Send payment link sits alongside Process payment on any draft or held order that settles through Stripe, and emails the customer a link to a secure Marzipan payment page.While a link is out the order is locked: its items can’t be edited and payment can’t be taken another way, so it can’t be paid twice or paid for something that has since moved. Resend issues a fresh link, and Cancel hands the order back to you.Links expire after seven days by default, set under Settings > Payments and overridable per send. The payment page carries your button colours and corner radius, works whatever your website is built with, and handles collection orders by showing where to collect from.Payment links can also be sent and cancelled from the Marzipan mobile app. See Payment links.

EzyPro

A new integration exports your orders to EzyPro on a schedule, as a CSV delivered over SFTP. Each market gets its own file, folder and product-code mapping, since EzyPro keeps a separate database per market. Runs are logged with a downloadable copy of every file sent, so you can answer whether a particular day’s export went. See EzyPro.

Manual Orders

The create order form has been reordered so items are added before delivery, which means shipping rates and free-shipping thresholds are quoted against a basket that actually has something in it.
  • One-off items - sell something your catalogue has never held, such as corkage or a delivery surcharge, without creating a product for it
  • No shipping needed - a third option beside Delivery and Collection, for orders that are digital, comped, or handed over across the counter
  • Discount suggestions - the discount section now lists the discounts an order already qualifies for, best first, with what each is worth against that basket

Purchase Options on Product Pages

A product with upsells can now offer them as priced boxes showing every option’s price at once, rather than a dropdown that hides all but the selected one. Collection cards show a See options button opening the same chooser, where each option reports its own stock so a shopper can’t pick a sold-out case. See Product.

Shoppers Pick Their Billing Frequency

A subscription package sold at more than one billing frequency now asks the shopper which they want, as boxes or a dropdown, with your default pre-selected. Previously only pick & mix offered the choice. See Packages.

Add-to-Cart Confirmation

Adding to the cart without redirecting now shows a short confirmation where the shopper is, rather than relying on a cart icon that may be scrolled out of view. Choose Redirect, Notify or Nothing per storefront, and set the confirmation’s style and position under Branding & Web Components.
Stores that never set a redirect preference pick up Notify as the new default. Stores that did set one keep what they had.

London City Bond - Goods Received

Turn on Record goods received to add stock as soon as London City Bond book goods in, at midday and 7pm, rather than waiting for the nightly sync. It also closes off the stock transfer the goods were for, and covers supplier deliveries as well as your own transfers. See Integrations.

Cancelled Orders Return Their Stock

Cancelling an order now puts its stock back, to the location it came off. Previously the units were simply gone, except where a London City Bond sync happened to paper over it.

Branding & Web Components

Settings > Web Components is now Settings > Branding & Web Components, since those settings brand the payment page as well as your storefront components. Nothing has moved. Only the name has changed.

Custom Checkout Questions

Ask your own questions on the checkout details step, such as a reciprocal club’s membership number. Set them up in Settings > Cart & Checkout, optionally restricted to particular markets, and choose whether each one is required. Answers appear on the order and the customer, fill themselves in for a returning customer, and can be added to the orders CSV export. A question can carry an auto-tag applied to the customer once it’s answered. See Cart & Checkout.

Create an Account from the Order Confirmation

Guests are now offered a single password field on the order confirmation, turning the order they just placed into an account without retyping anything. A verification code is emailed straight away. The wording is editable in Settings > Branding & Web Components > Checkout. See Checkout.The confirmation page has been rebuilt to match the checkout’s split layout, with an order summary alongside the receipt and reward points shown as a banded statement.

Referral Question on the Confirmation

The “how did you hear about us?” question can now be asked again on the confirmation page when a customer skipped it at checkout, which costs no conversion and fills in a good share of the gaps. Off by default. See Customisation.

Newsletter Opt-In Wording

Set the wording shown beside the checkout newsletter checkbox, and whether it starts ticked. Marzipan records what each customer was actually shown, so editing the wording later never rewrites consent already given.
Pre-ticked consent is not valid consent in the UK or EU. Only turn the pre-tick on if you have taken your own legal advice.

Stock Valuation Report

A new Insights report values the stock you hold at cost price, with a headline total, a breakdown per location and a sortable product table. It’s market aware, exports to CSV, and counts products holding stock with no cost price separately so an understated total is visible rather than silent. See Sales reports.

Inventory

  • Adjust stock in bulk from a slide-over panel, correcting several products in one go with one location, reason and note across the batch. See Inventory settings.
  • Export the inventory list to CSV, with a column per location.
  • The Trade adjustment reason is now called Wholesale, and an adjustment can name the trade customer it was made for.
  • Bundles can derive their stock from constituent items, so a case assembled from bottles you already hold stays accurate on its own. See Product inventory.
  • Overselling now takes an optional limit, so you can sell a set number beyond the figure on screen rather than sell indefinitely.

Per-Market Product Images

Individual product images can be scoped to the markets they belong in, for the same SKU needing different imagery per market, usually because the physical label differs. An image with no markets set shows everywhere. Historical orders keep showing the image the customer actually bought. See Markets.

Stripe Processing Fees

Marzipan now captures what Stripe charged you to take each payment. Processing fee and Net amount are available as opt-in columns on the orders CSV export. See Orders.

Explaining a Restricted Collection

A collection restricted to certain markets can carry a message and a page to link to, so a storefront can say why there’s nothing to show instead of rendering an empty grid. See Collections.

Tasks and Roles

Tasks now sit behind role permissions, including who can assign work to someone else and who can see other people’s tasks. Reading the task list and completing your own tasks stay open to everyone.

Free Shipping Minimums

A shipping method’s minimum order value is measured on the goods total after discounts, with no shipping and no tax. Previously the shipping charge itself counted towards the minimum that would remove it. Both shipping screens now describe the rule as it actually works. See Shipping.

Flows and POS Orders

Flows on the order.paid trigger now skip point-of-sale orders by default, since a till sale has no delivery address and uses the shared walk-in customer. Flows that want every sale opt back in with Include POS orders. See Flows.

Google Merchant Center Improvements

Product categories are now picked from Google’s own taxonomy, each sync is recorded with a browsable history, and disconnecting offers to take your catalogue down at the same time. The default sync interval is twice a day. See Google Merchant Center.

London City Bond

  • Every stock sync is now recorded, including runs where nothing moved, with the last ten shown on the integration page and unmatched SKUs named.
  • Per-item minimum stock levels let you set transfer triggers for the lines that move at a different rate, with 0 excluding an item entirely. See Integrations.

Going Live Clears Test Data

Turning off test mode to go live now clears test-mode customers and their test artifacts, so you start selling with a clean slate. Going live is a one-way switch.

All-Day Event Improvements

All-day events now carry their all-day setting and recurrence days through to the storefront and API, so listings display correctly.

Recurring Events Reorganised

Everything about a recurring event except its shared details belongs to a date, and the app now reflects that. A recurring event’s own page is about the series: the dates it runs on and a way into them, while attendees, activity, the waitlist and ticket counts live on each date. Dates can be marked out of stock or unavailable so they stay listed but can’t be bought, and a series is only finished once its last date has passed. See Recurring events.

Waitlists per Date

Each date of a recurring event keeps its own waitlist, and a customer can wait on more than one date of the same event. Seats freed on a date are offered to that date’s queue, and a claimed place produces a ticket for the right day. See Events.

Subscription Shipment Windows

Variable packages can now date their shipments as an availability window instead of fixed processing and shipping dates. Subscribers bill on their own anniversary and receive whichever window covers that date, so a package that sends “whatever is in the box right now” no longer needs a dated shipment for every renewal. See Packages.

Cheapest Item Free

A new discount type takes the cheapest qualifying item already in the cart off the total. One unit, not the whole line. Discounts also gain a minimum number of items condition, for offers framed by count rather than value. See Create a discount.

Checkout Requirements

Set a minimum item count for the cart, and optionally require full case quantities so physical items are ordered in whole multiples of it. Both are enforced everywhere a cart can be paid for, including express checkout and any storefront built on the API. Bundles count the items inside them. See Cart & Checkout.

Market-Aware Collections

Product collections can now be restricted to particular markets, and ordered differently in each one, so each region leads with what sells there. See Collections.

Google Merchant Center

A new integration lists your products on Google Shopping, pushing prices, stock and availability automatically whenever a product changes. Each market becomes its own feed with its own currency and target countries. See Google Merchant Center.

Referral Sources on Orders

The referral source a customer gives is now snapshotted onto the order, shown on both the customer and the order, and available to Mailchimp as an acquisition-source merge field.

Point of Sale

The till can now search for a member by name or email, apply a percentage or fixed discount to the sale, and offer a newsletter opt-in when taking the customer’s email. See Point of Sale.

Flows

Add a step into the middle of a flow by hovering the line between two nodes and clicking the + at its midpoint. See Flows.

London City Bond

Subscription shipments are now submitted to London City Bond over the API, batched into a single call, replacing the bulk order spreadsheet. Orders shipping later are held and released through the day.

Team Management

Administrators can now manage the Team by default. Editing roles stays owner-only.

All-Day & Multi-Day Events

Events can now be marked as all-day, and weekly recurring events can span multiple days. Editing a recurring event propagates your changes across occurrences while preserving any occurrence times you’ve customised. See the Events guide.

Product Barcodes (GTIN)

Physical and bundle products now have a barcode / GTIN field, accepting EAN-13, UPC-A, EAN-8 and ITF-14 with live format validation. See Products.

Web Component Labels Tab

Storefront text labels are now consolidated into a single Labels tab in Settings > Web Components, including new Sales Closed and Back in Stock button labels. You can also choose how subscription frequencies read: worded (“quarterly”) or interval (“every 3 months”). See the Customisation guide.

Customisable Button Text Colour

Set the text colour for primary buttons, including a separate hover colour, from the Web Components styling settings.

Product Image Options

New product-image settings let you position thumbnails to the side or bottom and enable a zoom overlay, with a separate corner radius for product images.

Order Improvements

  • The order page now updates its activity feed live, so entries written by background jobs appear automatically.
  • Editing an order now shows bundle constituent items when you add a bundle.

Markets

Carts now follow the resolved market precedence (customer choice, then saved market, then location) instead of forcing a single assigned market.

Forms

Form auto-reply emails are now sent from a customisable notification template, so you can tailor the subject and message per form. See Forms.

Point of Sale - Walk-In Customers & Receipts

Point of Sale sales can now be taken for a shared walk-in customer and turned into a named customer later. Email a POS receipt after a sale (sending it links the walk-in order to that customer), or assign a walk-in order to a customer from the order’s Actions menu. Tap to Pay payments now capture and display the card brand and last four digits.

Event Attendees Export

The event Attendees tab now has a CSV export, a price column, and clickable links back to each attendee’s order. See Events.

Subscriptions - Cancelled/Expired Filter

Filter the subscriptions list by when subscriptions were cancelled or expired using a date range.

Order Shipping Dates

The order shipping-date picker now blocks past dates, and changing the date on an order held for London City Bond dispatch reschedules and logs that hold.

Customers

Set a customer’s default payment method, and archived customers are now hidden from the main list by default.

Marzipan Mobile App (Beta)

Introduced the Marzipan mobile companion app for managing your store on the go. It covers orders, customers, subscriptions, tasks, and dashboard metrics, with a secure sign-in flow and push notifications to your device.

Point of Sale & Tap to Pay (Beta)

Added in-person selling through the mobile app: build a sale with Quick Pay and take card payments with Tap to Pay on iPhone via Stripe Terminal. In-person sales appear in the web app under the POS channel. See Point of Sale.

Subscription Payment Safeguards

Marzipan now detects blocked Stripe payments and halts renewal retries, with team notifications for blocked payments and renewal errors that members can opt into.

Order Improvements

  • Added a Free payment-status filter and excluded free orders from the pending total.
  • Bulk shipment CSV import can now capture a comments column.

Platform

Upgraded the underlying platform to Laravel 12.

Rewards & Loyalty Programme

Introduced a complete loyalty programme with tiered rewards, point earning, and checkout redemption.Customers earn points on every order based on configurable earning rates. Points accumulate towards reward tiers, and each tier can offer perks like percentage discounts, free shipping, early access to products, and event invitations. Customers can see their current tier, points balance, and progress to the next tier from their account page.Points can be redeemed at checkout for a discount, with configurable redemption rates and maximum discount caps per currency. Tier membership is managed automatically based on lifetime spending, with optional notifications for tier upgrades and downgrades.Added a dedicated rewards insights dashboard showing tier distribution, revenue breakdown by tier, and programme performance trends.Rewards data (tier name, points balance) syncs to Mailchimp as merge fields for targeted email campaigns.

Multi-Currency & Markets

Added support for selling in multiple currencies from a single store. Markets define regional pricing, currency, exchange rates, and payment provider availability.Products and subscription packages can have per-market pricing set manually, or prices can convert automatically using exchange rates. Shipping methods support per-market rates. Reports and insights can be filtered by market. The web components automatically display prices in the customer’s local currency.

Inventory Locations

Expanded stock management to support multiple inventory locations with a complete audit trail. Each location tracks stock independently, and every movement is recorded with a reason (order, received, write-off, stock take, transfer, return) and optional notes.Added bulk stock adjustment for updating many products at once, low stock alert emails with configurable thresholds, and inventory rules that determine which location fulfils orders based on conditions like shipping country.London City Bond stock levels now sync automatically to a dedicated inventory location.

Shipping Zones

Shipping methods now support zone-based pricing for more accurate delivery charges. Built-in zones are available for the UK (Mainland, Highlands & Islands, Northern Ireland, Isle of Man, Channel Islands) and South Africa (Major Cities, Remote Areas). Rates are automatically determined based on the customer’s postcode, with support for weight-based pricing bands.

PayFast Payment Gateway

Added PayFast as a payment gateway option, supporting credit cards, instant EFT, and local South African payment methods. Includes sandbox mode for testing, webhook-based payment confirmations, and integration with the global test mode system.

ScrubBill Fulfilment Integration

Added ScrubBill as a fulfilment provider for third-party logistics. Orders can be forwarded to ScrubBill automatically or manually from the order detail page. Webhook notifications automatically update order status when ScrubBill confirms dispatch.

Order Attribution & UTM Tracking

Track where your orders come from with automatic UTM parameter capture (source, medium, campaign, content, term) and configurable referral source questions at checkout. A new Attribution insights page shows orders and revenue by traffic source, campaign, referral channel, and landing page with period comparison.

Website Analytics

For Marzipan-hosted sites, web traffic stats are now available directly in the insights section. See pageviews, unique visitors, and traffic breakdowns by page, referrer, country, browser, device, and UTM parameters.

Global Test Mode

Added a global test mode toggle under a new Developer Settings page. When enabled, all payment gateways automatically use their test/sandbox credentials. Store both live and test API keys for each gateway and switch between them with a single toggle. Turning off test mode automatically restores all live credentials.

Email Domain Management

Added a new email settings section for registering and verifying custom sending domains. View required DNS records (MX, SPF, DKIM) and their verification status. Email delivery now uses dual providers for improved reliability, with automatic email suppression for bounces and complaints.

Web Component Customisation

Significantly expanded the Settings > Web Components page with new options for customising your storefront without code:
  • 25+ colour settings covering buttons, text, backgrounds, borders, badges, status messages, and account accents
  • Product display options including quick attributes on cards, configurable accordion sections on product pages, and related products
  • Collection options for card style (minimal, bordered, elevated, filled), text alignment, and image corners
  • Cart options for background/border styling, free shipping notifications, and related product recommendations
  • Checkout options for split-panel background colours, logo positioning and size, phone requirement, and referral source questions
  • Account options for subscription upsell sections
See the Web Components Customisation guide for full details.

Forms

Create custom forms directly in the dashboard with configurable field types including text, email, phone, textarea, select, checkbox, radio, date, and hidden fields. Form submissions trigger notifications and auto-reply emails.A new <marzipan-form> web component renders forms dynamically by slug, replacing the old hardcoded <marzipan-contactform> component. Fields, validation, and layout are all driven by the API, so no code changes are needed when forms are updated.

Bidirectional Messaging

Two-way email conversations with customers via Lettermint inbound processing. Replies from customers are threaded into per-customer conversation threads in the messages inbox. An inbound email status banner and UX improvements make it easy to manage ongoing conversations.

Customer Segments

Segment customers by conditions such as type, created date, order count, lifetime revenue, subscription status, reward tier, market, and form submissions. Segment membership is evaluated and cached for performance. Segments sync to Mailchimp as tags for targeted campaigns.

Back-in-Stock Notifications

Customers can subscribe to out-of-stock products to receive email alerts when stock is replenished. Back-in-stock settings are configurable per market.

Free Checkout

Carts with a zero total value can now complete checkout without requiring a payment step.

Roles & Permissions

Granular access control for admin users. Assign roles with specific permissions to control who can view and manage different areas of the dashboard.

Per-Market Product Visibility

Control which products are visible in each market, allowing you to tailor your catalogue by region.

LCB Blocked Items

Added support for blocked items in the London City Bond integration, preventing specific products from being sent to LCB for fulfilment.

Improvements

  • App Subscription packages now have per-market pricing tabs for setting prices in different currencies
  • App Admins can now edit the scheduled renewal date for a subscription
  • App Tasks now support @mentions linking to customers, orders, subscriptions, and events
  • App Tasks can be filtered by multiple assignees
  • App Task mentions appear as activity on linked records
  • App Pinned notes feature for important task notes
  • App Phone numbers are now automatically formatted to international E.164 standard
  • App Phone number can be required at checkout (configurable)
  • App Mailchimp integration now syncs customer address fields and reward data as merge fields
  • App Customer profiles in Mailchimp update automatically when addresses change in Marzipan
  • App New subscription orders within the LCB fulfilment cutoff window are no longer sent immediately
  • App LCB stock levels sync automatically to inventory locations
  • App Product attributes can now be marked as private (hidden from customers)
  • App Fulfilment actions are now restricted to the relevant shipping countries
  • App Free shipping display threshold is now applied server-side for accuracy
  • App Added tenant management to the admin panel
  • Web Components Cart displays free shipping progress notifications
  • Web Components Cart supports related product recommendations
  • Web Components Cart supports background colour and border customisation
  • Web Components Collection pages support background colour
  • Web Components Checkout supports split-panel background colours
  • Web Components Product cards show quick attributes
  • Web Components Product pages have configurable accordion sections
  • Web Components Referral source question available at checkout
  • Web Components what3words field support for events
  • App Emails tab on customer detail page
  • App RGBA/hex-alpha colour support and button border styling options
  • App Per-market free shipping messages
  • App Email log timelines show queued_at timestamps
  • App Domain change handling for store email with unverified domain warnings
  • App Cancellation email control
  • App Form submissions consolidated view
  • Web Components Dynamic form component with API-driven field rendering
  • Web Components Back-in-stock notification form on out-of-stock products
  • Web Components Themed button border CSS variables
  • Web Components Free checkout support
  • Web Components Bundle optimisation with lazy loading and DOM-conditional loading
  • Web Components Market switcher (renamed from currency switcher)

Bug Fixes

  • App Fixed customer archive referencing non-existent subscribed column
  • App Fixed duplicate route names breaking route caching
  • App Fixed market pricing on event deposits
  • App Fixed subscription auto-renewal when no linked plan
  • App Fixed discount errors on checkout
  • App Fixed Apple Pay pickup order issues
  • App Fixed handling of duplicate order constraint on payment retry
  • App Fixed pick & mix renewal pricing calculations for per-item subscriptions
  • App Fixed subscription renewal items in cart price recalculation
  • App Fixed cart currency for shipping method price formatting
  • App Fixed Mailchimp webhook field mapping for subscription and address data
  • Web Components Fixed cart display threshold currency inputs
  • Web Components Fixed checkout customer mismatch when switching accounts
  • Web Components Fixed shipping method validation for flat rate methods
  • App Fixed case-insensitive email uniqueness enforcement
  • App Fixed invalid UUID route parameters returning 500 instead of 404
  • App Fixed Stripe charge using incorrect stripe_id field
  • App Fixed message compose state, unassigned filter, and select all toggle
  • App Fixed loading button size shift during loading state
  • App Fixed Fathom API rate limiting
  • App Fixed tenant context in queued jobs
  • Web Components Fixed account modals overflowing viewport on smaller screens
  • Web Components Fixed billing details showing “same as shipping” for event-only carts
  • Web Components Fixed white background on AddToCart component
  • Web Components Fixed Rewards tab showing when rewards aren’t enabled
  • Web Components Fixed back-in-stock form layout below out-of-stock button
  • Web Components Fixed cart member pricing, buy again button, and subscription date modals
  • Web Components Fixed MarketSwitcher dropdown showing empty