Set up and monitor your first Flow
Releaseo Flows helps you monitor multi-step customer journeys and backend processes such as signup, checkout, workspace provisioning, password resets, subscription changes, and data imports.
Set up and monitor your first Flow
Releaseo Flows helps you monitor multi-step customer journeys and backend processes such as signup, checkout, workspace provisioning, password resets, subscription changes, and data imports.
Each event is sent from your backend. Releaseo then shows where runs start, complete, or fail — no browser SDK is required.
Before you start
You need:
Permission to manage Flows and Environment settings in the selected project.
A backend or serverless function that can send HTTPS requests.
A Server Project Key for the production environment.
A publishable key that starts with
pk_live_cannot send Flow events. Flow ingestion requires a server key that starts withsk_live_. Never expose a server key in browser or mobile code.
1. Create a Flow
Open Dashboard → Flows.
Select New flow.
Choose a ready-made template or select Start blank.
Review the Flow name, Flow key, and ordered steps.
Mark the final successful step as the terminal step, then create the Flow.
Releaseo includes templates for:
Signup
Checkout & payment
Onboarding provisioning
Password reset
Subscription change
Data import
Flow and step keys are used by the ingestion API, so the values sent by your backend must match them exactly. Step keys must be unique within a Flow.
Renaming a step key starts statistics for the new key from zero. Existing history remains attached to the previous key.
2. Generate a Server Project Key
Open Settings → Environment.
Select the production environment.
Under Server Project Key, select Generate server key.
Copy the generated
sk_live_...value and store it in your backend's secret manager.
Do not commit the key to source control, include it in frontend bundles, or expose it in client-side logs.
3. Send the first event
Send Flow events to:
POST https://api.releaseo.io/api/public/flows/events
Example:
curl -X POST https://api.releaseo.io/api/public/flows/events \
-H "x-project-key: sk_live_YOUR_SERVER_KEY" \
-H "Content-Type: application/json" \
-d '{
"flow": "signup",
"ref": "user_4821",
"step": "started",
"status": "success",
"env": "production"
}'
A successful request returns HTTP 202 Accepted with the number of accepted events.
4. Track every step with the same run reference
Use the same ref value for every event that belongs to one run. The reference can be a user ID, order ID, import ID, or another stable identifier from your system.
For example, a signup run can send:
{ "flow": "signup", "ref": "user_4821", "step": "started", "status": "success" }
{ "flow": "signup", "ref": "user_4821", "step": "account_created", "status": "success" }
{ "flow": "signup", "ref": "user_4821", "step": "email_verified", "status": "success" }
{ "flow": "signup", "ref": "user_4821", "step": "completed", "status": "success" }
The important fields are:
flow: The Flow key configured in Releaseo.ref: A stable reference shared by all events in one run. Maximum 128 characters.step: The exact step key configured in the Flow.status: Eithersuccessorfailure.error: Optional failure details.message: Optional context for your team.metadata: An optional flat map containing string values only.env: Optional environment name. Defaults toproduction.occurredAt: Optional ISO 8601 timestamp. Releaseo uses the current time when omitted.
5. Report a failure
Send status: "failure" on the step that failed. Add safe diagnostic context without including passwords, tokens, payment details, or other sensitive data.
curl -X POST https://api.releaseo.io/api/public/flows/events \
-H "x-project-key: sk_live_YOUR_SERVER_KEY" \
-H "Content-Type: application/json" \
-d '{
"flow": "checkout-payment",
"ref": "order_9402",
"step": "payment_authorized",
"status": "failure",
"error": "authorization_declined",
"message": "The payment provider declined the authorization.",
"metadata": {
"provider": "payment-provider",
"region": "eu-west-1"
},
"env": "production"
}'
You can also send an array of up to 100 events in one request when your backend processes events in batches.
6. Read the results
Open the Flow from Dashboard → Flows.
Overview
Use the Overview tab to inspect:
The step funnel for the last 7 days.
Recent failures and their error details.
Recent runs and the last step reached.
The full event timeline for an individual run.
Click a run or failure to open its timeline. This makes it easier to see the exact order of successful and failed steps for one ref.
Analytics
Use the Analytics tab to compare:
Started runs
Completed runs
Completion rate
Failure events
Runs versus failures over 24 hours, 7 days, or 30 days
7. Configure alerts
Open the Flow's Alerts card to:
Enable or disable alerts when a run completes.
Open the notification configuration for Flow step failed.
Open the notification configuration for Flow run completed.
Delivery destinations and message templates are managed in Notification Triggers. Step-failure alerts are limited to one notification every 15 minutes per step to prevent repeated incidents from flooding a channel.
Troubleshooting
403 server_key_required
The request used a publishable pk_live_ key or another non-server key. Generate and use the sk_live_ key from Settings → Environment.
401 Invalid project key
The key is incorrect, disabled, or was replaced by a rotated key. Copy the current Server Project Key and update your backend secret.
400 unknown_flow
The Flow key does not exist or the Flow is disabled. Copy the key from the Flow settings and verify the Flow is enabled.
400 unknown_step
The event's step does not exactly match a configured step key. Step keys are case-sensitive.
The request was accepted but the dashboard is empty
Confirm that:
All events use the same project Server Key.
flowandstepmatch the configured keys.Events are using
env: "production"or omitenv.The Flow is enabled.
You are viewing the correct project and date range.
Flow events are processed asynchronously, so allow a short moment before refreshing the dashboard.
Was this article helpful?
Still stuck? Contact us and mention this article.