> For the complete documentation index, see [llms.txt](https://help.littledata.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.littledata.io/integrations/shopify-klaviyo/set-up-klaviyo-flows.md).

# Set up your Klaviyo flows using Littledata's triggers

How to set up your Klaivyo flow triggers to correctly use Littledata's server-side events and measure the impact over client-side events.

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**.

![](https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2Fgit-blob-ede9efee184151fdb85839d050a8bcdef0496a9c%2Fscreenshot-2026-03-27-at-12.00.53.png?alt=media)

![](https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2Fgit-blob-c8b0210c4c468db3dbd6f8dc4d7bb7f3696fd180%2Fscreenshot-2026-03-27-at-12.01.54.png?alt=media)

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**.

![](https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2Fgit-blob-ede9efee184151fdb85839d050a8bcdef0496a9c%2Fscreenshot-2026-03-27-at-12.00.53.png?alt=media)

![](https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2Fgit-blob-248dee86de46e6f73762895f4ce776a89b18362a%2Fscreenshot-2026-03-27-at-12.01.31.png?alt=media)

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**.

![](https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2Fgit-blob-ede9efee184151fdb85839d050a8bcdef0496a9c%2Fscreenshot-2026-03-27-at-12.00.53.png?alt=media)

![](https://3956158252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1QhTbrMraNWciQeDvu1b%2Fuploads%2Fgit-blob-1cbe2860c6918cd3b53ead35e47545fc2227528a%2Fscreenshot-2026-03-27-at-12.02.15.png?alt=media)

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.
