Free Tool
4.9/5 from G2 reviews

WooCommerce Add-to-Cart Link Generator

One URL that drops the product straight into the cart. Classic links for every WooCommerce version, and the new checkout links with multiple items and a coupon for 10.0+.

Have the product URL? Resolve the ID automatically (optional)

Make it readable, branded and measurable.

Shorten your add-to-cart URL to something like go.yourstore.com/deal and count every human click before it reaches the store.

Shorten for free

How It Works

1. Enter the product

1. Enter the product

Paste the product URL to resolve the numeric ID automatically, or type it from wp-admin.

2. Pick format and options

2. Pick format and options

Classic for any version; checkout link for multi-item carts and coupons on 10.0+.

3. Copy your link

3. Copy your link

Test it on your store, then share or shorten it.

The Two Formats, and When Each Wins

WooCommerce has quietly had shareable cart links since its earliest versions, and in 2025 it grew a second, more powerful format. They behave differently enough that picking the wrong one breaks campaigns, so here is the honest comparison.

BehaviourClassic ?add-to-cartCheckout link (10.0+)
Works onEvery WooCommerce versionWooCommerce 10.0+ only (June 2025)
Products per linkOneMany: products=123:2,456:1
Coupon by URLNo, in any core versionYes, &coupon=CODE, if coupons are enabled
Existing cartAppends to it; reloads add againEmptied first, silently
Buyer lands onThe page you append it toCheckout, always

The coupon myth, settled

Half the tutorials online show a coupon parameter on a classic add-to-cart URL. Core WooCommerce has never had one: the add-to-cart handler reads only the product, quantity, variation and attribute parameters, and the only classic coupon entry point is a posted form that a URL cannot trigger. What those tutorials are describing is a paid extension. Since WooCommerce 10.0, the checkout-link format finally does it in core, which is why this generator offers a coupon field only in that mode, labelled with the version it needs.

Variable products without the guesswork

For a product with sizes or colours, the reliable link uses the variation ID directly: ?add-to-cart=1067 where 1067 is the exact combination. IDs are numeric only, never SKUs or slugs. If you paste a variable product's URL into the resolver, it warns you so you do not ship a link that silently adds nothing.

Make the landing deterministic

A classic link normally leaves the visitor on whatever page it was appended to; a store setting can redirect to the cart, and you cannot know a store's setting from outside. Appending the parameter to /cart/ or /checkout/ sidesteps the ambiguity, which is exactly what the landing-page picker in this generator does.

Then make it shareable

Raw cart URLs are long, and the classic form re-adds on every reload, which is a real hazard when people paste it around. Shortening with Flyn solves both: a branded slug people can actually read, plus click analytics with bots filtered out, and a QR code for anything printed. Tag the destination with UTMs if you attribute in GA4.

Why Store Owners Use Flyn

Branded short links

go.yourstore.com/deal instead of ?add-to-cart=88&quantity=2.

Human-verified clicks

Bot and crawler traffic filtered out, and shown, on every plan.

QR codes built in

Every short link gets a scannable QR for flyers and packaging.

Repointable destinations

Product retired? Repoint the short link instead of reprinting.

Frequently Asked Questions

What is a WooCommerce add-to-cart URL?
A link that puts a product into the visitor's cart the moment it loads: yourstore.com/?add-to-cart=88&quantity=2. The handler runs on every front-end page, so you can append the parameter to the home page, any post, the cart page or the checkout page, and the last two double as a way to choose where the buyer lands. It works on every WooCommerce version and needs no plugin.
How do I find my product ID?
Two ways. In wp-admin, open Products and hover a product, the ID shows in the row. Or paste the product URL into this generator: WooCommerce ships an unauthenticated Store API, and we resolve the ID from the product slug server-side. If your store has REST disabled or a security plugin blocking it, the resolver tells you and you can type the ID manually, everything else still works.
Does the quantity parameter work in plain WooCommerce?
Yes. The core form handler reads a quantity request parameter and defaults to 1 when it is absent, so yourstore.com/?add-to-cart=88&quantity=3 adds three units. The value is coerced to a valid stock amount, and products marked "sold individually" cap at one regardless of what the URL asks for.
Can I add a variable product (size, colour) by URL?
Yes, by using the variation ID rather than the parent product ID: ?add-to-cart=VARIATION_ID adds that exact combination. Core also accepts the parent ID plus a variation_id parameter and attribute_pa_* parameters whose values must be term slugs, but the single variation ID is the reliable form and the one this generator emits. If you paste a variable product's URL, the resolver flags it so you know a variation ID is needed.
Can a WooCommerce URL apply a coupon automatically?
Only on WooCommerce 10.0 or newer, and only via the checkout-link format: yourstore.com/checkout-link/?products=123:2&coupon=SAVE10. WooCommerce's documentation says a coupon code included there is applied to the customer's cart automatically, provided the store has coupons enabled. The classic ?add-to-cart flow has no coupon parameter in any core version; links promising that rely on paid extensions such as URL Coupons.
What is the checkout-link format and when should I use it?
WooCommerce 10.0 (June 2025) added shareable checkout URLs: /checkout-link/?products=123:2,456:1&coupon=CODE. It is the only core way to add multiple products in one link and the only core way to apply a coupon by URL, and it lands the buyer directly on checkout. Use it for campaigns where you control the store and know it runs 10.0+; use the classic format when you are not sure of the version.
Does an add-to-cart link replace the visitor's existing cart?
The two formats behave oppositely, and it matters. The classic ?add-to-cart URL appends to whatever is already in the cart, and reloading the same URL adds the item again, so warn people against pasting it repeatedly. The checkout link empties the visitor's existing cart before adding your items, silently. Pick the format whose behaviour matches your campaign.
Where does the buyer land after clicking?
Classic links: on the page you appended the parameter to, with a success notice, unless the store has enabled the "redirect to the cart page after successful addition" setting, which you cannot know from outside. That is why this generator lets you target /cart/ or /checkout/ explicitly, making the landing deterministic. Checkout links always land on checkout.
Do add-to-cart links work with SKUs or product slugs?
No. Core guards the parameter with a numeric check, so only numeric IDs work, never a SKU or a slug. If all you have is the product URL, use the resolver at the top of this tool, it converts the slug in the URL into the numeric ID via the store's public Store API.
Why shorten an add-to-cart link before sharing it?
Readability and measurement. A checkout link with three products and a coupon is far too long for a bio or print, and neither format records where the click came from. Shortening it with Flyn gives you a branded slug plus click counts with bot traffic filtered out, so you can compare an email placement against an Instagram bio before the buyer ever reaches the store. Reload-safety improves too: people share the short link, not the raw URL.
What happens if the product is out of stock or hidden?
The add succeeds or fails under WooCommerce's normal purchasability rules: hidden and unpurchasable products are rejected, out-of-stock products fail with a notice, and quantity is capped by stock settings. The URL itself does not pre-validate any of this, so a printed link can outlive its product. For long-lived placements, use a Flyn short link so you can repoint the destination when a product retires.
Is this tool free, and what do you do with my store URL?
Free, no account. If you use the optional resolver, our server makes one rate-limited, size-capped request to your store's public Store API to translate the slug into an ID; we do not store the response. The links you build are assembled entirely in your browser, and your history lives in your own browser's localStorage only.

Make every cart link measurable

Shorten your add-to-cart URLs into branded links with human-verified click counts, free to start.