Skip to content
Releaseo

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 with sk_live_. Never expose a server key in browser or mobile code.

1. Create a Flow

  1. Open Dashboard → Flows.

  2. Select New flow.

  3. Choose a ready-made template or select Start blank.

  4. Review the Flow name, Flow key, and ordered steps.

  5. 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

  1. Open Settings → Environment.

  2. Select the production environment.

  3. Under Server Project Key, select Generate server key.

  4. 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: Either success or failure.

  • error: Optional failure details.

  • message: Optional context for your team.

  • metadata: An optional flat map containing string values only.

  • env: Optional environment name. Defaults to production.

  • 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.

  • flow and step match the configured keys.

  • Events are using env: "production" or omit env.

  • 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.