Technical

Connecting Revlance to Klaviyo: How Behavioral Signals Flow Into Email Flows

6 min read
Abstract integration data flow between behavioral signals and email platform

Klaviyo is where most DTC brands do their email marketing. Revlance is where behavioral profiles live. The value of connecting the two is that Klaviyo flows can make decisions based on what a subscriber actually cares about — not just what they last purchased or what segment they're tagged in.

This article is a technical walkthrough of exactly how that connection works: what data moves, when it moves, and how to structure your Klaviyo flows to use it effectively. This isn't a conceptual overview — it's the implementation details.

What Revlance Sends to Klaviyo

Revlance maintains a behavioral profile for each identified user on your store. "Identified" means they've either authenticated (logged in) or their anonymous session has been merged with a known email address through a Klaviyo form submission or checkout email entry. Anonymous sessions build signal but stay anonymous until that merge event.

The behavioral profile contains several categories of data we push to Klaviyo as custom properties on the person record:

Category affinity scores. A normalized score (0-1) for each top-level product category in your catalog, representing how strongly this subscriber's browsing and purchase behavior skews toward that category. We push the top three categories plus their scores: rvlx_category_1, rvlx_category_1_score, rvlx_category_2, and so on.

Price tier preference. The median price point of products this subscriber engages with in earnest — meaning products they hover on for more than 1.5 seconds or click through to the PDP. We push this as rvlx_price_tier with values like budget, mid, or premium based on where the engagement falls relative to your catalog's price distribution.

Last active session timestamp. The ISO 8601 timestamp of the most recent session, pushed as rvlx_last_session. This is useful for suppressing recommendation content from flows for subscribers who haven't visited recently and therefore have stale behavioral context.

Top recommended product IDs. A comma-separated list of the top five currently recommended product IDs for this subscriber, based on their behavioral profile at the time of the last sync. These are pushed as rvlx_top_recs and updated each time the profile syncs.

The Sync Mechanism: Webhooks and Batch Updates

There are two sync paths. The first is event-triggered: when a significant behavioral event occurs — a session with three or more product interactions, an add-to-cart, or a purchase — Revlance fires a webhook to Klaviyo's Track API to update the person's custom properties with the latest profile state. This is near-real-time; the delay is typically under 30 seconds from the triggering event.

The second is a nightly batch sync. At 2:00 AM in your store's configured timezone, Revlance exports all updated profiles from the past 24 hours and pushes them to Klaviyo via the Profiles API. This catches subscribers whose behavioral updates didn't reach the event-trigger threshold — perhaps they visited but didn't interact deeply enough to trigger the webhook, but their session still contributed marginal updates to their profile vectors.

For most Klaviyo flows, the nightly batch is sufficient. The event-triggered webhook becomes important when you're using flows that need to react to very recent behavior — a browse abandonment flow that fires within an hour of a session, for instance, where you want the recommendation block to reflect exactly what the subscriber looked at in that session rather than a 24-hour-old profile state.

We're not saying you need both sync paths for every use case. The event-triggered webhook adds implementation complexity and increases Klaviyo API call volume. If your highest-priority flows are promotional sends and post-purchase sequences rather than real-time abandonment flows, the nightly batch is cleaner to maintain.

Building a Personalized Recommendation Block in Klaviyo

Once Revlance custom properties are populating on your Klaviyo person records, the most common use case is a product recommendation block in an email template. Here's the practical implementation.

In Klaviyo's template editor, a recommendation block is typically three to four product tiles side by side, each with a product image, name, price, and a CTA button. To make this block personalized using Revlance data, you have two options.

The first option uses Klaviyo's built-in catalog integration. If your product catalog is synced to Klaviyo, you can reference product objects by ID. Using the rvlx_top_recs custom property, you split it into individual IDs and use Klaviyo's lookup syntax to render the product image, name, and URL for each. This approach renders dynamically at send time, so each subscriber sees the products in their rvlx_top_recs list at the moment the email sends.

The second option — more flexible but more work — uses Revlance's email recommendation API. At send time, Klaviyo makes a server-side call to https://api.revlance.com/v1/email-recs with the subscriber's Klaviyo profile ID as the lookup key. Revlance returns a JSON payload with rendered product data (image URL, name, price, PDP URL) for that subscriber's current top recommendations. You render this data into the template block. This approach gives you fresher data than the rvlx_top_recs property (which was last updated at sync time) and supports more complex ranking logic including inventory filtering and new arrival weighting.

Trigger Logic: Using Behavioral Properties in Flow Conditions

Beyond the recommendation block itself, Revlance custom properties can drive flow branching logic in Klaviyo. Some examples of how we see this used effectively:

Category-specific winback sequences. A winback flow that fires 45 days after last purchase can branch on rvlx_category_1. Subscribers whose top category is outerwear see an outerwear-focused email. Subscribers whose top category is accessories see an accessories email. Same flow, different content per branch. The open rates on category-matched winback emails run meaningfully higher than generic "we miss you" content.

Price-sensitive promotional timing. Using rvlx_price_tier, a promotional flow can exclude premium-tier subscribers from low-percentage-discount announcements and instead hold them for higher-value offers. This avoids training premium subscribers to expect discount emails — a pattern that erodes full-price conversion over time.

Post-purchase cross-sell sequencing. A post-purchase flow that fires 7 days after an order can use rvlx_top_recs to populate a "you might also like" block. Because Revlance updates rvlx_top_recs after the purchase is recorded, the recommendations at 7 days post-purchase are already accounting for the purchased items and surfacing complementary products rather than showing what the subscriber already bought.

What to Watch Out For

A few implementation details that cause problems if not handled correctly.

Custom property staleness. If a subscriber hasn't visited your store in 60+ days, their Revlance behavioral profile hasn't updated, and the rvlx_top_recs and affinity scores may reflect behavior from months ago. For these subscribers, the personalized recommendation block might show items that are now out of stock, discontinued, or simply no longer relevant to their current intent. We recommend adding a Klaviyo flow condition that checks rvlx_last_session before rendering the personalized block — if it's more than 60 days old, fall back to a static bestsellers block or a new arrivals block rather than showing stale recommendations.

Email client image caching. If you're using the API-based recommendation approach that renders product images at send time, Klaviyo's rendering cache can in some configurations cache the image URLs for individual subscribers across sends. Test this explicitly in your email client testing suite before shipping a flow that relies on dynamically rendered product images — the fallback behavior when an image URL returns 404 (because the product sold out after the email was built but before it was opened) needs to be handled gracefully.

The Klaviyo integration is functional and ships with Revlance's standard plan. The setup is documented in the integration hub at revlance.com/integrations. Initial sync typically completes within 4-6 hours of enabling the integration for accounts with up to 50,000 Klaviyo profiles.

More from the blog

Browse all articles