If something breaks
The on-call playbook. Match the symptom on the left to the fix on the right. If you’ve tried the fix and it didn’t work, don’t keep trying — email ThreadCloud Support at hello@threadcloud.io.
Quick triage
| Symptom | What to do |
|---|---|
| Page is blank / 500 error | Refresh once. Then restart the worker. Then email hello@threadcloud.io. |
| AI Classification stuck at “Combing the rack” | Stop and restart — see below |
| Label printer not printing | Use Shopify Admin fallback — fully supported |
| Supplier didn’t get the email | Resend from PO tab |
| Shopify says “rate limit exceeded” | Wait 60 seconds and try again. The worker retries automatically. |
| Image upload failed | Re-upload the same image. If it fails twice, the image is too large — resize to under 4MB and retry. |
| ”Missing access token” error | This was a real bug — it’s been fixed. If you see it, refresh the page. If still broken after refresh, email hello@threadcloud.io. |
| Parse times out on a PDF | Try Excel — see below |
| Apply Selected says “0 ready” | Some rows are still NEEDS REVIEW. Filter to “Needs review”, fix each, then re-select. |
| Catalog rolled back wrong | Undo via Legacy Enrichment |
| Order status won’t change | Refresh. If still stuck, check the supplier ack. |
Worker stuck
If a background process (classification, enrich, push) appears frozen:
- Refresh the page. The worker auto-resumes from where it left off.
- If still stuck, click Stop on the workflow surface, wait 5 seconds, then click the run button again.
- If still stuck after 5 minutes, the worker may have hit an external API outage. Wait 15 minutes and retry once.
- If still broken: email hello@threadcloud.io with a screenshot.
Classification stuck
The progress bar isn’t moving and the ETA isn’t updating.
- Click Stop on the AI Classification step. Wait for it to confirm “Stopping…” → “Run Classification”.
- Click Run Classification again. The worker picks up only the pending rows.
- If the same row keeps failing, open the error drawer (“View errors” link at the top) — see what it says.
- If it’s an Anthropic API error, just keep retrying. The API recovers on its own.
pending status, so re-running never duplicates work or wastes an AI call.Printer fallback
The Dymo label printer isn’t responding, is out of labels, or jams repeatedly.
- Open Shopify Admin → Products.
- In the search bar, type
tag:tc-order-247(replace247with the order ID — find it in the URL of the order page in ThreadCloud, e.g./app/orders/247/receiving). - Select all rows that need labels. Click More actions → Print barcode labels.
- Choose your label size (Avery 5160 30-up sheet is the safest), pick the products, hit Print.
barcode field on every push. Shopify Admin reads from that field. So the SKU you’d see on a TC label is exactly what gets printed.Resend supplier
The supplier says they didn’t get the PO email, or you closed the window before saving.
- Open the order → click the PO tab.
- Scroll to the bottom and click Send to supplier again. The email re-sends with a fresh token.
- If the supplier already responded on the previous link, the new link supersedes it. Tell the supplier to ignore the old email.
Parse timeout
PDF parsing hangs or shows “Parse failed”.
- Try the same file again — once. Transient timeouts happen.
- If it fails twice, ask the supplier for an Excel version of the linesheet. Excel parses much faster and more reliably.
- If neither is available, open the order and click Add Style — manually add the rows. Slow but bulletproof.
Wrong rollback
You applied enrichment to a batch and the results are wrong.
- Open Settings → Legacy Enrichment.
- Scroll past the workflow to the Applied table at the bottom.
- Select the rows you want to undo. Click Rollback.
- Confirm. ThreadCloud restores the previous metafield values from the snapshot it took before applying.
Stuck status
An order is stuck at “Sent to supplier” forever.
- Check if the supplier has responded — open the order → PO tab → look for the supplier ack timestamp.
- If they have responded, the page may need a refresh. Press Cmd+Shift+R (hard refresh).
- If they haven’t, click Approve as-is on the PO tab — this skips the supplier loop and marks the order confirmed manually.
Big-picture failures
These are the rare ones. If you see one of these, email ThreadCloud Support immediately at hello@threadcloud.io — don’t try to fix them yourself.
| Symptom | What it means |
|---|---|
| Every page across the app is 500 | Production deploy is broken. Possibly a Fly.io outage or a bad merge to main. ThreadCloud Support handles this. |
| All Anthropic calls failing for 30+ min | Anthropic API outage. Status: status.anthropic.com. Nothing to do except wait. |
| Shopify Admin won’t load at all | Shopify outage. Status: status.shopify.com. Wait. |
| Bank-side currency feed says the wrong rate | The multi-provider FX fallback should catch this. If somehow all three providers are wrong, set the FX manually on the order (Receiving tab) and email hello@threadcloud.io. |
| A push wrote products with bad data | Don’t panic. Pull them back: Shopify Admin → filter by tag:tc-order-{id} → bulk-delete. Then re-push from ThreadCloud after fixing the source. |
What only the Owner should do
- Approve a push of more than 200 products at once
- Edit the AI prompts (Settings → AI & Models)
- Change the metafield namespace or schema
- Use the dev tools page (
/app/settings/dev)
These are platform-level operations and only ThreadCloud Support should handle them:
- Run direct database operations
- Merge code to
main(production) - Manual
fly deployto recover a broken production deploy
If your fingers are hovering over any of those, stop and ask.