Tip: tap Share → Add to Home Screen for a one-tap launcher.
1
Artwork
›
2
Frame type
›
3
Design & details
›
4
Review quote
Start with the artwork
Upload a photo of the piece to use in the live preview. You can skip this and design without a reference.
Upload artwork
Drag and drop · JPG, PNG, WebP, HEIC, TIFF · Up to 120MB
Tip: add the photo first and every preview shows your actual piece. For a diptych or triptych, choose "Matted frame" or "Shadowbox" next — you'll add the extra pieces there.
Choose a frame style
Each style unlocks different design options.
Matted frame
Artwork sits inside a mat board with a reveal around it. Classic, archival, versatile. Supports diptych and triptych layouts.A mat border around the artwork, behind glazing.
Unmatted frame
Print runs edge-to-edge into the moulding — clean, contemporary, no mat reveal.The artwork runs to the frame's edge. No mat.
Shadowbox frame
Deep frame with artwork float-mounted above the mat — casts a real shadow. Perfect for originals, textiles, memorabilia.A deep frame for originals, textiles and objects.
Canvas stretch
Stretched over timber bars — with optional L-shaped float frame surround.Stretched over bars, with an optional float frame.
Mat only
Mat board with a window for the artwork, on a backing board — no frame, no glazing. For a frame the customer already has. Supports diptych and triptych layouts.A mat and backing with no frame or glazing.
Single, diptych, or triptych?
A diptych (2) or triptych (3) sits within a single mat with spacing between pieces.
Single piece
Diptych (2)
Triptych (3)
Spacing between piecesmm
100%
A3 · 297 × 420mm
Mat: 60mm
APM · RAW1 Box Black
Artwork size ⇄ Swap orientation
Width (mm)
Height (mm)
Preset
Lock ratio
Match artwork ratio
How to measure your artwork
Have a finished size to hit?
×
Piece spacing
Between piecesmm
10203050
Canvas options
Stretcher bar
Float frame surround
L-shaped moulding around the canvas with a visible gap on all sides.
Extra mat added to each side beyond the base reveal — for signatures, off-centre work, or gallery weighting. Double/triple mats and the v-groove follow along.
Top
Left
mm
Right
Bottom
Reset to even
Reposition by dragging
Drag the artwork in the preview to shift it — the side offsets above follow. Add offset first to create room to move.
Quick picks
Current selection
Antique White
Rising · Alpha-cellulose
›
Mat details
Double mat
Revealmm
5102040
Secondary mat — quick picks
Current selection
Cream
Rising · Alpha-cellulose
›
V-groove
Distancemm
5102040
Distance from the inner edge of the outer mat (artwork side), out toward the moulding. Stays put when adding a double mat.
Extra openings (plaques)
Positions are millimetres from the artwork opening's top-left. A plaque below the artwork needs enough bottom border — widen it with Uneven borders above.
Triple mat
Advanced
Revealmm
Tertiary mat — quick picks
Current selection
Bone
Rising · Alpha-cellulose
›
Fillet
A thin accent moulding inside the mat window, wrapping the artwork.
Spacer
Holds the glazing off the artwork. Charged on the artwork perimeter plus fitting time.
Glazing
Pricing Cost breakdown ↓
Your custom frame
$149.50
Estimate — subject to staff review
Review quote
Final breakdown — ready to save, print, or send.
%
Customer pricing
Estimate — subject to staff review
Client price$149.50
Your cost
$72.40
Margin
51.6%
Labour time
45 min
Specification
Order approval
Materials & wastage
Materials needed — pull list for the bench
Add customer details (optional)▾
Ready to order?
Send your design to the studio — they'll confirm price & timing and be in touch.
The studio's open work queue, synced across devices. Confirmed quotes appear here; "Mark complete" clears them.
No open orders. Confirm a quote on Stage 4 to add one here.
Purchasing
Materials confirmed jobs still need, suggested orders, purchase orders and receiving. Stock moves only when goods are received.
Production
Confirmed jobs on the bench: stage, due date, materials, released cut plans, travellers and labels.
Customers
Contacts linked to their requests, quotes, payments and orders; opportunity stages follow those records; follow-ups are yours.
Dashboard
What needs doing today, then how the studio is doing, from confirmed orders, payments, production and purchasing. Every figure carries its definition — hover a card.
Inventory · Stock & pricing
Live ledger of mouldings, mats, glazing, and consumables. Cost edits flow into open quotes immediately. Syncs to your studio account when signed in; otherwise stored on this device.
What your jobs use
Mouldings, mats and other materials ranked from your confirmed orders — a guide for ordering and stock levels. Nothing here changes stock unless you press Use as threshold. How usage is counted
Pick the glass or acrylic you buy at each sheet size, in each grade. Mixing brands across sizes is normal — buy what's stocked at the size you need. When a customer picks a grade, the engine cuts the cheapest of your chosen sheets that fits their frame. Set "Not offered" for a size you never buy. Sheet costs are edited in the Stock list.
Fill every grade from one brand:
Add glazing product
For glass or acrylic this catalogue doesn't carry — another brand, another supplier, or your own stock. Enter the sheet sizes you buy and what they cost you. It then appears in the grid below, in the Stock list, and in every quote.
What the customer sees when this fills a grade on its own.
Who makes it. Used to tell mixed-brand grades apart.
Supplier price multipliers key on this.
Your SKU. Must be unique.
Sheet sizes you buy
Your shop catalogue
Your shop catalogue is the mouldings and mats you actually offer. It keeps the picker focused on what you sell instead of the whole 2,600-item supplier list.
Customers only see your shop catalogue. Anything outside it is hidden from them — choose below whether that limit is on.
You can always reach everything. In a moulding or mat picker, the Shop catalogue tick is on by default; untick it to browse the full supplier list (handy for a one-off frame match).
Add items three ways: the shop icon on any tile (top-left, opposite the favourites star), the buttons below to add a whole supplier at once, or search-and-add here.
Favourites live inside your shop catalogue — you can only star something you offer.
Suppress an item to stop offering it while keeping it orderable, and note what to use instead.
Add to your shop catalogue
Custom catalogue
Hand-made / in-house mouldings + mats — photo, crop, and publish from in-app. Published items join the pickers immediately.
Per-supplier markup
Multiplier on top of catalogue cost — e.g. 1.05 for a +5 % local-supplier loading on every APM SKU. Default 1.00. Per-item overrides (below) ignore this.
Per-item price overrides
Replace the catalogue price for a specific SKU. Overrides take precedence over supplier markups.
Shown in the ICC profile request flow for chart scans and related files.
Colour profiling service - customers order custom printer profiles from your site
Integrations & payments — Xero books + customer card payments via your own Stripe
Checking…
One click sends a quote or invoice — customer, lines, GST — into your own Xero organisation. Xero setup guide
The revenue account lines post to (Xero default sales = 200).
Applied per line; Xero works out the GST split from inclusive amounts.
Checking…
After you review an order request, "Approve & request payment" sends the customer a secure pay link — the card payment lands in YOUR Stripe account (you're the merchant; Stripe's fees apply to you). Owner only. Stripe setup guide
Pre-fills the deposit choice when you approve an order request — adjustable per order. Deposits: the balance is settled with you directly on completion.
—
Sign in with Google instead of a password. Your account stays invite-only — linking just adds a sign-in method.
Labour time by size
How steeply time scales above A3. Default 200/m². Per-quote override available in Stage 4.
Fillets — price = material × multiplier + fitting time at the labour rate
Default 2× the fillet's material cost. The general markup never also applies.
Default 10 min per quote with a fillet.
Default 8 min/m of fillet. Raise or lower these to make fillets dearer or cheaper.
Spacers — unmatted frames: the spacer strip on the artwork perimeter plus fitting time
New unmatted quotes start with it, customer estimates included. Staff can change it on the design step. Saved quotes keep theirs.
Default 10 min, covering the first metre of spacer.
Default 1 min for each metre beyond the first. Added to labour.
Shadowbox uplift — labour multiplier + extra mat / foamboard sheets
Default 1.25× the matted-equivalent labour.
Default 2 sheets, artwork-sized.
Only 3 mm and 5 mm stocked (40 × 60" sheet). Default 5 mm.
Mat only — a matted piece with no frame or glazing: mats, a backing board and a fraction of the framing labour
One sheet fit at the mat outer, priced from the Stock list — the default foamboard SKUs ship at $0 until you enter a cost there.
Default 0.5× the framing labour tier — provisional until a few have been timed.
Glazing floor
How the customer price for glazing is derived. "Same as materials markup" is today's behaviour; a size- or cost-based curve tapers the multiplier so full sheets stay sellable (a $150 sheet at 1.5× is $225, not $300). Minimum prices, the per-lite fee, and the oversize surcharge apply in every mode. The preview plots the real engine output for the chosen option.
Chooses which real products fill each glazing option on the design stage — names and prices both. Set your own sheet costs in Stock & pricing.
What each glazing option resolves to
The brand above fills every option. To choose a different product for a particular sheet size — or to mix brands — open the full editor in Stock & pricing → Glazing. The engine always cuts the cheapest of your chosen sheets that fits the frame.
Stretcher bars
The bars this shop offers on canvas quotes. Costs are per metre — edit them in Stock & pricing.
Pricing rules — per-frame-type bucketing
Each line item resolves to Marked up (inside markup parens), Pass-through (added at face value after markup), or Excluded (not in the quote). Locked rows aren't physically applicable to that frame type.
Studio details
Letters/numbers + trailing dash. Used in EET-0042 style quote IDs.
The number the next new quote takes on every device (98 to continue from a system that is at 97). Owners and managers can move it forward; it never drops below a number already in use.
Per-device only (stored on this device, not synced). This device boots straight into Admin, re-using its saved sign-in; if the session has expired it shows the sign-in screen. Other devices default to Customer. Untick to make this device default to Customer too.
Path or URL. Shown in the topbar + the wall-mockup PNG footer. ~36 px tall at display size.
Signed-in only — stores it online and fills both logo fields.
Path or URL. Shown on the printed quote header at 140 × 140 px; commit a square ~600 × 600 px version for best clarity.
Add a street address before printing customer quotes.
Collection instructions — on the customer's status page and the ready email while a piece waits for collection
Share API — Cloudflare Worker + R2
The endpoint is public and lives in share-config.js so any browser can read shares. The key is secret and stays here on your device. Setup steps: cloudflare-worker/README.md.
Catalogue API — hot-swaps the catalogue at launch when the Worker bundle is newer
Not tested yet.
Validates the Worker's /catalogue/* endpoints serve the same SKU counts as the inline catalogue. Setup steps: openspec/changes/saas-catalogue-api/runbook.md.
Staff: bench access, no admin. Manager: admin without billing. Owner: everything.
Frame presets — the "Our Favourites" prebuilt looks
Author presets from the builder ("Save as preset" on the design stage) or any saved quote. "In embeds" controls which looks the website widget shows.
Notifications — new customer submissions and order confirmations
Applies to in-app popups and push. Signed-in devices always show the Orders / Saved Quotes badges.
On: confirming an order also queues the confirmation email in the same step (once per order; Email confirmation still resends). Mark complete always queues the ready email.
On: Mark complete, Email confirmation, payment requests, receipts, quotes, proof replies and profiling updates open a window with the email ready to read and change before it goes. Not now keeps it waiting with a note on the customer's timeline; an email left waiting 14 days is discarded. Customer acknowledgements, notices to your studio, automated messages and texts never wait.
A customer's Send (your site or a website embed) emails the address above, which must be a team member's sign-in email — any other address receives nothing. Left blank, it goes to your studio email when someone on the team signs in with it, otherwise to the owner's sign-in email. Each email says who sent it, how to reach them, what they designed, and links to open it. One email per request, at most 12 an hour; replies go to the customer. Nothing is ordered or charged until you review it.
Every email the app sends a customer - quotes, replies on a quote, payment requests, confirmations, receipts, ready emails and automated messages - is blind-copied to the address above, which must be a team member's sign-in email; any other address receives nothing. Left blank, copies go to your studio email when someone on the team signs in with it, otherwise to the owner's sign-in email. Notices to your studio and text messages are not copied. A copy carries the customer's own links: open one to see what they see, but never accept, approve or pay from a copy.
Text messages — automated messages by SMS from your studio's own number
Automated messages — bounded journeys on the email outbox; all off until a manager enables them
Popular picks — a Popular filter in your customers' moulding and mat pickers
Ranks the mouldings and mats your confirmed orders use most often and offers them as a Popular filter beside Favourites. Customers see the items only, never how many jobs used them. Items outside your shop catalogue or marked unavailable are left out, and a filter needs at least three. The list refreshes every hour.
Gallery — your own pieces for the website gallery embed
Photographers and artists: list the pieces you sell with the print sizes you offer. The "Gallery" embed snippet below opens with this gallery; a visitor picks a piece and a size, designs the frame around it and sends you the request. Only owners and managers can change it.
Embed — showcase mode in a third-party iframe (Shopify / Squarespace)
Website embeds come with the Studio and Workshop plans. Change plan on the Subscription tab to carry the designer on your own website.
What visitors inside a host-page embed see. Your own site always shows Customer view (estimates + badges). Visual-only embeds send designs to you unpriced — you price them on review. This hides figures in the app; anyone technical can still inspect public pricing data (an accepted trade-off). You always approve the real amount before any payment.
$ below the first, $$ between, $$$ at or above the second. Uses your effective cost (overrides + supplier markups included).
Mats band by effective sheet cost per m² — defaults 20/45 split the catalogue into rough thirds.
Where requests go: every Send lands in Orders → Requested on each signed-in device, with a push if enabled. To have each one emailed as well, turn on Email new requests on the Notifications tab — the address lives in your settings, never in the snippet, so a host page cannot redirect it.
Storage — localStorage + IndexedDB usage on this device
Loading…
Orphan cleanup deletes IndexedDB blobs no saved quote references (e.g. from cancelled saves); it also runs automatically on app idle. Full-resolution artwork lives here by design — only display copies sync to the cloud.
How to measure your artwork
Edge-to-edge measurement
For most prints and photos, measure the outermost edge of the artwork itself — not the paper border. The mat will cover everything outside this measurement.
Artwork alone
Measure the image only
With signature
Include the visible space below
Including signature or white space
If the customer wants the signature or a border visible, measure edge-to-edge of the artwork then add the extra space they want shown (e.g. 30–50mm below for a signature). Enter the combined total.
Bottom-weighted mats
You can also toggle "Weight bottom (offset mat)" in the design step to add extra mat height below the artwork — this creates a traditional weighted bottom without changing the top/side reveals.
Paper
Moulding reference shots
Calibrate from your price list
Enter two reference prints with the retail price you'd want to charge — or upload your whole price list as a CSV and the wizard fits across every row. Material cost (paper + ink + wastage) is read from the selected paper.