How variables work
Template variables use double curly braces:{{ variable.path }}. When an email is sent, each variable is replaced with the actual value from the transaction.
Variables are grouped by scope — each email type has access to different scopes depending on the data available at send time.
Brand variables (all emails)
Every email template has access to these brand-level variables:Purchase variables
Available in: purchase, refund, shipped, cancelled, renewal-success, renewal-failed, pre-renewal, subscription-paused, subscription-canceled, payment-method-expiring, dunning-final.Shipping / billing address fields
Product variables (inside @each)
Available inside @each(product in products) loops:
Subscription variables
Available in subscription-related emails (renewal-success, renewal-failed, pre-renewal, subscription-paused, subscription-canceled, payment-method-expiring, dunning-final):Course variables
Available in course enrollment, course magic link, and course comment notification emails:Login variables
Available in member login verification code and magic link emails:Refund request variables
Available in the refund request received email: Usespurchase.* variables (see above) plus brand.support_email and brand.support_phone.