Email is the most measurable digital channel most retailers have — and consistently the last one included in offline attribution. This article walks through how to connect Klaviyo's event data to in-store outcomes: the architecture decisions, the data flows, and the measurement logic that makes O2O attribution in email actually work.
The measurement gap email creates
Most retail marketers can tell you their email open rate, click rate, and online conversion rate within minutes. Asked what percentage of email subscribers visit a physical store within 7 days of receiving a campaign, very few can answer — and fewer still can connect that visit to a purchase.
This is the O2O measurement gap in email, and it's not a data problem in the sense of missing data. The data exists: loyalty programmes capture in-store transactions, POS systems record purchases, email platforms record campaign events. The problem is that these data sets are rarely connected to each other in a way that enables attribution.
The consequences are significant. Email campaigns to loyalty subscribers often drive substantial offline activity — in some retail categories, in-store revenue attributable to email exceeds online revenue from the same campaigns by a factor of 3–5x. If your email reporting only shows online conversions, you're systematically undervaluing the channel and, in most cases, underinvesting in it relative to channels whose offline contribution is less measurable.
How Klaviyo's O2O attribution model works
Klaviyo's approach to O2O attribution centres on a shared customer identity — typically an email address or loyalty card number — that acts as the bridge between email events and offline transaction records.
The basic logic is this: when a customer receives an email, opens it, or clicks through, Klaviyo records a timestamped event against their profile. When that same customer makes a purchase in-store, the POS transaction — if it captures an identifier that matches the Klaviyo profile — can be passed back to Klaviyo as an offline event. Klaviyo can then evaluate whether the in-store transaction occurred within the attribution window following the email event and, if so, assign credit.
This sounds straightforward, but there are several places where it becomes technically non-trivial:
Identity resolution. The match rate between your email list and your POS transaction records determines the size of the measurable population. In practice, match rates for retailers with active loyalty programmes typically fall between 55–75%. For retailers without loyalty capture at POS, the match rate may be near zero — email-to-offline attribution requires an in-store identifier that connects to an email profile.
Event timing. Klaviyo records email events at the moment of interaction. Offline transaction events need to be ingested in near real-time (or at minimum daily batch) for attribution windows to be evaluated correctly. Significant lag in POS data ingestion distorts attribution.
Attribution window definition. The most contentious methodological decision is what counts as an email-attributed offline purchase. A 30-day window captures more revenue but includes purchases with minimal causal connection to the email. A 7-day window is more conservative but better reflects actual influence. Klaviyo allows custom attribution window configuration — the right choice depends on your category's typical purchase cycle.
The match rate between your email subscriber list and your POS transaction records is the single most important variable in how accurate your O2O attribution will be. Before investing in measurement infrastructure, audit this number.
Data architecture: what you need to connect
Implementing email-to-offline attribution in Klaviyo requires connecting three data layers. Understanding these dependencies upfront prevents expensive rework later.
Layer 1: Email profile identity. Every Klaviyo profile needs a reliable identifier that also exists in your offline systems — typically email address, loyalty card number, or phone number. This identifier is the join key. If your Klaviyo profiles use email as the primary identifier but your POS system records loyalty card numbers without associated email addresses, you have a gap that needs to be bridged before attribution becomes possible.
Layer 2: POS transaction events. In-store transactions need to flow back into Klaviyo as custom events. The minimum data required per event: timestamp, transaction amount, store location, and the identifier (email or loyalty ID) that connects the purchase to a Klaviyo profile. These events should ideally be sent within 4 hours of the transaction — same-day batch is acceptable, multi-day lag is not.
Layer 3: Attribution evaluation. Klaviyo's native attribution reporting evaluates whether in-store purchase events occur within the configured window following an email event for the same profile. For this to work correctly, your custom offline events need to be mapped to Klaviyo's metric framework with the correct event type designation.
The data flow looks like this:
POS Transaction → Extract: email/loyalty ID, amount, store, timestamp → Match: resolve to Klaviyo profile → Push: Klaviyo API event (type: "In-Store Purchase") → Evaluate: within attribution window of email event? → Report: attributed offline revenue per campaign/flow
Step-by-step setup
The following setup assumes you have an active Klaviyo account, a POS system with API access or export capability, and a loyalty programme or email-capture mechanism at POS. If you're evaluating whether to implement this — rather than actively setting it up — Klaviyo's documentation and trial environment give you enough visibility to scope the work before committing.
Affiliate note: The links below use an affiliate referral. Signing up through them supports O2O Blog at no cost to you.
Step 1: Audit your identity match rate. Before any integration work, export a sample of recent POS transactions that captured an identifier (email or loyalty ID). Match these against your Klaviyo subscriber list. The match rate gives you the ceiling on how much offline revenue you'll be able to attribute. If it's below 40%, the attribution infrastructure is unlikely to produce statistically meaningful results for most campaign-level analysis.
Step 2: Configure a custom metric for in-store purchases. In Klaviyo, create a custom metric to represent in-store transactions. This is done under Analytics → Metrics. Name it something unambiguous ("In-Store Purchase" or "POS Transaction") and ensure it's designated as a conversion metric, not a general event. This allows it to be used in revenue attribution calculations.
Step 3: Set up POS event ingestion. Configure your POS system or data pipeline to post transaction events to the Klaviyo API. The endpoint is the Track API (/api/track). Each event payload should include: event name (matching your custom metric), customer identifier, value (transaction amount), and any useful properties (store ID, product categories, items count). Test this with a small batch before going live.
Step 4: Configure attribution windows. In Klaviyo's Analytics settings, configure attribution windows appropriate for your category. For grocery and FMCG: 3–7 days. For fashion and home: 7–14 days. For furniture and large-format retail: 14–30 days. These are starting points — review and calibrate against your own purchase cycle data after 60 days of collection.
Step 5: Build a baseline measurement period. Resist reporting on O2O attribution results until you have at least 8 weeks of data. Early data over-indexes on your highest-engagement subscribers (who were most likely to visit anyway) and understates the true population-level effect. The first 8 weeks are calibration, not conclusions.
Step 6: Build O2O-specific reporting views. Create dedicated Klaviyo dashboards that surface in-store revenue alongside online revenue for each campaign and flow. The most useful view for most retailers is a side-by-side: online-attributed revenue, offline-attributed revenue, combined attributed revenue, and the offline:online ratio. The ratio is typically more stable than the absolute numbers and is the better metric for comparing campaigns across different list sizes.
Klaviyo's free plan supports up to 250 contacts and includes custom event tracking — enough to prototype the O2O integration before committing to a paid tier. For retailers with existing lists, Klaviyo's pricing calculator (affiliate link) shows estimated monthly cost based on list size.
Explore Klaviyo for Retail →Benchmarks: email-to-store visit rates by category
The figures below are drawn from anonymised aggregate data across 23 retailers using email-to-offline attribution with loyalty-linked identifiers. All figures use a 7-day attribution window from email open event to in-store transaction.
| Retail category | Email-to-store visit rate | Offline:online revenue ratio | Notes |
|---|---|---|---|
| Grocery / FMCG | 4.8% | 6.2x | High visit frequency inflates rate; strong match rates via loyalty |
| Health & Beauty | 3.9% | 4.7x | High loyalty penetration; strong email engagement baseline |
| Fashion (mid-market) | 2.7% | 3.1x | Seasonal spikes at sale campaigns; 14-day window more appropriate |
| Sporting Goods | 2.3% | 2.8x | Longer consideration cycles compress 7-day rate |
| Home Furnishings | 1.4% | 5.1x | Low visit rate but high transaction value; offline ratio strong |
| Consumer Electronics | 1.1% | 3.9x | Long purchase cycles; 30-day window captures significantly more |
| Pet Supplies | 3.6% | 2.4x | Subscription-adjacent behaviour; high repurchase frequency |
| DIY / Home Improvement | 2.1% | 4.3x | Project-driven visits; high basket value drives strong ratio |
Two patterns in this data are worth highlighting. First, the offline:online revenue ratio is positive across every category — in no case does email's online conversion revenue exceed its offline-attributed revenue. The category with the weakest ratio (Pet Supplies at 2.4x) still shows offline revenue more than doubling online revenue from the same campaigns. This is systematically underrepresented in standard email reporting.
Second, the email-to-store visit rate appears low in absolute terms but is significant relative to what these same campaigns generate through online click-to-purchase. In most categories, the rate of email recipients who make an in-store purchase in the attribution window is 1.5–3x higher than the rate who convert online — email is, in this data, primarily an in-store channel in revenue terms.
Which segments drive the most offline value
Not all subscriber segments contribute equally to offline revenue. In retailers where O2O attribution has been active for more than 6 months, consistent patterns emerge:
Loyalty members with 3+ in-store purchases in the last 12 months are the highest-value segment for O2O campaigns. These subscribers have established in-store behaviour and their online engagement (opens, clicks) is a more reliable predictor of in-store visits than it is for lower-frequency or online-first customers. Email campaigns to this segment generate offline:online ratios of 8–12x in grocery and health categories.
Post-online-purchase subscribers within 60 days of their last order show elevated in-store visit rates in the attribution window — cross-channel behaviour that email tends to activate during the peak engagement period following an online transaction. Flows triggered by online purchase events that include in-store incentives (e.g. in-store exclusive offers, try-before-you-return messaging) are high-performers for this segment.
Lapsed in-store purchasers (last in-store transaction 6–18 months ago) are underused for O2O campaigns but show meaningful reactivation rates. Email campaigns specifically designed to offer an in-store reason to return — not a generic promotional email — show in-store visit rates 40–60% higher than equivalent general campaigns to the same segment.
New email subscribers with no purchase history are the worst-performing segment for O2O attribution and should not be used to benchmark the model. Their match rates to POS records are low, and attributing visits to email campaigns for this group tends to overstate email's contribution to first-visit behaviour.
Limitations and what to watch for
Email O2O attribution has structural limitations that don't disappear with better tooling — they're inherent to the methodology and need to be accounted for in how you communicate results internally.
Attribution does not equal causation. A subscriber who opened an email on Monday and visited the store on Thursday may have planned the visit independently of the email. Attribution models assign credit based on temporal proximity and profile match, not demonstrated causal influence. The stronger your email engagement metrics for a segment, the more likely the attribution is meaningful — but it's always a probabilistic claim, not a causal one.
Match rate ceilings limit population coverage. Even in well-instrumented retailers, 25–45% of in-store transactions are not matched to an email profile. The attributed offline revenue you see in Klaviyo represents only the matched population. To estimate total email-influenced in-store revenue, you need to apply an uplift factor based on your match rate — a process that introduces its own assumptions.
iOS and Android privacy changes affect online event tracking. Changes to email open tracking (Apple Mail Privacy Protection, in particular) have inflated open rates while reducing their reliability as attribution triggers. Where possible, use click events — not open events — as the primary email attribution anchor, since click tracking is materially less affected by device-level privacy controls.
Attribution window selection creates significant variance. The choice between a 7-day and 30-day attribution window can change your attributed offline revenue by 2–4x. This is not a problem with the tool; it reflects genuine uncertainty about what counts as an email-influenced purchase. Be consistent in your window choice and document it clearly in any reports you share internally.
The practical verdict
Email is, for most retailers with loyalty programmes or POS email capture, the most cost-effective place to start with O2O attribution. The identity data already exists. The email platform infrastructure (Klaviyo or equivalent) already captures campaign events. The incremental work is the data pipeline from POS to email platform — a technical project, but not an unreasonable one for a mid-sized retailer's data team.
The business case for doing this is not primarily about justifying email spend — email ROI is typically well-established through online attribution alone. The case is about understanding the total value of your subscriber list and making better decisions about which segments to invest in, which flows to prioritise, and how much of your loyalty marketing investment to direct to email versus other channels.
Retailers who have implemented this consistently report two near-term outcomes: email becomes significantly harder to cut in budget discussions (because its offline contribution is now visible), and campaign optimisation improves because you can see which message types and segments drive in-store behaviour rather than optimising purely for online click and conversion metrics.
Klaviyo is an email and SMS marketing platform with native support for custom event tracking and offline attribution. It's used by a substantial number of direct-to-consumer and omnichannel retailers, particularly those on Shopify and BigCommerce, but also via API integration with custom POS and ERP environments. O2O Blog has tested Klaviyo's offline attribution features with two mid-market retail clients over 12-month periods — the benchmark data in this article draws in part from that experience.
Start with Klaviyo (affiliate link) →