Skip to main content

How to Connect with Klaviyo via OAuth

Overview

Connecting TrustWILL Loyalty with Klaviyo allows you to sync loyalty data and trigger personalized email flows.

Setup takes 3 simple steps:

  1. Authorize the connection via OAuth

  2. Sync customer data

  3. Configure event sending


Step 1: Authorize via OAuth

We have upgraded our integration with Klaviyo to use OAuth authorization.

How to connect:

  1. In TrustWILL Loyalty admin, go to Integrations > Klaviyo

  2. Click Connect

  3. You’ll be redirected to Klaviyo, log in if prompted

  4. Review permissions and click Allow

  5. You’ll be redirected back to TrustWILL Loyalty

✅ A green “Connected” status confirms successful authorization

Permissions requested:

  • Read & write account

  • Read & write profile

  • Read & write events

  • Read & write lists

Tip: If you previously connected using a private API key, switching to OAuth will retain your event and profile permissions.


Step 2: Sync Customer Data

After connecting, sync your existing loyalty data to Klaviyo. This creates or updates customer profiles with loyalty properties.

How to sync:

  1. Go to Integrations > Klaviyo

  2. Click Sync data

    The sync runs in the background and may take a few minutes depending on your customer volume.

  3. Once completed, the Last synced timestamp will update

Important notes:

  1. Make sure to sync data, otherwise customer attributes will not be fully synced to Klaviyo.

  2. After the initial sync, customer properties are kept up to date automatically — you do not need to run a manual sync again unless you suspect data is out of sync.


What Gets Synced — Customer Properties

These properties are synced to Klaviyo customer profiles and updated automatically. Use the Klaviyo syntax column to reference them in email templates and segment conditions.

Property

Type

Klaviyo syntax

Description

Example

trustwill_state

text

{{ person.trustwill_state }}

Membership status of the customer

member

trustwill_birthday

text

{{ person.trustwill_birthday }}

Customer's birthday. Defaults to 1970 as the year if no year was provided

1970-08-15

trustwill_points_balance

number

{{ person.trustwill_points_balance }}

Current redeemable points balance

480

trustwill_points_expiry_date

date

{{ person.trustwill_points_expiry_date }}

Expiry date of the customer's points

2025-08-31

trustwill_tier_name

text

{{ person.trustwill_tier_name }}

Name of the customer's current loyalty tier

Gold

trustwill_next_tier_name

text

{{ person.trustwill_next_tier_name }}

Name of the next tier, based on tier order in TrustWILL admin

Platinum

trustwill_tier_expiration_date

text

{{ person.trustwill_tier_expiration_date }}

Date on which the customer's current tier expires

2026-01-01

trustwill_tier_rewards

list

{{ person.trustwill_tier_rewards.0 }}

{{ person.trustwill_tier_rewards.1 }}

Perks and benefits of the customer's current tier

["Free shipping", "2x points"]

trustwill_referral_url

text

{{ person.trustwill_referral_url }}

Customer's unique referral link

Tip: Use a fallback value for properties that may be empty:

{{ person.trustwill_tier_name|default:"Member" }}

Notes: For customers who previously integrated using an API key, the original five profile properties will remain available. You can migrate to the new properties at any time without affecting existing workflows.

For details on the original five profile properties, please refer to: How to integrate with Klaviyo via API key


Step 3: Configure Event Sending

Events send real-time loyalty activity to Klaviyo and can be used as flow triggers.

How to enable events:

  1. Go to Integrations > Klaviyo

  2. Click Send events

  3. Toggle on the events you want

  4. Click Save

⚠️ Note:

  1. Events are off by default — enable only what you need to keep your account clean.

  2. After the event is saved, we will send Klaviyo a sample data payload for this event. We will also create a test customer in your customer list, shown as something like [email protected]. You may see some event attributes labeled as “sample” or similar wording, there is no need to worry about these.


Available Events

Event attributes are additional data attached to each loyalty event, such as points earned, tier name, or reward details that can be used for flow triggers, conditional splits, and email personalization.

Klaviyo only shows event attributes from events that have been triggered by real customers before. If no customer has triggered a specific event yet, the Flow trigger filter will only display sample data for its attributes, not real values from your account.

Event

Property

Type

Klaviyo syntax

Description

Example

TrustWILL - Points earned

points_added

number

{{ event.points_added }}

Points earned in this action

50

earn_action

text

{{ event.earn_action }}

Source of the points — a Ways to Earn action name, a manual note, or "none"

Place an order

activity_title

text

{{ event.activity_title }}

Label shown in the customer's activity feed

Earned points for purchase

TrustWILL - Reward redeemed

reward_code

text

{{ event.reward_code }}

Coupon code issued to the customer

CWL-123456

reward_name

text

{{ event.reward_name }}

Name of the reward

$10 off

reward_expiry_date

date

{{ event.reward_expiry_date }}

Expiry date of the coupon

2025-09-15

points_spent

number

{{ event.points_spent }}

Points deducted for this redemption

200

reward_redeemed_date

text

{{ event.reward_redeemed_date }}

Timestamp of the redemption

2025-07-10T14:32:00Z

reward_terms

list

{{ event.reward_terms.0 }}

{{ event.reward_terms.1 }}

Terms and conditions of the coupon

["Min spend $50", "single use"]

TrustWILL - Tier upgraded

current_vip_tier

text

{{ event.current_vip_tier }}

Tier the customer has been upgraded to

Gold

previous_vip_tier

text

{{ event.previous_vip_tier }}

Tier the customer was on before the upgrade

Silver

TrustWILL - Points expiring

expiring_points

number

{{ event.expiring_points }}

Number of points about to expire

320

points_expiry_date

date

{{ event.points_expiry_date }}

Date those points expire

2025-08-31

expiring_days_before

number

{{ event.expiring_days_before }}

Days remaining until expiry

7

TrustWILL - Reward Expiring

reward_code

text

{{ event.reward_code }}

Coupon code

CWL-123456

reward_name

text

{{ event.reward_name }}

Name of the reward

$10 off

reward_expiry_date

date

{{ event.reward_expiry_date }}

Date the coupon expires

2025-09-15

expiring_days_before

number

{{ event.expiring_days_before }}

Days remaining until expiry

3

TrustWILL - Birthday reward available

birthday_points

number

{{ event.birthday_points }}

Bonus points issued on the customer's birthday

100

birthday_date

date

{{ event.birthday_date }}

Customer's birthday date

2025-08-15

TrustWILL - Referral share

customer_name

text

{{ event.customer_name }}

Name of the referrer

Jane Smith

customer_email

text

{{ event.customer_email }}

Email of the referrer

friend_reward_points

number

{{ event.friend_reward_points }}

Points awarded to the referred friend

50

friend_reward_name

text

{{ event.friend_reward_name }}

Coupon name issued to the referred friend

10% off first order

friend_reward_code

text

{{ event.friend_reward_code }}

Coupon code issued to the referred friend

CWL-123456

TrustWILL - Referral completed

customer_reward_name

text

{{ event.customer_reward_name }}

Reward name issued to the referrer

$15 off

friend_email

text

{{ event.friend_email }}

Email of the referred friend

customer_reward_points

number

{{ event.customer_reward_points }}

Points awarded to the referrer

100

customer_reward_code

text

{{ event.customer_reward_code }}

Coupon code issued to the referrer

CWL-123456

Note: No need to add expiring_days_before as a Klaviyo Flow trigger filter. This value is already controlled by your TrustWILL Loyalty settings. The event automatically fires on the day you configured, so no additional filter is needed.


Troubleshooting

  1. I connected successfully but no profile properties appear in Klaviyo.

    Run a manual Sync Customer Data from the Klaviyo integration page. Properties are created on first sync and updated automatically going forward. If a customer profile did not exist in Klaviyo before the sync, it will be created now.

  2. Events are not showing up as flow triggers in Klaviyo.

    Confirm the event is toggled on under Integrations > Klaviyo > Send Events. An event must fire at least once after being enabled before it appears as an available trigger in Klaviyo's flow builder.

  3. A customer's points balance in Klaviyo is out of date.

    Profile properties sync automatically on every loyalty action. If a value looks stale, use the manual Sync Customer Data option to force a refresh for all customers.

  4. My OAuth authorization expired or was revoked.

    Go to Integrations > Klaviyo and click Reconnect. This will re-run the OAuth flow. Your event configuration and sync settings will be preserved.

Did this answer your question?