Skip to Main Content

Jul 30, 2026 | 9 minute read

Stop Building Your Commerce Stack Out of Rented Databases

written by Bryan House

Every SaaS application — including your CRM, your PIM, your quoting tool, and your commerce platform — is fundamentally a database with a user interface layered on top, and sometimes a bit of logic in between. Once you see this, the way you evaluate every app, integration, and workaround in your stack changes.

Salesforce is the clearest example. Underneath the interface, a CRM stores accounts, contacts, opportunities, and activities. The "application" is really a way to write structured queries against that data without knowing SQL. The same is true of HubSpot, Zendesk, and, in commerce, your commerce platform, your PIM, your OMS, and your quoting tools. Each one is an opinionated UX wrapped around a data model.

This isn't a criticism of SaaS design. Making complexity invisible through good UX is exactly what the best technology companies do — Apple being the obvious example. The issue shows up somewhere else: in composable commerce and the app-store model that grew up around it, where teams accumulate dozens of point solutions with no consolidated data model underneath. Practitioners sometimes call this a "frankenstack." For B2B commerce leaders trying to build an AI-ready foundation, understanding why that happens — and what to do instead — is now a strategic question, not just an engineering one.

The App Store Problem

Shopify has more than 11,000 apps in its ecosystem, and Salesforce's AppExchange has more than 9,000. The pitch behind both is the same: whatever your commerce platform doesn't do natively, there's an app for that.

The pitch undersells what it actually costs. Every app you add is a separate vendor contract, a separate authentication layer, and a sync job responsible for keeping its data roughly aligned with your system of record. Each one is also, per the "database with a UX" framing, its own database — which means your architecture starts to resemble a distributed database with no common schema holding it together.

Nebulab, a Shopify partner agency, described this pattern well in their guide to Shopify migrations. They frame app complexity as billing you in three distinct ways:

Cost

What It Looks Like

Data fragmentation

Every app maintains its own database. At scale, that becomes a data migration problem, a reporting problem, and a compliance problem — because your source of truth is now split across systems that don't talk to each other cleanly.

Pricing at scale

App pricing is almost always volume-based. An app that's a rounding error in the demo, priced against your current GMV, can cost more annually than building the equivalent capability once you run the math at 2x your GMV. You end up paying rent indefinitely instead of building an asset.

The primitives gap

Apps built on your platform's native data model compound in value over time. Apps that bring their own model and their own front-end layer compound in debt instead.

Teams that start with an app to fill a gap often outgrow it. At that point, getting the data back out is a migration project in its own right, and the maintenance burden tends to exceed what it would have cost to build the capability into the primary system from the start.

"Just Vibecode It" Has the Same Problem, Faster

AI-assisted development introduces a newer version of the same issue. Teams can now use LLMs to spin up a lightweight internal app to patch a gap in their stack in an afternoon.

The result looks like a solution. Underneath, it's usually a database with a barely tested UX on top, with no SLA, no SOC 2 compliance, no documented API contract, and a single engineer who may or may not still be at the company in 18 months. It solves the immediate problem and adds to the same pile of technical debt the app-store model created, just faster and with less oversight.

Treat Your Commerce Platform Like the Database It Already Is

If every application is a database with a UX layer, the more durable move is to model your requirements directly inside the commerce platform you're already running, instead of spinning up another app or another vibe-coded side project every time the platform doesn't natively support something.

This is exactly what Elastic Path Commerce Extensions is built to do. It gives development teams a native extensibility layer for custom resources, custom attributes, and event-driven services — governed and hosted inside Elastic Path rather than bolted on beside it. Specifically, Commerce Extensions provides:

  • Custom Resource Definitions: Create new resource types using schema-driven definitions. Each one is fully addressable through REST APIs and behaves like a native commerce object, not a bolt-on.
  • Extensions to Native Elastic Path Resources: Add structured attributes and metadata directly to products, prices, hierarchies, orders, or accounts, without altering the platform's underlying logic.
  • Querying and Filtering: Run attribute-level, range-based, and multi-attribute queries against a structured, searchable model, without building or maintaining a custom query engine.
  • Custom Relationships: Define explicit connections between custom objects, or between custom and native resources, to model domain logic that off-the-shelf schemas weren't built for.
  • Event-Driven Expansion Points: Trigger platform-level behaviors or data updates based on lifecycle events like product updates, catalog changes, or order workflows.
  • Platform-Hosted Infrastructure: All custom data and runtime environments are secured, scaled, and maintained by Elastic Path, with no separate database, runtime, or monitoring pipeline for your team to own.
  • API-First Access: Every custom object and attribute is available via REST, so it integrates cleanly with storefronts, middleware, admin tools, and internal applications.

The result: you get the extensibility of a custom app or side project, without introducing a new database, a new vendor relationship, or a new point of failure into your stack.

Where This Shows Up Most: B2B Commerce

B2B commerce tends to show this problem in its most extreme form, because standard commerce data models were never designed for how B2B businesses actually operate. A few examples where teams typically reach for an app or a workaround — and where Commerce Extensions is designed to be used instead:

Use Case

The Requirement

How Commerce Extensions Addresses It

Serialized inventory

A manufacturer needs to track serial numbers tied to specific accounts, orders, and warranty registrations at the SKU level.

Model serialized goods as custom resources with relationships to orders and accounts, addressable through the same API as everything else.

Saved lists with locked-in pricing

A distributor's buyers need saved lists that capture price at the time of save — not current price — and persist across sessions.

Store price-at-save as a custom attribute tied to the saved list resource, queryable without a separate database.

Custom order sub-statuses

An enterprise account's internal fulfillment process needs order states that don't map to standard order statuses.

Extend the native order resource with custom attributes that reflect the account's actual fulfillment workflow.

B2B account logic

Procurement attributes, contract details, and per-account business logic that vary account to account.

Store account-specific logic as structured, queryable data attached to the account resource.

Configuration and compatibility data

Compatibility tables, dynamic configuration rules, or part-level detail needed for complex product discovery.

Model compatibility as custom relationships between products or components rather than as unstructured documentation.

Warranty and service history

Warranty terms, service intervals, and unit history tied to orders or products.

Attach warranty and service data as structured attributes connected to the relevant product or order resource.

In each case, the alternative is a third-party app, a custom microservice, or an internal tool — each one its own database, each one another translation layer between your business logic and everything that needs to read it.

Why This Matters More Now: AI Agents Read APIs, Not Workarounds

Consolidating your data model inside your primary system doesn't just simplify your stack. It changes what's possible for the systems that increasingly need to reason over your product and account data.

A structured data model built through Commerce Extensions produces a real API endpoint that conforms to the OpenAPI spec — one that an AI agent or automation workflow can consume directly. Every niche requirement you model natively becomes a clean, machine-readable surface. Every requirement you instead push into a third-party app or an internal side project becomes another translation layer standing between your data and the agents trying to make sense of it.

That distinction is becoming a business risk. AI agents don't infer context the way a sales rep or a customer service agent would. If a business rule, a compatibility constraint, or an account-specific pricing exception lives only inside an app's proprietary data model — or worse, in a spreadsheet or a person's head — an agent evaluating your products simply won't see it. Structuring that logic natively, with a governed API surface, is what makes it visible to the systems now doing more of the discovery and evaluation work on a buyer's behalf.

FAQ

What is Elastic Path Commerce Extensions? Commerce Extensions is a native extensibility layer inside Elastic Path that lets development teams define custom resources, attributes, relationships, and event-driven behaviors without building a separate application, database, or microservice.

How is Commerce Extensions different from installing a third-party app? A third-party app introduces its own database, its own authentication layer, and a sync job to keep its data aligned with your system of record. Commerce Extensions keeps custom data inside your primary platform, inheriting the same security, API access, and performance guarantees as native resources — with no separate infrastructure to manage.

Does Commerce Extensions replace my PIM, OMS, or ERP? No. It's designed to model the business logic and custom data that those systems and standard commerce data models weren't built to capture — account-specific rules, serialized inventory, custom order states, and similar edge cases — while still integrating with your existing ERP, PIM, and other systems through the same API surface.

Is data created through Commerce Extensions accessible via API? Yes. Every custom resource and attribute is available through REST APIs that conform to the OpenAPI spec, which means it's usable by storefronts, internal tools, middleware, and AI agents or automation workflows.

What kinds of B2B use cases is Commerce Extensions built for? Common examples include serialized inventory tracking, saved lists that preserve price at time of save, account-specific procurement rules and entitlements, custom order sub-statuses, product configuration and compatibility logic, and warranty or service history tied to orders and products.

Why does this matter for AI-driven commerce specifically? AI agents evaluating products or making purchasing recommendations can only reason over data they can actually access in structured form. Business logic buried inside a third-party app's proprietary data model, or inside an internal tool with no documented API, is effectively invisible to an agent. Modeling that logic natively, with a governed API, keeps it visible to the systems increasingly mediating B2B buying decisions.

The Bottom Line

Every application in your stack is a database with a UX on top — the only real question is whether you control that database or you're renting a dozen of them from vendors who each have their own. The app store model and the vibe-coded workaround both solve the immediate problem while compounding data fragmentation, cost, and risk underneath, often without anyone noticing until the bill comes due.

Commerce Extensions gives B2B teams a way to model whatever their business actually requires directly inside Elastic Path — inheriting the compliance posture, SLA, and API surface of the platform they're already running, rather than adding another vendor, another sync job, or another point of failure to the pile.

Book a demo to see how Commerce Extensions can model your business's unique requirements without leaving your core platform.

Get Started with Elastic Path

Schedule a demo to see how Elastic Path delivers unified commerce for leading global brands.