How to connect ParcelPanel & Klaviyo via API?

This integration allows users to create personalized campaigns & flows based on tracking events from ParcelPanel.


Firstly connect ParcelPanel& Klaviyo, there are two optional integration methods:

Then, create personalized campaigns & flows


Integrate from ParcelPanel admin (Recommended)

Step 1
Go to ParcelPanel adminIntegration → find Klaviyo → click Connect button


Step 2
Log in to your Klaviyo account and complete the authorization



Integrate from Klaviyo admin

Step 1

Go to ParcelPanel adminIntegration tab → API Key section → copy the ParcelPanel API Key


Step 2

Go to Klaviyo adminIntegrations → click Add integration button → find and click Parcel Panel


Step 3

Click Add app button → paste the ParcelPanel API Key and ConnectAllow



After connecting ParcelPanel & Klaviyo successfully:

In your ParcelPanel admin


In your Klaviyo admin

There will also be a new metric called ParcelPanel Event, you can check the details from this example we sent you.



Create personalized campaigns & flows

Step 1

Go to Klaviyo admin → Click Create Flow button → Create from ScratchYour metrics → select ParcelPanel ParcelPanel EventAdd Trigger filters


Step 2

Configure the Trigger by your needs, ParcelPanel Events are coming with shipment status updates for each shipment, which are powerful segmentation triggers for Klaviyo Flow

Note:

1. It's case-sensitive.

2. The current supported shipment status: Info received, In transit, Out for delivery, Ready for pickup, Delivered, Exception, Failed attempt, Expired.

Shipment statusDescription
Info receivedThe carrier received a shipping request and is about to pick up the shipment
In transitThe shipment is on its way
Out for deliveryThe shipment is out for delivery
Ready for pickupThe shipment is available for the customer to collect from a pickup location
DeliveredThe shipment has been delivered successfully
ExceptionThe shipment encounters shipping exceptions, such as damaged, lost, or returned
Failed attemptThe carrier attempted delivery but failed due to some reasons
ExpiredTracking details have not been updated for 30 days


For example: I want to create a workflow that automatically sends an email when my shipment was delivered.


Step 3
Configure the Actions by your needs


Available Property

Property nameTemplate tagExample
store_name{{ event.store_name }}YOURSTORENAME
store_url{{ event.store_url }}https://yourstorename.com
shipment_status{{ event.shipment_status }}Delivered
shipment_substatus{{ event.shipment_substatus }}Delivered to doorstep
tracking_link{{ event.tracking_link }}https://yourstorename.com/apps/parcelpanel?nums=1234&preview=parcelpanel
expected_delivery_date{{ event.expected_delivery_date }}Jan 12, 2025 - Jan 16, 2025
tracking_number{{ event.tracking_number }}YT2436021211003147
last_mile_tracking_number{{ event.last_mile_tracking_number }}9261290358097849005373
carrier_name{{ event.carrier_name }}YunExpress
carrier_contact{{ event.carrier_contact }}400-8575-500
carrier_url{{ event.carrier_url }}http://www.yuntrack.com/track/detail?id=YT2436021211003147
last_mile_carrier_name{{ event.last_mile_carrier_name }}USPS
last_mile_carrier_contact{{ event.last_mile_carrier_contact }}1 800-275-8777
last_mile_carrier_url{{ event.last_mile_carrier_url }}https://tools.usps.com/go/TrackConfirmAction?qtc_tLabels1=9261290358097849005373
last_check_point{{ event.last_check_point }}Delivered, In/At Mailbox, FAIRBANKS, AK 99701
last_checkpoint_time{{ event.last_checkpoint_time }}2025-01-13 14:36:00
pickup_location{{ event.pickup_location }}403 BANK STREET
transit_time{{ event.transit_time }}11
residence_time{{ event.residence_time }}1
order_number{{ event.order_number }}#1234
order_created_at{{ event.order_created_at }}2024-12-23 01:02:40
fulfillment_created_at{{ event.fulfillment_created_at }}2024-12-24 01:25:40
location{{ event.location }}Los Angeles Fulfillment Center
pickup_date{{ event.pickup_date }}2025-01-03 01:28:40
delivery_date{{ event.delivery_date }}2025-01-13 14:36:00
product_name{{ event.product_name }}Test product
customer_email{{ event.customer_email }}[email protected]
customer_phone{{ event.customer_phone }}+1 234 567 8900
first_name{{ event.first_name }}Tom
last_name{{ event.last_name }}Alix
shipping_country{{ event.shipping_country }}United States
shipping_province{{ event.shipping_province }}California
shipping_city{{ event.shipping_city }}Mountain View
shipping_address1{{ event.shipping_address1 }}1600 Amphitheatre Parkway
shipping_address2{{ event.shipping_address2 }}Null
shipping_zip{{ event.shipping_zip }}94043


Addition
In addition to the basic information about the order, the LineItems field contains an array of information about each line item in the order. You can reference this data for building templates, branching logic based on package contents, and so on. This is stored in a 0-indexed array, so you can easily access an individual item or loop over it to get the entire contents.

Property nameTemplate tagExample
product_name{{ event.lineitems.0.product_name }}Test product 1
quantity{{ event.lineitems.0.quantity }}1
variant_image{{ event.lineitems.0.variant_image }}https://shopify.com/path/to/image-variant.jpg
price{{ event.lineitems.0.price }}24.96
variant_name{{ event.lineitems.0.variant_name }}Test product 1 - Black / L
sku{{ event.lineitems.0.sku }}12345678-black-l
handle{{ event.lineitems.0.handle }}test-product-1



Related article: How to integrate with Klaviyo - Customer Hub?

Need help? Feel free to contact us via online chat or email, our world-class 24/7 support team is always glad to help you 🧐