# Set up your Klaviyo flows using Littledata's triggers

Congratulations! You've set up the Littledata Klaviyo integration. Before you can start enjoying the better performance benefits our enhanced identity resolution and server-side tracking brings, you will need to set up your Klaviyo flow triggers to use Littledata's events.

{% hint style="success" %}
Don't have the Littledata Klaviyo integration set up yet? Follow our [installation guide](/integrations/shopify-klaviyo/littledata-klaviyo-installation-guide.md) to do so.
{% endhint %}

## Littledata's events available for use as Klaviyo triggers

Littledata sends the following server-side events to Klaviyo which you can use as triggers for your Klaviyo flows. These are meant to be 1-to-1 replacements over Klaviyo's client-side triggers. Their schemas are compatible with Klaviyo's so you don't need to remap any dimensions in your flows to get the benefits from our server-side tracking.

| **Klaviyo event**  | **Matching Littledata event**                                      |
| ------------------ | ------------------------------------------------------------------ |
| `Viewed Product`   | `Viewed Product - Littledata`                                      |
| `Added to Cart`    | `Added to Cart - Littledata`                                       |
| -                  | `Removed from Cart - Littledata`                                   |
| `Checkout Started` | `Added to Cart - Littledata` OR `Checkout Started - Littledata` \* |

\* Klaviyo's flow templates use `Checkout Started` for abandoned **cart** flows. If you want a true abandoned cart flow we recommend using `Added to Cart - Littledata`.

If you are using custom triggers, reach out to our customer support team (<help@littledata.io>). They will help providing our full tracking schema which you can then consult to find and match the equivalent dimensions needed.

## Validating Littledata's performance by cloning your existing Klaviyo flows

You can validate Littledata's impact by running flows in parallel: your original flow (Klaviyo triggers) and a cloned flow using Littledata triggers.

Both flows run simultaneously, but the original flow takes priority:

* Profiles tracked by Klaviyo client-side will enter the original flow
* Profiles missed by Klaviyo but captured by Littledata server-side will enter the cloned flow

The emails and revenue generated by the Littledata flow represent incremental uplift — users who would not have been captured otherwise.

{% hint style="info" %}
This setup should be temporary. Running parallel flows adds complexity, especially with multiple splits. Once validated, **pause the original flow** and **remove the profile filters**.
{% endhint %}

{% hint style="info" %}
For all filters below, make sure that the metric you choose is **Klaviyo's default metric** and does not include the word "Littledata". This ensures the Littledata cloned flow only captures profiles that Klaviyo's client-side tracking missed.
{% endhint %}

### Browse Abandonment (Viewed Product - Littledata)

Find your Browse Abandonment flow based on the native **Viewed Product** event, click **Clone**, and in the clone window select **Viewed Product - Littledata** as the matching Littledata trigger. Rename the flow to distinguish it from the original, then click **Clone Flow**.

![](/files/abhJLjzIBGtgt154qZSQ)

![](/files/I9GjojoHgUFu4nl7HiUl)

In the cloned (Littledata) flow, add the following filters:

* The **Viewed Product** filter ensures a user doesn't pass through both browse abandonment flows simultaneously.
* The **Added to Cart**, **Checkout Started**, and **Placed Order** filters exclude users who have moved deeper into the purchase funnel — those users will be handled by the Cart or Checkout Abandonment flows, or have already converted.

### Cart Abandonment (Added to Cart - Littledata)

Find your Cart Abandonment flow based on the native **Added to Cart** event, click **Clone**, and in the clone window select **Added to Cart - Littledata** as the matching Littledata trigger.

{% embed url="<https://www.youtube.com/watch?v=VvKMLIrFdMI>" %}

Rename the flow to distinguish it from the original, then click **Clone Flow**.

![](/files/abhJLjzIBGtgt154qZSQ)

![](/files/L3WUdJGkRdDvy7EgGUWh)

In the cloned (Littledata) flow, add the following filters:

* The **Added to Cart** filter ensures a user doesn't pass through both cart abandonment flows simultaneously.
* The **Checkout Started** and **Placed Order** filters exclude users who have moved deeper into the purchase funnel — those users will be handled by the Checkout Abandonment flow, or have already converted.

{% hint style="info" %}
There is no need to filter out **Viewed Product** here — by the time a user reaches this flow, they have already passed the browse stage.
{% endhint %}

### Checkout Abandonment (Checkout Started - Littledata)

Find your Checkout Abandonment flow based on the native **Checkout Started** event, click **Clone**, and in the clone window select **Checkout Started - Littledata** as the matching Littledata trigger. Rename the flow to distinguish it from the original, then click **Clone Flow**.

![](/files/abhJLjzIBGtgt154qZSQ)

![](/files/k5fW4hvNu24FOcunAVml)

In the cloned (Littledata) flow, add the following filters:

| **Condition**                       | **Metric**           | **Frequency** | **Timeframe**            |
| ----------------------------------- | -------------------- | ------------- | ------------------------ |
| What someone has done (or not done) | **Checkout Started** | zero times    | in the last 1 hour       |
| What someone has done (or not done) | **Placed Order**     | zero times    | since starting this flow |

* The **Checkout Started** filter ensures a user doesn't pass through both checkout abandonment flows simultaneously.
* The **Placed Order** filter excludes users who have already completed a purchase.

{% hint style="info" %}
There is no need to filter out **Viewed Product** or **Added to Cart** here — by the time a user reaches this flow, they have already passed both of those stages.
{% endhint %}

Once you are satisfied with Littledata's performance, disable your original flows. You do not need to remove the filters you've set, but it is harmless to do so.

***

## Using Checkout URLs

Creating personalized checkout experiences for your abandoned cart email campaigns can enhance customer engagement and recovery rates. Littledata adds a `checkout_url` permalink for the Added to Cart event, so you can direct customers back to the checkout with ease. This uses a cart permalink, and should work even when users click through into a new browser — when Klaviyo's checkout URL will not work.

{% hint style="warning" %}
Any utm parameter appended to the link pointing straight to checkout will NOT be "seen" by GA4. Instead, all the server-side events that occur in such a session will be attributed to the previous available session source from the same user.
{% endhint %}

You can access the checkout URL in a Klaviyo email or SMS template by using:

`{{ event.extra.checkout_url }}`

You can also customize these checkout URLs to include specific payment options, discount codes — or direct the customer to the cart page instead of the checkout page.

To initiate a checkout powered by Shop Pay, append the `payment=shop_pay` URL parameter:

`{{ event.extra.checkout_url }}?payment=shop_pay`

So the checkout URL is dynamic, but the payment method is always the same. Or to include a discount code, add the `discount` URL parameter followed by the discount code. For a discount code `15off`, the URL would look like this:

`{{ event.extra.checkout_url }}?discount=15off`

Then you could combine them both like this:

`{{ event.extra.checkout_url }}?payment=shop_pay&discount=15off`

***

## Next steps

You can [set up a custom report](/integrations/shopify-klaviyo/creating-klaviyo-custom-reports.md) in Klaviyo. This is helpful in helping you assess the performance of your flows.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.littledata.io/integrations/shopify-klaviyo/set-up-klaviyo-flows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
