Skip to main content
FlowFn
IntegrationsTemplatesPricingDocsBlogSign inStart free
All posts
VisualizersDashboardsChartsTutorial

Build a Live Dashboard with FlowFn Visualizers — No SQL, No BI Tool

You've got data flowing through your app — orders, signups, sensor readings, run outcomes. Turning it into a dashboard usually means a BI tool, a warehouse connection, and someone who speaks SQL. FlowFn Visualizers skips all of that: define a few typed fields, drop in the chart types you want, and point a workflow at it. You get a public, embeddable, auto-refreshing dashboard with real charts — and zero query language.

FlowFn Team · Product

15 Jul 2026 · 7 min read

A Visualizer is a publishable dashboard page built from one or more views — each a chart, a big-number KPI, a table, or a raw JSON feed over the same stream of rows. It's an App-owned artifact like everything else in FlowFn, and it has one defining trait worth understanding up front: a Visualizer doesn't read your database — a workflow pushes rows into it. That inversion is the whole trick. Instead of a dashboard that polls a table and needs read credentials, you have a design-time object that other automation feeds, and a public page that renders whatever's arrived.

We'll build Bloom & Bean — Sales, a live dashboard for the café whose Data Sheets we set up earlier. Every time an order lands, the café's order workflow does two things: it writes the row to the orders sheet, and it pushes a copy into this visualizer. Here's where we're headed — the live public page:

The live public Visualizer: KPIs, a bar chart, and a channel donut, all real charts

Two KPI cards, a revenue-by-item bar chart, an orders-by-channel donut, a revenue-through-the-day area chart, and a recent-orders table — all on one auto-refreshing URL anyone can open. Let's build it.


Step 1 — Create a visualizer

From Visualizers, hit New visualizer. Name it, give it a slug (that becomes its public /v/<slug> URL), pick the App, and choose whether it starts public.

The Visualizers list with the Bloom & Bean — Sales card

The New visualizer drawer

A fresh visualizer starts with an empty schema and a single table view. The two things we shape next are its fields (what a row looks like) and its views (how to show them).


Step 2 — Design the board

The editor has three tabs — Board, Preview, Data — and the Board is where you compose the dashboard.

The Board tab: the chart-type picker, dimensions, view config, and display settings

Three panels, left to right:

Chart Type — click to add a view. There are seven:

View What it's for
Table paginated raw rows, pick your columns
Number a single big-number KPI (a count, sum, or avg)
Bar a value aggregated across a category
Line / Area a series over time (area is a line with fill)
Donut share of a whole, by category
JSON the raw feed, pretty-printed

Dimensions — the fields a row carries (item, qty, total, channel, placed_at, customer), each typed. These are the keys your charts bind to.

Each view's config — every chart maps a couple of fields to what it draws:

  • Charts (bar/line/area/donut) take an X axis (the category or time field) and a Y axis (the value), plus an Aggregate: Count, Sum, Avg, or Value. Our Revenue by item bar is X = item, Y = total, Sum.
  • Number cards skip the X axis — the whole filtered set reduces to one figure. Revenue today is Sum of total; Orders today is a plain Count.
  • Tables just pick their columns and a sort.

On the right, Display Mode controls how the views lay out on the public page (Tabs, Grid, or Pages), the page-level color palette (Lime, Ocean, Sunset, Forest, Mono, Vivid — each view can override), and auto-refresh (more on that below). Below it, Sharing owns the public URL, password, and SEO.


Step 3 — Preview without a backend

The Preview tab renders your board against sample data, right in the editor — no need to wire up a workflow first:

The Preview tab: the board rendered against editable demo data

It's a browser-framed mock with a DEMO DATA badge and an editable Demo data panel — tweak the JSON and watch the layout react. Use it to get your views and grid sizes right before a single real row exists. (Preview uses generic placeholder rows; the real charts, with your data, live on the public page.)


Step 4 — Feed it from a workflow

Here's the part that makes a Visualizer a live dashboard instead of a static one. Data arrives through the data_visualizer task in a workflow: the task takes its resolved inputs and writes them as one row on the visualizer (each field you've declared in the schema is coerced to its type — "12.50" becomes a number, a date string becomes a date — and anything extra passes through). So the café's order workflow ends with a Data Visualizer task pointed at Bloom & Bean — Sales, mapping item, qty, total, channel, and placed_at. Every order that flows through the workflow lands here.

The Data tab is your audit trail of everything that's been pushed:

The Data tab: rows pushed by workflow runs, with export and purge

Each row shows when it arrived, which workflow run produced it, and its payload. You can Export CSV or Purge old rows. Agents can feed a dashboard too — an agent's visualizer binding pushes rows the same way. (Rows only ever arrive from a workflow task or an agent binding; there's no public "ingest" endpoint to POST to.)

Why push, not pull? Because the thing that knows an order happened — the workflow — is already running. Emitting a dashboard row from it is one extra task, with no second system reading your database on a timer and no read credentials to hand out.


Step 5 — Publish, embed, refresh

Flip the visualizer to public and it's live at /v/<slug> on your App's host. Two more knobs matter:

Embed — drop the dashboard into any site as an iframe:

The Embed settings drawer: token URL, allowed domains, regenerate

You get a token-protected embed URL, an optional allowed-domains allow-list, and a Regenerate button that rotates the token if a link leaks. (The embed token bypasses password protection — that's what lets it render on your marketing site without a login — so rotate it, don't share it.)

Auto-refresh — turn it on and the public page re-fetches on a cadence (minimum five minutes). Visitors can pause polling for their session but can't change the interval, so a popular dashboard can't hammer your data. The page also shows a "last updated" stamp and a manual refresh.

Under the hood the public page is smart about how it fetches: bar and donut views ask for a grouped aggregate, number cards ask for a single total, and tables/line/area/JSON pull the raw rows. You never think about any of it — you pick a chart type and the right query happens.


Filters, palettes, and the finishing touches

  • Filters scope the whole dashboard: equals, not equals, the comparisons, and contains. Mark a filter overridable and visitors can drive it from the URL (?filter_channel=Delivery) — handy for one dashboard that serves many slices.
  • Palettes cascade: a per-view color beats the page default beats the platform default, so you can theme the whole board in one click or fine-tune a single chart.
  • SEO gives the public page a real title/description for search and link previews (plan-gated, and only when the page is openly public).

Plan limits

Visualizers are plan-gated: whether the feature is on (allow_visualizers), how many you can create, and whether embedding and SEO are available. Go over your count on a downgrade and the extra dashboards go quietly private until you're back under the cap — nothing is deleted.


Wrap-up

Visualizers turn "we should build a dashboard" into an afternoon: define your fields, add the views you want, and let a workflow push rows in. You get real charts, a public and embeddable URL, auto-refresh, and filters — with no BI tool, no warehouse, and no SQL. The data you store, the workflow that processes it, and the dashboard that shows it off are all the same few clicks apart.

Start with one Number card and one Bar chart, open the Preview, then add a data_visualizer task to a workflow and watch the Data tab fill. Next, we'll hand this same data to an external AI — hosting an MCP server so a tool like Claude can query the café directly. Make your data visible, and the story it's telling shows up on its own.

Read next

Use-Case
SAAS
Auth

Build a Client Portal with FlowFn

Agencies, consultancies, and B2B teams all hit the same wall: clients want a single place to check their projects, invoices, and files — and emailing PDFs back and forth doesn't scale. A client portal fixes it, but building multi-tenant auth (each client sees only their own data) usually means real engineering. In FlowFn it doesn't: end-user sign-in, per-client data scoping, and a polished portal page are features you assemble, not code you write.

FlowFn Team · 16 Jul 2026 · 3 min read

Use-Case
Devops
Automation

Build an Incident Alerting & On-Call System with FlowFn

When something breaks at 3am, the difference between a blip and an outage is how fast the right person's phone buzzes. You don't need a pricey incident-management platform to get there. FlowFn can catch an alert from any monitor, log the incident, page whoever's on call, escalate if they don't answer, and show the whole team a live status board — built from a webhook, a workflow, a Data Sheet, and a dashboard.

FlowFn Team · 16 Jul 2026 · 3 min read

Use-Case
Internal-Tools
Automation

Build an Internal Ops Tool with FlowFn

Every company runs on a pile of small approvals — refunds, access requests, expenses, discounts — and most of them live in a shared spreadsheet plus a Slack thread nobody can audit. An internal ops tool fixes that: one private table your team works from, action buttons that approve or reject in a click, automatic notifications, and a queue board so nothing rots. FlowFn lets you build it in an afternoon — no internal-tools platform, no login wall to wire up.

FlowFn Team · 16 Jul 2026 · 3 min read

Build your first workflow today

Start free — connect your apps, add AI, and ship an automation you can actually maintain. No credit card required.

Get started free