[{"data":1,"prerenderedAt":432},["ShallowReactive",2],{"content-query-15vJbVfBDq":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"summary":9,"order":10,"body":11,"_type":426,"_id":427,"_source":428,"_file":429,"_stem":430,"_extension":431},"\u002Fguides\u002Fwhen-you-outgrow-zapier","guides",false,"","When you outgrow Zapier — FastYoke","Zapier is the right tool for half the SaaS-glue you wire up. Three signals the other half has stopped being SaaS glue and started being an application.",6,{"type":12,"children":13,"toc":412},"root",[14,22,395],{"type":15,"tag":16,"props":17,"children":21},"element","hero",{"eyebrow":18,"tagline":19,"title":20},"Guide","Zapier is great at one shape of work. Here's how to tell when the work you're doing has stopped being that shape.","When you outgrow Zapier",[],{"type":15,"tag":23,"props":24,"children":27},"marketing-section",{"band":25,"max-width":26},"white","3xl",[28,36,42,55,61,74,86,92,99,104,116,135,141,155,167,172,178,183,195,201,213,282,288,293,326,337,343,383],{"type":15,"tag":29,"props":30,"children":32},"h2",{"id":31},"who-this-is-for",[33],{"type":34,"value":35},"text","Who this is for",{"type":15,"tag":37,"props":38,"children":39},"p",{},[40],{"type":34,"value":41},"You run a handful of Zaps in production. Most of them are\nshort — a webhook fires, a row gets written, an email\ngoes out. A few have grown longer, with filters and\nformatters and a custom code step. One of them now has a\n\"if you change this Zap, also update Zap #4382\" note\nattached because the dependency between them is real and\nneither person who wrote them is at the company anymore.",{"type":15,"tag":37,"props":43,"children":44},{},[45,47,53],{"type":34,"value":46},"This guide is for the moment a single Zap turned into a\nsmall ",{"type":15,"tag":48,"props":49,"children":50},"em",{},[51],{"type":34,"value":52},"system",{"type":34,"value":54},".",{"type":15,"tag":29,"props":56,"children":58},{"id":57},"what-zapier-is-genuinely-great-at",[59],{"type":34,"value":60},"What Zapier is genuinely great at",{"type":15,"tag":37,"props":62,"children":63},{},[64,66,72],{"type":34,"value":65},"Zapier's superpower is ",{"type":15,"tag":67,"props":68,"children":69},"strong",{},[70],{"type":34,"value":71},"two-step glue at internet scale",{"type":34,"value":73},".\nA new Stripe charge writes an Airtable row. A new HubSpot\ncontact triggers a Slack DM. The catalog of 6,000+\nintegrations is the actual moat: the long-tail \"I need to\nping the obscure-vertical-SaaS API on a webhook\" use case\ngets handled in three minutes with no code.",{"type":15,"tag":37,"props":75,"children":76},{},[77,79,84],{"type":34,"value":78},"If your Zaps are shaped like that — short, mostly\ntrigger-action, no state — ",{"type":15,"tag":67,"props":80,"children":81},{},[82],{"type":34,"value":83},"stay on Zapier.",{"type":34,"value":85}," The shape\nis the shape.",{"type":15,"tag":29,"props":87,"children":89},{"id":88},"three-signals-youve-outgrown-it",[90],{"type":34,"value":91},"Three signals you've outgrown it",{"type":15,"tag":93,"props":94,"children":96},"h3",{"id":95},"_1-your-zaps-are-stitching-a-workflow-together",[97],{"type":34,"value":98},"1. Your Zaps are stitching a workflow together",{"type":15,"tag":37,"props":100,"children":101},{},[102],{"type":34,"value":103},"A new submission triggers Zap #1, which writes to\nAirtable, which (via a separate Zap #2) emails a\nreviewer, who clicks an \"approve\" link that triggers Zap\n#3, which updates the original Airtable row and fires a\nwebhook to the partner. Three Zaps, one workflow.",{"type":15,"tag":37,"props":105,"children":106},{},[107,109,114],{"type":34,"value":108},"Underneath, this is ",{"type":15,"tag":67,"props":110,"children":111},{},[112],{"type":34,"value":113},"one stateful process",{"type":34,"value":115}," modeled as\nseveral stateless trigger-action pairs. Every connection\nbetween the Zaps is implicit — a column update, a webhook\nURL, a status string. None of it is checked. When Zap #2\nfails silently, the workflow stalls and nobody notices for\ntwo weeks.",{"type":15,"tag":37,"props":117,"children":118},{},[119,121,126,128,133],{"type":34,"value":120},"Zapier models ",{"type":15,"tag":48,"props":122,"children":123},{},[124],{"type":34,"value":125},"events",{"type":34,"value":127},". It does not model ",{"type":15,"tag":48,"props":129,"children":130},{},[131],{"type":34,"value":132},"journeys",{"type":34,"value":134},". The\nmoment the journey has more than one step that matters,\nyou've crossed into application territory.",{"type":15,"tag":93,"props":136,"children":138},{"id":137},"_2-youve-built-a-code-step-thats-now-a-script-you-care-about",[139],{"type":34,"value":140},"2. You've built a code step that's now a script you care about",{"type":15,"tag":37,"props":142,"children":143},{},[144,146,153],{"type":34,"value":145},"One of your Zaps has a ",{"type":15,"tag":147,"props":148,"children":150},"code",{"className":149},[],[151],{"type":34,"value":152},"Code by Zapier",{"type":34,"value":154}," step. It does\nsomething genuinely useful — formats an address, computes\na quote, looks up a customer record in your DB. It's a\nhundred lines of JavaScript. It has no tests. It runs in\nproduction hundreds of times a day. You can't grep your\ncodebase for it.",{"type":15,"tag":37,"props":156,"children":157},{},[158,160,165],{"type":34,"value":159},"This is ",{"type":15,"tag":67,"props":161,"children":162},{},[163],{"type":34,"value":164},"business logic running in a place that wasn't\ndesigned for it",{"type":34,"value":166},". There's no version control. There's no\nreview. The Zap's edit history is the only audit. When\nthe code step breaks, the only way you find out is when a\ncustomer asks why their receipt has \"undefined\" on it.",{"type":15,"tag":37,"props":168,"children":169},{},[170],{"type":34,"value":171},"When a code step has become load-bearing, it needs to\nlive somewhere code lives — with tests, version control,\nand a deployment pipeline. That's not a code step. That's\na service.",{"type":15,"tag":93,"props":173,"children":175},{"id":174},"_3-youre-paying-per-task-for-what-should-be-one-transaction",[176],{"type":34,"value":177},"3. You're paying per-task for what should be one transaction",{"type":15,"tag":37,"props":179,"children":180},{},[181],{"type":34,"value":182},"Your Zaps fire a few thousand times a day at peak. You're\non the Professional plan and the next tier is a noticeable\nstep up. You've optimized them — added filters, batched\nwhere you could — but the underlying truth is that you're\nbilling per-step for an inherent N-step process. A\nsingle new customer triggers eight Zap runs across four\nZaps.",{"type":15,"tag":37,"props":184,"children":185},{},[186,188,193],{"type":34,"value":187},"The economics tell you something the architecture is also\ntelling you: ",{"type":15,"tag":67,"props":189,"children":190},{},[191],{"type":34,"value":192},"the work isn't event-shaped, it's\ntransaction-shaped.",{"type":34,"value":194}," One submission, eight downstream\nside effects, all of which need to happen or none of which\nshould. Per-task billing on a per-task tool starts to\nsting because the tool isn't matched to the shape of the\nwork.",{"type":15,"tag":29,"props":196,"children":198},{"id":197},"what-fastyoke-gives-you-on-the-other-side",[199],{"type":34,"value":200},"What FastYoke gives you on the other side",{"type":15,"tag":37,"props":202,"children":203},{},[204,206,211],{"type":34,"value":205},"The graduation isn't about features. It's about where the\n",{"type":15,"tag":67,"props":207,"children":208},{},[209],{"type":34,"value":210},"workflow lives",{"type":34,"value":212},":",{"type":15,"tag":214,"props":215,"children":216},"ul",{},[217,228,238,255,272],{"type":15,"tag":218,"props":219,"children":220},"li",{},[221,226],{"type":15,"tag":67,"props":222,"children":223},{},[224],{"type":34,"value":225},"FSM jobs instead of chained Zaps.",{"type":34,"value":227}," A single job\ncarries the state through the whole process. The\nstates are explicit, the transitions are checked, and\nthe audit trail is one append-only log instead of\nscattered Zap-run histories.",{"type":15,"tag":218,"props":229,"children":230},{},[231,236],{"type":15,"tag":67,"props":232,"children":233},{},[234],{"type":34,"value":235},"Code in a real codebase.",{"type":34,"value":237}," When you need custom\nlogic, it lives in the FastYoke tenant's WASM\nscripting tier — with version control, review, and a\ntest harness. Not in an opaque text box.",{"type":15,"tag":218,"props":239,"children":240},{},[241,246,248,253],{"type":15,"tag":67,"props":242,"children":243},{},[244],{"type":34,"value":245},"No per-task billing on internal transitions.",{"type":34,"value":247}," The\ncost model is per ",{"type":15,"tag":48,"props":249,"children":250},{},[251],{"type":34,"value":252},"transition",{"type":34,"value":254}," on the FSM, not per\ntrigger-action pair. One submission with eight\ninternal state changes is one job, not eight runs.",{"type":15,"tag":218,"props":256,"children":257},{},[258,263,265,270],{"type":15,"tag":67,"props":259,"children":260},{},[261],{"type":34,"value":262},"Webhooks where they actually fit.",{"type":34,"value":264}," Webhook-as-source\nfor intake; webhook-as-destination for partner\nnotification. The pattern Zapier is ",{"type":15,"tag":48,"props":266,"children":267},{},[268],{"type":34,"value":269},"good",{"type":34,"value":271}," at, you\nkeep. The orchestration in the middle moves to the\nworkflow engine.",{"type":15,"tag":218,"props":273,"children":274},{},[275,280],{"type":15,"tag":67,"props":276,"children":277},{},[278],{"type":34,"value":279},"A real audit.",{"type":34,"value":281}," Every state change is an append-only\nevent-log row. When a partner says \"you never told us\nabout the order,\" you can replay exactly what was sent,\nwhen, with what payload. Zap run histories don't\nspan across Zaps; FastYoke's event log does.",{"type":15,"tag":29,"props":283,"children":285},{"id":284},"honest-tradeoffs",[286],{"type":34,"value":287},"Honest tradeoffs",{"type":15,"tag":37,"props":289,"children":290},{},[291],{"type":34,"value":292},"FastYoke is a workflow engine, not an integration\ncatalog:",{"type":15,"tag":214,"props":294,"children":295},{},[296,306,316],{"type":15,"tag":218,"props":297,"children":298},{},[299,304],{"type":15,"tag":67,"props":300,"children":301},{},[302],{"type":34,"value":303},"The 6,000-integration story goes away.",{"type":34,"value":305}," FastYoke\nhas connectors for the integrations that matter for\noperations work (Stripe, QuickBooks, EHR\u002FADT, mail\nproviders, cloud storage). For the long-tail\nniche-SaaS connector, you'll either build it yourself\nin the WASM scripting tier or keep one Zap in your\nstack as a translation layer. Hybrid is fine.",{"type":15,"tag":218,"props":307,"children":308},{},[309,314],{"type":15,"tag":67,"props":310,"children":311},{},[312],{"type":34,"value":313},"The \"fire and forget\" mental model is heavier.",{"type":34,"value":315},"\nZapier lets you write a one-line description and click\npublish. FastYoke asks you to define the FSM states up\nfront. That's deliberate — and it's the bit that\npays back when the workflow grows.",{"type":15,"tag":218,"props":317,"children":318},{},[319,324],{"type":15,"tag":67,"props":320,"children":321},{},[322],{"type":34,"value":323},"The cost shape inverts.",{"type":34,"value":325}," You stop paying per-task\nand start paying per-tenant. For low-volume Zaps,\nZapier is cheaper. For workflows that fire frequently,\nFastYoke's per-tenant pricing wins by a wide margin.",{"type":15,"tag":37,"props":327,"children":328},{},[329,331,335],{"type":34,"value":330},"If you genuinely run short, stateless Zaps and the\ncatalog is the value — ",{"type":15,"tag":67,"props":332,"children":333},{},[334],{"type":34,"value":83},{"type":34,"value":336}," The\ngraduation is real when the shape of your work changes,\nnot before.",{"type":15,"tag":29,"props":338,"children":340},{"id":339},"how-to-start",[341],{"type":34,"value":342},"How to start",{"type":15,"tag":344,"props":345,"children":346},"ol",{},[347,359,373,378],{"type":15,"tag":218,"props":348,"children":349},{},[350,352,357],{"type":34,"value":351},"Pick the ",{"type":15,"tag":67,"props":353,"children":354},{},[355],{"type":34,"value":356},"one workflow",{"type":34,"value":358}," that's caused you the most\npain in the last quarter — the multi-Zap chain that\nbroke twice, or the code step that scares everyone\non the team.",{"type":15,"tag":218,"props":360,"children":361},{},[362,364,371],{"type":34,"value":363},"Model it as a FastYoke job schema with an explicit\nFSM. The ",{"type":15,"tag":365,"props":366,"children":368},"a",{"href":367},"\u002Fdocs\u002Ftraining\u002Fsyllabus",[369],{"type":34,"value":370},"training\nsyllabus",{"type":34,"value":372}," module M3 is the\nright entry point.",{"type":15,"tag":218,"props":374,"children":375},{},[376],{"type":34,"value":377},"Keep the Zaps running in parallel for two weeks while\nyou validate the FastYoke version. Compare outputs.",{"type":15,"tag":218,"props":379,"children":380},{},[381],{"type":34,"value":382},"When you trust the new system more than the old\none, retire the chained Zaps. Keep the short,\nsingle-action Zaps that genuinely are SaaS glue —\nthey're still the right shape for that.",{"type":15,"tag":37,"props":384,"children":385},{},[386,388,393],{"type":34,"value":387},"The graduation is ",{"type":15,"tag":67,"props":389,"children":390},{},[391],{"type":34,"value":392},"one workflow at a time",{"type":34,"value":394},", not all\nat once.",{"type":15,"tag":23,"props":396,"children":398},{"band":397,"max-width":26},"gray",[399],{"type":15,"tag":37,"props":400,"children":401},{},[402,404,410],{"type":34,"value":403},"Want to walk this through with someone who's migrated\nproduction Zap chains before? Request\n",{"type":15,"tag":365,"props":405,"children":407},{"href":406},"\u002Fgetting-started",[408],{"type":34,"value":409},"early access",{"type":34,"value":411}," and we'll set up a\n20-minute scoping conversation.",{"title":7,"searchDepth":413,"depth":413,"links":414},2,[415,416,417,423,424,425],{"id":31,"depth":413,"text":35},{"id":57,"depth":413,"text":60},{"id":88,"depth":413,"text":91,"children":418},[419,421,422],{"id":95,"depth":420,"text":98},3,{"id":137,"depth":420,"text":140},{"id":174,"depth":420,"text":177},{"id":197,"depth":413,"text":200},{"id":284,"depth":413,"text":287},{"id":339,"depth":413,"text":342},"markdown","content:guides:when-you-outgrow-zapier.md","content","guides\u002Fwhen-you-outgrow-zapier.md","guides\u002Fwhen-you-outgrow-zapier","md",1783575469972]