Flow Templates
Flow Templates are pre-built flow definitions the platform ships with every tenant. Clone one and it becomes an ordinary draft flow in your account — a working starting point you rename, edit, and publish like any flow you build yourself. The catalog lives in two places that read the same data: the Templates tab in the dashboard, and theGET /api/v1/flows/templates endpoint.
Where the catalog appears
Open the Templates tab either way:- Flows > Templates — the third tab on the Flows hub.
- Deep-link —
…/flows?tab=templates. The legacy/flows/templatespath redirects to the tab URL, so existing bookmarks keep working.
The gallery anatomy
The Templates tab header reads “Pre-built workflow templates to get you started quickly”, with a Create Blank Flow button beside it. Under the header:- Search box — matches against template name, description, and channel labels, so
survey,24h, andwhatsappare all valid queries. - Category chips — All, then the six categories the catalog uses: Welcome, Reminder, Survey, Nurture, Escalation, Custom.
- Template cards — each card shows the template’s name and description, its category badge, a channel badge per channel it spans, its node count, and a schematic preview of the flow graph.
- Incremental reveal — the gallery renders nine cards at a time; Show more grows the list toward the full catalog, and narrowing the search or category resets the window.
Clicking a template: what happens to the draft
Use Template on a card opens the Flow Builder with?template=<id> in the URL. The builder fetches the template’s definition and drops its graph — canvas positions, node labels, and placeholder copy included — onto a fresh canvas as a new, unsaved draft.
A few specifics that matter when you edit it:
- Nothing is wired to your account yet. The trigger node carries a placeholder Trigger Source (for example “Schedule” on the reminder template); set it to a real number, sender, or schedule before you deploy.
- The message copy is placeholder text. Bodys and subjects ship with
{{...}}placeholders such as{{phone}}and{{otp}}; replace the sample copy with your own wording. - Save creates a new flow. The draft has no name or flow of its own until you save — at which point it is an ordinary flow that shares the template’s shape but no longer references it. Editing the draft later never writes back to the catalog.
- API parity for this path: seeding a draft over the API is
GET /api/v1/flows/templates(pick your template), thenPOST /api/v1/flowswith the template’sdefinitionas your starting graph.
API parity
data array of templates, plus the usual meta (request id and timestamp). Each template object:
Reads are rate-limited like the rest of the flows read surface: 60 requests per minute per API key. Callers need the
flows:read scope.
A template graph, in full
Every template carries adefinition — the exact graph the clone drops onto your canvas. A definition is a nodes array plus an edges array: each node has an id, a type (the node taxonomy from the Flows overview), a canvas position, and a data payload holding the node’s settings; each edge points from a source node to a target node. Here is the Welcome SMS template (tpl_welcome_sms) in full:
condition node between the trigger and the send, and its edge to the send node sets sourceHandle: "yes" to follow the condition’s true branch. The definition never contains tenant data — no real numbers, senders, or contact records — so whatever you clone starts out inert.
Over the API, this is exactly the object you POST back:
Clone, customize, publish
The full path from gallery card to a live flow:- Open the Templates tab — Flows > Templates, or deep-link
…/flows?tab=templates. Filter by category chip or search until the starter matches your case. - Select Use Template on its card. The Flow Builder opens with
?template=<id>in the URL and the template’s graph on a fresh, unsaved canvas. - Set the trigger source. The trigger node carries a placeholder Trigger Source — point it at a real number, sender, or schedule. With the node selected, set the field in the node’s configuration panel. Until you do, the flow cannot fire.
- Rewrite the copy. Message nodes ship with placeholder body text and
{{...}}variables such as{{phone}}and{{otp}}. Keep the variables your event payload fills, rewrite the surrounding wording in your voice, and delete placeholders you don’t use. - Set a conversion goal (optional). If the flow drives an outcome — a reply, a confirmed appointment, a completed purchase — set the flow’s goal so flow analytics can report per-node conversion against it. Covered in Flows overview.
- Validate. Save the draft, then run
GET /api/v1/flows/:id/validate— it flags disconnected nodes, a missing trigger, malformed branch weights, and illegal cycles before anything goes live. The full check list is in Flows overview. - Publish. With a real trigger source and your own copy in place, publish from the builder. The cloned flow appears in My Flows (the first tab on the Flows hub) with status Published, and starts executing against new events.
Pick a template per use case
The six category chips describe intent, but several starters sit under theCustom chip or beyond the one-example-per-category table above. Pick by what the starter actually does:
Skip the gallery and build from a blank canvas when the flow is a regulated journey with tenant-specific gates — Create Blank Flow beside the gallery header starts a one-trigger canvas. Start from a template when its graph is at least half of what you want; deleting nodes is cheaper than wiring them.
Template, duplicate, or blank canvas
Three ways to start a flow, and the trade-offs differ:
A template is the right starting point for a journey you have not built; a duplicate is the right one for a journey you have. Neither mutates its source — the catalog is read-only and duplicating a flow copies it.
One example per category
Every category has a built-in starter. One representative per category, with the id you’d pass to clone it:
Other cataloged starters follow the same pattern — an abandoned-cart reminder, a lead-qualification score, a support FAQ deflector, and a few more.
Known limits
The catalog is platform-shipped. Three consequences:- No per-tenant authoring — you cannot register or save a template back into the gallery.
- No versioning or deletion — templates don’t carry versions, and the catalog is not tenant-editable.
- Clone, don’t upload — the supported way to keep a reusable flow shape is to own a draft shaped like it. Clone a starter with Use Template and save, or duplicate-define from a flow you already have:
GETthe flow, thenPOST /api/v1/flowswith the samedefinitionunder a new name.
Next steps
- Flow Builder — edit the cloned draft
- Flows overview — trigger catalog and node taxonomy
- Flow Executions — inspect how a published flow runs
- Flows API — clone a template and manage flows over the API