Drupal Commerce vs. Shopify

Dark ambient pattern with colored, connected dots in the lower right corner

Shopify is the fastest way to launch a simple online store. It handles hosting, security, and checkout beautifully. For straightforward DTC brands, it's hard to beat. But the more your business strays from a simple product catalog (B2B workflows, multi-brand storefronts, complex product configurations, deep ERP integration, content-driven commerce, full SEO control) the more you end up fighting the platform, stacking paid apps, and working around limitations that shouldn't exist.

And there’s a deeper issue. Shopify is a merchant services company first and an ecommerce platform second. When 68% of GMV (Gross Merchandise Value) flows through Shopify Payments and the Shop app mediates your post-purchase relationship, you have to ask yourself: do you really own your customer relationship at all?

Drupal Commerce is an open source ecommerce framework that gives you complete ownership of your code, data model, customer relationships, and roadmap. No per-transaction platform fees. No forced migrations. No artificial product limits. No locked-down URLs. No platform inserting itself between you and your buyers. It's built for businesses that need the platform to adapt to them—not the other way around.
 

Drupal Commerce and Shopify quick comparison

 Drupal CommerceShopify

Platform type

Open source framework (you own the code)

Proprietary SaaS (you rent the platform)

Licensing cost

Free (open source)

$29–$2,300+/month

Transaction fees

None

0.2%–2% on third-party gateways

Product options/attributes

Unlimited

3 per product

Variants per product

Unlimited

2,048

URL structure

Fully customizable

Forced /products/, /collections/ prefixes

Content management

Enterprise-grade CMS (Drupal core)

Basic blog, limited CMS

B2B: Quotes & approvals

Native

Requires apps/middleware

B2B: Customer pricing

Unlimited price lists

3 catalogs (non-Plus); unlimited on Plus

B2B: Punchout (cXML/OCI)

Supported through configuration

Requires apps/middleware

Order workflows

Fully customizable

Linear (cart → payment → fulfill)

Multi-brand / multi-store

Single installation, multiple domains

Separate stores or Markets with limits

Checkout

Fully customizable

Best-in-class managed (Shop Pay)

Customer relationship

You own it—all data, all communication

Shopify mediates via Shop app/Shop Pay

Data model

Fully owned and extensible

Configurable within fixed rails

Hosting & PCI

Your choice of provider

Included and fully managed

Setup complexity

Standard stores: fast via Commerce Kickstart; complex builds: dev team or agency

Low; non-technical users can launch basic stores.

Drupal Commerce and Shopify head-to-head

Who owns the customer relationship?

Shopify is a merchant services company first and an ecommerce platform second. The majority of Shopify's revenue comes from payments processing and financial services, not software subscriptions. Shopify Payments now processes 68% of all GMV on the platform, and that share is growing.

Shop Pay builds a shopper identity network of 250+ million buyers across all Shopify stores. The Shop app sends post-purchase notifications, tracks deliveries, and surfaces product recommendations, and those recommendations might not come from your store. They might be from a competitor.

After a customer buys from you, Shopify continues the conversation through channels you don't control. You are, in a real sense, the top of Shopify's funnel. Your checkout, your transactional emails, and your post-purchase experience are mediated by a platform whose business model depends on keeping shoppers inside the Shopify ecosystem. Loyalty to your brand is an afterthought. For simple DTC, this may not matter. For brands that invest heavily in customer experience, retention, and lifetime value, it's a significant concession.

Drupal Commerce has no intermediary between you and your customer. There is no platform-owned shopper network inserting itself into your post-purchase communications. No app cross-promoting other merchants to your buyers. You own every touchpoint: the storefront, the checkout, the transactional emails, the account portal, the data. Your customer relationship is yours. Full stop.

Data model ownership

Does your business have to reshape itself to fit the platform, or can you shape the platform to fit your business?

Shopify's data model for products, carts, orders, and customers is fixed. You can configure it within the rails Shopify provides with metafields, tags, and apps that extend the admin UI, but you cannot change the underlying structure. Products have variants with up to 3 options. Orders follow a single workflow. Customer records have a defined set of fields. 

When your business needs something Shopify didn't anticipate, you have to work around constraints with apps and hacks or accept the platform limitation as-is. No custom entity types, no non-standard relationship between objects, no product model that precisely fits your variation paradigm, no extra field types.

Drupal Commerce lets you own the data model, not just configure it. Every commerce entity (products, variations, orders, order items, customer profiles, stores, payments) is fully extensible with custom fields, custom types, and custom relationships.

Need a product type that doesn't look like a traditional product? Define it. Need a new order type with fields that drive a custom approval workflow? Build it. Need a customer entity that models the actual organizational hierarchy your B2B buyers use? Create it. The data model belongs to you because the code belongs to you.

When your data model fits your business, integrations are simpler and reporting reflects reality.

Product attributes and catalog flexibility

Shopify raised its variant limit to 2,048 per product in October 2025, but the 3-option-per-product cap remains. A product can have Size, Color, and Material. Not a fourth axis. If you sell apparel (size + color + fit + inseam), furniture (size + fabric + finish + leg style), or any configurable/made-to-order product, you're immediately pushed into workarounds, like:

  • Collapsing options into ugly combined dropdowns
  • Splitting products across multiple listings (fragmenting reviews and SEO authority)
  • Using third-party apps that add options as line item properties

None of these options have independent inventory tracking, unique SKUs, per-option pricing, or per-option sales reporting.

Anything downstream (ERP, 3PL, POS, Google Shopping feeds) sees only the underlying variant, so option data has to be reconciled manually. Mismatched variant data is the single most common source of Shopify-to-ERP sync failures.

Drupal Commerce supports unlimited product attributes. Define as many dimensions as your catalog requires. Size, color, fit, inseam, material, finish, whatever your products need. Every variation gets its own price, SKU, inventory, and media. No workarounds, no apps, no reconciliation layer. Your ERP sees exactly what your store sees.

Content management capabilities

Shopify's blog and CMS capabilities are widely acknowledged as an afterthought. If your business depends on content-driven commerce, which includes:

  • Editorial content alongside products
  • Rich landing pages
  • Organized educational resources 
  • Technical documentation you can surface anywhere
  • SEO-focused content marketing

Then be prepared to work around Shopify's limitations or bolt on a separate CMS. Page builders are among the most-installed app categories for a reason.

Drupal Commerce is built on Drupal, one of the most powerful content management systems in the world. Commerce is layered on top of enterprise-grade content tools, not the other way around. Layout Builder (and now Canvas) lets you create media-rich landing pages and complex product layouts through an intuitive interface. Your content team gets taxonomy, structured content types, revision workflows, custom fields, and full editorial control. Commerce capabilities are fully integrated.

This is one of Drupal Commerce's most distinctive advantages: true content-driven commerce in a single platform.

Example

The American Association of Psychiatric Pharmacists uses Drupal Commerce to sell memberships, professional courses, books, and event registrations, all tightly integrated with educational content, continuing education tracking, and a learning management system. 

Shopify would require a separate LMS, a separate CMS, and multiple app integrations to approximate this, and you still wouldn’t have as much control.

SEO/GEO control

Shopify forces /products/, /collections/, /pages/, and /blogs/ URL prefixes on every page. You cannot remove or rename them, even on Plus. Only going headless escapes this. Products listed in multiple collections generate duplicate collection-scoped URLs. Shopify auto-sets canonical tags, but internal links still point to non-canonical URLs, diluting link equity. Multilingual stores get hreflang and subfolders, but URL slugs stay in the source language.

Drupal Commerce gives you full control of your URL structure. Configure URL patterns with tokens and custom strings. Set patterns by entity type and override individual pages. When a URL alias changes, Drupal automatically creates 301 redirects and updates internal links. 

Multilingual sites include translated URL slugs, proper hreflang directives, and language-code URLs out of the box. You also get full control over meta tags, LD+JSON structured data, social sharing tags, sitemaps, canonical directives, and breadcrumbs. No forced prefixes. No duplicate URL problems. No lost link equity.

B2B commerce

As of April 2026, Shopify includes foundational B2B on all paid plans, and B2B GMV grew 76% year over year. It handles company profiles, basic price lists, net terms, and PO checkout reasonably well for hybrid DTC/wholesale. 

But it lacks native RFQ/quote negotiation, hard credit-limit enforcement at checkout, multi-level approval workflows beyond two tiers, and native punchout (cXML/OCI) and full EDI. Non-Plus plans are capped at 3 active B2B catalogs. These gaps push you into apps and middleware for anything beyond mid-market wholesale.

Drupal Commerce was built for B2B commerce without compromise. Accounts may share order histories, payment methods, and address books across their organization. Granular role-based access controls let you define permissions for purchasers, approvers, and accounting teams. Quote management, purchase order support, unlimited custom price lists, contract pricing, and volume discounts can all be added to the platform, customized precisely to your specific business. And because the data model is fully extensible, you can model whatever relationship your business actually uses.

Example

Centarro built a Drupal Commerce platform for a global electronics industry standards organization that supports quote checkout flows, PO checkout, invoice payment, international checkout with custom fields, and direct purchase. The system supports both B2C and B2B sales, saves staff over 100 hours per month through self-service checkout, and integrates bidirectionally with NetSuite.

Read more: Will Shopify Plus work for your B2B commerce website?

Order workflow flexibility

Shopify assumes a linear order flow: cart → payment → fulfillment → complete. If your business has validation requirements (e.g., export controls, academic discounts, compliance checks), multi-step B2B approvals, mixed product types that need different fulfillment paths, or marketplace scenarios with multiple sellers, you're working against the platform's assumptions.

Drupal Commerce provides fully declarative order workflow control. Your order management matches your real fulfillment process.

  • Define valid order states and permitted transitions. 
  • Trigger automated actions (ERP notifications, payment capture, inventory updates) on state changes. 
  • Run different workflows for different product types, customer types, or order characteristics. 
  • Manage independent shipment lifecycles separate from order status.

Example

Centarro built order processing for a $600M outdoor company with multiple brands for different niches. When a customer places an order containing fishing equipment and camping gear, the system automatically creates separate shipments routed to different fulfillment centers, each with its own payment allocation, approval process, and brand-specific workflows. Customer service reps see only shipments relevant to their brand. Meanwhile, the customer sees one unified experience.

Multi-brand and multi-store

Shopify Markets assumes one catalog with regional overrides. Brands with truly distinct regional product lines or multiple brands end up running multiple Shopify stores, each with its own admin, app stack, theme, and subscription cost. Apps don't automatically work across multiple stores and there’s no shared cart across markets.

Drupal Commerce supports multi-brand commerce from a single installation. One codebase, one database, one admin—with full brand independence on the storefront.

  • Map any number of domains to any store configuration. 
  • Maintain unified product and customer data with brand-specific catalogs, themes, access controls, pricing, and fulfillment workflows. 
  • Share a cart across brands or keep them separate. 
  • New brands can be added quickly and immediately take advantage of existing infrastructure. 

Example

Whisky Auctioneer runs three brands (Whisky Auctioneer, Rum Auctioneer, Wine Auctioneer) across six stores (UK and EU for each) on a single Drupal Commerce installation. Each store has different fees, tax calculations, shipping options, and compliance requirements. The platform handles 2.2 million bids across high-traffic auctions.

ERP and systems integration

Shopify has a mature API surface (Admin GraphQL, Storefront, webhooks, Functions) and a strong ecosystem of prebuilt connectors for common ERPs (NetSuite via Celigo, QuickBooks via A2X, etc.). For a single-entity merchant with conventional SKUs, a connector handles most of the standard flow with configuration. 

There are friction points: ERP matrix items frequently exceed the 3-option cap, so collapsed or split products need mapping maintained on both sides. Bundles/kits are a chronic mismatch. API rate limits (roughly 2–4 REST calls per second on core plans) choke large syncs, and you never know when the API might change, forcing a costly rewrite. The forced REST-to-GraphQL migration drew heavy developer criticism.

Drupal Commerce is designed for deep systems integration. Because all data objects are fully extensible and accessible through Drupal's APIs, they can be mapped directly to customized ERP structures without forcing the ERP's data model into a rigid product/variant paradigm. Two-way data synchronization with ERPs like NetSuite, JD Edwards, SAP, and Microsoft Dynamics is built using the same integration patterns the rest of your enterprise stack uses. No artificial rate limits. No forced API migrations. And because you own the code, the integration is exactly what your business needs. You’re not wrestling with a connector you pulled off the shelf.

Example

Drupal Commerce powers a multi-brand eCommerce platform that integrates the organization's JD Edwards ERP for real-time order synchronization, and automated status updates. Customer-facing systems and back-office operations have seamless data flow across all six brands.

Pricing and total cost of ownership

Shopify's entry pricing is transparent and low. Real-world TCO is significantly higher than the sticker price. 

Roughly 87% of merchants use paid apps averaging $58–67/month each, and most stores stack several. Third-party gateway fees (0.2%–2% per transaction) create strong pressure to use Shopify Payments, which exposes you to payout holds. Plus starts at $2,300/month and shifts to a variable revenue-share above roughly $800K–$1M monthly GMV. Agency-sourced TCO for a $5–10M GMV brand on Plus runs $240,000–$570,000 per year.

Drupal Commerce has no licensing fees and no transaction fees. Your costs are hosting, development, and maintenance. For businesses with development resources, either in-house or through a partner like Centarro, this model is often significantly more cost-effective than Shopify Plus at scale.

Most importantly, you own everything that’s built. No platform can raise your rates at renewal, shift you to revenue-share, or deprecate features you depend on.

The honest tradeoff

Drupal Commerce requires a real investment in development. If you don't have access to development resources and your needs are straightforward, Shopify's managed model is genuinely easier to operate.

Platform stability and vendor risk

Shopify regularly deprecates core features on hard deadlines. The checkout.liquid to Checkout Extensibility migration broke customizations, tracking pixels, and apps across the merchant base. Shopify Scripts were sunset on June 30, 2026. The REST API was deprecated in October 2024. Each forced migration costs real time and money, as much as $100,000+ for an enterprise implementation.

Beyond migrations, the dominant merchant complaints are payout holds (freezing working capital for 90–120 days), deteriorating support quality (AI-first, phone support limited to Plus customers, dedicated Plus reps thinned), and app-cost stacking.

Drupal Commerce follows Drupal's documented release and deprecation policies. You control your upgrade timeline. There are no forced migrations on someone else's deadline. The codebase is open source, which means it’s inspectable, forkable, and not subject to a vendor's business decisions.

Centarro's support retainers cover security patching and platform updates through a defined process. And since you choose your own payment processor with no platform surcharge, there's no payout-hold risk from the platform itself.

Checkout experience

Shopify's one-page checkout is best in class. Shop Pay, backed by 250+ million shoppers, delivers strong conversion rates. For high-volume DTC where every fraction of a percentage point in checkout conversion matters, this is a genuine advantage.

Drupal Commerce gives you a fully customizable checkout. You can design any flow you need, including multiple checkout flows for different customer types or product types. However, it also gives you a focused checkout experience on your site that implements industry standard best-practices as implemented by Shopify. If you don’t need the customization the platform enables, deploying a Shopify style experience at checkout is easily configured.

The biggest advantage: you have complete control over the checkout experience, which matters for B2B (where PO flows, quote approvals, and invoice payment are more important than one-click checkout) and for businesses with non-standard checkout requirements.

Setup and speed to launch

Shopify gets you from zero to selling faster than any other platform. Hosting, SSL, PCI compliance, CDN, and security patching are all handled. A non-technical founder can launch a functional store in days. This is a genuine advantage for businesses that need to move fast and iterate.

Drupal Commerce isn't as far behind here as you might expect. Commerce Kickstart, maintained by Centarro, is an installation profile that ships with pre-configured commerce modules, a strong storefront theme, demo content, and Centarro's certified project suite (shipping, price lists, product limits, licensing, and more). For a standard product catalog store, Kickstart gets a developer to a working storefront fast.

Where Drupal Commerce takes longer is when you're building something Shopify can't do: complex B2B workflows, multi-brand architectures, custom order processes, deep ERP integrations, and more. Those can take weeks to months, but these capabilities don't exist on Shopify at any price. There might be connectors or apps, but even those will require customization work.

With Drupal Commerce, you build something precisely tailored to your business, fully owned, and designed to scale without hitting artificial ceilings.

Should you choose Drupal Commerce or Shopify?

Choose Shopify if:

  • You're launching a straightforward DTC brand
  • Your catalog is simple (3 or fewer product options)
  • You don't have development resources
  • You're primarily B2C with basic or no B2B needs
  • You're comfortable with Shopify mediating parts of the customer relationship
  • Speed to launch matters more than long-term flexibility.

Choose Drupal Commerce if:

  • You want to own your customer relationships without a platform intermediary
  • Your data model doesn't fit neatly into a fixed product/variant structure
  • You need deep B2B capabilities (quotes, approvals, customer-specific pricing, punchout catalogs)
  • Content and commerce need to live in one platform and be connected
  • You operate multiple brands or storefronts
  • Your order workflows don't follow a simple linear path
  • You require sophisticated SEO control
  • You're integrating deeply with enterprise systems
  • You want to own your code, your data, and your roadmap

Get started with Centarro

Centarro created and maintains Drupal Commerce. When you work with Centarro, you're working directly with the people who built the platform.

Add new comment