=== Extnify Offer Rules for WooCommerce ===
Contributors: extnify
Tags: offers, discount, checkout, upsell, woocommerce
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
Requires Plugins: woocommerce
WC requires at least: 7.1.0
WC tested up to: 11.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Selectable offers for the WooCommerce cart and checkout — claimable discounts or optional add-ons, gated by zone, payment or shipping method.

== Description ==

**Extnify Offer Rules** lets you present **selectable offers** on the cart and checkout — discounts the customer can claim, or optional paid add-ons they can choose. Unlike an automatic fee, each offer is shown in a **"Recommended Offers"** box and only applies when the customer selects it (or when you mark it selected by default).

Create as many offers as you need, decide exactly when each one is eligible, and let shoppers pick one or several. The totals update instantly as they choose.

[Read the documentation »](https://extnify.com/docs/woocommerce/extnify-offer-rules) | [Try the live demo »](https://wc-dev.extnify.com/?auto_login=extnify-offer)

<!-- Add a short demo video here when ready (a bare YouTube URL on its own line auto-embeds on wp.org). -->

= What you can do with Extnify Offer Rules =

* Offer a **claimable discount** the customer ticks to apply.
* Offer an **optional paid add-on** (gift wrap, priority handling, insurance).
* Let customers pick **one offer or several**.
* **Pre-select** an offer so it applies unless the customer removes it.
* Show offers **only** for a certain shipping zone, payment method or shipping method.
* Set the amount as a **flat value or a percentage** of the subtotal.

= How it works =

1. Create an offer with an amount — a **negative** amount is a discount the customer can claim; a **positive** amount is an optional add-on charge.
2. Choose when it's eligible (shipping zone, payment method, shipping method).
3. The eligible offers appear in a **Recommended Offers** box on the cart and checkout; the customer ticks the ones they want and the totals update instantly.

= Selectable offers =

Offers aren't forced on the customer. Each eligible one is listed in the Recommended Offers box, and the customer decides. Choose whether they can pick **one** offer or **several**, and optionally **pre-select** an offer so it applies by default unless they opt out.

= Discounts or add-ons =

One form creates both. A **negative** amount (for example `-10` or `-10%`) is a discount shown as a reduction when selected. A **positive** amount is an optional add-on charge. Enter a plain number for a fixed value, or add a trailing `%` for a percentage of the cart subtotal.

= Conditional eligibility =

Each offer only appears when the cart matches the rules you set. The free version gates offers by:

* **Shipping zone** — the WooCommerce zone the destination falls in.
* **Payment method** — the gateway chosen at checkout.
* **Shipping method** — the shipping option chosen (Extnify Shipping Rules methods are listed here individually if you run it too).

= Placement and heading =

Choose where the offers row sits in the totals — after the subtotal, before tax, or before the total — and set your own heading above it (default: "Recommended Offers").

= Tax handling =

Pick a tax class per offer, or set it to **None** for a non-taxable offer. Offer tax follows your WooCommerce tax settings.

= Easy management =

Create, enable, disable, copy, delete and bulk-save all your offers from one screen, and set the order they're listed in. New offers appear in the sidebar instantly and are written to the database when you save.

= Live debugging =

When an offer doesn't appear and you're not sure why, turn on the built-in debug log. For each offer it reports whether its rules passed or failed, the resolved amount, and whether it was shown or skipped — so you can see exactly which rule filtered it out. The log is stored in your own database (never a file, never sent anywhere) and can be cleared with one click.

= Works everywhere WooCommerce does =

The Recommended Offers box renders on both the **classic** checkout and the **block** (Store API) cart and checkout, and the totals stay correct on both.

= Built for speed and privacy =

* **No external requests and no tracking** — every rule and calculation runs on your own store.
* **Lightweight** — no bloat, no third-party libraries pulled in on your storefront.
* **Translation-ready** — ships with a `.pot` file and a clean `extnify-offer` text domain.
* **Clean uninstall** — deleting the plugin removes its table, option and log; nothing is left behind.

= Need more? Extnify Offer Rules Pro =

[Extnify Offer Rules Pro](https://extnify.com/products/extnify-offer-rules-pro-for-woocommerce) adds:

* Product, category and brand targeting, plus date/time, location and coupon conditions.
* Tiered (range-based) amounts with min/max caps.
* Offer grouping.
* CSV import/export.

Your free offers carry over automatically — Pro shares the same data.

= More plugins by Extnify =

* **Extnify Fee Rules** — add conditional fees or discounts to the WooCommerce cart and checkout. [Free](https://wordpress.org/plugins/extnify-fee/) · [Pro](https://extnify.com/products/extnify-fee-rules-pro)
* **Extnify Shipping Rules** — build your own conditional WooCommerce shipping methods and rates. [Free](https://wordpress.org/plugins/extnify-shipping/) · [Pro](https://extnify.com/products/extnify-shipping-pro-woocommerce)

Extnify Offer Rules is built by Extnify, the team behind the X-Offer extension for OpenCart.

== Installation ==

1. Make sure WooCommerce is installed and active.
2. Upload the plugin to `/wp-content/plugins/`, or install it from **Plugins → Add New → Upload Plugin**.
3. Activate the plugin through the **Plugins** menu in WordPress.
4. Go to **WooCommerce → Extnify Offer Rules** and set **Module Status = Enabled** in Global Settings.
5. Click **Add New Method**, set the offer amount, and (optionally) restrict it by shipping zone, payment or shipping method. Save, and eligible offers appear in the Recommended Offers box on the cart and checkout.

== Frequently Asked Questions ==

= How is this different from a cart fee? =

A fee applies automatically. An offer is shown to the customer and only applies when they select it — or when you mark it "Default Select" so it applies unless they remove it.

= Can an offer be a discount? =

Yes. Enter a negative amount (for example `-5` or `-10%`) and it shows as a discount line when the customer selects it. A positive amount is an optional add-on charge.

= Can customers pick more than one offer? =

Yes — set **Offer Selection** to Multiple (or Single to allow only one) in Global Settings.

= Where do the offers appear? =

In a "Recommended Offers" box on the cart and checkout. You can choose where the offers row sits in the totals and set your own heading.

= Does it work with the WooCommerce block checkout? =

Yes. The Recommended Offers box renders on both the classic and block (Store API) cart and checkout.

= Does this send any data anywhere? =

No. Extnify Offer Rules makes no external requests and collects no data — everything runs on your store.

= Can I upgrade to Pro without losing my settings? =

Yes. Extnify Offer Rules and Extnify Offer Rules Pro share the same data, so your configured offers carry over automatically.

== Screenshots ==

1. Global settings and your list of offers.
2. Creating an offer — general settings, amount and Default Select.
3. Generic Rules — shipping zone, payment and shipping method eligibility.
4. The "Recommended Offers" box on the cart.
5. A selected offer shown on the checkout totals.
6. Built-in Help & Support with the live debug log.

== Changelog ==

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
