> ## Documentation Index
> Fetch the complete documentation index at: https://docs.marzipan.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Updates and improvements to Marzipan

<Update label="July 2026">
  ## Going Live Clears Test Data

  Turning off [test mode](/settings/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.
</Update>

<Update label="June 2026">
  ## 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](/events/overview).

  ## 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](/products/overview).

  ## 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](/web-components/customisation).

  ## 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](/settings/markets) 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](/forms/overview).
</Update>

<Update label="May 2026">
  ## Point of Sale — Walk-In Customers & Receipts

  [Point of Sale](/orders/pos) 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](/events/overview).

  ## Subscriptions — Cancelled/Expired Filter

  Filter the [subscriptions](/subscriptions/overview) 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.
</Update>

<Update label="April 2026">
  ## Marzipan Mobile App (Beta)

  Introduced the Marzipan **mobile companion app** for managing your store on the go, backed by a new admin API. It covers orders, customers, subscriptions, tasks, and dashboard metrics, with a secure sign-in flow and **push notifications** to your device. See the [API introduction](/api-reference/introduction).

  ## 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](/orders/pos).

  ## 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.
</Update>

<Update label="March 2026">
  ## 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 — 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](/web-components/customisation) 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 — no code changes 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 color 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 optimization 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
</Update>
