Product IDs configured and match store console setup
Why it matters
Placeholder product IDs like com.example.app.monthly or counts that do not match the paywall UI mean purchases fail at the store layer before revenue is ever collected. The StoreKit or Play Billing call returns an unknown-product error, the paywall renders a broken CTA, and every install that reaches the purchase screen churns out with zero attribution. This is pure reference-integrity and placeholder-hygiene failure — the code and the App Store Connect / Play Console records must agree exactly or the integration is dead on arrival.
Severity rationale
High because placeholder or mismatched IDs silently break every purchase attempt, destroying conversion before any revenue lands.
Remediation
Replace every placeholder identifier with the exact reverse-domain IDs created in App Store Connect or the Play Console, and centralize them so the paywall UI and purchase calls cannot drift apart:
// src/constants/iap.ts
export const PRODUCT_IDS = {
MONTHLY: 'com.yourcompany.yourapp.monthly',
ANNUAL: 'com.yourcompany.yourapp.annual',
} as const;
For RevenueCat, manage products in the dashboard and reference entitlement identifiers (premium, pro_monthly) in code — never hardcode store-level product IDs when an SDK is fetching offerings.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the App Store IAP & Subscriptions Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from app-store-iap-subscriptions·automated