---
title: "Klaviyo events"
description: "Events the Klaviyo integration handles and what each does."
sidebar:
  label: Events
---

The integration syncs catalog data, customer profiles, lifecycle events, and optional order events to Klaviyo. Catalog sync, order sync, and back-in-stock are each controlled by their own setting in the configuration, and a store group allowlist and optional market limit the merchant user and price events.

Catalog items and variants are keyed by the Enad ID under Klaviyo's custom integration namespace.

## Products

| Event | What Enad sends |
|---|---|
| Product created or updated | A Klaviyo catalog item with title, description, price, URL, images sorted by priority, and custom metadata: titles, slugs, and translations, plus category, tag, and collection names and per-store-group price fields. Products with variant groups are split into one catalog item per variant group, with URLs of the form `<slug>-<group-slug>`. Category relationships are attached to the item. |
| Product unchanged | Not sent again. |
| Product active or inactive | Publishes the item. Archived and other statuses keep it unpublished. When the product status is active, a per-market status override applies. |
| Product deleted | Deletes the catalog item and, when the product has variant groups, every variant-group item for that product. An item that was never synced is skipped. |

## Variants

| Event | What Enad sends |
|---|---|
| Variant updated | A Klaviyo catalog variant with name, description, URL, SKU, price, inventory quantity, images, and attribute metadata. The parent catalog item must already be synced, otherwise the variant update is retried until it is. Inventory is counted from the configured warehouse, and variants that do not validate stock report an open inventory policy. |
| Variant unchanged | Not sent again. |
| Variant active | Published. Only active variants publish. |
| Variant deleted | Deletes the catalog variant. |

## Prices

| Event | What Enad sends |
|---|---|
| Prices updated (store group or single market) | Re-sends the affected catalog variant with recomputed prices, which is how price changes reach Klaviyo. Price events for other store groups or markets are ignored. Unchanged variants are not sent again. |

## Stock

| Event | What Enad sends |
|---|---|
| Stock change from zero or below to positive | Updates the variant's inventory quantity in Klaviyo, which triggers Klaviyo's own back-in-stock flow. Klaviyo notifies the subscribers; Enad does not send subscriber events. Requires **Sync back in stock**. |
| Any other stock change | Ignored. |

## Categories

| Event | What Enad sends |
|---|---|
| Category upsert | Syncs as a Klaviyo catalog category, keyed by the Enad category ID. |
| Category unchanged | Not sent again. |
| Category deleted | Deletes the catalog category. |
| Category relationship created | Attaches the category on the catalog item. Retried until both the item and the category are synced. |
| Category relationship deleted | Removes the category from the catalog item. Skipped when either side is unknown. |

## Orders

| Event | What Enad sends |
|---|---|
| Order upsert with **Sync orders** | One Klaviyo event named after the order status: **Placed Order**, **Confirmed Order**, **Updated Order**, **Delivered Order**, **Cancelled Order**, **Released Order**, **Compensated Order**, or **Refunded Order**. Line items are embedded in the order event's properties with SKU, size, product URLs, categories, brands, and totals, alongside billing and shipping addresses, shipping details, and the order total that feeds Klaviyo's customer lifetime value. |
| Order delete | Ignored. |

Line items are not sent as separate events.

## Profiles and events

Customer profiles are matched by the stored Klaviyo profile ID, then by email and phone number according to **User lookup strategy**. Profile data carries names, language, address, phone, and custom attributes, and the profile ID is stored back on the Enad user. A profile already linked to a different Enad user fails permanently.

Marketing consent is only ever subscribed. Turning email or SMS consent off in Enad does not send an unsubscribe to Klaviyo.

| Event | What Enad sends |
|---|---|
| Password reset | A **Reset Password** event with the reset token in the properties. |
| Sign-up | A **Created Account** event with the verification token in the properties, plus `RegisteredCustomer` and `EnadVerified` flags and the user's language. |
| Email verified | A **Confirmed Account** event, once per user. Later verifications are skipped. |
| User deleted | A data privacy deletion job, so Klaviyo removes the profile, plus an **Account Deleted** event. |
| Status change | An **enadUserStatusChanged** event with the old and new status. |

Order and lifecycle events are named metrics in Klaviyo, so flows and segments can trigger on these exact names: **Reset Password**, **Created Account**, **Confirmed Account**, **Account Deleted**, **enadUserStatusChanged**, and, with **Sync orders**, **Placed Order**, **Confirmed Order**, **Updated Order**, **Delivered Order**, **Cancelled Order**, **Released Order**, **Compensated Order**, and **Refunded Order**.

## Field mapping

| Enad data | Klaviyo destination |
|---|---|
| Product ID | Catalog item `external_id` |
| Product name | `title` |
| Price | Catalog item `price`, from the configured store group and market, sale price when on sale |
| URL prefix and slug | Catalog item `url` |
| Images | `image_full_url`, `image_thumbnail_url`, and the sorted `images` list |
| Category, tag, and collection names | `custom_metadata` |
| Per-store-group prices | `custom_metadata` price fields per store group and market |
| Variant ID | Catalog variant `external_id` |
| Variant name | `title` |
| Variant number | `sku` |
| Warehouse stock | `inventory_quantity` and `inventory_policy` |
| Variant attributes | `custom_metadata` grouped by template key |
| Categories | Catalog categories and item relationships |
| Orders | One event per order with line items, addresses, and totals; grand total in `$value` |
| Users | Profiles matched by stored ID, then email and phone; profile ID stored back on the user |

## Related

- [Klaviyo](/integrations/klaviyo)
- [Klaviyo configuration](/integrations/klaviyo/configuration)
