Pricing tools ask you to trust a number. We think you should be able to see how the number is made. This page describes exactly what PriceSway does with your data, where competitor data comes from, and how the recommendation engine reaches its conclusions - including what it does when it doesn't have enough data to be confident.
1. Competitor discovery: your catalogue is the search input
Most monitoring tools start with a form: “paste your competitor's product URLs.” That assumes you already know who your competitors are and which of their pages match which of your products - the two hardest parts of the job.
PriceSway inverts this. It works with any platform: paste your store URL and we read the catalogue directly, or upload a CSV, and Shopify can also connect by OAuth. Once the products are in:
- We take your products - starting with your highest-priced items, where a pricing mistake costs the most - and search stores across the web for each one. How many products one run searches depends on your plan: 3 on Free, 10 on Starter, 30 on Pro and 50 on Enterprise.
- Each search is constrained to a price band of roughly 0.5× to 2× your price, so a $40 product is compared against $20-$80 alternatives, not $3 knock-offs or $400 luxury versions. Competitors only matter if customers would genuinely cross-shop them.
- We aggregate the merchants behind those results. A merchant that appears for one of your products might be a coincidence; a merchant that appears for six of them is a competitor. Suggestions are ranked by this match count, with a price-tier label showing whether they sit above, near, or below your price points.
- You review the suggestions and accept the ones worth tracking. Nothing is tracked without your say-so.
- Discovery runs when you import your store by URL or CSV or sync Shopify, when you click Find Competitors, and, for paid plans with Shopify connected, at each monthly renewal. None of these starts a run once you track as many competitors as your plan allows. It does not run on a schedule otherwise. Each run searches products that have never been searched first, then products last searched more than 90 days ago; products searched within the last 90 days are skipped. To look for new market entrants, run it again.
Limitation, stated plainly: discovery works on products that are sold and indexed on the open web. Niche B2B items, custom services, and products with non-descriptive names produce weaker matches. That's why every suggestion shows the matched products and prices behind it - so you can judge the evidence before accepting.
2. Price tracking: daily checks, full history
Once a competitor is accepted, each of their matched products is monitored using the most reliable method available for that site:
- Storefront APIs where the competitor runs on a platform that exposes public product data - the most precise method.
- Page monitoring for standard product pages, reading the displayed price.
- Web-listing refresh for items originally found via product search.
A scheduled job runs every six hours. Product pages and storefront APIs we read directly are re-checked on each run; items found through web search are re-checked about once a day, because each of those checks costs us a paid search. The schedule is the same on every plan. Those paid searches also count toward your plan's daily usage cap, so on a day an account has used it up (a large discovery run, say), its web-listing checks wait for a later run. Every observation is stored with its timestamp, building a per-product price history - so you can see not just the current price but who is drifting up, who is discounting, and how often. When a check fails repeatedly (page moved, product delisted), the item is flagged as failing rather than silently reporting a stale price.
Meaningful changes - beyond a configurable threshold, 10% by default - are batched into a digest email rather than sent one-by-one: daily on paid plans, weekly (on Mondays) on the Free plan. Monitoring should reduce noise, not produce it.
3. Price recommendations: Bayesian demand elasticity
Knowing a competitor cut prices is information. Knowing whether you should respond - and what it would cost you either way - is a decision. The recommendation engine (available on paid plans) exists for that second part.
The model
For each product we estimate own-price elasticity - how much demand moves when price moves - from your actual transaction history (which reaches us through Shopify order sync), using a constant-elasticity demand model fitted with Bayesian variational inference. In plain terms:
- The engine looks at the prices you've actually charged and the quantities you actually sold at each price.
- It produces not a single elasticity number but a posterior distribution - a best estimate plus an honest band of uncertainty around it. Ten data points produce a wide band; five hundred produce a narrow one.
- Products with thin history borrow statistical strength from similar products in the same category (hierarchical priors): if your other mid-priced accessories show customers are fairly price-insensitive, a newer accessory starts from that assumption rather than from zero.
From elasticity to a recommended price
Given the elasticity posterior, your unit cost, and the live competitor context, the engine searches for the price that maximizes expected revenue, subject to hard guardrails:
- Margin floor: we never recommend below your configured minimum gross margin (default 25%), regardless of what the model says. The floor is worked out from your unit cost - the one you enter, the one in your CSV, or Shopify's “Cost per item” if you connect Shopify. We never estimate it, so a product without one gets no recommendation until you add it.
- Min/max price bounds per product, if you've set them.
- Competitor anchoring: recommendations account for where the competitive market sits, so the engine won't price you into irrelevance against a market median.
Every recommendation ships with its expected revenue change and a confidence interval - and the strategy used (conservative, balanced, or aggressive), which controls how far from the current price the engine is willing to move in one step.
When there isn't enough data
With fewer than 5 transactions and no competitor prices, the engine refuses to recommend rather than guessing. With thin sales data but live competitor prices, it produces a competitor-anchored recommendation explicitly marked as low confidence. And when the math says your current price is already optimal, it says exactly that - “no change needed” is a valid output, not a failure.
4. Measured impact: with Shopify order sync, every accepted change is checked against reality
A projection is a promise. We measure whether it was kept. When you accept a recommendation, PriceSway records your daily revenue for that product over the 14 days before the change, then compares it with the 14 days after. Revenue comes from your orders, which reach us through Shopify order sync, so this needs Shopify connected:
- The actual revenue change is computed from your real transactions - not modeled.
- Each change gets a verdict: outperformed the projection, met expectations, or underperformed - with the exact numbers shown.
- Until 14 days of post-change orders have synced from Shopify, the change is marked “measuring” rather than given a premature verdict.
Limitation, stated plainly: a before/after comparison can be confounded by seasonality and promotions - it's evidence, not a controlled experiment. We show the underlying daily revenue figures so you can sanity-check any verdict against what else was happening in your store that month.
5. Your data
- Your catalogue, transactions, and competitor selections are used to compute your results. We don't sell your data or share it with other accounts.
- Catalogue data arrives from your store's public product API or pages when you import by URL, from a CSV you upload, or from products you add by hand. If you connect Shopify, it asks you to grant read access to your products, orders and inventory (inventory is where Shopify keeps each variant's cost per item, which we read as its unit cost), and permission to edit products. We use the edit permission for one thing only: updating a product's price when you accept a recommendation with auto-push turned on in Settings. Auto-push is off unless you turn it on.
- Deleting your organization deletes your products, transactions, competitor data, and recommendations. Shopify GDPR webhooks (data request, customer redact, shop redact) are fully implemented.
Questions about any of this? Ask us directly - methodology questions go to the people who built it.