User guide

Trident Foresight — the full walkthrough.

Everything a merchant needs to install, configure, and get real value out of Foresight. If you're looking for quick answers, the Help page has FAQs. If you want to understand what everything does and why, this is the place.

1. Install and first-run onboarding

Install Trident Foresight from the Shopify App Store or directly via the install URL your account manager provides. The OAuth consent screen lists three access scopes:

  • Read products — required, powers side-by-side matching of your catalog against competitors.
  • Write products — required for one-tap defense. Without it Foresight is read-only.
  • Read orders — optional but strongly recommended. Enables real per-SKU velocity from your actual sales so predictions show honest “$/week at risk” numbers instead of a placeholder.

After installation you land on a four-step onboarding modal: welcome, pick 1–3 competitors, we poll them immediately (10–30 seconds each), and a ready screen. Your Home page starts filling with detected changes on the second poll. Predictions typically start surfacing at ≥70% confidence within 3–7 days as we accumulate enough price history to compute per-product cadence.

What determines the 3–7 day warm-up? The prediction model needs at least a few observed price changes per product to compute a reliable cadence. Very stable catalogs (rare cuts) may take longer; very active competitors (frequent cuts) fill in faster.

2. Adding competitors (Shopify + eBay)

Foresight tracks three kinds of competitor: any Shopify (or Woo, BigCommerce, Magento) storefront that exposes a public product feed, any eBay seller username, and any eBay search phrase. All three feed the same predictions, alerts, and Action Center — you don't manage them separately.

Storefront

On Home → Add competitor, keep the picker on Storefront and paste a bare domain (e.g. example-competitor.com). We auto-detect the platform and start polling immediately. Merchant stores that disable their public /products.jsonendpoint, password-protect, or geo-restrict aren't trackable — the poll surfaces a no_products_json status on the competitor row.

eBay seller

Switch the picker to eBay seller and type the seller's username (the public “example-seller” portion, not the display name). Foresight tracks every live listing that seller has, detecting price drops, stock-outs, restocks, and new items. Each listing appears alongside your other products in the Recent Changes feed with an “eBay · seller-name” label.

eBay search

Switch to eBay search and enter a phrase like wireless charger. Foresight watches the top ~100 eBay results for that query and alerts when a new seller undercuts the market, when the median price shifts, or when a listing goes out of stock. Great for categories dominated by aggressive marketplace sellers.

Plan limits count all three the same way — an eBay seller and an eBay search each occupy one competitor slot.

3. The Home page and Action Center

Your Home page has three main surfaces:

  • Action Center — a priority-ranked list of the threats, opportunities, setup tasks and warnings that need your attention today. This is where you spend most of your time.
  • Competitors — the left column showing each tracked competitor, their tags, last poll status, and product count. Click any to drill into their catalog.
  • Recent changes — the right column with the raw event stream: every price move, stock event, launch, and removal in reverse-chronological order. Filterable by competitor, event type, or watched-only.

Action Center card categories

  • Setup (green) — one-time configuration nudges (sync catalog, grant scopes, configure guardrails, connect Slack). Non-dismissible when they block a critical feature.
  • Threat (rose) — a competitor is likely to cut a price you sell. Includes the probability, expected magnitude, expected timing, and a “Review defense” button.
  • Opportunity (emerald) — you're undercut on N% of matched SKUs, or you're cheapest on N% and can defend the position. Links to the Position dashboard.
  • Attention (amber) — a competitor is likely to run out of stock, a webhook is failing, or polling has broken for one of your tracked stores.
  • Upgrade (violet) — you've hit your plan limit and would benefit from Pro/Plus.

Every card has a primary action button. Setup cards navigate to the relevant page. Threat cards open the defense modal. Opportunity cards open the Position dashboard. Attention cards jump straight to the failing subsystem.

Cards you don't want back can be dismissed with the X (14-day cool-off). Cards can also be snoozed for 3 days via “Maybe later”. Setup cards for critical scopes and guardrails are intentionally non-dismissible — they represent policy gaps you should not defer.

4. How predictions work

Foresight's prediction model estimates the probability that a specific competitor will cut the price of a specific product within an expected window. The scoring uses three signals:

  1. Cadence.Every observed price change tightens the model's estimate of how often that product typically moves. If a competitor cuts Product X roughly every 30 days and it's been 28 days since the last cut, base probability is high. If it's been 5 days, base is low.
  2. Inventory drag.If a competitor exposes inventory quantities and stock is falling fast (≥20% drop over the last 14 days), the model adds a bonus — clearing inventory often precedes a price cut. Many storefronts don't expose inventory, in which case this signal is skipped.
  3. Sale-wave detection.If a competitor's overall sales activity is running at 2× their 90-day baseline, the model detects an active sale wave and adds a bonus — merchants on a discount push tend to cascade cuts across their catalog.

Combined via a logistic curve into a single probability score. Predictions only surface at ≥30% probability. Predictions at ≥70% are flagged as high-confidence and unlock the one-tap defense flow.

Impact scoring

Each prediction is scored for merchant impact — probability × relevance × price weight. Relevance is the title similarity score between the competitor's product and your own matched SKU. Price weight is a log-scaled function of the merchant's min-price. The Action Center ranks predictions by this composite score, not by raw probability, so high-confidence predictions on cheap SKUs you don't sell rank below moderate-confidence predictions on premium SKUs you do.

Revenue at risk

If you've granted read_orders, Foresight computes per-SKU weekly velocity from your actual Shopify orders (last 90 days, updated daily). Combined with expected drop magnitude and probability, this becomes an estimated $/week revenue at risk figure. Without read_orders, Foresight falls back to a 10-unit/week industry placeholder and labels the estimate as estimated_default_velocity. The Explain modal on each prediction shows which source the number came from.

5. One-tap defense with guardrails

When a prediction crosses the ≥70% confidence threshold and you have a matched merchant product, the Action Center card's primary button reads Review defense →. Clicking opens a modal with the full picture:

  • Your current price and the predicted competitor landing price
  • The recommended defensive target (1% below the predicted competitor price)
  • The applied price after safety caps (max 15% drop per single defense)
  • A guardrail check — floor, exclusions, daily cap all evaluated inline
  • First-time only: a plain-English risk disclosure with a required “I understand” checkbox

The Apply defense button writes the new price to Shopify immediately via the Admin API. The change takes effect on every channel (storefront, marketplaces, active ads, in-progress carts). If any guardrail fires, the button is disabled and the violation reason is shown in the modal.

Guardrails

Configure store-wide guardrails at Settings → Defense guardrails. Server-enforced — the client cannot override, and no defense can write a price that violates your policy.

  • Price floor— never drop below this percent of the product's current price. E.g. floor = 70 means a defense can go as low as 70% of current, i.e. a max 30% drop.
  • Daily reprice cap — total defensive reprices allowed per UTC day, store-wide. Safety brake against runaway loops from a model bug or competitor cascade.
  • Excluded product IDs — Shopify product IDs (one per line) that are never repriced. For MAP-protected SKUs, brand-tier items, or contractual obligations.
  • Excluded tags — same idea by tag. Saved now, enforced once tag sync ships.

Every applied defense is logged in reprice_jobswith the full inputs: prediction ID, guardrail state, before/after price, Shopify API response. This audit trail is defensible if a supplier or regulator asks “why did this price change on this date.”

Defense is always human-in-the-loop.Nothing writes to Shopify without you clicking Apply on a specific card. There's no rules-based scheduled repricing — that's a deliberate design choice against the “set-and-forget” category norm.

6. Analytics, Position, and Insights

Three pages for three questions:

Position — “Am I winning or losing?”

Portfolio-wide split of your matched SKUs into cheapest / tied (within 1%) / undercut / no-data. Below it, a per-competitor breakdown (“vs Nike I'm cheapest on 40% of overlapping SKUs”), and a filterable product-level list with the gap %. Prices are FX-normalised to your store currency using daily-refreshed rates. This is the page to open first each morning.

Analytics — “What's happening in the market?”

Headline KPIs (events last 7d / 30d, competitor coverage, poll health, alert utilization). Daily activity chart stacked by event type. Top movers — the competitors with the most price changes, plus the products being cut most frequently across your entire competitor set. Model accuracy card showing prediction hit-rate and calibration per bucket. Backtest calibration you can run on demand against your last 90 days of tracked data.

Insights — “What does it mean?”

An AI-written narrative summary of the last 7 days, generated once per store per UTC day by Claude. Highlights the most aggressive competitor, the biggest drops, and one suggested next step in plain English. The same brief lands in your daily digest email if enabled. Cached — subsequent reads that day cost zero Anthropic tokens.

7. Matches — auto-matching and manual overrides

The Matches page shows your products side-by-side with competitor products, matched by title similarity. On the first sync we score every possible pair with Postgres's trigram similarity; matches above 30% surface. The auto-matcher re-runs daily to catch new products and remove stale ones.

Manual overrides

Auto-matching gets things wrong ~20% of the time on messy catalogs. Two controls per row:

  • Pin — asserts “this competitor product is definitely the same as mine.” Pinned matches survive daily auto-sync rebuilds. Shows a green badge on the row.
  • Not a match — explicit rejection. The pair is hidden and the auto-matcher will not resurface it in future runs.

Missing a match entirely? Click + Add match at the top of any product group to search your entire tracked competitor set and pin an additional match. Search uses the same trigram similarity + substring fallback.

8. Integrations — Slack, email, webhooks, API

Slack

Settings → Slack webhook→ paste an incoming-webhook URL from your workspace. Alerts fire on matching events based on your alert rules. Test button sends a sample message. Rate-limited so a burst of events doesn't spam the channel.

Daily digest email

Settings → Daily digest email → enable + set the recipient. Sent at 14:00 UTC. Contains the AI narrative (Pro+) plus a grouped list of the last 24 hours of change events. Skipped on days with no changes. Preview button sends the current-state digest to your inbox immediately for verification.

Outgoing webhooks (Pro+)

Settings → Outgoing webhooks → add any HTTPS endpoint. HMAC-SHA256 signed payloads for every subscribed topic — price_change, stock_out, restock, new_product, prediction_high_confidence, defense_applied, and more. Every subscription has a Test button that fires a synthetic payload marked test: true. Auto-disables after 10 consecutive failures. Payload docs and a Node.js signature-verification snippet are in the same section.

Common integrations built on webhooks:

  • Klaviyo or Attentive — trigger a winback flow to your list when prediction_high_confidence fires for a product you sell.
  • Zapier or n8n — journal every defense_applied to Airtable or Google Sheets.
  • Custom Shopify Flow — wire a stock_out to auto-flag a competitor product on your merchandising dashboard.

Public REST API

Settings → API tokens → create a token. Use as a Bearer against /api/v1/* endpoints: /api/v1/competitors, /api/v1/matches, /api/v1/changes. Token-scoped rate-limiting; tokens are hashed at rest.

CSV export

Export buttons on Home (competitors, changes) and Matches (product matches). Downloads immediately, RFC-4180 CSV, 10 000-row cap per export. For larger exports use the REST API with pagination.

9. Settings tour

  • Plan — current tier, feature comparison, upgrade CTA. Payment via Shopify's billing system.
  • Slack webhook — connect for real-time alerts.
  • Daily digest email — enable/disable, set recipient, send preview.
  • Alert rules — per-event-type toggles + minimum drop % threshold for price-change alerts. Optional tag filter to alert only for tagged competitors.
  • Defense guardrails — floor %, daily cap, excluded IDs, excluded tags. Server-enforced.
  • Outgoing webhooks — subscription list, add/remove/test. Pro+ only.
  • Alert scope — watched-products-only toggle, quiet hours (skip alerts between two UTC hours).
  • Locale — number and date formatting. Defaults to your browser locale.
  • API tokens — create, revoke, view last-used timestamp.
  • Legal — version of Terms + Privacy + DPA you accepted, and when. Kept for audit.

10. Plans, limits, and upgrading

FeatureFreePro ($29/mo)Plus ($79/mo)
Competitors tracked15Unlimited
Polling frequencyDaily (06:00 UTC)HourlyHourly
Event retention30 days90 days180 days
Slack + email alerts
Side-by-side matching
AI daily narrative
One-tap defense with guardrails
Outgoing webhooks
Public REST API
Backtest calibration

Upgrade via Settings → Plan → Upgrade to Pro. Payment handled through Shopify's recurring application charge system — appears on your regular Shopify bill. Cancel any time by uninstalling the app; the subscription ends immediately, no cancellation fee.

Annual billing is available at a 15% discount on Pro and Plus — email dean@tridentbi.com to switch. Charged as a single annual RecurringApplicationCharge on your Shopify bill.

11. What we collect, retain, and delete

Foresight receives from Shopify at install: your shop's *.myshopify.com domain, an offline access token, your product catalog (via read_products), your merchant email, and — if granted — aggregate order line-item quantities from the last 90 days (via read_orders). We do not store customer PII, addresses, payment details, or shipping information from orders.

You provide: the competitor domains/sellers/keywords you want to track, optional Slack webhook URL, digest email address, alert rules, guardrail settings, outgoing webhook URLs and secrets, API tokens (hashed at rest).

Retention is plan-dependent (see the table above). Configuration is kept for the life of the install.

On uninstall, all merchant data is permanently deleted within 48 hours in fulfilment of Shopify's shop/redact webhook. Encrypted database backups roll off within a further 30 days.

Full details: Privacy Policy and DPA.

12. Troubleshooting common issues

“Grant access” button doesn't open a Shopify consent screen

The button breaks out of the embedded iframe via window.open('_top')— App Bridge intercepts it. If nothing happens, check your browser is allowing pop-ups from the Shopify Admin domain. Failing that, log into your Partner Dashboard and confirm the requested scopes exceed what's already granted (otherwise Shopify silently completes without prompting).

Competitor shows status “no_products_json”

The competitor's storefront disables its public /products.jsonendpoint, is password-protected, or geo-restricts access. Nothing Foresight can do — the data isn't publicly available and we don't use scrapers.

Predictions aren't showing up after a week

Predictions need a few observed price changes per product to compute cadence. Very stable competitors (rarely change prices) may take 2–4 weeks. Check Analytics → Model accuracy — if Predictions · 7dis zero, the model hasn't yet found any product-competitor pair with enough history to surface at ≥30% probability.

Auto-match got a product wrong

Go to Matches → find the wrong pair → click Not a match (hides + prevents re-matching). If the correct competitor product is elsewhere in your tracked set, click + Add matchat the top of your product's group, search, and Pin it. Pinned matches survive daily rebuilds.

A defense is blocked with “below your X% floor”

Your Settings → Defense guardrails → Price floor is too high for the predicted magnitude. Either lower the floor (accept a larger max drop per defense) or accept the block — this is exactly the safety net doing its job.

Anthropic AI narrative returns “Requires setup”

An ANTHROPIC_API_KEYhasn't been configured on the Foresight server side. This is a global config issue, not merchant-side — contact dean@tridentbi.com.

Still stuck

Email dean@tridentbi.com with your *.myshopify.com domain and a description of what went wrong. Business-hours GMT, best-effort outside.

Ready to try it? Install on Shopify →. Also see the Help FAQ for quick answers, the Blog for design commentary, or the DPA for enterprise procurement.