Paperwork that is not the plant
Invoice and PO matching, intake, and support triage in n8n with Metrc fences — the paperwork operators hate, not a menu widget.
William Spurlock Founder — Spurlock Studios 6 MIN
Visibility gets you found. The site takes the order. The inbox still fills with invoices, intake, and tickets.
That is the paperwork that is not the plant. Invoice and PO matching, intake, support triage — in n8n, with a written fence around Metrc. It is not a menu widget. I am in Michigan. Operator to operator. The floor is /cannabis. The cluster parent is Cannabis visibility when the ad accounts are banned.
The short answer
- The job is the paperwork operators already hate: match the invoice to the PO, route intake, triage the ticket.
- I ship n8n. You own the JSON. Credentials stay on your accounts.
- If a workflow would touch Metrc, we say so in the fence before a node is live. If you do not want it to touch Metrc, it does not.
- I do not invent a track-and-trace substitute. I do not invent a COA or a medical claim inside an automation.
- Age-gates and identity checks live on the client store. This studio’s contact form does not collect IDs.
Divine Toke is the lead cannabis case in the book — Metrc, 21+, adult-signature, cannabis payment rails, no paid acquisition, AEO-first. That is the site and the rails. This note is the inbox that still shows up after the site is live.
What is the paperwork that is not the plant?
It is the work that would still exist if nobody asked you for a strain name.
Invoice and PO matching. A vendor bill lands. A purchase order already exists, or it should. Someone has to decide if the lines, the quantities, and the totals agree — then park the exception instead of hoping accounting notices in week three. That is a fixed path. Fixed paths are automation.
Intake. A wholesale inquiry, a new vendor packet, a license doc that has to sit in the right folder with the right name. Humans still approve. The workflow stops dropping the file into a shared dump called “misc.”
Support triage. Hours, pickup, “where is my order,” “is this SKU in.” Those tickets can be labeled and routed. They cannot be answered with a medical claim the shop did not approve. If the reply needs judgment that is not on the card, it escalates.
None of that is a storefront chatbot that recites the menu. The menu is a website problem. The paperwork is an ops problem. If you want a floor FAQ that refuses to invent a benefit, that is the agentic lane, not a hidden n8n node under the cart.
When does a workflow touch Metrc?
When the step would read or write plant-touching compliance data — packages, transfers, tags, or the reporting you already owe the state.
If that is in scope, we write it on the fence: which account, which environment, which actions, who approves a write, what happens when Metrc is down or a field changes. The pipeline pauses on a schema miss. It does not invent a tag to keep a graph green.
If you do not want it to touch Metrc, it does not. Then the workflow sits next to the compliance stack: invoices, intake, ticket triage. I will not quietly add a Metrc node because it would be “useful.” Useful and in-scope are different sentences.
I do not replace Metrc. I do not sell you a shadow ledger. Track-and-trace stays the system of record you already run. Automation that pretends to be the state system is how you get a second set of numbers and a bad week.
Same honesty on identity. Shopper IDs and 21+ checks belong on the store you operate. I do not store them on this studio’s form, and I do not siphon them into an n8n vault “for later.”
Why n8n and not a menu widget?
Because the bottleneck is not “people cannot see the flower.” The bottleneck is a person matching lines at 10 p.m. or fishing a PDF out of a thread.
A menu widget is storefront theater. It does not match a bill to a PO. It does not file a vendor packet. It does not hold a ticket when the answer is not on the approved card.
n8n is the graph: trigger, validate, match, exception, notify. You own the JSON. I will use Make if that is already the stack and the job fits. Either way the accounts are yours.
When the inbox or Metrc changes a field, the pipeline pauses. That is the point of a schema contract. A widget that “keeps working” by guessing the field is the failure mode. If the hard part is deciding, not clicking, I will send you to Agentic instead of selling a brittle workflow that pretends to think.
What does invoice and PO matching actually do?
It does the boring path you can already write down.
- A bill arrives — email, portal, export.
- The workflow finds the PO it should belong to, or it marks “no PO” and stops for a human.
- Lines are compared on the fields you name: SKU or item, qty, price, tax if you use it.
- Match within the tolerance you set goes to the next system you already book in.
- Mismatch goes to an exception queue with the two documents attached. Nobody “fixes it in the model.”
I need a process owner who does this today, sample payloads that still have the ugly cases, and credentials on your accounts. I will not invent a match rate. The $500 Automation audit is the map: bottleneck, systems, go/no-go, topology, fixed-scope quote. If the pain is Metrc reporting itself, we put Metrc on the fence or we walk away from that step. There is no third option where I “just sync it.”
Where to start
- Book the $500 Automation audit from the cannabis floor or the automation door. You keep the map. The $500 credits toward a build — automation or agentic — with no expiry.
- Default site, if the storefront is also wrong, is the Business Site at $8,000. Do not buy a widget to hide a brochure.
- If the map says the job has to decide mid-flight, I offer the $1,500 agentic pilot. Decline and the audit credit still applies.
Does this touch Metrc?
Only if we write that on the fence. It can sit next to Metrc — invoices, intake, ticket triage — and never call it. If you do not want it to touch Metrc, it does not. I do not invent a track-and-trace substitute.
Do you store customer IDs?
Not on this studio’s contact form. Age-gates and 21+ checks live on your store stack. An ops workflow does not become a second identity database.
Will this replace my bookkeeper?
No. It matches and routes. Exceptions still need a person who can say the bill is wrong. I will not sell you a graph that pretends to be your accountant.
Do I have to use n8n?
I ship n8n. You own the JSON. If Make is already your stack and the job fits, I will say so. Either way the files and the accounts stay yours.
What questions does this article answer?
- Does this touch Metrc?
- Only if we write that on the fence. It can sit next to Metrc — invoices, intake, ticket triage — and never call it. If you do not want it to touch Metrc, it does not. I do not invent a track-and-trace substitute.
- Do you store customer IDs?
- Not on this studio’s contact form. Age-gates and 21+ checks live on your store stack. An ops workflow does not become a second identity database.
- Will this replace my bookkeeper?
- No. It matches and routes. Exceptions still need a person who can say the bill is wrong. I will not sell you a graph that pretends to be your accountant.
- Do I have to use n8n?
- I ship n8n. You own the JSON. If Make is already your stack and the job fits, I will say so. Either way the files and the accounts stay yours.
Last reviewed — Invoice and PO automation spoke for the cannabis cluster. Metrc stays in the fence. Checked 2026-09-12.
Automation
Automation After the show is not you at 1 a.m.
Post-show onboarding — thank-you, join path, merch nudge — belongs in a human-gated n8n rail, not your thumb at load-out.
Automation Saturday still books — the missed-call rail for trades
A missed-call text-back that routes zip and books a slot beats voicemail and Saturday desk coverage you cannot keep staffed. If a kid is cheaper, say so.
Automation Why doesn’t worker concurrency cap my n8n sub-workflows
Worker concurrency does not cap n8n sub-workflows. Each Execute Workflow child is a new execution the production limit skips, usually on the parent worker.
Automation When does Continue on Fail hide real API errors in n8n
Continue on Fail hides real API errors when the node fails but the run stays green. Error Workflow never fires; last-valid data often walks into the next write.
Will's Journal in your inbox.
What I learned this week building for shops, floors, and houses.
You're on the list.
Sign-up failed — try again.
By subscribing, you agree to the Privacy Policy.