In a building materials business, the ERP is not a system, it is the business. Epicor Prophet 21, NetSuite, Sage, Infor: whichever one runs your operation, it owns the item master, the branch inventory, the contractor contract pricing, and the credit decisions. A Shopify storefront in front of that ERP is only ever as honest as its sync. This is the detailed guide to what that sync has to handle for a materials catalog specifically, where the two hard problems are catalog scale and layered pricing.
Quick answer: Connecting a building-materials ERP to Shopify means solving two problems generic connectors flatten: syncing a large, variant-heavy item master (often six figures of SKUs with grade, length, and treatment variants) without choking on daily updates, and mapping layered pricing, list, trade tier, customer contract, and job-level, onto Shopify's catalogs and price lists without replicating pricing logic the ERP should keep owning. Everything else, inventory cadence, order writeback, invoice sync, follows from getting those two right.
Why Materials Data Is Harder Than It Looks
A materials item master does not behave like a retail catalog. One product concept, say, dimensional lumber, explodes into variants by dimension, length, grade, species, and treatment, each with its own SKU, cost, and freight profile. Multiply across categories and a mid-size distributor's ERP routinely carries a catalog in the hundreds of thousands of SKUs, with a meaningful slice changing price weekly because commodity costs move.
Layered pricing is the second multiplier. The same SKU has a list price, a trade price by contractor tier, contract prices negotiated per account, and sometimes job-specific pricing for a project window. All of that lives in the ERP, where it belongs. The sync question is never "how do we move pricing to Shopify" but "which layers get mirrored as price lists, and which stay ERP-calculated," because a connector that tries to replicate the ERP's pricing engine in the storefront will drift from it, and the invoice will disagree with the cart.
The enforcement side of that pricing structure, tiers as catalogs plus price lists, spec accounts, approval flows, is covered in contractor pricing and account tiers on Shopify. This article is about the pipe that keeps those price lists true.
Large Catalogs: Initial Load vs. Daily Truth
Syncing a six-figure catalog is two different engineering problems wearing one name.
The initial load is a data-modeling exercise: mapping the ERP's item master, its variant dimensions, units of measure, and category structure, onto Shopify's product model deliberately. Decisions made here, what becomes a product versus a variant, which attributes live in metafields, how UOM conversions are represented, determine whether the catalog is navigable for a contractor or just technically present. Done carelessly, no later sync fixes it.
Daily truth is a delta problem. After the load, the sync only needs to move what changed: the commodity SKUs whose costs moved overnight, the items superseded or discontinued, the new lines added at the last supplier update. A connector that re-syncs the whole catalog on a schedule instead of processing deltas will fall behind exactly when volatility is highest, which in this industry is exactly when accuracy matters most. Event-triggered updates for price changes, batched deltas for attributes, is the pattern that holds up.
At the top end of the range, this architecture is proven at seven figures: ULE Group runs its building materials business on Uncap's Shopify Plus platform, with more than one million SKUs synced from Epicor to the storefront.
Layered Pricing: What to Mirror, What to Leave in the ERP
The working rule: mirror the layers that are stable per account, calculate nothing in the storefront that the ERP already calculates better.
Trade tiers and contract pricing mirror well. They change on renegotiation, not per transaction, so they map cleanly onto Shopify price lists assigned to company accounts, synced whenever the ERP's contract records change. The buyer sees their true rate at browse time, which is the entire point.
Job pricing and heavily conditional pricing mirror badly. A price that depends on order composition, project window, or a rep's judgment should route through a quote, priced in or against the ERP, rather than be approximated by storefront rules that will eventually be wrong by a margin someone has to eat. The line between the two is worth drawing explicitly during implementation, SKU family by SKU family, because it decides where pricing disputes can and cannot occur.
Commodity volatility sits on top of both: when lumber or steel reprices, the event-triggered path pushes the new rates to every affected price list within minutes, not at tomorrow's batch. A distributor whose portal lags its own repricing by a day is publishing prices it will refuse to honor.
The Rest of the Sync, Briefly
Product and pricing are the hard half. The remaining flows, branch-level available-to-promise inventory on a 15-to-60-minute cycle, contractor account provisioning from ERP records, order writeback under the right customer number and job, and delivery-and-invoice back-sync, follow established patterns, and the building materials distributors guide walks through all five flows in the context of a full portal rollout. The buyer-facing requirements those flows serve, live branch stock, net terms, job cost codes, are the contractor portal's five must-haves.
One materials-specific note on inventory: available-to-promise should exclude transfer stock in transit between branches, because a contractor choosing will-call at their local yard is asking what is on that shelf, not what the network owns.
Epicor, Specifically
Prophet 21 is the most common ERP in this vertical for a reason: it already models the things materials distribution runs on, branch hierarchy, customer contract pricing, job-lot billing, credit management. That is good news for the integration, because the data the storefront needs exists cleanly rather than in workarounds. The work is in the mapping: P21's item master and UOM structures onto Shopify's product model, contract records onto price lists, branch locations onto Shopify locations, and order writeback that respects the account, branch, and job the ERP expects. Uncap's Epicor integration guide covers the platform pairing generally; the materials-specific decisions above are what sit on top of it.
What Uncap Connect Does Here
Uncap Connect is the integration layer built for exactly this shape of business: embedded in Shopify, B2B-aware, moving item, pricing, inventory, account, and order data both ways in real time, with the ERP kept as the system of record throughout. It is the difference between a storefront that displays ERP data and one that quietly maintains its own version of it.
Uncap has been a Shopify Platinum Partner since 2013, with more than 380 B2B commerce projects delivered for manufacturers, distributors, and wholesalers, including operators in building materials and construction. Book a Demo to walk through your item master, your pricing layers, and what the sync would look like against them.
Frequently asked questions
Can Shopify handle a building materials catalog with hundreds of thousands of SKUs?
Yes, with deliberate architecture: variant modeling decided at initial load, metafields for technical attributes, and a delta-based sync that moves only what changed daily. The proven ceiling is high, Uncap's largest materials implementation syncs more than one million SKUs from Epicor.
Should contractor pricing be calculated in Shopify or in the ERP?
Stable layers, trade tiers and contract rates, are mirrored into Shopify price lists so buyers see true pricing at browse time. Conditional pricing, job-specific or judgment-dependent, stays ERP-side and routes through a quote, so the storefront never approximates a calculation the ERP owns.
How fast should pricing updates reach the storefront when commodity costs move?
Within minutes, via event-triggered sync, rather than at the next scheduled batch. A materials portal that lags its own repricing publishes numbers the business will not honor, which is the fastest way to teach contractors to call and confirm every price.
Does this replace the generic Epicor-to-Shopify integration approach?
It builds on it. The platform pairing, connection method, data flows, setup, is the same foundation covered in Uncap's Epicor integration guide. The materials-specific layer is the item master modeling, UOM handling, layered pricing decisions, and branch inventory rules described here.