Skip to content

Personalize Klaviyo preorder emails and SMS with variables

The order, customer, product, and shipping details STOQ sends with each preorder email and SMS event, and how to use them in your Klaviyo template.

Last updated

When you send preorder notifications through Klaviyo, STOQ passes order, customer, product, and shipping details as properties on the preorder event. This is the full reference of what’s available, so you can personalize your Klaviyo flow’s email or SMS beyond the basics.

Email and SMS events carry different properties, so use the table for the channel your flow sends.

Requirement Detail
Preorders routed through Klaviyo This applies once you’ve connected Klaviyo and set up the preorder flows. See Send preorder notifications through Klaviyo.
A verified flow Each preorder notification has its own Klaviyo metric and flow. Email uses Preorder confirmed (STOQ), Preorder shipping update (STOQ), and Preorder payment failed (STOQ). SMS uses Preorder SMS confirmed (STOQ). Open the flow’s action in your Klaviyo dashboard to edit its template.
  1. Open the flow template in Klaviyo

    In your Klaviyo dashboard, open the flow for the preorder notification you want, then open its Email (or SMS) action to edit the template.

    The Klaviyo PREORDER flow with the Preorder confirmed email action selected and the Edit button

    The Klaviyo email Message content page with the Edit email button

  2. Add the variable to a block

    Click into a text block and type the variable using its property name from the tables below, for example {{ event.order_name }}. Property names use underscores, not dots: event.order_name, not event.order.name.

    The Klaviyo email code editor with the event.order_name variable in the template and the Save button

These are sent with Preorder confirmed (STOQ), Preorder shipping update (STOQ), and Preorder payment failed (STOQ).

Variable What it is
{{ event.order_name }} The order name, like #1001
{{ event.order_id }} The Shopify order ID
{{ event.customer_name }} The customer’s full name
{{ event.customer_email }} The customer’s email address
{{ event.customer_locale }} The customer’s locale code, like en
{{ event.customer_country }} The customer’s country code, like US
{{ event.customer_country_name }} The customer’s country name, like United States
Variable What it is
{{ event.shop_name }} Your store name, as set for STOQ’s emails
{{ event.shop_logo_url }} Your logo from STOQ’s email settings

Email events don’t include the customer’s first or last name separately, the order number, or the shop domain. Those are only sent with SMS events.

Variable What it is
{{ event.price }} The price the customer paid for the first preordered product, like 29.99
{{ event.currency }} The order’s currency code, like USD
event.products A list of every preordered product in the order, for looping (fields below)

To list each product:

{% for product in event.products %}
{{ product.title }}: {{ product.shipping_text }}
{% endfor %}

Each product in event.products has:

Field What it is
title The product and variant title, like “Floral Shirt - S”
product_title The product title
variant_title The variant title, like “S”
image_url The variant’s image
product_handle The product’s handle
product_id, variant_id The Shopify product and variant IDs
price, currency The price the customer paid for this product, and the currency
selling_plan_name The name of the preorder offer
selling_plan_description The offer’s preorder message, if it’s turned on
shipping_text The product’s shipping message, when the offer shows it
show_shipping true when the offer shows a shipping message for this product
batch, batch_position, batch_ship_text The batch name, its position, and its shipping text, for offers that use batches

The shipping and batch fields are blank when the offer doesn’t use them. Email events don’t include first_product, products_count, other_count, or shipping_timeline.

Variable What it is
{{ event.order_link }} The order in the customer’s account. In payment emails, the link to complete payment.
{{ event.cancel_link }} The page where the customer can cancel the preorder, if you let customers cancel preorders
{{ event.unsubscribe_link }} The unsubscribe link

These carry the text from STOQ’s own template for this notification, so a Klaviyo template can reuse it.

Variable What it is
{{ event.email_subject }} The subject line
{{ event.email_header }} The heading
{{ event.email_description }} The body text
{{ event.email_button_text }} The button text
{{ event.email_type }} Which notification this is: shipping_update, payment_collection_failed, or payment_collection_url, or default for the confirmation
{{ event.shipping_update }} true for a shipping update
{{ event.payment_collection }} true for a payment email

These are sent with Preorder SMS confirmed (STOQ).

Variable What it is
{{ event.order_name }} The order name, like #1001
{{ event.order_number }} The order number
{{ event.order_id }} The Shopify order ID
{{ event.customer_name }} The customer’s full name
{{ event.customer_first_name }} The customer’s first name
{{ event.customer_last_name }} The customer’s last name
{{ event.customer_phone }} The customer’s phone number
{{ event.customer_locale }} The customer’s locale code, like en
{{ event.customer_country }} The customer’s country code, like US
{{ event.customer_country_name }} The customer’s country name, like United States
{{ event.shop_name }} Your store’s name
{{ event.shop_domain }} Your store’s domain
{{ event.products }} All preordered product titles as one comma-separated string
{{ event.first_product }} The first preordered product’s title
{{ event.products_count }} How many preordered products are in the order
{{ event.other_count }} The count beyond the first product, for wording like “and 2 others”
{{ event.price }} The price the customer paid for the first preordered product
{{ event.currency }} The order’s currency code, like USD
{{ event.shipping_timeline }} The first product’s shipping timeline, like “As soon as possible” or a date
event.products_data A list of each product, for looping

Each item in event.products_data has title, product_title, variant_title, image_url, product_handle, product_id, variant_id, price, and currency.

In SMS events event.products is a text string, while in email events it’s a list.

In your flow’s action, use Klaviyo’s preview or send yourself a test to confirm each variable renders with real data instead of literal text. If a variable is blank, check that its name is in the table for that channel and is spelled exactly the same.

Why is a variable showing up blank?

Usually the name doesn’t match. Use underscores (event.customer_name), not dots (event.customer.name), and check the variable is in the table for your channel. For example, event.first_product and event.shipping_timeline are only sent with SMS events.

How do I list every product in a multi-item preorder?

In email, loop over event.products. In SMS, use event.products for a comma-separated string of titles, or loop over event.products_data.

How do I show the shipping date in an email?

Use each product’s shipping_text inside the event.products loop. event.shipping_timeline is only sent with SMS events.

Do these work in the subject line too?

Yes. Event properties work in the subject line, preview text, and body of the flow’s email action.

Are these the same as STOQ's built-in preorder template variables?

No. STOQ’s built-in editor uses its own variable names. Klaviyo templates read the event properties in the tables above, with the event. prefix. See Send preorder confirmation and update emails.

Was this page helpful?

Still stuck? Ask Quinn or chat with support