5
STATES
3
PAGES
The flow
01
Order received
SYSTEM
An order is created in Airtable. The system auto-assigns the artwork number (
E26001 Essential / S26001 Signature / L26001 Legacy), creates the OneDrive folder, and matches/creates the Moneybird contact. Two ways an order enters:
Entry 1 · Shopify (auto) — the client buys on runoff.studio and a webhook builds everything automatically. Currently paused · enabled at launch.
Entry 2 · Form 4G (manual, Ruben) — for anything that didn't pay through the shop. Three scenarios: Manual B2C (an intake link is emailed to the client) · With intake (Ruben fills everything himself, no email, goes straight to 03) · Personal-gift (no Moneybird, no client emails).
Page (Ruben)
pages.runoff.studio/internal/new-order
internal login · Shopify orders skip this
AUTO · Artwork number + folder + Moneybird
MANUAL · Form 4G (3 scenarios)
▼
02
Awaiting client form
CLIENT
Shopify and Manual B2C orders only. The client gets an email with a link to the intake form, uploads one photo of their car and fills in the details. If they don't reply, two automatic reminders go out (48h, then 5 days). Nothing for Ruben to do here — the system is waiting on the client.
Page (client)
pages.runoff.studio/intake/[orderId]
private link sent by email
EMAIL · intake link to client
AUTO · reminders 48h + 5d
▼
03
Form submitted — photo review
RUBEN
The client submitted. Ruben gets an email at ruben@runoff.studio with a link to the photo review page. There he sees the photo full size, all the intake details, and two buttons: Confirm (moves to Phase B) or Reject.
Page (Ruben)
pages.runoff.studio/internal/photo-review/[orderId]
internal login · link arrives by email
EMAIL · confirmation to client
EMAIL · review link to Ruben
DECISION · Confirm or Reject
▼
04
Photo rejected — AI drafts reply
RUBEN · AI
Click Reject and a popup opens inside the same review page. Ruben writes what should change in plain language; the AI drafts a rejection email in the client's language. Ruben can edit it, regenerate, send it directly, or save it as an Outlook draft. The email always links back to the intake form so the client can re-upload.
Page (Ruben)
pages.runoff.studio/internal/photo-review/[orderId]
same page · rejection popup is inline
AUTO · AI drafts the email
EMAIL · rejection + new intake link
LOOP · back to 03 on resubmit
03.1
Form resubmitted
RUBEN
Sub-state when the client resubmits after a rejection. Behaves exactly like state 03 (Ruben reviews the photo again), but the Pipeline event keeps the history and bumps the
Attempts counter. Repeat until you approve.
Pages you use
- Form 4G · New order (Ruben, internal login) —
pages.runoff.studio/internal/new-order - Form 4A · Intake (client, private link by email, NL/EN) —
pages.runoff.studio/intake/[orderId] - Photo review (Ruben, internal login) —
pages.runoff.studio/internal/photo-review/[orderId]
Good to know
• Shopify is paused right now — Entry 1 is wired up but only switches on at go-live. Until then every order comes in through Form 4G.
• Personal-gift orders skip Moneybird entirely (no contact, no invoice) and send no client-facing emails.
• Company logo is captured on Form 4G for B2B orders only (field "B2B logo URL"). It's applied later, at print.
• Rejection is in-page — there's no separate page. The AI popup lives inside the photo review page, and you always review before sending.
• The client sees Ruben's feedback — when they reopen the intake form to resubmit, Ruben's rejection note shows at the top of their page, so they know exactly what to fix.
• Personal-gift orders skip Moneybird entirely (no contact, no invoice) and send no client-facing emails.
• Company logo is captured on Form 4G for B2B orders only (field "B2B logo URL"). It's applied later, at print.
• Rejection is in-page — there's no separate page. The AI popup lives inside the photo review page, and you always review before sending.
• The client sees Ruben's feedback — when they reopen the intake form to resubmit, Ruben's rejection note shows at the top of their page, so they know exactly what to fix.