Loading tutorials…
Loading tutorials…
WooCommerce is messier than Shopify for Klaviyo. The plugin works, but the catalog feed, event mapping, and consent settings need attention most guides skip. This is the setup that doesn't break in 60 days.
Who this is forWooCommerce store owners installing Klaviyo for the first time, or owners who installed and now see partial event tracking. WordPress hosting quality and theme conflicts cause about 30% of WooCommerce + Klaviyo issues — if you're on cheap shared hosting, expect more friction than a Shopify install.
What you'll need
Step 1
Use the official plugin (not a third-party connector). Authenticate via API key — WooCommerce doesn't have OAuth like Shopify.
WordPress Admin → Plugins → Add New → search "Klaviyo for WooCommerce." Install the one published by Klaviyo, Inc. — not third-party wrappers.
Activate the plugin. A new "Klaviyo" menu appears in the WP sidebar.
In Klaviyo (web) → Account → Settings → API Keys → Create Private API Key. Give it full read/write scopes for: Profiles, Lists, Events, Catalogs, Metrics.
Copy the key. In WordPress → Klaviyo → Settings, paste the Private API Key. Save.
Verify the connection status reads "Connected" with the right account name. If it says "Failed," your host is likely blocking outbound HTTPS to a.klaviyo.com — contact your host or move to better managed WordPress hosting.
Step 2
WooCommerce → Klaviyo catalog. Confirms products are syncing and the feed will hydrate Product Blocks in emails.
WordPress → Klaviyo → Settings → Catalog Sync → enable.
Choose what to sync: all 'Publish' status products is standard. Exclude private/draft.
In Klaviyo (web) → Catalog → Feeds → WooCommerce → confirm the feed appears with status "Active."
Force a first sync from the WordPress side: Klaviyo → Catalog → Sync now.
After 30-60 minutes, verify the product count in Klaviyo Catalog matches WooCommerce → Products. If counts diverge by more than 5%, the most common cause is products with malformed variants or missing image URLs — Klaviyo skips those silently. Run WP Klaviyo log to find skipped products.
Step 3
Confirm Placed Order, Started Checkout, Viewed Product, and Refunded Order events are all firing. WooCommerce needs each enabled explicitly.
WordPress → Klaviyo → Settings → Event Tracking. Enable: Placed Order, Started Checkout, Viewed Product, Refunded Order, Created Account.
Save. Each event sends server-side via the WP cron + plugin — this is more reliable than client-side firing, but it depends on WP cron being healthy.
Verify WP cron is healthy: install WP Crontrol (or check your managed host's cron dashboard). If WP cron is broken, Klaviyo events queue and never send.
Now place a test order. Within 5 minutes, the order should appear in Klaviyo → Profiles → search by email.
If Placed Order fires but Started Checkout doesn't, the most common cause is a checkout plugin (CartFlows, FunnelKit, Cartflows Pro) that overrides WC's standard checkout — Klaviyo can't hook into a custom checkout path without explicit wiring.
Step 4
WooCommerce historical sync is manual via CSV export. There's no one-click backfill like Shopify — plan a 2-3 hour migration session.
In WordPress → WooCommerce → Customers → Export. Choose all customers. Download CSV.
In WordPress → WooCommerce → Orders → Export (or use Advanced Order Export plugin). Export last 24 months of orders as CSV.
In Klaviyo → Profiles → Import → Upload CSV. Map columns: email (required), first/last name, accept marketing.
For orders, build a "Placed Order" event CSV: profile email + event timestamp + total value + items. Klaviyo → Profiles → Import → Events. This is tedious but necessary for predictive CLV to work.
If your order history is over 5,000 records, hire a specialist for the migration — manual CSV import past that size has a 30%+ malformation rate.
Step 5
WooCommerce checkout doesn't have a built-in marketing-consent checkbox the way Shopify does. You must add one — and make sure it syncs to Klaviyo as marketing consent.
WordPress → WooCommerce → Settings → Accounts & Privacy → enable "Allow customers to create an account during checkout" (if not already).
Install a checkout-fields plugin (Checkout Field Editor by ThemeHigh, or WooCommerce native via code) and add a checkbox: "Email me about new products and offers." Default unchecked (required for GDPR/EU).
In WordPress → Klaviyo → Settings → Consent Mapping → map your new checkbox field to 'Accepts Marketing.'
In Klaviyo's Sign-up Forms, use double opt-in for any EU/UK/Canada traffic. Single opt-in is fine for US-only stores but documents your consent decision.
Test: complete a checkout with the box checked. The Klaviyo profile should show 'Accepts Marketing: true.' Complete a second checkout with the box unchecked — profile should NOT be added to the marketing list.
Step 6
Place a test order, confirm event fires within 5 minutes, then set up alerting for missed events.
Use a real test email. Place a complete checkout with a 100% discount code.
Within 5-10 minutes: profile appears, Placed Order event recorded, marketing consent honored.
In WordPress → Klaviyo → Logs, confirm no errors in the last hour.
Set up alerting: Klaviyo → Account → Notifications → 'Event volume alerts.' Configure an alert if Placed Order drops below 50% of 7-day average for 24 hours. This catches WP cron failures before they cost you a week of data.
Re-test once weekly for the first month. WooCommerce stacks rot faster than Shopify because plugin updates can break webhook paths.
Common mistakes
Using a third-party WooCommerce-Klaviyo connector instead of the official plugin
What goes wrong: Third-party connectors (some sold as 'premium integrations') often lag Klaviyo API changes by 6-12 months. Events stop firing silently after Klaviyo deprecates an endpoint. Loses entire flows worth of data.
How to avoid: Use the official Klaviyo, Inc. plugin from the WP repository. Uninstall any third-party connector and re-validate event tracking.
Broken WP cron, ignored
What goes wrong: WP cron failures mean events queue in the WP database and never reach Klaviyo. Stores lose 8-15% of trackable events typically, and the integration looks healthy because the queue isn't visible in the Klaviyo UI.
How to avoid: Disable wp-cron in wp-config.php (`define('DISABLE_WP_CRON', true);`), then set up a real server cron job: `*/5 * * * * curl -s https://yoursite.com/wp-cron.php > /dev/null`. Most managed WP hosts have a UI for this.
Skipping the historical migration
What goes wrong: Predictive CLV, RFM segments, and any 'past 90 days' filters exclude every pre-Klaviyo customer. Win-back flows can't fire because Klaviyo doesn't know who used to buy from you.
How to avoid: Plan a one-time CSV migration: customers + orders + Placed Order events. Budget 2-4 hours for stores under 5K orders; hire a specialist if larger.
No GDPR consent mapping for EU/UK/Canada traffic
What goes wrong: Any EU subscriber on your list without explicit consent is a GDPR violation — fines start at 4% of global revenue. Even if not fined, you may be filtered as spam by Gmail/Outlook EU servers (drops open rate from 28% to 16%).
How to avoid: Add a marketing-consent checkbox to checkout. Map to Klaviyo "Accepts Marketing." Use double opt-in for any EU/Canada signups. Document consent timestamps.
Letting a caching plugin invalidate Klaviyo script loads
What goes wrong: Aggressive cache plugins concatenate or defer the Klaviyo script in a way that breaks tracking. Viewed Product and Started Checkout fire intermittently — often only on logged-in users.
How to avoid: In your cache plugin's Exclusion settings, exclude `*klaviyo*` and `*klaviyo.com*` from JS concatenation/minification/defer.
Catalog feed never validated
What goes wrong: Product blocks in emails render blank or show wrong images. Abandoned-cart emails lose 30-50% of their conversion lift.
How to avoid: Catalog → Feeds → WooCommerce → check status weekly. Manually re-sync after bulk product changes. Test a Product Block in an email draft before sending the campaign.
Recap
Done — what's next
How to set up the Klaviyo + Shopify integration the right way
Read the next tutorial
Hand it off
WooCommerce + Klaviyo has more moving parts than Shopify. A specialist who's done 50+ installs will spot the cron, cache, and consent landmines in a single audit. Typical full-install engagement is $500-1,200 at $14-16/hr, including historical migration. Ongoing monitoring is usually $300-600/mo.
See specialist rates
Only on the Business plan or higher. WordPress.com's lower tiers don't allow custom plugins. If you're on Personal or Premium, you'd need to migrate to self-hosted WordPress first.
Yes — for 30-60 days during cutover. Disable transactional/marketing flows in Mailchimp before activating Klaviyo flows to avoid double-sending. Watch your unsubscribe rate during the overlap; it'll spike if anything sends twice.
Most likely a custom checkout (CartFlows, FunnelKit, FluidCheckout, etc.) that bypasses WooCommerce's standard checkout hooks. Either revert to default WC checkout or wire the Klaviyo Started Checkout event manually via JS on your custom checkout page.
Partially. Placed Order fires on renewal payments, but subscription-specific events (paused, cancelled, upgraded) require custom webhooks or the third-party Klaviyo + WooSubs connector. If subscriptions are core to your business, plan an extra 4-6 hours of setup.
Switch hosts. Klaviyo's plugin is server-side and needs outbound HTTPS to a.klaviyo.com. If your host blocks this and won't whitelist, you can't use the plugin's server-side path. Common culprits: budget shared hosts, some firewall-heavy enterprise hosts. Move to Kinsta, WP Engine, Cloudways, or similar managed WP hosting.
Klaviyo
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.
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
The migration most stores screw up: dump the CSV, send a 'Hey, we moved!' email, watch open rate drop 40%, lose 90 days of segmentation work. Here's how to actually do it.
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.