

Dashboard — overview of active discount rules and usage at a glance.
CartMagic turns your WooCommerce store’s promotions into a managed, rule-based system. Instead of stacking up dozens of single-use coupons, you define discount rules — what triggers a discount, how big it is, when it applies — and CartMagic evaluates them at the cart and checkout for every customer automatically.
The free version covers the everyday discount types most stores need:
/wp-json/cartmagic/v1/, so you can manage rules from anywhere.cartmagic, .pot file shipped in /languages/.WooCommerce coupons are great for one-off codes. They are not great when you want to:
CartMagic gives you a rules engine with a clear admin, so promotions become configurable instead of hard-coded.
The free plugin (this listing) ships everything you need for standard cart-level discounting:
The optional CartMagic Pro add-on layers on advanced promotion types and reporting:
The free plugin is fully usable without Pro. Pro is opt-in.
CartMagic exposes filters and actions so you can extend it without forking:
cartmagic_evaluate_condition — short-circuit or override condition evaluation.cartmagic_matching_rules — filter the list of rules that match the current cart before discounts apply.cartmagic_register_rest_routes — hook in your own REST endpoints under cartmagic/v1.cartmagic_pro_features — used by the Pro add-on to register feature unlocks.REST endpoints (admin-authenticated) include:
GET / POST / PUT / DELETE /wp-json/cartmagic/v1/rulesGET / POST /wp-json/cartmagic/v1/settingsGET /wp-json/cartmagic/v1/products/search and /categories/searchGET /wp-json/cartmagic/v1/analytics/... (reads only; full reporting requires Pro)This plugin stores discount rule definitions and aggregate usage data in your WordPress database. It does not transmit customer, order, or cart data to external services by default. Review your hosting and WooCommerce privacy documentation for site-wide compliance, and disclose the cookies and data handling practices of any payment / shipping / analytics integrations you have enabled separately.