Tracking External Competitors

How to track competitor prices on external sites for Shopify, BigCommerce, and eBay listings. Covers URL requirements, status states, adaptive polling, currency conversion, and strategy integration.

What is external competitor tracking?

External competitor tracking lets you point Repricing.app at specific competitor product pages on other websites so the repricer can monitor their prices and factor them into your own pricing decisions. You paste a URL, give it an optional label, and Repricing.app scrapes the page on a schedule, extracting the current price and currency.

This is the equivalent of the per-seller competitor data that marketplaces like Amazon expose through their APIs, but for own store channels where there is no marketplace API to query. You decide who counts as a competitor by adding their URLs manually.

Which channels support this

External competitor tracking is available on own store channels only:

  • Shopify
  • BigCommerce
  • eBay

For marketplace channels (Amazon, Walmart), the Competitors tab shows per-seller offers pulled directly from the marketplace's API. You don't add URLs manually because the marketplace already provides structured competitor data. See Competitor Analysis for how that works.

Finding the Competitors tab

Go to the Listings page and click any listing on Shopify, BigCommerce, or eBay to open its detail view. Switch to the Competitors tab. You'll see a table of any competitor URLs already tracked for this listing, plus an ADD COMPETITOR button in the toolbar.

If no URLs have been added yet, the table is empty. Click ADD COMPETITOR to get started.

The Competitors tab depends on the strategy

For Shopify, BigCommerce, and eBay listings, the Competitors tab is only visible when the listing's strategy uses the Competitor-based pricing approach. If the strategy is set to Cost-based pricing, the tab is hidden because competitor URLs don't influence cost-based calculations. Switching the strategy (or assigning a different strategy that uses competitor-based pricing) makes the tab reappear. URLs you've previously added are preserved across the switch and stay scraped in the background. See Pricing Settings for the two approaches.

Adding competitor URLs

Click ADD COMPETITOR to open the Add Competitor dialog. You can add one URL or several in a single dialog, up to the per-listing limit.

  1. Paste the URL into the URL field. The URL must point directly at the competitor's product page (not their homepage or category page).
  2. Optionally add a Label to help you tell competitors apart later (for example, "Main competitor" or "Amazon listing"). Labels are limited to 100 characters.
  3. Click + Add another to add a second URL in the same dialog. Each row has its own URL and label.
  4. Click Add (or Add 3 if you have three filled rows). All URLs are saved at once.

After saving, each new URL appears in the table with the status Pending. The scraper picks it up on the next worker cycle and pulls in the current price.

URL requirements

To keep tracking reliable and secure, URLs must meet a few requirements:

  • HTTPS only. URLs must start with https://. HTTP, FTP, file, and data URLs are rejected.
  • Public hostnames only. URLs pointing to localhost, loopback addresses (127.0.0.1), or private IP ranges (10.x.x.x, 192.168.x.x, 172.16.x.x to 172.31.x.x) are rejected for security reasons.
  • No Repricing.app URLs. You can't track URLs that point back to repricing.app itself.
  • Maximum 2048 characters. Most product URLs fit well within this limit.
  • Unique per listing. The same URL cannot be added twice to the same listing.

The dialog validates each URL as you type. Invalid URLs show an inline error explaining what's wrong.

What the table shows

Once URLs are added, the Competitors tab shows them in a table. Prices, statuses, and timestamps refresh in real time as the scraper finishes each check, so you don't need to reload the page to see fresh data. The table has these columns:

  • URL. The competitor's product page URL, truncated for display. Click to open the page in a new tab.
  • Label. The label you assigned (or empty if none).
  • Status. The current health of the tracker (see Status states below).
  • Price. The most recent price scraped from the page, in the page's original currency. If the listing's currency is different, the converted value is shown alongside (for example, €214.05 → $246.69). The converted price is what the repricer uses.
  • Last Checked. When the scraper last successfully read the page, shown as a relative time (for example, "2 hours ago").
  • Next Run. When the next scheduled check will run, with a tooltip explaining the check frequency for this URL.

Status states

Each competitor URL has one of six health states. The status badge in the Status column reflects the current state:

  • Active. Tracking is working normally and the most recent check succeeded.
  • Pending. The URL was added but has not been checked yet. It will be picked up on the next worker cycle.
  • Retrying. The last check failed (one or two consecutive failures). The next scheduled run will retry automatically.
  • Failing. Three or more consecutive checks have failed. The URL is likely broken, behind a captcha, or pointing to a page that no longer exists. Verify the URL is correct and the product is still available.
  • Stale. The last successful check was more than 12 hours ago or significantly past the expected frequency. The scraper is having trouble reaching the page.
  • Paused. Tracking is paused. The URL is stored but not being checked. Resume to start checking again.

Check frequency and adaptive polling

Not all pages take the same effort to scrape. Simple, fast-loading pages are checked frequently; complex pages that take longer to process are checked less often to balance freshness against system load. Repricing.app assigns each URL a tier automatically based on how long previous checks took:

  • Simple pages. Checked every 4 hours.
  • Moderate pages. Checked every 6 hours.
  • Complex pages. Checked every 8 hours.
  • Very complex pages. Checked every 12 hours.

The tier is set automatically after the first successful check. Hovering over the Next Run column shows the exact frequency and a short explanation for the assigned tier.

Currency conversion

Competitor pages are often in a different currency than your listing. For example, a Shopify storefront in USD might track a competitor on Amazon UK in GBP. Repricing.app handles this automatically:

  • The original price is stored in the currency detected from the page.
  • The price is converted to your listing's currency using the daily FX rate.
  • Both values are shown in the Price column (€214.05 → $246.69), and the converted value is what the repricer uses for pricing decisions.

If a conversion rate is not available for a given currency pair, the original price is shown as-is and the URL is skipped by the repricer until a rate becomes available.

Row actions

Each row in the Competitors table has three actions:

  • PAUSE / RESUME. Toggle whether the URL is being tracked. Paused URLs are not checked and do not contribute to the repricer's competitor reference, but their price history is preserved. Useful when you want to keep a URL on file but temporarily ignore it.
  • EDIT. Change the label for a URL. The URL itself cannot be changed; to point at a different page, delete the URL and add the new one.
  • DELETE. Remove the URL from the listing. A confirmation dialog appears: "Remove {url}? Price history will be preserved." Deleting a URL preserves the historical price snapshots but removes it from active tracking.

Auto-disable on repeated failures

If a URL has 5 or more consecutive failed checks, Repricing.app automatically pauses it (sets the status to Paused) so it doesn't keep wasting scraping cycles on a broken target. A warning banner appears at the top of the Competitors tab letting you know URLs were auto-disabled. You can investigate the URL, fix the underlying issue (or remove the URL entirely), and use the RESUME action to retry.

How URLs feed your repricing strategy

When you add competitor URLs to a listing, Repricing.app continuously computes the lowest competitor price across all active URLs (after currency conversion) and stores it as the listing's competitor reference. How the repricer uses this value depends on the pricing approach you chose for the strategy assigned to the listing.

The two pricing approaches for own store strategies

In the Pricing step of the strategy wizard, own store strategies (Shopify, BigCommerce, eBay) offer two approaches:

  • Competitor-based pricing (the recommended default). Price relative to your lowest competitor via URL monitoring. Pick a mode:
    • Beat lowest competitor (recommended). Price below the lowest competitor by a fixed amount or percentage.
    • Match lowest competitor. Set your price exactly equal to the lowest competitor price.
    • Stay above lowest competitor. Price above the lowest competitor to protect your brand value.
    This approach requires at least one active competitor URL with a successful price on each listing. Without URLs, the strategy's fallback behavior kicks in (see below).
  • Cost-based pricing. Set prices from your product cost plus a profit target (ROI, Profit Margin, or Fixed Profit). Works without competitor data. In this mode the Competitors tab is hidden because URLs are not used for pricing, but any URLs you've previously added remain stored in the background and reappear if you switch the strategy back to Competitor-based. See Pricing Settings for cost-based details.

What contributes to the lowest competitor calculation

  • A URL contributes if it is currently active (not Paused) and has at least one successfully scraped price on record. URLs in Pending status (added but never scraped successfully) and URLs that were auto-paused after repeated failures are excluded.
  • URLs in Retrying or Failing status still contribute their last successful price while the scraper retries in the background. Only when a URL gets auto-paused (after 5 consecutive failures) does it stop contributing.
  • Prices are converted to the listing's currency using daily FX rates before comparing. The lowest converted value wins. If no FX rate is available for a given currency pair, that URL is skipped from the calculation until a rate becomes available.
  • Adding a URL, scraping a fresh price, pausing or resuming a URL, or deleting a URL recalculates the lowest competitor price for the listing immediately and triggers a fresh repricing cycle.

What happens when there is no competitor reference

If a listing's strategy uses Competitor-based pricing but the listing has no active URLs (or none have ever been scraped successfully), the strategy's fallback behavior kicks in instead. The options you can configure in the Safety Nets step are: hold current price, use min price, or use max price. See Safety Nets for the full details.

Limits

  • Maximum 10 competitor URLs per listing. When you reach the limit, a banner appears in the Competitors tab and the ADD COMPETITOR button is hidden until you remove a URL. Pick the most representative competitors for each listing rather than tracking too many at once.
  • No duplicate URLs per listing. The same URL cannot be added twice to the same listing. The same URL can be tracked on multiple different listings.
  • Label length capped at 100 characters.
  • URL length capped at 2048 characters.

Tips

  • Pick a few strong competitors over many weak ones. Tracking 3 direct competitors usually drives better repricing decisions than tracking 10 loosely-related products.
  • Use labels to stay organized. Labels like "Amazon FBA seller" or "Main DTC competitor" make the table scannable when you have several URLs per listing.
  • Watch the Failing status. A Failing URL has not scraped a fresh price in a while. If it had a successful price before, that stale value is still used as the competitor reference until the URL recovers or gets auto-paused after 5 failures. Fix it (replace with a working URL or remove it) so your repricing decisions stay based on fresh data.
  • Pause instead of delete if you want to temporarily ignore a competitor (for example, during a promotional period) without losing their price history.
  • Combine with cross-channel sync. If you sell the same SKU on multiple own store channels, set up competitor URLs on one listing and use cross-channel listing sync to propagate other pricing inputs (cost, min, max) automatically.

Last updated on May 21, 2026