Shopify and Klaviyo Integration: Setup, Sync, and Flows That Convert
The native Shopify-Klaviyo integration covers most ecom email needs. Setup, what syncs, key flows, and when to reach for iPaaS or custom.
Jump to a section
You can connect Shopify and Klaviyo three ways: through Klaviyo’s native Shopify integration, via an iPaaS for custom workflows, or with a custom build via APIs. For 95% of ecom stores the native integration is the right answer - it’s Klaviyo’s bread-and-butter use case, syncs everything you need for email and SMS marketing automatically, and powers their reputation as the ecom email tool.
Here’s how setup actually works, what flows you should build first, and where teams trip up.
The 60-second answer
Install the native Klaviyo Shopify integration. It syncs orders, customers, products, checkouts, refunds, and fulfillment events automatically, and gives you trigger access to all of them in flows. Setup is one OAuth click plus a few config decisions. You’d only reach for iPaaS if you’re doing something Klaviyo’s native integration doesn’t cover - like syncing data from a non-Shopify source into the same Klaviyo profile.
The three integration paths
Path 1: Native Klaviyo Shopify integration
The standard install. Klaviyo built and maintains it.
What you get:
- Orders - order created, placed, fulfilled, cancelled, refunded events available as flow triggers
- Checkout Started - the trigger that powers abandoned-cart flows
- Customer sync - Shopify customers become Klaviyo profiles with order history, lifetime value, and product preferences
- Products - full product catalog synced for dynamic product recommendations in emails
- Categories / Collections - synced for segmentation (“bought from Sale collection”)
- Refunds - trigger flows like “win-back after refund”
- Add to Cart - Klaviyo’s onsite tracking captures this (requires the Klaviyo onsite tracking snippet)
- Viewed Product - same as Add to Cart (requires snippet)
Pros: Native, deep, fast setup, maintained by Klaviyo, no per-event charge. The integration is rich enough that almost every ecom-Klaviyo use case is covered.
Cons: Some advanced data (custom Shopify metafields, line item properties for B2B/configurator products) requires extra setup. Two-way sync (Klaviyo → Shopify) is limited - Klaviyo can update Shopify customer notes/tags via flows but isn’t a full bi-directional sync.
Pricing: Free integration. Klaviyo charges by contact volume - Klaviyo Free up to 250 profiles, paid tiers scale from there based on active profile count.
Path 2: iPaaS workflows
Zapier, Make, n8n with both Shopify and Klaviyo connectors.
When this makes sense:
- You’re aggregating data from multiple sources (Shopify + Amazon + retail POS) into one Klaviyo profile
- You need to enrich a Klaviyo profile with data from a third system (loyalty platform, support tool) at the moment of a Shopify event
- You’re filtering complex conditions in middleware before triggering Klaviyo events
Pros: Cross-system flexibility.
Cons: You’re reinventing what the native integration does for free. Per-task pricing. Most teams don’t need this layer.
Path 3: Custom integration
Klaviyo’s Events API (POST events) and Shopify’s webhooks + REST/GraphQL APIs let you build any custom flow.
When:
- You have a non-standard Shopify customization (headless, subscription app, B2B configurator) where the native integration misses key data
- You’re doing high-volume real-time event tracking from custom storefronts
- You need fine-grained control over profile attribution and event payloads
Pros: Full control.
Cons: You’re rebuilding what Klaviyo provides for free.
What flows between Shopify and Klaviyo
Shopify → Klaviyo (the main direction)
- Customer creation/update
- Order events (placed, fulfilled, cancelled, refunded)
- Checkout Started (abandoned cart trigger)
- Product catalog (for dynamic recommendations)
- Collections and tags (for segmentation)
Onsite tracking → Klaviyo
- Active on Site (when a profile visits the store)
- Viewed Product
- Started Checkout
- Added to Cart (requires Klaviyo snippet)
Klaviyo → Shopify (limited)
- Update customer tags via flow actions
- Update customer notes via flow actions
- Discount code generation for use in campaigns
What Klaviyo doesn’t push back: inventory updates, product creation, order modification. Klaviyo is fundamentally a marketing tool, not an OMS.
Step-by-step: native integration setup
1. Install the Klaviyo integration in Shopify
In your Shopify admin: Apps → Visit Shopify App Store → search “Klaviyo” → Add app. OAuth-authorize.
Alternatively, in Klaviyo: Integrations → Add integration → Shopify. Either direction works.
2. Sync historical data
After installing, Klaviyo offers to sync historical orders and customers (typically the last 12 months by default; configurable). Run this. It backfills your Klaviyo profiles with prior order history, which is essential for any segmentation that depends on “ever purchased” / “last purchase date” / “LTV.”
The historical sync runs in the background - for a store with 100K+ orders, expect a few hours to a day.
3. Install the onsite tracking snippet
For Add to Cart, Viewed Product, and Active on Site events:
- In Klaviyo: Account → Settings → API Keys → Public API Key
- Install the snippet on your Shopify theme. Klaviyo’s docs walk through the exact theme.liquid edit.
- Once installed, anonymous browsers get tracked; the moment they identify (via a form fill or login), the events are merged into their profile.
For most modern Shopify themes, Klaviyo also offers an app block in the theme editor that installs the snippet automatically - check there first before manual edits.
4. Set up sign-up forms
Klaviyo’s sign-up forms (popup, embedded, flyout) capture email/SMS opt-ins on the storefront. Build forms in Sign-up Forms inside Klaviyo and assign them to your active list.
5. Build the foundational flows
The flows every Shopify-Klaviyo setup should have, in priority order:
- Welcome Series - triggered on list join. Typical 3-4 emails over 7-14 days introducing the brand
- Abandoned Cart / Abandoned Checkout - triggered on Checkout Started, filtered to “no Placed Order in last 4 hours.” Typical 2-3 emails over 24-72 hours
- Browse Abandonment - triggered on Viewed Product, no Add to Cart. One email after 1-3 hours
- Post-Purchase - triggered on Placed Order. Thank you, expectation setting, cross-sell after delivery
- Win-back / Lapsed Customer - segmented on “last order > 60-90 days ago”
- Sunset / Inactive - profiles with no engagement in 6+ months get removed to control costs
Klaviyo provides template flows for all of these. Start with templates, customize the copy.
6. Set up segments
Segments are dynamic groups based on profile properties and event history. Useful ones:
- VIP customers - total spent > $X or order count > Y
- Recent purchasers - placed order in last 30 days (suppress for sales emails)
- Engaged subscribers - opened or clicked an email in last 30 days
- At-risk customers - placed order 60-90 days ago, hasn’t purchased since
7. Test before going live
Send test emails to yourself for every flow. Trigger them with real test data (place a real test order, abandon a real cart). Verify dynamic product blocks pull the right products and pricing.
The flows that actually matter
If you’re building from scratch and want the 80/20 of revenue impact, focus on these:
Abandoned Cart - every ecom store’s #1 revenue-driving flow. Properly built, it recovers 5-15% of abandoned carts. Use a single-product hero image, urgency copy, and a discount on email 2 or 3.
Welcome Series with discount - converts new subscribers at 2-5x the rate of cold campaigns. Offer a discount in email 1, build brand context in emails 2-3, soft-sell collection or category in email 4.
Post-Purchase - review request after delivery, cross-sell email 7-14 days after delivery, win-back if no second purchase by day 60.
Browse Abandonment - lower volume but high intent. Triggers when someone views a product and doesn’t buy. One email is usually enough.
SMS abandoned cart - if you have SMS opt-in, an SMS after 1 hour and an email after 4 hours often outperforms email-only.
Common pitfalls
Historical sync limits
By default Klaviyo syncs 12 months of orders. If your store has been running longer and you want longer history (for LTV calculations, lifetime spend segments), enable extended history sync in the integration settings. This costs nothing but takes longer.
Klaviyo profile counts
Klaviyo’s pricing is based on active profiles. “Active” means “in your account, regardless of email or SMS consent.” Profiles include anyone who’s ever made a purchase or signed up - but also any anonymous browser who eventually became identified. Stores with high traffic can accumulate large profile counts fast.
Mitigation: build a sunset/suppression flow that removes profiles with 6+ months of no engagement and no recent orders. This keeps the active count down and your bill manageable.
SMS compliance
SMS consent is governed by TCPA in the US (and equivalents elsewhere). Explicit double opt-in is required. Klaviyo’s sign-up forms include the right consent language by default; don’t strip it. Sending SMS without proper consent is a real legal risk.
Discount code uniqueness
Klaviyo can generate unique Shopify discount codes per profile (for “your personal 10% off” emails). Setup requires connecting Klaviyo’s discount feature to Shopify and pre-staking a code pool. If you run out of codes, the flow sends the email without a code - disastrous. Monitor code pool depth.
Dynamic product blocks
Klaviyo can show “products you recently viewed” or “similar to what you bought” in emails. For these to work, the onsite tracking snippet must be installed correctly and your product catalog must be synced. Test these blocks with multiple profiles to make sure they render right.
Theme updates breaking tracking
When your Shopify theme is updated (or you switch themes), the onsite snippet may get stripped. Add a monitoring check - “no events from onsite tracking in 24h” → alert.
Order events vs. checkout events
A common confusion: “Placed Order” fires when payment is confirmed. “Checkout Started” fires when someone enters checkout. “Ordered Product” is the line-item event (one fires per product in the order). Pick the right one for your flow trigger.
Pricing
| Component | Cost |
|---|---|
| Klaviyo Free (up to 250 profiles, 500 email sends) | Free |
| Klaviyo Email plan (paid) | Starts ~$30/month for 500 profiles; scales with profile count |
| Klaviyo SMS plan (add-on) | Separate per-message pricing |
| Shopify (Basic to Plus) | $39 to $2,300+/month |
| Native integration | Free |
| iPaaS (if you need it) | $30-$300/month |
When to use which path
| Need | Recommended path |
|---|---|
| Standard ecom email flows | Native integration |
| SMS marketing alongside email | Native + Klaviyo SMS |
| Aggregating multi-channel customer data into Klaviyo | iPaaS |
| Custom Shopify app data → Klaviyo events | Custom + Events API |
| Headless storefront tracking | Custom + Events API |
| Loyalty platform data → Klaviyo segments | iPaaS or native partner integration |
Related reading
- Marketing workflow automation
- How AI personalizes marketing content
- How real-time personalization works in messaging
- Common marketing automation mistakes
- Stripe and Xero integration - companion for the finance side of ecom
- Monday and QuickBooks integration
- n8n automation guide
- Workflow cost calculator
- Automation Discovery Week
If your Shopify-Klaviyo setup is running but you suspect there’s revenue being left on the table - flows that should be more aggressive, segments you’re missing, post-purchase moments that aren’t instrumented - the Automation Discovery Week maps the gaps.