Agent setup guide
Back-in-Stock Notifier
Twice a day, your waitlist sheet is checked against Shopify stock, and everyone waiting for a product that's back gets one email from your Gmail.
What it does
Twice a day, your waitlist sheet is checked against Shopify stock, and everyone waiting for a product that's back gets one email from your Gmail.
- Twice a day, reads your waitlist sheet and skips rows already marked Notified.
- Finds each waiting row's product in Shopify by its title and adds up its variants' stock in code: more than 0 means back in stock.
- When something is back, AI writes the subject, opening and closing once in your voice; code adds each person's name, the product and its link.
- The wording waits for your approval, unless you switch review off; code checks it for placeholders, then each person gets one email from your Gmail.
- Each emailed row is marked Notified and remembered for a year, so nobody is emailed twice about the same product.
- The summary is counted in code from what each step really did (sent, held, skipped, failed), so it never reports a held message as sent.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Google Sheets, Shopify and Gmail, connected in Settings → Integrations.
- A waitlist tab with the columns Email | Name | Product | Link | Notified, with the product title as in Shopify and the product page link.
What it doesn't do
- Shopify only; it finds products by title, so the Product column must match the product's title in Shopify.
- Stock is counted from Shopify's inventory quantities; products that don't track inventory always read as out of stock.
- It doesn't collect waitlist signups: your form or store app fills the sheet.
- At most 100 rows a run, and Gmail's daily sending limits apply.
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, Shopify and Gmail.
- Nothing to send: the agent runs on a schedule.
- 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 your waitlist (Settings → Integrations → Google Sheets).
3. Connect Shopify
Connect your store with a custom app that has read_products (Settings → Integrations → Shopify).
4. Connect Gmail
Connect the Gmail account the emails go out from (Settings → Integrations → Gmail).
5. Pick the waitlist
Open “Read the waitlist” and pick the account, spreadsheet and tab (columns Email | Name | Product | Link | Notified).
| Setting | What to enter | In step |
|---|---|---|
| Google account (Waitlist) | The Google account that can open the spreadsheet. Pick your connected Google Sheets account. | “Read the waitlist” |
| Waitlist spreadsheet | Paste the link of the spreadsheet. | “Read the waitlist” |
| Waitlist tab | The tab with your waitlist (columns Email | Name | Product | Link | Notified). | “Read the waitlist” |
6. Pick your store
Open “Find the product in Shopify” and pick your store.
| Setting | What to enter | In step |
|---|---|---|
| Shopify store | The store whose products and stock are checked (the app needs read_products). Pick your connected Shopify account. | “Find the product in Shopify” |
7. Describe your store
Open “Write the back-in-stock email” and replace the placeholder with your rules and review switch.
| Setting | What to enter | In step |
|---|---|---|
| Your store and review switch | Replace the placeholder with your store, tone, sign-off and REVIEW BEFORE SENDING: yes or no. It starts as “[YOUR STORE'S NAME, YOUR TONE, HOW YOU SIGN EMAILS AND WHETHER EACH BATCH OF BACK-IN-STOCK EMAILS NEEDS YOUR APPROVAL. REVIEW BEFORE SENDING: yes]” until you replace it. | “Write the back-in-stock email” |
8. Gmail and marking rows
Open “Email them” and pick the Gmail account; open “Mark the row Notified” and pick the same sheet and the Notified column letter.
| Setting | What to enter | In step |
|---|---|---|
| Gmail account | The Gmail or Google Workspace account the emails are sent from. Pick your connected Gmail account. | “Email them” |
| Google account (marking rows, same one) | The same Google account. Pick your connected Google Sheets account. | “Mark the row Notified” |
| Waitlist spreadsheet (same one) | The same spreadsheet. | “Mark the row Notified” |
| Waitlist tab (same one) | The same tab. | “Mark the row Notified” |
| Notified column letter | The letter of your Notified column, e.g. E. | “Mark the row Notified” |
9. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
10. Switch the trigger on
Open the trigger, set your time zone and switch the schedule on. It runs at 9:00 and 15:00.
How it works
The agent is a normal workflow with 34 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- Twice a day (9:00 and 15:00) — Runs on a schedule (cron 0 9,15 * * *, UTC — change it in the trigger's settings). Checks your waitlist against Shopify stock at 9:00 and 15:00. Set your time zone on the trigger; change the times there.
- Read the waitlist — Google Sheets: Read rows. Reads your waitlist tab (Email | Name | Product | Link | Notified).
- Each waitlist row — Repeats the steps below for each item (up to 100 per run). Checks up to 100 waitlist rows, one at a time.
- [For each item — “Each waitlist row”] Already notified? — Step. In code: a row with a date in Notified was emailed before and is skipped.
- [For each item — “Each waitlist row”] Still waiting? — Decision: picks the branch to follow. Rows already notified are skipped.
- [For each item — “Each waitlist row”] Already notified — Kept in the run history. Branch: Already notified. Emailed in an earlier run.
- [For each item — “Each waitlist row”] Find the product in Shopify — Shopify: Find products. Branch: Waiting. Looks up the product by its title in the Product column, with its variants and inventory.
- [For each item — “Each waitlist row”] Add up the stock — Step. In code, not AI: adds up the inventory of the product's variants.
- [For each item — “Each waitlist row”] Back in stock? — Decision: picks the branch to follow. More than 0 units: back in stock. Otherwise still out (or the product wasn't found).
- [For each item — “Each waitlist row”] Back in stock — Kept in the run history. Branch: Back. This row gets an email after the wording is approved.
- [For each item — “Each waitlist row”] Still out of stock — Kept in the run history. Branch: Still out. Checked again next run.
- Count the waitlist — Step. In code: which rows are back in stock, still out, or already notified.
- Write the back-in-stock email — AI step (runs on your AI provider key). AI writes the subject and the opening and closing lines once for this run, in your voice. The product name and link are filled in from each row in code.
- Anything back in stock? — Step. In code: at least one waitlist row is back in stock.
- Send, and review first? — Decision: picks the branch to follow. Nothing back in stock: the run ends. With review on (the default) the wording waits for approval; with review off it goes to the checks.
- Nothing back in stock — Kept in the run history. Branch: Nothing back. No waiting row's product is in stock yet.
- Approve the back-in-stock email — A person approves or rejects it in Reviews (the run waits). Branch: Review first. The subject, opening and closing wait in Reviews with the list of rows to email. Edit, approve to send, or reject to send nothing this run.
- Check the wording — Step. Branch: No review / Approved. In code: subject, opening and closing are there and have no leftover placeholders.
- Passed the checks? — Decision: picks the branch to follow. Passed: the emails go out. Otherwise nothing is sent and the rows stay waiting.
- Held: nothing sent — Kept in the run history. Branch: Held. The wording was blank or had a placeholder.
- Each waitlist row — Repeats the steps below for each item (up to 100 per run). Branch: Send. Goes through this run's waitlist rows again and emails the ones back in stock (up to 100).
- [For each item — “Each waitlist row”] Back in stock? — Decision: picks the branch to follow. Only rows found back in stock in this run are emailed.
- [For each item — “Each waitlist row”] No email — Kept in the run history. Branch: No. Still out of stock, or already notified.
- [For each item — “Each waitlist row”] Emailed before? — Recalls what it remembered earlier (memory “back-in-stock-notifier”). Branch: Back. Remembers who was emailed about which product (kept a year), so each person gets one email per product even if the sheet isn't marked.
- [For each item — “Each waitlist row”] New? — Decision: picks the branch to follow. Emailed about this product before: skipped.
- [For each item — “Each waitlist row”] Already emailed — Kept in the run history. Branch: Already emailed. This person was emailed about this product before.
- [For each item — “Each waitlist row”] Check the row — Step. Branch: New. In code: one valid email address and a product link.
- [For each item — “Each waitlist row”] Valid? — Decision: picks the branch to follow. A row without a valid email or a product link isn't emailed.
- [For each item — “Each waitlist row”] Not emailed: check the row — Kept in the run history. Branch: Fix the row. The Email or Link cell needs fixing.
- [For each item — “Each waitlist row”] Email them — Gmail: Send an email. Branch: Valid. Sends the approved wording from your Gmail with their first name, the product's name and its link.
- [For each item — “Each waitlist row”] Mark the row Notified — Google Sheets: Update a row. Writes the date and time into the row's Notified cell, so it's never emailed again.
- [For each item — “Each waitlist row”] Remember the email — Remembers it for later runs (memory “back-in-stock-notifier”, kept 365 days). Marks this person and product as emailed (kept a year).
- Count the emails — Step. In code, not AI: who was emailed, skipped or held, and any send that failed.
- Done — Kept in the run history. The run history keeps the counts; the sheet shows who was notified.
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.
- 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.
- For-each loops repeat only the first 3 items.
- Memory steps don't read or write stored memory: a recall finds nothing, and a save only shows what it would store.
Go live
- Open the trigger, set your time zone and switch the schedule on. It runs at 9:00 and 15:00.
- Scheduled runs start only once the schedule is activated, and can't repeat faster than your plan's minimum interval.
- 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
How does it know a product is back?
For each waiting row it finds the product in Shopify by the title in the Product column and adds up the inventory of its variants in code. More than 0 means back in stock.
Can someone get the email twice?
No: the row is marked Notified after the email, and the agent also remembers each person and product for a year.
Why Gmail?
People on a waitlist asked to hear from you, so a personal email from your own address fits. Gmail's daily limits apply (about 500 a day, 2,000 on Google Workspace); the agent sends at most 100 a run.
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.
- It didn't run at the expected time: the schedule must be activated, and its time is in the trigger's timezone.
- 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 .