{
 "id": "2.14",
 "title": "Workflows spec",
 "department": "Product",
 "department_slug": "product",
 "direction": null,
 "branded": false,
 "status": "generated",
 "owner": "Param",
 "last_verified": "2026-10-26",
 "holds": "Anatomy, 20 templates, states, caps, approvals",
 "urls": {
  "html": "https://handbook.joinsquareup.com/product/workflows-spec",
  "markdown": "https://handbook.joinsquareup.com/product/workflows-spec.md",
  "json": "https://handbook.joinsquareup.com/product/workflows-spec.json"
 },
 "other_directions": [],
 "tldr": {
  "headline": "Twenty workflows, specified now, built later, each stopping for a yes",
  "points": [
   {
    "icon": "gear",
    "text": "A workflow runs a Play when something happens, such as a sell out."
   },
   {
    "icon": "lock",
    "text": "Every template starts off, and every run makes a card and asks for a yes."
   },
   {
    "icon": "clock",
    "text": "All are v2; today a run would end in a brief or a publish pack."
   },
   {
    "icon": "map",
    "text": "Five groups: Listen, Catalog, Ads and site, Calendar, Briefs and posting."
   },
   {
    "icon": "flag",
    "text": "A weekly cap pauses a workflow before a busy trigger runs up a bill."
   }
  ],
  "stat": {
   "value": "20",
   "label": "workflow templates"
  },
  "decide": null,
  "mood": "building"
 },
 "sources": [
  "docs2/content/pages.mjs"
 ],
 "open_questions": [],
 "parts": {
  "Answer": "Workflows run a play when something happens and stop for a yes before anything goes out. All are v2; every template starts off.",
  "Today": "Not built. Today every run would end in a brief or a publish pack, the way a jam does. [src: docs2/content/pages.mjs]",
  "Tomorrow": "### Listen\n\n| Template | When | Reads | Play | Makes | Ends |\n|---|---|---|---|---|---|\n| Answer a new question about you | A Reddit or Quora thread names you or your category | The thread and your product facts | Answer where people ask | A reply in your voice | Your yes, then Copy and open |\n| Reply to a low review | A review of two stars or less | The review and the order | Fix it in public | A reply and a fix list | Your yes, then it posts it |\n| Make our version of a long running rival ad | A rival ad passes 30 days live | The ad and your catalog | Use what already works in your category | Our ad on the same structure | A brief or a publish pack |\n| Win back an AI answer | An AI app stops naming you for a question | The answers and your product page | Be the answer | FAQ and schema | A pack for your developer |\n\n### Catalog\n\n| Template | When | Reads | Play | Makes | Ends |\n|---|---|---|---|---|---|\n| Pause ads for a sold out product | A product sells out | Stock and live ads | Stop paying for what you cannot sell | A pause list and an in stock ad | Your yes, then it pauses them |\n| Bring it back when it is in stock | A product is back | Stock, the paused list and the waitlist | Restart and tell the waitlist | A restart list and a WhatsApp message | Your yes, then it sends it |\n| Launch a new product | A new product goes live on your site | The product page and photos | Launch it everywhere in one week | An ad, a post and an email | A brief or a publish pack |\n| Follow a price change everywhere | A price changes on your site | Live ads, pages and banners | One price everywhere | A price update list | Your yes, then it updates them |\n\n### Ads and site\n\n| Template | When | Reads | Play | Makes | Ends |\n|---|---|---|---|---|---|\n| Refresh a tired ad | A winning ad slows for seven days | Meta, once connected | Keep what works, change the opening | A new hook | Your yes, then it swaps it in |\n| Fix links to a removed product | A product leaves your site | Ads, emails and pages that link to it | No dead ends | A broken link list | A checklist |\n| Fix a page that gets visits but few buys | A page passes its traffic mark with few orders | GA4 and the page | Answer what stops people | A page section | A pack for your theme |\n| Monday budget check | Every Monday | Ad spend and results, once connected | Move money to what works | A budget shift plan | Your yes, then it applies it |\n\n### Calendar\n\n| Template | When | Reads | Play | Makes | Ends |\n|---|---|---|---|---|---|\n| Get ready for a festival | 21 days before a date on your calendar | Your calendar and best sellers | Be early for the moment | A post set and a story set | Your yes, then it schedules them |\n| Plan the launch week | A launch date you set | The product and your channels | One plan for the week | An action plan | A brief for your team |\n| Payday week offer | The last week of the month | Your offers and repeat buyers | Reach people when they shop | An email and a WhatsApp message | Your yes, then it sends it |\n| Thank a creator who posted | A creator tags you | The post and its reach | Turn a mention into a partner | A thank you DM and a repost ask | Your yes, then Copy and open |\n\n### Briefs and posting\n\n| Template | When | Reads | Play | Makes | Ends |\n|---|---|---|---|---|---|\n| Brief your agency on a heart | The owner hearts a card | The card and its jam | Get it made this week | An agency brief | Sent from your email |\n| Schedule what you approved | A jam gets your yes | The publish pack | Ship it at the right hour | The post and its time | Scheduled for you |\n| Three new ads every Monday | Every Monday | This week's top cards | Never run out of fresh creative | Three ads | A brief to your designer |\n| Nudge a late brief | A brief passes its due day | The brief and who has it | Keep the week moving | A short nudge | Your yes, then it sends on Slack or WhatsApp |\n\nEvery template: starts off, makes a card per run, waits for a yes, has a weekly cap, can be paused and shows every run.",
  "How we do it": "Generated by `handbook/tools/gen.mjs` on every build. Change the source, never this file.",
  "Numbers": "Not applicable to a generated document: it is rewritten from its sources on every build.",
  "Open": "Not applicable to a generated document: it is rewritten from its sources on every build."
 }
}