---
title: Make URL Coupons Work for Guests and Cached Sites
description: WooCommerce URL coupon not working for guests or on a cached site? Fix the session and data storage settings.
url: "https://wpfactory.com/docs/woocommerce-url-coupons-guests-caching/"
updated: "2026-09-27"
category: Troubleshooting
---

# Make URL Coupons Work for Guests and Cached Sites

If a URL coupon works for logged-in users but not for guests, or fails on a heavily cached store, the fix is almost always in how the session and data storage are configured in [Coupons & Add to Cart by URL Links for WooCommerce](https://wpfactory.com/item/url-coupons-woocommerce/). This article walks through the free settings that make coupon links reliable for everyone. Every option here is free.

### Symptom

- A coupon link applies the discount when you are logged in, but does nothing for a guest (not logged in) visitor.
- The coupon works on a staging site but not on the live, cached site.
- The discount briefly appears, then the cart looks empty again (common with page caching plugins).

### Cause

Applying a coupon needs a WooCommerce session. Guests do not always have one started yet, and full-page caching can serve a cached copy of the page before the session is created, so the coupon never gets a chance to apply. The plugin has several options that force a session early and change where coupon data is stored, which together solve this.

### Fix: work through these settings in order

All of these are on the **Advanced** and **General** sub-tabs at **WPFactory > Coupons by URL** (also reachable at **WooCommerce > Settings > URL Coupons**). Change one at a time and re-test as a guest in a private browser window.

1. **Keep Force session start on.** On the **General** sub-tab, **Session > Force session start when a URL with the coupon key is accessed** is on by default. It starts a guest session as soon as a coupon link is opened. Leave it enabled.
2. **Turn on the earlier session start.** If guests still miss the coupon, tick **Force session start earlier and everywhere**. This starts the session sooner in the page load, which helps on cached sites.
3. **Switch the main hook.** On the **Advanced** sub-tab, change **Main hook > Hook** from **WP Loaded** to **Init** (or back), then re-test. Different themes and hosts fire these at slightly different times.
4. **Store data in a cookie.** On the **Advanced** sub-tab, set **Data storage type** to **Cookie**. Cookies survive page caching better than sessions on some hosts.
5. **Enable Javascript reload.** Also on **Advanced**, tick **Javascript reload**. It reloads the page once via Javascript when a coupon is detected in the URL, so a cached first response does not block the coupon. This works best with **Data storage type** set to **Cookie**.
6. **If you use WP Rocket,** tick **WP Rocket: Disable empty cart caching** to stop an empty-cart page being cached and served after the coupon is applied.

### Options reference

| Label | Option ID | Default | Free/Pro |
| --- | --- | --- | --- |
| Force session start | `alg_wc_url_coupons_force_start_session` | Yes | Free |
| Force session start earlier and everywhere | `alg_wc_url_coupons_force_start_session_earlier` | No | Free |
| Main hook | `alg_wc_url_coupons_main_hook` | wp_loaded | Free |
| Data storage type | `alg_wc_url_coupons_data_storage_type` | session | Free |
| Javascript reload | `alg_wc_url_coupons_javascript_reload` | No | Free |
| WP Rocket: disable empty cart caching | `alg_wc_url_coupons_wp_rocket_disable_cache_wc_empty_cart` | No | Free |

### Still not applying?

- Test as a true guest in a private or incognito window. A logged-in admin session can hide the guest-only problem.
- Exclude the cart, checkout, and any coupon landing page from full-page caching in your caching plugin.
- If the coupon should apply only after a product is added, that is the **Delay coupon** feature, not a bug. See the guide on delaying a URL coupon.

### Need a hand?

If coupons still will not apply for guests after these steps, our team answers every ticket on the [URL Coupons support forum](https://wpfactory.com/support/item/url-coupons-woocommerce/). Tell us your caching setup and host so we can point you to the right combination.

Related articles

- [URL Coupons: Additional Tips](https://wpfactory.com/docs/additional-tips-url-cart/)
- [URL Coupons: Troubleshooting Specific Issues](https://wpfactory.com/docs/specific-issue-fixes/)
- [How to Translate URL Coupon Text with WPML and Polylang](https://wpfactory.com/docs/woocommerce-translate-url-coupon-notices/)
- [How to Set a Redirect URL Per Coupon](https://wpfactory.com/docs/woocommerce-redirect-url-per-coupon/)
- [How to Delay a URL Coupon Until a Product Is Added](https://wpfactory.com/docs/woocommerce-delay-url-coupon/)
