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 number 1299, 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 has delivery.* and can reach the parent order.*, 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