← Clients

Case study · Pro audio distribution

Empire Pro

A 90,000-product wholesale catalog, run from an Acumatica ERP, given a Shopify storefront that behaves like the enterprise behind it — dealer pricing, a catalog kept honest against the ERP, and a buying experience built for B2B.

4,500+
B2B customers
90,000
products
9
record types synced
nightly
sync cadence

The challenge

An enterprise back end, a retail-shaped storefront.

Empire Pro sells pro audio to 4,500+ dealer accounts from a 90,000-product catalog, shipped out of a single warehouse. The business runs on an Acumatica ERP — that's where orders, customers, and pricing actually live.

The storefront needed to match it. Wholesale buyers expect their own pricing, not a retail sticker; the catalog has to stay honest against a system of record that changes every day; and the buying flow has to work the way a dealer orders, not the way a consumer checks out. The job was to put an enterprise-grade B2B storefront on top of Acumatica without pretending the two were the same system.

The integration

Making two data models agree.

DPD connected Acumatica to Shopify with a customized Acumatica–Shopify connector. The sync is two-way but asymmetric, and runs on a nightly schedule — a deliberate choice for this build, not a limit of the approach. Acumatica stays the system of record: catalog, customers, and pricing flow down to Shopify; sales orders flow back up. Moving data is the easy part. Making two data models agree — so the same product, price, and customer mean the same thing on both sides — is the work, and the bulk of it.

Records synced via the customized connector
Record Direction
Customers Acumatica → Shopify
Companies Acumatica → Shopify
Customer Locations Acumatica → Shopify
Stock Items Acumatica → Shopify
Price List Acumatica → Shopify
Payments Acumatica → Shopify
Shipments Acumatica → Shopify
Refunds Acumatica → Shopify
Sales Orders Shopify → Acumatica

The customization is the product. DPD changed how Acumatica behaves during the sync so the two systems line up — auto-filling drop-ship sourcing on flagged order lines, mapping payment terms per company location, granting contact roles across locations, and surfacing each item's Shopify sync status and a one-item re-sync action right inside Acumatica.

Before any of it synced, DPD did the data work: evaluating Empire Pro's Acumatica model against Shopify's, re-modeling fields for compatibility, and setting stock-item visibility rules for which items belong on the storefront at all.

The seams we left in

What we chose not to sync.

Good integration is as much about what you hold back as what you connect. Two decisions on this build were deliberate trade-offs — the right call here, and specific to Empire Pro's data.

Live inventory stays off the storefront.

Stock items sync, but on-hand quantity does not. Empire Pro has inventory-count accuracy issues and dropships a meaningful share of what they sell — so publishing live availability would mislead buyers. We could sync it; choosing not to is the right call. Products are deliberately untracked in Shopify, so the storefront never shows a quantity it can't stand behind.

Metafields, not tags.

The connector overwrites Shopify product tags from Acumatica every night. So search aliases, promo flags, and pricing signals the storefront depends on are carried in dedicated custom.* metafields the sync doesn't touch — they survive every nightly run.

The storefront

A retail theme, rebuilt for wholesale.

A heavily customized Shopify Horizon theme, rebuilt from a stock retail theme into a B2B distributor catalog. The risky theme and search work ran against a dev mirror store — a clone of the live catalog and B2B graph — so production was never at risk.

Tiered B2B pricing

the signature feature

Every product surface shows a price table, not one price: MSRP and MAP for everyone, Dealer and Promo prices only for approved accounts. Approved dealers get an inline add-to-cart with a quantity stepper; guests see no add-to-cart at all. The same pricing logic had to be reproduced identically across three independent render paths — native theme blocks, server-rendered search cards, and client-rendered search cards.

Acumatica-driven promotions

badges & sale pricing

Sale badges and promo pricing come from Acumatica, not Shopify's native sale mechanism — driven by the promo metafields, with a defensive date check because an upstream export can lag in clearing an expired promo. A "Promo ends" date surfaces on cards and product pages.

B2B-aware search

Boost AI Search & Filter

Native search was replaced with Boost AI Search & Filter, then taught to behave for B2B: because Boost's results carry no customer session, the theme fetches each visible dealer card's catalog price client-side to keep dealer pricing and the promo row correct inside search. Plus a corporate text-only instant-search dropdown and brand misspelling aliases. Instant search completed in mid-2026.

Product & navigation work

PDP, menu, discovery

SKU display, a short-description block, and a custom line-item property that lets buyers attach a note or spec to an order line; a bespoke PDP gallery with drag-zoom; a custom left-rail mega menu (desktop dropdown, mobile drawer); and an A–Z brand directory.

What it became

A gap on this build became a product.

Empire Pro needed a B2B-capable saved-list and reorder experience. DPD first prototyped an off-the-shelf wishlist app in the theme and removed it after hitting its B2B ceilings — no quantity primitive, a single-list consumer UX, a schema that fought wholesale.

That gap is what led DPD to build its own Shopify app, Professional List Manager, with Empire Pro as design partner and first install. The app is shipped; the storefront hooks in Empire Pro's theme are planned, not yet live. It's the clearest example of how DPD's products are born — from real client gaps off-the-shelf apps couldn't meet.

See Professional List Manager

In progress

Still building.

20+ dropship warehouses are being implemented in Shopify so shipping quotes are accurate for the share of the catalog that ships direct from suppliers. Some things are also deliberately left native rather than custom-built — company and location switching and customer-specific catalogs run on Shopify's native B2B context, not bespoke theme code — so the build stays maintainable and we don't reinvent what the platform already does well.

Have a back end that needs a storefront to match?

Book a strategy audit