Template gallery 88
Every template below is a real, runnable workflow document from Flowdrome’s verified demo corpus — the same workflows a fresh instance can seed and the regression verifier runs. Open one for the node-by-node breakdown, then import it: Studio → Import and paste the JSON (or its URL), or just describe it to the Copilot.
Triggers 16
- Fixture kickoff — Inject Inject is the TEST FIXTURE trigger: it fires with this exact payload on Test and never fires in production — the standard way to develop a flow before…
- Runbook — Manual run Manual is the “someone pressed the button” trigger — a runbook step, a one-off backfill. Deployed, it runs once per manual kick; in Test it fires imme…
- Nightly cleanup — Schedule A schedule trigger set to every night at 02:00 (cron). Deploy it to a host and it fires on the clock; Test simulates one firing so you can build the f…
- Order intake API — Webhook POST /orders receives an order and answers 201 with the payload — the classic inbound API. Deploy to a host to serve it live, or use the trigger teste…
- Contact form — Form trigger A hosted HTML form (name/email/message) that submits straight into the flow. Deploy to a host and open its /contact page; in the editor, Test simulate…
- Support chat — Web Chat An embeddable chat bubble (one script tag on any site). Each visitor message runs the flow; Chat Reply answers in the widget. Wire an AI node in front…
- Live prices — WebSocket Every message a connected WebSocket client sends becomes one run — here a price quote gets enriched and logged. Deployed, clients connect to ws://host…
- Telegram bot — inbound messages SETUP: create a bot with @BotFather and paste its token (or a ${credential.telegram.token} reference) — then every message to your bot runs this flow.…
- Slack — inbound events SETUP: point a Slack app's Event Subscriptions at this workflow's deployed URL — mentions and DMs become runs. Test simulates one event.
- Discord — inbound messages SETUP: register a Discord interactions endpoint (or gateway relay) pointing at this workflow's deployed URL. Test simulates one message.
- WhatsApp — inbound messages SETUP: point a Meta WhatsApp Business webhook at this workflow's deployed URL — customer messages become runs. Test simulates one.
- Unified inbox — Receive Message One normalized inbox across platforms: Receive Message extracts text/sender/channel by path regardless of which platform delivered the webhook — write…
- Ops pager — when a run fails The recovery lane: a nightly export fails on purpose (bad path), and the Error Trigger fires IN THE SAME RUN with the failure details — wire the recov…
- Ops pager — Slack alert on failure FAILURE-ALERT PRESET: the Error Trigger's recovery lane posts straight to Slack — import, point the Slack node at your channel credential, done. The d…
- Ops pager — email on failure FAILURE-ALERT PRESET: the Error Trigger's recovery lane sends an email (SMTP) with the failure details — import, fill the SMTP credential, done. The d…
- New lead lands — Table trigger Deployed, this fires whenever a row is created in the “Node Demo Leads” Flowdrome Table (the host polls the table's change feed; pick created/updated/…
Processing & flow 20
- Node Demos · Helper — enrich customer A reusable sub-workflow: takes a customer record, adds the account owner and health score. Called by “Enrich via sub-workflow”.
- Orders — clean, rank & cap A morning orders feed, tidied for the ops board: compute each order's total, drop duplicate submissions, rank by value and keep the top three. Swap th…
- Sales — explode line items & roll up One order arrives with nested line items; Split Out explodes them into rows and Aggregate rolls revenue up per SKU — the shape you'd push to a dashboa…
- Leads — qualify & route A new lead is scored, filtered, and routed: too small → nurture; otherwise the region switch sends it to the right sales pod. Change the Inject values…
- API front door — HTTP Trigger routes One trigger, many endpoints: add ROUTES to the HTTP Trigger and each becomes its own output port — GET /orders lists, GET /orders/{orderId} fetches on…
- Invoices — CSV round trip A finance export arrives as CSV text: parse it into typed rows, package the rows back into a downloadable file, and prove the file reads back — the im…
- Legacy sync — remap & tidy fields A record from the legacy CRM lands with old field names: Map Fields pulls them into the new shape, then Modify stamps the sync status and strips the l…
- Catalog feed — XML in, JSON out, XML back A supplier still speaks XML: convert their product feed to JSON, enrich it with Transform, and answer back in their dialect with JSON→XML.
- Signups — validate before they hit the DB An inbound signup passes two gates: a JSON-Schema contract (bad payloads route to the reject lane instead of crashing the flow) and a business-rule Ch…
- Support inbox — pull the facts from an email A customer email mentions an invoice and an amount; the regex parser lifts both into fields, and Date & Time computes the follow-up deadline three day…
- Release notes — markdown to page snippet The changelog is written in Markdown; render it to HTML and lift the headline with a CSS selector — ready to drop into the status page.
- Refunds — human approval gate A refund above policy pauses the run and waits in the Approvals inbox (bell icon, top right). Approve it to release the refund lane; reject to route t…
- Flaky vendor — retry then catch A vendor call inside a Try block: it retries once, and when it still fails the ERROR lane takes over with the details — the run survives. This demo's …
- Nightly statements — loop the batch Three customer statements processed one at a time through a Loop frame — each pass renders one statement, and the DONE port emits the collected result…
- Image farm — thread pool burst A burst of resize jobs lands on the input queue; the Thread Pool elastically works them (2–4 threads) and publishes results to the output queue, which…
- Enrich via sub-workflow The parent flow hands a customer to the reusable “Helper — enrich customer” sub-workflow and carries on with the enriched result — build a step once, …
- Drip campaign — pace the sends Two touches of a drip campaign, two seconds apart: Wait holds the flow between sends, so the recipient never gets both at once. Swap the consoles for …
- Two systems — merge the answers Billing and shipping each contribute half the picture; Merge (combine by position) joins the two branches into one record before it moves on.
- API guard — rate limit per tenant Two calls from the same tenant hit back-to-back rate limiters sharing one counter scope: the first passes, the second trips the limit and exits via th…
- Overnight alerts — digest into one summary Three alerts drip in; a Digest (release at 3) holds them under one shared key and releases ONE batch — the third append hands a single { count, items …
Storage & integrations 18
- Report drop — write, scan, read The file trio on one flow: write two reports into ./node-demos-data, scan the folder for *.txt, and read one back — the drop-folder pattern behind mos…
- Drop folder watcher — File Event Deployed, this fires whenever a file lands in the watched folder (create/modify/delete). Test simulates a “statement arrived” event so you can build t…
- Cache & counters — Redis Session cache in Redis: SET the visitor record with a TTL, GET it back. Pre-wired for localhost:6379 — the docker one-liner in this description is all…
- Revenue query — SQL (Postgres) A parameterized revenue query against Postgres (works for MySQL too — one dialect switch). Pre-wired for the docker one-liner in this description; poi…
- Product catalog — MongoDB Insert a couple of products, then query them back by filter — the document-store round trip, pre-wired for the docker one-liner in this description.
- Backups — S3 / MinIO Ship a nightly backup object to S3-compatible storage (SigV4) — pre-wired for a local MinIO; the docker one-liner in this description also creates the…
- Partner exchange — FTP The old-school partner feed: upload today's price list to their FTP, download it back to confirm. Pre-wired for the docker test server in this descrip…
- Shared mailbox — IMAP read Poll the support@ mailbox and pull the latest messages into the flow. Pre-wired for the local GreenMail server — run the Send Email demo (Output folde…
- Message backbone — Queue publish & browse The built-in flowdrome.mq broker (zero config): publish an order event, check queue depth, browse without consuming — the decoupling backbone between …
- Status feed — RSS Watch a vendor's status page RSS for new incidents (onlyNew remembers what it has seen across runs). Needs internet; swap the URL for any feed you car…
- Any REST API — utility.api recipe The universal SaaS client: a RECIPE (service + operation + params) builds the real request — here the Airtable list recipe fired at a public echo host…
- Spec-driven call — OpenAPI Paste an OpenAPI document and call operations by id — no hand-built requests. This demo carries a mini spec for the GitHub status API (needs internet)…
- Row per order — Google Sheets SETUP: add a “google-oauth2” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Unti…
- Meeting notes — Google Docs SETUP: add a “google-oauth2” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Unti…
- Contract upload — Google Drive SETUP: add a “google-oauth2” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Unti…
- Deal notes — Notion SETUP: add a “notion” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Until then …
- New contact — HubSpot SETUP: add a “hubspot” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Until then…
- Lead ledger — Flowdrome Tables State BETWEEN runs without a database to run: a script node ensures the “Node Demo Leads” table exists (flowdrome.tables — the same API the Tables scr…
Messaging & output 11
- Service healthcheck — HTTP Request Poll a vendor's status API and act on the answer (needs internet; loopback targets are SSRF-guarded by default — set FLOWDROME_HTTP_ALLOWLIST for inte…
- Answer the caller — HTTP Response A webhook that ANSWERS: the caller POSTs a SKU and gets a JSON quote back with a 200 — Early-respond means the caller never waits for anything after t…
- Order confirmation — Send Email (SMTP) A transactional order confirmation over plain SMTP. Pre-wired for a LOCAL GreenMail test server — run the docker one-liner in this description and Tes…
- Voice line — Play Audio Any binary audio on the payload gets an inline PLAYER in the Console and the run view. Pair with AI Speak (AI folder) for real text-to-speech; this sa…
- Deploy notice — Slack SETUP: add a “slack” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Until then t…
- Standup ping — Discord SETUP: add a “discord” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Until then…
- Delivery update — Telegram SETUP: add a “telegram” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Until the…
- Appointment reminder — WhatsApp SETUP: add a “whatsapp” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Until the…
- Weekly digest — Gmail SETUP: add a “google-oauth2” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. Unti…
- Escalation — Outlook SETUP: add a “microsoft-oauth2” credential in Admin → Credentials, then Test sends for real — the node is pre-wired with ${credential.…} references. U…
- One send API — Send Message (generic) Send Message speaks a GENERIC webhook dialect too — one node, any provider. This demo posts to a public echo endpoint (needs internet); point url at S…
AI 15
- AI · 01 — Chat (ask a local model) The simplest AI workflow: a question goes to a wired ◈ Model (local Ollama) and the answer lands in the Console. Change the question on the Inject nod…
- AI · 02 — Agent (tools + memory) An agent that THINKS with a wired ◈ Model, REMEMBERS with a wired ◈ Memory (./ai-demo-memory), and ACTS with a warehouse-lookup tool — it CANNOT know …
- AI · 03 — Classify & route A support message is labeled by the ◈-wired Classify node (urgent / normal) and an If routes it: urgent tickets one way, everything else the other. Ed…
- AI · 04 — Extract structured data Free-text email in → clean fields out. The ◈-wired Extract node pulls orderId / customer / urgent from the message so downstream nodes get real column…
- AI · 05 — Guardrail (PII redaction) Deterministic safety — no model needed. The Guardrail scrubs emails, phone numbers and card numbers from text before it reaches an AI (or a log). The …
- AI · 06 — RAG 1: load, split, store The ingest half of RAG: a document is loaded, split into sentence chunks, and embedded into the 'ai-demo-kb' vector store by the ◈-wired store node (l…
- AI · 07 — RAG 2: retrieve & answer The ask half of RAG (run demo 06 first): the question pulls the top chunks from 'ai-demo-kb', a Merge joins the question back with the matches, and th…
- AI · 08 — Rerank (best results first) Search gave you four candidate snippets — the ◈-wired Rerank has a local model JUDGE which ones actually answer the query and keeps the top two. This …
- AI · 09 — Embeddings (meaning as numbers) What an embedding IS: two sentences that mean the same thing and one that doesn't, turned into vectors by the ◈-wired Embeddings node, compared with c…
- AI · 10 — Output parser (LLM → valid JSON) LLMs return prose; pipelines need JSON. The ◈-wired Chat is told to answer in JSON, and the Output Parser turns that answer (even when it is wrapped i…
- AI · 11 — Eval (quality gate) Score an AI answer against assertions (contains / regex / not-contains) and gate on the result — the pattern for testing prompts before they ship. Det…
- AI · 12 — Speak (text → voice) Text becomes speech through the ◈-wired local TTS (Kokoro on :8880), PLAYS right in the Console, and is saved to ./ai-demo-speech.mp3 for demo 13 to t…
- AI · 13 — Transcribe (voice → text) The opposite direction: read the mp3 that demo 12 saved and turn it back into text with the ◈-wired local Whisper (:8970). Point the Read node at any …
- AI · 14 — Voice chat on a web page Everything at once: an embeddable web chat where you can TYPE or TALK (mic button). Voice is transcribed by local Whisper, answered by local Ollama, a…
- AI · 15 — Image (text → picture) A prompt becomes a picture through the ◈-wired image model and is saved to ./ai-demo-image.png. Wired for LocalAI's Stable Diffusion on :8081 (docker …
Utilities & scripting 8
- Pricing engine — JavaScript + C# Two script nodes share one calculation: JavaScript computes the margin, then the sandboxed C# node applies tax — the same payload flows through both l…
- Forecast — Python (imported) The Python node is the landing pad for IMPORTED Python steps (e.g. from n8n): it holds the code faithfully but the engine has no Python runtime yet — …
- Audit trail — hash, log, inspect A contract document gets a SHA-256 fingerprint for the audit trail, the event is logged at info level, and Inspect shows the full envelope mid-flow (o…
- Run counter & shared config Global Key/Value keeps a counter across EVERY run of every workflow (Test twice and watch it climb), while Set Variable seeds run-local $vars downstre…
- Caller memory — remember the last request Cross-run memory scoped to this workflow: append what the caller asked for, then recall the recent history — run it several times and the history grow…
- Guard clause — refuse bad orders Fail fast, loudly: a zero-amount order trips Stop & Error with a coded message, and the whole run fails exactly where the data went wrong. THIS TEST I…
- Imported step — what “Unknown” means When an import (e.g. from n8n) contains a node Flowdrome doesn't know, it lands as this placeholder holding the original type + parameters — right-cli…
- Console — the developer's printf Three Console taps on one flow — plain text, an expression, and the whole payload — all streaming into the floating Console dock (bottom left) with ti…
This gallery is generated from the demo corpus snapshot on every site build — the documents
cannot drift from what actually runs. Each template page serves its raw JSON at
…/<name>.json for paste-a-URL import.