Need help setting this up? Our team can configure the entire Shopify Flow + Klaviyo integration for you. Reach out to us and we’ll get it done.
What you need
- Shopify Flow (available on all Shopify plans)
- A Klaviyo account with the Klaviyo Shopify app installed
- Revize installed with Shopify Flow triggers enabled
How it works
Revize fires a Shopify Flow trigger whenever a customer edits their order. You connect that trigger to Klaviyo’s “Track an Event” action, which sends the order data to Klaviyo. From there, you build a Klaviyo Flow to send the email. Revize trigger → Shopify Flow → Klaviyo event → Klaviyo emailAvailable triggers
You can send Klaviyo emails for any of these Revize triggers:Order edited
Fires on any order edit, including product changes and discount code edits.
Shipping address updated
Fires when a customer changes their delivery address.
Email address updated
Fires when a customer updates their email address.
Phone number updated
Fires when a customer updates their phone number.
Delivery date updated
Fires when a customer selects or changes a delivery date.
Order cancelled
Fires when a customer cancels their order.
Support ticket created
Fires when a customer submits a support request through the portal.
Tax invoice generated
Fires when a customer generates a tax invoice for their order.
Each trigger follows the same setup process. The only things that change are the trigger you select in Shopify Flow, the event name you send to Klaviyo, and the event properties.
Part 1: Set up Shopify Flow
Step 1: Find your Klaviyo Public API Key
Step 2: Create a Shopify Flow workflow
Select a Revize trigger
Click Select a trigger, search for Revize, and choose the trigger you want (e.g., Order edited, Shipping address updated, etc.).
Add a Wait action
Click the + below the trigger and add a Wait action. Set the duration to 10 seconds.
Add a Get Order Data action
Click the + below the Wait step and add a Get Order Data action (Shopify action).Configure it as follows:
- Set Select a query to Advanced
- In the Edit query field, enter:
id:{{order.legacyResourceId}} - Set Maximum number of orders to 1
- Set Sort data by to Updated at, Descending
Why the 10-second wait? It gives Shopify’s API time to reflect the latest order changes before fetching fresh data. The Get Order Data step then pulls the correct current line items and variants.
Step 3: Add the Klaviyo “Track an Event” action
| Field | Value |
|---|---|
| Klaviyo Public API Key | Your Public API Key from Step 1 |
| Event Name | See the event name table below |
| Customer Email Address | {{order.customer.email}} |
| Customer First Name | {{order.customer.firstName}} |
| Customer Last Name | {{order.customer.lastName}} |
Event names by trigger
Use a descriptive event name so you can identify each trigger in Klaviyo:| Revize Trigger | Recommended Event Name |
|---|---|
| Order edited | Revize_Order_Edited |
| Shipping address updated | Revize_Address_Updated |
| Email address updated | Revize_Email_Updated |
| Phone number updated | Revize_Phone_Updated |
| Delivery date updated | Revize_Delivery_Date_Updated |
| Order cancelled | Revize_Order_Cancelled |
| Support ticket created | Revize_Support_Ticket |
| Tax invoice generated | Revize_Tax_Invoice |
Step 4: Set Customer Properties
In the Customer Properties field, paste the following JSON:Step 5: Set Event Properties
In the Event Properties field, paste the JSON that matches your trigger. This uses freshly fetched order data from the Get Order Data step, so Klaviyo always gets the correct current data.- Order Edited
- Address / Email / Phone / Delivery Date
- Cancellation
Use this when you want to send the full updated order details, including line items:
The
{% for single_order in getOrderData %} loop reads from the freshly fetched order data, not the original trigger. This ensures correct data every time.Step 6: Turn on the workflow
Part 2: Set up the Klaviyo email
Step 7: Create a Klaviyo Flow
Set the trigger
For the trigger, choose Metric and search for the event name you used (e.g.,
Revize_Order_Edited).Step 8: Email template variables
Use these variables in your Klaviyo email template:| Data | Klaviyo Variable |
|---|---|
| Customer Name | {{ event.customer_name }} |
| Order Number | {{ event.order_name }} |
| Subtotal | {{ event.subtotal_price }} |
| Total Tax | {{ event.total_tax }} |
| Shipping | {{ event.total_shipping }} |
| Total Price | {{ event.total_price }} |
| Currency | {{ event.currency }} |
| Edit Date | {{ event.edited_at }} |
| Customer Email | {{ event.customer_email }} |
| Shipping Address | {{ event.shipping_address }} |
Displaying line items
To display each product in the edited order, use this loop in your Klaviyo email template:Example email
Here is an example of how your email subject and body might look:Prevent duplicate emails
If a customer makes multiple quick edits in one session, Klaviyo may send multiple emails. To prevent this:- Open your Klaviyo Flow
- Add a Flow Filter
- Set it to suppress if the customer received this email in the last 5 minutes
Troubleshooting
Flow shows 'Succeeded' but no event in Klaviyo
Flow shows 'Succeeded' but no event in Klaviyo
Double-check that the Public API Key in Shopify Flow matches the one in your Klaviyo account. This is the most common issue.
Event arrives but data is empty
Event arrives but data is empty
The Event Properties JSON may be invalid. Make sure there are no line breaks inside string values and that
line_items uses [ ] brackets without surrounding quotes.Wrong variant showing in line items
Wrong variant showing in line items
Make sure you are using the Get Order Data step with the 10-second wait, and that your Event Properties use the
getOrderData loop, not order.lineItems directly.Multiple emails being sent
Multiple emails being sent
Add a Flow Filter in Klaviyo to suppress if the customer received this email in the last 5 minutes.
Where to find the metric in Klaviyo
Where to find the metric in Klaviyo
Go to Analytics → Metrics and search for your event name (e.g.,
Revize_Order_Edited). It is created automatically the first time an event is received.How to verify it worked
How to verify it worked
Go to Audience → Profiles in Klaviyo, find the customer email, and check their Activity tab for the event.
Want multiple triggers?
You can set up separate Shopify Flow workflows for each trigger. For example:- Workflow 1: Order edited →
Revize_Order_Edited→ “Your order has been updated” email - Workflow 2: Address updated →
Revize_Address_Updated→ “Your shipping address has been changed” email - Workflow 3: Order cancelled →
Revize_Order_Cancelled→ “Your order has been cancelled” email

