Flows  /  Create flow

Create flow

POST/v1/flows

Create a flow with a trigger and one or more actions. It starts as a draft and delivers nothing until you publish it. The trigger's integrationId comes from the trigger-types catalog.

Body parameters
site_id
string · required
The site this flow belongs to.
name
string · required
Flow name, up to 255 characters.
description
string
Optional notes, up to 1000 characters.
trigger_config
object
The trigger, e.g. { integrationId, pageFilter }.
actions_config
array
The actions, e.g. [{ integrationId, config }]. To send a value from the trigger, add config.conversion.valueSource (see below).
Response fields
id
string
Prefixed identifier, e.g. flow_0Dzj….
site_id
string
The site this flow belongs to.
name
string
Up to 255 characters.
status
string
draft (not delivering), published (live), or archived.
trigger_config
object | null
What fires the flow, e.g. { integrationId, pageFilter }.
trigger_name
string | null
Resolved display name of the trigger, e.g. Gravity Forms.
actions_config
array | null
The destinations that receive the conversion, each with the conversion to record and the value to send.
published_at
timestamp | null
When it was last published. null while in draft.

Send a dynamic value

To send each conversion's real value, like the total price of an Acuity Scheduling booking, set valueSource on the action's conversion. Call List value sources first to get the triggerId and sourceId to use. The fixed value and currency become the fallback, which Converly sends if a conversion ever arrives without a value from the trigger.

POST/v1/flows
curl https://app.converly.io/api/v1/flows \
  -H "Authorization: Bearer sk_live_…" \
  -d '{
    "site_id": "site_29Et…",
    "name": "Booked consultations",
    "trigger_config": {
      "integrationId": "acuity-scheduling"
    },
    "actions_config": [
      { "integrationId": "meta",
        "config": {
          "conversion": {
            "event_name": "Schedule",
            "value": 300,
            "currency": "USD",
            "valueSource": {
              "triggerId": "acuity-appointment-scheduled",
              "sourceId": "acuity.booking_price"
            }
          }
        } }
    ]
  }'

Converly checks the value source when you save. If the value can't be used with this trigger and destination, you get a 400 that points at actions_config[0].config.conversion.valueSource. If the check itself can't run, you get a 503, which is safe to retry.

POST/v1/flows
curl https://app.converly.io/api/v1/flows \
  -H "Authorization: Bearer sk_live_…" \
  -d '{
    "site_id": "site_29Et…",
    "name": "Demo bookings",
    "trigger_config": {
      "integrationId": "gravity-forms",
      "pageFilter": "all"
    },
    "actions_config": [
      { "integrationId": "meta",
        "config": {
          "conversion": { "event_name": "Lead" }
        } }
    ]
  }'
201 Created
{
  "id": "flow_0Dzj…",
  "status": "draft",
  "trigger_name": "Gravity Forms",
  "published_at": null
}