Data Validations
38 Checks
28 BPC* Checks (73.68%)
10 Our Checks
*BPC: Best Practice Committee suggestion
The PS Score (0–100) measures how well a supplier's PromoStandards implementation follows best practices and data quality standards. A score of 100 means all checks pass for every product.
Tier Weights
Each check is assigned to one of three tiers based on its importance to distributor data quality:
Proportional Deductions
For product-level checks, the deduction is proportional to the failure rate. If 10 out of 100 analyzed products fail a Critical check (weight 5), the deduction is only 5 × 10% = 0.5 points, not the full 5.
For service-level checks (e.g., implementing services), the check is binary: pass or fail with the full weight.
Formula
Total possible weight = 101 points across all 38 scored checks.
Example
A supplier fails the "Implementing all important services" check (Critical, weight 5) and 30 out of 100 products fail "Every product has description" (Critical, weight 5):
- Service deduction: 5 (full weight, binary fail)
- Description deduction: 5 × 30% = 1.5
- Total deduction: 6.5 out of 101
- Score: 100 × (1 − 6.5 / 101) = 94
| Check | Service | BPC | Tier | Weight | Notes |
|---|---|---|---|---|---|
| Latest services availability | All | Important | 3 | Implements: - Product: 2.0.0 - MED: 1.1.0 - PPC: 1.0.0 - INV: 2.0.0 - ODRSTAT: 2.0.0 - OSN: 2.0.0 - INVC: 1.0.0 - PO: 1.0.0 |
|
| Implementing all important services | All | Critical | 5 | Implements: Product, INV,ODRSTAT, OSN, PPC, MED, PO, INVC | |
| Every product has brand | Product | Important | 3 | All products should have brand | |
| Every product has details | Product | Critical | 5 | When calling to getProduct we found an error of some kind | |
| Every product has description | Product | Critical | 5 | All products should have description. Important for a good catalog. |
|
| Parts in getProductSellable = parts in getProduct | Product | Important | 3 | Some suppliers's don't send parts in getProductSellable | |
| Every product has keywords | Product | Important | 3 | All products should have keywords. It helps to create a semantic search. |
|
| Every product has priceExpiresDate | Product | Important | 3 | All products should have priceExpiresDate. This is important so distributors can minimize the number of calls they need to get accurate pricing. |
|
| Every product has marketingPoint | Product | Nice to Have | 1 | All products should have marketingPoint | |
| Every product has lineName | Product | Nice to Have | 1 | All products should have lineName | |
| Every product has imprintSize | Product | Nice to Have | 1 | All products should have imprintSize | |
| Every product has defaultSetUpCharge | Product | Nice to Have | 1 | All products should have defaultSetUpCharge | |
| Every product has maxImprintColors per LocationDecoration | Product | Nice to Have | 1 | All products should have maxImprintColors | |
| Every product has priceGroup.description | Product | Nice to Have | 1 | All products should have priceGroup.description | |
| Every product has priceDiscount | Product | Nice to Have | 1 | All products have priceDiscount | |
| Every part has ColorArray | Product | Critical | 5 | All parts should have ColorArray. It should not be used in place of unique parts. |
|
| Every part has primaryMaterial | Product | Nice to Have | 1 | All parts should have primaryMaterial | |
| Every part has dimension | Product | Important | 3 | All parts should have dimension | |
| Every part has leadTime | Product | Important | 3 | All parts should have leadTime | |
| Every part has gtin | Product | Important | 3 | All parts should have gtin Helps with marketing on Google Merchant Center. |
|
| Every part has ProductPackagingArray | Product | Important | 3 | All parts should have ProductPackagingArray Include all quantity and box size variations. |
|
| Every part has color with hex | Product | Nice to Have | 1 | All parts should have color with hex Helps when displaying swatch colors. |
|
| Every part has color with approximatePMS | Product | Nice to Have | 1 | All parts should have color with approximatePMS | |
| Every part has color with standardColorName | Product | Nice to Have | 1 | All parts should have color with standardColorName | |
| Every product has well formed productPackaging | Product | Important | 3 | All products should have well-formed productPackaging | |
| Every product has media content | MED | Critical | 5 | All products has at least one MEDIA content | |
| Every image has classType | MED | Important | 3 | All images should have at least one classType | |
| Every part has primary image | MED | Critical | 5 | All parts should have a primary image | |
| Every part has single primary image | MED | Important | 3 | All parts should have a single primary image | |
| Every part has single blank image | MED | Important | 3 | All parts should have a single blank image | |
| Grouped product photos should not be associated to a part ID | MED | Nice to Have | 1 | All grouped product photos should associated to a product ID or null, but should be associated with a PartID | |
| Blank images should not be classified as decorated | MED | Nice to Have | 1 | Images cannot be classified as blank and decorated at the same time | |
| Every product has PPC | PPC | - | - | All products should have PPC details | |
| Every product has FOB points | PPC | Critical | 5 | Even if decorations are not supported, distributors should know all the places they can get products | |
| Every product has Available Locations | PPC | Important | 3 | Distributors should know all the locations where decorations can be placed if decorations are supported. | |
| Every product has Available Charges | PPC | Important | 3 | if decorations are supported, the list of available charges should be accessible | |
| Every product has decorations | PPC | Important | 3 | getConfigurationAndPricing should return decorations available for the product | |
| Every product has Inventory details | INV | Critical | 5 | We get an error response when calling to inventory levels |