Enscale Docs
Automation

Using customer details

Put the customer's name, order number or tracking link into an automated message, instead of sending everyone the same generic text.

Variables are how an automated message says "Hi Priya, your order #1001 has shipped" instead of "Your order has shipped".

They're blanks you drop into a message, filled in with real values at the moment it sends. You write them as {{something}}, but you almost never type them by hand — the builder gives you a picker.

Use the picker, not your memory

Every text box in the builder has a Browse Variables button. It lists exactly what's available at that point in the flow, with a sample value beside each one.

Use it every time. The picker only shows things that genuinely exist for your chosen trigger, which prevents the single most common problem — a message that goes out with a blank where the customer's name should be.

Where the details come from

Written asWhat it is
{{trigger.…}}Whatever started the flow — the order, the message, the comment
{{<step name>.…}}Something an earlier lookup step fetched, like Fetch Order
Saved valuesSomething you stored earlier with a Save Variable step
{{item.…}}The current product, inside a Loop step

Some real ones from a Shopify order:

{{trigger.name}}                     → #1001
{{trigger.total_price}}              → 2400.00
{{trigger.customer.first_name}}      → Priya
{{trigger.financial_status}}         → paid

When a detail comes through blank

This is the thing that actually goes wrong, so it's worth understanding why.

Shopify doesn't send everything with every event. What arrives when an order is created is different from what arrives when a customer is updated. If you reference something that isn't in that particular event, it renders blank.

The fix is always the same: add a Fetch Order, Fetch Product or Fetch Collection step before your message. Those go and ask Shopify for the full record, and then everything's available to steps that come after.

Rule of thumb

If the picker doesn't offer what you need, it isn't there. Add a Fetch step rather than typing the name you'd expect it to have.

The specific gaps that catch people

Looking up more than the trigger gives you

A lookup step makes everything it found available to every step after it. The common pattern for edited orders:

Trigger: Order Edited
  → Fetch Order   (using the order id from the edit)
  → Template Message   (now has the full order to work with)

Listing every product in an order

Use a Loop step. It runs its steps once per item, and each one is available as {{item.…}}:

Loop over the order's line items
  → {{item.title}}, {{item.quantity}}, {{item.price}}

Loops stop at 50 items by default, so an unusually large order can't run away with your allowance.

Don't paste a raw product URL into a message. Use the Format link step instead — it tags the link so you can tell how much revenue your messaging actually generated, and can shorten it.

It defaults to marking links as coming from WhatsApp automation, which is what makes your workflow traffic show up properly in Revenue attribution. A raw pasted link is invisible there.

Check before you publish

Two ways, both in the builder:

  • Preview walks the whole flow and shows you each message as it would actually be sent.
  • JSON preview on an individual step shows the raw resolved data, if you want to see exactly what's available.

The sample values are illustrative — but the shape is real. If something shows blank in preview, it will be blank for a real customer. That's the check worth doing.

Next steps

On this page