About this template
Your helpdesk charges you per resolution. This one has no send button.
Gorgias bills roughly $0.90 every time its AI resolves a ticket — and a conversation it resolves can bill twice, once as a ticket and once as a resolution, unless a human reaches the shopper within 72 hours.
You are paying a meter to have replies written.
The writing is the part worth having. The auto-send is the part that costs you money and puts an unreviewed sentence in front of your customer.
So this template does the first and refuses the second.
What you get on fork
A Claude Code box with two skills and a working tree already in place:
support-reply-drafter— reads a ticket, pulls the actual order from your Shopify Admin API, and writes a reply into~/support-desk/drafts/. Every draft ships with a Basis block naming the API field behind each claim.review-responder— classifies a review (defect, shipping, sizing, wrong expectation, abuse), checks it against the real order where the reviewer is identifiable, and drafts a reply under 60 words aimed at the next buyer.~/support-desk/facts/GROUNDING.md— your return window, restocking fee and exception rules, plus the list of things the agent may never assert.
The guard is a file, not a promise
GROUNDING.md carries a literal NEVER_AUTOSEND block, and both skills are
instructed to read it before every task. Ask the agent to send, email, or
resolve a ticket and it refuses and points at that file.
This matters because the alternative — writing "never auto-send" into a system prompt — does not survive contact with a working agent. A file the fork inherits does.
The token is read-only by design. Drafting is a read operation. There is no write scope to misuse.
What you supply
SHOPIFY_STORE_DOMAINand a read-onlySHOPIFY_ADMIN_TOKEN(read_orders,read_customers,read_products,read_fulfillments)- Your own Claude Code login
- Your actual policies, pasted into
GROUNDING.md
Nothing is stored in the template. Export the token in your shell.
First five minutes
- Fork, then export your store domain and token.
- Fill in the
## Store policysection of~/support-desk/facts/GROUNDING.md. - Drop a real customer email into
~/support-desk/tickets/. - Ask for a draft. Read the Basis block. Decide whether you agree.
Leave the policy section empty and you will get hedged, useless drafts — on purpose. The agent will not invent a return window it cannot cite.
Where this stops
It drafts. It does not send, post, refund, or resolve. There is no inbox integration and no queue automation. If you want tickets closing themselves on a per-resolution bill, that product exists and this is not it.
It is built for a Shopify store. The Admin API calls assume Shopify; a WooCommerce or BigCommerce store would need the fetch step rewritten.
Verified on build: the skills, the working tree and the NEVER_AUTOSEND guard
are present on a fresh fork, and no token shape exists anywhere in the snapshot.
The end-to-end draft-from-live-order run is yours to make with your own store.