Privacy & Telemetry
Flowfile can send anonymous usage statistics. The maintainers use them to see how the platform is used and what to improve. It is off by default and needs your consent.
Turning it on or off
- A one-time dialog after install asks for consent. Declining is permanent unless you change it.
- Settings → Preferences → Privacy changes the answer at any time.
FLOWFILE_TELEMETRY=0disables it for a whole deployment, regardless of consent.docker-compose.ymlsets this by default.- In multi-user Docker deployments consent is one setting, controlled by an administrator.
- Flowfile Lite has no telemetry.
What is sent
Example event:
{
"event": "flow_run_succeeded",
"event_id": "b7a1d9c4-3e52-4f18-9a6b-0c5d2e7f8a13",
"install_id": "3f6b1c2e-8a94-4c50-9d0e-2f7a61b8c4d1",
"app_version": "0.12.7",
"platform": "darwin",
"mode": "electron",
"ts": "2026-08-29T12:00:00Z",
"props": {
"node_count_bucket": "4-7",
"node_types": ["filter", "output", "read"],
"duration_bucket": "1-10s",
"used_sample_data": false
}
}
install_id is a random UUID created when you opt in. It is deleted when you opt out.
| Event | When |
|---|---|
app_started |
The backend starts, telemetry is switched on, or a flow runs headlessly. |
flow_created |
A flow is created. |
flow_run_started |
A flow run begins. |
flow_run_succeeded |
A flow run completes. |
flow_run_failed |
A flow run fails. |
activation |
First successful run in a session of a flow with 3+ nodes reading non-sample data. |
ai_diff_accepted / ai_diff_rejected |
An AI-proposed edit is accepted or rejected. |
catalog_used |
First flow run in a session with a catalog reader or writer node. |
schedule_created |
A schedule is created. |
kernel_used |
First use of a Python kernel in a session. |
export_code_used |
Code is exported or a project is saved to a folder. |
alteryx_imported |
An Alteryx workflow is imported. |
alteryx_import_failed |
An Alteryx import fails. |
Extra fields per event:
| Event | Field | Values |
|---|---|---|
flow_run_succeeded |
node_count_bucket |
1-3 · 4-7 · 8-15 · 16-30 · 31+ |
node_types |
Built-in node type names, sorted, max 60. Custom nodes appear as custom. |
|
duration_bucket |
<1s · 1-10s · 10-60s · 1-5m · 5-30m · 30m+ |
|
used_sample_data |
true · false |
|
flow_run_failed, alteryx_import_failed |
error_class |
Exception class name from a fixed list, or OtherError. |
export_code_used |
target |
polars · flowframe · project_zip · project_save |
alteryx_imported |
tool_count_bucket |
1-3 · 4-7 · 8-15 · 16-30 · 31+ |
converted_tools |
Names of Alteryx built-in tools that converted, sorted, max 60. | |
partial_tools |
Same, for tools that partially converted. | |
placeholder_tools |
Same, for tools with no Flowfile equivalent. |
Alteryx tool names are limited to tools Alteryx ships. Third-party plugins are reported as custom_plugin, your own macros as user_macro.
What is not sent
- data values
- file names and paths
- column names, SQL, formulas
- flow and node names
- Alteryx workflow names and macro paths
- error messages
- credentials
Where it goes
Events are sent to https://events.flowfile.app/events, a collector run by the Flowfile maintainers. Source: tools/telemetry_collector/. It stores accepted events in a JSON-lines file with no expiry. It is behind Cloudflare, which keeps its own request logs. The collector's own access log is off.
To have your events removed, post your install id in GitHub Discussions.
Failed sends are retried on the next start, for up to 30 days.
Files on disk
Internal storage is ~/.flowfile locally, $FLOWFILE_STORAGE_DIR when set, or /app/internal_storage in Docker.
| Path | Contents |
|---|---|
<internal storage>/telemetry.yaml |
Consent answer and install id. |
<internal storage>/telemetry_spool.jsonl |
Events not yet delivered. Deleted on delivery, after 30 days, or on opt-out. |
consent: true
install_id: 3f6b1c2e-8a94-4c50-9d0e-2f7a61b8c4d1
Environment variables
| Variable | Effect |
|---|---|
FLOWFILE_TELEMETRY |
0/false/no/off disables telemetry. Other values have no effect. |
FLOWFILE_TELEMETRY_ENDPOINT |
Send to a different collector URL. Empty means the default. |
TESTING |
True disables telemetry. |
Self-host the collector with:
cd tools/telemetry_collector && docker compose up -d
Then set FLOWFILE_TELEMETRY_ENDPOINT=http://<host>:8300/events.