Skip to main content

Klaviyo events

A complete reference to Rivo Klaviyo metrics, their availability, event properties, and example JSON payloads.

Written by Stuart Chaney

Klaviyo events

Use Rivo events to build Klaviyo flows around loyalty earnings, referrals, memberships, cashback, and more. This reference covers all 38 named metrics and the information each can carry, including metrics with delivery limitations.

Before you start

Connect Klaviyo and switch the integration ON. Your account must have access to Klaviyo events. Enable each available event you need under Custom Events Trigger, then save. Event switches start off. Program-specific events also need the corresponding program and qualifying customer activity. If a setting is missing, contact your Rivo point of contact to check availability.

For connection instructions, see Klaviyo integration.

Availability exceptions: Membership Payment Success, Loyalty Gift Processed, and Virtual Gift Card Reminder are included for reference, but do not currently have normal automatic delivery. Read their individual availability notes before building a flow. Seeing a metric or sample event in Klaviyo does not prove that future customer actions will trigger it.

Rivo needs a Klaviyo profile for the customer receiving a live event. It uses an existing profile ID or attempts to sync the profile first. If it cannot obtain that ID, it does not send the live event. Profile synchronization does not replay historical events.

How to read the payloads

Each example below is a complete event body using fictional customers and identifiers:

  • data.type is event.

  • data.attributes.properties contains the event properties listed in that event’s field reference.

  • data.attributes.metric.data.type is metric; data.attributes.metric.data.attributes.name is the exact Klaviyo metric name.

  • data.attributes.profile.data.type is profile; its id is the Klaviyo profile ID, and attributes.email identifies the customer receiving the event.

The profile ID and email are separate from event properties. Other Rivo profile properties, such as the customer’s current points balance, are synchronized separately and are not added to this event body. An event property called customer_id is a Shopify customer ID, not the Klaviyo profile ID. Rivo does not add a top-level event time, value, or unique ID to these bodies.

Values and missing fields: A field marked optional is omitted when its condition does not apply. A nullable field remains present with null when its value is unavailable. Some text fields instead use an empty string (""). Credit earnings are decimal strings in JSON, such as "12.5"; point earnings are integers. Some stores with an older credit-event configuration receive credit earnings under the Points metrics, with a decimal-string earnings_amount. Gift-card values, membership prices, and transferred credit amounts are numbers. Currency-formatted strings use your store’s money format. Timestamps include a time-zone offset; date-only fields use the formats stated below. Examples use USD and fictional dates.

Normal live events include a profile ID. Some connection/setup samples can instead include "id": null with the sample email. Sample events do not necessarily cover every metric.

Loyalty earnings

Earned events describe approved earnings; Pending events describe earnings awaiting approval. The matching event switch is required for each. Manual adjustments, imports, resets, migrations, point purchases, and POS adjustments are excluded unless manual earning events are allowed for your integration. Expiry and revoked earnings are excluded. Negative point changes are excluded from the Points events. Zero earnings and campaign-drop earnings do not generate these automatic events. CSV updates can suppress Klaviyo events even when manual earning events are allowed.

Rivo Points Earned

Triggered when a qualifying loyalty earning is approved. Requires a qualifying earning action and Points Earned enabled.

Event property

Meaning and availability

trigger_name

Name of the earning action. Custom actions and visit-a-URL actions use their configured completion text.

earnings_amount

Amount associated with this earning, not the customer’s total balance.

next_vip_tier_threshold

Next VIP tier qualification threshold, as an integer; 0 when there is no next tier or VIP tiers are disabled.

needed_for_next_vip_tier

Remaining qualification amount (spend, earnings, or qualifying product count) needed for the next VIP tier, according to your VIP qualification method; 0 when unavailable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "trigger_name": "Placed an order",    "earnings_amount": 150,    "next_vip_tier_threshold": 1000,    "needed_for_next_vip_tier": 250  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Points Earned"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Points Pending

Triggered when an earning is created awaiting approval. Requires delayed approval and Points Pending enabled. Approval can later generate the separate Earned event.

Event property

Meaning and availability

trigger_name

Name of the earning action. Custom actions and visit-a-URL actions use their configured completion text.

earnings_amount

Amount associated with this earning, not the customer’s total balance.

next_vip_tier_threshold

Next VIP tier qualification threshold, as an integer; 0 when there is no next tier or VIP tiers are disabled.

needed_for_next_vip_tier

Remaining qualification amount (spend, earnings, or qualifying product count) needed for the next VIP tier, according to your VIP qualification method; 0 when unavailable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "trigger_name": "Placed an order",    "earnings_amount": 150,    "next_vip_tier_threshold": 0,    "needed_for_next_vip_tier": 0  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Points Pending"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Credits Earned

Triggered when qualifying credit earnings are approved. Requires credit earning events to be available for your account and Credits Earned enabled.

This example shows gift-card credit with an expiry. Non-gift-card credit omits loyalty_card_code; gift-card credit without an available code includes it as null. Earnings without an expiry omit reward_expiration_date. earnings_amount is a decimal string for credit earnings.

Event property

Meaning and availability

trigger_name

Name of the earning action. Custom actions and visit-a-URL actions use their configured completion text.

earnings_amount

Amount associated with this earning, not the customer’s total balance.

next_vip_tier_threshold

Next VIP tier qualification threshold, as an integer; 0 when there is no next tier or VIP tiers are disabled.

needed_for_next_vip_tier

Remaining qualification amount (spend, earnings, or qualifying product count) needed for the next VIP tier, according to your VIP qualification method; 0 when unavailable.

formatted_earnings_amount

Earning amount in your store’s money format.

loyalty_card_code

Optional: included for gift-card credit earnings; null if no credit code is available.

reward_expiration_date

Optional: included when this earning has an expiry date, as YYYY-MM-DD.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "trigger_name": "Placed an order",    "earnings_amount": "12.5",    "next_vip_tier_threshold": 1000,    "needed_for_next_vip_tier": 250,    "formatted_earnings_amount": "$12.50",    "loyalty_card_code": "EXAMPLE-CREDIT-1234",    "reward_expiration_date": "2027-09-10"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Credits Earned"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Credits Pending

Triggered when credit earnings are created awaiting approval. Requires delayed approval, credit earning events available for your account, and Credits Pending enabled.

This gift-card credit example has an expiry but no code yet, so loyalty_card_code is null. Other credit types omit that key. Earnings without an expiry omit reward_expiration_date. Pending amounts are not yet available to spend.

Event property

Meaning and availability

trigger_name

Name of the earning action. Custom actions and visit-a-URL actions use their configured completion text.

earnings_amount

Amount associated with this earning, not the customer’s total balance.

next_vip_tier_threshold

Next VIP tier qualification threshold, as an integer; 0 when there is no next tier or VIP tiers are disabled.

needed_for_next_vip_tier

Remaining qualification amount (spend, earnings, or qualifying product count) needed for the next VIP tier, according to your VIP qualification method; 0 when unavailable.

formatted_earnings_amount

Earning amount in your store’s money format.

loyalty_card_code

Optional: included for gift-card credit earnings; null if no credit code is available.

reward_expiration_date

Optional: included when this earning has an expiry date, as YYYY-MM-DD.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "trigger_name": "Placed an order",    "earnings_amount": "12.5",    "next_vip_tier_threshold": 0,    "needed_for_next_vip_tier": 0,    "formatted_earnings_amount": "$12.50",    "loyalty_card_code": null,    "reward_expiration_date": "2027-09-10"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Credits Pending"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

VIP tiers


Rivo Customer Moves Up A Tier

Triggered when a customer moves to a higher VIP tier. Requires VIP tiers and Customer Moves Up A Tier enabled.

This example shows entry into the highest tier.

Event property

Meaning and availability

vip_tier_name

Name of the tier the customer has entered.

next_vip_tier_threshold

Next VIP tier qualification threshold, as an integer; 0 when there is no next tier or VIP tiers are disabled.

needed_for_next_vip_tier

Remaining qualification amount (spend, earnings, or qualifying product count) needed for the next VIP tier, according to your VIP qualification method; 0 when unavailable.

next_vip_tier_name

Name of the next available tier; null at the highest tier or when unavailable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "vip_tier_name": "Gold",    "next_vip_tier_threshold": 0,    "needed_for_next_vip_tier": 0,    "next_vip_tier_name": null  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Customer Moves Up A Tier"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Customer Moves Down A Tier

Triggered when a customer moves to a lower VIP tier. Requires VIP tiers and Customer Moves Down A Tier enabled.

Event property

Meaning and availability

vip_tier_name

Name of the tier the customer has entered.

next_vip_tier_threshold

Next VIP tier qualification threshold, as an integer; 0 when there is no next tier or VIP tiers are disabled.

needed_for_next_vip_tier

Remaining qualification amount (spend, earnings, or qualifying product count) needed for the next VIP tier, according to your VIP qualification method; 0 when unavailable.

next_vip_tier_name

Name of the next available tier; null at the highest tier or when unavailable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "vip_tier_name": "Silver",    "next_vip_tier_threshold": 1000,    "needed_for_next_vip_tier": 400,    "next_vip_tier_name": "Gold"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Customer Moves Down A Tier"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rewards and birthdays


Rivo Reward Redeemed

Triggered when a customer redeems for a reward. Requires a reward redemption and Reward Redeemed enabled.

Event property

Meaning and availability

reward_name

Reward name; empty string if unavailable.

reward_code

Issued reward code; empty string if unavailable.

reward_tos

Reward terms as text; empty string if no terms apply or no reward is available.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "reward_name": "$5 off",    "reward_code": "EXAMPLE-SAVE5",    "reward_tos": ""  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Reward Redeemed"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Customer Birthday

Triggered when birthday earnings are awarded. Requires a qualifying birthday earning action and Celebrate Birthday enabled. This is separate from capturing a date of birth.

Event property

Meaning and availability

earnings_amount

Birthday earning amount: integer for points, decimal string for credits.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "earnings_amount": 100  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Customer Birthday"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Birthday Captured

Triggered when a customer’s birthday is first added, rather than on later birthday edits. Requires Birthday Captured enabled.

Event property

Meaning and availability

dob

Captured birthday in month-day format (MM-DD).

captured_at

Timestamp when the birthday was updated; can be null if unavailable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "dob": "09-10",    "captured_at": "2026-09-10T12:00:00.000Z"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Birthday Captured"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Expiry notifications

Requires the applicable reward, points, or credit expiry setup and the matching Klaviyo notification switch. Warning and Last Chance are separate reminder stages, normally 30 days and three days before expiry. Reward reminders require an unused expiring reward; points and credits reminders require eligible expiring earnings. The Klaviyo event switch is separate from Rivo’s native email switch. Use the exact metric names below: all Last Chance metrics include Expiry. The event properties do not contain a reward code or the customer’s full balance.

Rivo Notification Reward Expiry Warning

Triggered at the expiry warning stage for an expiring redeemed reward. Requires reward expiry and Notification Reward Expiry Warning enabled.

Event property

Meaning and availability

reward_name

Name of the expiring reward; empty string if unavailable.

time_until_expiry

Approximate time until expiry in hours or days, such as 3 days. This is display text, not an exact duration.

expiry_date

Expiry date in day-with-suffix format, such as 3rd Oct 2026.

expiry_date_formatted

Expiry date using your store’s configured date format and time zone.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "reward_name": "$5 off",    "time_until_expiry": "30 days",    "expiry_date": "3rd Oct 2026",    "expiry_date_formatted": "October 3, 2026"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Notification Reward Expiry Warning"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Notification Reward Expiry Last Chance

Triggered at the last-chance expiry reminder stage for an expiring redeemed reward. Requires reward expiry and Notification Reward Expiry Last Chance enabled.

Event property

Meaning and availability

reward_name

Name of the expiring reward; empty string if unavailable.

time_until_expiry

Approximate time until expiry in hours or days, such as 3 days. This is display text, not an exact duration.

expiry_date

Expiry date in day-with-suffix format, such as 3rd Oct 2026.

expiry_date_formatted

Expiry date using your store’s configured date format and time zone.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "reward_name": "$5 off",    "time_until_expiry": "3 days",    "expiry_date": "3rd Oct 2026",    "expiry_date_formatted": "October 3, 2026"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Notification Reward Expiry Last Chance"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Notification Points Expiry Warning

Triggered at the expiry warning stage for points. Requires points expiry and Notification Points Expiry Warning enabled.

Points expiry notifications do not include an expiring-points amount.

Event property

Meaning and availability

time_until_expiry

Approximate time until expiry in hours or days, such as 3 days. This is display text, not an exact duration.

expiry_date

Expiry date in day-with-suffix format, such as 3rd Oct 2026.

expiry_date_formatted

Expiry date using your store’s configured date format and time zone.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "time_until_expiry": "30 days",    "expiry_date": "3rd Oct 2026",    "expiry_date_formatted": "October 3, 2026"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Notification Points Expiry Warning"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Notification Points Expiry Last Chance

Triggered at the last-chance expiry reminder stage for points. Requires points expiry and Notification Points Expiry Last Chance enabled.

Points expiry notifications do not include an expiring-points amount.

Event property

Meaning and availability

time_until_expiry

Approximate time until expiry in hours or days, such as 3 days. This is display text, not an exact duration.

expiry_date

Expiry date in day-with-suffix format, such as 3rd Oct 2026.

expiry_date_formatted

Expiry date using your store’s configured date format and time zone.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "time_until_expiry": "3 days",    "expiry_date": "3rd Oct 2026",    "expiry_date_formatted": "October 3, 2026"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Notification Points Expiry Last Chance"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Notification Credits Expiry Warning

Triggered at the expiry warning stage for credits. Requires credits expiry and Notification Credits Expiry Warning enabled.

Event property

Meaning and availability

expiry_amount

Credit amount covered by this expiry notification, as a string with two decimal places. For an individual earning notification, this is that earning’s amount.

formatted_expiry_amount

The same credit amount in your store’s money format.

time_until_expiry

Approximate time until expiry in hours or days, such as 3 days. This is display text, not an exact duration.

expiry_date

Expiry date in day-with-suffix format, such as 3rd Oct 2026.

expiry_date_formatted

Expiry date using your store’s configured date format and time zone.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "expiry_amount": "12.50",    "formatted_expiry_amount": "$12.50",    "time_until_expiry": "30 days",    "expiry_date": "3rd Oct 2026",    "expiry_date_formatted": "October 3, 2026"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Notification Credits Expiry Warning"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Notification Credits Expiry Last Chance

Triggered at the last-chance expiry reminder stage for credits. Requires credits expiry and Notification Credits Expiry Last Chance enabled.

Event property

Meaning and availability

expiry_amount

Credit amount covered by this expiry notification, as a string with two decimal places. For an individual earning notification, this is that earning’s amount.

formatted_expiry_amount

The same credit amount in your store’s money format.

time_until_expiry

Approximate time until expiry in hours or days, such as 3 days. This is display text, not an exact duration.

expiry_date

Expiry date in day-with-suffix format, such as 3rd Oct 2026.

expiry_date_formatted

Expiry date using your store’s configured date format and time zone.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "expiry_amount": "12.50",    "formatted_expiry_amount": "$12.50",    "time_until_expiry": "3 days",    "expiry_date": "3rd Oct 2026",    "expiry_date_formatted": "October 3, 2026"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Notification Credits Expiry Last Chance"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Referrals


Rivo Advocate Signup

Triggered when a customer signs up as a referral advocate. Requires a recent advocate opt-in (within the past hour), no previous corresponding signup message, and Advocate Signup enabled. Sent to the advocate’s profile.

Event property

Meaning and availability

referral_link

The advocate’s shareable referral URL.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "referral_link": "https://store.example.com/?rvo_ref=example123"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Advocate Signup"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Referral Completed

Triggered when a referral completes. Requires a qualifying referral and Referral Completed enabled. Sent to the advocate’s profile.

Event property

Meaning and availability

friend_email

Referred friend’s email; empty string if unavailable.

referrals_completed

Total number of completed referrals for this advocate when the event is prepared.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "friend_email": "[email protected]",    "referrals_completed": 3  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Referral Completed"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Referral Friend Claim

Triggered when the referred friend claims the referral offer. Requires a referral offer and Friend Claim enabled. Sent to the friend’s profile.

Reward details come from the referral campaign’s friend reward, or the store’s friend reward for referrals without a campaign.

Event property

Meaning and availability

friend_email

Referred friend’s email.

reward_name

Reward name; empty string if unavailable.

reward_code

Issued reward code; empty string if unavailable.

reward_tos

Reward terms as text; empty string if no terms apply or no reward is available.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "friend_email": "[email protected]",    "reward_name": "$10 off your first order",    "reward_code": "EXAMPLE-FRIEND10",    "reward_tos": ""  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Referral Friend Claim"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Referral Invite Friend

Triggered when an advocate creates a referral invitation. Requires referral invitations and Invite Friend enabled. Sent to the advocate’s profile; friend_email is event data, not the profile receiving this event.

Event property

Meaning and availability

advocate_name

Advocate’s full name; empty string if unavailable.

reward_name

Campaign’s friend reward name; empty string if unavailable.

friend_email

Email address entered for the invited friend.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "advocate_name": "Alex Morgan",    "reward_name": "$10 off your first order",    "friend_email": "[email protected]"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Referral Invite Friend"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Customer accounts


Rivo Customer Account Activated

Triggered on first account activation. Requires Customer Account Activated enabled. Historical activations older than one day do not trigger this event.

Event property

Meaning and availability

account_activated_at

Customer’s account activation timestamp.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "account_activated_at": "2026-09-10T12:00:00.000Z"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Customer Account Activated"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Product Added To Favorites

Triggered when a customer adds a product to favorites. Requires the favorites experience and Product Added To Favorites enabled.

Event property

Meaning and availability

product_id

Shopify product ID, sent as a string.

product_name

Product title; empty string if unavailable.

product_url

Storefront product URL; empty string if the product handle or store domain is unavailable.

product_image_url

Product image URL; empty string if unavailable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "product_id": "8123456789012",    "product_name": "Canvas Weekend Tote",    "product_url": "https://store.example.com/products/canvas-weekend-tote",    "product_image_url": "https://store.example.com/images/canvas-weekend-tote.jpg"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Product Added To Favorites"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Memberships

Requires a membership program and the relevant membership action, plus the matching event enabled in Membership Events. A visible switch alone does not guarantee delivery: see Membership Payment Success below. Membership IDs in event properties are separate from the Klaviyo profile ID. Billing interval values are daily, weekly, monthly, quarterly, semi_annually, annually, or one_time.

Rivo Membership Signup

Triggered when a customer is enrolled in a membership tier. Requires Membership Signup enabled.

Event property

Meaning and availability

signed_up_at

Membership start timestamp; nullable.

customer_id

Shopify customer ID.

membership_tier_id

Rivo membership tier ID; nullable.

membership_tier_name

Membership tier name; null if unavailable.

membership_tier_price

Tier price as a number in store currency; nullable.

membership_tier_billing_interval

Tier billing interval; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "signed_up_at": "2026-09-10T12:00:00Z",    "customer_id": 7123456789012,    "membership_tier_id": 42,    "membership_tier_name": "Insiders",    "membership_tier_price": 20.0,    "membership_tier_billing_interval": "monthly"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Membership Signup"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Membership Canceled

Triggered when an immediate cancellation is requested. Requires a membership tier and Membership Canceled enabled. This event does not confirm that cancellation succeeded. End-of-period requests use Pending Cancellation instead.

Event property

Meaning and availability

cancelled_at

Membership end timestamp, or the current time if the end time is unavailable. Note the double “l” in this property name.

customer_id

Shopify customer ID.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "cancelled_at": "2026-09-10T12:00:00Z",    "customer_id": 7123456789012  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Membership Canceled"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Membership Pending Cancellation

Triggered when cancellation at the end of the billing period is requested. Requires a membership tier and Membership Pending Cancellation enabled. This event does not confirm that scheduling succeeded.

Event property

Meaning and availability

queued_for_cancellation_at

Scheduled membership end timestamp, rather than the time the customer requested cancellation; nullable.

customer_id

Shopify customer ID.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "queued_for_cancellation_at": "2026-10-10T12:00:00Z",    "customer_id": 7123456789012  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Membership Pending Cancellation"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Membership Payment Failure

Triggered when a recently completed membership billing attempt fails. Requires an active membership tier and Membership Payment Failure enabled. Attempts completed more than 14 hours ago do not generate a new failure event.

This payload does not include an error code, error message, order ID, or tier price.

Event property

Meaning and availability

membership_tier_name

Membership tier name; null if unavailable.

attempt_number

Billing attempt number; can be null if unavailable.

completed_at

Billing attempt completion timestamp; nullable.

failure_at

Failure timestamp, matching completed_at; nullable.

failed_at

Legacy alias of failure_at, still included with the same value; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "membership_tier_name": "Insiders",    "attempt_number": 1,    "completed_at": "2026-09-10T12:00:00Z",    "failure_at": "2026-09-10T12:00:00Z",    "failed_at": "2026-09-10T12:00:00Z"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Membership Payment Failure"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Membership Payment Success

Availability: reference only. Although a Membership Payment Success switch exists, normal Klaviyo delivery does not currently send this metric. Use Rivo Membership Successful Rebill for successful billing events.

The example documents the available payment-success payload format; it is not a promise of automatic delivery.

Event property

Meaning and availability

membership_tier_name

Membership tier name; null if unavailable.

attempt_number

Billing attempt number; can be null if unavailable.

completed_at

Billing attempt completion timestamp; nullable.

succeeded_at

Success timestamp, matching completed_at; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "membership_tier_name": "Insiders",    "attempt_number": 2,    "completed_at": "2026-09-11T12:00:00Z",    "succeeded_at": "2026-09-11T12:00:00Z"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Membership Payment Success"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Membership Renewal Notice

Triggered when a pre-renewal reminder is processed for an upcoming membership billing date. Requires configured warning or final reminder days, an active membership and subscription, and Membership Renewal Notice enabled. The next billing date must be between 12 hours and 60 days away. Queued cancellations, a cancellation request in the past 30 days, or a same-stage reminder in the past five days exclude a membership. Membership migration mode normally suppresses reminders. Both reminder stages use this metric, independently of the Rivo renewal email switch.

Event property

Meaning and availability

next_billing_date

Upcoming billing timestamp; nullable.

membership_tier_name

Membership tier name; null if unavailable.

renewal_date

Alias of next_billing_date, with the same value; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "next_billing_date": "2026-10-10T12:00:00Z",    "membership_tier_name": "Insiders",    "renewal_date": "2026-10-10T12:00:00Z"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Membership Renewal Notice"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Membership Successful Rebill

Triggered when a membership billing attempt succeeds. Requires an active membership tier and Membership Successful Rebill enabled. Attempts completed more than 14 hours ago do not generate a new event.

Event property

Meaning and availability

membership_tier_name

Membership tier name; null if unavailable.

attempt_number

Billing attempt number; can be null if unavailable.

completed_at

Billing attempt completion timestamp; nullable.

billing_interval

Membership tier billing interval; nullable.

next_billing_date

Next billing timestamp available when the event is prepared; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "membership_tier_name": "Insiders",    "attempt_number": 1,    "completed_at": "2026-09-10T12:00:00Z",    "billing_interval": "monthly",    "next_billing_date": "2026-10-10T12:00:00Z"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Membership Successful Rebill"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Membership Paused

Triggered when a membership is paused. Requires a membership that can be paused and Membership Paused enabled.

Event property

Meaning and availability

membership_tier_name

Membership tier name; null if unavailable.

paused_at

Most recent subscription pause timestamp; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "membership_tier_name": "Insiders",    "paused_at": "2026-09-10T12:00:00Z"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Membership Paused"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Membership Billing Skipped

Triggered when a membership billing cycle is skipped. Requires a skippable billing cycle and Membership Billing Skipped enabled.

Event property

Meaning and availability

membership_tier_name

Membership tier name; null if unavailable.

skipped_at

Most recent billing-skip timestamp; nullable.

new_billing_date

Next billing timestamp after the skip; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "membership_tier_name": "Insiders",    "skipped_at": "2026-09-10T12:00:00Z",    "new_billing_date": "2026-11-10T12:00:00Z"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Membership Billing Skipped"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Gifts and gift cards


Rivo Loyalty Gift Processed

Availability: reference only. This metric describes a processed loyalty gift, but normal Klaviyo delivery does not currently expose an event switch for it. Do not rely on it to trigger an automatic flow.

A setup sample may create this metric for accounts with loyalty gifts. The example shows its payload format, not an automatically delivered customer event.

Event property

Meaning and availability

reward_name

Reward name; empty string if unavailable.

reward_code

Issued reward code; empty string if unavailable.

reward_tos

Reward terms as text; empty string if no terms apply or no reward is available.

message

Gift message; can be null or empty when no message is supplied.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "reward_name": "$5 off",    "reward_code": "EXAMPLE-GIFT5",    "reward_tos": "",    "message": "A little thank-you, Alex!"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Loyalty Gift Processed"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Virtual Gift Card Delivery

Triggered when a virtual gift card is delivered to its recipient. Requires a recipient, a due delivery date, and Virtual Gift Card Delivery enabled. Imported gift cards do not generate this delivery event.

Event property

Meaning and availability

gift_card_code

Gift-card redemption code; can be null if unavailable.

gift_card_expires_on

Expiry date as YYYY-MM-DD; null for no expiry.

gift_card_initial_value

Original issued value as a number; not the remaining balance.

gift_card_note

Original gift note, or the current note if the original is blank; can be null.

gift_card_recipient_first_name

Recipient’s first name; nullable.

gift_card_recipient_full_name

Recipient’s full name; nullable.

gift_card_sender_first_name

Sender’s first name; nullable.

gift_card_sender_full_name

Sender’s full name; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "gift_card_code": "EXAMPLE-GIFT-5678",    "gift_card_expires_on": "2027-09-10",    "gift_card_initial_value": 50.0,    "gift_card_note": "Happy birthday, Jamie!",    "gift_card_recipient_first_name": "Jamie",    "gift_card_recipient_full_name": "Jamie Lee",    "gift_card_sender_first_name": "Alex",    "gift_card_sender_full_name": "Alex Morgan"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Virtual Gift Card Delivery"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Virtual Gift Card Reminder

Availability: reference only. A Virtual Gift Card Reminder switch and payload format exist, but there is currently no automatic reminder delivery schedule for this metric. A setup sample can still create it in Klaviyo.

This example shows a gift card with no expiry. Do not assume enabling the switch schedules reminders.

Event property

Meaning and availability

gift_card_code

Gift-card redemption code; can be null if unavailable.

gift_card_expires_on

Expiry date as YYYY-MM-DD; null for no expiry.

gift_card_initial_value

Original issued value as a number; not the remaining balance.

gift_card_note

Original gift note, or the current note if the original is blank; can be null.

gift_card_recipient_first_name

Recipient’s first name; nullable.

gift_card_recipient_full_name

Recipient’s full name; nullable.

gift_card_sender_first_name

Sender’s first name; nullable.

gift_card_sender_full_name

Sender’s full name; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "gift_card_code": "EXAMPLE-GIFT-5678",    "gift_card_expires_on": null,    "gift_card_initial_value": 50.0,    "gift_card_note": "Happy birthday, Jamie!",    "gift_card_recipient_first_name": "Jamie",    "gift_card_recipient_full_name": "Jamie Lee",    "gift_card_sender_first_name": "Alex",    "gift_card_sender_full_name": "Alex Morgan"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Virtual Gift Card Reminder"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Bulk Gift Card Delivery

Triggered when a bulk gift-card campaign delivers a card to a recipient. Requires a delivering bulk gift-card campaign and Bulk Gift Card Delivery enabled.

Event property

Meaning and availability

gift_card_amount

Original issued gift-card amount as a number.

gift_card_code

Gift-card redemption code; nullable.

gift_card_bulk_campaign_id

Campaign identifier; can be null if unavailable.

gift_card_bulk_campaign_name

Campaign name; nullable.

gift_card_note

Original campaign gift note; nullable.

gift_card_expiration_date

Optional: expiry date as YYYY-MM-DD; omitted if no expiry.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "gift_card_amount": 25.0,    "gift_card_code": "EXAMPLE-BULK-9012",    "gift_card_bulk_campaign_id": 123,    "gift_card_bulk_campaign_name": "Autumn Thank You",    "gift_card_note": "Thanks for being part of our community!",    "gift_card_expiration_date": "2027-03-10"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Bulk Gift Card Delivery"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Cashback

Requires Cashback available for your account, a qualifying offer/order with an associated cashback earning, and the matching switch under Cashback Events. See Cashback Offers for program setup. All three metrics include the seven shared fields below. The event name and status are separate: status is the opt-in’s current state when the event is prepared, so do not infer it solely from the metric name.

Rivo Cashback Earned Pending

Triggered when a qualifying cashback opt-in moves into Holding while approval is delayed. Requires Cashback Earned Pending enabled. Merely capturing an opt-in does not send this event.

Pending events do not include claim_url, expiry_date, or expiry_date_formatted, even if claim-only approval or an expiry is configured.

Event property

Meaning and availability

trigger_name

Exact cashback event label: cashback_earned_pending, cashback_earned_completed, or cashback_earned_completed_reminder.

earnings_amount

Associated cashback earning’s credit amount as a decimal string, not the customer’s remaining balance.

formatted_earnings_amount

The same amount in your store’s money format.

scheduled_approval_at

Scheduled approval timestamp; null when no approval time is scheduled. Included on all three metrics.

cashback_offer_id

Rivo cashback offer ID.

order_id

Shopify order ID; can be null if no order is available.

status

Current opt-in status: pending, holding, approved, or rejected.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "trigger_name": "cashback_earned_pending",    "earnings_amount": "12.5",    "formatted_earnings_amount": "$12.50",    "scheduled_approval_at": "2026-09-17T12:00:00Z",    "cashback_offer_id": 321,    "order_id": 6123456789012,    "status": "holding"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Cashback Earned Pending"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Cashback Earned Completed

Triggered when a qualifying cashback opt-in changes to Approved. Requires Cashback Earned Completed enabled. A claim-only invitation sent before approval does not itself trigger this event.

This example has claim-only approval enabled and an expiry. Without claim-only approval, omit claim_url. Without an expiry, omit both expiry fields. The scheduled approval field remains present even when null.

Event property

Meaning and availability

trigger_name

Exact cashback event label: cashback_earned_pending, cashback_earned_completed, or cashback_earned_completed_reminder.

earnings_amount

Associated cashback earning’s credit amount as a decimal string, not the customer’s remaining balance.

formatted_earnings_amount

The same amount in your store’s money format.

scheduled_approval_at

Scheduled approval timestamp; null when no approval time is scheduled. Included on all three metrics.

cashback_offer_id

Rivo cashback offer ID.

order_id

Shopify order ID; can be null if no order is available.

status

Current opt-in status: pending, holding, approved, or rejected.

claim_url

Optional: included only when claim-only cashback approval is enabled. Customer link to claim approval.

expiry_date

Optional: included when the earning has an expiry, such as 3rd Oct 2026.

expiry_date_formatted

Optional: included alongside expiry_date, using your store’s date format and time zone.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "trigger_name": "cashback_earned_completed",    "earnings_amount": "12.5",    "formatted_earnings_amount": "$12.50",    "scheduled_approval_at": null,    "cashback_offer_id": 321,    "order_id": 6123456789012,    "status": "approved",    "claim_url": "https://loyalty-api.rivo.io/api/cashback_approval_redirect_link?shop_id=123456789&cashback_opt_in_id=00000000-0000-4000-8000-000000000123",    "expiry_date": "3rd Oct 2026",    "expiry_date_formatted": "October 3, 2026"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Cashback Earned Completed"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Rivo Cashback Earned Completed Reminder

Triggered for an Approved cashback opt-in last updated the configured number of reminder days ago (seven days by default). Requires a positive reminder-day setting and Cashback Earned Completed Reminder enabled. The Rivo reminder email switch can be off; the Klaviyo event is independent. A reminder already sent for that earning can suppress another send.

The reminder does not check for an unused balance. Its earnings_amount is the associated earning amount, not the amount left to spend. The same optional claim-link and expiry rules as Completed apply.

Event property

Meaning and availability

trigger_name

Exact cashback event label: cashback_earned_pending, cashback_earned_completed, or cashback_earned_completed_reminder.

earnings_amount

Associated cashback earning’s credit amount as a decimal string, not the customer’s remaining balance.

formatted_earnings_amount

The same amount in your store’s money format.

scheduled_approval_at

Scheduled approval timestamp; null when no approval time is scheduled. Included on all three metrics.

cashback_offer_id

Rivo cashback offer ID.

order_id

Shopify order ID; can be null if no order is available.

status

Current opt-in status: pending, holding, approved, or rejected.

claim_url

Optional: included only when claim-only cashback approval is enabled. Customer link to claim approval.

expiry_date

Optional: included when the earning has an expiry, such as 3rd Oct 2026.

expiry_date_formatted

Optional: included alongside expiry_date, using your store’s date format and time zone.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "trigger_name": "cashback_earned_completed_reminder",    "earnings_amount": "12.5",    "formatted_earnings_amount": "$12.50",    "scheduled_approval_at": null,    "cashback_offer_id": 321,    "order_id": 6123456789012,    "status": "approved",    "claim_url": "https://loyalty-api.rivo.io/api/cashback_approval_redirect_link?shop_id=123456789&cashback_opt_in_id=00000000-0000-4000-8000-000000000123",    "expiry_date": "3rd Oct 2026",    "expiry_date_formatted": "October 3, 2026"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Cashback Earned Completed Reminder"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}

Credit transfers

Rivo Earning Transfer Completed

Triggered when a customer-to-customer credit transfer completes. Requires credit transfers available for your store, completion notifications enabled for the transfer, and Earning Transfer Completed enabled. The switch is shown when credit transfers are available. Sent to the recipient’s profile.

Event property

Meaning and availability

credits_amount

Transferred credits as a number.

formatted_credits_amount

Transferred credits in your store’s money format.

sender_name

Sender’s full name; nullable.

sender_email

Sender’s email; nullable.

message

Transfer message; nullable or empty when not supplied.

completed_at

Transfer completion timestamp; nullable.

Example payload:

{"data": {"type": "event", "attributes": {  "properties": {    "credits_amount": 25.0,    "formatted_credits_amount": "$25.00",    "sender_name": "Alex Morgan",    "sender_email": "[email protected]",    "message": "Enjoy your next order!",    "completed_at": "2026-09-10T12:00:00Z"  },  "metric": {"data": {"type": "metric", "attributes": {"name": "Rivo Earning Transfer Completed"}}},  "profile": {"data": {"type": "profile", "id": "01K4Q8R2M6T9W3Y5A7B0C1D2EF", "attributes": {"email": "[email protected]"}}}}}}
Did this answer your question?