Loading tutorials…
Loading tutorials…
Shopify and Klaviyo plug together in 10 minutes, but the integration that drives 30%+ email revenue takes 2-3 hours of structured setup. Historical sync, back-in-stock, and identified browsing are where most stores miss the money.
Who this is forShopify store owners installing Klaviyo for the first time, or owners on Klaviyo whose data doesn't look right. If your store does $20K+/month and email is under 15% of revenue, the integration almost certainly has a gap — this tutorial finds it.
What you'll need
Step 1
Use the official Klaviyo: Email Marketing & SMS app. Do not install via copy-pasted snippets — the channel install is what drives event tracking.
In Shopify Admin → Apps → Klaviyo: Email Marketing & SMS → Install. Authorize the requested permissions (orders, customers, products, checkouts, draft orders).
When the OAuth flow returns you to Klaviyo, sign in or create your account. Klaviyo will auto-detect the store and start the connection.
On the "Integrations" screen in Klaviyo (Account → Integrations → Manage integrations → Shopify), confirm the integration shows "Connected" status with a green dot.
Do not skip this and try to copy-paste a snippet into theme.liquid yourself. The native channel install is how Klaviyo learns about Placed Order, Started Checkout, Viewed Product, and Fulfilled Order events automatically.
After install, give it 10-15 minutes for the first event to flow. Open Klaviyo → Analytics → Metrics — you should see "Placed Order" and "Started Checkout" populated.
Step 2
Klaviyo only pulls historical Shopify data when you explicitly enable it. Without this, predictive CLV and RFM segments will be broken for 90+ days.
In Klaviyo → Account → Integrations → Shopify → Sync settings.
Toggle "Sync historical data" to ON. Confirm the date range — default is "all available." Leave that.
Klaviyo will start backfilling Placed Order, Refunded Order, and Customer records. For stores under 50K orders, this completes in 6-24 hours. Larger stores can take 2-5 days.
Verify completion: Klaviyo → Analytics → Metrics → Placed Order → set time range to "All time." Compare order count to Shopify → Orders → All orders for the same range. They should match within 1-2%.
If counts diverge by more than 5%, you have a sync gap. Most common cause: deleted Shopify orders that Klaviyo can't reconstruct, or store-credit/draft-order edge cases. Open a Klaviyo support ticket with the gap detail.
Step 3
Embed the Klaviyo signup form on Shopify, then enable identified browsing so anonymous visitors become trackable as soon as they share an email.
In Klaviyo → Sign-up Forms → + Create New Form. Choose a popup or embed. Set the trigger: timer (4-8 sec is the sweet spot), exit intent, or scroll percentage.
In the form's Submit step, set "Add subscribers to list" to your primary marketing list (usually "Newsletter").
Configure double opt-in based on your jurisdiction: required for EU/Canada, recommended for US.
Publish. On the same screen, copy the embed snippet if you chose embed-type. For popup-type, no snippet needed — the channel install handles it.
Then enable identified browsing: Klaviyo → Account → Settings → Tracking → Enable cookie tracking + identified browsing.
This is the lever that lets browse-abandonment flows actually fire. Without it, Klaviyo only knows who someone is *after* they convert.
Step 4
Back-in-stock is one of the highest-ROAS Klaviyo features for product stores. Enable the channel + add the button to product pages.
In Klaviyo → Catalog → Back in Stock → Enable Back in Stock.
Choose the channel: Email + SMS (recommended) or Email only.
Klaviyo auto-creates a flow triggered by the 'Back in Stock' metric and a default email template. Customize the template before going live — the defaults are generic.
Add the back-in-stock button to your Shopify product pages. The channel install adds this automatically on most themes; if it doesn't appear on your theme, copy the button snippet from Klaviyo → Catalog → Back in Stock → Install button.
Test by setting a real product to 0 inventory in Shopify, clicking the back-in-stock button as a customer, then restocking. The email should fire within 5-15 minutes.
Step 5
Product blocks in emails pull from the Klaviyo catalog. Without the feed, dynamic recommendations and abandoned-cart product blocks render blank.
In Klaviyo → Catalog → Feeds → Shopify. The channel install should have created this automatically.
Verify the feed shows status 'Active' and the product count matches your Shopify catalog (within 24 hours of any catalog change).
If product count is far off, the feed sync was throttled — click 'Sync now' to force a refresh.
In the email editor, drop a Product Block. The Shopify catalog should appear in the picker. If it doesn't, the feed isn't wired and product blocks will render empty in production.
Step 6
Place a real test order, verify Placed Order fires, Customer record is created, and the right flow triggers.
In Shopify → Orders → Create order. Use a real email (a test inbox you control) and complete the order with a test payment gateway or 100% discount code.
Within 5-10 minutes, the order should appear in Klaviyo → Profiles → search by email. The profile should show: Placed Order event, order value, products, and any associated marketing consent.
In Klaviyo → Analytics → Metrics → Placed Order, the test order should appear in the realtime feed.
If you've already built a Post-Purchase flow (later tutorial), the test should trigger it. Check Flow Analytics → Triggered Profiles.
If the event never appears, the most common culprit is a broken Shopify webhook. Disconnect and reconnect the integration to refresh the webhook subscriptions.
Common mistakes
Connecting via the old private-app token instead of OAuth channel install
What goes wrong: Native event tracking stops working silently in 6-12 months when Shopify rotates the private-app schema. Stores report 'Klaviyo events suddenly stopped' — and the integration looks healthy on the dashboard.
How to avoid: Disconnect any private-app/API-key-based connection and reinstall via Shopify App Store → Klaviyo: Email Marketing & SMS. This is a 10-minute fix that prevents months of silent data loss.
Skipping historical order sync
What goes wrong: Predictive CLV is broken, RFM segments are empty, and any flow filter referencing past purchase behavior excludes 100% of pre-Klaviyo customers. Loses 20-35% of revenue-segment targeting power.
How to avoid: Account → Integrations → Shopify → Sync settings → enable historical sync. Wait 24-72 hours for the backfill, then verify Placed Order counts match Shopify.
Not enabling identified browsing
What goes wrong: Browse-abandonment flows can't trigger because Klaviyo doesn't know who's browsing. Stores lose ~10-15% of recoverable browse-abandonment revenue (typically $2K-15K/mo at $50K+ store size).
How to avoid: Account → Settings → Tracking → enable cookie tracking + identified browsing. Confirm in a logged-out browser: open a product page after subscribing, and your profile in Klaviyo should show "Viewed Product" within 60 seconds.
Pointing the signup form at the wrong list
What goes wrong: Subscribers go into a generic list that the Welcome flow doesn't watch. New signups never get the welcome series. The biggest single email-revenue source disappears.
How to avoid: Sign-up Forms → form → Submit action → confirm list name matches the trigger on the Welcome flow (usually 'Newsletter' or 'All Subscribers').
Letting the product feed go stale
What goes wrong: Product blocks in emails render blank or show out-of-stock items. Abandoned-cart emails reference products that no longer exist. Drops Placed Order rate from these flows by 30-50%.
How to avoid: Catalog → Feeds → Shopify → confirm sync status weekly. Re-sync after large catalog changes. If you bulk-edit products, force a sync immediately after.
Recap
Done — what's next
How to build a Klaviyo welcome series flow that actually converts
Read the next tutorial
Hand it off
The integration is the foundation — every flow you build later assumes this layer is clean. If you'd rather have a Klaviyo specialist do the install, validate the sync, and build the first three flows, that's typically $400-900 of one-time work at $14-16/hr. After that you can DIY the rest, or hand it off ongoing.
See specialist rates
No — the integration is free. Klaviyo charges based on contact count and SMS volume, not on which integrations you use. You can run the full Shopify integration on the free plan up to 250 contacts.
Three usual causes: (1) deleted Shopify orders (Klaviyo can't reconstruct them); (2) orders from a sales channel Klaviyo doesn't sync (like POS in some configurations); (3) the integration was installed after some orders were placed and historical sync was never enabled. Open a Klaviyo support ticket with the exact gap — they can usually backfill.
Connect Shopify first. Then export your Mailchimp list as CSV, import into Klaviyo via Lists & Segments → Create List → Upload File. Klaviyo will auto-merge profiles by email, attaching the Shopify order history to the imported subscriber. Doing it in the reverse order leaves duplicates.
No — the channel install handles both event tracking AND signup forms. You should see exactly one "Klaviyo" app in Shopify Admin → Apps. If you see two, deactivate the older one (usually a legacy "Klaviyo - Embed" app from 2019-2020).
Wait at least 24 hours after historical sync completes before launching revenue-driving flows. The first 24 hours have noisy data because the backfill is still propagating. Welcome flow can launch immediately for new signups — it doesn't depend on historical data.
Yes — marketing consent state syncs both directions. A customer who unsubscribes in Klaviyo is marked as not-accepting-marketing in Shopify, and vice versa. This is automatic and you should not try to manage opt-out state manually.
Klaviyo
Welcome flows are the highest-revenue flow in most Klaviyo accounts — typically 30-45% of automated email revenue. A bad welcome flow leaves 60% of that on the table. This is the build that captures it.
Klaviyo
Abandoned cart is the second-highest-revenue Klaviyo flow after welcome. A well-tuned cart flow recovers 8-12% of abandoned carts. A bad one recovers 1-3%. The difference is timing, filters, and discount strategy.
Klaviyo
Browse abandonment is where stores recover an extra 3-6% of email revenue most don't even know exists. Done wrong, it cannibalizes the cart flow. Done right, it's pure incremental revenue.
Klaviyo
DIY Klaviyo is a great call — until it isn't. Email should be 25-40% of e-commerce revenue. If yours is at 10-15%, the gap is your list isn't being worked. Here's the honest framework for when to hire.