Skip to main content
Skip to content

How Shop Health is calculated

The formula, data sources, and known limits of Foregrade's Shop Health estimate.

Last updated: 2026-04-19

Shop Health is Foregrade's estimate of your TikTok Shop Performance Score (SPS). It's designed to give you a heads-up about operational health between the times you log into Seller Center to check the authoritative number.

This page explains exactly what goes into it, where it's accurate, and where it's deliberately conservative.

What you see on the card

  • Score (0–100) — weighted composite of the component rates below. Higher is better.
  • Band — Excellent (90+), Good (75–89), Fair (60–74), Poor (under 60). Matches TikTok's public Seller Center banding.
  • Component rates — the raw metrics behind the score, each with a status dot: green (ok), amber (warn), red (bad).
  • "Estimated" chip — always present while we're using derived data. Goes away when we switch to TikTok's authoritative score via Partner Center (see below).

The formula

Score = weighted sum of (1 - penalty) across the four component rates, scaled to 100.

Each component's penalty is:

  • 0 if the rate is at or below the "ok" threshold
  • 0.5 if the rate is in the "warn" band
  • 1 if the rate is above the "bad" threshold

Base weights (before any missing-component re-normalization):

ComponentWeightWhy this weight
Late Dispatch Rate35%TikTok's docs call LDR the #1 driver of SPS. Delivery reliability compounds — late shipments cascade into disputes and returns.
Return Rate25%Direct buyer-dissatisfaction signal; also a hard ceiling for ad eligibility above 5%.
Cancellation Rate25%Seller-initiated cancellations are fully under your control. High cancel rate usually means stockouts or pricing errors.
Dispute Rate15%Rarer than returns, but each dispute is heavier (TikTok reviews manually and can penalize violation points).

When a component isn't available (see limits below), the remaining components' weights are re-normalized to sum to 1. The score stays on a 0–100 scale instead of being artificially deflated.

Where the numbers come from

Every rate above is computed from data Foregrade already pulls during your regular shop sync. No extra permissions, no fresh API calls on dashboard load.

  • Return rate — returns with reverse_type in (return_and_refund, refund_only, replacement) ÷ total orders in the selected window.
  • Cancellation rate — orders with status = cancelled ÷ total orders in the selected window.
  • Dispute rate — returns currently in arbitration (in_progress, support_seller, support_buyer) ÷ total orders.
  • Late dispatch rate — not currently computed (see below).

The window is whatever range you've selected at the top of the dashboard.

Known limitations

We'd rather be honest about what this estimate is not than quietly fudge the number.

1. Late Dispatch Rate isn't computed yet

What's missing: LDR requires comparing each order's rts_sla (TikTok's "ship by" deadline) against when the order actually transitioned to AWAITING_COLLECTION. Our current sync doesn't store those timestamps per order.

Why it matters: LDR is weighted at 35% in the formula, so when it's missing we re-normalize the remaining three components up to 100%. That means your displayed score reacts more strongly to return and cancel rates than TikTok's real SPS would.

What we do about it: the LDR component is excluded cleanly — not zeroed — so the score doesn't fake precision it doesn't have. Adding LDR is ~1 day of sync work; we'll ship it when enough users ask for governance-level detail.

2. Dispute rate thresholds are internal, not TikTok-published

What's the issue: TikTok publicly states thresholds for return rate (2% / 5%) and cancel rate (2% / 4%) in Seller Center Help. They don't publish dispute rate thresholds.

What we use: community-benchmark defaults — 1% ok, 3% warn. Sourced from seller Discord/forum consensus, not official TikTok documentation.

What could go wrong: if your real shop has an unusually high dispute rate that TikTok still considers acceptable, our "bad" dot will overreact. The status dot may be wrong; the rate number itself is accurate.

What we do about it: once we have Partner Center access (below), we'll calibrate our thresholds against TikTok's authoritative band and update this page.

3. Component weights are estimates

What's the issue: TikTok has never published the exact weighting inside SPS. Our 35/25/25/15 split is based on language in their public docs ("LDR is the primary driver", etc.) and patterns observed in seller community reports — not reverse-engineered from ground-truth data.

What could go wrong: your Foregrade Shop Health score may move in the right direction vs the real SPS but not always by the same magnitude. If LDR is already compliant and your return rate spikes, our score may drop harder than TikTok's does.

What we do about it: when TSP (TikTok Shop Partner) access is approved, we'll show both values side-by-side for a calibration period. A regression against observed real-SPS values will give us empirical weights to replace the current estimates. Methodology version will bump from 1.0 to 2.0 with a changelog note.

The plan to remove "Estimated"

Foregrade is applying for TSP certification, which unlocks TikTok's Partner Center Health API. That API returns the authoritative Shop Performance Score, Account Health Rating (AHR), and Creator Health Rating (CHR) — the same numbers you see in Seller Center.

Once approved:

  1. The Shop Health card automatically swaps its data source to TSP. No user action required.
  2. The "Estimated" chip disappears. The card now reads "Live from TikTok Shop."
  3. During the transition (~2 weeks), we may show both values together — our estimate and TikTok's authoritative number — to build confidence that the model is accurate before retiring it.
  4. AHR and CHR surfaces become available as separate cards for shops that opt in.

This is a pending platform relationship, not an engineering task, so we can't give an exact date. Subscribe to the changelog or follow the methodology version on this page.

What to do if our estimate disagrees with Seller Center

Trust Seller Center. It's authoritative. Our estimate is a proxy.

The most common reasons for a gap:

  • Different window. Seller Center defaults to a rolling 30-day window for SPS; you may have a different range selected on Foregrade's dashboard. Switch to "30d" to compare like-for-like.
  • LDR divergence. If your shop has frequent late shipments, Seller Center will show a lower score than our estimate (because we don't yet factor LDR in).
  • Timing. SPS in Seller Center updates once per day, usually overnight in your shop's registered timezone. Our estimate reflects the latest synced data.
  • Violation points. SPS includes direct penalty points for policy violations (counterfeits, shipping disputes, etc.). Our estimate doesn't.

If none of those explain it, let us know — a mismatch is data we can use to improve the formula.

Methodology version: 1.0

This version locked on 2026-04-19. See the changelog for notable updates.

Was this article helpful?

More about account & data