Klaviyo Other Functions

This Ongoing Management Guide provides the steps required to maintain, troubleshoot, and optimize the Klaviyo native integration within the TRIFFT.

Other functions covered

  • Pre-built Loyalty Flows: Welcome, referral invite, and points-expiration journeys.
  • Coupon Lists in Emails: Dynamically display current TRIFFT coupons in Klaviyo emails.
  • Review Rewards: Reward product or brand reviews using Klaviyo events and TRIFFT APIs.
  • Member Activation Campaigns: Build progressive visit or transaction campaigns.
  • Wallet Push Notifications: Send point-credit and point-debit updates through the TRIFFT app.
  • Custom TRIFFT → Klaviyo Webhooks: Send non-standard events or custom payloads.
  • Advanced KDP: Use deeper analytics, data transformation, audience management, and monitoring.

Pre-built loyalty flows

TRIFFT provides branded flow templates that can be copied into Klaviyo and customized. Templates include the trigger, baseline structure, and dynamic loyalty content, but all customer-facing copy and links must be reviewed before launch. Additional flow patterns described in the legacy documentation include reward-redemption reminders, tier-upgrade notifications, points-balance updates, and referral-incentive flows.

Loyalty Program Welcome Flow

The flow starts when Klaviyo receives the Member verified event.

It contains three messages:

StepPurposeTypical dynamic content
Email 1: WelcomeIntroduce the program and celebrate membership.Points rules, tier rules, expiration rules, redemption rate, coupon explanation.
Email 2: Ways to EarnExplain how to earn more value.Purchases, referrals, reviews, social actions, profile completion, preferences.
Email 3: Ways to RedeemShow how rewards can be used.Current points, current tier, and available coupons.

Testing options include:

  • Add a trigger filter that allows only a test email address.
  • Create a verified member through a supported touchpoint.
  • Create a verified member through the TRIFFT API with is_verified: true.

Example request:

curl --request POST \
     --url https://api.trifft.io/v1/member \
     --header 'Authorization: Bearer YOUR_TRIFFT_API_KEY' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "language": "en",
  "is_verified": true,
  "params": {
    "firstName": "John",
    "lastName": "Doe"
  },
  "email": "[email protected]"
}
'
⚠️

The template contains generic content. Review program names, links, buttons, point rules, reward examples, and legal text before activation.

How to Install a Flow Template

To implement a flow template:

  1. Log into your Klaviyo account.

  2. Click directly on this link Loyalty Program Welcome or navigate to search for "Loyalty Program Welcome" and use the Create Flow button. This will copy the flow into your account, and you can then customize it to fit your brand and loyalty program.

  3. Edit and manage the flow works exactly the same as any other Klaviyo flow.

  4. Once you’ve reviewed and customized your flow, refer to Klaviyo’s guide for how to enable and start sending a flow.

Some of the content in the flow templates is generic and must be updated to reflect your specific loyalty program before it is ready to send to customers. We recommend reviewing all blocks and emails individually (especially buttons and links) before enabling the flow.

Testing the flow

This flow is triggered once "Member verified" event is received by Klaviyo. Verified members are members who registered to the loyalty program and have been verified. How verification happens may depend on a particular loyalty program implementation. For example:

  • If TRIFFT is integrated with Shopify, when Shopify customer creates and account
  • If TRIFFT is integrated with WooCommerece, after WooCommerce customer registers for loyalty program
  • If TRIFFT mobile app or client zone touch points are used, after member verified their primary contact by SMS or Email OTP or by clicking on email confirmation link
🚧

Before setting this flow live, test it properly, for example by adding a trigger filter that will launch the flow only for the test email address.

🧠

If you don't have e-commerce or TRIFFT touch-point integration ready, use TRIFFT REST API Create a Member to easily create a verified member. Make sure you set "is_verified": true

curl --request POST \
     --url https://api.trifft.io/v1/member \
     --header 'Authorization: Bearer f8f****b2c' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "language": "en",
  "is_verified": true,
  "params": {
    "firstName": "John",
    "lastName": "Doe"
  },
  "email": "[email protected]"
}
'


Referral – New Member Invite Flow

This flow targets the referred contact and encourages them to complete the qualifying action or purchase.

ConfigurationValue
TriggerReferral code provided
AudienceThe invited contact.
Exit conditionStop the sequence after the referral-eligible purchase or successful reward event, such as Referral reward awarded.

Suggested sequence:

  1. Day 0 — Invitation Received
    Introduce the program and referral benefit.
  2. Day 3 — Reminder and Urgency
    Restate the value and remind the recipient to act.
  3. Day 11 — Final Call
    Send a final reminder before the referral opportunity ends.

Best practices:

  • Personalize the message with referrer data when available.
  • Use a mobile-friendly call to action leading directly to registration or purchase.
  • Add exit logic so converted users do not receive unnecessary reminders.
  • Compare referral conversion and acquisition cost with other channels.
ℹ️

This flow complements the main welcome flow. It specifically targets contacts acquired through referral before they become active purchasing members.


Points Expiration Reminder Flow

What this flow does

This flow sends automated reminders when a customer has loyalty points nearing expiration. It includes three stages:

Email TimingPurposeExample Subject Line
3–30 daysEarly warning & gentle nudgeUse your points before they vanish!
1 dayLast call before expirationLast chance! Points expire tomorrow
0 daysExpired points & re-engagementYou just lost some points 😢

Why this matters

Customers often forget to redeem their points. This flow nudges them before it's too late — and even after expiration, helps you re-engage with:

  • Personalized subject lines
  • Dynamic expiration dates & point counts
  • Inline calls to action driving redemption

Setup Instructions

  1. Ensure the TRIFFT → Klaviyo integration is live.
  2. In Klaviyo, confirm that the Points expiration reminder sent metric is tracked.
  3. Create the Points Expiration Reminder Flow from the Klaviyo Flow Library.
  4. Customize subject lines, preview text, and email template to fit your brand.
  5. Activate the flow.

Event Properties Used

The following event properties are passed from TRIFFT to Klaviyo and used for personalization:

VariableDescription
points_to_expireNumber of points expiring
days_to_expireDays until expiration (0 = expired)
expiring_atUNIX timestamp (used for formatted expiration)
wallet_idNot used in template, this is the primary wallet ID

How TRIFFT sends expiration events

TRIFFT sends the wallet_points_expiration event to Klaviyo automatically — but only under the following conditions:

  • Point expiration must be enabled on your primary Wallet in TRIFFT Admin
  • Points are evaluated daily at 01:00 UTC
  • If points are scheduled to expire, the relevant Points expiration reminder sent event is sent — but only on the following predefined days:
Days Before Expiry
30 days
14 days
3 days
1 day
0 days

These trigger days will be configurable per project in the future.


Display TRIFFT coupons in Klaviyo emails

The standard integration stores a member's coupon list in the Klaviyo profile property:

trifft_coupons

Each coupon object can contain:

  • Coupon ID.
  • Coupon name.
  • Image URL.
  • Valid-from date.
  • Valid-until date.
  • Member-specific expiration date.
  • Points required for activation.

Example structure:

[
  {
    "id": "4b5803b8-8f57-48c2-8ab8-05f8405c6387",
    "name": "Rare Beauty $10",
    "img_logo": "https://cdn.trifft.io/files/example.png",
    "valid_from": 1724251806,
    "valid_until": null,
    "expiration_at": null,
    "points": 1500
  }
]

Option 1: Reusable content block

  1. Use a TRIFFT-provided Klaviyo email template as the starting point.
  2. Save the coupon section as a reusable content block.
  3. Insert the block into any campaign or flow email.
  4. Customize typography, spacing, buttons, and visual style.

Option 2: Custom HTML block

Alternatively, you can directly insert the TRIFFT Coupons List into your email by pasting provided HTML into an HTML Block within your Klaviyo template.

This method is more flexible if you want to heavily customize the visual appearance.

Insert an HTML block into the Klaviyo email and use a loop over trifft_coupons.

<div style="background-color:#8795FF;  padding:32px 0 24px 0; text-align:center; font-family:Arial, sans-serif;">
  {% for coupon in person|lookup:'trifft_coupons' %}

    <div style="background-color:#FBED00; display:inline-block; width:22%; min-width:140px; max-width:200px; margin:1%; vertical-align:top; border:1px solid #ddd; border-radius:10px; padding:12px; box-sizing:border-box; text-align:center;">

      <!-- Name -->
  <p style="font-size:14px; font-weight:bold; color:#333; margin:0 0 8px; min-height:40px; display:flex; align-items:center; justify-content:center; text-align:center;">
  {{ coupon|lookup:'name' }}
</p>

      <!-- Image -->
      <img src="{{ coupon|lookup:'img_logo' }}"
           alt="{{ coupon|lookup:'name' }}"
           style="max-width:100%; border-radius:6px; margin-bottom:10px;">

      <!-- Valid Until -->
      <p style="font-size:12px; color:#666; margin:0 0 6px;">
        Valid until:
        {{ coupon|lookup:'valid_until'|format_date_string|date:'d-m-Y' }}
      </p>

      <!-- Points / Free -->
      <p style="font-size:13px; font-weight:bold; color:#000; margin:0;">
        {% if coupon|lookup:'points' %}
          {{ coupon|lookup:'points' }} pts
        {% else %}
          Free
        {% endif %}
      </p>

    </div>

  {% endfor %}
</div>
⚠️

Configure the block to collapse when trifft_coupons is empty. Otherwise, members without coupons may see an empty section.

The coupon list is refreshed whenever TRIFFT sends a standard event to Klaviyo, for example after:

  • Coupon usage.
  • Profile update.
  • Transaction completion.
  • Another standard loyalty event that refreshes the profile.

Reward product and brand reviews

Klaviyo Reviews can collect:

  • Submitted Review — Product-level review.
  • Submitted Rating — Brand or company-level rating.

These events can trigger a Klaviyo flow that rewards the customer in TRIFFT.

Prerequisites

  • Klaviyo Reviews configured for the Shopify or WooCommerce store.
  • Active TRIFFT project.
  • Working TRIFFT and Klaviyo integration.
  • TRIFFT API key for the webhook reward action.

Setup

Step 1: Enable Reviews in Klaviyo

Klaviyo supports built-in review collection for both:

  • Product-level reviews (e.g. feedback on an individual item)
  • Brand-level ratings (e.g. service or delivery satisfaction)

Follow Klaviyo’s documentation to enable this feature.


Step 2: Understand the Review Events

Once enabled, Klaviyo automatically tracks two types of review-related events:

Event NameDescription
Submitted RatingBrand or company-level rating
Submitted ReviewProduct-level review

These events appear on customer profiles and can be used as triggers in Klaviyo flows.

Step 3: Create a Reward Flow in Klaviyo

Set up a new Klaviyo flow that rewards customers for leaving a review.

Step 4: Use an Event Trigger

Select either Submitted Review or Submitted Rating as the trigger event.

Step 5: Apply Filters (Optional)

Examples of optional conditions:

  • Only reward reviews with a rating above 3
  • Limit to one reward per customer per 30 days
  • Trigger only for specific product SKUs or categories

Step 6: Add a Webhook to Trigger a TRIFFT Reward


Typical reward would entail either adding points to member account or assigning a coupon.

Use the Webhook action in Klaviyo to trigger a reward in TRIFFT.

Review rewards can increase response rates while keeping collection, automation, segmentation, and loyalty rewards inside Klaviyo and TRIFFT.


Loyalty member activation campaign

A member activation campaign uses transactions or visits to move members through milestones and issue progressively stronger rewards.

Typical architecture

  1. TRIFFT or the connected commerce/POS system sends transaction data.
  2. Klaviyo counts qualifying transactions or evaluates campaign conditions.
  3. A flow webhook calls multiple TRIFFT API actions.
  4. TRIFFT updates the member's segment, assigns the reward, and sends app communication.
  5. App widgets or content can reflect the member's current progress.

Example progression:

MilestoneExample reward
Visit 1Free starter or low-cost reward.
Visit 2Free beverage or medium-value reward.
Visit 3High-value discount or premium reward.

A single Batch API request can:

  • Add the member to the new milestone segment.
  • Remove the member from the previous segment.
  • Assign the appropriate coupon.
  • Send a push notification linked to the coupon.

Best practices:

  • Define campaign duration and qualifying spend clearly.
  • Use strong in-store and app communication.
  • Train staff so the campaign is explained consistently.
  • Prevent repeat rewards for the same milestone.
  • Track visit frequency, coupon activation, coupon redemption, new-member growth, and campaign ROI.
  • Test different reward values and milestone structures.

Example

Example Klaviyo flow, excludes email or SMS. Each webhoke node ("Visit 1, Visit 2, Visit 3") calls multiple TRIFFT API endpoints to execute the appropriate actions in TRIFFT, e.g.:

  • Add to segment "2 transactions"
  • Remove from segment "1 transaction"
  • Assign respective reward directly
  • Send push notification

Example progression:

  • Visit 1: Free appetizer
  • Visit 2: Free beverage
  • Visit 3: High-value discount

ℹ️

One documented campaign example reported approximately 50% improvement across repeat visits, coupon redemptions, and new members. Treat this as an example rather than a guaranteed benchmark; results depend on reward attractiveness, audience, staff execution, and campaign design.


Send wallet credit and debit app notifications

Use this pattern when members should receive an immediate push or in-app message after points are added or deducted.

Data flow

  1. A wallet movement occurs in TRIFFT.
  2. TRIFFT sends Wallet credited or Wallet debited to Klaviyo.
  3. The relevant Klaviyo flow starts.
  4. The flow sends a webhook to the TRIFFT messaging endpoint.
  5. TRIFFT delivers a push notification when the app is in the background and configured in-app content when the app is open.

Requirements

  • Deployed TRIFFT mobile app.
  • Working TRIFFT and Klaviyo integration.
  • Wallet metrics visible in Klaviyo.
  • TRIFFT API access for public messages/notifications.

Flow structure

Create two separate flows:

  • Flow triggered by Wallet credited.
  • Flow triggered by Wallet debited.

A single Klaviyo flow cannot use two different metric triggers as interchangeable entry triggers.

Example notification action:

[
  {
    "uri": "/v1/member/{{ person.id }}/message/notification",
    "method": "POST",
    "payload": {
      "notification": {
        "title": "Points updated",
        "text": "Your loyalty point balance has changed."
      },
      "link": {
        "type": "APP",
        "uri": "wallet"
      },
      "modal": null
    }
  }
]

Testing should confirm:

  • The wallet event arrives in Klaviyo.
  • The correct flow starts.
  • The webhook returns HTTP 2xx.
  • The correct member receives the message.
  • The message format is appropriate when the app is open and closed.

Send custom webhooks from Klaviyo flows

1. Triggering a Flow with an Event from TRIFFT or Another Source

Instead of using webhooks from TRIFFT, Klaviyo flows can be triggered by an event imported from TRIFFT or any other data stream. Ensure that the event data is correctly imported into Klaviyo to initiate automated actions.

2. Configuring the Webhook in Klaviyo

To set up a webhook in Klaviyo:

  1. Go to Flows in Klaviyo and open an existing flow or create a new one.

  2. Add a Webhook Action to the flow.

  3. Fill in the webhook details as follows:

    • Destination URL: https://api.trifft.io/v1/batch
    • Headers:
      • Key: "Authorization"
      • Value: "Bearer YOUR_TRIFFT_API_KEY"

    The YOUR_TRIFFT_API_KEY is the API key created in TRIFFT. You can find more information on generating API keys in TRIFFT’s Settings - API Keys documentation.

  4. Define the request method as POST and configure the payload format as needed.

3) Testing & Validation

To test the webhook setup:

  1. Open the webhook action in Klaviyo.
  2. Click Preview.
  3. Select the right profile, ensuring that the same profile exists in the TRIFFT project.
  4. Search for the correct profile and click Send Test Request.
  5. In TRIFFT’s CRM area, look at the member’s event flow to verify that the events are correctly flowing to TRIFFT.
    👍

    Webhooks sent via Klaviyo Flows appear in Klaviyo Profile details in customer event history:

Important Considerations

  • Klaviyo's Webhook URL Limitations:
    Klaviyo's webhook implementation does not support entering Jinja variables in the URL. To work around this limitation, TRIFFT offers a Batch API that serves as a wrapper to call any of our APIs without requiring variables in the URL. This approach avoids issues related to URL variable substitution. For more details, refer to TRIFFT's Batch API documentation.

  • Variable Notation in Klaviyo:
    When using variables in Klaviyo, ensure that there is a space before and after the curly brackets. For example, use {{ person.id }} instead of {{person.id}}. Omitting spaces can cause the variable to not work properly.

  • TRIFFT Member ID Notation:
    To reference a TRIFFT member ID in Klaviyo, use the notation person.id.

Example JSON Payloads

Below are examples of JSON payloads for common actions:

Action JSON Payload
**Assign Coupon to Member** \[ { "uri": "/v1/member/{{ person.id }}/coupon/61d38741-9b79-4d57-b2a5-da4515b759fc/assign", "method": "POST", "payload": {} } ]
**Add 100 Points to Member** \[ { "uri": "/v1/member/None/wallet/add", "method": "POST", "payload": { "points": 10000, "note": null, "timestamp": null } } ]

For a comprehensive understanding of TRIFFT's API capabilities, refer to the complete API reference available at https://docs.trifft.io/reference.

For more details on setting up webhooks in Klaviyo flows, refer to Klaviyo’s Understanding webhooks in flows guide.

⚠️

A custom outbound webhook does not automatically refresh the full standard Klaviyo profile. Include every custom field required by the receiving use case.


Send custom webhooks from TRIFFT to Klaviyo flows

While TRIFFT automatically shares a rich set of metrics and attributes with Klaviyo, there are two situations where you may want to send additional custom data:

When to Use Custom Webhooks

  1. Non-standard Events or Profile Updates
    If you need to send custom events or modify profile properties that fall outside of TRIFFT's default dataset.

  2. Payload Manipulation
    If you need to adjust the payload before sending it — for example:

    • Formatting datetime fields
    • Adding enriched data from external systems
    • Mapping to Klaviyo’s custom structure or naming conventions

These advanced use cases can be handled using TRIFFT’s native webhook system, which supports outbound HTTP calls to Klaviyo’s public API.


Step-by-Step Setup

1. Create a Klaviyo API Key

🔒

Keep this key secure — it will be used for authorization when TRIFFT sends the webhook.

2. Set Up the Webhook in TRIFFT

  • Go to Settings → Integrations → Webhooks in TRIFFT Admin
  • Create a new webhook authorisation and use the following settings:
SettingValue
Destination URLhttps://a.klaviyo.com/api/ or other Klaviyo endpoint
HeadersAuthorization: Bearer YOUR_KLAVIYO_API_KEY

3. Configure Webhook

Example payload to send a custom event:

{
  "data": {
    "type": "event",
    "attributes": {
      "time": "{{ event.created_at | date('c') }}",
      "metric": {
        "data": {
          "type": "metric",
          "attributes": {
            "name": "Customer profile updated"
          }
        }
      },
      "profile": {
        "data": {
          "type": "profile",
          "attributes": {
            "email": "{{ member.email }}"
          }
        }
      },
      "properties": {
        "first_name": "{{ member.param.first_name }}",
        "last_name": "{{ member.param.last_name }}",
        "dateOfBirth": "{{ member.param.dateOfBirth }}",
        "card_number": "{{ member.param.card_number }}",
        "language": "{{ member.param.language }}"
      }
    }
  }
}
📘

Events created via webhooks will not be "branded" - ie, they will appear in Klaviyo with generic cogwheel icon, not with TRIFFT icon.

👍

TRIFFT webhooks support Twig template engine which is similar to Jinja


Advanced Klaviyo Data Platform functions

Advanced KDP is not required for the standard TRIFFT integration. It is a separate Klaviyo subscription and provides additional analytics and data-management capabilities for teams that need deeper control.

Customer analytics

FeatureWhat it doesLoyalty application
RFM SegmentationGroups customers by recency, frequency, and monetary value.Identify at-risk members, loyalists, and audiences that need an incentive.
Funnel AnalysisShows drop-off across multi-step journeys.Optimize onboarding, coupon activation, and reward redemption.
Conversion OverviewCompares conversion across channels.Evaluate loyalty-incentivized purchases and commercial impact.
Audience PerformanceMeasures how segments convert.Improve weak audiences and reinforce high-performing segments.
Cohort AnalysisTracks groups of users over time.Measure long-term retention, purchase, and redemption behavior.
Catalog InsightsAnalyzes product purchase patterns and combinations.Trigger replenishment, upsell, or product-specific loyalty offers.
Customizable CLV ReportForecasts customer or segment lifetime value.Align tiers, points, and reward cost with expected customer value.

Data management

FeatureWhat it doesLoyalty application
WebhooksSends real-time data to third-party systems.Relay Klaviyo events to TRIFFT or bridge missing integrations.
Code ComponentUses code to transform, filter, or enrich data.Build custom segmentation logic or transform ecommerce metadata.
Group Membership APIExposes audience membership for onsite use.Show different content by loyalty tier or customer state.
Data WarehousingIngests data from external or legacy systems.Create a more complete customer view across online and offline systems.
Custom MonitorsDetects anomalies and creates alerts.Identify coupon-usage drops, suspected fraud, or integration failures.

Advanced KDP can support:

  • More precise targeting.
  • Stronger personalization.
  • Clearer measurement.
  • Smarter automation.
  • Proactive issue detection.

Ongoing management checklist

  • Review flow triggers, filters, and exit conditions after every campaign change.
    • Confirm that reward actions are idempotent or protected against duplicates.
    • Audit reusable coupon blocks when coupon properties or email design changes.
    • Monitor webhook response codes and Klaviyo execution logs.
    • Rotate API keys according to your security policy.
    • Validate that member identity remains consistent across TRIFFT, Klaviyo, ecommerce, and POS systems.
    • Review points-expiration, tier, and segment logic when loyalty rules change.
    • Measure commercial performance rather than relying only on message engagement.



Did this page help you?