Settings Reference
Every setting on the Super Speedy → AJAX Prices page, what it does, and when to use it. The page has two tabs: Main (enable, display, behaviour and the customer test) and Settings (Ajax Type and the benchmark). All settings are stored as WordPress options.
| Setting | Tab | Option name | Default |
|---|---|---|---|
| Enable Ajax Prices | Main | ssap_enabled | yes |
| While prices load (mode) | Main | ssap_display_mode | reveal (Dimmed) |
| Dim amount | Main | ssap_dim_opacity | 0.15 |
| Reveal speed | Main | ssap_fade_ms | 180 (ms) |
| Spinner style | Main | ssap_spinner_style | ring |
| Spinner colour | Main | ssap_spinner_color | (theme colour) |
| Loading text | Main | ssap_loading_text | “Loading…” |
| Ajax stock too | Main | ssap_refresh_stock | no |
| Preload the other stock state’s scripts | Main | ssap_prime_stock_assets | yes |
| Stock loading style | Main | ssap_stock_display_mode | same (Same as prices) |
| Do not wait above | Main | ssap_stock_spinner_threshold | 10 |
| Out of stock for longer than | Main | ssap_stock_outofstock_settled_days | 0 (always wait) |
| Wait for products that do not manage stock | Main | ssap_stock_spin_unmanaged | no |
| Refresh stock for: product types | Main | ssap_stock_types | every type |
| Also refresh: virtual products | Main | ssap_stock_virtual | no |
| Also refresh: downloadable products | Main | ssap_stock_downloadable | no |
| Two-state buttons on archives (BETA) | Main | ssap_archive_two_state | no |
| Ajax prices for logged-in users | Main | ssap_disable_for_logged_in | on (option = no) |
| Ajax prices with a cart | Main | ssap_disable_with_cart | on (option = no) |
| Ajax Type | Settings | ssap_ajax_type | normal-ajax |
| Plugins Fast/Ultra Ajax loads | Settings | ssap_fast_ajax_plugins | (auto-detected) |
| Also skip the theme | Settings | ssap_fast_ajax_skip_theme | no |
Enable Ajax Prices
What it does: The master switch. When off, prices are left server-rendered and no placeholders or script are output — the plugin does nothing. On by default.
While prices load
What it does: Controls what a human visitor sees in the split second before their real price arrives — Dimmed (default), Spinner, or Loading text — plus the associated tuning (dim amount, reveal speed, spinner style/colour, loading text). All modes keep the real price in the HTML for search engines. Full detail, and which to pick, in Display While Prices Load.
Ajax stock too
What it does: In the same batched AJAX request as prices, also refreshes each product’s stock text (“5 in stock”, “Out of stock”), its loop Add to Cart button, and — on a product’s own page — the whole Add to Cart area, including whatever a back-in-stock plugin renders in place of it. Lets you fully cache product/archive pages while showing live, per-visitor-correct stock.
When to use it: Enable if your stock changes often enough that a cached “in stock” label could be wrong. It does a little more work per request, so it’s off by default. See Live Stock Refresh.
Preload the other stock state’s scripts
What it does: On a product page, renders the opposite stock state once behind the scenes, discards that HTML, and keeps only the scripts and styles it asked for. Back-in-stock plugins usually load their assets only when they show their form, so without this a form swapped onto a cached page can arrive unstyled and inert.
When to use it: Leave it on whenever Ajax stock too is on. Switch it off only if a plugin on your store misbehaves when its form is rendered twice — then name its handles with the ssap_prime_stock_asset_handles filter instead. Has no effect when Ajax stock too is off.
While stock loads
A cached page can show the wrong stock state for as long as the live state takes to arrive. These control what the visitor sees in the meantime, and – more usefully – when not to make them wait at all. All of them apply once Ajax stock too is on.
Stock loading style
What it does: Picks what covers the stock line and the Add to Cart area while the live state is in flight: Same as prices (the default, so it follows your While prices load choice), Dimmed, Spinner, Loading text, or Show the cached state immediately.
When to use it: Leave it on Same as prices unless you want stock to behave differently from prices. It covers both the stock text and the button deliberately, because hiding “In stock” while leaving a working button underneath does not stop the wrong impression. While it is waiting the button is not clickable, so nobody can add a sold-out item to their cart.
Do not wait above
What it does: Above this quantity, the Add to Cart button shows instantly with no dimming or spinner. Default 10. Set it to 0 to make everything wait.
When to use it: A product cached with 500 in stock has almost certainly not sold out in the seconds since. Raising this removes the loading state from most of your catalogue while keeping it where it matters.
Out of stock for longer than
What it does: A product that has been sold out for more than this many days is shown as sold out immediately, rather than waiting for confirmation. Measured in days, default 0, which means always wait.
When to use it: 0 is the safe setting and the right default, because being wrong about “out of stock” costs you the sale. Raise it if you carry lines that sit dead for long stretches. Products whose sold-out date the plugin has not seen always wait, whatever this is set to.
Do not wait above and Out of stock for longer than are the two settings that decide how often a visitor sees a loading state at all. A store with healthy stock levels and a threshold of 10 shows the button instantly on nearly every product, and only makes people wait on the ones genuinely close to selling out.
Wait for products that do not manage stock
What it does: When off (the default), a product with stock management disabled shows its Add to Cart immediately. When on, it waits for the live state like everything else.
When to use it: Leave it off. With no quantity to judge by there is nothing for the threshold above to work with, so waiting buys certainty at the cost of a delay on every such product.
Refresh stock for
Which products get their stock text and Add to Cart button refreshed. Prices are not affected by anything here – every product still gets its own live price.
Product types
What it does: An include-list of product types. Every type is ticked by default, including any a plugin registers later, so Bundles, Composite and Subscriptions appear here on their own once those plugins are active.
When to use it: Untick a type whose Add to Cart area is owned by another plugin and comes out wrong after a refresh.
Also refresh: virtual and downloadable products
What it does: Two separate checkboxes, both off by default. Virtual and downloadable are settings on a product rather than product types, which is why they are not in the list above.
When to use it: Leave them off if you sell downloads. Downloads plugins replace Add to Cart with their own download button, and refreshing that area puts a plain Add to Cart back in its place. Off by default means a store selling downloads works the moment stock refresh is switched on, with nothing to read first.
Switching stock refresh on for a downloads store and finding the download button replaced by a plain Add to Cart. Also refresh: downloadable products is off by default precisely to prevent this – leave it off unless you have checked that your downloads plugin survives the swap.
What it does: Ships both stock states for every card on shop and category pages, so a stock change is handled in the browser with no request to the server. Off by default. With it off, archive pages fetch a replacement button from the server when stock changes.
When to use it: It removes a server round-trip, but it costs real page weight on a large grid because every card carries both states. It is marked BETA for that reason – measure it on your own shop before leaving it on.
Ajax prices for logged-in users
What it does: When on (default), logged-in visitors get AJAX pricing like everyone else. Turn it off to give logged-in users normal server-rendered prices with no placeholder.
When to use it (off): Most caching layers bypass the cache entirely for logged-in users, so their pages already show correct prices server-side — turning this off saves them AJAX work they don’t need. Leave it on if your cache does serve cached pages to logged-in users, so members get their own price rather than the one baked into the page. (Stored as the inverse option ssap_disable_for_logged_in.)
Serving one shared cached page to logged-in customers is a bigger job than pricing alone, because that HTML carries every personalised part of the markup. It takes compatibility work on your theme and plugin stack, which we carry out as a service – request a compatibility assessment.
Ajax prices with a cart
What it does: When on (default), AJAX pricing runs even once the visitor has items in their cart. Turn it off to render normal server-side prices for anyone whose cart is not empty (checked both server-side and client-side via the woocommerce_cart_hash cookie).
When to use it (off): Most caching layers stop serving cached pages once a visitor has a cart, so those pages already render correct prices and AJAX pricing is unnecessary. A useful safety net on edge caches that might serve cached HTML to has-cart visitors. (Stored as the inverse option ssap_disable_with_cart.)
Ajax Type
What it does: Chooses how the prices request is delivered — Normal Ajax (default), Normal REST, Fast Ajax, Fast REST or Ultra Ajax — trading speed against compatibility. Replaces the old Transport + Enable Fast Ajax options.
When to use it: Start on Normal Ajax (works everywhere). Use the Benchmark to pick the fastest type that still returns correct prices for your store — often Fast Ajax on plugin-heavy sites. This is the single most important choice for performance and correctness, so it has its own guide: Choosing an Ajax Type.
Ajax Type is the single most important setting here. Start on Normal Ajax, then use the Benchmark to pick the fastest type that still returns correct prices – usually Fast Ajax on plugin-heavy stores.
Plugins Fast/Ultra Ajax loads
What it does: The allow-list of plugins that Fast Ajax, Fast REST and Ultra Ajax load in addition to WooCommerce and this plugin. Likely price-affecting plugins are pre-ticked.
When to use it: Tick any plugin that changes your prices (dynamic pricing, memberships, wholesale, multi-currency). If a Fast/Ultra type returns wrong prices in the benchmark, the fix is usually ticking the plugin that provided the missing rule. Ignored by the Normal types, which load everything.
Tick every plugin that changes your prices – dynamic pricing, memberships, wholesale, multi-currency. If a Fast or Ultra type shows wrong prices in the benchmark, the fix is almost always ticking the plugin that was providing the missing rule.
Also skip the theme
What it does: Trims the active theme from Fast/Ultra Ajax requests. The price response is pure data, so the theme is not needed.
When to use it: Leave on for the extra speed, unless a theme-provided pricing filter is involved (the benchmark will flag a price mismatch if so).
Where these are read
The price/behaviour options are consulted in two places that always agree: when the placeholder is inserted at render time, and inside the endpoint that returns the live data. The Ajax Type, plugin list and skip-theme options are read by the bundled must-use helper that trims or bypasses the request. For the developer-facing verbose-logging constant, see the Developer Reference.

Comments