A custom app can show ERP pricing without slowing the site, as long as the page does not wait on the ERP. The pattern that works is pre-sync: push prices into Shopify ahead of time and call the ERP live only for the few moments that need it, such as cart or checkout. Live-per-pageview ties your page speed to the ERP’s speed and uptime, so it is almost always the wrong choice.
There are three architectures, and most stores end up with a hybrid. Our Shopify ERP integration services team designs these syncs, and our warehouse app answer shows a similar event-driven design.
The three architectures
Compare them on speed, freshness and risk.
| Pattern | How it works | Speed | Freshness | Main risk |
| Pre-sync | ERP pushes price changes into Shopify price lists or metafields on a schedule or event | Fastest. Prices are served from Shopify. | As fresh as the last sync | Stale prices if the sync fails |
| App proxy live call | The storefront calls your app, which calls the ERP per request | Slowest. Depends on the ERP and your app. | Always current | ERP outage or slowness blocks the page |
| Hybrid with cache | Serve cached prices and refresh in the background or on change | Fast on cache hits | Fresh within the cache window | Cache invalidation logic |
We have not measured latency for these on a named client, so benchmark your own ERP. As a design target, keep any call that blocks rendering well under 500 ms.
Why live-per-pageview fails
Four problems show up quickly.
The ERP often sits behind a VPN or an older API, and its response time becomes your page speed.
Every visitor, bot and crawler now triggers an ERP request, so a traffic spike becomes an ERP incident.
If the ERP is down, product pages show errors or blanks instead of a price.
Per-customer live prices cannot be cached publicly, so each view costs a call.
The design that works
Cache, invalidate and fall back.
- Sync price changes from the ERP into Shopify price lists and catalogs for company-specific pricing.
- Store simple per-product values in metafields when a price list does not fit.
- Trigger syncs by ERP change events, with a nightly reconcile job as a safety net.
- Use a short-lived cache with explicit invalidation when a price changes.
- Call the ERP live only at cart or quote, with a timeout and a safe fallback.
- Show a clear message if a live price cannot load, and never block the page.
- Webhook deliveries do not use your API quota, but bulk writes still do.
- Large price pushes should use bulk operations, not one call per variant.
- Cart Transform price changes are limited to Plus stores and development stores.
Which pattern fits you
A short decision guide.
Rule of thumb: sync what you can, call live only where freshness changes the decision.
ERP-driven commerce in practice
We build Shopify and ERP syncs for products, inventory, orders and pricing. We do not have a published case study with measured pricing latency, so we would size this from your ERP and traffic.
Read more: our Shopify ERP integration services
Tell us your ERP, how often prices change and your traffic, and our Shopify ERP integration team will recommend a pattern and a latency target.
Frequently Asked Questions
Yes, but not by calling the ERP on every page view. Sync prices ahead of time into Shopify, and call the ERP live only where freshness truly matters, such as cart or quote.
Your page speed then depends on the ERP’s speed and uptime, every visitor adds ERP load, and a slow response blocks rendering. Bots and traffic spikes make it worse.
Use change events or scheduled syncs from the ERP, write prices to Shopify price lists or metafields, and run a reconcile job. Invalidate caches when a price changes.
Aim for storefront responses that feel instant. A sensible target for any live call is well under 500 ms, and you should measure your own ERP before choosing. We do not publish measured figures for your setup.
Shopify price lists and catalogs handle company-specific B2B pricing natively on Plus, which removes many live lookups. See how Plus handles B2B pricing.









