Klaviyo Flow Recipes for Your WooCommerce Loyalty Program

This guide walks you through building the most useful Klaviyo flows for your loyalty program, step by step. Each recipe covers the trigger to use, how to filter it, and which merge tags to put in your email so the message is personalised to what the customer actually did.

Before you start, make sure the integration is connected. See Integrate Klaviyo with Points & Rewards for WooCommerce for the setup, and the Events and Profile Properties Reference for the full list of data you can use.

All events are tied to the customer email address. Customers must check out with the same email used on their Klaviyo profile, otherwise the data will not match up.

Recipe 1: Points earned confirmation

Goal: Confirm every points-earning purchase and remind the customer of their growing balance, which nudges them toward the next reward.

  1. Create a new flow and choose a Metric trigger.
  2. Select the Points Updated metric.
  3. Add a Trigger Split right after the trigger and set the condition to reason_title equals Order purchase.
  4. Add an email and use these merge tags in the body:
    • {{ event.delta }} – points earned on this order
    • {{ event.balance_after }} – new total balance

Example subject line: You just earned {{ event.delta }} points! Your balance is now {{ event.balance_after }}.

Recipe 2: Points expiry warning

Goal: Bring inactive customers back before their points disappear. This is one of the highest-converting loyalty emails because it creates real urgency.

This recipe uses a segment plus a segment-triggered flow, because it depends on a future date rather than a single action.

  1. Go to Audience > Lists & Segments and create a new segment.
  2. Add a condition on the profile property loyalty_points_expires_at and set it to a date range within the next 14 days.
  3. Add a second condition: loyalty_points_balance is greater than 0, so you only email people who actually have points to lose.
  4. Create a flow triggered when someone enters this segment, then add your reminder email.

In the email, use {{ person.loyalty_points_balance }} to show how many points are at stake and {{ person.loyalty_points_expires_at }} for the deadline.

Points expiry properties are only sent when points expiry is enabled in the plugin settings. If you do not use expiry, skip this recipe.

Recipe 3: Rank up celebration

Goal: Celebrate when a customer reaches a new tier, and deliver any reward coupon attached to that rank.

  1. Create a flow with a Metric trigger and select Rank Achieved.
  2. Add an email that congratulates the customer by rank name.
  3. Use these merge tags:
    • {{ event.rank_name }} – the new tier the customer reached
    • {{ event.coupon_code }} – the reward coupon, if the rank issues one

If you want different emails per tier, add a Trigger Split on rank_name so Gold members get a different message than Silver members.

Recipe 4: Referral thank you

Goal: Reward and encourage customers who bring in new business through referrals.

  1. Create a flow with a Metric trigger on Points Updated.
  2. Add a Trigger Split with the condition reason_title equals Friend referral.
  3. Thank the customer and remind them how many more friends they can invite. Show the points earned with {{ event.delta }}.

You can include the customer’s own referral code with the profile property {{ person.loyalty_referral_code }} to make it easy for them to share again.

Recipe 5: Birthday reward

Goal: Send a birthday email on the customer’s actual birthday, using the date they saved in My Account.

  1. Create a flow and choose a Date property trigger.
  2. Select the loyalty_birthday profile property.
  3. Configure it to send on the day, or a few days before, and add your birthday email or discount.

The loyalty plugin already includes a built-in birthday email feature. Use this Klaviyo recipe only if you prefer to manage birthday messages entirely inside Klaviyo.

Recipe 6: Win back high-balance customers

Goal: Re-engage valuable customers who have earned a lot of points but have not been active recently.

  1. Create a segment where loyalty_points_balance is greater than a threshold that fits your store (for example 500).
  2. Add a condition on loyalty_points_last_updated to only include customers whose last activity was more than 60 days ago.
  3. Send a campaign or segment-triggered flow reminding them of their balance and inviting them back with a limited-time offer.

You can build similar segments on loyalty_rank_name to run tier-specific promotions, such as an exclusive early-access sale for your top rank.

Tips for reliable flows

  • Always add a Trigger Split on reason_title when using Points Updated, otherwise the flow fires on every points change, including spending and expiry.
  • Test each flow with a real order or a manual points adjustment before turning it live.
  • Keep customer emails consistent between WooCommerce and Klaviyo so profiles stay matched.

Why is my Klaviyo flow firing on every points change?

The Points Updated metric fires on all points activity, including earning, spending, and expiry. Add a Trigger Split immediately after the trigger and filter by the reason_title property so the flow only runs for the specific action you want, such as Order purchase or Friend referral.

Which merge tag shows the points earned in an email?

Use the event property tag for the number of points changed in the transaction, and the balance after property for the new total. On Points Updated flows these are available as event properties, while profile properties like the current balance are available on the person record.

Do I need points expiry enabled for the expiry warning flow?

Yes. The expiry date property is only sent to Klaviyo when points expiry is enabled in the plugin settings. If expiry is turned off, that property will not be available and the expiry warning recipe will not work.

Browse our plugins

Lightweight WooCommerce plugins built for speed. No bloat, no frameworks -- just clean code that works.

View all plugins
Stay in the loop

Get notified when we launch new plugins. No spam, just product updates.