Klaviyo Integration FAQ

Here are the frequently asked questions regarding the native Klaviyo integration within TRIFFT:

Q: Do I need Klaviyo Advanced KDP to use the TRIFFT integration?

A: No. Standard profile synchronization, loyalty metrics, segmentation, personalized emails, pre-built flows, and Klaviyo-to-TRIFFT webhook actions can work without Advanced KDP. Advanced KDP adds deeper analytics, code-based transformation, data warehousing, monitoring, and audience-management options.

Q: Which members are synchronized to Klaviyo?

A: Verified registered members are synchronized. The verification method depends on the project implementation and may include email confirmation, SMS or email OTP, mobile-app registration, Client Zone registration, Shopify account creation, WooCommerce loyalty registration, or API creation with is_verified: true.

Q: Which identifier should I use for a TRIFFT member in a Klaviyo webhook?

A: Confirm that the Klaviyo profile contains the TRIFFT member UUID in External ID or trifft_id. Existing templates may use {{ person.id }}, but you must preview the webhook and verify that the rendered value matches the TRIFFT member ID expected by the API.

Q: Why should I use the TRIFFT Batch API for Klaviyo webhooks?

A: Klaviyo webhook URLs do not support dynamic Jinja variables in the URL. The static destination https://api.trifft.io/v1/batch allows the dynamic member ID and endpoint path to be placed inside the JSON payload instead.

Q: Why is my Klaviyo variable not rendering?

A: Use spaces inside the curly braces, for example {{ person.id }}. Avoid {{person.id}}. Also verify that the selected test profile contains the property referenced by the template.

Q: How do I test a webhook before enabling a flow?

A: Open the webhook action, click Preview, select a profile that exists in both systems, confirm that all variables resolve correctly, and send a test request. Check for an HTTP 2xx response and verify the resulting action in the TRIFFT member event history.

Q: Why is a standard TRIFFT event visible in Klaviyo but the profile data is outdated?

A: Standard TRIFFT events should refresh the available profile properties. Inspect the event timestamp, confirm the correct member mapping, and verify that the source data in TRIFFT is current. Custom outbound webhooks do not trigger the standard full-profile refresh.

Q: What standard information does TRIFFT send to Klaviyo?

A: The standard integration sends 15 loyalty metrics and enriches profiles with standard properties such as points, tier, coupon list, available coupon count, favorite venue, segments, card ID, support ID, locale, and TRIFFT member ID. Project-specific Custom Parameters are also shared.

Q: Why is an Added to Segment or Removed from Segment event missing?

A: System segments such as All Members are ignored. Confirm that the member entered or left a non-system segment and that the integration was active when the change occurred.

Q: Why did the Welcome Flow not start?

A: Confirm that Klaviyo received the Member verified event, that the flow trigger and filters allow the profile to enter, and that the flow is Live or in the expected test state. Also confirm that the profile was not already processed by the flow according to Klaviyo's re-entry settings.

Q: Why did the Points Expiration Reminder Flow not start?

A: Point expiration must be enabled on the primary TRIFFT wallet. TRIFFT evaluates expiration daily at 01:00 UTC and sends reminders only on the predefined days: 30, 14, 3, 1, and 0 days before/on expiration. Confirm that Points expiration reminder sent is available; older implementations may expose the underlying event as wallet_points_expiration.

Q: How often is the coupon list in Klaviyo updated?

A: The trifft_coupons property is refreshed whenever TRIFFT sends a standard event that updates the Klaviyo profile, for example a coupon action, profile update, or transaction completion.

Q: Why is the coupon section empty in an email?

A: The member may have no available coupons, the profile property may not have been refreshed, or the email block may be referencing the wrong property. Use trifft_coupons, preview the message with a member who has coupons, and configure the block to collapse when the list is empty.

Q: Can I fully customize the coupon list design?

A: Yes. You can use a reusable content block or a custom HTML block and modify the layout, typography, images, dates, point values, and calls to action. Keep the Klaviyo loop and property names valid.

Q: Can one Klaviyo flow handle both Wallet credited and Wallet debited triggers?

A: No. Create one flow for Wallet credited and a separate flow for Wallet debited, then customize the message and webhook action for each event.

Q: Can a Klaviyo flow assign several rewards or actions at once?

A: Yes. A single TRIFFT Batch API payload can contain multiple operations, such as adding/removing segments, assigning a coupon, changing wallet points, and sending an app notification.

Q: How do I prevent duplicate rewards?

A: Use flow filters, event conditions, segment state, time-window restrictions, and exit conditions. Test repeat entry and webhook retries. Where possible, design the TRIFFT action so the same campaign milestone cannot be rewarded twice.

Q: Can I reward a Klaviyo product or brand review?

A: Yes. Use Submitted Review or Submitted Rating as the flow trigger, apply optional rating/product/frequency filters, and call the TRIFFT Batch API to add points or assign a coupon.

Q: When should I create a custom TRIFFT-to-Klaviyo webhook?

A: Use one when the standard integration does not provide the required event or payload, when data must be reformatted or enriched, or when a custom Klaviyo event/profile update is required. A Klaviyo private API key with the appropriate write scope is needed.

Q: Why is a custom TRIFFT-to-Klaviyo webhook not updating all loyalty profile properties?

A: Custom outbound webhooks do not trigger the standard full-profile refresh. Include the required fields explicitly in the custom payload or rely on a subsequent standard TRIFFT event to refresh the profile.

Q: What should I check when a webhook returns an error?

A: Check the destination URL, HTTP method, authorization header, API-key permissions, JSON syntax, rendered variables, member ID, resource IDs, and the response body. Review Klaviyo webhook logs and the TRIFFT member event history.


Did this page help you?