The Klaviyo integration syncs two types of data: profile properties that are updated on every interaction, and events that represent specific customer actions. Both can be used in Klaviyo flows to send targeted, personalised emails based on exactly what a customer did in the loyalty program.
Profile Properties
Profile properties are set directly on the Klaviyo contact record and update automatically whenever the corresponding data changes in the loyalty program.
Points Properties (updated on every points transaction)
| Property | Type | Description |
|---|---|---|
loyalty_points_balance | Integer | The customer’s current points total after the transaction. |
loyalty_points_last_updated | ISO 8601 datetime | Timestamp of the most recent points change. |
loyalty_points_expires_at | ISO 8601 datetime | Estimated expiry date of the current points balance. Only present if points expiry is enabled. |
loyalty_referral_code | String | The customer’s unique referral code. Only present if the referral module is active. |
Birthday Property (synced when customer saves birthday)
| Property | Type | Description |
|---|---|---|
loyalty_birthday | Date (YYYY-MM-DD) | The customer’s birthday as entered in My Account. Use this as the trigger date for a Klaviyo birthday flow. |
Rank Properties (synced when customer achieves a rank)
| Property | Type | Description |
|---|---|---|
loyalty_rank_id | Integer | The ID of the customer’s current rank. |
loyalty_rank_name | String | Display name of the current rank (e.g. Gold, VIP). |
loyalty_rank_slug | String | URL-safe slug of the current rank. |
loyalty_rank_milestone | Integer | The points threshold required to reach this rank. |
loyalty_rank_last_updated | ISO 8601 datetime | Timestamp of the most recent rank change. |
Events
Points Updated
Fired on every points transaction: earning, spending, expiring, and manual adjustments. This is the most versatile event in the integration because it covers every loyalty activity through a single reason_title property.
| Property | Type | Description |
|---|---|---|
delta | Integer | Points change. Positive for earned points, negative for spent or expired. |
balance_after | Integer | Points balance after the transaction. |
reason_title | String | Human-readable reason for the change. See the full list below. |
source | String | Machine-readable source type. |
awarded_at | ISO 8601 datetime | Timestamp of the transaction. |
expires_at | ISO 8601 datetime | Estimated expiry of the current balance. Only present if points expiry is enabled. |
All possible reason_title values:
| reason_title | When it fires |
|---|---|
| Order purchase | Customer earns points for placing an order. |
| Order discount | Customer redeems points for a discount on an order. |
| Order cancelled | Points are reversed when an order is cancelled. |
| Order refunded | Points are reversed when an order is refunded. |
| Product review | Customer earns points for leaving a product review. |
| Friend referral | Customer earns points for referring a friend. |
| Manual adjustment | An admin manually adds or removes points. |
| Registration bonus | Customer earns points for creating an account. |
| Birthday bonus | Points awarded on the customer’s birthday. |
| Imported points | Points added via CSV import. |
| Points expired | Points removed due to inactivity expiry. |
Rank Achieved
Fired when a customer reaches a new rank tier.
| Property | Type | Description |
|---|---|---|
rank_id | Integer | ID of the new rank. |
rank_name | String | Display name of the new rank. |
rank_slug | String | Slug of the new rank. |
rank_milestone | Integer | Points threshold for the new rank. |
previous_rank_id | Integer | ID of the previous rank. Not present on first rank. |
previous_rank_name | String | Name of the previous rank. Not present on first rank. |
achieved_at | ISO 8601 datetime | Timestamp when the rank was achieved. |
coupon_code | String | The coupon code issued as a rank reward. Only present when a coupon is configured for this rank. |
coupon_codes | Array | All coupon codes issued when the rank has multiple rewards configured. Only present when more than one coupon is issued. |
Using Events in Klaviyo Flows
In Klaviyo, create a flow with a Metric trigger and select Points Updated or Rank Achieved. To target a specific activity, add a Trigger Split immediately after the trigger and filter by reason_title. For example, set reason_title = Birthday bonus to build a birthday points confirmation flow, or reason_title = Friend referral for a referral congratulations email.