Connect Klaviyo to Shopify Without Breaking Your Budget

Ask how to integrate Klaviyo with Shopify and the honest answer takes about ten minutes. Install the app, approve the permissions, watch a progress bar fill. That part is easy.

What happens next takes longer to understand. Once the sync runs your profile count changes, your consent data changes, and you have a sender reputation whether you asked for one or not.

We set up Klaviyo accounts for DTC brands, and in our experience the install is never what goes wrong. Your expenditure and sender reputation  is. 

Short version, before you connect Klaviyo to Shopify:

  • Klaviyo bills on profiles it can email. The sync builds those profiles from people who checked out, not just from people who subscribed.
  • Accepts marketing in Shopify and subscribed in Klaviyo are two different fields. They disagree more often than you'd expect.
  • Authenticate your sending domain first. A cold domain plus a freshly synced list is how a first campaign lands in spam.
  • Suppression lowers the bill. Deletion is permanent, and it's not the same tool.

All four are decisions you can make on purpose, and the rest of this article is how.

How to Connect Klaviyo to Shopify

You need admin access to your store, a Klaviyo account and about ten minutes. There are three decisions in how you set up Klaviyo in Shopify, and only one of them is the install itself.

Install the Klaviyo App From the Shopify App Store

Install Klaviyo's app from the Shopify App Store and approve the scopes it asks for. It wants read access to customer and order data. Without that there's no order data to work with, and the integration is decorative.

Check it worked before you move on. Klaviyo's integrations tab should show Shopify with a connected status and a recent sync time, not an error.

Choose What the Integration Is Allowed to Sync

This is the screen that sets your bill. It's also the one people click through fastest.

That screen offers to sync your Shopify email subscribers to a list you choose. Turn it on and point it at your main list. That gives you one place where opt-in lives.

Onsite tracking is the second decision. Enabling behavioral events is what produces Added to Cart and Checkout Started, and those events are what an abandoned cart sequence needs in order to trigger at all.

Klaviyo's guidance on that subscriber sync is worth reading twice: keep the checkout subscription box unchecked by default. A pre-ticked box fills your list with people who never chose you, and you pay for every one of them.

Confirm the Sync Ran and What to Check

Give it time to backfill, then check four things rather than trusting the badge.

  • Open your metrics list. Placed Order should be arriving from Shopify with a recent timestamp against it.
  • Pick a customer who bought last week and open their profile. Their order history should be sitting there.
  • Write down your Klaviyo profile count and your Shopify customer count. You'll want both numbers in a minute.
  • Check the consent status on somebody you know subscribed.

That green Connected badge proves the API is talking. It proves nothing about your data, your consent or your inbox placement. Those last two checks are where the money sits, so the next two sections are about them.

What the Sync Just Did to Your Profile Count

Klaviyo bills on profiles it can email, which is the sentence that decides what the sync just cost you. Whether those profiles open, buy or ever asked to hear from you doesn't enter into it.

Why Your Klaviyo Number Doesn't Match Your Shopify Customer Count

Klaviyo's documentation is blunt about this. Any profile that can be emailed counts as an active one, and Klaviyo splits them into two groups.

First come subscribers, who filled out a signup form or otherwise opted in. Second come profiles added by general engagement: someone who placed an order or abandoned a checkout and typed an email address on the way through.

That second group is the sync. Klaviyo names Shopify directly as a source of both types, which is a vendor saying plainly that its integration creates billable contacts out of people who never subscribed.

Over in r/shopify, u/National-Public ran the arithmetic on a list of 11,000 billed contacts. Only 3,000 had opened anything in six months.

And I'm paying $325/month for all of them.

That thread drew 121 comments, which tells you how many operators recognize their own account in it. Note the word doing the damage: active. In Klaviyo an active profile means one it can email, not one that engages.

A reply from u/kiko77777 in the same thread describes what per profile pricing does to a team's week.

Yes, last year they made a change to charge per profile rather than per active profile. It's so bad, our marketing exec spends hours deleting contacts out of Klaviyo.

Per profile pricing rewards a small clean list. Your Shopify customer count has no opinion on that. If you want to size the gap before you start cutting, you can model what your flows could be worth in about thirty seconds.

Bot and Fake Signups Arriving Through the Sync

Some of those billed profiles were never people.

It happened to u/evilblackdog in r/Klaviyo, who watched a flood of fake addresses arrive and assumed Klaviyo had a bot problem. His own follow-up found the source somewhere closer to home.

I looked into it further and they were customer signups from Shopify. Klaviyo was just syncing them from there.

Bot signups hit the Shopify form. The sync did its job and carried them across, and each one landed as a billable profile with a real invoice attached.

That thread's best answer came from u/semperfii1987, replying to the same post, and it's the right one.

Enable double opt-in on the list that is connected to your store. It creates a bot more friction but quality of your subscriber list would be better and you don't have to pay Klaviyo for bot profiles.

What to Suppress or Delete Before It Becomes a Bill

Two buttons sound similar here and one of them is permanent.

Suppression is the tool you want. Suppressed profiles stop receiving marketing and stop counting toward your billing plan's profile count. A suppressed contact stays in the account for reporting, and the suppression lifts if that person resubscribes.

So the answer to the question underneath that Reddit thread is yes. Suppressing lowers the bill, and it doesn't just stop the sending.

Deletion is permanent and unrecoverable. Keep it for bots and typos. A customer who went quiet for six months deserves a suppression, not a delete.

Build the segment before you touch either button: no opens and no clicks in six months, no orders, and let it sit for a week so you can watch what it catches. List hygiene done in a panic costs revenue.

Who Counts as Subscribed After the Sync

Accepts marketing is a Shopify field. Subscribed is a Klaviyo consent state. Different actions set them, and they disagree without telling you.

Checkout Consent and What That Box Really Sets

A merchant posting as queenb on Klaviyo's community described the gap exactly.

when a customer clicks 'email me with news and offers' at checkout, they are not automatically subscribed to Klaviyo

That box sets accepts marketing to true in Shopify. By itself it subscribes nobody in Klaviyo. That happens only if you enabled the subscriber sync to a list, which is the checkbox from earlier.

So the profile arrives marked accepts marketing true and email never subscribed. It's billable either way, and it represents a person who did opt in sitting in a state that says they never did.

That mismatch costs you on both sides. Under GDPR, emailing somebody who never gave consent is a compliance problem. American senders work under the CAN-SPAM Act instead, which rests on honoring opt-outs rather than collecting consent up front. Suppression is how you honor them.

A customer who did opt in and landed as never subscribed is a quieter loss. You paid to acquire them, and now you're not sending to them.

Contacts Imported From Another Platform

If you brought a list with you, check its consent status before you send to it.

A Klaviyo partner posting as DavidSandel hit this on a client migration, where every contact landed with the wrong status.

all the contacts are coming in as 'Never subscribed' as their email consent status

These were people who had subscribed on the old platform. Their status didn't survive the import, and Klaviyo's guidance is to take caution when emailing that state. The fix is unglamorous. Re-import with the status mapped, and set imported contacts to subscribed only where you can prove they were.

Whether Your First Campaign Will Reach an Inbox

Your sync just handed you a list that is old, large and mostly unengaged, and that's what makes a first Klaviyo campaign different.

Your Shopify order confirmations have been landing for years, so it feels like your domain already has a reputation. It doesn't, not for marketing. Shopify sends those notifications on its own infrastructure.

So your sender reputation starts at zero on the day you send three years of customers their first campaign. Three years of goodwill, and none of it attached to your sending domain.

Authenticate the Sending Domain Before You Send Anything

Do this before the first campaign, not after the spam folder explains it to you.

A branded sending domain makes your mail come from your brand instead of Klaviyo's shared infrastructure. It's what lets you pass the checks that decide inbox placement. Klaviyo generates the DNS records, and your job is to verify them rather than assume your host applied them.

  • SPF lists the servers allowed to send on behalf of your domain.
  • DKIM signs each message so a receiver can tell it was not altered in transit.
  • DMARC publishes what you want inbox providers to do when the first two fail.

There's one alert worth putting in your calendar. In r/Klaviyo, u/Cristobal_Du ran into it and lost sales to it.

We've been seeing “Branded sending domain is disconnected” in Klaviyo and it's been a pain. Sometimes it seems to come back on its own, other times it just stays disconnected.

That alert means your DNS records stopped resolving the way Klaviyo expects. Check it on a schedule. Once you're sending, Google Postmaster Tools reports your spam rate and domain reputation back to you.

Warm Up Instead of Blasting the Whole List on Day One

Your urge after a sync is to send to everything it imported. Resist it.

Al Iverson has been writing about deliverability at Spam Resource since 2001, and he is blunt about what warming really takes: it isn't a one-and-done process. You ramp the volume, you watch what lands, and you keep watching.

Skip that and you land where a merchant posting as pacificcookiecompany landed on Klaviyo's own community:

I am new to Klaviyo and just sent my first campaign but it is likely that the majority went to spam

Nothing since has softened that advice. Gmail now asks bulk senders to authenticate their mail and to keep spam complaints under 0.3%, so an unwarmed list on a fresh domain fails faster now than it used to.

So start with people who bought in the last ninety days. Add the next tier once you can see opens landing. Warming is evidence for Gmail that somebody wants this.

Where Your Email Addresses Get Captured

Two surfaces feed Klaviyo: your checkout and your forms. They behave differently, and the sync only wires the checkout properly.

Embed a Klaviyo Form on Shopify

So your forms need wiring by hand. Turn on the app embed first, because without it nothing you build in Klaviyo will render on the store. Then build the form. Copy its embed code and paste that into your theme, or add Klaviyo's embedded form app block to the template.

A signup form is the only capture surface that produces unambiguous consent, which is why it's worth more per address than the checkout box, even though it converts fewer visitors.

How to Tell a Shopify Outage From a Real Break

Before you touch the integration, work out whose problem it is.

In r/Klaviyo, u/CrossBowKill answered a merchant whose integration had apparently dropped overnight.

Shopify Stores are facing issues because of problems on Shopifys side. Integration should sync as normal once again shopify api and stores are back up and running normally

So check Shopify's incident history before anything else. If the Admin or the API went down while your events stopped, it's recorded there by date. During an outage the events simply stop arriving, so Placed Order goes quiet and nothing triggers. Klaviyo looks broken while behaving perfectly.

Reauthenticate Instead of Reinstalling

Your instinct is to uninstall and start again. Resist that one too. Reinstalling re-runs setup on an account that already holds your data, and it resets the sync choices you made deliberately. Reauthenticate from Klaviyo's settings instead and let it resync.

Duplicate profiles are the other reason to slow down. Klaviyo's identity resolution merges profiles only when it can tie their identifiers together, so whether a resync merges or stacks depends on what your store sends with each event. A live list is an expensive place to find out.

Both of those instincts share a cause, and when the integration becomes a recurring argument rather than a one-off the problem is the system around it rather than the sync. That's the kind of thing our CRM consulting work exists to settle.

Where a Klaviyo Partner Fits Into This

Four decisions in this article set your bill, your consent state, your inbox placement and your capture surfaces. Klaviyo's onboarding asks you about none of them. They're not hard decisions once you know they exist, which is why most stores connect Klaviyo to Shopify and never revisit them.

That's the work our Klaviyo implementation service does at setup. Double opt-in gets configured where consent law requires it. DKIM and SPF get authenticated on day one, with a DMARC policy published next to them.

Across the 500-plus Klaviyo audits we've delivered, the same three things arrive broken. A profile count nobody chose, a consent state that contradicts the store, and a domain nobody authenticated. Being a Klaviyo Master Platinum Partner mostly means we've seen each one enough times to fix them in a set order. 

You get a list which engages, a domain that authenticates, and repeat revenue that compounds.

Learn more about Klaviyo setup here.

Klaviyo Shopify Integration FAQ

Is Klaviyo Free on Shopify?

There's a free plan and it's capped in the one place this article keeps circling. Klaviyo's free plan covers up to 250 active profiles and 500 email sends a month. Active profiles, again, means profiles it can email. A sync on a store with any trading history clears 250 on the first run, so treat free as a sandbox.

How Does Klaviyo Work With Shopify?

Knowing how to integrate Klaviyo with Shopify is one thing. What the integration does once it's live is the part that pays.

Klaviyo reads your store and writes back to it, so orders plus browsing events arrive as metrics on a customer profile that then trigger flows.

That's where segmentation pays. Once order data lands you can build a segment of people who bought twice and never came back, then send them a winback that knows what they own.

A welcome flow for new subscribers, an abandoned cart recovery for people who left, and a post-purchase sequence are the three that pay for the setup. Attributed revenue is how you tell whether they did.

How Do I Move Shopify Order Confirmation Emails to Klaviyo?

You don't, and the honest answer surprises people.

That's because all Shopify notification emails are sent through Shopify rather than Klaviyo.

So what you can move is the design. Build the template in Klaviyo, export the HTML, and paste it into the notification settings in your Shopify admin.

Your order confirmation keeps Shopify's deliverability and gains your branding. Repeat that export whenever you change the template, because the two don't stay in sync on their own.

Written By
Bogdan Mihalache
Founder & CEO
Bogdan Mihalache is Founder and CEO of Email Kong, a London retention marketing agency working with over 140 DTC brands. He sits on Klaviyo's Partner Advisory Council and has spent over 10 years building email marketing strategies.