Skip to main content

Klaviyo

info

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

Klaviyo Installation 1

2. Select API key and click on Create Private API Key

Klaviyo Installation 2

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

Klaviyo Installation 3

4. Copy the Private API key and send it to Karla

Klaviyo Installation 4

Building Klaviyo Flows

To cover the most important delivery journey events, we recommend first of all creating the flows for following event groups:

  1. shipment_in_transit
  2. shipment_carrier_delay
  3. shipment_damaged
  4. shipment_out_for_delivery
  5. shipment_delivered
  6. shipment_delivered_to_neighbour
  7. shipment_delivered_to_letterbox
  8. shipment_delivered_to_parcelshop
  9. shipment_not_picked_up_returned
  10. 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 ).

Event Groups vs Webhook Refs

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

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

Karla hosted tracking page
https://app.gokarla.io/track/slug?orderNumber={{ event.order_number|default:'' }}&zipCode={{ event.zip_code|default:'' }}&ref=karla
Embedded tracking page
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.

Karla hosted tracking page
https://app.gokarla.io/track/slug?orderNumber={{ event.extra.order_number|default:'' }}&zipCode={{ event.extra.shipping_address.zip|default:'' }}&ref=karla
Embedded tracking page
https://yourshop.com/pages/tracking?orderNumber={{ event.order_number|default:'' }}&zipCode={{ event.zip_code|default:'' }}&ref=karla
tip

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

Klaviyo Test 1

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.

warning

You will see this information only after you have integrated your Shopify/Shopware Shop and Klaviyo with Karla. More on shop integrations

Klaviyo Test 2

If you want to see how your customers will receive the emails, you can send a test email to your email-address.

Klaviyo Test 3

Putting the flows live

After you have tested your flows, you can put them live upon the agreed go-live date.

warning

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.

Klaviyo Live Flows

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 vs Webhook Patterns

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 GroupDescriptionUse Case
shipment_pre_transitPackage prepared for shippingConfirmation emails
shipment_in_transitPackage moving through networkJourney updates
shipment_carrier_delayCarrier-reported delaysProactive communication
shipment_damagedPackage damage reportedCustomer service outreach
shipment_out_for_deliveryPackage out for deliveryDelivery notifications
shipment_deliveredSuccessful deliveryDelivery confirmations
shipment_delivered_all_eventsAll delivery variationsComprehensive delivery flows
shipment_delivered_to_letterboxDelivered to letterboxSpecific delivery method
shipment_delivered_to_neighbourDelivered to neighborNeighbor delivery notification
shipment_delivered_to_parcel_lockerDelivered to parcel lockerPickup instructions
shipment_delivered_to_parcel_shopDelivered to pickup pointPickup notifications
shipment_delivery_failedDelivery attempt failedRetry communications
shipment_delivery_failed_address_issueAddress problemsAddress correction requests
shipment_delivery_failed_forwarded_to_parcel_shopForwarded to pickupAlternative pickup location
shipment_delivery_second_attemptReattempting deliverySecond attempt notifications
shipment_not_picked_up_then_returnedNot picked up, returnedReturn notifications
shipment_refused_then_returnedCustomer refused packageReturn processing
shipment_failed_returnedPackage returned to senderReturn confirmations
shipment_picked_upSuccessfully picked upPickup confirmations

High Priority (Essential flows):

  1. shipment_in_transit - Keep customers informed
  2. shipment_out_for_delivery - Delivery readiness
  3. shipment_delivered - Delivery confirmation
  4. shipment_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