# Amazon Net PPM Analysis: Find ASIN Margin Leakage

Canonical page: https://www.kuudo.com/guides/vendor-net-ppm-margin-leakage/

Use Amazon Net PPM analysis to rank ASIN margin deterioration and separate cost, funding, and discount pressure where the report exposes those fields.

Author: Thomas Spicer
Updated: Oct 19, 2026

## Summary

Use the Manufacturing-view Net PPM dashboard to rank ASINs by current shipped revenue times any negative Net PPM rate change. Then separate PCOGS, CCOGS, and sales-discount movement where those fields are exposed, marking the calculations as derived rather than native Amazon metrics. Amazon aims to update weekly ARA reports within 72 hours but allows up to a week, and Warehouse Deals are excluded.

For Amazon Net PPM analysis, compare each Amazon Standard Identification Number (ASIN), rank each negative rate contribution, then decompose the largest drags into shipped COGS/PCOGS, CCOGS, and sales-discount pressure where the connected report exposes those fields. The ranking is Kuudo-derived, not an Amazon metric. Amazon's dashboard identifies products driving profitability up or down after costs, funding, and discounts.

That answers my question: *"Our Vendor Central revenue looks fine but margin is sliding. Which ASINs are actually dragging down our pure product margin?"* Revenue cannot show which equation term changed. The report must answer materiality first, then cause where the component fields support it.

| Question | Test | Report output |
| --- | --- | --- |
| Biggest drag? | Rate-leakage proxy | Ranked ASINs |
| Cost pressure? | PCOGS/revenue up | Cost flag |
| Funding pressure? | CCOGS/revenue down | Funding flag |
| Discount pressure? | Discounts/revenue up | Discount flag |

The rate-leakage proxy and driver tests are Kuudo-derived from the sourced equation. Amazon does not name these fields.

[ChatGPT, Claude, Perplexity, and Copilot](/features/ai-clients/) know nothing about your business out of the box. Your competitors use those tools too. Kuudo gives those same tools your edge: your data, your rules, and the way your business operates. That means **your account as it is right now**, **your judgment running every time**, and **your call before anything changes**.

- The [Vendor Central MCP](/features/amazon-vendor-central-mcp/) supplies live profitability context. It is built on the vendor side of the Selling Partner API, and a brand that also sells on Amazon connects the [Selling Partner MCP](/features/amazon-selling-partner-mcp/) beside it.
- [Skills](/features/skills/) preserve how your team ranks and explains margin leakage.
- [Amazon Agent Atlas](/features/agent-atlas/) applies Amazon-specific guidance.
- Approval controls keep decisions with you.

## The Net PPM dashboard identifies products driving profitability up or down

The Net PPM dashboard identifies products that raise or lower profitability. It lives in Amazon Retail Analytics, which Amazon's reports index separates from Brand Analytics. An ABA customer or search dashboard is not the source.

The retrieved **Amazon Retail Analytics and Reports Overview** defines Net PPM around cost of goods, vendor funding, and sales discounts. That keeps the Skill focused on profitability instead of treating revenue as a margin answer.

| Run field | Bound value |
| --- | --- |
| Skill | `vendor-net-ppm-margin-leakage` |
| Input | Account and two periods |
| Scope | Selected ASIN set |
| Connector | Vendor Central MCP |
| Grounding | Atlas `amazon_vendors` |
| Output | `analysis_report` |

| Report header | Recorded value |
| --- | --- |
| Report | ASIN Net PPM analysis |
| Vendor scope | Connected account or group |
| Marketplace | Connected marketplace |
| View | Manufacturing |
| Current period | Selected closed period |
| Comparison period | Selected comparable period |
| Data as of | Close and refresh status |
| Warehouse Deals | Excluded |
| Material move | `{{material_ratio_move_pp}}` pp |
| Residual tolerance | `{{residual_tolerance_pp}}` pp |

The report renders its executive answer instead of hiding it in a notebook:

| Executive result | Bound result |
| --- | --- |
| ASINs reviewed | `{{asins_reviewed}}` |
| Negative PPM changes | `{{negative_change_count}}` |
| Top-five leakage share | `{{top_five_leakage_share}}` |
| Largest flagged driver | `{{largest_driver}}` |
| Boundary warnings | `{{boundary_warnings}}` |

Only the connected run populates those values. When a component field is unavailable, the executive answer keeps the ASIN ranking and marks the driver analysis incomplete.

> **The AI is shared. The moat is yours.**
> - **Your account, as it is right now.** Without a connected account, you must export and paste the dashboard data. The shared AI can discuss margin, but it cannot inspect the current ASIN rows or determine whether the selected account exposes the Net PPM dashboard. The Vendor Central MCP supplies that live vendor context.

## Net PPM separates revenue, PCOGS, CCOGS, and sales-discount pressure

Net PPM separates four signed components, so each available ratio's direction supports a first-pass driver flag. The normalized equation is:

```text
Net PPM =
  (shipped revenue
   - shipped COGS [PCOGS]
   + CCOGS
   - sales discounts)
  / shipped revenue
```

To check one period's total by hand, the [Amazon Net PPM calculator](/tools/amazon-net-ppm-calculator/) applies the same equation to four totals.

The **Amazon Retail Analytics Metric Glossary** defines Shipped COGS as Amazon's item procurement price, also called Product Cost of Goods Sold (PCOGS). Contra-COGS (CCOGS) is vendor funding collected for agreements tied to purchases, customer sales, or marketing.

CCOGS includes Vendor Allowance, Quick Pay Discounts, and Discretionary COOP, but excludes display-ads Contra-COGS. One glossary rendering says "shipped CCOGS" in the subtraction term. The report normalizes it to shipped COGS/PCOGS because CCOGS is separately defined as the added funding term.

| Type | Report field | Meaning |
| --- | --- | --- |
| Observed | Shipped revenue | Shipment-item price |
| Observed | Shipped COGS/PCOGS | Amazon procurement cost |
| Observed | CCOGS | Collected vendor funding |
| Observed | Sales discounts | Discount formula term |
| Derived | PCOGS ratio | PCOGS divided by revenue |
| Derived | CCOGS ratio | CCOGS divided by revenue |
| Derived | Discount ratio | Discounts divided by revenue |

The run records a material-move threshold and a residual tolerance. Those are operator inputs, not Amazon thresholds.

| Driver flag | Derived rule | Interpretation |
| --- | --- | --- |
| PCOGS pressure | Cost magnitude clears threshold | Procurement cost drag |
| Funding pressure | Funding magnitude clears threshold | Less vendor funding |
| Discount pressure | Discount magnitude clears threshold | More sales discount |
| Mixed | Two magnitudes clear threshold | Shared cause |
| Unclassified | No clear or complete cause | Check scope or rounding |

Each component effect is signed: a negative value reduces Net PPM. Its pressure magnitude is `max(-component_effect_pp, 0)`.

- A **single-driver** label requires exactly one pressure magnitude greater than or equal to `{{material_ratio_move_pp}}` percentage points, and that magnitude must be the largest.
- **Mixed** requires two or more pressure magnitudes to clear the same threshold.
- **Unclassified** covers a missing component, no magnitude that clears the threshold, or an absolute residual greater than `{{residual_tolerance_pp}}` percentage points.

The output records both inputs beside every label so another run can reproduce the classification.

> **The AI is shared. The moat is yours.**
> - **Your judgment, running every time.** A pasted topline-revenue prompt can produce a plausible but unverified formula. You still have to supply current PCOGS, CCOGS, discounts, and revenue, and the shared AI can conflate Product Cost of Goods Sold with Contra-COGS. Atlas supplies the definitions the Skill applies on every run.

## A rate-leakage proxy ranks material ASIN deterioration before investigation

Holding current revenue constant and multiplying it by a negative Net PPM rate change prioritizes ASINs with material sales and worsening margin. A large swing on a tiny ASIN cannot automatically outrank a larger drag.

**Kuudo-derived calculations, not Amazon metrics**

```text
net_ppm_delta_pp
  = current_net_ppm_pct - prior_net_ppm_pct

current_margin_dollars_proxy
  = current_shipped_revenue * current_net_ppm_pct / 100

rate_leakage_dollars_proxy
  = current_shipped_revenue
    * max(prior_net_ppm_pct - current_net_ppm_pct, 0)
    / 100

pcogs_ratio_delta_pp
  = current_pcogs_ratio_pct - prior_pcogs_ratio_pct

ccogs_ratio_delta_pp
  = current_ccogs_ratio_pct - prior_ccogs_ratio_pct

discount_ratio_delta_pp
  = current_discount_ratio_pct - prior_discount_ratio_pct

pcogs_effect_pp
  = -pcogs_ratio_delta_pp

ccogs_effect_pp
  = ccogs_ratio_delta_pp

discount_effect_pp
  = -discount_ratio_delta_pp

component_pressure_magnitude_pp
  = max(-component_effect_pp, 0)

explained_delta_pp
  = pcogs_effect_pp + ccogs_effect_pp + discount_effect_pp

residual_delta_pp
  = net_ppm_delta_pp - explained_delta_pp
```

Holding revenue constant isolates rate deterioration from volume. The dollar fields are prioritization proxies, not booked loss, reimbursement value, or Amazon-calculated fields. Rounding and unavailable components can prevent reconciliation.

The report sorts `rate_leakage_dollars_proxy` descending and fills five rows from the connected periods. The bindings contain no sample ASINs or percentages.

| Rank | ASIN | Current revenue | Prior revenue | Prior PPM | Current PPM | Delta | Leakage |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | `{{rank_1_asin}}` | `{{rank_1_revenue}}` | `{{rank_1_prior_revenue}}` | `{{rank_1_prior_ppm}}` | `{{rank_1_current_ppm}}` | `{{rank_1_delta_pp}}` | `{{rank_1_leakage}}` |
| 2 | `{{rank_2_asin}}` | `{{rank_2_revenue}}` | `{{rank_2_prior_revenue}}` | `{{rank_2_prior_ppm}}` | `{{rank_2_current_ppm}}` | `{{rank_2_delta_pp}}` | `{{rank_2_leakage}}` |
| 3 | `{{rank_3_asin}}` | `{{rank_3_revenue}}` | `{{rank_3_prior_revenue}}` | `{{rank_3_prior_ppm}}` | `{{rank_3_current_ppm}}` | `{{rank_3_delta_pp}}` | `{{rank_3_leakage}}` |
| 4 | `{{rank_4_asin}}` | `{{rank_4_revenue}}` | `{{rank_4_prior_revenue}}` | `{{rank_4_prior_ppm}}` | `{{rank_4_current_ppm}}` | `{{rank_4_delta_pp}}` | `{{rank_4_leakage}}` |
| 5 | `{{rank_5_asin}}` | `{{rank_5_revenue}}` | `{{rank_5_prior_revenue}}` | `{{rank_5_prior_ppm}}` | `{{rank_5_current_ppm}}` | `{{rank_5_delta_pp}}` | `{{rank_5_leakage}}` |

I would not hand operations a rank-only table. The same rows continue into the causal review and ownership queue:

| ASIN | Cost effect | Funding effect | Discount effect | Residual | Driver |
| --- | --- | --- | --- | --- | --- |
| `{{rank_1_asin}}` | `{{rank_1_pcogs_effect}}` | `{{rank_1_ccogs_effect}}` | `{{rank_1_discount_effect}}` | `{{rank_1_residual}}` | `{{rank_1_driver}}` |
| `{{rank_2_asin}}` | `{{rank_2_pcogs_effect}}` | `{{rank_2_ccogs_effect}}` | `{{rank_2_discount_effect}}` | `{{rank_2_residual}}` | `{{rank_2_driver}}` |
| `{{rank_3_asin}}` | `{{rank_3_pcogs_effect}}` | `{{rank_3_ccogs_effect}}` | `{{rank_3_discount_effect}}` | `{{rank_3_residual}}` | `{{rank_3_driver}}` |
| `{{rank_4_asin}}` | `{{rank_4_pcogs_effect}}` | `{{rank_4_ccogs_effect}}` | `{{rank_4_discount_effect}}` | `{{rank_4_residual}}` | `{{rank_4_driver}}` |
| `{{rank_5_asin}}` | `{{rank_5_pcogs_effect}}` | `{{rank_5_ccogs_effect}}` | `{{rank_5_discount_effect}}` | `{{rank_5_residual}}` | `{{rank_5_driver}}` |

| ASIN | Investigation note | Owner | Evidence request |
| --- | --- | --- | --- |
| `{{rank_1_asin}}` | `{{rank_1_note}}` | `{{rank_1_owner}}` | `{{rank_1_evidence}}` |
| `{{rank_2_asin}}` | `{{rank_2_note}}` | `{{rank_2_owner}}` | `{{rank_2_evidence}}` |
| `{{rank_3_asin}}` | `{{rank_3_note}}` | `{{rank_3_owner}}` | `{{rank_3_evidence}}` |
| `{{rank_4_asin}}` | `{{rank_4_note}}` | `{{rank_4_owner}}` | `{{rank_4_evidence}}` |
| `{{rank_5_asin}}` | `{{rank_5_note}}` | `{{rank_5_owner}}` | `{{rank_5_evidence}}` |

If components are unavailable, the rank still ships, the driver reads **Unclassified**, and the queue requests the missing evidence rather than fabricating a cause.

> **The AI is shared. The moat is yours.**
> - **Your judgment, running every time.** The shared AI can suggest ranking logic after you paste data. You must still assemble comparable periods, normalize percentages, run the calculations, and carry the ranked result into a separate work queue. The Skill preserves the ranking logic and produces the queue from each connected period.

## Manufacturing-view access and Warehouse Deals exclusions define the report boundary

ARA access does not guarantee Net PPM access. All vendors have Sourcing views; manufacturers also receive a Manufacturing view for ASINs they manufacture. Amazon displays Traffic, Net PPM, and Forecasting only to manufacturers. If an eligible manufacturer cannot see Net PPM, contact retail partners or open a Contact Us case.

Amazon's wording says Brand Analytics, including ARA, excludes Warehouse Deals because vendors do not collect the proceeds. Retail-partner tools may include those sales, so a vendor-facing and internal number can legitimately differ.

| Boundary check | Report status | Next step |
| --- | --- | --- |
| View | Manufacturing required | Check entitlement |
| Period | Closed and populated | Rerun after refresh |
| Data as of | Status recorded | Avoid instant-data claim |
| Warehouse Deals | Excluded consistently | Reconcile internal scope |
| Metric labels | PCOGS differs from CCOGS | Re-map before ranking |
| Derived fields | Explicitly labeled | Keep separate from Amazon |

Amazon aims to update weekly reports within 72 hours, but reports can take up to a week after period close. The report records its period and as-of status instead of calling the data instantaneous.

The provenance footer records exact evidence instead of counts:

| Evidence type | Identifier |
| --- | --- |
| Source ref | `3dff9404cf730721` |
| Source ref | `42c4d79b31a1eefd` |
| Source ref | `285ce9ce068d666c` |
| Content hash | `f334dd577810b7ca` |
| Content hash | `647fba2b2a4cc729` |
| Content hash | `927f70d802757798` |
| Content hash | `2d8af27996d3f246` |
| Content hash | `8e9bd73e5f629c0a` |
| Content hash | `33460c203219fb4b` |
| Content hash | `5dde3db908638908` |

It also records Atlas collection `amazon_vendors`, corpus version `794a9c3de8380dfa`, connected periods, run timestamp, and the exact titles **Amazon Retail Analytics and Reports Overview**, **Amazon Retail Analytics Metric Glossary**, and **Vendor Reports and Analytics Overview**. Derived prioritization fields remain labeled as non-native Amazon metrics.

> **The AI is shared. The moat is yours.**
> - **Your account, as it is right now.** The shared AI cannot inspect your view entitlements or reconcile a vendor export with an internal retail-partner number. The Vendor Central MCP supplies the authorized scope, while Atlas keeps the Warehouse Deals boundary attached to the comparison.

## What happens next: turn the ranked report into an investigation queue {#what-happens-next}

Turn the ranked report into an investigation queue, not an automatic commercial decision. Run the workflow on closed, comparable periods and preserve the as-of status.

1. Review the top ASINs and, where PCOGS, CCOGS, and sales-discount fields are exposed, confirm the largest component effect. When they are not, preserve the rank, mark the driver unclassified, and request the missing evidence.
2. Assign an owner.
3. If Warehouse Deals or an internal retail-partner scope explains a mismatch, flag the row for reconciliation instead of rewriting the vendor-facing metric.
4. Review the evidence before changing terms or escalating, because Amazon did not supply remediation thresholds or an automatic action policy in the retrieved material.

The [Amazon Agent Data layer](/features/amazon-agent-flow/) combines [Amazon Ads MCP](/features/amazon-ads-mcp/), [Vendor Central MCP](/features/amazon-vendor-central-mcp/), [Amazon Agent Atlas](/features/agent-atlas/), and [Skills](/features/skills/) so the report can be grounded, rerun, reviewed, and handed to an operator as one workflow.

Revenue can stay stable while ASIN economics deteriorate; a sourced Net PPM decomposition turns that ambiguity into a ranked investigation queue.

*Next, use the same evidence-first pattern when [disputing PO on-time accuracy chargebacks](/guides/vendor-po-chargeback-disputes/).*


## Frequently asked questions

### How is Net PPM calculated in Amazon Retail Analytics?

Net PPM is shipped revenue minus shipped COGS or PCOGS, plus CCOGS, minus sales discounts, divided by shipped revenue. Amazon defines Shipped COGS as its item procurement price and CCOGS as vendor funding it collects.

### What is the difference between PCOGS and CCOGS?

PCOGS is Product Cost of Goods Sold, the price Amazon paid the vendor for item procurement. CCOGS is Contra-COGS vendor funding, including Vendor Allowance, Quick Pay Discounts, and Discretionary COOP; display-ads Contra-COGS is excluded.

### Why can't I see the Net PPM dashboard in Vendor Central?

Amazon typically displays Net PPM only to manufacturers in Manufacturing view. A vendor can have Amazon Retail Analytics access through Sourcing view and still not have the Net PPM dashboard.

### Does Net PPM include Warehouse Deals sales?

No. Amazon's ARA guidance excludes Warehouse Deals because the vendor does not collect those proceeds, although internal retail-partner tools may include them.

### How fresh is Amazon Retail Analytics data?

Amazon says it aims to update weekly reports within 72 hours, but reports may take up to a week after a reporting period closes. Record the report period and as-of status on every run.

### Which ASIN should I investigate first when Net PPM falls?

Rank ASINs by current shipped revenue times the negative Net PPM rate change, then inspect PCOGS, CCOGS, and sales-discount movement where available. That rate-leakage value is a Kuudo-derived prioritization proxy, not an Amazon metric or booked loss.


## Sources

- [Amazon Vendor Central](https://vendorcentral.amazon.com/)

- [AWS Guidance for Amazon Seller and Vendor Central Data Producer](https://docs.aws.amazon.com/solutions/amazon-seller-and-vendor-central-data-producer/)

- [Amazon Brand Analytics](https://sell.amazon.com/tools/amazon-brand-analytics)

