Case study · Pro audio distribution
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.
The challenge
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
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.
| 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
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.
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.
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 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.
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.
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.
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.
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
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.
In progress
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.