What the Klaviyo Shopify app actually connects
The Klaviyo Shopify app is not a messaging tool on its own. It’s a data pipe: it takes the events, properties and catalog that live inside Shopify and pushes them into Klaviyo so your flows can trigger on something real, rather than a guess. Placed Order, Started Checkout, Viewed Product, Back in Stock, refund and fulfilment status all flow through this one connection. Get the connection wrong and every flow built on top of it inherits the fault, whether that’s a Welcome series that fires on the wrong trigger or a Back in Stock email sent to someone who already has the item on order.
This guide is for brands running $3M-$30M in revenue on Shopify Plus or a comparable paid subscription platform, where flow revenue is a meaningful enough line that a misconfigured sync costs real money. If you’re pre-revenue or running a single-founder store on Shopify’s basic plan, the stakes here are lower and a default install will likely serve you fine — this level of setting-by-setting detail isn’t necessary yet.
What you need before you install the app
Before you touch the install button, confirm three things. First, who owns the Shopify admin login that will authorise the app — it needs full store-admin access, not a limited staff account, or the sync will silently skip catalog or customer scopes. Second, whether you’re migrating from another email platform. If Mailchimp, Omnisend or a legacy ESP is still connected and sending, plan the cutover date before you install Klaviyo, so you’re never running two abandoned-checkout emails at once. Third, pull a list of every custom checkout field, subscription add-on and loyalty integration currently live on the store — anything Shopify doesn’t track natively (subscription renewal dates, loyalty tier, wholesale account flag) needs its own data source, because the Shopify app alone won’t carry it.
Step 1: Install the Klaviyo Shopify app from the Shopify App Store
Search “Klaviyo” in the Shopify App Store and install directly — never install through a third-party link, since Klaviyo’s own listing is the only one that receives Shopify’s official API updates. On install, Shopify prompts you to approve the permissions Klaviyo requests: customer data, order data, product catalog and (if you use it) subscription data. Approve all of them at this stage. Restricting scope now just means you’ll be back in this settings screen re-approving them later once a flow fails for lack of data.
Step 2: Connect Klaviyo to your Shopify data feed
Inside Klaviyo, go to Integrations and confirm Shopify shows as connected, not just installed — the two are different states. A store can show the app installed on the Shopify side while Klaviyo’s own integration screen still shows a pending or failed handshake, usually because the OAuth token expired mid-authorisation. If Klaviyo’s integration page shows anything other than “Connected” in green, disconnect and reconnect rather than troubleshooting around it; a partial connection here causes intermittent sync gaps that are far harder to diagnose two months in.
Step 3: Set your sync scope — customers, catalog, and historical orders
Klaviyo gives you a choice on first sync: pull historical order data or start fresh from the connection date. Pull the history. A customer who ordered eight months ago but not in the last sixty days is exactly the “lapsed” segment your win-back flow needs to see, and without historical sync that segment starts empty and stays empty until enough new data accumulates. Large catalogs and long order histories take longer to finish the initial backfill; if a segment count looks wrong on day one, check the sync status page before assuming a flow is broken.
Set the catalog sync to include product variants, not just parent products, and confirm “Back in Stock” is enabled at the variant level. A product showing “in stock” while the one variant a customer wanted is still out is the single most common Back in Stock complaint from Shopify merchants, and it traces straight back to this setting.
Step 4: Map SMS and email consent properties correctly
Shopify’s checkout consent checkbox and Klaviyo’s own sign-up forms create two separate consent records, and the app does not automatically reconcile them into one. Go to Klaviyo’s Shopify integration settings and confirm the “Sync Shopify’s marketing consent” toggle is on for both email and SMS, if you collect SMS consent at checkout. Then check your Klaviyo profile properties for email_marketing_consent and sms_marketing_consent on a handful of recent test customers — don’t assume the toggle worked; verify it against real profiles.
Legal exposure sits right here. Consent rules under TCPA, CAN-SPAM, GDPR and CASL vary by where your customer is and what they agreed to, and the specifics change. Confirm your checkout consent language and your Klaviyo suppression logic with counsel rather than relying on a default setting to be compliant out of the box.
Step 5: Turn on the core flows — Welcome, Abandoned Checkout, Post-Purchase, Back in Stock
Klaviyo ships pre-built flow templates the moment the integration goes live: Welcome Series, Abandoned Checkout, Browse Abandonment, Post-Purchase and Back in Stock. Switch on Abandoned Checkout and Post-Purchase first — across Klaviyo’s own benchmark set of more than 183,000 brands, automated flows account for 41% of total email revenue (Klaviyo, vendor-reported), and those two flows typically carry the largest share of that number because they trigger on the highest-intent moments: someone who started checking out, and someone who just bought.
Before you turn each flow live, go into Shopify’s own notification settings and disable Shopify’s native abandoned-checkout email if it’s still on. Running both sends the same customer two competing recovery emails within minutes of each other, which reads as spam regardless of how good either email is.
Step 6: Set flow trigger delays and filters
Every flow’s trigger has two parts worth checking individually: the delay before the first message sends, and the filter that decides who’s excluded. For Abandoned Checkout, add a filter excluding anyone who has a “Placed Order” event for the same cart contents since the checkout started — without it, a customer who abandoned, came back on their own, and bought anyway can still receive a “you left this behind” email for something they already own.
For Back in Stock, the trigger filter needs to check against your pre-order and back-order tag, not just raw inventory count. This is the step covered next, and it’s the one most teams miss.
The step most teams get wrong: back-order and pre-order sync
Here’s the failure that shows up most often once a Klaviyo Shopify app connection has been live for a few months: a product goes out of stock, customers subscribe to a Back in Stock alert, inventory is replenished via a pre-order or back-order mechanism rather than a straight restock, and Klaviyo fires the “it’s back” email to everyone on the waitlist — including customers who already placed a back-order for that exact item and are just waiting on fulfilment.
The Klaviyo Shopify app syncs on inventory quantity going from zero to a positive number. It does not, by default, distinguish “restocked and ready to ship” from “back-order slots opened, ships in six weeks.” If your store sells anything on pre-order or back-order — apparel drops, limited-run products, made-to-order goods — build a custom property or tag in Shopify that marks an order as a back-order, sync that tag into Klaviyo, and add it as an exclusion filter on your Back in Stock flow. Skip this and the flow sends an “in stock, buy now” message to someone who already bought and is annoyed to be told to buy again.
How to verify the integration is working
Don’t trust the green “Connected” status alone. Run a manual test: place a test order on your own store, abandon a checkout deliberately, and watch both events land in a test profile inside Klaviyo within a few minutes. Check that the order value, product names and discount code (if used) all show correctly on the Klaviyo profile timeline, not just that an event fired. Then check one real customer profile against Shopify’s own customer record side by side — same email marketing consent, same order count, same lifetime value. A mismatch on any of those three during verification means the sync has a gap worth finding now, before a flow sends on bad data.
Finally, use Pointerflow’s flow revenue calculator to sanity-check what your Welcome, Abandoned Checkout and Post-Purchase flows should be generating against your current traffic and order volume. If your actual Klaviyo flow revenue sits well below that estimate once the integration has been live a few weeks, the shortfall usually traces to sync scope, consent mapping, or a missing exclusion filter, rather than the flows themselves needing a rewrite.
This setup work is not really about the Klaviyo Shopify app in isolation. It’s a lifecycle flows problem: the app is only as good as the data feeding it and the filters governing who sees what, and that’s the layer where most of the revenue sits or leaks. If your flows are live but the numbers don’t match what the data should support, that’s the gap Pointerflow’s lifecycle flows service is built to close, and it’s exactly the kind of setup work we do for scaling brands moving off a default integration and onto one that’s actually configured for their catalog.
Sources
- Klaviyo, more than 183,000 brands: automated flows account for 41% of total email revenue (vendor-reported).