Pricing inconsistencies in WooCommerce can quickly erode customer trust—especially when the price displayed on a product page doesn’t match what’s charged at checkout.
In this case, a WooCommerce store displayed incorrect bulk discount pricing on product pages, while the correct pricing was applied at checkout. The issue was traced to outdated product meta data that had fallen out of sync with the current pricing configuration.
Issue Background
A WooCommerce product showed conflicting pricing depending on where the customer viewed it:
- Product page displayed:
- Base price: $259.95
- Bulk discount (36+ units): 3.9% → $249.94
- Actual checkout calculation:
- Discount applied: 5.6% → $245.23
This created confusion and potential trust issues, since:
- Customers saw one price on the product page
- A different price was applied during checkout
The expected behavior was for both to match, using the correct discount of 3.9%.
Diagnosis
The issue was traced to a legacy pricing system using a custom product meta field:
_pss_volume_discounts
1. Dual data sources for pricing
- Bulk Discount tiers (editable in the WordPress admin)
- A JSON-based meta field (
_pss_volume_discounts) used for:- Product page display
- Cart calculations (in legacy logic)
2. Data mismatch between systems
- Updating discount tiers in the WordPress editor did not update the JSON meta field
- The product page relied on outdated JSON data
- Checkout calculations used updated logic
This caused the pricing “drift” between frontend display and actual totals.
3. Legacy architecture issue
- The JSON field was originally generated during product imports
- It was intended as a cached representation of discount tiers
- It was not automatically refreshed when products were manually edited
Over time, discrepancies accumulated across products.
Resolution Steps
1. Sync JSON meta with current discount tiers
- Implemented a save hook to regenerate
_pss_volume_discounts - Ensured data stays consistent with the latest discount configuration
This resolved the mismatch for newly saved products.
2. Re-save affected products
- Existing products required re-saving to trigger the sync
- This updated their pricing data to match current tiers
3. Implement batch reprocessing (recommended)
- Proposed a background cron job
- Re-saves products in small batches
- Runs during low-traffic hours
This approach ensures:
- Minimal performance impact
- No disruption to customers
- Full data consistency over time
4. Plan long-term improvement
- Update product pages to read directly from Bulk Discount tiers
- Use JSON only as a cache or remove it entirely
This removes the risk of future mismatches.
Final Outcome
- Product page pricing and checkout pricing were aligned
- Updated products displayed correct discount tiers
- A scalable approach was implemented for fixing legacy data
Key takeaway
If your WooCommerce pricing doesn’t match between product pages and checkout, the issue may not be calculations—it may be data synchronization.
Watch for:
- Cached or duplicated pricing data
- Legacy meta fields that aren’t automatically updated
- Multiple systems controlling the same values
Ensuring a single source of truth is critical for accurate pricing.
If you need help troubleshooting WooCommerce pricing issues or cleaning up legacy data structures, Freshy can help: