WordPress Shopify Integration: Sell on Your WP Site
Five proven methods to add Shopify commerce to a WordPress site — Sell on WordPress plugin, Buy Button, ShopWP, headless Storefront API, subdomain hybrid. Costs, performance, SEO, decision quiz.
April 22, 2026·28 min read·
Listen to a short brief of this article
Hands-free while you multitask
Full article podcast:
Key Insights in 60 Seconds
Five methods, three budget tiers, one consistent rule: keep content in WordPress, keep commerce in Shopify. Skim the takeaways, then dive into the method that fits.
Five distinct integration paths exist — from a 10-minute plugin to a full headless Storefront API build.
Sell on WordPress is the new default — Shopify's free official plugin with server-rendered Gutenberg product blocks.
Year-1 cost ranges from $240 to $5,148 — Starter + shared hosting at the low end, headless dev time at the high end.
SEO depends on the method — plugin and Storefront API render server-side; Buy Button is JS-only and unindexable.
LCP impact spans 60–410 ms — async Buy Button is fast, ShopWP Pro is heaviest, headless SSR can even improve scores.
Checkout always lives on Shopify — even on Plus. Plan domain, redirects, and cross-domain analytics around it.
What You'll Learn
1When to integrate vs migrate vs stay separate
2All 5 integration methods, step by step
3Real Year-1 cost ranges for every approach
4SEO and Core Web Vitals impact by method
5Tax, shipping and checkout responsibility split
6Common pitfalls and how to avoid them
In This Article
Quick Match: Pick a Method in 30 Seconds
If you came here for one answer, here it is. Match your situation to a row, then jump straight to that method's section. Everything below this block is the "why" behind these picks.
If your business doesn't fit any row above, jump to the decision quiz — it weights skill, catalogue size, budget, design needs, and traffic stage to route you to one of three buckets.
Why Combine Shopify and WordPress at All
WordPress powers roughly 43% of all websitesVerified SourceW3Techs CMS UsageW3Techs · 2026View source , including most blogs, knowledge bases, and content-heavy brand sites. Shopify dominates serious commerce — over 4.6 million live stores and the highest-converting hosted checkout in the industry. The natural question for any growing WordPress business is: do I rebuild on Shopify, bolt on WooCommerce, or integrate the two?
For most teams, integration is the right answer. You already have authority, traffic, and editorial workflows on WordPress. You don't need to throw those away to start selling. You just need a clean way to expose Shopify products on the WP front-end, send shoppers to Shopify's checkout, and keep the data in sync. That's exactly what the five methods in this guide cover. If you're still weighing the platforms head-to-head before integrating, our Shopify vs WordPress comparison covers the cost and conversion math.
5 methods
From plugin to headless
$5–$5K
Year-1 cost range
60–410 ms
LCP impact spread
10 min–4 wk
Setup time range
The mental model: two platforms, one customer journey
Think of WordPress as the storefront of a building (windows, signage, content) and Shopify as the cash register and warehouse behind it. The customer browses on WordPress — reads your guide, sees a product card — then walks to the register (Shopify checkout) to pay. Inventory, orders, and money live in Shopify. SEO, content, and brand voice live in WordPress. Done well, the customer never notices the seam.
Three concrete scenarios where integration beats both alternatives:
Content brand selling merch. A 5-year-old WP blog with strong rankings adds a shop. WooCommerce would dilute focus and slow the site; full migration would torch the SEO. Sell on WordPress plugin or Buy Button is the right answer.
Agency with productized services. Marketing site on WP, but selling templates, audits, or training packages. A few Buy Buttons embedded on landing pages handle commerce in 30 minutes, no rebuild required.
Established Shopify store launching a content arm. Reverse case — Shopify on shop.brand.com, new content site on brand.com via WordPress. Storefront API powers a "shop the look" widget on blog posts.
The 5 Integration Methods at a Glance
Before we dive into each method, here's the side-by-side that helps you skip ahead:
Integration Methods Compared
Method
Setup
Skill
Min Plan
SEO
Best For
Sell on WordPress
~30 min
None
Starter $5
Yes (SSR)
Most WP sites — official, free, modern
Buy Button (JS)
~10 min
None
Starter $5
No (JS only)
Single embeds, landing pages, blog CTAs
ShopWP plugin
~1 hr
Low
Basic $39
Partial
Shortcodes, collections, search, third-party UX
Storefront API (headless)
1–4 wk
High
Any plan
Yes (custom)
Pixel-perfect UX, large catalog, dev team
Subdomain hybrid
~2 hr
Low
Basic $39
Yes (Shopify SEO)
Existing brand split: content + full store
Editorial scoring synthesised from official Shopify dev docs and public plugin reviews.
Pick Your Method in 5 Questions
If your situation doesn't obviously match a method above, run the quiz. It weights the answers that drive most regret in WP+Shopify projects: underestimating dev cost, picking a method that breaks SEO, or paying for flexibility you'll never use.
Which Integration Method Fits You?Five questions, one recommendation
Question 1 of 5
What's your technical comfort level?
Method 1: Sell on WordPress Plugin (Recommended Default)
Released in October 2025, the Shopify plugin for WordPress (also branded "Sell on WordPress") is Shopify's first-party answer to the integration question. It pairs a Shopify sales channel (installed in your Shopify admin) with a free WordPress plugin (installed in your WP admin). Once both are connected, Gutenberg gains three new blocks — Single Product, Product List, and Collection — and you can drop Shopify products anywhere in WordPress.
Critically, the markup is server-rendered. Google sees real HTML for product titles, prices, images, and descriptions, complete with Product schema. That makes Sell on WordPress the only zero-code method that actually preserves product-page SEO on your WP domain.
“Shopify's Sell on WordPress sales channel lets you sell products directly on your WordPress site. Built and supported by Shopify, this sales channel will seamlessly add products from Shopify to WordPress pages.”
In your Shopify admin, go to Settings → Apps and sales channels → Shopify App Store, search for "Sell on WordPress", and install it. This is free and adds a new channel to your Shopify dashboard.
2
Install the WordPress plugin
In WordPress, go to Plugins → Add New, search "Sell on WordPress" (publisher: Shopify), and install. Activate it. Requires WordPress 6.0+ and PHP 7.4+.
3
Connect the two
From the WordPress plugin settings, click Connect to Shopify. You'll be redirected to authorize the connection — sign into your Shopify admin and approve. The handshake takes ~30 seconds.
4
Pick which products to sync
Back in Shopify, open the Sell on WordPress channel. Select the products and collections you want available in WordPress. You can sync all products or curate a subset — useful if your full catalog has 1,000+ SKUs but only 50 belong on the WP site.
5
Add product blocks to pages
Edit any WordPress page or post. In the Gutenberg block inserter, search for Shopify. Drop in a Single Product block (pick by handle), Product List, or Collection. Configure layout, columns, and visible fields.
6
Test the checkout flow
Click Add to Cart on a published page. The cart drawer opens on your WP site. Click Checkout — you're redirected to Shopify's hosted checkout (yourstore.myshopify.com or your custom checkout domain). Complete a test order; verify it appears in Shopify Orders and the customer lands on a confirmation page.
Brand the checkout for continuity
Visitors will jump from yourdomain.com (WP) to checkout.yourstore.com (Shopify). Apply your logo, fonts, and colors in Shopify admin → Settings → Checkout → Branding. Add your favicon. With Checkout Extensibility (free on every plan since 2024), you can match the checkout to your WordPress design closely enough that most visitors won't notice the redirect.
Server-Rendered SEO
Real HTML, real schema
Product blocks output crawlable HTML with Product structured data. Google indexes prices, availability, and reviews on your WP URL — not on a hidden Shopify page.
Free Forever
No premium plugin tier
Both the Shopify channel and the WordPress plugin are free. You only pay for your Shopify plan and WP hosting. No per-product fees, no transaction surcharges.
Three Block Types
Single, list, collection
Drop a single product into a blog post, list 6 bestsellers on the homepage, or render an entire collection page with filters. Layout control matches the rest of Gutenberg.
Mobile-First Cart
Responsive drawer
The cart drawer adapts to mobile viewports automatically. Persists across page navigation via localStorage. Add items from multiple pages, check out once.
PCI Outsourced
Shopify owns compliance
Card data never touches your WP server. Shopify is PCI DSS Level 1 certified — the highest tier. Your liability is zero on the payments side.
Unified Analytics
All orders in Shopify admin
Sales attributed to the Sell on WordPress channel show up alongside other channels (online store, POS, social) in your Shopify reports. One source of revenue truth.
Limitations to know before you commit
Sell on WordPress doesn't yet support Shopify Functions (custom discount logic), B2B catalogs, or markets-specific pricing on the WP side. Subscription products work but require a Shopify subscription app — the basic block doesn't render the recurring billing UI. Multi-currency works only if you've enabled Shopify Markets. For B2B-heavy or subscription-heavy catalogs, choose ShopWP or the Storefront API instead.
Method 2: Shopify Buy Button (Single Embeds)
The Buy Button channel predates Sell on WordPress by years. It's still useful — particularly when you want a single product or a small collection embedded inline within an article, not as a dedicated shop page. The setup generates a self-contained <script> tag you paste into any HTML, including a WordPress Custom HTML block, a page builder element, or even a third-party email tool.
Performance is solid: the BuyButton.js library plus its JS Buy SDK dependency load asynchronously (roughly 80 KB gzipped combined) and the card renders after first paint. Async loading means it doesn't block your LCP. The downside is SEO — because the product is JS-injected post-load, search engines see an empty placeholder. Use Buy Button for conversion, not for organic discovery.
Setup in Five Steps
1
Install Buy Button channel
In Shopify admin, install the Buy Button channel from Settings → Apps and sales channels.
2
Generate an embed
Click Buy Button channel → Create a Buy Button. Pick a product or collection. Choose layout (basic, classic, or full view), customize colors, button text, and cart behaviour. Preview live before generating.
3
Copy the code
Click Next → Copy code. You get a single <script> tag containing the BuyButton.js initialization with your store URL and product ID.
4
Paste into WordPress
Open the WordPress page or post. Add a Custom HTML block (or use Classic Editor's Text tab). Paste the snippet exactly. Save and preview — the product card renders inline.
5
Test cart persistence
Add the same product on two different pages. Click Add to Cart on both. Open the cart drawer — both items should appear (cart state persists in localStorage). Test checkout end-to-end.
The generated code looks roughly like this (truncated):
Sample Buy Button embed (paste into Custom HTML block)
Use Buy Button when you want a single product call-to-action inside a long-form blog post ("Buy this guide", "Get the workshop ticket") without the visual weight of a full Gutenberg product block. It's also the right tool for embedding in email tools (ConvertKit, Substack) and third-party landing page builders that don't run WordPress. For everything else on WP, use Sell on WordPress.
Method 3: ShopWP Plugin (Shortcodes & Power Users)
ShopWP (formerly WP Shopify) is the most established third-party Shopify-WordPress plugin, in active development since 2017. Its appeal is breadth: you get shortcodes for every page builder, dynamic collection pages with sorting and filtering, customer accounts inside WordPress, and template overrides for every product element.
The trade-off is performance. ShopWP renders heavier React components than the Sell on WordPress plugin, and its initial bundle is the largest of any method covered here. Median LCP impact in our testing was ~410 ms — three times the Sell on WordPress plugin. Mitigate this with WP Rocket or similar caching, and lazy-load product grids below the fold.
Setup in Five Steps
1
Install ShopWP
Free version from WordPress plugin directory (Plugins → Add New → search ShopWP). Pro license sold separately at wpshop.io for $199/yr (single site) with annual updates.
2
Connect to Shopify
ShopWP requires a Storefront API access token, not the standard sales channel. Create one in Shopify admin → Settings → Apps and sales channels → Develop apps → Create app → Enable Storefront API. Paste the token into ShopWP settings.
3
Sync products
Click Sync Now. ShopWP pulls all products into a local WordPress cache for fast rendering. Re-sync nightly via cron or trigger on Shopify webhooks (Pro feature).
4
Drop shortcodes anywhere
Use [shopwp items='products'] for a grid, [shopwp items='collection' slug='summer-2026'] for a collection page, [shopwp items='product' id='123'] for a single product. Works in Gutenberg, Elementor, Divi, Beaver Builder.
5
Customize templates
Pro license includes template overrides — copy ShopWP's React components into your theme and edit. Requires JavaScript skills. Without overrides, you're limited to the default UI plus CSS tweaks.
Pro vs Free: what you give up
Free ShopWP renders products and supports cart/checkout but caps at 100 products synced, no collections, no webhooks (manual re-sync only), no customer accounts inside WP. Pro removes those limits and unlocks template overrides. If you need any of those, budget $199/yr from day one. If you don't, the free version often loses to the official Sell on WordPress plugin.
Method 4: Headless via Storefront API (Maximum Control)
The headless route is what serious dev teams pick when none of the above is flexible enough. Instead of relying on a plugin to render product cards, you write your own queries against the Storefront API and inject the data into WordPress templates (PHP), a Gutenberg block (React), or a separate front-end framework like Next.js that renders WordPress + Shopify together.
Why pay for that complexity? Three reasons: complete control over markup (good for unusual layouts and accessibility audits), server-side rendering on whatever stack you choose (better LCP than any plugin), and the ability to mix Shopify product data with WordPress custom fields, ACF data, or external APIs in the same template.
“The Storefront API is a GraphQL API that requires an access token associated with a specific Shopify store. You can call the API from any HTTP client. The Shopify API is framework agnostic. You can build using your framework of choice, such as Hydrogen, Next.js, Vue, and more.”
Shopify Developer Documentation — Getting started with the Storefront API — Shopify.dev · View source (shopify.dev)
Option A: PHP fetch directly from WordPress templates (simplest). Option B: Custom Gutenberg block in React (more flexible). Option C: Next.js or Astro front-end consuming both WP REST API and Shopify Storefront API.
3
Write GraphQL queries
Storefront API is GraphQL-only. Query products by handle, collection, or search. Use Shopify's GraphiQL explorer to build and test queries. Cache responses server-side (transients in WP, ISR in Next.js) to avoid hitting rate limits.
4
Render products server-side
Inject query results into your template before sending HTML to the browser. Include Product structured data in the output. This is what makes the headless approach SEO-friendly — Google sees real HTML, not React placeholders.
5
Build a cart with the Cart API
Storefront API includes a Cart API for adding line items, updating quantities, and generating a checkout URL. Persist cart ID in a cookie or localStorage. Hand off to Shopify's hosted checkout when the customer is ready to pay.
6
Set up webhooks for inventory
Subscribe to products/update and inventory_levels/update webhooks. When stock changes in Shopify, invalidate your WP cache so customers don't see outdated availability. Without this, you'll oversell.
A minimal GraphQL query looks like this:
Sample Storefront API query — fetch a single product by handle
Use Hydrogen if you're building a separate front-end
If you're going headless and willing to render outside WordPress entirely, Shopify Hydrogen (built on Remix) is the official React framework for headless commerce. It handles the cart, checkout flow, and SEO patterns out of the box, then proxies WordPress content via the WP REST API for blog and editorial pages. This is the "serious brand" pattern in 2026 — Allbirds, Glossier, and many others run variations of it.
Maintenance cost is the hidden line item
Headless looks great in launch demos, but it's also the method with the highest ongoing cost. Storefront API versioning rotates quarterly — you must upgrade queries or risk breakage. Cart API gained a major rewrite in 2023 and 2024 will see another. Budget at least 4 dev hours per quarter to keep the integration current. Plugin-based methods upgrade automatically.
Method 5: Subdomain Hybrid (Two Apps, One Brand)
The subdomain hybrid is technically not an integration — it's a deliberate split. Your WordPress site at yourdomain.com handles content, blog, and SEO. Your Shopify store at shop.yourdomain.com is a full Shopify Online Store 2.0 with theme, collections, search, and checkout. The two share a brand and navigation but render entirely separately.
Why pick this over the integration methods? Because you avoid every plugin's limitations. You get full Shopify SEO (collections, faceted search, blog if you also run one in Shopify), full theme freedom, and zero performance overhead on either side. The cost is brand fragmentation: visitors notice when shop.brand.com looks slightly different from brand.com, and analytics requires cross-domain tracking.
Setup in Four Steps
1
Point a subdomain to Shopify
In your DNS provider (Cloudflare, Route 53), create a CNAME record from shop.yourdomain.com to shops.myshopify.com. In Shopify admin → Settings → Domains → Connect existing domain, add shop.yourdomain.com.
2
Apply your brand styles in Shopify
Pick a Shopify theme close to your WP design — Dawn, Refresh, or a premium theme. Match fonts, colors, and header layout. Replicate the WP navigation in Shopify so customers don't feel lost.
3
Add cross-platform navigation
WordPress menu links to shop.yourdomain.com/collections/all and other key Shopify pages. Shopify navigation links back to yourdomain.com/blog and other WP content. Make the relationship explicit.
4
Configure cross-domain analytics
GA4 → Admin → Data Streams → your stream → Configure tag settings → Configure your domains. Add both yourdomain.com and shop.yourdomain.com. This makes a customer who reads a blog post and then buys appear as one user, not two.
When the hybrid is the only honest answer
If you're spending more than 4 hours a month maintaining a Shopify-WordPress integration plugin, or you've outgrown the limitations of any single method, the hybrid is the cleanest reset. You stop fighting the integration and run two world-class apps under one brand.
Video Walkthrough: Sell on WordPress in Action
For a visual walkthrough of the official Sell on WordPress plugin from install to first sale, this 12-minute tutorial covers exactly what we describe in Method 1:
How To Embed Shopify Products on WordPress (New 2026 Plugin)Step-by-step setup of the official Sell on WordPress plugin: install both sides, connect, sync products, drop the Gutenberg block, and complete a test checkout.
Cost Calculator: What You'll Actually Pay
The interactive calculator below estimates your monthly Shopify costs based on revenue, plan, and order volume. Add your WordPress hosting (typically $5–$30/mo for managed) and the one-time cost of your chosen integration method to get total Year-1 spend.
Shopify Cost Calculator
Enter your estimated monthly numbers to see the true cost across all Shopify plans.
BasicBest
$489
per month
Plan fee$39
Processing$350
Apps$100
% of Revenue4.9%
Grow
$535
per month
Plan fee$105
Processing$330
Apps$100
% of Revenue5.3%
Advanced
$809
per month
Plan fee$399
Processing$310
Apps$100
% of Revenue8.1%
Plus
$2,675
per month
Plan fee$2300
Processing$275
Apps$100
% of Revenue26.8%
* Estimates based on Shopify Payments rates. Actual costs may vary based on location, currency, and negotiated rates. Does not include theme, domain, or developer costs.
For a stacked view of Year-1 TCO across all five methods at the same revenue level:
Assumes Basic plan ($39/mo), $15/mo managed WP hosting, and one-time dev costs. Excludes transaction fees and ad spend.
Year-1 Cost Breakdown by Method
Method
Shopify (Basic)
WP hosting
Plugin/Dev
Year-1 total
Sell on WordPress
$468
$180
$0
$648
Buy Button (Starter plan)
$60
$180
$0
$240
ShopWP Pro
$468
$180
$199
$847
Storefront API (custom dev)
$468
$180
$4,500
$5,148
Subdomain hybrid
$468
$180
$800
$1,448
The crossover at $1,600/month
Buy Button on Starter ($5/mo + 5% transaction) beats Sell on WordPress on Basic ($39/mo + 2.9%) until you're processing roughly $1,600/month in card volume. Above that, the lower processing fee on Basic saves more than $34/mo. Most serious sellers should plan to be on Basic by month 3.
Performance Impact on Core Web Vitals
Adding a commerce layer to WordPress always carries some performance cost. The numbers below come from lab measurements with WebPageTest on a 4G profile, averaging three reference WordPress themes (Astra, Kadence, GeneratePress) loading a single product card above the fold.
Lab-tested median LCP impact, 4G throttling, mobile viewport. Lower is better.
Three concrete things to do regardless of method:
Lazy-load product blocks below the fold. If a product appears in the second viewport or lower, defer its render until the user scrolls. Sell on WordPress supports this in block settings; Buy Button needs the loading="lazy" pattern.
Use a managed WordPress host with edge caching. Kinsta, WP Engine, and Cloudways all serve cached HTML from the edge. This eliminates the dynamic PHP cost so Shopify's contribution becomes the only variable.
Cache Storefront API responses. If you go headless, cache GraphQL responses for 5–15 minutes via WordPress transients or your CDN. A second request for the same product should never hit Shopify.
SEO: Don't Lose the Traffic You Already Earned
WordPress SEO is its own discipline — you have Yoast, Rank Math, schema plugins, and a decade of practice. None of that goes away when you add Shopify. What changes is product-page indexability, and the answer depends entirely on the integration method.
SEO Behaviour by Method
Method
Indexable on WP URL?
Product schema?
Recommended canonical
Sell on WordPress
Yes (SSR HTML)
Yes (auto)
WP URL (canonical to itself)
Buy Button
No (JS only)
No
WP URL is content; Shopify URL has the product
ShopWP
Partial (depends on cache)
Manual setup
WP URL with manual schema
Storefront API (SSR)
Yes (custom HTML)
Yes (custom)
WP URL (canonical to itself)
Subdomain hybrid
Yes (Shopify SSR)
Yes (auto)
Shopify subdomain URL
Avoid the duplicate content trap
If the same product is reachable at yourdomain.com/shop/widget (via WP plugin) andyourstore.myshopify.com/products/widget (via Shopify's online store), Google sees two pages with identical content. Pick one as canonical and 301-redirect the other. The simplest fix: in Shopify admin → Sales channels, disable the Online Store channel for products that are sold on WordPress. They'll still be available via the Storefront API and embedded blocks but won't have a public Shopify URL.
Tax, Shipping & Checkout: Who Owns What
This split is non-negotiable because Shopify's checkout is a closed system. You can apply your branding via Checkout Extensibility, you can add scripts on Shopify Plus, but you cannot embed checkout in a WordPress iframe or process payments on the WP server. PCI compliance and chargeback liability stay with Shopify, which is exactly what you want.
Payments — Shopify
Shopify Payments or third-party gateway
All card processing happens in Shopify's PCI-compliant checkout. Use Shopify Payments (powered by Stripe, no additional transaction fee) or a third-party gateway (PayPal, Authorize.net, etc.) — though third-party gateways add 0.5–2% extra on lower-tier plans.
Tax — Shopify
Shopify Tax handles US, EU, UK
Shopify Tax automatically calculates US sales tax (with state-by-state nexus tracking), EU VAT (including OSS), UK VAT, GST in Australia, Canada, and India. Free until your store hits $100K USD in annual sales (US threshold; EU/UK have local equivalents), then a small per-order fee applies up to a calendar-year cap.
Shipping — Shopify
Calculated rates + label printing
Shopify calculates shipping at checkout based on weight, destination, and your configured rates (flat, calculated, or carrier-rate). Print labels through Shopify Shipping (USPS, UPS, DHL, Canada Post) at discounted rates. WordPress does not touch shipping logic.
Inventory — Shopify
Single source of truth
Stock levels, variants, locations, and inventory adjustments all happen in Shopify admin. Integration plugins read inventory in real time (or via webhook updates) so WordPress never displays outdated availability — provided your cache is short enough.
Order notifications — Shopify
Confirmation, fulfillment, refund emails
Customer order emails come from Shopify. Customize templates in Shopify admin → Settings → Notifications. They send from the email address configured in Shopify, not from WordPress. Tag rules can route specific orders to specific staff.
Customer accounts — Shopify
Login on Shopify, optional WP sync
By default, customer accounts live in Shopify (myshopify.com or your custom domain). They log in to view order history. If you want unified login with WordPress, use a third-party SSO plugin or build it via the Customer Account API on headless setups.
B2B, Subscriptions, Memberships and Multi-Currency
WordPress sites rarely sell only simple physical products. If your catalogue includes any of the four models below, the default Sell on WordPress plugin is not always enough. Here is how each maps to the integration methods covered above.
Specialised Use Cases — Method & App Recommendations
MemberPress, Restrict Content Pro, Paid Memberships Pro
Multi-currency / international
Sell on WordPress or Storefront API
Basic + Shopify Markets
Shopify Markets, Markets Pro for cross-border duties
Digital products / downloads
Sell on WordPress or Buy Button
Starter ($5) and up
Digital Downloads (Shopify), SendOwl
Memberships are usually a hybrid, not an integration
WordPress LMS plugins (MemberPress, LearnDash, MemberMouse) own the gated content layer. Shopify owns the transaction. The cleanest pattern: customer buys membership on Shopify, a webhook fires to a small middleware (Zapier, Make, or a custom WP endpoint) that creates the matching MemberPress account. Avoid trying to render gated content from Shopify — WordPress is much better at that part.
For B2B specifically, do not try to retrofit B2B logic onto a Sell on WordPress block. Shopify Plus B2B brings company accounts, customer-specific catalogs, NET payment terms, and quote requests — none of which surface through the WordPress plugin. Either use the subdomain hybrid (B2B portal at b2b.yourdomain.com) or build a headless front-end that queries the Storefront API with company-specific authentication.
Most WordPress sites in 2026 still run on a page builder rather than pure Gutenberg. Compatibility with your editor of choice can be the deciding factor between two otherwise equal methods.
Method × Page Builder Compatibility
Builder
Sell on WordPress
Buy Button
ShopWP
Storefront API
Gutenberg (block editor)
Native blocks
HTML block
Shortcode block
Custom block
Elementor
Shortcode widget
HTML widget
Native widget
Custom widget (dev)
Divi
Shortcode module
Code module
Shortcode module
Custom module (dev)
Bricks Builder
Shortcode element
Code element
Shortcode element
Custom query loop
Beaver Builder
Shortcode module
HTML module
Shortcode module
Custom module (dev)
Quickest answer for non-Gutenberg sites
If you do everything in Elementor, Divi, or Bricks and you don't want to learn Gutenberg blocks, ShopWP is the most natural fit because of its first-class shortcode support and dedicated widgets. Sell on WordPress works everywhere via shortcodes too, but you lose some of its visual configuration UX outside the native block editor.
Migrating from WooCommerce to a WordPress + Shopify Setup
This is the most common entry path into WordPress + Shopify integration: a site that started on WooCommerce, hit performance or feature limits, and now wants Shopify's checkout while keeping the WordPress brand and SEO equity. The migration itself is well-trodden, but the order of operations matters.
1
Export WooCommerce data
From WordPress admin → WooCommerce → Status → Tools, run a CSV export of products, customers, and orders. For larger catalogues use the official Product CSV Importer/Exporter or a paid tool like LitExtension. Verify image URLs are public — Shopify will fetch them during import.
2
Import into a fresh Shopify store
Install the free Store Importer app in Shopify admin. Upload the WooCommerce export. Map product fields (especially variants and SKUs). Importer creates products, customers, and historical orders. For 500+ products, a paid migration via Cart2Cart or LitExtension typically saves 8–20 hours of cleanup.
3
Audit and clean
Manually review collections, tags, image quality, variant pricing, and SEO meta fields. Re-add anything that didn't survive the export — collection rules, customer notes, custom fields. Set up Shopify Tax, shipping zones, and Shopify Payments before going live.
4
Install your integration method on WordPress
Pick Sell on WordPress (default), Buy Button (light), or another method from the table above. Add product blocks/embeds to the same WordPress URLs that previously held WooCommerce products to preserve SEO equity.
5
Set up 301 redirects
Map old WooCommerce URLs to new Shopify-backed WP pages (or to Shopify product pages if subdomain hybrid). Use the Redirection plugin in WordPress for the WP-side rewrites. Configure 301 redirects in Shopify admin for any URLs you want pointed at the Shopify domain.
6
Disable WooCommerce checkout
Once orders are flowing through Shopify, deactivate the WooCommerce Checkout endpoint and remove the cart/checkout pages from WordPress navigation. Keep WooCommerce installed in read-only mode for 90 days so historical order data stays accessible while you reconcile accounting.
Do not run two checkouts in parallel for more than a week
Some teams try to A/B test WooCommerce checkout against Shopify checkout simultaneously. This corrupts inventory (two systems decrementing stock independently), confuses customers, and doubles tax/accounting work. Pick a cutover date, communicate it to staff, and switch in a single deploy. If you must overlap, restrict each checkout to a different product category and never to the same SKU.
Common Pitfalls and How to Avoid Them
Eight failure modes that come up over and over in WP+Shopify projects, with the fix for each:
Buy Button used as primary catalog
Symptom: Products don't rank in Google despite a strong domain. Fix: Switch to Sell on WordPress for SSR HTML. Reserve Buy Button for inline CTAs.
Cross-domain analytics broken
Symptom: All Shopify revenue shows as direct/none in GA4. Fix: Configure GA4 cross-domain tracking. Add both yourdomain.com and shop URL to the linker.
Duplicate content (WP + Shopify URLs)
Symptom: Same product indexed at two URLs, neither ranks well. Fix: Set canonical to the WP URL, hide Shopify product pages from the Online Store channel, or 301-redirect.
Headless built without webhook updates
Symptom: Customers buy products that show in stock but aren't. Fix: Subscribe to inventory_levels/update webhook. Invalidate cache on every change.
Checkout branding inconsistent
Symptom: 30%+ checkout abandonment after redirect. Fix: Use Checkout Extensibility (free) to apply WP brand colors, fonts, and logo. Match the experience.
Plugin auto-updates breaking layout
Symptom: Product blocks render differently after a Sell on WordPress release. Fix: Disable auto-updates on the plugin. Test major releases on a staging site first.
Two payment processors, double fees
Symptom: Running WooCommerce + Shopify, paying Stripe twice plus Shopify's 2% surcharge. Fix: Pick one platform for transactions. Disable WooCommerce checkout if you've added Shopify.
No staging environment
Symptom: Plugin update on Friday 5pm takes the live shop offline. Fix: Use a staging site (most managed WP hosts include one). Test plugin and theme updates there first.
Troubleshooting: When the Integration Breaks
Before contacting support or rebuilding the integration, walk this checklist. It catches roughly 90% of post-launch issues that look like bugs but are actually configuration drift.
Common Failures and 5-Minute Fixes
Symptom
Most likely cause
Fix
Products not syncing to WordPress
Sales channel not added to product, or webhook missed
In Shopify admin, open the product → Sales channels → enable Sell on WordPress / ShopWP. Force a manual re-sync.
Add to Cart does nothing
JavaScript console error — usually a CSP header blocking sdks.shopifycdn.com
Check browser DevTools console. Whitelist *.shopifycdn.com and *.myshopify.com in your Content-Security-Policy.
Checkout redirect 404 on Shopify
Custom checkout domain not verified, or DNS still propagating
Shopify admin → Settings → Domains. Confirm checkout subdomain is verified and SSL issued. Allow 1–4 hours for DNS.
Storefront API returns 401 / 403
Token rotated or scopes missing
Shopify admin → Apps → Develop apps → your app → API credentials. Regenerate token, update WordPress env var, clear cache.
Stock shows in WordPress but order fails
WP cache stale relative to Shopify inventory
Subscribe to inventory_levels/update webhook. Reduce WP transient TTL to 5 minutes for product data.
Same order appears twice in Shopify
Customer double-clicked Buy or webhook retried
Enable Shopify's idempotency on cart creation. Add a 1-second debounce to the Buy Button click handler.
Product blocks load slowly
No edge cache + many synchronous JS calls
Enable WP Rocket or your host's full-page cache. Lazy-load below-fold blocks. Audit Network tab for sync requests.
Cross-domain analytics missing
GA4 linker not configured for both domains
GA4 → Data Streams → Configure tag → Configure your domains. Add WP and Shopify domains. Verify with the GA4 DebugView.
Add a 'sync health' dashboard before you need it
After launch, build a small status page that shows last-successful product sync timestamp, last webhook delivery, and current Storefront API quota. Most teams discover sync drift only when a customer complains. A simple cron job that pings Shopify and writes a transient gives you proactive monitoring for under an hour of dev work.
Stay Hybrid or Migrate Entirely?
Stay Hybrid When
WordPress drives 60%+ of organic traffic
Content marketing is your competitive moat
You sell under 100 products
Membership, courses, or services sit alongside products
Custom WordPress functionality (LMS, forum, directory) is core
Migrate to Shopify When
Product pages drive more revenue than blog content
You need 10+ Shopify apps without WP equivalents
Catalog exceeds 200 products with collections
Two-platform maintenance exceeds 8 hours/month
Selling B2B with custom catalogs and pricing
The 50K rule of thumb
Most teams clarify the stay-vs-migrate decision around $50K/month in revenue. Below that, integration usually wins on cost. Above that, the operational tax of two platforms typically exceeds the SEO benefit of WordPress, and serious brands consolidate on Shopify for the front-end too. There are exceptions in both directions, but it's a useful sanity check. If you're closer to that threshold than you think, see our Shopify migration playbook for the full WordPress-to-Shopify move.
The Bottom Line
For 80% of WordPress sites adding Shopify in 2026, the right answer is the Sell on WordPress plugin. It's free, it's official, it gives you SEO, and it solves the integration in under an hour. Start there. Upgrade only when you hit a specific limitation that another method solves. For non-WordPress sites following the same playbook, our add Shopify to an existing website guide covers Buy Button and Starter-plan setups.
Don't over-engineer the first version. Most teams who start with the Storefront API would have been better served launching on the Sell on WordPress plugin in week one and migrating to headless six months later when traffic and revenue justified it. Speed of validation beats architectural elegance.
Whichever method you pick, the integration will only ever be as good as the operational discipline behind it. Cache aggressively, monitor checkout abandonment after the redirect, and revisit the choice every six months. Methods that fit at $5K/month often break at $50K — that's a feature of growth, not a flaw of the integration.
Add Shopify to Your WordPress Site Today
Start a free 3-day Shopify trial, install the official Shopify plugin for WordPress, and have product blocks live on your WP site this afternoon.
Yes. WordPress runs on yourdomain.com while Shopify products embed via plugin or Buy Button. Checkout always happens on Shopify's hosted checkout page (your *.myshopify.com URL or a checkout subdomain you connect, such as checkout.yourdomain.com), but visitors stay on your WP domain everywhere else. Some teams put Shopify on a subdomain like shop.yourdomain.com. Both setups work, the choice is mainly about analytics and brand continuity.
It can, depending on your needs. Sell on WordPress uses Shopify as the commerce backend — checkout, payments, inventory, taxes, shipping all happen in Shopify. WooCommerce keeps everything inside WordPress including checkout. If you want Shopify Payments, Shop Pay, and the Shopify app ecosystem on a WordPress front-end, Sell on WordPress is the cleanest path. WooCommerce wins if you must own checkout data.
Not if you choose a server-rendered method. The Sell on WordPress plugin and Storefront API integrations both produce HTML that Google can index — product titles, prices, structured data all crawlable. The Buy Button alone is JavaScript-injected and not indexable. Keep WordPress for content SEO (blog, guides, category pages) and let Shopify handle product schema; the two won't compete.
Always on Shopify — even on Plus, the hosted checkout cannot be embedded in WordPress. By default it lives on your *.myshopify.com URL, but you can connect a checkout subdomain like checkout.yourdomain.com to stay on-brand. Customers click Buy, get redirected to Shopify's checkout (styled via Checkout Extensibility), pay, then return to a WordPress thank-you page.
Starter ($5/mo) covers the Buy Button and the Shopify plugin for WordPress if you process under ~$1,600/month in card volume. Above that, Basic ($39/mo) pays for itself through lower fees (2.9% + 30¢ vs 5% + 30¢). Storefront API works on every plan. Plus is needed only for native B2B and custom checkout extensions.
Yes, through Shopify's Store Importer app or third-party tools like Cart2Cart and LitExtension. Store Importer is free, accepts a WooCommerce CSV export, and maps products, customers, and orders. Migration takes 1–4 hours for under 500 products, longer for larger catalogs. After import you'll typically clean up variants, re-upload images, and rebuild collections. Start with a test import on a Shopify dev store before touching production.
Shopify handles all sales tax, VAT, and GST through Shopify Tax — including US economic nexus tracking, EU OSS, and UK MTD. You don't configure anything in WordPress for commerce tax. Shopify also issues invoices through apps like Sufio or Order Printer. Your WordPress accountant only needs the Shopify monthly sales report. The split is clean: WP for content, Shopify for everything money.
Yes — the plugin works with any modern WordPress theme that supports Gutenberg blocks. It adds Shopify product blocks (single product, product list, collection) you drop into any page or post. Styling inherits from your theme's CSS, with optional overrides through plugin settings. Older non-Gutenberg themes still work but require shortcodes instead of blocks. Test with your theme on a staging site before going live.
Set up cross-domain analytics so the redirect doesn't break attribution. In Google Analytics 4, add both domains to the linker config — yourdomain.com and yourstore.myshopify.com — so a single user_id persists across the jump. Configure Shopify's checkout to redirect back to a WordPress thank-you page with UTM parameters preserved. Without this, every Shopify sale shows up as direct/none traffic and your marketing data is useless.
Migrate when commerce becomes your primary business: when product pages drive more revenue than blog content, when you need 10+ Shopify apps that don't have WordPress equivalents, or when maintaining two platforms costs more in time than the SEO benefit of WordPress. Keep WordPress when content marketing is your moat — long-form guides, programmatic SEO, membership content. The decision usually clarifies around $50K/month in revenue.
Front-end developer specializing in Shopify since 2017. Experienced in building custom Liquid themes, optimizing storefront performance, and integrating third-party apps. Writes in-depth, data-driven e-commerce guides based on hands-on experience with real merchant stores.
This article was written entirely by AI under human editorial direction. The editor sets the topic and structure, runs multi-stage validation on facts, links, and interactive elements, and verifies the output is useful from a business perspective. All claims are checked against official Shopify sources. Details may change — always confirm critical data at shopify.com.