Workflow variables reference
Last updated: September 1, 2026
{{ variable }} placeholders let an action's inputs carry live data about the
order, delivery, or job the workflow is acting on. Instead of typing a fixed
value, you write a placeholder like {{ order.id }}, and when the step runs
Nash fills in that order's real ID.
This is a general workflow capability — it works in the input fields of many actions. You can use it in a Send HTTP request step's path or body, in a message action, and in other action inputs that accept free text. This page is the catalog of placeholders you can reference.
Note
This is a beta feature. Reach out to Nash if you'd like early access.
Two ways a variable resolves
How a placeholder fills in depends on whether it's the only thing in the field:
- A field that is exactly one
{{ ... }}and nothing else keeps the value's real type. You can drop in a whole number, or a whole object, not just text. For example, a field set to exactly{{ order.value_cents }}sends the number1299, not the text"1299". (This native-type behavior applies to the Send HTTP request action's fields.) - Otherwise the placeholder is substituted into the surrounding text. In a
field like
Order {{ order.external_id }} is on the way, the placeholder is replaced inline and the whole field renders as text.
Warning
A missing or unknown variable makes the step fail — it doesn't quietly send a blank. Reference only fields that exist for the trigger you're on. Which fields are available depends on what the trigger is about: an order trigger has
order.*; a delivery trigger hasdelivery.*and can reach the parentorder.*, and so on.
Event data
trigger_metadata.<...> reaches into the data the triggering event carried — for
example the order or the attempt behind a delivery-status change. The path after
trigger_metadata. depends on the shape of the event that fired the workflow, so
it's specific to that trigger. If the path isn't present on the event, the step
fails, so only reference data you know the event carries.
Results from earlier steps
node_var_<step> references the output an earlier step stored, where <step> is
that step's name. Later steps can read it to branch or to pass a value onward.
The Send HTTP request action also records a few extra results for its step that you can branch on:
| Placeholder | What it holds |
|---|---|
node_var_<step> |
The value the step captured from the response. |
node_var_<step>__ok |
Whether the step succeeded — the text true or false. |
node_var_<step>__status_code |
The HTTP status code the request came back with. |
node_var_<step>__duration_ms |
How long the request took, in milliseconds. |
node_var_<step>__failure_reason |
A short, human-readable reason the step failed, if it did. |
Fields you can reference
Each entity has its own namespace — order.<field>, delivery.<field>, and so
on. Write the field name in lowercase, with words joined by underscores, exactly
as shown below (for example {{ order.pickup_phone_number }}). A namespace is
only available when the trigger's context includes that entity.
Nash dispatches the delivery; a provider or your own fleet carries it out. The courier and provider fields below describe whoever is fulfilling the delivery.
Order — order.*
The order tables here are a selection of the most-useful fields. Orders carry
many more; see Order fields & settings reference
for what every order field means. Variable names follow the lowercase,
underscore-separated pattern shown in the tables above — with a pickup_ or
dropoff_ prefix where a field is specific to one end of the trip (for example
order.pickup_phone_number, order.dropoff_address_city). When you're unsure of
the exact name for a field, use one already shown here as your model.
Identity
| Variable | What it holds |
|---|---|
order.id |
Nash's identifier for the order. |
order.external_id |
Your own order ID. |
order.external_group_id |
Your grouping ID linking related orders. |
order.reference_id |
A reference string supplied with the order. |
order.status |
The order's current lifecycle status. |
Pickup and dropoff
| Variable | What it holds |
|---|---|
order.pickup_business_name / order.dropoff_business_name |
Business at each stop. |
order.pickup_first_name / order.pickup_last_name |
Pickup contact name (dropoff has the same pair). |
order.pickup_phone_number / order.dropoff_phone_number |
Contact phone at each stop. |
order.pickup_email / order.dropoff_email |
Contact email at each stop (dropoff is the customer email). |
order.pickup_address / order.dropoff_address |
Full street address at each stop. |
order.pickup_address_city / order.dropoff_address_city |
City (state, zip, and country follow the same _state / _zip / _country pattern). |
order.pickup_instructions / order.dropoff_instructions |
Free-text instructions for each stop. |
Timing
| Variable | What it holds |
|---|---|
order.pickup_start_time_dt / order.pickup_end_time_dt |
Requested pickup window, in your org's timezone. |
order.dropoff_start_time_dt / order.dropoff_end_time_dt |
Requested dropoff window, in your org's timezone. |
order.minutes_until_pickup / order.minutes_until_dropoff |
Minutes from now (negative once the time has passed). |
order.day_of_week |
Weekday name of the pickup time. |
Contents, value, and links
| Variable | What it holds |
|---|---|
order.description |
The order's description. |
order.items_count |
Number of items. |
order.currency |
ISO currency code. |
order.value_cents |
Declared order value, in cents. |
order.tip_amount_cents |
Tip, in cents. |
order.tags |
Labels attached to the order. |
order.portal_url |
Link to the order in the portal. |
order.public_tracking_url |
The Nash-hosted tracking page for the order. |
Delivery — delivery.*
Also a selection. See
Delivery fields & columns reference for what
every delivery field means; variable names follow the same lowercase,
underscore-separated pattern shown here (for example delivery.courier_phone_number).
When you're unsure of the exact name, model it on one already shown above.
| Variable | What it holds |
|---|---|
delivery.status |
The delivery's current status. |
delivery.provider_name |
The provider (or your own fleet) fulfilling it. |
delivery.provider_delivery_id |
The provider's own ID for the delivery. |
delivery.pickup_eta |
Estimated pickup time. |
delivery.completion_eta |
Estimated dropoff time. |
delivery.dropoff_deadline |
Latest acceptable dropoff time. |
delivery.courier_name |
The courier's name. |
delivery.courier_phone_number |
The courier's phone number. |
delivery.vehicle_type |
The vehicle type. |
delivery.tracking_url |
The provider's tracking URL (often empty for own-fleet deliveries). |
delivery.public_tracking_url |
The Nash-hosted, customer-facing tracking page. |
delivery.public_feedback_url |
The Nash customer feedback page. |
delivery.photo_proof_of_delivery_url |
The proof-of-delivery photo. |
delivery.currency |
ISO currency of the delivery's prices. |
delivery.total_price_cents |
Total delivery price including fees, in cents. |
Package — package.*
The package.* namespace mirrors the order.* pickup, dropoff, address,
contact, and value fields — reference them the same way, as package.<field>.
It also carries a few package-specific fields:
| Variable | What it holds |
|---|---|
package.external_identifier |
Your own package ID. |
package.reference_id |
A reference string supplied with the package. |
package.description |
The package's description. |
package.items_count |
Number of items. |
package.value_cents / package.value_currency |
Declared value and its currency. |
package.package_delivery_mode |
The package's delivery mode. |
Job — job.*
A job is the dispatched delivery Nash creates from an order.
| Variable | What it holds |
|---|---|
job.id |
Nash's identifier for the job. |
job.external_identifier |
Your own job ID. |
job.portal_url |
Link to the job in the portal. |
job.tags |
Labels on the job (copied from the order). |
job.package_count |
Number of packages on the job. |
job.total_package_value_cents |
Combined declared package value, in cents. |
Task — task.*
A task is one delivery attempt.
| Variable | What it holds |
|---|---|
task.id |
Nash's identifier for the attempt. |
task.provider_name |
The provider carrying the attempt. |
task.status |
The attempt's current status. |
task.attempt_number |
The attempt's sequence number, starting at 1. |
task.failure_reason |
The human-readable reason the attempt failed, if it did. |
Courier form — courier_form.*
Available on courier-form workflows, where a driver submits a form.
| Variable | What it holds |
|---|---|
courier_form.type |
The form's type. |
courier_form.definition_name |
The form's display name. |
courier_form.field.<field_id> |
The value a driver submitted for a specific form field. Replace <field_id> with the ID of the field you want. |
Provider — provider.slack_channel
| Variable | What it holds |
|---|---|
provider.slack_channel |
The Slack channel configured for the delivery's provider. |
Notifications use a different set
Customer notification messages have their own, friendlier set of tokens —
aliases such as {{ dropoff_address }} and {{ driver.name }} — on top of these
workflow variables. If you're composing a notification, use that vocabulary, not
the entity variables here. See
Notification events and variables reference.
Related
- Build a workflow in the portal — where you place actions and fill in their inputs.
- Send an HTTP request from a workflow — the action that templates a path, query, headers, and body.
- How workflows work — triggers, conditions, and the overall model.