Starter plan & up

Channels — Klaviyo (email + SMS)

How to read your Klaviyo campaign and flow performance in Ordinary, including attributed orders, the hourly engagement burst, and the per-day chart.

Ordinary Written by The Ordinary Team · Updated
On this page

Klaviyo campaign reporting requires Starter or higher and a connected Klaviyo account. See Connecting Klaviyo.

Once Klaviyo is connected, Ordinary pulls your campaigns, flows, and per-event engagement and cross-references everything against your store’s actual orders. Left nav → Channels → Klaviyo.

The list view

Two sub-tabs:

Campaigns sub-tab

One-shot email or SMS blasts scheduled for a specific send time. Filtered by your page-level date range (on send-time).

Columns:

  • Campaign — click to drill down
  • Sent — when it went out (in your shop time zone)
  • Recipients — Klaviyo’s own send count
  • Open Rate — unique opens / delivered, matching Klaviyo’s dashboard definition
  • Click Rate — unique clicks / delivered
  • Unsubs
  • Revenue — Klaviyo’s own attributed revenue (their attribution window, their click-ID)
  • Ordinary Orders / Ordinary Revenue — your selected attribution model’s view of the same campaign, computed against your store’s actual orders. The two revenue columns answer different questions; see “Why two revenue numbers?” below.

Flows sub-tab

Persistent automations (Welcome Series, Browse Abandon, etc). Same columns, with Flow and Created in place of Campaign and Sent. Flow metrics are cumulative since the flow was created — Klaviyo’s flow API doesn’t return per-day breakdowns, so the page date range doesn’t apply. A caveat line at the top of the tab explains this.

The detail view

Click any campaign or flow row.

Top — the metric cards

Cards for Revenue, Orders, Recipients, Open Rate, Click Rate, Total Opens, Total Clicks, Unsubscribes and Bounces. Revenue and the engagement cards are Klaviyo-reported; Orders is Ordinary’s count of attributed orders.

Hourly events chart

Per-hour bars showing opens, clicks, and revenue as they actually happened — sourced from the per-event Klaviyo ingest, not from cumulative daily snapshots. For a recent campaign you’ll see the classic engagement burst: huge bar on hour 0-2 after send, then sharp decay over the next 12-24 hours.

If the chart is empty, Ordinary hasn’t captured engagement events yet — that usually means the campaign is brand new and the next hourly sync hasn’t run, or you just connected Klaviyo and the backfill is still working.

Per-day engagement chart

Daily delta bars from send-day forward — what happened ON each day, not cumulative. For campaigns, the X axis is relative to send (“Send day, Day 1, Day 2…”) so the engagement decay curve reads left-to-right naturally. For flows, the X axis is calendar dates since flows fire continuously.

Days with zero engagement at the tail are trimmed automatically so the chart doesn’t stretch out across flat empty days.

Attributed orders modal

Click the Orders card to see the literal orders whose journey included this campaign or flow. The modal opens on Last touch, so its list lines up with the card you clicked, and you can switch between three modes:

  • Any touch — orders where THIS campaign was anywhere in the buyer’s journey. Most inclusive; an order influenced by multiple campaigns shows up under each.
  • First touch — orders where this was the FIRST Klaviyo touch in the journey.
  • Last touch — orders where this was the most recent Klaviyo touch.

Each row links through to the order’s detail page.

Why two revenue numbers?

The Klaviyo column and the Ordinary column will disagree, often substantially. This is expected — they answer different questions.

Klaviyo’s revenue:

  • Uses Klaviyo’s own attribution window (typically 5 days for email, configurable per merchant in Klaviyo)
  • Credits orders to the campaign based on Klaviyo’s click-ID alone
  • Doesn’t see orders that came in via a different channel after the click

Ordinary’s revenue:

  • Uses your selected attribution model (first-touch, last-touch, linear or time decay) across the full pixel journey
  • Cross-references against your Shopify orders — every order counted is a real, paid Shopify order
  • Reconciles to-the-cent with Shopify Sales reports

Use Klaviyo for delivery metrics (sends, opens, clicks). Use Ordinary for outcome metrics (orders, revenue, ROAS) and for comparing Klaviyo against your other channels.

Attribution model

The model selector at the top of the page affects the “Ordinary Orders” and “Ordinary Revenue” columns. It has the same four models as the main attribution report — First-touch, Last-touch, Linear and Time decay — and your choice is shared with the rest of Ordinary. (“Any touch” exists only inside the attributed orders modal.) See Attribution models explained.

What if engagement looks zero

  • Connection needs reconnecting — check Settings → Klaviyo. If it says “Reconnect required,” click Reconnect.
  • Campaign was just sent — engagement events sync every hour, so first events typically land within an hour or two of send. The backfill on connect brings in the last 90 days of engagement events.
  • Date range past your plan’s lookback — partial data badge will show on the page header.
  • Klaviyo deduplicates engagement aggressively — opens and clicks within seconds of each other on the same recipient collapse to a single event in Klaviyo’s view, which carries through to ours.

Did this answer your question?

Thanks for your feedback! 🙌

Related articles