Skip to main content
Journey data is how each recipient brings their own information into the flow. You define the fields the journey needs, your CSV provides the values for each recipient, and your nodes reference those values to personalize calls, messages, and branching.

Defining Fields

Every journey has a journey data schema — a list of fields each recipient is expected to have. Each field has:
  • A name — short, alphanumeric, the handle you reference in nodes (for example, customer_name, account_id, plan)
  • A type — one of string, number, boolean, or date
  • A required flag — whether every recipient must have this field set
Keep the schema focused. Only add fields you actually plan to use somewhere in the flow — in a Call node’s agent parameters, in an SMS message, or as the subject of a Branch condition.

Providing Values Per Recipient

When you import a CSV into a run, each row is a recipient. The column phone_number is always required. Every other column is mapped to one of your journey data fields. If a field is marked required in the schema, every row must have a value for it. Rows missing required fields will be flagged during import.

Using Journey Data in Nodes

Most node config fields accept two kinds of values:
  • Fixed value — a literal value you type in. Same for every recipient. Example: a specific phone number the call should come from, or a fixed SMS message.
  • Expression — a reference that gets resolved per recipient. This is how you personalize.
Expressions can pull from:
  • Journey data — e.g. the customer_name field for the current recipient
  • An earlier node’s output — e.g. the status of a previous Call node
  • Recipient state — e.g. the recipient’s current retry stage
When a recipient reaches a node, Simple AI evaluates any expressions against that recipient’s data and uses the resolved values for the action.

Using Journey Data in Branches

Branch conditions work the same way. A condition compares a field (like a journey data field or a call outcome) to a value, using one of the supported operators. When a recipient hits the branch, their current data is plugged in and the matching path is chosen. See Node Types for the full list of operators and what you can branch on.

Tips

  • Name fields the way you’d write them. customer_name and account_id are easier to read in configs than cn or aid.
  • Keep types honest. Use number for numeric fields you’ll do comparisons on (retry stage, tier level), date for dates, boolean for true/false flags. It makes branch conditions easier to reason about.
  • Required fields prevent silent failures. If the journey can’t do its job without a field, mark it required so bad rows get caught at import time instead of at call time.