Compatibility & Integrations
What Super Speedy AJAX Prices works with, how, and the caveats. Because the real price/stock is computed by WooCommerce inside the live AJAX request, the plugin inherits most of WooCommerce’s own compatibility — anything that filters WooCommerce’s price or stock generation is picked up automatically.
Product types
| Type | Supported | Notes |
|---|---|---|
| Simple products | Yes | Core case. |
| Variable products | Yes | Placeholder gets an extra ajax-price-variable class; price refreshes again on found_variation when a variation is selected. |
| WooCommerce Product Bundles | Yes (adapter) | Adds per-child stock data — see below. |
| WooCommerce Composite Products | Yes (adapter) | Adds per-component/per-option stock data — see below. |
| External/affiliate, grouped | Yes | Treated as normal products; price HTML is replaced like any other. |
Only published products are ajaxified — draft/private/scheduled products are intentionally left with their server-rendered price (admins previewing them still see the correct price).
WooCommerce Product Bundles
When the Product Bundles plugin is active, an adapter registers automatically and enriches the AJAX stock payload for bundle products with a bundled_items map: per-child product_id, is_in_stock, is_purchasable, is_optional, max_stock, and sold_individually, plus the bundle’s overall stock status/quantity roll-up. This lets a cached page show accurate “X is sold out” state for a bundle’s children without extra requests. The adapter is a no-op if Product Bundles isn’t installed.
WooCommerce Composite Products
Similarly, when Composite Products is active an adapter adds a components map to the payload: per-component title, optional flag, default option, and per-option is_in_stock / is_purchasable state. No-op when the plugin is absent.
Both adapters are built on the public
ssap_stock_data_for_productfilter, so the same mechanism can support future product types without changing the core. Developers can hook the same filter — see Developer Reference.
Auto Infinite Scroll
First-class integration. When Auto Infinite Scroll appends new product cards, the plugin listens for the auto-infinite-scroll-complete event and refreshes the newly appended products. Crucially it fetches only the new product IDs, not the whole page again (already-loaded placeholders are skipped).
Infinite scroll stays cheap: each batch of appended products triggers one request for just the new IDs, never a re-fetch of the products already on screen. Scrolling a long category never re-does work it has already done.
Dynamic pricing plugins
Generally compatible. Because get_price_html() runs inside the live AJAX request for the current visitor, role-based pricing, quantity/discount rules, and similar logic are applied at that moment and reflected in the swapped-in price. Caveat: if a dynamic-pricing plugin renders its own price markup through a completely custom mechanism (not via WooCommerce’s woocommerce_get_price_html filter), the plugin can’t place a placeholder there — test your specific combination.
Multi-currency / currency switchers
Generally compatible (see Multi-Currency Setup) for switchers that hook WooCommerce’s pricing and detect currency server-side per request (the AJAX request carries the visitor’s session/cookies, so the switcher resolves the right currency). Caveat: switchers that change currency purely client-side after page load may need their own re-trigger — the plugin re-runs on wc_fragments_refreshed and found_variation, and exposes the ssap_prices_updated event other scripts can listen to or you can re-init from.
Caching plugins & CDNs
Designed for full-page caches and edge/CDN caching — that’s the core use case. See Caching Plugin Configuration for per-plugin setup (WP Super Cache, W3 Total Cache, LiteSpeed, WP Rocket, Cloudflare/edge).
Themes & page builders
Works with any theme that renders prices through WooCommerce’s standard woocommerce_get_price_html filter — including block themes, classic themes, /
![]()
Cache Everything for Everyone
€1,450.00
Add to cart
![]()
Country Based Prices
![]()
Super Speedy Archives
![]()
Super Speedy Performance Analysis
![]()
Term Descriptions
![]()
Scalability Pro
![]()
Super Speedy Imports
![]()
External Images
![]()
Delayed Image Import
![]()
Super Speedy Search
![]()
Super Speedy Filters
![]()
Super Speedy Ajax Prices
![]()
Super Speedy Coming Soon
![]()
Super Speedy Sitemaps
![]()
Fullscreen Typeform
![]()
Datafeedr Merchant Research
![]()
Auto Infinite Scroll
![]()
Super Speedy Chat
![]()
Super Speedy Emails
shortcodes, and builder grids that use WooCommerce product widgets. The script is enqueued site-wide on the front end and no-ops where there are no placeholders, so shortcode and builder pages are covered. Caveat: a theme that bypasses WooCommerce’s price filter entirely and prints prices by hand can’t be ajaxified — those prices simply render normally.
![]()
Term Descriptions
![]()
Cache Everything for Everyone
€1,450.00
Add to cart
![]()
Super Speedy Archives
![]()
Country Based Prices
![]()
Super Speedy Performance Analysis
![]()
Delayed Image Import
![]()
Super Speedy Coming Soon
![]()
Super Speedy Emails
![]()
Super Speedy Ajax Prices
![]()
Super Speedy Chat
![]()
Super Speedy Imports
![]()
Super Speedy Sitemaps
The one hard limit is the woocommerce_get_price_html filter. If a theme, page builder or pricing plugin prints its price markup by hand rather than through that filter, the plugin has nowhere to place a placeholder, so that price renders as normal (from cache) and is never swapped. If a price refuses to update, this is the first thing to check.
Known limitations
- Custom price markup that bypasses
woocommerce_get_price_htmlcannot be placeholdered (see dynamic pricing / themes above). - Purely client-side currency or pricing changes may need a manual re-init via the
ssap_prices_updatedflow. - Headless/REST front ends don’t use the HTML-filter approach — consume the
ssap_get_pricesaction directly instead (see Consuming ssap_get_prices (Headless)).
If you hit an integration that doesn’t behave, the Troubleshooting article’s diagnostic steps are the place to start.

Comments