Shopify Dynamic Pricing
The guards are the product
Overview
Competitor-led repricing for Shopify, built to refuse the moves that would hurt
You want prices to move on their own. You do not want to find a catalogue repriced far below cost overnight because a competitor listing for a replacement part matched one of your products.
The service pulls competitor prices, applies a rule — average, minimum, maximum or median — and writes the new price back to Shopify.

Evidence
What it looks like running
A median dry run over five products: two prices computed, two skipped for having no competitor prices, and the change limit refusing to cut the Baratza Encore Grinder from 169 to 92 The local catalogue before a run, each product carrying the competitor prices collected for it — the Fellow Stagg EKG Kettle has none The same run for real against a store that does not exist: both Shopify writes answer 404 and land in failures with the variant ID that failed The webhook verifies the HMAC over the raw body: a wrong signature is refused, a correct one is accepted and the new product is stored with its price The pricing routes sit behind a shared secret — no key and a wrong key both get 401, and the error names the header to send
Engineering
How it was built
Backend & services
- Node.js and TypeScript pricing service over MongoDB
- Rules: average, minimum, maximum and median
- New-condition listings only; multipacks and salvage listings rejected
- Outliers trimmed before any rule runs; the lowest price must be corroborated before it wins
- Change limit refuses an out-of-range move and reports the price it would have set
- A price is recorded only after the write to the store succeeds
Integrations
- Shopify Admin API for product and price writes
- Marketplace adapter for competitor listings
- Public webhook route; pricing routes require a shared secret
Testing & verification
- 155 tests
Applied
Skills on this project
Next step
Ready to bring your project to life?
Schedule a free 30-minute strategy call with our team.
No sales call. You will talk to the engineer who would do the work, and you will get a written summary either way.