> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help-shopify.17track.net/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# How to integrate 17TRACK with Klaviyo?

# About Klaviyo
Klaviyo is an email marketing platform that provides powerful SMS and email marketing automation for online stores. Klaviyo unifies all customer data in one place and delivers personalized experience through email, SMS, web forms, push notifications. 
# How to integrate Klaviyo with 17TRACK
Through the Klaviyo integration, 17TRACK can sync the shipping status of parcels to Klaviyo. You can create automated emails or SMS in Klaviyo based on logistics events, such as shipment notifications, delivery reminders, signed-for thanks, and exception alerts.
||| ⚠️ Warning: The new version of the Klaviyo integration uses OAuth authorization for connection, so you do not need to manually copy or enter the Klaviyo Public API Key.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/c/c/3/1cc3f89e3566e700/image_5ua5ds.png)
# Preparations before use
Before you start, please confirm the following:
* You already have an active Klaviyo account;
* You have the permission to manage the current 17TRACK account;
* Your 17TRACK plan supports Klaviyo integration. The Klaviyo integration is available for Pro plans and above;
* If you plan to send notifications via Klaviyo, please check whether email notifications have been enabled in 17TRACK to avoid duplicate notifications to customers for the same logistics status.
|| 📌 Note: If your current plan does not support Klaviyo integration, the system will prompt you to upgrade before authorization. After the upgrade is successful, you can proceed to complete the Klaviyo connection without starting over.
# Connect Klaviyo from 17TRACK
1. Log in to your Shopify admin and open the 17TRACK app.
2. Go to Integrations in the left-hand menu.
3. Locate Klaviyo in the "Automation" category.
4. Click "Connect".
5. The system will redirect you to the Klaviyo authorization page.
6. After confirming that the authorized Klaviyo account is correct, click "Allow" or "Grant Access".
7. Once the authorization is completed, you will be redirected back to the Klaviyo setup page on 17TRACK.
8. Review the events and fields to be synced, then save the settings.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/c/c/3/1cc3f89e3566e700/image_1nbfc8o.png)
![](https://storage.crisp.chat/users/helpdesk/website/-/1/c/c/3/1cc3f89e3566e700/image_rpdagf.png)
# Which logistics events can be synchronized
After the connection is successful, you can select the shipping events to be synced to Klaviyo in 17TRACK.
| Event Name | When is it triggered? | Common Uses |
| ---- |
| Shipment status updated | When the main status of the parcel changes | Status notifications for order statuses including dispatched, in transit, out for delivery, signed for, and exceptions |
| Shipment stalled | When there is no new logistics tracking information for the parcel for a consecutive period of time | Proactively reassure customers to reduce inquiries about "where is my package" |
| Shipment delayed | When the parcel delivery time exceeds the normal threshold | Delay reminder, customer service intervention |
| Estimated delivery missed | If the parcel has not been signed for yet beyond the estimated delivery time | EDD overdue reminder, compensation or customer service follow-up |

|| 📌 Note: Some of these events support the configuration of a day threshold, for example, "synchronize when there is no new logistics tracking information for the parcel for 3 consecutive days". After modifying the settings, only newly generated events in the follow-up will be affected.
![](https://storage.crisp.chat/users/helpdesk/website/-/1/c/c/3/1cc3f89e3566e700/image_3tjjqn.png)

# What information will be sent to Klaviyo
17TRACK will send the information required to create a Flow to Klaviyo along with logistics events.
Required fields cannot be disabled, including:
* Recipient's email address;
* Waybill Number;
* Waybill link;
* Logistics status.
You can also choose whether to sync additional information, for example:
* Recipient's phone number, name, and country;
* the first carrier, the second carrier;
* Order number, order placement time, delivery time;
* Order amount, currency, label, quantity;
* Store name, latest logistics event, and product information.
Please only enable the fields that you actually need to use in Klaviyo Flow.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/c/c/3/1cc3f89e3566e700/image_1gh831a.png)
# How should users with legacy Public API Keys handle them?
||| ⚠️ Warning: If you have previously connected to Klaviyo using a Public API Key, the existing connection will not be terminated immediately due to the launch of the new version.
In 17TRACK, you will see that the current connection method is either "Public API Key" or "Legacy Connection". You can choose to keep the legacy connection for the time being, or upgrade to the new OAuth connection.
Please note the following when upgrading:
* Before the authorization is successful, the old connection will continue to work;
* The system will try its best to retain the synchronization fields you originally selected;
* After successful authorization and verification, 17TRACK will disable the old sending channel for the Public API Key to prevent duplicate logistics events from being synced to Klaviyo.
* The Flows you originally created in Klaviyo will not be automatically modified, enabled or deleted by 17TRACK;
* Old metrics, such as `17TRACK shipment status update`, will be retained for a period of time to facilitate your viewing of historical data or migration of flows;
* New connections will use OAuth for authorization, and there is no need to maintain the Public API Key subsequently.
||| ⚠️ Warning: If the old Public API Key has expired, it is recommended to directly switch to OAuth for reconnection. After the new version is released, new users generally no longer need to manually fill in the Public API Key, nor is it recommended to do so.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/c/c/3/1cc3f89e3566e700/image_z7uff1.png)
# How to avoid duplicate notifications
||| ⚠️ Warning: Both 17TRACK email notifications and Klaviyo Flows can send logistics-related messages to customers. If both channels send notifications for the same status, customers may receive duplicate emails.
We recommend that you check the following before enabling Klaviyo Flow:
* Whether the email notification for the same status has been enabled in 17TRACK;
* Are there any existing old Flows in Klaviyo that use `17TRACK shipment status update`;
* Whether the new Flow uses the same trigger conditions as the old one;
* Whether the same status will trigger both emails and SMS messages simultaneously.
|| 📌 Note: If you want Klaviyo to be in charge of logistics notifications, you can adjust the corresponding email notification settings in 17TRACK after confirming that the Klaviyo Flow is working properly.
# Check connection status and manage connections
Once the connection is established successfully, you can view the following on the Klaviyo settings page of 17TRACK:
* Current connection status;
* Connected Klaviyo account;
* Current 17TRACK account;
* Last event synchronization time;
* Latest synchronization result;
* Logistics events that have been initiated;
* Fields sent to Klaviyo;
* Actions such as reauthorization and disconnection, etc.
||| ⚠️ Warning: If the Klaviyo authorization expires, 17TRACK will pause the synchronization of new logistics events. You can click "Reauthorize" to restore the connection. After reauthorization, the configured event and field settings will be retained as much as possible.
If you disconnect, 17TRACK will stop syncing new logistics events to Klaviyo. The existing Metrics, Flows and historical events in Klaviyo will not be deleted by 17TRACK.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/c/c/3/1cc3f89e3566e700/image_cxiz4.png)
## What will happen after the plan is downgraded or expires
|| 📌 Note: The Klaviyo integration is available for Pro plans and above.
If you have already connected to Klaviyo, but later downgraded your plan, your trial expired, or your privileges became invalid:
* 17TRACK will pause the synchronization of new logistics events to Klaviyo;
* Your Klaviyo authorizations, account connections, and field settings will be retained;
* Existing Metrics, Flows, and historical events in Klaviyo will not be deleted;
* After restoring a Pro or higher plan, event synchronization will resume if the Klaviyo authorization remains valid.
* If the authorization has also expired, you need to re-authorize.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/c/c/3/1cc3f89e3566e700/image_wzfyvz.png)
# Create a trigger based on the shipment status via the 17TRACK APP
1. Login to the Klaviyo App.
2. Click Flows to enter, click Create Flow in the upper right corner, and click Create from Scratch again in the upper right corner to create a new automation process.
3. Name the process for clarity, here we use "17TRACK- Delivered" as an example.
4. Click on Metric in the left navigation > FLOW TRIGGER > Choose 17TRACK shipment status update.
5. TRIGGER FILTERS > Add a Trigger Filter > Choose shipment\_status > enter "Delivered". The automated email flow will be triggered when shipments change to "delivered". You can also enter other statuses to trigger this flow.

![](https://storage.crisp.chat/users/helpdesk/website/1cc3f89e3566e700/image_np4loy.png)


![](https://storage.crisp.chat/users/helpdesk/website/1cc3f89e3566e700/image_63l4om.png)


![](https://storage.crisp.chat/users/helpdesk/website/1cc3f89e3566e700/image_ulufk0.png)


![](https://storage.crisp.chat/users/helpdesk/website/1cc3f89e3566e700/image_171hlq8.png)


![](https://storage.crisp.chat/users/helpdesk/website/1cc3f89e3566e700/image_jz45g7.png)


![](https://storage.crisp.chat/users/helpdesk/website/1cc3f89e3566e700/image_1uydqmj.png)


![](https://storage.crisp.chat/users/helpdesk/website/1cc3f89e3566e700/1_j7aiga.png)
# How to Use 17TRACK Variables in Email Templates
If the order number or logistics information cannot be displayed in the email, please first confirm that Flow uses the 17TRACK logistics event, and then use the variables provided by this event. Do not directly apply variables from Shopify events such as `extra. line_items`, `subtotal_price `or `shipping_lines`, as these fields are not provided by the 17TRACK event.
Procedure:
1. In Klaviyo, go to "Flows" and open the Flow that needs to be edited.
2. Confirm that the trigger of the Flow is a 17TRACK event, such as `Shipment status updated`.
3. Open the email in Flow to access the email template editing page.
4. Add the following variables to the positions where the corresponding information needs to be displayed.
5. Use the preview function of Klaviyo to select a recent 17TRACK event with complete data for inspection.
Variable names are case-sensitive. Please fill in the form as follows:
| Field Name | Template Variable |
|---|---|
| Recipient Email | `{{ event.email\|default:'' }}` |
| Tracking Number | `{{ event.trackNo\|default:'' }}` |
| Tracking URL | `{{ event.trackUrl\|default:'' }}` |
| Shipment Status | `{{ event.shipment_status\|default:'' }}` |
| Recipient Phone | `{{ event.phone\|default:'' }}` |
| Recipient Name | `{{ event.first_name\|default:'' }}` `{{ event.last_name\|default:'' }}` |
| Recipient Country | `{{ event.country\|default:'' }}` |
| Primary Carrier | `{{ event.carrierCode\|default:'' }}` `{{ event.carrierUrl\|default:'' }}` |
| Secondary Carrier | `{{ event.secondCarrierCode\|default:'' }}` `{{ event.secondCarrierUrl\|default:'' }}` |
| Order Number | `{{ event.orderNo\|default:'' }}` |
| Order Time | `{{ event.orderTime\|default:'' }}` |
| Ship Time | `{{ event.shipTime\|default:'' }}` |
| Order Total | `{{ event.orderTotal\|default:'' }}` |
| Order Currency | `{{ event.orderCurrency\|default:'' }}` |
| Order Tags | `{{ event.orderTags\|default:'' }}` |
| Shop Name | `{{ event.shopName\|default:'' }}` |
| Order Quantity | `{{ event.buyerOrderNum\|default:'' }}` |
| Latest Event | `{{ event.lastEventTime\|default:'' }}` `{{ event.lastEventDesc\|default:'' }}` |
| Product Info | `{% for item in event.products %}` … `{% endfor %}`  |
| Product Name | `{{ item.product_name\|default:'' }}` |
| Product SKU | `{{ item.sku\|default:'' }}` |
| Product Price | `{{ item.price\|default:'' }}` |
| Product Currency | `{{ item.currency\|default:'' }}` |
| Product URL | `{{ item.product_url\|default:'' }}` |
| Product Image | `{{ item.image\|default:'' }}` |

# Shipping Status

| Status | Description |
| ---- |
| Info received: The package has been shipped and has been collected by the carriers. | Info received |
| In transit：The package is on the way to the destination. | In transit |
| Pick up：The package has arrived at the destination pickup point and is waiting to be picked up. | Pick up |
| Out for delivery：The package has reached its destination and the carrier is on its way to deliver the shipment. | Out for delivery |
| Undelivered: Deliveries may encounter problems such as wrong addresses and not being able to contact the recipient. | Undelivered |
| Delivered: The package has been successfully  delivered to the addressee. | Delivered |
| Exception: The package might undergo unusual shipping conditions such as damage, return, loss, etc. | Alert |
# Available Property

| Property name | Template tag |
| ---- |
| carrierCode | {{ event.carrierCode }} |
| carrierUrl | {{ event.carrierUrl }} |
| secondCarrierCode | {{ event.secondCarrierCode }} |
| secondCarrierUrl | {{ event.secondCarrierUrl }} |
| last\_event\_time | {{ event.last\_event\_time }} |
| last\_event\_desc | {{ event.last\_event\_desc }} |
| orderTime | {{ event.orderTime }} |
| orderCurrency | {{ event.orderCurrency }} |
| shipTime | {{ event.shipTime }} |
| orderNo | {{ event.orderNo }} |
| orderTags | {{ event.orderTags }} |
| orderTotal | {{ event.orderTotal }} |
| products | {{ event.products }} |
| sku | {{ event.products.0.sku }} |
| price | {{ event.products.0.price }} |
| currency | {{ event.products.0.currency }} |
| image | {{ event.products.0.image }} |
| product\_name | {{ event.products.0.product\_name }} |
| product\_url | {{ event.products.0.product\_url }} |
| trackNo | {{ event.trackNo }} |
| country | {{ event.country }} |
| trackUrl | {{ event.trackUrl }} |
| shipment\_status | {{ event.shipment\_status }} |
| shopName | {{ event.shopName }} |
## Frequently Asked Questions
### Do I still need a Public API Key to connect the new version of the Klaviyo integration?
No. The new version integration connects via OAuth authorization, so there is no need to manually copy or fill in the Klaviyo Public API Key.
### I have previously filled in a Public API Key. Can I still continue using it?
Yes. The existing valid old connection will not be terminated immediately. You can either keep using the old connection for the time being, or click "Upgrade Connection" in 17TRACK to switch to OAuth. Before the upgrade succeeds, the old connection will remain functional; once the upgrade is completed, the old channel will stop sending data to avoid duplicate synchronization.
### Will my previous Klaviyo Flows be deleted after upgrading to OAuth?
No. 17TRACK will not automatically delete, modify, or enable your existing Klaviyo Flows. You need to manually review or adjust the Flows based on the new event names and fields.
### Why isn't Klaviyo sending emails?
17TRACK is responsible for syncing logistics events to Klaviyo. Whether an email or SMS is sent depends on the Flow settings, filter criteria, sending status, recipient consent status, and sending rules in Klaviyo. You can first confirm whether the recent sync result in 17TRACK is successful, then check if the Klaviyo Flow has been set to Live.
### Will historical data in Klaviyo disappear after disconnection?
No. After disconnection, 17TRACK will only stop syncing new logistics events, and will not delete the existing Metrics, Flows or historical events in Klaviyo.
### Can I connect multiple Klaviyo accounts?
Currently, one 17TRACK account only supports connecting to one Klaviyo account. If you need to switch the connected Klaviyo account, please disconnect the current connection first, then re-authorize the new account.

---

Did this guide solve your problem? lf so, please support us with a 5-star review! [Rate ⭐⭐⭐⭐⭐](https://apps.shopify.com/17track#modal-show=WriteReviewModal)