Data Points
A data point is a named piece of information the AI can use during a conversation — the order status, the number of days since delivery, the customer's default address. Flows reference data points by name, either as an objective the AI works through or as passive context injected for the whole conversation (see Flows).
There are two kinds:
- useData — fetches or derives a value the AI can read (no side effect).
- executeAction — performs a side effect against an external system (create a ticket, cancel an order) and can expose a result.
Both live in the Data Library so they can be defined once and reused across flows. Build and change them conversationally with the Copilot.
Where a data point gets its value
Every data point has a source that says where its value comes from:
| Source | Where the value comes from |
|---|---|
| Order | The current order — its status, fulfillment, tracking, dates, line items. Backed by your order-detail source (see Custom APIs → Source APIs). |
| Customer | The customer record — contact details, address, order history. |
| Order list | The customer's orders, used for selecting which order the conversation is about. |
| Custom API | A Custom API endpoint you've configured — anything with an API. |
| Google Sheet | A row looked up in (or written to) a connected Google Sheet. |
| Standalone | A pure computation from values already collected — no external call. |
Built-in data points
Alongside the data points you configure, Flowcall ships a small set of always-available data points. Reference them by their exact key — no setup needed. Several represent information only the customer can provide, so when you use one as an objective it must be set to ask the customer.
| Key | What it holds | Asks the customer |
|---|---|---|
customerName | The customer's name, from customer context or the conversation. | — |
customerPhone | The customer's phone number. | Yes |
customerEmail | The customer's email address. | Yes |
selectedOrderName | The order the customer selected. May also hold the informational order-source marker ECOMMERCE or OFFLINE. | Yes |
shopifyOrderId | The Shopify order ID for the selected order, when available from order context. | — |
selectedLineItemTitle (alias selectedLineItem) | Title of the single order line item the customer selected. | Yes |
selectedLineItemsTitle (aliases selectedLineItems, selectedLineItemTitles) | Comma-separated titles of one or more selected line items. | Yes |
imageUrls | Image URLs the customer shared in the conversation. | Yes |
pdfUrl | The most recent PDF/document URL the customer shared. | Yes |
pdfUrls | All PDF/document URLs the customer shared, as a comma-separated list. | Yes |
The order- and line-item selection keys are paired with an options_data_point that supplies the list to choose from, and are usually marked required so the flow can't proceed until a concrete selection is made. Use imageUrls / pdfUrl / pdfUrls only to collect the attachment itself — to pull a value out of an image or PDF (a serial number, an address on an invoice), use a plain inferred objective instead.
Beyond these always-available keys, order and customer values — order status, delivery dates, tracking, addresses, order history — are configured data points backed by your order and customer sources. Because they read from your order-detail source, they work the same whatever system your orders live in.
Ticket context
Data points and execute actions can also read values from the current ticket without the flow having to collect them. These keys are available as inputs whenever a data point or execute action needs ticket details:
| Key | What it holds |
|---|---|
ticketId | The ticket's ID. |
ticketName | The ticket's name. |
ticketSummary | The ticket's summary. |
ticketResolution | The resolution recorded on the ticket. |
ticketCustomerId | The customer the ticket belongs to. |
ticketTaskId | The flow that created the ticket. |
ticketDispositionData | The ticket's disposition field values. |
ticketMoods | The customer sentiment/mood signals on the ticket. |
These aren't Data Library items and don't need to be asked for — map them into a data point or execute action's inputs when the call needs them (for example, passing ticketId to an execute action that updates the ticket in Freshdesk).
Custom-API-backed data points
When the value or action comes from a Custom API, the data point maps the flow's values into the API's inputs:
- API input mappings — each of the API's input fields is fed by a data point or objective value collected in the conversation. For a phrase like "pass
pincodetoservice_address_pincode," the conversation valuepincodesupplies the API fieldservice_address_pincode. - Fixed inputs — constant values sent on every call (an account ID, a channel name).
- Required inputs — inputs the flow must collect before the data point can run.
- Possible values — the bounded set of values the data point can return, which conditions and transitions can branch on.
Changing an input mapping (which conversation value feeds an API field) is a change to the data point. Changing the API field itself, or how a value is formatted before it's sent, is a change to the Custom API — a distinction the Copilot is careful about.
Execute actions
An execute action is a data point that does something rather than just reading a value — update a Freshdesk ticket, cancel an order, submit a rating. It's configured like a custom-API-backed data point (input mappings, fixed inputs, required inputs), and because it changes an external system, its calls are recorded in API Logs. Execute actions can also draw on ticket context — the ticket's ID, name, summary, resolution, and more — without the flow having to collect it.
Related
- Flows — how objectives use data points and execute actions.
- Custom APIs — the endpoints that back data points, and the source APIs behind built-in order data.
- Workflows → Data Library — where data points are managed.
- Copilot — create and change data points by chatting.
- Testing → Mocking — mock data point values so tests stay evergreen.