Trade pricing hidden until verified, how does this actually work in Magento?
Cleanly. Magento has native customer-group-based pricing + category visibility. The architecture:
- Customer groups:
NOT_LOGGED_IN(default, sees MSRP),pending_verification(registered but not yet license-verified, sees MSRP + “verification in progress” banner),licensed_pro(verified, sees trade pricing 30-50% below MSRP). Optionallicensed_pro_tier_2for high-volume buyers with extra discount tiers. - Price scope per group: on each product, set MSRP as the base price + a tier price for
licensed_progroup. Native Magento. Works in cart, checkout, all the email templates. - Hide trade price from logged-out users: the GraphQL / REST product endpoint must gate the tier-price field by customer group. Default Magento exposes all tier prices in GraphQL even to anonymous users, that’s a scrape attack waiting to happen. Patch the resolver to only return the customer’s group’s tier price.
- Scraper defense: Cloudflare bot-management + rate-limit on the product endpoint. Optionally fingerprint repeat visitors and block the obvious scrapers from competitors.
The trickier piece: MAP (minimum advertised price) compliance. Brands like Olaplex Pro have strict MAP rules; you can’t show trade pricing publicly, only after login + verification. Native Magento handles this; the audit trail (showing the brand auditor that pricing is gated) lives in customer-group access logs.
A SalonCentric / CosmoProf clone runs exactly this pattern: MSRP shown to public + Google, professional pricing visible only after license verification.