SKUs that diverge between Shopline and Amazon. Brand-trust killer + de-listing risk under MAP policies.
At a glance
Count of SKUs listed on both Shopline and Amazon where price differs by >20% OR title differs (Levenshtein >5) OR primary image hash differs. The brand-consistency canary, divergence here triggers MAP-policy violations and Amazon Buy Box suspensions. Unlike OnBuy’s price-only drift, this card also catches title and image divergence common in APAC fashion catalogues.
| What it counts | COUNT(SKUs WHERE listed on both AND (ABS(price_a - price_b) / price_a > 0.20 OR title_levenshtein(a, b) > 5 OR image_hash(a) != image_hash(b))). Three drift dimensions; any one triggers the count. |
| Source data | Shopline GET /v1/products (variant price, title, primary image URL) joined to Amazon SP-API GET /listings/items for the merchant’s region. |
| Match key precedence | (1) GTIN / EAN / UPC / JAN where available, (2) seller-SKU, (3) manual ASIN cross-reference. |
| Drift dimensions | (a) Price gap >20%, (b) title Levenshtein distance >5 (catches paraphrased titles, missing keywords, language mismatch in HK/TW catalogues that run Trad-Chinese on Shopline and English on Amazon), (c) primary image perceptual-hash mismatch (catches different product photography between channels). |
| Currency | Both sides converted to common reporting currency for the price-gap check. FX from daily-close rates. |
| Refunds / cancellations | Not relevant; this is a catalogue-state card, not order-driven. |
| Time window | RT (re-evaluated every 6 hours; webhook-driven on inventory and price updates). |
| Alert trigger | >5 SKUs drifted (>20% price OR title mismatch). |
| Sentiment | None directly; the count is the signal. |
| Roles | owner, marketing, operations. |
| Only when | has_amazon_sibling = true. |
Calculation
Calculated automatically from your Shopline data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
An APAC fashion brand running Hong Kong Shopline + Amazon JP, snapshot taken 27 Apr 26. The brand has 142 SKUs listed on both. The drift comparison flags 11:| SKU | Drift type | Detail |
|---|---|---|
| FB-201 (linen blouse, oat) | Price | Shopline HK 510 (+34%) |
| FB-203 (linen blouse, sage) | Price | Shopline HK 495 (+30%) |
| FB-104 (cotton tunic) | Title | Shopline 棉質長衫, Amazon JP “Cotton Long Tunic - Off White, Linen-blend” (Levenshtein > 30) |
| FB-105 (cotton dress) | Title | Same SKU, totally different language and keyword set |
| FB-118 (denim jacket) | Image | Shopline shows lifestyle shot (model wearing); Amazon shows flat-lay product shot |
| FB-205 (silk scarf) | Price | Shopline HK 195 (-19%, just under threshold… actually -25% with FX adjustment, drifted) |
| FB-308 (leather belt) | Price + Image | Both dimensions |
| (… 4 more rows …) |
- Price drift (7 SKUs). Most are Amazon JP higher than HK Shopline by 20 to 35%, justifiable as the JP market tolerates higher fashion prices and FX volatility absorbs some difference, but the gap is too wide to ignore. Risk: cross-border resellers buying from HK Shopline and reselling on Amazon JP at lower prices than the merchant’s own listing, which Amazon will eventually flag.
- Title and image drift (4 SKUs). Language mismatch is the easy fix (translate Shopline titles to consistent JP keywords); image mismatch needs a brand-consistency review (do we want lifestyle on Shopline and flat-lay on Amazon, or harmonise?).
Sibling cards merchants should reference together
| Card | Why it matters next to drift count | What the combination tells you |
|---|---|---|
| Marketplace Revenue Share (Amazon) | Channel weight. | Higher Amazon share + higher drift = bigger MAP-risk surface area. |
| Active Ads on OOS SKUs | Ad-OOS twin. | Both cards detect cross-channel inefficiency; one on price/title, the other on stock vs ads. |
| Top Products by Revenue | Drift on hero SKUs is most expensive. | If drifted SKUs include top-10 by revenue, the dollar impact of fixing is highest. |
| Missing Descriptions | Catalogue-quality cousin. | A merchant with poor catalogue hygiene on Shopline tends to have title drift vs Amazon too. |
| Refund Rate | Image-drift downstream. | Image mismatch correlates with “looks different from photo” refunds; cross-reference. |
| Catalogue Drift vs Amazon UK (OnBuy) | Cross-platform pattern. | Same archetype, different upstream. |
| SKU Coverage | Match-key health. | If SKU coverage is low, match-precision is weaker, and drift count may be inflated by false matches. |
| Shopline Health Score | Composite. | Drift drags the health score because it represents structural risk, not transient operational noise. |
Reconciling against the vendor’s own dashboard
Where to look: Neither Shopline nor Amazon offer a built-in cross-channel comparison; this is a Vortex IQ-only view. The closest manual workflow is:Shopline Admin -> Products -> Export (CSV with prices, titles, image URLs) Amazon Seller Central -> Inventory -> All Inventory (export with prices, titles) Compare in Excel using EAN/JAN as the join key.Image drift is effectively impossible to spot manually at scale; the perceptual-hash check is the unique value of this card. Why our number may legitimately differ from a manual comparison:
| Reason | Direction | Why |
|---|---|---|
| Title comparison | Ours stricter | We use Levenshtein distance >5, which catches paraphrasing; manual comparisons usually only flag exact mismatches. |
| Image hash | Ours surfaces this | Vendor consoles do not expose image hashes; this dimension is impossible to manually replicate. |
| FX rate for price gap | Either | We use daily-close FX; manual price comparisons may use month-end or “mental math” rates that differ. |
| Stability filter | Ours lower | We require drift to hold for 7 consecutive days; flash-promo drift is excluded. |
| Variant rollup | Marginal | Apparel parent-child variant trees do not always 1:1 between Shopline and Amazon. |
| Restricted brand listings | Ours lower | Listings the merchant cannot freely reprice (brand-registry restricted) are excluded since action is impossible. |
shopline_xc_catalogue_drift = COUNT(SKUs WHERE listed on both AND ANY drift dimension exceeds threshold AND drift_days_consecutive >= 7)
The drill-down view shows per-SKU dimension breakdowns for action prioritisation.
Known limitations / merchant FAQs
Why is the price threshold 20% here but 15% on the OnBuy version? Because Amazon JP / US fee structures and FX volatility absorb a wider naturally-occurring gap than UK marketplaces. 20% is the rule-of-thumb threshold where Amazon’s Fair Pricing crawler reliably flags listings; below that is structural noise. My title drift is mostly because the channels run different languages. Is that a problem? Not necessarily a brand-trust problem; it is a discovery problem. If your Shopline runs Trad-Chinese and Amazon JP runs JP keywords, that is correct localisation. The card flags it as “drift” so you can decide; if intentional, mark the SKU asvortexiq_localised_title to exclude from the count.
Image drift seems too sensitive; can I tune it?
The perceptual-hash threshold is configurable per-merchant in the manifest. Default is the standard pHash distance threshold; tightening or loosening shifts the count.
My count includes a SKU I deliberately list at different price points by region. How do I exclude it?
Tag the SKU vortexiq_intentional_price_drift and provide an annotation. The card excludes it but logs the annotation for audit history.
How fast does drift get detected after I update one channel?
6 hours typically (the price/title sync cadence); image drift is detected once per 24 hours. The 7-day stability filter then delays the count update by a week to avoid flagging transient promos.
Why does the card include both price and image drift in one count?
Because both create the same business risk (brand-trust erosion, MAP-policy violation, Amazon Buy Box suspension), and the action playbook overlaps (visit each drifted SKU, decide whether to harmonise or document the divergence). The drill-down view separates dimensions for prioritisation.
My drift count went from 11 to 14 overnight. What happened?
Three usual causes. (1) New SKU launched on one channel before the other (transient drift; will resolve when the second channel catches up). (2) Bulk price update on one side without the other (deliberate human action; the card is doing its job). (3) Image refresh on one side; if the merchant updated Amazon photography but not Shopline, the image-drift count rises until they harmonise.
What is “Levenshtein distance”?
The minimum number of single-character edits (insertions, deletions, substitutions) to convert one string to another. Distance >5 means the titles are meaningfully different, not just whitespace or punctuation variants. For Asian languages we use a character-level distance, not byte-level, so Trad-Chinese characters count as one unit each.
Does this card account for Shopline’s pre-order tag?
Pre-order and “coming-soon” tagged SKUs are excluded since they are not actively buyable. The exclusion list is configurable per-store.