PPCGotcha

How a dollar figure is produced

Each check is deterministic. The finding on your account stores the inputs, the threshold, and the formula in the language you are reading. This page is the short version. Nothing here is a promise that Amazon will accept every row. The bulk format we target is documented with the product.

Health score uses six rates. Weights, set by the owner: spend at or under target CPA 30, verified inefficiency 25, structural hygiene 15, harvest coverage 10, settings risk 10, data quality 10. Points equal the weight times the rate. For an excess, the rate is one minus the excess share. That inversion, and rescaling the score when a part is not calculated, are our defaults, not an owner ruling. A missing target CPA leaves spend-at-target, verified inefficiency, and settings risk as not calculated.

Monthly figures multiply the window total by 30 / days. Days are inclusive. If a file has no dates, the window is treated as 30 days and the finding says so.

  1. 1. search_term_spend_no_sales

    No-sale, campaign × term

    D30. At least 4 clicks, and either clicks at or above 0.5·ln(0.1)/ln(1−CVR) with spend ≥ 0.5×T, or spend ≥ T. The click floor is rounded up. That rounding is our default pending D226. The unit is the campaign and the term (D10). The last 3 days are left out when the file is daily (D06).

    Needs a portfolio target CPA. Without it, this part is not calculated. No negative is written.

  2. 2. inefficiency_above_target

    Converting above target CPA

    Excess = max(0, spend − orders × T) on a campaign × term unit that has orders. Our default reading of verified inefficiency. No bid change is written.

    CPA above the portfolio target.

  3. 3. off_amazon_leak

    Off-Amazon versus the portfolio target

    D86, D83, D161. Off-Amazon only, at least 100 clicks, one-sided binomial at CPA = T, then Benjamini–Hochberg at 5%. The 95% bar, the 100 clicks, and the 5% false-discovery rate are the owner's. The binomial family is our default. The $25 rule is not used.

    Needs the same portfolio target CPA. No setting change is written.

  4. 4. duplicate_targets

    Duplicate targeting

    Same portfolio, same advertised product (ASIN, else SKU), same keyword text and match type, or the same product-target expression. Avoidable cost is the full spend of a zero-order copy when the keeper has orders; otherwise clicks × max(0, copy CPC − keeper CPC). Structural hygiene only.

    Two or more enabled copies. No dollar floor and no pause.

  5. 5. search_term_overlap

    Search-term overlap

    The same customer search term with spend in two or more enabled ad groups that share a portfolio and the same products. Extra cost uses the duplicate split. Informational. No fix row.

    Two or more ad groups. No dollar floor.

  6. 6. report_reconciliation

    Report totals

    D04. |a − b| / max(a, b) within ±1% on the same window. Our default: a gap equal to Off-Amazon plus creator spend is explained.

    An unexplained gap above 1% warns.

  7. 7. invalid_traffic_share

    Invalid click share

    D93 and D94. Invalid clicks / gross clicks. Informational. Not in the score's dollar inputs.

    A campaign at or above 20%.

  8. 8. strong_pending

    Strong and strategic

    Terms the seller listed are left out of the dollar headline. D198 is still open, so the card says pending definition.

    Pending definition.

  9. 9. sb_product_collection

    Sponsored Brands Product Collection

    Count SB bulk rows whose entity is Product Collection Ad. Manual Collection Ad is not this format. Shown only when at least one Product Collection Ad row is present.

    Retirement month: February 2027.

  10. 10. schema_change

    Unknown report column

    Every header must map to a known field or an explicit context column. An unknown header fails loudly (D-1).

    Any unknown column, or a missing spend column on a performance report.