# Sign Customiser Documentation Compact public index of Sign Customiser help articles, API reference pages, and machine-readable resources for language models and agents. ## Documentation - [Help Centre](https://www.signcustomiser.com/help/): Browse Sign Customiser help articles, setup guides, feature references, and support documentation. ## Machine-readable resources - [OpenAPI YAML](https://www.signcustomiser.com/help/openapi.yaml): Machine-readable OpenAPI schema for the Sign Customiser API. - [Sitemap XML](https://www.signcustomiser.com/help/sitemap.xml): Public URL index for the Sign Customiser documentation site. ## Get Started - [Quick Start](https://www.signcustomiser.com/help/get-started/quick-start/): After installing the app on your platform, you are ready to create your first customiser! This guide walks you through the steps to get up and running smoothly. - [Preview Customiser](https://www.signcustomiser.com/help/get-started/preview-customiser/): In the admin you can preview the customiser at any time after making changes to it. - [Review product pricing](https://www.signcustomiser.com/help/get-started/review-product-pricing/): In the admin, you can review all the pricing options you have added and how they affect the final price of the sign product when different options are selected. - [Quickly update all prices](https://www.signcustomiser.com/help/get-started/15913361-quickly-adjust-all-prices/): Use Adjust all prices to raise or lower every price in a customiser by the same percentage. - [Changing Currencies in Shopify App](https://www.signcustomiser.com/help/get-started/changing-currencies-in-shopify-app/): Our app uses your Shopify store's primary currency as its base currency by default. To update your store's currency, refer to Shopify's guide: Changing Your Store Currency. - [Subscribe to Sign Customiser](https://www.signcustomiser.com/help/get-started/subscribe-to-sign-customiser/): We offer a 7-day free trial for both Shopify and Universal users, giving you full access to all features of the app. ## Customise - [Selected colour CSS variables](https://www.signcustomiser.com/help/customise/15440090-selected-colour-css-variables/): Mirror the colours a shopper picks in the customiser into your own storefront styling using the --sign-selected-colour CSS variables. - [Custom CSS](https://www.signcustomiser.com/help/customise/custom-css/): Use css to create your own styles for Sign Customiser - [Vertical text orientation](https://www.signcustomiser.com/help/customise/14883856-vertical-text-orientation/): Let customers stack each character on its own line, lock a customiser to one orientation, or set a default orientation for languages that read top to bottom. - [Default text alignment](https://www.signcustomiser.com/help/customise/default-text-alignment/): Sign Customiser allows you to change the default text alignment presented on the visualiser for user-input text inputs. You can show or hide all the text alignment options the user can select. - [Option Number List](https://www.signcustomiser.com/help/customise/option-number-list/): You can now automatically generate a list of options for your customiser that are numbered. - [Editor Modes](https://www.signcustomiser.com/help/customise/editor-modes/): Control the text editor and decide whether supported customisers can accept characters that a selected font cannot draw. - [Theme Colour Reference Guide](https://www.signcustomiser.com/help/customise/theme-color-reference-guide/): This guide will show you how to adjust the colours of your Sign Customiser. - [Options sidebar position - desktop only](https://www.signcustomiser.com/help/customise/options-sidebar-position-desktop-only/): Display the options sidebar on the left or right, option only available for desktop. - [Custom Design Tab](https://www.signcustomiser.com/help/customise/custom-design-tab/): Show or hide the custom design tab on your customiser. - [Mobile Style Options](https://www.signcustomiser.com/help/customise/mobile-style-options/): Choose how the customer customiser presents its options on mobile. - [Centimetres/Inches measurement display](https://www.signcustomiser.com/help/customise/centimetres-inches-measurement-display/): Choose to show either centimetres or inches on your customiser - [Font display options](https://www.signcustomiser.com/help/customise/font-display-options/): You can display all fonts directly or as a dropdown menu. - [Price display on first load](https://www.signcustomiser.com/help/customise/price-display-on-first-load/): Select how to display the price on the customiser, useful for marketing such as Google products. - [Background Images for Sign Visualisations](https://www.signcustomiser.com/help/customise/background-images-for-sign-visualisations/): How to change the background image that displays behind the sign design in the visualiser - [Show / Hide Measurements?](https://www.signcustomiser.com/help/customise/show-hide-measurements/): 1. - [Arranging the option order](https://www.signcustomiser.com/help/customise/arranging-the-option-order/): Sort the order of option sections and individual choices in the customiser - [Modal display](https://www.signcustomiser.com/help/customise/modal-display/): Show your customiser in a modal on your storefront theme. - [Scene Editor](https://www.signcustomiser.com/help/customise/scene-editor/): Formally called background images - how to control the scene that the signs display on. - [Visually scale signs for size dimensions](https://www.signcustomiser.com/help/customise/visually-scale-signs-for-size-dimensions/): You can give the visualiser the appearance of the sign getting bigger or smaller relative to the size the customer has chosen. - [Review Screen](https://www.signcustomiser.com/help/customise/review-screen/): You can choose to let your customers review their custom sign before it is added to the cart. - [Decimal Format for Measurements](https://www.signcustomiser.com/help/customise/decimal-format-for-measurements/): Please follow these instructions to change the decimal format of measurements: 1. - [Change A Font's Line Height / Line Spacing](https://www.signcustomiser.com/help/customise/change-a-font-s-line-height-line-spacing/): 1. - [Languages in Sign Customiser](https://www.signcustomiser.com/help/customise/15966977-languages-in-sign-customiser/): Use one customiser for multiple shopper languages, manage each translation as a draft, and publish the right version across Shopify and Universal. - [Add, translate, preview and publish a language](https://www.signcustomiser.com/help/customise/translate-words-and-phrases/): Add a shopper language, translate it manually or with an AI-assisted first draft, preview it privately, and publish it when it is ready. - [Choose the customiser language on Shopify and Universal](https://www.signcustomiser.com/help/customise/how-to-translate-into-multiple-languages-in-shopify/): Set up one multilingual customiser and control how Shopify and Universal choose a published shopper language. - [Translate option names, colours, fonts and sizes](https://www.signcustomiser.com/help/customise/15531433-rename-or-translate-option-names-colours-fonts-sizes/): Edit source option wording on its own page, then translate the shopper-visible value without changing pricing or production data. - [Translate custom forms](https://www.signcustomiser.com/help/customise/changing-the-language-in-your-custom-forms/): Translate custom form fields, choices, guidance and submission messages while leaving shopper answers unchanged. - [Translate the review screen](https://www.signcustomiser.com/help/customise/how-to-translate-text-in-the-review-screen/): Translate the final design review, its actions, selected-option headings and supporting information. - [Translate cart and order details](https://www.signcustomiser.com/help/customise/how-to-translate-product-details-on-cart-page/): Understand which translated labels reach products, carts, orders and fulfilment, and why later edits do not rewrite old orders. - [Use right-to-left languages](https://www.signcustomiser.com/help/customise/rtl-language/): Enable right-to-left layout separately from translation on Shopify and Universal, then test the live integration and font coverage. ## Integrations - [Integration Guides](https://www.signcustomiser.com/help/integrations/integration-guides/): Find the right way to connect Sign Customiser to your website or store — whether you're on Shopify, WordPress, Wix, or building something custom. - [Customiser Links](https://www.signcustomiser.com/help/integrations/hosted-customisers/): Share a customiser as a standalone link, hosted on signcustomiser.com — no website required. - [Find your Sign Customiser ID](https://www.signcustomiser.com/help/integrations/find-your-sign-customiser-id/): Log in to the Sign Customiser admin for your store. Click Customisers. You'll see a list of your customisers, each with its customiser ID shown alongside. Make a note of the ID you need. - [Subscribe to Webhooks](https://www.signcustomiser.com/help/integrations/subscribe-to-webhooks/): How to Subscribe to Webhooks in Sign Customiser Webhooks allow your application to receive real-time notifications when events occur in Sign Customiser. - [Zapier Integration](https://www.signcustomiser.com/help/integrations/zapier-integration/): This Sign Customiser guide covers Zapier Integration with the steps and context you need to complete the workflow. - [Shopify integration and theme setup](https://www.signcustomiser.com/help/integrations/shopify-integration-and-theme-setup/): This document outlines the two steps you required to integrate a customiser on your theme. - [How to enable/disable the iframe embed on your Shopify app block](https://www.signcustomiser.com/help/integrations/15854787-how-to-enable-disable-the-iframe-embed-on-your-shopify-app-block/): Turn the experimental iframe embed on or off for the Sign Customiser app block. Use it when your theme's CSS or JavaScript interferes with the direct embed. - [Install Customiser on a Product or Page on your Shopify Storefront - App Blocks](https://www.signcustomiser.com/help/integrations/install-customiser-on-a-product-or-page-on-your-shopify-storefront-app-blocks/): This guide will explain how to add the Sign Customiser to either a page or a product page in Shopify. - [Setup customiser on Shopify App embed theme - best for page builders /old themes/Headless storefronts.](https://www.signcustomiser.com/help/integrations/setup-customiser-on-shopify-app-embed-theme-best-for-page-builders-old-themes-headless-storefronts/): Best for installing sign customiser on page builders apps like gem pages/Headless themes or old themes. - [Enable sticky add to cart button on your customiser.](https://www.signcustomiser.com/help/integrations/enable-sticky-add-to-cart-button-on-your-customiser/): By following these instructions, you can change the scroll order and have the visualiser section and also the add to cart button fixed (sometimes called sticky) as the user scrolls up and down the page (fixed frame... - [Adding CSS to Shopify themes - Alternative (but Not Recommended) Method](https://www.signcustomiser.com/help/integrations/adding-css-to-shopify-themes-alternative-but-not-recommended-method/): Although editing your Shopify theme is an alternative method for applying CSS, it is no longer the recommended approach. - [Connecting WooCommerce with Sign Customiser](https://www.signcustomiser.com/help/integrations/connecting-woocommerce-with-sign-customiser/): Integrate your Woocommerce store with Sign Customiser - [Automatically Deleting Generated Products in WordPress](https://www.signcustomiser.com/help/integrations/automatically-deleting-generated-products-in-wordpress/): The Sign Customiser generates products so that customers can purchase their customised designs. - [How SEO is treated for Custom Signs in WordPress](https://www.signcustomiser.com/help/integrations/how-seo-is-treated-for-custom-signs-in-wordpress/): The custom signs created by our app are automatically hidden from all WooCommerce categories and product pages. - [Etsy integration](https://www.signcustomiser.com/help/integrations/14673825-etsy-mode/): Connect Etsy once from Integrations, and every customiser in your store pairs with an Etsy listing through a Customiser Link. - [Embed the customiser on any website](https://www.signcustomiser.com/help/integrations/15788612-embed-the-customiser-on-any-website/): Add the customiser to almost any website with an iframe embed — works on plain HTML, no-code site builders, and any platform with a custom code or embed block. - [Custom API Integration](https://www.signcustomiser.com/help/integrations/custom-api-integration/): Learn how to connect your custom ecommerce store with Sign Customiser using webhooks, product creation, and order processing APIs - [Webflow Integration](https://www.signcustomiser.com/help/integrations/webflow-integration/): Tip: The customiser embeds the same way on Webflow as on any website. For sizing, display options, and how to take orders, see Embed the customiser on any website. The steps below cover the Webflow-specific parts. - [Wix Integration](https://www.signcustomiser.com/help/integrations/wix-integration/): This Sign Customiser guide covers Wix Integration with the steps and context you need to complete the workflow. - [Squarespace Integration](https://www.signcustomiser.com/help/integrations/squarespace-integration/): Tip: The customiser embeds the same way on Squarespace as on any website. - [Custom Integration: How to Handle "Add to Cart" Actions](https://www.signcustomiser.com/help/integrations/custom-integration-how-to-handle-add-to-cart-actions/): This guide will help you integrate Sign Customiser with the "Add to Cart" functionality on e-commerce platforms like Webflow, and Squarespace. - [Migrating from the legacy WordPress plugin](https://www.signcustomiser.com/help/integrations/migrating-from-the-legacy-wordpress-plugin/): This article is for users of our (now legacy) WordPress plugin. ## Features - [The confirmation email your customer receives](https://www.signcustomiser.com/help/features/16208779-the-confirmation-email-your-customer-receives/): Yes, you can send your customer an email as soon as they submit a quote request or a custom design form. - [Braille Signs](https://www.signcustomiser.com/help/features/15920092-braille-signs/): Create a braille sign customiser, choose the braille table and dot colour, handle wording that cannot be translated, and see what braille data reaches orders and production files. - [Braille translation: supported languages and sizing](https://www.signcustomiser.com/help/features/15920089-braille-translation-supported-languages-and-sizing/): Which languages and grades braille translation supports, the default braille table for each store country, why braille dots never scale with the sign, and what happens when translation is unavailable. - [Cart and checkout behaviour](https://www.signcustomiser.com/help/features/cart-and-checkout-behaviour/): Sign Customiser has three unique behaviours that can occur after a product has been added to the cart. - [Sign Components Overview](https://www.signcustomiser.com/help/features/14428865-sign-components-overview/): Overview of Sign Components — the building blocks that define the visual and structural makeup of your signs - [Share Custom Sign Designs](https://www.signcustomiser.com/help/features/share-custom-sign-designs/): Generate unique urls of a sign design that can be shared across the web - [Auto-Save Customer selections](https://www.signcustomiser.com/help/features/auto-save-customer-selections/): Customers can leave your website and return later with their previous selections automatically pre-loaded in the customiser. - [Colours and material options](https://www.signcustomiser.com/help/features/colours-and-material-options/): Follow the steps below to add a new colour option: From the app's dashboard click on the Customisers tab and select a customiser. - [Upload background images](https://www.signcustomiser.com/help/features/upload-background-images/): Allow your customers to supply their own images to used for the background images on the sign visualiser. - [Currency conversion and bulk pricing update](https://www.signcustomiser.com/help/features/currency-conversion-and-bulk-pricing-update/): Following this process, you can easily and quickly update all the pricing assigned to a customiser. - [Drag, Scale, Rotate Words and Icons](https://www.signcustomiser.com/help/features/drag-scale-rotate-words-and-icons/): Give your customers the ultimate design freedom when creating custom letter signs by empowering them to drag, scale and rotate words and icons. - [Google Fonts](https://www.signcustomiser.com/help/features/google-fonts/): This feature allows you to browse through all 1000+ Google fonts within our admin and add it to your customiser with a single click. - [Icons in Sign Designs](https://www.signcustomiser.com/help/features/icons-in-sign-designs/): The Icons feature allows you to upload SVG graphics that customers can add to their sign designs. - [Multi-colour / Multi-font sign designs](https://www.signcustomiser.com/help/features/multi-color-multi-font-sign-designs/): All customisers can now enable the multi-colours and fonts feature which allows customers to add more than one colour or font to their sign design. - [Multi-Currency](https://www.signcustomiser.com/help/features/multi-currency/): Enabling the multi-currency feature in your Shopify store allows customers to view products and make purchases in their prefer currency. - [Quote Mode](https://www.signcustomiser.com/help/features/quote-mode/): Quote Mode replaces add to cart with a quote form. - [Sign Presets](https://www.signcustomiser.com/help/features/sign-presets/): Sign Presets allows you to save any customiser configuration as a reusable starting design. - [Customer uploaded images for lightboxes](https://www.signcustomiser.com/help/features/customer-uploaded-images-for-lightboxes/): Let customers upload images on the individual sides of the lightbox. - [Lightbox mounting options](https://www.signcustomiser.com/help/features/single-or-two-prong-mounting-visualisations-on-the-lightbox/): Show a 3D visual of your lightbox's mounting hardware — Single Prong, Double Prong, Pedestal, or Sign Feet — in the customiser and product images. - [Lightbox Types](https://www.signcustomiser.com/help/features/14428860-lightbox-types/): Configure lightbox component types (Face, Back, Border, Internal Light) with colours, materials, and per-component pricing - [Letter Parts](https://www.signcustomiser.com/help/features/letter-parts/): Configure letter parts (Face, Side, Trim, Halo) with colours, materials, and per-part pricing for channel letter types - [Letter Types](https://www.signcustomiser.com/help/features/letter-types/): Letter types are a grouping of configurable letter parts only available for channel type customisers. - [Front-lit and back-lit channel letters](https://www.signcustomiser.com/help/features/front-lit-and-back-lit-channel-letters/): You can create channel letter signs that allow the customer to select front-lit and back-lit colour options. - [Flow RGB colour option](https://www.signcustomiser.com/help/features/flow-rgb-color-option/): The Flow RGB colour option enables you to display multiple colours simultaneously. These colours will seamlessly transition and "flow" throughout the sign. - [RGB colour option](https://www.signcustomiser.com/help/features/rgb-color-option/): By using the RGB Colour option, you can add multiple colours of your choice to your customiser. - [Jackets and tubes for neon signs](https://www.signcustomiser.com/help/features/jackets-and-tubes-for-neon-signs/): Give your customers the ability to select how the jackets/tubes are presented for your neon signs. - [Letter glow effects](https://www.signcustomiser.com/help/features/letter-glow-effects/): This article will allow you to adjust the glow effect of the letters of your neon sign. - [Custom Backboard Shapes](https://www.signcustomiser.com/help/features/custom-backboard-shapes/): Our Custom Backboard Shapes feature lets you upload your own SVG files to use as backboard designs. This feature supports almost any type of shape, giving you the flexibility to create unique sign backboards. - [Backboard Colours, Images, Textures & Materials](https://www.signcustomiser.com/help/features/backboard-colors-images-textures-and-materials/): You can create different backboard textures each with their own images and assign them to multiple backboards. This feature allows you to give your backboards the appearance of things like wood, metal, and more. - [Customer designed Backboard Images](https://www.signcustomiser.com/help/features/customer-designed-backboard-images/): This guide will show you how you can set up your customiser to enable your customers to upload their images for backboards. - [Improved Backboard Colour Selection Experience](https://www.signcustomiser.com/help/features/improved-backboard-color-selection-experience/): Users can now display backboard colour options directly within the backboard section, creating a more intuitive and user-friendly experience. - [Backboard shapes: Why Are "Fill" Attributes Important for Your SVG Files?](https://www.signcustomiser.com/help/features/backboard-shapes-why-are-fill-attributes-important-for-your-svg-files/): When using SVGs in our customiser, ensuring they are composed of "fill" attributes rather than "stroke" attributes is crucial. - [Assign backboard colours & materials to backboards](https://www.signcustomiser.com/help/features/assign-backboard-colors-and-materials-to-backboards/): Please follow the below instructions to assign/add colours to your backboards: Navigate to the Sign Customiser admin on your store. - [Multi-layered Backboards](https://www.signcustomiser.com/help/features/multi-layered-backboards/): This feature allows you to create letter-shaped signs where the backboard can have two or more colours/materials added to it. - [Mountings](https://www.signcustomiser.com/help/features/mountings/): Display mounting options for the backboards The mounting feature allows you to add various mounting options for your backboards. - [Restrict mounting options](https://www.signcustomiser.com/help/features/restrict-mounting-options/): You can prevent customers from selecting a mounting when incompatible colours and backboards are chosen. - [Create Shopify discounts for custom sign products](https://www.signcustomiser.com/help/features/automatic-discounts-using-shopify-discount/): For most Shopify stores, scope an Amount off products discount to Sign Customiser Products or to a collection named after one of your customisers. - [Set a built-in Sign Customiser discount](https://www.signcustomiser.com/help/features/discounts/): Compare Sign Customiser and Shopify discounts, configure a built-in discount, and change the text shown underneath the price. - [Additional Options](https://www.signcustomiser.com/help/features/additional-options/): You can use our "additional options" feature to provide your customers with greater flexibility in product options. - [Disabling additional options](https://www.signcustomiser.com/help/features/disabling-additional-options/): For the Yes/No button type - certain colours when selected can disable this type of button on the customiser. ## AI Sign Designer - [AI Sign Designer Guide](https://www.signcustomiser.com/help/ai-sign-designer/ai-sign-designer-guide/): The AI Sign Designer converts customer-uploaded images into vector SVG outlines for sign production. - [Linking to an External Page for Custom Designs](https://www.signcustomiser.com/help/ai-sign-designer/linking-to-an-external-page-for-custom-designs/): Instead of embedding a custom form within the customiser, you can add a link to an external page. This link will be placed at the top of the selections column in your customiser. - [How to Enable AI Sign Designer](https://www.signcustomiser.com/help/ai-sign-designer/16084580-how-to-enable-ai-sign-designer/): Enable AI Sign Designer on an existing customiser, configure its fallback form and pricing, then test the customer experience. - [Change the instructions on the Custom Design screen](https://www.signcustomiser.com/help/ai-sign-designer/additional-information-to-your-forms-custom-design-screen/): Change the main heading and step text shown beside a form on the customer-facing Custom tab, and find the right settings when you are currently editing the form itself. - [Set the Custom Design Form as the Initial Screen](https://www.signcustomiser.com/help/ai-sign-designer/set-the-custom-design-form-as-the-initial-screen/): If you have created and embedded a Custom Design Form in your customiser, you can set it as the initial screen, replacing the default sign visualiser. - [Custom Design Forms](https://www.signcustomiser.com/help/ai-sign-designer/custom-design-forms/): A Custom Design Form is a built-in contact form within the Sign Customiser app, allowing merchants to collect custom design requests that the app cannot automatically generate. - [Add and Edit Custom Form Field Options](https://www.signcustomiser.com/help/ai-sign-designer/add-and-edit-custom-form-field-options/): This guide will walk you through adding and editing fields in your custom form. ## Your Account - [Subscription Plans and Billing Explained](https://www.signcustomiser.com/help/your-account/subscription-plans-and-billing-explained/): Sign Customiser offers flexible billing plans for both Shopify and Universal platforms. - [Accepting Collaborator Request in Shopify](https://www.signcustomiser.com/help/your-account/accepting-collaborator-request-in-shopify/): If you are having difficulty setting up your customiser or are experiencing an issue in Shopify, our support team may ask for permission to access your store so we can investigate and resolve the issue for you. - [How to unsubscribe from plan](https://www.signcustomiser.com/help/your-account/how-to-unsubscribe-from-plan/): To unsubscribe or cancel your current plan with Sign Customiser, you will need to You can follow these steps. - [How to find and download your invoices](https://www.signcustomiser.com/help/your-account/how-to-view-invoices/): Your invoice location depends on whether you pay for Sign Customiser through Universal or Shopify. ## Product & Order Management - [How to Disable VAT/Tax on Products](https://www.signcustomiser.com/help/product-management/how-to-disable-vat-tax-on-products/): By default, custom sign products have VAT enabled, based on the VAT settings in your Shopify account. - [Order fulfilment for in-house and outsourced production](https://www.signcustomiser.com/help/product-management/fulfillment-process/): Sign Customiser supports sign businesses that manufacture in-house, outsource production or use a mix of both. - [Export orders as CSV via email](https://www.signcustomiser.com/help/product-management/14505731-export-orders-as-csv-via-email/): Export your Sign Customiser orders as a CSV spreadsheet delivered to your email, with preset or custom date ranges and full customisation details. - [Supplier / Manufacturer Emails](https://www.signcustomiser.com/help/product-management/supplier-manufacturer-emails/): Yes. - [SVG, EPS and .AI files for manufacturing workflows](https://www.signcustomiser.com/help/product-management/svg-files-for-manufacturering-workflows/): To speed up the manufacturing process, Sign Customiser can automatically generate an SVG file of the sign design for CNC machines and help speed up tracing the sign's letter layout. - [Update manufacturer email address](https://www.signcustomiser.com/help/product-management/update-manufacturer-email-address/): You can add one more email address by appending each email with a ',' character e.g. - [How to include SVG, EPS, and Illustrator-compatible PDF files in manufacturer emails](https://www.signcustomiser.com/help/product-management/how-to-include-the-svg-file-for-manufacturer-emails/): To include SVG, EPS, or Illustrator-compatible PDF files in your supplier/manufacturer email please follow these instructions. - [How to enable/disable SVG, EPS, and Illustrator-compatible PDF files for manufacturing](https://www.signcustomiser.com/help/product-management/how-to-enable-disable-svg-files-for-manufacturing/): To enable/disable SVG, EPS, and Illustrator-compatible PDF files for manufacturing purposes please follow these instructions. - [How to find the SVG, EPS, .AI file in the Shopify](https://www.signcustomiser.com/help/product-management/how-to-find-the-svg-file-in-the-shopify-order/): whenever a sign is ordered, you can access the order in Shopify admin page and download the SVG file by clicking on the _svg: "Link". To use this feature, you must have already enabled the SVG Files for manufacturing. - [Hide Custom Sign Products from Your Storefront](https://www.signcustomiser.com/help/product-management/hide-custom-sign-products-from-your-storefront/): Every time a user adds a custom sign to the cart, our app creates the sign as a "product" in your Shopify backend. - [Automatically deleting generated products](https://www.signcustomiser.com/help/product-management/automatically-deleting-generated-products/): The products generated by the Sign Customiser are necessary for your users to purchase their customised products. - [Retrieve generated sign products not purchased](https://www.signcustomiser.com/help/product-management/retrieve-list-of-custom-neon-products-not-purchased/): Every generated sign product carries the sign-customiser-generated tag. - [How SEO is treated for Custom Signs in Shopify](https://www.signcustomiser.com/help/product-management/how-seo-is-treated-for-custom-signs-in-shopify/): The custom signs created by our app are automatically hidden from search engines. - [Change Shopify Sale Channel for Products](https://www.signcustomiser.com/help/product-management/change-shopify-sale-channel-for-products/): You can change the sales channel that a product generated by a sign customiser is assigned to by following these steps. - [Autogenerate SKU for sign products in Shopify?](https://www.signcustomiser.com/help/product-management/autogenerate-sku-for-sign-products-in-shopify/): Our app generates a new product in Shopify for every custom sign added to the cart by a customer. - [Free Shipping for Custom Products in Shopify](https://www.signcustomiser.com/help/product-management/free-shipping-for-custom-products-in-shopify/): If you are looking to provide free shipping for your custom sign products generated by our app, you might face challenges with Shopify's default settings. ## Universal App - [Change the primary currency for the store in the universal app.](https://www.signcustomiser.com/help/universal-app/change-the-primary-currency-for-the-store-in-the-universal-app/): In our universal app, you can change the base currency of all your customisers associated with that store. - [How to create an API Token](https://www.signcustomiser.com/help/universal-app/how-to-create-an-api-token/): API keys let another service access one Store through Sign Customiser's public API. - [Creating and managing multiple stores under one account](https://www.signcustomiser.com/help/universal-app/creating-and-managing-multiple-stores-under-one-account/): This feature is not currently supported for Shopify customers. - [How to invite additional users](https://www.signcustomiser.com/help/universal-app/how-to-invite-additional-users/): Shopify customers cannot invite additional users at this time Sign Customiser allows you to collaborate with team members by inviting them to your company account. - [How to get your Integration ID](https://www.signcustomiser.com/help/universal-app/how-to-get-your-integration-id/): The Integration ID is needed for embedding Sign Customiser on your website. - [Why don't I see any orders?](https://www.signcustomiser.com/help/universal-app/why-don-t-i-see-any-orders/): If you're unable to see your orders in our Universal Sign Customiser offering, it is likely due to a missing or incorrect API key configuration in your integration. ## Pricing and Sizing Models - [Pricing and Sizing](https://www.signcustomiser.com/help/pricing-and-sizing/14479452-pricing-and-sizing/): Overview of the three pricing models in Sign Customiser: the Simple Letter Model, the Advanced Letter Model, and the Frame Fit Model. - [Price letters by position](https://www.signcustomiser.com/help/pricing-and-sizing/16181225-price-letters-by-position/): Set a different price for each letter position in Simple Letter and Advanced Letter customisers. - [Getting Started with the Simple Letter Model](https://www.signcustomiser.com/help/pricing-and-sizing/getting-started-with-the-simple-letter-model/): The Simple Letter Model is ideal for merchants who sell signs with standardised width or height and straightforward pricing (e.g., 40 cm, 60cm, 80 cm). - [Configure Your Simple Letter Model Customiser (Core Setup)](https://www.signcustomiser.com/help/pricing-and-sizing/configure-your-simple-letter-model-customiser-core-setup/): Sizes in the Simple Letter Model are based on your size strategy: fixed width or fixed height combined with the maximum characters per line and maximum number of lines allowed for each size. - [How Pricing Works in the Simple Letter Model](https://www.signcustomiser.com/help/pricing-and-sizing/how-pricing-works-in-the-simple-letter-model/): The Simple Letter Model calculates the sign's final price based on these factors: Size selection – either width or height is fixed Number of lines Base price per line Price per character per line You can create... - [Request Essential Information – Simple Letter Model](https://www.signcustomiser.com/help/pricing-and-sizing/request-essential-information-simple-letter-model/): This guide explains how to collect the information you need from your manufacturer to set up the Simple Letter Model customiser. - [Getting Started with the Advanced Model](https://www.signcustomiser.com/help/pricing-and-sizing/getting-started-with-the-advanced-model/): The Letter Model is designed for merchants who need flexible pricing and scalable sign dimensions. - [Sizing - Advanced model](https://www.signcustomiser.com/help/pricing-and-sizing/sizing-advanced-model/): This guide explains how to configure Sizes for the Advanced letter Model. - [Pricing - Advanced letter model](https://www.signcustomiser.com/help/pricing-and-sizing/pricing-advanced-letter-model/): Pricing in the Advanced Letter Model allows you to combine multiple calculations to create a pricing structure that reflects your real production costs. - [Fonts - Advanced Model](https://www.signcustomiser.com/help/pricing-and-sizing/fonts-advanced-model/): This guide explains how to configure fonts for the Advanced Letter Model, assign pricing models, adjust font spacing, and test measurement accuracy. - [Letter Material Cost](https://www.signcustomiser.com/help/pricing-and-sizing/letter-material-cost/): Letter Material Cost is a pricing method used in the Advanced Letter Model. - [Understanding Font Measurements in the Advanced Letter Model](https://www.signcustomiser.com/help/pricing-and-sizing/font-characters-and-minimum-height/): This guide explains how and what you need to consider when setting the minimum font size in the Advanced Letter model. - [Manually calculate shipping cost value](https://www.signcustomiser.com/help/pricing-and-sizing/manually-calculate-shipping-cost-value/): To do these calculations yourself, first must have your shipping cost matrix provided to you by your supplier/freight company. - [Determine Material Cost from Average Cost per Letter](https://www.signcustomiser.com/help/pricing-and-sizing/determine-material-cost-from-average-cost-per-letter/): If your supplier provides an average cost per letter instead of a material cost per centimetre or inch, you can use the Advanced Letter Model to determine an appropriate Letter Material Cost. - [Request essential information - Advanced model](https://www.signcustomiser.com/help/pricing-and-sizing/request-essential-information-advanced-model/): This guide explains how to collect the information required from your manufacturer to configure the Advanced Letter Model customiser. - [Get your shipping cost matrix](https://www.signcustomiser.com/help/pricing-and-sizing/get-your-shipping-cost-matrix/): This Sign Customiser guide covers Get your shipping cost matrix with the steps and context you need to complete the workflow. - [Test Sign Measurement Accuracy](https://www.signcustomiser.com/help/pricing-and-sizing/test-sign-measurement-accuracy/): We have provided a way to test the measurement accuracy of your fonts using our app. This will allow you to manually measure the width, height and material length of any text combination with any font of your choosing. - [Sizing - Frame Fit Model](https://www.signcustomiser.com/help/pricing-and-sizing/sizing-frame-fit-model/): The frame (outer edges of a sign) is the primary factor for a sizing. - [Pricing - Frame Fit model](https://www.signcustomiser.com/help/pricing-and-sizing/pricing-frame-fit-model/): Pricing in the framefit model is very similar to the advanced letter model pricing. - [Frame Fit Model](https://www.signcustomiser.com/help/pricing-and-sizing/frame-fit-model/): Try it for yourself: Frame Fit Demo Frame Fit is a purpose-built pricing system engineered specifically for frame-based signage where the cost is determined entirely by the frame dimensions rather than the complexity... - [Introduction to the Fixed Height Model](https://www.signcustomiser.com/help/pricing-and-sizing/introduction-to-the-fixed-height-model/): A fixed height model is a collection of sizes, all of which are set to a nominated height per line measured in centimeters. - [Pricing - Fixed Height Model](https://www.signcustomiser.com/help/pricing-and-sizing/pricing-fixed-height-model/): With a fixed height model, the price of a neon sign is determined by its size, number of characters, number of lines, and font. Here are two examples to illustrate how pricing is calculated. - [Automatically switch to the next size up when character limit is reached](https://www.signcustomiser.com/help/pricing-and-sizing/automatically-switch-to-the-next-size-up-when-character-limit-is-reached/): For our fixed-width and fixed-height models you can set a character limit per size. ## FAQs - [Track marketing campaigns with UTM parameters](https://www.signcustomiser.com/help/faqs/14631311-track-marketing-campaigns-with-utm-parameters/): Sign Customiser captures UTM parameters from your storefront URLs and passes them into webhooks, emails, and JavaScript events so you can attribute form submissions and orders back to the campaign that drove them. - [Copy a customiser to another store you own](https://www.signcustomiser.com/help/faqs/15593914-copy-a-customiser-to-another-store-you-own/): Run more than one store? Our support team can copy a customiser from one of your stores into another. Here's what we need to do it. - [Understanding your integration Activity Log (errors explained)](https://www.signcustomiser.com/help/faqs/15788854-understanding-your-integration-activity-log-errors-explained/): What each entry in your Sign Customiser integration Activity Log means — for Shopify and custom/Universal integrations — and which errors are harmless versus need action. - [Find and share your referral link](https://www.signcustomiser.com/help/faqs/16010501-find-and-share-your-referral-link/): Find your referral link in the Sign Customiser admin, copy it, or send a referral invitation to another sign business. - [What can Sign Customiser do for my sign business?](https://www.signcustomiser.com/help/faqs/16098373-what-can-sign-customiser-do-for-my-sign-business/): Sign Customiser is sales and production-handoff software for sign businesses. - [Troubleshooting Zero-Amount Products Purchased on Shopify](https://www.signcustomiser.com/help/faqs/troubleshooting-zero-amount-products-purchased-on-shopify/): If you're experiencing zero-amount products being purchased on your Shopify store, it is most likely a bot built to detect $0 products on Shopify and purchase in the hopes of receiving a free product. - [Missing Permissions](https://www.signcustomiser.com/help/faqs/missing-permissions/): Shopify recently changed their API's that our app uses to create your custom text sign products within Shopify. - [Switch currency based on user's IP address - Shopify](https://www.signcustomiser.com/help/faqs/switch-currency-based-on-user-s-ip-address-shopify/): To automatically switch currency in your Sign Customiser based on a user’s IP address, you'll need to use a geolocation app. Here’s a list of apps that can help: Geolocation Apps on Shopify. - [Customiser status: active and inactive](https://www.signcustomiser.com/help/faqs/activating-customisers/): How customiser status works, how to recognise an inactive customiser, and when activation is not the cause of an add-to-cart problem. - [Can I add multiple sign customisers?](https://www.signcustomiser.com/help/faqs/can-i-add-multiple-sign-customisers/): Yes, you can set up multiple product customisers on one store to target different market demographics or A/B test pricing and features. - [Match your themes font family with Sign Customiser App](https://www.signcustomiser.com/help/faqs/match-your-themes-font-family-with-sign-customiser-app/): This article allows you to change the font family of the customiser to match your theme's font family. - [How to reduce TTF font file size](https://www.signcustomiser.com/help/faqs/how-to-reduce-ttf-font-file-size/): Large font file size can cause problems with page loading speed since you have dozens of fonts on your Sign Customiser page. - [Duplicating a customiser](https://www.signcustomiser.com/help/faqs/duplicating-a-customiser/): By following these instructions you can make an exact duplicate of a customiser on your current account. - [Link Base Price To Size Instead Of Font](https://www.signcustomiser.com/help/faqs/link-base-price-to-size-instead-of-font/): When two or more fonts are added to a sign the base price for each font are added together and can the total sign price more expensive then what is desired. - [Enable Shopify markets on your store](https://www.signcustomiser.com/help/faqs/enable-shopify-markets-on-your-store/): Shopify Markets is a cross-border management tool that helps you identify, set up, launch, optimize, and manage your international markets - all from a single store. - [Why is add to cart not working?](https://www.signcustomiser.com/help/faqs/why-is-add-to-cart-not-working/): There are several reasons that the add to cart step may not be working. The solution to the issue will depend on the platform you are using Sign Customiser with. - [Shopify Shipping Location Setup](https://www.signcustomiser.com/help/faqs/shopify-shipping-location-setup/): If your Shopify store uses multiple locations you need to ensure your default shipping location is set to fulfil orders otherwise you will encounter issues when trying to add a custom sign to your cart. - [Restoring Deleted Customisers](https://www.signcustomiser.com/help/faqs/restoring-deleted-customisers/): If you've accidentally deleted a customiser or need to bring back a previously deleted one, you can easily restore it from the deleted customisers page. Only customisers deleted after 2025-10-16 can be restored - [How to download fonts from a customiser](https://www.signcustomiser.com/help/faqs/how-to-download-fonts-from-a-customiser/): When working with custom signs, you may need to share the exact fonts used in your customiser with production partners, print shops, or your manufacturing team. - [Admin measurement units](https://www.signcustomiser.com/help/faqs/admin-measurement-units/): Displaying the measurement units in the admin of Sign Customiser - [Font min heights and rounding measurements](https://www.signcustomiser.com/help/faqs/font-min-heights-and-rounding-measurements/): This article applies to Advanced Model customisers only If you have the setting "No decimal" enabled for your customiser: while also having fonts with minimum heights set to decimal values you will encounter this... - [How to disable Cloudflare Proxy for Sign Customiser](https://www.signcustomiser.com/help/faqs/how-to-disable-cloudflare-proxy-for-sign-customiser/): If you're seeing errors when trying to connect Sign Customiser to your website, and your domain is protected by Cloudflare, it could be because Cloudflare's security features are blocking the connection. - [How do I set a password if I signed up with Google?](https://www.signcustomiser.com/help/faqs/16096134-how-do-i-set-a-password-if-i-signed-up-with-google/): You can sign in to the Sign Customiser merchant admin with Google, or with your email address and password. - [Why is add to cart blocked for some font characters?](https://www.signcustomiser.com/help/faqs/16230828-why-is-add-to-cart-blocked-for-some-font-characters/): A font can only draw the characters included in its font file. - [Tracking events for ad conversions](https://www.signcustomiser.com/help/faqs/tracking-events-for-ad-conversions/): A custom JavaScript event is fired every time a form submission is sent and when a customer adds a product to cart. - [Send Google Ads click IDs to your CRM](https://www.signcustomiser.com/help/faqs/14190105-send-google-ads-click-ids-to-your-crm/): Sign Customiser automatically captures Google Ads click IDs (gclid, gbraid, wbraid) from your customers and passes them into webhooks, emails, and JavaScript events so you can report offline conversions back to... - [Why is my pricing very different from my competitor's sign customiser](https://www.signcustomiser.com/help/faqs/why-is-my-pricing-very-different-from-my-competitor-s-sign-customiser/): One of the biggest misunderstandings about neon letter signs is how the prices and sizes can differ from the current version compared to competitors. - [Why Is Shopify Applying Double Tax to Newly Created Products?](https://www.signcustomiser.com/help/faqs/why-is-shopify-applying-double-tax-to-newly-created-products/): We have recently identified an issue in Shopify where taxes are being applied twice to newly created products in certain stores. This bug does not affect older products, only those that are newly added. ## Api Guides - [Authentication and key lifecycle](https://www.signcustomiser.com/help/api/guides/authentication/): Create, store, rotate, and revoke Store-scoped API keys safely. - [Canonical, legacy, and UI glossary](https://www.signcustomiser.com/help/api/guides/glossary/): Translate canonical API values to legacy spellings and current merchant-admin labels. - [Cold-start quickstart](https://www.signcustomiser.com/help/api/guides/quickstart/): Create a scoped key, identify its Store, list customisers, and read pricing. - [Errors and retries](https://www.signcustomiser.com/help/api/guides/errors-and-retries/): Interpret problem details and recover safely from validation, conflict, and rate-limit responses. - [Migrate from v2 to v3](https://www.signcustomiser.com/help/api/guides/migration-v2-to-v3/): Move previous-generation requests to v3 without duplicating writes or losing data. - [Versioning and deprecation policy](https://www.signcustomiser.com/help/api/guides/versioning/): Understand major versions, compatible additions, breaking changes, and the previous-generation API. ## API Reference - [API overview](https://www.signcustomiser.com/help/api/): REST API overview, authentication guidance, and endpoint index for Sign Customiser integrations. ## API: Current API, v3: Analytics - [Get an analytics summary](https://www.signcustomiser.com/help/api/v3-get-get-an-analytics-summary/): Return bounded operational totals for the authenticated Store. ## API: Current API, v3: Customiser backboards - [GET List backboards](https://www.signcustomiser.com/help/api/v3-get-list-backboards/): Lists the customiser's backboard options in the order the storefront presents them (`sort_order`, then id). - [POST Create a backboard](https://www.signcustomiser.com/help/api/v3-post-create-a-backboard/): Adds a backboard to the customiser, at the end of the current presentation order. - [POST Validate a backboard create](https://www.signcustomiser.com/help/api/v3-post-validate-a-backboard-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder backboards](https://www.signcustomiser.com/help/api/v3-post-reorder-backboards/): Sets the storefront presentation order of the customiser's backboards. - [POST Validate a backboard reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-backboard-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a backboard](https://www.signcustomiser.com/help/api/v3-get-get-a-backboard/): Returns one of the customiser's backboards. Requires `customisers:read` and is safe to retry. A backboard belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update a backboard](https://www.signcustomiser.com/help/api/v3-patch-update-a-backboard/): Applies an RFC 7396 JSON Merge Patch to one backboard: properties omitted from the body are unchanged, and `null` clears a nullable property (`description`, `backboard_type`, `outline_size`, `price_per_sq_cm`). - [POST Validate a backboard update](https://www.signcustomiser.com/help/api/v3-post-validate-a-backboard-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a backboard](https://www.signcustomiser.com/help/api/v3-delete-delete-a-backboard/): Removes the backboard and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a backboard delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-backboard-delete/): Dry-runs the delete without removing anything: an in-use backboard returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a backboard image](https://www.signcustomiser.com/help/api/v3-put-attach-a-backboard-image/): Takes the raster image of a staged upload and puts it in one of the backboard's two image slots, returning the backboard with that slot's `*_url` pointing at the new file. - [POST Validate a backboard image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-backboard-image-attach/): Dry-runs the attach: the slot must exist on this backboard, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a backboard image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-backboard-image/): Clears one of the backboard's image slots and deletes the stored file, returning a receipt naming what was removed and the backboard as it now stands. - [POST Validate a backboard image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-backboard-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, and anything else returns a 200 verdict. - [PUT Attach a backboard shape](https://www.signcustomiser.com/help/api/v3-put-attach-a-backboard-shape/): Takes the SVG of a staged upload and makes it this backboard's shape, returning the backboard with `geometry.has_custom_shape` true and `geometry.status` `pending`. - [POST Validate a backboard shape attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-backboard-shape-attach/): Dry-runs the attach: the upload must exist for this store and this API key, and its purpose must be `backboard_shape_svg`. - [Delete a backboard shape](https://www.signcustomiser.com/help/api/v3-delete-delete-a-backboard-shape/): Removes this backboard's shape and everything measured from it, returning a receipt and the backboard as it now stands. - [POST Validate a backboard shape delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-backboard-shape-delete/): Dry-runs the delete: a backboard with no shape answers the identical 404 the delete would, a shape-owned backboard answers the identical 422, and anything else returns a 200 verdict. ## API: Current API, v3: Customiser backlights - [GET List backlights](https://www.signcustomiser.com/help/api/v3-get-list-backlights/): Lists the customiser's backlight options in the order the storefront presents them (`sort_order`, then id). - [POST Create a backlight](https://www.signcustomiser.com/help/api/v3-post-create-a-backlight/): Adds a backlight to the customiser, at the end of the current presentation order. - [POST Validate a backlight create](https://www.signcustomiser.com/help/api/v3-post-validate-a-backlight-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder backlights](https://www.signcustomiser.com/help/api/v3-post-reorder-backlights/): Sets the storefront presentation order of the customiser's backlights. - [POST Validate a backlight reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-backlight-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a backlight](https://www.signcustomiser.com/help/api/v3-get-get-a-backlight/): Returns one backlight of the customiser. - [PATCH Update a backlight](https://www.signcustomiser.com/help/api/v3-patch-update-a-backlight/): Applies an RFC 7396 JSON Merge Patch to one backlight: properties omitted from the body are unchanged, and `null` clears a nullable property (`description`, `hexcode`, `multi_colour_hexcodes`, `min_width_cm`,... - [POST Validate a backlight update](https://www.signcustomiser.com/help/api/v3-post-validate-a-backlight-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a backlight](https://www.signcustomiser.com/help/api/v3-delete-delete-a-backlight/): Removes the backlight and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a backlight delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-backlight-delete/): Dry-runs the delete without removing anything: an in-use backlight returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a backlight image](https://www.signcustomiser.com/help/api/v3-put-attach-a-backlight-image/): Takes the raster image of a staged upload and puts it in one of the backlight's three image slots, returning the backlight with that slot's `*_url` pointing at the new file. - [POST Validate a backlight image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-backlight-image-attach/): Dry-runs the attach: the slot must exist on this backlight, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a backlight image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-backlight-image/): Clears one of the backlight's image slots and deletes the stored file, returning a receipt naming what was removed and the backlight as it now stands. - [POST Validate a backlight image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-backlight-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, a texture image the `custom_texture` finish still needs answers the identical 422, and anything else returns a 200 verdict. ## API: Current API, v3: Customiser colours - [GET List colours](https://www.signcustomiser.com/help/api/v3-get-list-colours/): Lists the customiser's colour options in the order the storefront presents them (`sort_order`, then id). - [POST Create a colour](https://www.signcustomiser.com/help/api/v3-post-create-a-colour/): Adds a colour to the customiser's main colour selection, at the end of the current presentation order. - [POST Validate a colour create](https://www.signcustomiser.com/help/api/v3-post-validate-a-colour-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder colours](https://www.signcustomiser.com/help/api/v3-post-reorder-colours/): Sets the storefront presentation order of the customiser's colours. - [POST Validate a colour reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-colour-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a colour](https://www.signcustomiser.com/help/api/v3-get-get-a-colour/): Returns one colour of the customiser's main colour selection. - [PATCH Update a colour](https://www.signcustomiser.com/help/api/v3-patch-update-a-colour/): Applies an RFC 7396 JSON Merge Patch to one colour: properties omitted from the body are unchanged, and `null` clears a nullable property (`description`, `hexcode`, `multi_colour_hexcodes`, `min_width_cm`,... - [POST Validate a colour update](https://www.signcustomiser.com/help/api/v3-post-validate-a-colour-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a colour](https://www.signcustomiser.com/help/api/v3-delete-delete-a-colour/): Removes the colour and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a colour delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-colour-delete/): Dry-runs the delete without removing anything: an in-use colour returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a colour image](https://www.signcustomiser.com/help/api/v3-put-attach-a-colour-image/): Takes the raster image of a staged upload and puts it in one of the colour's three image slots, returning the colour with that slot's `*_url` pointing at the new file. - [POST Validate a colour image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-colour-image-attach/): Dry-runs the attach: the slot must exist on this colour, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a colour image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-colour-image/): Clears one of the colour's image slots and deletes the stored file, returning a receipt naming what was removed and the colour as it now stands. - [POST Validate a colour image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-colour-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, a texture image the `custom_texture` finish still needs answers the identical 422, and anything else returns a 200 verdict. ## API: Current API, v3: Customiser extras - [GET List extras](https://www.signcustomiser.com/help/api/v3-get-list-extras/): Lists the customiser's extras in the order the storefront presents them (`sort_order`, then id). - [POST Create an extra](https://www.signcustomiser.com/help/api/v3-post-create-an-extra/): Adds an extra to the customiser, at the end of the current presentation order. - [POST Validate an extra create](https://www.signcustomiser.com/help/api/v3-post-validate-an-extra-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder extras](https://www.signcustomiser.com/help/api/v3-post-reorder-extras/): Sets the storefront presentation order of the customiser's extras. - [POST Validate an extra reorder](https://www.signcustomiser.com/help/api/v3-post-validate-an-extra-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get an extra](https://www.signcustomiser.com/help/api/v3-get-get-an-extra/): Returns one of the customiser's extras. Requires `customisers:read` and is safe to retry. An extra belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update an extra](https://www.signcustomiser.com/help/api/v3-patch-update-an-extra/): Applies an RFC 7396 JSON Merge Patch to one extra: properties omitted from the body are unchanged, and `null` clears a nullable property. - [POST Validate an extra update](https://www.signcustomiser.com/help/api/v3-post-validate-an-extra-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete an extra](https://www.signcustomiser.com/help/api/v3-delete-delete-an-extra/): Removes the extra and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate an extra delete](https://www.signcustomiser.com/help/api/v3-post-validate-an-extra-delete/): Dry-runs the delete without removing anything: an in-use extra returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach an extra image](https://www.signcustomiser.com/help/api/v3-put-attach-an-extra-image/): Takes the raster image of a staged upload and puts it in the extra's image slot, returning the extra with that slot's `*_url` pointing at the new file. - [POST Validate an extra image attach](https://www.signcustomiser.com/help/api/v3-post-validate-an-extra-image-attach/): Dry-runs the attach: the slot must exist on this extra, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete an extra image](https://www.signcustomiser.com/help/api/v3-delete-delete-an-extra-image/): Clears one of the extra's image slots and deletes the stored file, returning a receipt naming what was removed and the extra as it now stands. - [POST Validate an extra image delete](https://www.signcustomiser.com/help/api/v3-post-validate-an-extra-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, and anything else returns a 200 verdict. - [PUT Attach an extra choice image](https://www.signcustomiser.com/help/api/v3-put-attach-an-extra-choice-image/): Takes the raster image of a staged upload and puts it on one choice of a dropdown or image-choice extra, returning the extra with that choice's `*_url` pointing at the new file. - [POST Validate an extra choice image attach](https://www.signcustomiser.com/help/api/v3-post-validate-an-extra-choice-image-attach/): Dry-runs the attach: the extra must offer this choice, the slot must be one of the two, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete an extra choice image](https://www.signcustomiser.com/help/api/v3-delete-delete-an-extra-choice-image/): Clears one of a choice's two picture slots and deletes the stored file, returning a receipt naming what was removed and the extra as it now stands. - [POST Validate an extra choice image delete](https://www.signcustomiser.com/help/api/v3-post-validate-an-extra-choice-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, and anything else returns a 200 verdict. ## API: Current API, v3: Customiser fonts - [GET List fonts](https://www.signcustomiser.com/help/api/v3-get-list-fonts/): Lists the customiser's font options in the order the storefront presents them (`sort_order`, then id). - [POST Create a font](https://www.signcustomiser.com/help/api/v3-post-create-a-font/): Adds a font to the customiser, at the end of the current presentation order. - [POST Validate a font create](https://www.signcustomiser.com/help/api/v3-post-validate-a-font-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder fonts](https://www.signcustomiser.com/help/api/v3-post-reorder-fonts/): Sets the storefront presentation order of the customiser's fonts. - [POST Validate a font reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-font-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a font](https://www.signcustomiser.com/help/api/v3-get-get-a-font/): Returns one of the customiser's fonts. Requires `customisers:read` and is safe to retry. A font belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update a font](https://www.signcustomiser.com/help/api/v3-patch-update-a-font/): Applies an RFC 7396 JSON Merge Patch to one font: properties omitted from the body are unchanged, and `null` clears a nullable property (`line_height`, the minimum letter heights, and every reference). - [POST Validate a font update](https://www.signcustomiser.com/help/api/v3-post-validate-a-font-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a font](https://www.signcustomiser.com/help/api/v3-delete-delete-a-font/): Removes the font and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a font delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-font-delete/): Dry-runs the delete without removing anything: an in-use font returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a font file](https://www.signcustomiser.com/help/api/v3-put-attach-a-font-file/): Takes the TrueType file of a staged upload and makes it this font's typeface, returning the font with `font_file.has_font_file` true and a live `ttf_url`. - [POST Validate a font file attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-font-file-attach/): Dry-runs the attach: the upload must exist for this store and this API key, and its purpose must be `font_ttf`. - [Delete a font file](https://www.signcustomiser.com/help/api/v3-delete-delete-a-font-file/): Removes this font's typeface and deletes the stored file, returning a receipt naming what was removed and the font as it now stands. - [POST Validate a font file delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-font-file-delete/): Dry-runs the delete: a font with no typeface answers the identical 404 the delete would, and one with a file returns a 200 verdict. ## API: Current API, v3: Customiser font tiers - [GET List font tiers](https://www.signcustomiser.com/help/api/v3-get-list-font-tiers/): Lists the customiser's font tiers, oldest first. - [POST Create a font tier](https://www.signcustomiser.com/help/api/v3-post-create-a-font-tier/): Adds a font tier to the customiser. - [POST Validate a font tier create](https://www.signcustomiser.com/help/api/v3-post-validate-a-font-tier-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [Get a font tier](https://www.signcustomiser.com/help/api/v3-get-get-a-font-tier/): Returns one of the customiser's font tiers. Requires `pricing:read` and is safe to retry. A font tier belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update a font tier](https://www.signcustomiser.com/help/api/v3-patch-update-a-font-tier/): Applies an RFC 7396 JSON Merge Patch to one font tier: properties omitted from the body are unchanged. - [POST Validate a font tier update](https://www.signcustomiser.com/help/api/v3-post-validate-a-font-tier-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a font tier](https://www.signcustomiser.com/help/api/v3-delete-delete-a-font-tier/): Removes the font tier and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a font tier delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-font-tier-delete/): Dry-runs the delete without removing anything: an in-use tier returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. ## API: Current API, v3: Customiser forms - [GET List forms](https://www.signcustomiser.com/help/api/v3-get-list-forms/): Lists the customiser's forms in the order the storefront presents them (`sort_order`, then id). - [POST Create a form](https://www.signcustomiser.com/help/api/v3-post-create-a-form/): Adds a form to the customiser, at the end of the current presentation order. - [POST Validate a form create](https://www.signcustomiser.com/help/api/v3-post-validate-a-form-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder forms](https://www.signcustomiser.com/help/api/v3-post-reorder-forms/): Sets the storefront presentation order of the customiser's forms. - [POST Validate a form reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-form-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a form](https://www.signcustomiser.com/help/api/v3-get-get-a-form/): Returns one of the customiser's forms. Requires `customisers:read` and is safe to retry. A form belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update a form](https://www.signcustomiser.com/help/api/v3-patch-update-a-form/): Applies an RFC 7396 JSON Merge Patch to one form: properties omitted from the body are unchanged, and `null` clears a nullable property. - [POST Validate a form update](https://www.signcustomiser.com/help/api/v3-post-validate-a-form-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a form](https://www.signcustomiser.com/help/api/v3-delete-delete-a-form/): Removes the form and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a form delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-form-delete/): Dry-runs the delete without removing anything: a form the customiser's settings still point at returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. ## API: Current API, v3: Customiser icons - [GET List icons](https://www.signcustomiser.com/help/api/v3-get-list-icons/): Lists the customiser's icons in the order the storefront presents them (`sort_order`, then id). - [POST Create an icon](https://www.signcustomiser.com/help/api/v3-post-create-an-icon/): Adds an icon to the customiser, at the end of the current presentation order. - [POST Validate an icon create](https://www.signcustomiser.com/help/api/v3-post-validate-an-icon-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder icons](https://www.signcustomiser.com/help/api/v3-post-reorder-icons/): Sets the storefront presentation order of the customiser's icons. - [POST Validate an icon reorder](https://www.signcustomiser.com/help/api/v3-post-validate-an-icon-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get an icon](https://www.signcustomiser.com/help/api/v3-get-get-an-icon/): Returns one of the customiser's icons. Requires `customisers:read` and is safe to retry. An icon belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update an icon](https://www.signcustomiser.com/help/api/v3-patch-update-an-icon/): Applies an RFC 7396 JSON Merge Patch to one icon: properties omitted from the body are unchanged, and `null` clears `min_height_cm`. - [POST Validate an icon update](https://www.signcustomiser.com/help/api/v3-post-validate-an-icon-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete an icon](https://www.signcustomiser.com/help/api/v3-delete-delete-an-icon/): Removes the icon and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate an icon delete](https://www.signcustomiser.com/help/api/v3-post-validate-an-icon-delete/): Dry-runs the delete without removing anything, returning a 200 verdict when the delete would succeed. ## API: Current API, v3: Customiser jackets - [GET List jackets](https://www.signcustomiser.com/help/api/v3-get-list-jackets/): Lists the customiser's jacket options in the order the storefront presents them (`sort_order`, then id). - [POST Create a jacket](https://www.signcustomiser.com/help/api/v3-post-create-a-jacket/): Adds a jacket to the customiser, at the end of the current presentation order. - [POST Validate a jacket create](https://www.signcustomiser.com/help/api/v3-post-validate-a-jacket-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder jackets](https://www.signcustomiser.com/help/api/v3-post-reorder-jackets/): Sets the storefront presentation order of the customiser's jackets. - [POST Validate a jacket reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-jacket-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a jacket](https://www.signcustomiser.com/help/api/v3-get-get-a-jacket/): Returns one of the customiser's jackets. Requires `customisers:read` and is safe to retry. A jacket belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update a jacket](https://www.signcustomiser.com/help/api/v3-patch-update-a-jacket/): Applies an RFC 7396 JSON Merge Patch to one jacket: properties omitted from the body are unchanged, and `null` clears a nullable property (`description`). - [POST Validate a jacket update](https://www.signcustomiser.com/help/api/v3-post-validate-a-jacket-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a jacket](https://www.signcustomiser.com/help/api/v3-delete-delete-a-jacket/): Removes the jacket and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a jacket delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-jacket-delete/): Dry-runs the delete without removing anything: an in-use jacket returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. ## API: Current API, v3: Customiser labels - [Get customiser labels](https://www.signcustomiser.com/help/api/v3-get-get-customiser-labels/): Retrieve every customer-facing label on the customiser as one canonical document. - [PATCH Update customiser labels](https://www.signcustomiser.com/help/api/v3-patch-update-customiser-labels/): Partially update the customiser's labels with a JSON Merge Patch (RFC 7396) of the document the read operation returns: the request body is a JSON object containing only the labels to change. - [POST Validate customiser labels](https://www.signcustomiser.com/help/api/v3-post-validate-customiser-labels/): Dry-run a labels merge patch without persisting anything. - [PUT Attach the labels product image](https://www.signcustomiser.com/help/api/v3-put-attach-the-labels-product-image/): Takes the raster image of a staged upload and makes it the labels document's product image — the picture shown beside the product title in the summary — returning the labels with `product_image_url` pointing at the... - [POST Validate a labels product image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-labels-product-image-attach/): Dry-runs the attach: the upload must exist for this store and this API key, and its purpose must be `label_image`. - [Delete the labels product image](https://www.signcustomiser.com/help/api/v3-delete-delete-the-labels-product-image/): Clears the labels document's product image and deletes the stored file, returning a receipt naming what was removed and the labels as they now stand. - [POST Validate a labels product image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-labels-product-image-delete/): Dry-runs the delete: a document with no product image answers the identical 404 the delete would, and one with an image returns a 200 verdict. ## API: Current API, v3: Customiser languages - [GET List customiser languages](https://www.signcustomiser.com/help/api/v3-get-list-customiser-languages/): List the customiser's languages in the order they were added. - [POST Create a customiser language](https://www.signcustomiser.com/help/api/v3-post-create-a-customiser-language/): Add a language to the customiser. - [POST Validate a customiser language](https://www.signcustomiser.com/help/api/v3-post-validate-a-customiser-language/): Dry-run a language create without persisting anything. - [Get a customiser language](https://www.signcustomiser.com/help/api/v3-get-get-a-customiser-language/): Retrieve one language of the customiser by its language code. - [Delete a customiser language](https://www.signcustomiser.com/help/api/v3-delete-delete-a-customiser-language/): Remove a language and every translation row it holds, and return a receipt: the language exactly as it was immediately before deletion. - [POST Validate deleting a customiser language](https://www.signcustomiser.com/help/api/v3-post-validate-deleting-a-customiser-language/): Dry-run a language delete without removing anything. - [POST Publish a customiser language](https://www.signcustomiser.com/help/api/v3-post-publish-a-customiser-language/): Promote the language draft copy to its published copy, which is what the storefront serves. - [POST Validate publishing a customiser language](https://www.signcustomiser.com/help/api/v3-post-validate-publishing-a-customiser-language/): Dry-run a language publish without promoting anything. - [POST Set the default customiser language](https://www.signcustomiser.com/help/api/v3-post-set-the-default-customiser-language/): Make this language the customiser default: the source every other language is translated from, and the copy the storefront falls back to when a shopper locale has no published language. - [POST Validate setting the default customiser language](https://www.signcustomiser.com/help/api/v3-post-validate-setting-the-default-customiser-language/): Dry-run a set-default without changing anything. - [POST Cancel an AI translation](https://www.signcustomiser.com/help/api/v3-post-cancel-an-ai-translation/): Stop the AI translation currently writing this language draft copy. - [POST Validate cancelling an AI translation](https://www.signcustomiser.com/help/api/v3-post-validate-cancelling-an-ai-translation/): Dry-run an AI translation cancel without stopping anything. - [GET List language translations](https://www.signcustomiser.com/help/api/v3-get-list-language-translations/): List the translation rows of one customiser language, in catalogue order — the order the merchant admin editor presents them in, which groups related copy together and stays stable across pages. - [PATCH Update language translations](https://www.signcustomiser.com/help/api/v3-patch-update-language-translations/): Write draft values for the language. - [POST Validate language translations](https://www.signcustomiser.com/help/api/v3-post-validate-language-translations/): Dry-run a translation write without persisting anything. ## API: Current API, v3: Customiser legacy fixed-height sizes - [GET List legacy fixed-height sizes](https://www.signcustomiser.com/help/api/v3-get-list-legacy-fixed-height-sizes/): Lists the customiser's legacy fixed-height sizes in the order the storefront presents them (`sort_order`, then id). - [Get a legacy fixed-height size](https://www.signcustomiser.com/help/api/v3-get-get-a-legacy-fixed-height-size/): Returns one of the customiser's legacy fixed-height sizes. - [Delete a legacy fixed-height size](https://www.signcustomiser.com/help/api/v3-delete-delete-a-legacy-fixed-height-size/): Removes the legacy fixed-height size and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a legacy fixed-height size delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-legacy-fixed-height-size-delete/): Dry-runs the delete without removing anything: an in-use size returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. ## API: Current API, v3: Customiser length pricings - [GET List length pricings](https://www.signcustomiser.com/help/api/v3-get-list-length-pricings/): Lists the customiser's length pricings, oldest first. - [POST Create a length pricing](https://www.signcustomiser.com/help/api/v3-post-create-a-length-pricing/): Adds a length pricing to the customiser. - [POST Validate a length pricing create](https://www.signcustomiser.com/help/api/v3-post-validate-a-length-pricing-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [Get a length pricing](https://www.signcustomiser.com/help/api/v3-get-get-a-length-pricing/): Returns one of the customiser's length pricings. - [PATCH Update a length pricing](https://www.signcustomiser.com/help/api/v3-patch-update-a-length-pricing/): Applies an RFC 7396 JSON Merge Patch to one length pricing: properties omitted from the body are unchanged, and the nested `shipping` object merges member by member. - [POST Validate a length pricing update](https://www.signcustomiser.com/help/api/v3-post-validate-a-length-pricing-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a length pricing](https://www.signcustomiser.com/help/api/v3-delete-delete-a-length-pricing/): Removes the length pricing and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a length pricing delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-length-pricing-delete/): Dry-runs the delete without removing anything: an in-use price list returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. ## API: Current API, v3: Customiser letter parts - [GET List letter-part colour selections](https://www.signcustomiser.com/help/api/v3-get-list-letter-part-colour-selections/): Lists the letter type's materialised letter-part colour selections. - [POST Create a letter-part colour selection](https://www.signcustomiser.com/help/api/v3-post-create-a-letter-part-colour-selection/): Creates the colour selection for one part of a letter type. - [POST Validate a letter-part colour selection create](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-colour-selection-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [Get a letter-part colour selection](https://www.signcustomiser.com/help/api/v3-get-get-a-letter-part-colour-selection/): Returns one letter-part colour selection, addressed by its letter type and letter part. - [PATCH Update a letter-part colour selection](https://www.signcustomiser.com/help/api/v3-patch-update-a-letter-part-colour-selection/): Applies an RFC 7396 JSON Merge Patch to one letter-part colour selection: properties omitted from the body are unchanged, and `null` clears a nullable property (`name`, `description`, `optional_label`). - [POST Validate a letter-part colour selection update](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-colour-selection-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a letter-part colour selection](https://www.signcustomiser.com/help/api/v3-delete-delete-a-letter-part-colour-selection/): Removes a letter part's colour selection and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a letter-part colour selection delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-colour-selection-delete/): Dry-runs the delete without removing anything: a bucket that cannot be removed returns the identical problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a letter part default upload image](https://www.signcustomiser.com/help/api/v3-put-attach-a-letter-part-default-upload-image/): Takes the raster image of a staged upload and puts it in the letter part's `default_upload_image` slot, returning the letter part with `default_upload_image_url` pointing at the new file. - [POST Validate a letter part default upload image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-default-upload-image-attach/): Dry-runs the attach: the slot must exist on this letter part, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a letter part default upload image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-letter-part-default-upload-image/): Clears the letter part's `default_upload_image` slot and deletes the stored file, returning a receipt naming what was removed and the letter part as it now stands. - [POST Validate a letter part default upload image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-default-upload-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, and anything else returns a 200 verdict. - [GET List a letter part's colours](https://www.signcustomiser.com/help/api/v3-get-list-a-letter-part-s-colours/): Lists the colours a customer can pick for this letter part, in the order the storefront presents them (`sort_order`, then id). - [POST Create a letter part's colour](https://www.signcustomiser.com/help/api/v3-post-create-a-letter-part-s-colour/): Adds a colour to this letter part's colour selection, at the end of its presentation order. - [POST Validate a letter part colour create](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-colour-create/): Dry-runs the create without persisting anything, returning the same problems the create would return or a 200 verdict when it would succeed. - [POST Reorder a letter part's colours](https://www.signcustomiser.com/help/api/v3-post-reorder-a-letter-part-s-colours/): Sets the presentation order of this letter part's colours. - [POST Validate a letter part colour reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-colour-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a letter part's colour](https://www.signcustomiser.com/help/api/v3-get-get-a-letter-part-s-colour/): Returns one colour of this letter part's colour selection. - [PATCH Update a letter part's colour](https://www.signcustomiser.com/help/api/v3-patch-update-a-letter-part-s-colour/): Applies an RFC 7396 JSON Merge Patch to one of this letter part's colours. - [POST Validate a letter part colour update](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-colour-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a letter part's colour](https://www.signcustomiser.com/help/api/v3-delete-delete-a-letter-part-s-colour/): Removes the colour and returns a deletion receipt: a snapshot of exactly what was removed. - [POST Validate a letter part colour delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-colour-delete/): Dry-runs the delete without removing anything: an in-use colour returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a letter part colour image](https://www.signcustomiser.com/help/api/v3-put-attach-a-letter-part-colour-image/): Takes the raster image of a staged upload and puts it in one of the colour's three image slots, returning the colour with that slot's `*_url` pointing at the new file. - [POST Validate a letter part colour image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-colour-image-attach/): Dry-runs the attach: the slot must exist on this colour, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a letter part colour image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-letter-part-colour-image/): Clears one of the colour's image slots and deletes the stored file, returning a receipt naming what was removed and the colour as it now stands. - [POST Validate a letter part colour image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-part-colour-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, a texture image the `custom_texture` finish still needs answers the identical 422, and anything else returns a 200 verdict. ## API: Current API, v3: Customiser letter types - [GET List letter types](https://www.signcustomiser.com/help/api/v3-get-list-letter-types/): Lists the customiser's letter types in the order the storefront presents them (`sort_order`, then id). - [POST Create a letter type](https://www.signcustomiser.com/help/api/v3-post-create-a-letter-type/): Adds a letter type to the customiser, at the end of the current presentation order. - [POST Validate a letter type create](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-type-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder letter types](https://www.signcustomiser.com/help/api/v3-post-reorder-letter-types/): Sets the storefront presentation order of the customiser's letter types. - [POST Validate a letter type reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-type-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a letter type](https://www.signcustomiser.com/help/api/v3-get-get-a-letter-type/): Returns one letter type of the customiser. - [PATCH Update a letter type](https://www.signcustomiser.com/help/api/v3-patch-update-a-letter-type/): Applies an RFC 7396 JSON Merge Patch to one letter type: properties omitted from the body are unchanged, and `null` clears a nullable property (`description`, `shape`). - [POST Validate a letter type update](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-type-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a letter type](https://www.signcustomiser.com/help/api/v3-delete-delete-a-letter-type/): Removes the letter type and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a letter type delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-type-delete/): Dry-runs the delete without removing anything: a referenced letter type returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a letter type image](https://www.signcustomiser.com/help/api/v3-put-attach-a-letter-type-image/): Takes the raster image of a staged upload and puts it in the letter type's image slot, returning the letter type with that slot's `*_url` pointing at the new file. - [POST Validate a letter type image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-type-image-attach/): Dry-runs the attach: the slot must exist on this letter type, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a letter type image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-letter-type-image/): Clears one of the letter type's image slots and deletes the stored file, returning a receipt naming what was removed and the letter type as it now stands. - [POST Validate a letter type image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-letter-type-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, and anything else returns a 200 verdict. ## API: Current API, v3: Customiser materials - [GET List materials](https://www.signcustomiser.com/help/api/v3-get-list-materials/): Lists the customiser's material options in the order the storefront presents them (`sort_order`, then id). - [POST Create a material](https://www.signcustomiser.com/help/api/v3-post-create-a-material/): Adds a material to the customiser, at the end of the current presentation order. - [POST Validate a material create](https://www.signcustomiser.com/help/api/v3-post-validate-a-material-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder materials](https://www.signcustomiser.com/help/api/v3-post-reorder-materials/): Sets the storefront presentation order of the customiser's materials. - [POST Validate a material reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-material-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a material](https://www.signcustomiser.com/help/api/v3-get-get-a-material/): Returns one of the customiser's materials. Requires `customisers:read` and is safe to retry. A material belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update a material](https://www.signcustomiser.com/help/api/v3-patch-update-a-material/): Applies an RFC 7396 JSON Merge Patch to one material: properties omitted from the body are unchanged, and `null` clears a nullable property (`description`). - [POST Validate a material update](https://www.signcustomiser.com/help/api/v3-post-validate-a-material-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a material](https://www.signcustomiser.com/help/api/v3-delete-delete-a-material/): Removes the material and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a material delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-material-delete/): Dry-runs the delete without removing anything: an in-use material returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a material image](https://www.signcustomiser.com/help/api/v3-put-attach-a-material-image/): Takes the raster image of a staged upload and puts it in one of the material's two image slots, returning the material with that slot's `*_url` pointing at the new file. - [POST Validate a material image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-material-image-attach/): Dry-runs the attach: the slot must exist on this material, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a material image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-material-image/): Clears one of the material's image slots and deletes the stored file, returning a receipt naming what was removed and the material as it now stands. - [POST Validate a material image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-material-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, and anything else returns a 200 verdict. ## API: Current API, v3: Customiser mounting colours - [GET List mounting colours](https://www.signcustomiser.com/help/api/v3-get-list-mounting-colours/): Lists the customiser's mounting colour options in the order the storefront presents them (`sort_order`, then id). - [POST Create a mounting colour](https://www.signcustomiser.com/help/api/v3-post-create-a-mounting-colour/): Adds a mounting colour to the customiser, at the end of the current presentation order. - [POST Validate a mounting colour create](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-colour-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder mounting colours](https://www.signcustomiser.com/help/api/v3-post-reorder-mounting-colours/): Sets the storefront presentation order of the customiser's mounting colours. - [POST Validate a mounting colour reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-colour-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a mounting colour](https://www.signcustomiser.com/help/api/v3-get-get-a-mounting-colour/): Returns one of the customiser's mounting colours. - [PATCH Update a mounting colour](https://www.signcustomiser.com/help/api/v3-patch-update-a-mounting-colour/): Applies an RFC 7396 JSON Merge Patch to one mounting colour: properties omitted from the body are unchanged, and `null` clears a nullable property (`description`, the minimum sizes). - [POST Validate a mounting colour update](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-colour-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a mounting colour](https://www.signcustomiser.com/help/api/v3-delete-delete-a-mounting-colour/): Removes the mounting colour and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a mounting colour delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-colour-delete/): Dry-runs the delete without removing anything: an in-use mounting colour returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a mounting colour image](https://www.signcustomiser.com/help/api/v3-put-attach-a-mounting-colour-image/): Takes the raster image of a staged upload and puts it in one of the mounting colour's two image slots, returning the mounting colour with that slot's `*_url` pointing at the new file. - [POST Validate a mounting colour image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-colour-image-attach/): Dry-runs the attach: the slot must exist on this mounting colour, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a mounting colour image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-mounting-colour-image/): Clears one of the mounting colour's image slots and deletes the stored file, returning a receipt naming what was removed and the mounting colour as it now stands. - [POST Validate a mounting colour image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-colour-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, and anything else returns a 200 verdict. ## API: Current API, v3: Customiser mountings - [GET List mountings](https://www.signcustomiser.com/help/api/v3-get-list-mountings/): Lists the customiser's mounting options in the order the storefront presents them (`sort_order`, then id). - [POST Create a mounting](https://www.signcustomiser.com/help/api/v3-post-create-a-mounting/): Adds a mounting to the customiser, at the end of the current presentation order. - [POST Validate a mounting create](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder mountings](https://www.signcustomiser.com/help/api/v3-post-reorder-mountings/): Sets the storefront presentation order of the customiser's mountings. - [POST Validate a mounting reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a mounting](https://www.signcustomiser.com/help/api/v3-get-get-a-mounting/): Returns one of the customiser's mountings. Requires `customisers:read` and is safe to retry. A mounting belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update a mounting](https://www.signcustomiser.com/help/api/v3-patch-update-a-mounting/): Applies an RFC 7396 JSON Merge Patch to one mounting: properties omitted from the body are unchanged, and `null` clears a nullable property (`description`, the proportions). - [POST Validate a mounting update](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a mounting](https://www.signcustomiser.com/help/api/v3-delete-delete-a-mounting/): Removes the mounting and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a mounting delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-delete/): Dry-runs the delete without removing anything: an in-use mounting returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a mounting image](https://www.signcustomiser.com/help/api/v3-put-attach-a-mounting-image/): Takes the raster image of a staged upload and puts it in one of the mounting's two image slots, returning the mounting with that slot's `*_url` pointing at the new file. - [POST Validate a mounting image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-image-attach/): Dry-runs the attach: the slot must exist on this mounting, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a mounting image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-mounting-image/): Clears one of the mounting's image slots and deletes the stored file, returning a receipt naming what was removed and the mounting as it now stands. - [POST Validate a mounting image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-mounting-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, and anything else returns a 200 verdict. ## API: Current API, v3: Customiser presets - [GET List presets](https://www.signcustomiser.com/help/api/v3-get-list-presets/): Lists the customiser's presets, oldest first. - [POST Create a preset](https://www.signcustomiser.com/help/api/v3-post-create-a-preset/): Adds a preset to the customiser and returns it with the `code` the server generated for it. - [POST Validate a preset create](https://www.signcustomiser.com/help/api/v3-post-validate-a-preset-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [Get a preset](https://www.signcustomiser.com/help/api/v3-get-get-a-preset/): Returns one of the customiser's presets, including its design document. Requires `customisers:read` and is safe to retry. A preset belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update a preset](https://www.signcustomiser.com/help/api/v3-patch-update-a-preset/): Applies an RFC 7396 JSON Merge Patch to one preset: properties omitted from the body are unchanged. - [POST Validate a preset update](https://www.signcustomiser.com/help/api/v3-post-validate-a-preset-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a preset](https://www.signcustomiser.com/help/api/v3-delete-delete-a-preset/): Removes the preset and returns a deletion receipt: a snapshot of exactly what was removed, including its design document, so the caller can verify and report the change. - [POST Validate a preset delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-preset-delete/): Dry-runs the delete without removing anything, returning the same problem the delete would return or a 200 verdict when it would succeed. ## API: Current API, v3: Customisers - [GET List customisers](https://www.signcustomiser.com/help/api/v3-get-list-customisers/): List the store's customisers — the configurable sign products shoppers design on the storefront. - [Get a customiser](https://www.signcustomiser.com/help/api/v3-get-get-a-customiser/): Retrieve one customiser by its integer `id` (as returned by the list operation). - [GET List customiser prototypes](https://www.signcustomiser.com/help/api/v3-get-list-customiser-prototypes/): Lists every prototype a customiser can be created from, and says which of them this store may use. - [POST Create a customiser](https://www.signcustomiser.com/help/api/v3-post-create-a-customiser/): Creates a customiser from one of the store's prototypes. - [POST Validate a customiser create](https://www.signcustomiser.com/help/api/v3-post-validate-a-customiser-create/): Dry-runs the create without creating anything: the same body, the same prototype checks, and the same problems the create would return, or a 200 verdict when it would succeed. - [PATCH Update a customiser](https://www.signcustomiser.com/help/api/v3-patch-update-a-customiser/): Applies an RFC 7396 JSON Merge Patch to one customiser's metadata: properties omitted from the body are unchanged and an empty object `{}` is a valid no-op. - [POST Validate a customiser update](https://www.signcustomiser.com/help/api/v3-post-validate-a-customiser-update/): Dry-runs the metadata merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a customiser](https://www.signcustomiser.com/help/api/v3-delete-delete-a-customiser/): Deletes the customiser and returns a receipt: the id, `deleted: true`, and a `resource` snapshot of exactly what was deleted. - [POST Validate a customiser delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-customiser-delete/): Dry-runs the delete without removing anything: a customiser storefront products were created from returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [POST Activate a customiser](https://www.signcustomiser.com/help/api/v3-post-activate-a-customiser/): Puts the customiser live on the storefront. - [POST Validate a customiser activation](https://www.signcustomiser.com/help/api/v3-post-validate-a-customiser-activation/): Dry-runs the activation without changing anything: a customiser the store's plan has no room for returns the identical 422 `activation_not_allowed` problem the activation would return, and one that can go live... - [POST Deactivate a customiser](https://www.signcustomiser.com/help/api/v3-post-deactivate-a-customiser/): Takes the customiser off the storefront and frees the live slot it held. - [POST Validate a customiser deactivation](https://www.signcustomiser.com/help/api/v3-post-validate-a-customiser-deactivation/): Dry-runs the deactivation without changing anything, returning a 200 verdict whose `will_be_active` is false. Nothing is written and no idempotency key is consumed. Requires `customisers:write`. - [POST Restore a customiser](https://www.signcustomiser.com/help/api/v3-post-restore-a-customiser/): Brings a deleted customiser back, with its options, pricing, translations, and live state exactly as they were. - [POST Validate a customiser restore](https://www.signcustomiser.com/help/api/v3-post-validate-a-customiser-restore/): Dry-runs the restore without changing anything, returning a 200 verdict. ## API: Current API, v3: Customiser settings - [Get customiser settings](https://www.signcustomiser.com/help/api/v3-get-get-customiser-settings/): Retrieve the customiser's settings as one canonical document. - [PATCH Update customiser settings](https://www.signcustomiser.com/help/api/v3-patch-update-customiser-settings/): Partially update the customiser's settings with a JSON Merge Patch (RFC 7396) of the document the read operation returns: the request body is a JSON object containing only the properties to change. - [POST Validate customiser settings](https://www.signcustomiser.com/help/api/v3-post-validate-customiser-settings/): Dry-run a settings merge patch without persisting anything. ## API: Current API, v3: Customiser sizes - [GET List sizes](https://www.signcustomiser.com/help/api/v3-get-list-sizes/): Lists the customiser's sizes in the order the storefront presents them (`sort_order`, then id). - [POST Create a size](https://www.signcustomiser.com/help/api/v3-post-create-a-size/): Adds a size to the customiser, at the end of the current presentation order. - [POST Validate a size create](https://www.signcustomiser.com/help/api/v3-post-validate-a-size-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder sizes](https://www.signcustomiser.com/help/api/v3-post-reorder-sizes/): Sets the storefront presentation order of the customiser's sizes. - [POST Validate a size reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-size-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a size](https://www.signcustomiser.com/help/api/v3-get-get-a-size/): Returns one of the customiser's sizes. - [PATCH Update a size](https://www.signcustomiser.com/help/api/v3-patch-update-a-size/): Applies an RFC 7396 JSON Merge Patch to one size: properties omitted from the body are unchanged, and `null` clears a nullable property. - [POST Validate a size update](https://www.signcustomiser.com/help/api/v3-post-validate-a-size-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a size](https://www.signcustomiser.com/help/api/v3-delete-delete-a-size/): Removes the size and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a size delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-size-delete/): Dry-runs the delete without removing anything: an in-use size returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. ## API: Current API, v3: Customiser support finishes - [GET List support finishes](https://www.signcustomiser.com/help/api/v3-get-list-support-finishes/): Lists the customiser's support finish options — the colours and textures its backboards can be finished in — in the order the storefront presents them (`sort_order`, then id). - [POST Create a support finish](https://www.signcustomiser.com/help/api/v3-post-create-a-support-finish/): Adds a support finish to the customiser, at the end of the current presentation order. - [POST Validate a support finish create](https://www.signcustomiser.com/help/api/v3-post-validate-a-support-finish-create/): Dry-runs the create without persisting anything: the same body, the same validation, and the same problems the create would return, or a 200 verdict when it would succeed. - [POST Reorder support finishes](https://www.signcustomiser.com/help/api/v3-post-reorder-support-finishes/): Sets the storefront presentation order of the customiser's support finishes. - [POST Validate a support finish reorder](https://www.signcustomiser.com/help/api/v3-post-validate-a-support-finish-reorder/): Dry-runs the reorder without changing anything: membership drift returns the identical 422 the reorder would return, and a complete membership returns a 200 verdict. - [Get a support finish](https://www.signcustomiser.com/help/api/v3-get-get-a-support-finish/): Returns one support finish of the customiser. Requires `customisers:read` and is safe to retry. A finish belonging to another customiser or another store is indistinguishable from an unknown id. - [PATCH Update a support finish](https://www.signcustomiser.com/help/api/v3-patch-update-a-support-finish/): Applies an RFC 7396 JSON Merge Patch to one support finish: properties omitted from the body are unchanged, and `null` clears a nullable property (`description`, `hexcode`, `min_width_cm`, `min_height_cm`). - [POST Validate a support finish update](https://www.signcustomiser.com/help/api/v3-post-validate-a-support-finish-update/): Dry-runs the merge patch without persisting anything, returning the same problems the update would return or a 200 verdict when it would succeed. - [Delete a support finish](https://www.signcustomiser.com/help/api/v3-delete-delete-a-support-finish/): Removes the support finish and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. - [POST Validate a support finish delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-support-finish-delete/): Dry-runs the delete without removing anything: an in-use finish returns the identical 409 `resource_in_use` problem the delete would return, and a deletable one returns a 200 verdict. - [PUT Attach a support finish image](https://www.signcustomiser.com/help/api/v3-put-attach-a-support-finish-image/): Takes the raster image of a staged upload and puts it in one of the support finish's three image slots, returning the support finish with that slot's `*_url` pointing at the new file. - [POST Validate a support finish image attach](https://www.signcustomiser.com/help/api/v3-post-validate-a-support-finish-image-attach/): Dry-runs the attach: the slot must exist on this support finish, the upload must exist for this store and this API key, and its purpose must be the slot's. - [Delete a support finish image](https://www.signcustomiser.com/help/api/v3-delete-delete-a-support-finish-image/): Clears one of the support finish's image slots and deletes the stored file, returning a receipt naming what was removed and the support finish as it now stands. - [POST Validate a support finish image delete](https://www.signcustomiser.com/help/api/v3-post-validate-a-support-finish-image-delete/): Dry-runs the delete: an empty slot answers the identical 404 the delete would, a texture image the `texture` finish kind still needs answers the identical 422, and anything else returns a 200 verdict. ## API: Current API, v3: Orders - [GET List orders](https://www.signcustomiser.com/help/api/v3-get-list-orders/): List orders accepted and stored by Sign Customiser for the authenticated Store, newest first. - [POST Create an order](https://www.signcustomiser.com/help/api/v3-post-create-an-order/): Store one order received from an enabled custom integration for the authenticated Store. - [POST Queue an order CSV export](https://www.signcustomiser.com/help/api/v3-post-queue-an-order-csv-export/): Queue the established CSV export for an inclusive UTC creation-date range. - [GET Show an order](https://www.signcustomiser.com/help/api/v3-get-show-an-order/): Return one Store-scoped order with customer and address snapshots plus its modern line items. - [POST Queue an order email resend](https://www.signcustomiser.com/help/api/v3-post-queue-an-order-email-resend/): Queue the established order email again for the manufacturer recipient configured by the Store. ## API: Current API, v3: Pricing - [Get customiser pricing](https://www.signcustomiser.com/help/api/v3-get-get-customiser-pricing/): Retrieve the customiser's full pricing configuration as one canonical document. - [PUT Replace customiser pricing](https://www.signcustomiser.com/help/api/v3-put-replace-customiser-pricing/): Replace the customiser's entire pricing configuration with the request body — the full canonical document, exactly as the read operation returns it (no envelope). - [PATCH Update customiser pricing](https://www.signcustomiser.com/help/api/v3-patch-update-customiser-pricing/): Partially update the customiser's pricing with a JSON Merge Patch (RFC 7396) of the canonical document: the request body is a JSON object containing only the properties to change. - [POST Validate customiser pricing](https://www.signcustomiser.com/help/api/v3-post-validate-customiser-pricing/): Dry-run a pricing replacement without persisting anything. ## API: Current API, v3: Products - [GET List products](https://www.signcustomiser.com/help/api/v3-get-list-products/): List the authenticated Store's modern products in descending creation order. - [GET Show a product](https://www.signcustomiser.com/help/api/v3-get-show-a-product/): Return one modern product owned by the authenticated Store, including dimensions and safe public artwork URLs. - [GET Show product selections](https://www.signcustomiser.com/help/api/v3-get-show-product-selections/): Return the Store-local option ids captured for a modern product. - [POST Synchronise a product](https://www.signcustomiser.com/help/api/v3-post-synchronise-a-product/): Store one product created by an enabled custom integration for the authenticated Store and customiser. ## API: Current API, v3: Quotes - [GET List quotes](https://www.signcustomiser.com/help/api/v3-get-list-quotes/): Lists the authenticated Store's quote requests and custom-design form submissions, newest first. - [GET Retrieve a quote](https://www.signcustomiser.com/help/api/v3-get-retrieve-a-quote/): Returns one quote request or custom-design submission belonging to the authenticated Store. ## API: Current API, v3: Store - [Get the Store subscription](https://www.signcustomiser.com/help/api/v3-get-get-the-store-subscription/): Return the authenticated Store's current local subscription projection. ## API: Current API, v3: Stores - [Get the authenticated store](https://www.signcustomiser.com/help/api/v3-get-get-the-authenticated-store/): Identify the store your API key belongs to. ## API: Current API, v3: Uploads - [POST Create an upload](https://www.signcustomiser.com/help/api/v3-post-create-an-upload/): Declares a file and returns a short-lived presigned target to send its bytes to. - [POST Validate an upload create](https://www.signcustomiser.com/help/api/v3-post-validate-an-upload-create/): Dry-runs `POST /api/v3/uploads` with the same body. - [Get an upload](https://www.signcustomiser.com/help/api/v3-get-get-an-upload/): Returns an upload's metadata and current status. ## API: Current API, v3: Webhook events - [WEBHOOK Product created](https://www.signcustomiser.com/help/api/webhook-product-created/): Use this as the product creation callback for custom integrations. - [WEBHOOK Order created](https://www.signcustomiser.com/help/api/webhook-order-created/): Delivered when Sign Customiser records a completed order for your organisation. - [WEBHOOK Form submitted](https://www.signcustomiser.com/help/api/webhook-form-submitted/): Deprecated. ## API: Current API, v3: Webhook subscriptions - [GET List webhook subscriptions](https://www.signcustomiser.com/help/api/v3-get-list-webhook-subscriptions/): Lists the authenticated Store's outbound webhook subscriptions in stable creation order. - [POST Create a webhook subscription](https://www.signcustomiser.com/help/api/v3-post-create-a-webhook-subscription/): Registers an HTTPS callback for one topic. - [Get a webhook subscription](https://www.signcustomiser.com/help/api/v3-get-get-a-webhook-subscription/): Returns one Store-scoped subscription without its signing secret or provider metadata. Requires `webhooks:read` and is safe to retry. - [PATCH Update a webhook subscription](https://www.signcustomiser.com/help/api/v3-patch-update-a-webhook-subscription/): Applies an RFC 7396 JSON Merge Patch to `topic` and/or `url`. Omitted fields remain unchanged; null, read-only, and unknown fields are rejected. Requires `webhooks:write` and an `Idempotency-Key`. - [Delete a webhook subscription](https://www.signcustomiser.com/help/api/v3-delete-delete-a-webhook-subscription/): Deletes a directly managed subscription. - [GET List webhook event types](https://www.signcustomiser.com/help/api/v3-get-list-webhook-event-types/): Lists every event topic available for subscription, a static example of the payload currently delivered for that topic, and the existing signing verification guide. ## API: Previous generation: Custom integrations - [POST Create an order](https://www.signcustomiser.com/help/api/post-create-an-order/): Step 2 of the custom integration flow. - [POST Create a legacy order](https://www.signcustomiser.com/help/api/post-create-a-legacy-order/): Deprecated. Use `POST /api/v2/orders` for new integrations. - [POST Sync a legacy product](https://www.signcustomiser.com/help/api/post-sync-a-legacy-product/): Deprecated. Use the current custom integration flow for new builds. ## API: Previous generation: Customisers - [GET List customisers](https://www.signcustomiser.com/help/api/get-list-customisers/): Get all customisers for the current organisation. - [Get a customiser](https://www.signcustomiser.com/help/api/get-get-a-customiser/): Retrieve a single customiser. ## API: Previous generation: Pricing - [Get customiser pricing](https://www.signcustomiser.com/help/api/get-get-customiser-pricing/): Retrieve all pricing configuration for a customiser. - [PUT Update customiser pricing](https://www.signcustomiser.com/help/api/put-update-customiser-pricing/): Replace all pricing configuration for a customiser. ## API: Previous generation: Webhooks - [GET List all webhooks](https://www.signcustomiser.com/help/api/get-list-all-webhooks/): Get a list of all webhooks for the current organisation. - [POST Create a new webhook](https://www.signcustomiser.com/help/api/post-create-a-new-webhook/): Register a new webhook endpoint to receive event notifications. - [Get a single webhook](https://www.signcustomiser.com/help/api/get-get-a-single-webhook/): Retrieve details for a specific webhook. - [PUT Update a webhook](https://www.signcustomiser.com/help/api/put-update-a-webhook/): Update an existing webhook's topic, URL, or metadata. - [Delete a webhook](https://www.signcustomiser.com/help/api/delete-delete-a-webhook/): Remove a webhook subscription. - [GET Webhook payload examples](https://www.signcustomiser.com/help/api/get-webhook-payload-examples/): Retrieve example webhook payloads for a specific topic. If data exists for the current organisation, real data will be used. Otherwise, example data is returned. ## MCP Server - [MCP server overview](https://www.signcustomiser.com/help/mcp/): The hosted Sign Customiser MCP server: 39 curated tools plus 5 advanced ones, over OAuth, scoped to one store. - [Connect an assistant](https://www.signcustomiser.com/help/mcp/guides/connect/): Add the Sign Customiser connector to Claude, ChatGPT, Codex, Cursor or the MCP Inspector, and approve the scopes it asks for. - [Authentication](https://www.signcustomiser.com/help/mcp/guides/authentication/): How the connector authenticates: discovery, dynamic registration, PKCE, the resource binding, token lifetimes and revoking a connection. - [The advanced catalogue](https://www.signcustomiser.com/help/mcp/guides/advanced-catalogue/): Reach every /api/v3 operation through the advanced catalogue: searching operations, the four executors, and the safety rules they enforce. - [Code execution and Code Mode](https://www.signcustomiser.com/help/mcp/guides/code-mode/): Drive the connector from code: Cloudflare Agents Code Mode, Anthropic code execution and mcp-use, and what the schemas give each of them. ## MCP: Discovery - [search_docs](https://www.signcustomiser.com/help/mcp/tools/search_docs/): Look up how Sign Customiser documents something, rather than inferring it from a tool result. ## MCP: Store - [get_store](https://www.signcustomiser.com/help/mcp/tools/get_store/): Identify the Store the connection acts for, report which scopes the merchant approved, and read the currency and integration_id the commerce writes require, before calling anything else. - [get_store_subscription](https://www.signcustomiser.com/help/mcp/tools/get_store_subscription/): Tell a merchant whether their plan covers what they are asking for, before suggesting a change that their plan would refuse. ## MCP: Analytics - [get_analytics_summary](https://www.signcustomiser.com/help/mcp/tools/get_analytics_summary/): Answer "how is the store doing" without reading orders one by one. ## MCP: Customisers - [list_customiser_prototypes](https://www.signcustomiser.com/help/mcp/tools/list_customiser_prototypes/): Discover which kinds of sign product this Store can create a customiser for, and get the prototype id that creation takes. - [list_customisers](https://www.signcustomiser.com/help/mcp/tools/list_customisers/): Discover what a Store sells and obtain the customiser ids the rest of the customiser surface takes. - [get_customiser](https://www.signcustomiser.com/help/mcp/tools/get_customiser/): Read one customiser before changing it, and read its settings or labels document in the same call. - [create_customiser](https://www.signcustomiser.com/help/mcp/tools/create_customiser/): Add a new configurable sign product to the Store, starting from a prototype rather than from nothing. - [update_customiser](https://www.signcustomiser.com/help/mcp/tools/update_customiser/): Change a customiser name, styling mode, behavioural settings or storefront labels, one section at a time. - [set_customiser_status](https://www.signcustomiser.com/help/mcp/tools/set_customiser_status/): Publish a customiser to the storefront, withdraw it, or bring a deleted one back. - [delete_customiser](https://www.signcustomiser.com/help/mcp/tools/delete_customiser/): Remove a customiser from the Store after the merchant has agreed to it. - [list_customiser_options](https://www.signcustomiser.com/help/mcp/tools/list_customiser_options/): Discover what a customiser offers in one option family, and obtain the record ids the option read and write tools take. - [get_customiser_option](https://www.signcustomiser.com/help/mcp/tools/get_customiser_option/): Read the current values of one option record before patching it, and see which of its asset slots are filled. - [create_customiser_option](https://www.signcustomiser.com/help/mcp/tools/create_customiser_option/): Add one option a shopper can pick from — a colour, a font, a size, a mounting — to one customiser. - [update_customiser_option](https://www.signcustomiser.com/help/mcp/tools/update_customiser_option/): Change one option a shopper picks from, without touching the rest of its family. - [reorder_customiser_options](https://www.signcustomiser.com/help/mcp/tools/reorder_customiser_options/): Put one option family in the order the merchant wants shoppers to see. - [delete_customiser_option](https://www.signcustomiser.com/help/mcp/tools/delete_customiser_option/): Take one option off a customiser after the merchant has agreed to it. - [create_upload](https://www.signcustomiser.com/help/mcp/tools/create_upload/): Reserve a staging target for one file, before attaching it to an option image, a font, a backboard shape or the storefront product image. - [get_upload](https://www.signcustomiser.com/help/mcp/tools/get_upload/): Check whether a staged upload is ready to attach, or why it was rejected. - [attach_customiser_asset](https://www.signcustomiser.com/help/mcp/tools/attach_customiser_asset/): Put an uploaded file into one asset slot on one option record, or on the customiser labels document. - [delete_customiser_asset](https://www.signcustomiser.com/help/mcp/tools/delete_customiser_asset/): Take a file out of one asset slot, leaving the record itself in place. - [list_customiser_languages](https://www.signcustomiser.com/help/mcp/tools/list_customiser_languages/): See which languages a customiser offers and how complete each translation is. - [get_customiser_language](https://www.signcustomiser.com/help/mcp/tools/get_customiser_language/): Read one language record, and read a bounded slice of its translation entries when the strings themselves are needed. ## MCP: Pricing - [get_customiser_pricing](https://www.signcustomiser.com/help/mcp/tools/get_customiser_pricing/): Read the pricing rules a customiser applies, in the exact document shape a pricing replacement takes back. - [update_customiser_pricing](https://www.signcustomiser.com/help/mcp/tools/update_customiser_pricing/): Change what a customiser charges: its rates, modifiers, minimums and rounding rules. ## MCP: Products - [list_integration_products](https://www.signcustomiser.com/help/mcp/tools/list_integration_products/): See what customers have bought or configured, and obtain the product ids get_integration_product takes. - [get_integration_product](https://www.signcustomiser.com/help/mcp/tools/get_integration_product/): Read one product in full, and resolve the option ids its design captured back to the customiser configuration. - [create_integration_product](https://www.signcustomiser.com/help/mcp/tools/create_integration_product/): Record a product bought through a custom integration against the customiser that designed it, so Sign Customiser can hand it to production. ## MCP: Orders - [list_orders](https://www.signcustomiser.com/help/mcp/tools/list_orders/): Survey a Store trading activity and obtain the order ids get_order takes, without pulling customer data into the answer. - [get_order](https://www.signcustomiser.com/help/mcp/tools/get_order/): Read one order end to end when the line items, totals or the customer snapshot are what the merchant asked about. - [create_order](https://www.signcustomiser.com/help/mcp/tools/create_order/): Record an order bought through a custom integration, so Sign Customiser hands its designs to production. ## MCP: Quotes - [list_quotes](https://www.signcustomiser.com/help/mcp/tools/list_quotes/): Count and locate shopper submissions, and obtain the ids get_quote takes, without pulling shopper free text into the answer. - [get_quote](https://www.signcustomiser.com/help/mcp/tools/get_quote/): Read what a shopper actually submitted when the merchant asks about one enquiry. ## MCP: Webhooks - [list_webhook_event_types](https://www.signcustomiser.com/help/mcp/tools/list_webhook_event_types/): Find the exact topic string a webhook subscription needs, rather than guessing its spelling. - [list_webhook_subscriptions](https://www.signcustomiser.com/help/mcp/tools/list_webhook_subscriptions/): See where a Store already sends events, and obtain the subscription ids the update and delete tools take. - [get_webhook_subscription](https://www.signcustomiser.com/help/mcp/tools/get_webhook_subscription/): Confirm where one subscription delivers and which topic it carries, before changing or deleting it. - [create_webhook_subscription](https://www.signcustomiser.com/help/mcp/tools/create_webhook_subscription/): Point one Sign Customiser event topic at an endpoint the merchant runs. - [update_webhook_subscription](https://www.signcustomiser.com/help/mcp/tools/update_webhook_subscription/): Move a subscription to another endpoint, or point it at a different event topic. - [delete_webhook_subscription](https://www.signcustomiser.com/help/mcp/tools/delete_webhook_subscription/): Stop Sign Customiser delivering one event topic to one endpoint. ## MCP: Advanced catalogue - [search_operations](https://www.signcustomiser.com/help/mcp/tools/search_operations/): Find the partner API operation that does what you need, and the exact arguments it takes, before running it through an executor. - [execute_read](https://www.signcustomiser.com/help/mcp/tools/execute_read/): Read anything the partner API exposes, including the parts no curated tool covers, without being able to change any of it. - [execute_create](https://www.signcustomiser.com/help/mcp/tools/execute_create/): Create anything the partner API can create, including the resources no curated tool covers, one operation per call. - [execute_update](https://www.signcustomiser.com/help/mcp/tools/execute_update/): Change anything the partner API can change, including the resources no curated tool covers, one operation per call. - [execute_delete](https://www.signcustomiser.com/help/mcp/tools/execute_delete/): Remove anything the partner API can remove, including the resources no curated tool covers, one operation per call.