Troubleshooting
Klaviyo revenue attribution missing — diagnose by source
Why attributed revenue disappears from Klaviyo flows and campaigns — attribution windows, integration handoffs, Recharge/subscription overlap, and discount-code routing — with the fix for each.
title: "Klaviyo revenue attribution missing — diagnose by source" description: "Why attributed revenue disappears from Klaviyo flows and campaigns — attribution windows, integration handoffs, Recharge/subscription overlap, and discount-code routing — with the fix for each." slug: "klaviyo-revenue-attribution-missing" publishedAt: "2026-05-19" updatedAt: "2026-05-19" painCluster: 6 intent: 8 tier: 2 faq:
- q: "Why is revenue missing from my Klaviyo flow?" a: "The most common cause is the attribution window. Klaviyo attributes a purchase to the most recent email click within five days by default; purchases outside that window won't credit the flow. Other common causes: a broken Shopify integration that stopped sending Placed Order events, a discount-code attribution rule that routed credit elsewhere, or last-touch attribution sending credit to a different channel."
- q: "What is Klaviyo's default attribution window?" a: "Klaviyo's default attribution window is five days for email and one day for SMS. A purchase that happens six days after an email click won't attribute to the email. You can change the window in Account Settings → Reporting, but changing it doesn't backfill historical attribution."
- q: "Why does Google Analytics show more email revenue than Klaviyo?" a: "Two reasons usually. First, GA4 uses last-non-direct attribution by default, which can credit email when the user came back through direct traffic days later. Second, Klaviyo only attributes purchases tied to the original email click; GA4 attributes purchases tied to the source/medium chain. The numbers should differ — but not by more than 20-30% in normal conditions."
- q: "Why is Recharge revenue not showing in my Klaviyo flows?" a: "Recharge subscription orders run through a different webhook path than one-time Shopify orders. If Recharge's Klaviyo integration isn't configured, recurring-subscription revenue won't credit Klaviyo flows. Check Recharge → Integrations → Klaviyo; the integration needs to be active and configured to send Placed Order events to Klaviyo for subscription renewals."
- q: "Does Klaviyo attribute revenue to campaigns and flows differently?" a: "No — the same five-day email window applies to both. But because flows fire automatically and campaigns are scheduled, flow attribution tends to be more concentrated (a profile clicks an abandoned cart email and buys within a day) while campaign attribution is more diffuse (a profile sees a campaign and buys at some point in the next five days)."
- q: "Can a Klaviyo currency mismatch break attribution?" a: "Yes. If Klaviyo's account currency is set to USD but your Shopify orders come through in EUR or GBP, the order amount may be discarded or converted incorrectly. Check Account Settings → Currency. The currency setting should match your primary Shopify store currency."
- q: "Why did my flow's attributed revenue drop to zero?" a: "A sudden drop to zero on a single flow almost always means an integration issue rather than performance. Either the flow stopped sending (check the metric chart on the trigger event), or the integration stopped sending Placed Order events back to Klaviyo (check Analytics → Metrics → Placed Order for recent activity)." related:
- klaviyo-google-analytics-revenue-mismatch
- klaviyo-recharge-attribution
- klaviyo-shopify-integration-not-syncing
- klaviyo-flow-stopped-generating-revenue
Missing revenue attribution is the kind of problem that surfaces during quarterly review, not in real time. The numbers in Klaviyo's flow report look off. Google Analytics tells a different story. The Shopify dashboard tells a third. Someone has to reconcile, and the reconciliation usually reveals that one of three things happened: an attribution rule worked exactly as designed in a way nobody remembered, a measurement window cut off real conversions, or an integration broke and stopped sending Placed Order events for some segment of orders.
This page is organized by source. Each failure mode below identifies what's missing, where to look, and what the answer tells you about the underlying cause.
Quick diagnosis checklist
- Compare Klaviyo's "Placed Order" event volume against Shopify's order count. Open Analytics → Metrics → Placed Order, then compare to Shopify's orders dashboard for the same period. If Klaviyo is missing orders, the integration is dropping events. If Klaviyo has all the orders but the flow shows no attribution, the issue is the attribution rule.
- Check the attribution window in Account Settings → Reporting. Default is five days for email, one for SMS. If your typical purchase happens further out (e.g., a high-AOV consideration product), the window may be cutting off real conversions.
- Verify the currency setting matches Shopify. Account Settings → Currency. A mismatch can cause order amounts to be discarded.
- Check whether the flow's last-touch attribution is being stolen. If profiles click an email and then a Facebook ad before buying, the ad may take last-touch credit depending on how Klaviyo and GA4 are configured.
- For subscription stores: check Recharge → Integrations → Klaviyo. If the integration is off, subscription renewals don't credit Klaviyo flows.
- Check discount-code attribution. If a discount code is used outside an email click context, attribution may route differently than expected.
1. The five-day attribution window cut off the conversion
Klaviyo's default attribution model credits a purchase to the most recent email click within five days. A user who clicks an abandoned cart email, comes back four days later through direct traffic, and buys on day six will not credit the abandoned cart flow.
How to verify. Open the flow report. Note the attribution window. Then sample a few profiles who placed orders during the period in question — look at their activity timeline. Find profiles who clicked the flow's email and bought outside the five-day window. Those are the missing conversions.
How to fix. In Account Settings → Reporting, you can extend the attribution window. Note two things: extending the window doesn't backfill historical attribution (the report will only show the new window for new sends), and a longer window means more overlap with other channels claiming the same conversion.
When to leave it alone. For low-AOV repeat-purchase products (snacks, cosmetics consumables), the default window is usually correct. For high-AOV considered-purchase products (furniture, jewelry, high-ticket apparel), a longer window often reflects reality better — but be honest about it. Don't extend the window just to make a flow look better in the report.
2. The Shopify integration is dropping Placed Order events
If Klaviyo isn't receiving Placed Order events for some segment of your orders, those orders can't attribute. The flow's report shows fewer conversions than actually happened because Klaviyo doesn't know they happened.
How to verify. Open Analytics → Metrics → Placed Order. Compare the daily event count to Shopify's daily order count for the same period. They should match closely — usually within a few percent because of order cancellations and refunds. If Klaviyo is missing 10%+ of orders, the integration has a gap.
Common causes. A Shopify OAuth token that's expired or partially scoped. A theme change that affected order-confirmation tracking. A subscription platform (Recharge, Bold) handling some orders through a path Klaviyo isn't watching. A store with multiple Shopify properties where only one is integrated.
How to fix. Settings → Integrations → Shopify. Check the connection status. Re-authenticate if needed. Then run a test order and verify Placed Order fires in Klaviyo within a few minutes. If only specific order types are missing (subscriptions, draft orders, third-party-app orders), the integration is healthy but a specific order path isn't covered — see the Recharge section below.
3. Recharge or another subscription platform isn't sending events
Subscription stores have a different problem: the initial order flows through Shopify and credits Klaviyo normally, but recurring subscription renewals flow through Recharge (or Bold, or Skio) and may not credit anything in Klaviyo at all.
How to verify. Pull a list of recent subscription renewals from Recharge. Cross-reference against Klaviyo's Placed Order events for the same period. If renewals aren't appearing in Klaviyo, the Recharge-Klaviyo integration isn't pushing them.
How to fix. In Recharge: Integrations → Klaviyo. Verify the integration is connected. Verify the event mapping is configured to send Placed Order events for subscription renewals (not just initial subscriptions). Trigger a test renewal and confirm the event appears in Klaviyo.
Why this trips people. Recharge's default integration setup sometimes only handles new subscriptions, not renewals — on the assumption that renewals are "automatic" and don't need email credit. For most operators, that's the wrong default; renewal revenue is real revenue and should be visible in the flow report.
4. Last-touch attribution is routing credit elsewhere
Klaviyo's attribution is last-touch within the five-day email window — but the user's last touch may not have been an email. If they clicked an email, then later clicked a Facebook ad, then bought, the credit may go to Facebook depending on which platform's analytics you're reading.
How to verify. Open a few orders that you'd expect a flow to have influenced. Look at the profile's activity timeline. Check whether there were other channel touches between the email click and the purchase. If yes, the credit is being split or claimed by the other channel.
How to think about this. Klaviyo's attribution is honest about what it knows: a profile clicked an email, the profile bought within five days. It doesn't account for Facebook or Google touches in between because those happen outside Klaviyo's data. GA4 sees the full chain and attributes accordingly, which is why GA4 and Klaviyo will always differ.
There isn't really a fix. This is how the system works. The right response is to triangulate — Klaviyo's attribution is one signal, GA4's is another, and the truth is somewhere in between. Don't pick the higher number because it makes the flow look better.
5. Currency mismatch is discarding order amounts
This is rare but worth knowing about. If Klaviyo's account currency is set to USD but your Shopify orders are denominated in EUR, GBP, or CAD, the order amount field may be discarded or converted incorrectly. The order count will be fine; the revenue total will be wrong.
How to verify. Account Settings → Currency. Compare to Shopify's settings. If they don't match, this is your problem.
How to fix. Set Klaviyo's currency to match Shopify's primary currency. If you sell in multiple currencies, the situation is more complex — you may need to use Shopify's converted USD value, or you may need to accept that Klaviyo's revenue numbers will be approximate.
6. Discount-code attribution is routing credit differently
If you use discount codes that are issued via Klaviyo emails, Klaviyo can attribute the resulting purchases through the discount code itself — even if the user didn't click the email. That's usually fine. The problem is the inverse: a code issued in an email used by a user who came in through another channel.
How to verify. Open the flow's discount code (if it uses one). Note the code. Search recent orders for that code. Check whether all of those orders attributed to the flow. If only some did, the others came in through different paths.
How to think about this. Discount-code attribution is a useful supplement, not a replacement, for click-based attribution. Use both signals.
How to verify the fix
After any change:
- Trigger a test order. Click an email from the affected flow. Wait at least a minute. Place an order in an incognito session using the linked email.
- Confirm the order appears in Klaviyo. Analytics → Metrics → Placed Order. Your test order should appear within a few minutes.
- Confirm the flow report reflects the attribution. Wait a few hours for Klaviyo's flow reports to update (they don't update in real time). Then check the flow's revenue line.
- Sample a few historical orders. Verify they attributed correctly under the corrected configuration.
Why this keeps happening
Attribution is the kind of system that's never quite right and never quite wrong. Different platforms make different choices about windows and last-touch rules; orders happen through multiple channels; integrations sit between systems that don't share a single source of truth. The result is a permanent reconciliation problem, and the operator's job is to know which numbers to trust for which decision.
The failure mode we monitor is the discontinuity — when a flow's attributed revenue suddenly drops from a steady number to near zero, or when Klaviyo's order count diverges materially from Shopify's. Those are integration symptoms, not measurement-philosophy debates, and they need to be caught fast. We watch for them hourly so you don't have to.
Frequently asked questions
- Why is revenue missing from my Klaviyo flow?
- The most common cause is the attribution window. Klaviyo attributes a purchase to the most recent email click within five days by default; purchases outside that window won't credit the flow. Other common causes: a broken Shopify integration that stopped sending Placed Order events, a discount-code attribution rule that routed credit elsewhere, or last-touch attribution sending credit to a different channel.
- What is Klaviyo's default attribution window?
- Klaviyo's default attribution window is five days for email and one day for SMS. A purchase that happens six days after an email click won't attribute to the email. You can change the window in Account Settings → Reporting, but changing it doesn't backfill historical attribution.
- Why does Google Analytics show more email revenue than Klaviyo?
- Two reasons usually. First, GA4 uses last-non-direct attribution by default, which can credit email when the user came back through direct traffic days later. Second, Klaviyo only attributes purchases tied to the original email click; GA4 attributes purchases tied to the source/medium chain. The numbers should differ — but not by more than 20-30% in normal conditions.
- Why is Recharge revenue not showing in my Klaviyo flows?
- Recharge subscription orders run through a different webhook path than one-time Shopify orders. If Recharge's Klaviyo integration isn't configured, recurring-subscription revenue won't credit Klaviyo flows. Check Recharge → Integrations → Klaviyo; the integration needs to be active and configured to send Placed Order events to Klaviyo for subscription renewals.
- Does Klaviyo attribute revenue to campaigns and flows differently?
- No — the same five-day email window applies to both. But because flows fire automatically and campaigns are scheduled, flow attribution tends to be more concentrated (a profile clicks an abandoned cart email and buys within a day) while campaign attribution is more diffuse (a profile sees a campaign and buys at some point in the next five days).
- Can a Klaviyo currency mismatch break attribution?
- Yes. If Klaviyo's account currency is set to USD but your Shopify orders come through in EUR or GBP, the order amount may be discarded or converted incorrectly. Check Account Settings → Currency. The currency setting should match your primary Shopify store currency.
- Why did my flow's attributed revenue drop to zero?
- A sudden drop to zero on a single flow almost always means an integration issue rather than performance. Either the flow stopped sending (check the metric chart on the trigger event), or the integration stopped sending Placed Order events back to Klaviyo (check Analytics → Metrics → Placed Order for recent activity).