Last checked: October 2026.
Most static export tools give up on WooCommerce, and for a fair reason: a shop changes all the time. Prices go on sale, stock runs out, and every visitor has their own cart. But the pages that bring customers in — product pages, categories and your content — are the same for everyone. Those can be static; the parts that are personal or transactional stay on WordPress.
Why stores are hard to make static
- Prices and stock change after you export, so a frozen page can show the wrong price or sell something that is out of stock.
- The cart belongs to one visitor. WooCommerce keeps it in a session identified by a cookie.
- Checkout takes payments and talks to payment providers, which must reach WordPress.
- My Account shows a logged-in customer’s own orders.
What can be static and what must stay dynamic
| Page or action | Static? | How |
|---|---|---|
| Product pages | Yes | Static HTML for speed and SEO; live price and stock loaded on top |
| Shop and category pages | Yes | Same as product pages |
| Blog, guides, landing pages | Yes | Plain static pages |
| Add to cart | No | Must reach WordPress so the item lands in the visitor’s cart |
| Cart, checkout, My Account | No | Always served by WordPress |
| Payment provider callbacks | No | Must reach WordPress directly |
Three ways to run a shop with static pages
- Keep the shop dynamic. Export only your content and leave products out. The simplest option — with Pinery Static, leave the
producttype unticked — but product pages get none of the speed benefit. - Static product pages with live data. Export products and shop pages, refresh prices and stock in the browser from WooCommerce, and keep cart and checkout on WordPress. This is what Pinery Static Pro does.
- Go headless. Rebuild the storefront in a JavaScript framework on top of WooCommerce’s APIs. The most flexible option, and the most work.
How Pinery Static Pro keeps a shop working
- Product and shop pages are exported as static HTML, with the price and stock as they were at export time.
- When a visitor opens the page, a small script asks the WooCommerce Store API (
/wp-json/wc/store/v1, a public, unauthenticated API) for the current price and stock, and replaces the exported values. Out-of-stock products get a disabled button. - Add-to-cart forms and
?add-to-cartlinks point straight at WordPress, so items go into the normal WooCommerce cart that/cart/and/checkout/show. - Cart, checkout and account pages are excluded from the export by default and are served by WordPress.
- With the bundled Worker router on your domain,
?add-to-cart,wc-ajaxrequests and every form post go to WordPress, and any page not in the static build — including products published since the last deploy — falls back to WordPress instead of a 404.
Why one domain matters for a shop
The WooCommerce cart lives in a cookie set by your WordPress domain. If the static pages are on example.com and WordPress is on wp.example.com, customers switch addresses on the way to the cart, and links between the two have to be right everywhere. A router that serves both from the same domain avoids this: the static pages, the cart and checkout all share one address and one cookie.
Testing checklist
- Change a price in WordPress and check the static product page shows the new one without a re-export.
- Set a product out of stock and confirm the button is disabled.
- Add to cart from a static page, then open the cart and check out.
- Apply a coupon in the cart.
- Make a test payment and confirm the order status updates, which proves the payment provider can reach WordPress.
- Confirm cart, checkout and account pages are never cached by the CDN.
Frequently asked questions
Can a WooCommerce store be completely static?
No. Cart, checkout and account pages are personal to each customer and must be served by WordPress. Product, category and content pages can be static.
Will customers see out-of-date prices?
Not with live hydration: the exported price is replaced with the current one when the page loads. The cart and checkout always calculate prices in WordPress, so the amount charged is always current.
Does Simply Static support WooCommerce?
Its own FAQ says stores, checkouts and logged-in areas are not a good fit for a static site. Pinery Static Pro is built to keep them working alongside static product pages.
Does a static shop help SEO?
Product and category pages load faster, and the product structured data from your theme or SEO plugin is kept in the exported HTML.