Klaviyo
The Klaviyo integration allows Karla to provide your Klaviyo account with triggers of any sort, like shipment notifications or claims.
Steps
1. Open Klaviyo & navigate to Settings
2. Select API key and click on Create Private API Key
3. Name it "Karla Integration" and select the scope and confirm with Create
You should select the following scopes (Read/Write Access
) that allows us to:
- Events: send events to your Klaviyo account
- Metrics: integrate your metrics with Karla
- Profiles: access profile data
- List: read lists to enable segmented campaigns
- Segments: read segments to enable segmented campaigns
- Flows: read flows to enable flow-based insights
4. Copy the Private API key and send it to Karla
Building Klaviyo Flows
To cover the most important delivery journey events, we recommend first of all creating the flows for following event groups:
shipment_in_transit
shipment_carrier_delay
shipment_damaged
shipment_out_for_delivery
shipment_delivered
shipment_delivered_to_neighbour
shipment_delivered_to_letterbox
shipment_delivered_to_parcelshop
shipment_not_picked_up_returned
shipment_failed_returned
By creating these 10 flows you will be able to cover standard events happening for every order (shipment_in_transit
, shipment_out_for_delivery
), all delivered cases (shipment_delivered
, shipment_delivered_to_neighbour
, shipment_delivered_to_letterbox
, shipment_delivered_to_parcelshop
) and the events that hopefully do not happen too often, but where it is most important to be proactive with your customers (shipment_carrier_delay
, shipment_damaged
, shipment_not_picked_up_returned
, shipment_failed_returned
).
Klaviyo uses event groups (like shipment_delivered
) while webhooks use ref patterns (like shipments/delivered/SUCCESSFULLY_DELIVERED
). Event groups are business-friendly names that group multiple specific events for easier flow management.
For complete documentation, see: Events Reference →
Pickup Reminder Flow
Inserting the tracking page link
To include the tracking page link in your Klaviyo emails you should use a dynamic link with order_number
and zip_code
variables, so that your customers always receive their personalised link:
For emails triggered through Klaviyo:
Karla events
https://app.gokarla.io/track/slug?orderNumber={{ event.order_number|default:'' }}&zipCode={{ event.zip_code|default:'' }}&ref=karla
https://yourshop.com/pages/tracking?orderNumber={{ event.order_number|default:'' }}&zipCode={{ event.zip_code|default:'' }}&ref=karla
Shipping Confirmation
Triggered by Shopify's Fulfilled_Order
Event.
https://app.gokarla.io/track/slug?orderNumber={{ event.extra.order_number|default:'' }}&zipCode={{ event.extra.shipping_address.zip|default:'' }}&ref=karla
https://yourshop.com/pages/tracking?orderNumber={{ event.order_number|default:'' }}&zipCode={{ event.zip_code|default:'' }}&ref=karla
A slug
is your unique identifier that represents your shop within the Karla system. This is used to properly route tracking information and ensure that shipment data is associated with the correct merchant account.
Testing the flows
Once you've set up the flows and the respective emails it is important you make sure that the integration is working as expected.
In the Email Template Editor go to Preview & Test
There make sure that in the profiles you see the information from the profiles from your shop and not from Karla's test events. These should be infos like customer name, order number, shipping address etc.
You will see this information only after you have integrated your Shopify/Shopware Shop and Klaviyo with Karla. More on shop integrations
If you want to see how your customers will receive the emails, you can send a test email to your email-address.
Putting the flows live
After you have tested your flows, you can put them live upon the agreed go-live date.
Make sure you have requested the transactional status for your Karla flows (more on the transactional status here) and have disabled the Smart Sending feature, so that all of your customers receive there shipping updates.
Event Groups
Karla provides the following event groups to your Klaviyo instance for building flows. These are business-friendly groupings that make it easier to create targeted campaigns without dealing with individual event names.
Event groups are specifically designed for Klaviyo integration and are different from webhook ref patterns:
- Event Groups: Business-friendly names (e.g.,
shipment_delivered
) - Webhook Refs: Technical identifiers (e.g.,
shipments/delivered/SUCCESSFULLY_DELIVERED
)
For complete documentation of all events, ref patterns, and event groups, see: Events Reference →
Claims
For any processed claim (e.g. damaged package, package not found...). See Claims.
claim_created
claim_updated
Shipments
For any processed shipment update:
Event Group | Description | Use Case |
---|---|---|
shipment_pre_transit | Package prepared for shipping | Confirmation emails |
shipment_in_transit | Package moving through network | Journey updates |
shipment_carrier_delay | Carrier-reported delays | Proactive communication |
shipment_damaged | Package damage reported | Customer service outreach |
shipment_out_for_delivery | Package out for delivery | Delivery notifications |
shipment_delivered | Successful delivery | Delivery confirmations |
shipment_delivered_all_events | All delivery variations | Comprehensive delivery flows |
shipment_delivered_to_letterbox | Delivered to letterbox | Specific delivery method |
shipment_delivered_to_neighbour | Delivered to neighbor | Neighbor delivery notification |
shipment_delivered_to_parcel_locker | Delivered to parcel locker | Pickup instructions |
shipment_delivered_to_parcel_shop | Delivered to pickup point | Pickup notifications |
shipment_delivery_failed | Delivery attempt failed | Retry communications |
shipment_delivery_failed_address_issue | Address problems | Address correction requests |
shipment_delivery_failed_forwarded_to_parcel_shop | Forwarded to pickup | Alternative pickup location |
shipment_delivery_second_attempt | Reattempting delivery | Second attempt notifications |
shipment_not_picked_up_then_returned | Not picked up, returned | Return notifications |
shipment_refused_then_returned | Customer refused package | Return processing |
shipment_failed_returned | Package returned to sender | Return confirmations |
shipment_picked_up | Successfully picked up | Pickup confirmations |
Recommended Flow Priority
High Priority (Essential flows):
shipment_in_transit
- Keep customers informedshipment_out_for_delivery
- Delivery readinessshipment_delivered
- Delivery confirmationshipment_carrier_delay
- Proactive communication
Medium Priority (Enhanced experience): 5. shipment_delivered_to_parcel_shop
- Pickup instructions 6. shipment_delivery_failed
- Retry coordination 7. shipment_damaged
- Customer service escalation
Lower Priority (Edge cases): 8. shipment_not_picked_up_then_returned
- Return processing 9. shipment_failed_returned
- Return confirmation 10. claim_created
- Claims management