Agent setup guide
Custom Order Quote Builder
Custom order requests priced from your own pricing sheet, checked against your capacity, and emailed once you approve the quote.
What it does
Custom order requests priced from your own pricing sheet, checked against your capacity, and emailed once you approve the quote.
- Starts from each request your custom order form posts to its webhook.
- Reads your pricing rules and capacity from Google Sheets.
- AI prices the order from your rules only (base, per unit, materials, personalisation, rush), checks the deadline against your booked weeks and lists the questions to ask.
- Totals are recalculated in code before anyone sees them — never by the AI: each line (quantity × rate), the subtotal, markups and the total; anything the AI got wrong is corrected and flagged to the reviewer, and lines it couldn't price stay TBD.
- You check and edit the price in Reviews; the approved quote is emailed with replies to your shop inbox.
- Each sent quote is logged in your orders sheet with status “Quoted”.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Google Sheets, connected in Settings → Integrations, with pricing, capacity and orders tabs.
- A custom order form that can post JSON to a webhook.
What it doesn't do
- It never invents prices outside your rules; items it can't price are left for you.
- It doesn't take deposits or payments (a Stripe/Square payment-link version can follow).
- It doesn't look at reference images or links.
- Nothing is sent before you approve the quote.
Availability and plans
Available
Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.
Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.
Before you start
- A paid plan: agents run live, and the Free plan only runs Dry Runs.
- An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
- These apps, connected in Settings → Integrations: Google Sheets.
- A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
- About 20 minutes.
Set it up step by step
Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.
1. Connect your AI provider
The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.
2. Connect Google Sheets
Connect the Google account that can open and edit your pricing, capacity and orders sheets (Settings → Integrations → Google Sheets).
3. Add your shop details
Open “Price it from your rules” and replace the placeholder with your shop details and terms.
| Setting | What to enter | In step |
|---|---|---|
| Your shop details and terms | Replace the placeholder with your shop name, currency, how to read your pricing sheet, what a quote includes, how long it's valid, your deposit and payment terms, items you never make, and your sign-off. It starts as “[PASTE YOUR SHOP NAME, CURRENCY, HOW YOUR PRICING SHEET IS MEANT TO BE READ, WHAT A QUOTE INCLUDES (SHIPPING, TAX), HOW LONG A QUOTE IS VALID, YOUR DEPOSIT AND PAYMENT TERMS AS TEXT, THE ITEMS YOU NEVER MAKE AND YOUR SIGN-OFF HERE]” until you replace it. | “Price it from your rules” |
4. Pick your pricing and capacity tabs
Open “Read your pricing rules” and “Read your capacity” and pick the account, spreadsheet and tab in each.
| Setting | What to enter | In step |
|---|---|---|
| Google account (pricing) | The Google account that can open your pricing spreadsheet. Pick your connected Google Sheets account. | “Read your pricing rules” |
| Pricing spreadsheet | Paste the link of the spreadsheet with your pricing rules. | “Read your pricing rules” |
| Pricing tab | The tab with your pricing rules, e.g. Pricing. | “Read your pricing rules” |
| Google account (capacity) | The same Google account, to read your capacity tab. Pick your connected Google Sheets account. | “Read your capacity” |
| Capacity spreadsheet | The spreadsheet with your capacity tab (often the same one). | “Read your capacity” |
| Capacity tab | The tab with one row per week and how booked it is, e.g. Capacity. | “Read your capacity” |
5. Add your inbox and orders tab
Open “Email the quote” and enter your Reply-to address, then “Log it in your orders sheet” and pick the account, spreadsheet and tab.
| Setting | What to enter | In step |
|---|---|---|
| Your shop inbox (replies) | Customers' replies to the quote come back to this address (Reply-to). | “Email the quote” |
| Google account (orders log) | The same Google account, to add the quote to your orders tab. Pick your connected Google Sheets account. | “Log it in your orders sheet” |
| Orders spreadsheet | The spreadsheet with your orders tab (often the same one). | “Log it in your orders sheet” |
| Orders tab | The tab quotes are logged in: Date, Customer, Email, Item, Quantity, Total, Deadline, Status. | “Log it in your orders sheet” |
6. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
7. Switch the trigger on
Open the trigger, switch the webhook on and copy its URL and secret into your custom order form.
How it works
The agent is a normal workflow with 10 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- New custom order request — Starts when your form or app sends data to the agent's webhook URL. Starts when your custom order form posts a request: item, size, materials, quantity, personalisation, deadline and a reference link.
- Read your pricing rules — Google Sheets: Read rows. Reads your pricing tab: base prices, per-unit prices, material and personalisation surcharges, rush percentages.
- Read your capacity — Google Sheets: Read rows. Reads your capacity tab: the weeks ahead and how booked each one is.
- Price it from your rules — AI step (runs on your AI provider key). AI prices the request from your pricing sheet only (one line per price it uses), checks the deadline against your capacity and lists the questions to ask before you can confirm.
- Check the math — Step. Recalculates every line (quantity × price), the subtotal, the rush charge and the total in code — not by AI — writes the correct figures into the quote and the email, and flags anything the AI got wrong for you. Lines it couldn't price stay TBD.
- Approve the quote — A person approves or rejects it in Reviews (the run waits). The maker checks the price, the deadline answer and the email in Reviews, edits anything (including the price) and approves.
- Email the quote — Sends an email from your workspace's sender. Branch: Approved. Sends the approved quote to the customer, with replies coming back to your shop inbox.
- Log it in your orders sheet — Google Sheets: Add a row. Adds a row to your orders tab: date, customer, email, item, quantity, total, deadline and status “Quoted”.
- Quoted — Kept in the run history. The run history keeps the request, the checked pricing and the email.
- Not sent — Kept in the run history. Branch: Rejected. You rejected the quote; nothing was sent or logged.
Test it with Dry Run
Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. Edit the sample to match the fields your own form or app sends.
Sample data fields
customer_name, email, item, size, materials, quantity, personalisation, deadline, reference_link, notes.
- Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
- Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.
Go live
- Open the trigger, switch the webhook on and copy its URL and secret into your custom order form.
- The webhook is protected by a secret: send it in the header shown in the Activation panel (requests without it are refused with 403). Each request starts one run.
- The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
- When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.
Questions
What should my pricing sheet look like?
One row per item or rule with a header row, e.g. Item, Size, Material, Base price, Per unit, Surcharge, Notes, plus a row for your rush rule (e.g. “Rush: under 14 days, +25%”). Column names can vary: the agent reads them from the header row.
And the capacity sheet?
One row per week: Week starting, Orders booked, Max orders (or Status: open / nearly full / full).
Can the AI get the total wrong?
Not in what you or your customer sees: after the AI prices the order, every line (quantity × price), the subtotal, the rush charge and the total are recalculated in code and written into the quote and the email. If the AI's math was off, the review screen shows what was corrected.
Does it take a deposit?
No. The email states your deposit terms as you write them; a Stripe or Square payment-link version can follow.
What should the form send?
A JSON POST with customer_name, email, item, size, materials, quantity, personalisation, deadline, reference_link and notes.
Troubleshooting
- “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
- A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
- An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
- Nothing happens when your form sends data: check the webhook is switched on and the request carries the secret header (403 means it's missing or wrong).
- A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
- A step failed: open the run in History and check that step in the Trace tab for the error and what it received.
Generated from the agent's own workflow, so it always matches what the agent does. Last updated .