Appearance
Troubleshooting
Symptoms, most common causes first.
Pricing
A quote came out at the wrong price
Open the quote and read the pricing rules applied panel. It lists every rule that fired and what it did. Then check, in this order:
- Is the customer on the right price list?
- Is the rule you expected active, in scope, and inside its valid dates?
- Does the line quantity actually reach the tier? Remember tiers should be ordered largest minimum first.
- Are two customer discounts both in scope? They compound: 10% then 5% is 14.5%, not 15%.
Decoration is adding nothing to a line
The rate matrix has no row covering that combination of quantity and colour count. The engine needs a row where min quantity <= quantity and max colours >= colours. A 4-colour line against a matrix that stops at 2 colours prices decoration at zero.
Fix: add rows for every colour count you sell, or a catch-all row at your press maximum. Full colour processes should use 99.
A discount is not applying to decoration
By design. Customer discounts reduce the garment price, before decoration is added. Use a quantity break, or a separate decoration method with its own matrix, if you want to discount decoration.
Payments
A customer paid but the invoice still shows unpaid
The Stripe webhook is not arriving or not verifying. Payment confirmation comes from the webhook, not from the customer's browser.
- Check the Stripe card in Integrations shows connected and verified.
- If you pasted your own keys, check the endpoint exists in your Stripe dashboard and the signing secret matches.
- Look at the event in your Stripe dashboard: it will show delivery attempts and responses.
Record the payment manually in the meantime so your aging is right.
There is no pay link on an invoice
Stripe is not connected, or charges are not enabled on the connected account. Check the Stripe card, and check the account status in Stripe itself: onboarding that was not completed leaves an account that exists but cannot charge.
Email and SMS
A customer did not get an email
- Is the template active?
- Is transactional email connected and verified?
- Is the contact's email correct on the customer record?
- Check your email provider's suppression list. A previous bounce or complaint blocks that address permanently until you remove it.
Emails are going to spam
Set up SPF, DKIM and DMARC on your sending domain in your provider's dashboard. Without DKIM, a meaningful share of invoice emails land in spam. This is a DNS job, not a settings toggle.
A variable printed literally, like
The variable is not one that template supports. Check the variable table and use only the ones relevant to that message.
SMS is not sending
Check, in order: your plan allows SMS (Starter and above), Twilio is verified, the from number is in E.164 format with a country code, the recipient's number has a country code, and the customer has not texted STOP.
Production and stock
The board does not match the shop
Somebody is advancing jobs at the end of the day rather than when they happen. Print worksheets and advance by barcode scan; two seconds at the press beats reconstructing the day later.
On-hand does not match the shelf
Do not type over the count. Run a cycle count, which posts each variance through the ledger and tells you where the discrepancy actually is. Repeated shortfalls on one SKU usually mean misprints are not being written off.
A job stalled and nobody knows why
Two usual causes: it is in Artwork waiting on a customer approval (check the dashboard's sitting-at-customer panel), or it needs stock that is physically here but was never received against its purchase order.
Stock was not deducted for a job
Stock is consumed on entry to In production. A job dragged straight from Artwork to QC skips that. Check the stage history, and adjust stock with a reason if it was missed.
Access and accounts
A staff member cannot see a screen
Check their role against the capability matrix. Pricing, billing, team, integrations and settings are owner and manager only, and not visible read-only to anyone else.
A staff member cannot log in
Is their account active? Deactivated users are denied everything, including their API tokens. Also check they verified their email address.
A customer cannot log in to the portal
A portal login is a separate credential from a contact. Have them use Forgot password on /portal/login; if they have no portal user at all, that email will not arrive. See getting customers logged in.
An action was refused because of a limit
Your plan's cap. Seats, open orders and AI queries are all enforced at the moment of the action. Check billing for current usage, and plans for the caps.
Integrations
A supplier sync produced a tiny catalogue
You are in stub mode: either no credentials, or a plan without live supplier sync.
An integration stopped working
Read the last error on its card in Integrations. The most common cause is an expired OAuth token, which needs reconnecting rather than repairing.
Webhooks stopped arriving
- Is the subscriber active? After 20 consecutive failures it is deactivated automatically.
- Does your plan include webhooks (Premium and above)?
- Check the delivery records: they store the status code and your response body.
- If your endpoint is returning a signature failure, make sure you are hashing the raw body.
Reports
The margin section says nothing is costed
Order lines have no cost snapshots, because your SKUs have no supplier costs and your decoration methods have no cost estimates. Snapshots are taken at order creation, so fixing the costs now affects new orders, not past ones.
Margin after labour equals gross margin
No labour is being costed. Either your staff have no labour rate on their team records, or nobody is clocking on to jobs. Both are fixable in an afternoon; see time on jobs.
Still stuck
Contact support with the screen, what you expected, what happened, and the order or invoice number. Those four things resolve most tickets on the first reply.