{"id":300023,"date":"2026-05-07T18:36:38","date_gmt":"2026-05-07T18:36:38","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cartmagic-dynamic-pricing-discounts-for-woocommerce\/"},"modified":"2026-05-07T19:02:16","modified_gmt":"2026-05-07T19:02:16","slug":"cartmagic","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/cartmagic\/","author":23480241,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.0.3","stable_tag":"0.0.3","tested":"6.7.5","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"CartMagic \u2013 Dynamic Pricing & Discounts for WooCommerce","header_author":"CartMagic","header_description":"Smart discount rules engine for WooCommerce - percentage discounts, BOGO deals, bulk pricing, free shipping rules, and more.","assets_banners_color":"068753","last_updated":"2026-05-07 19:02:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpcartmagic.online","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.0.1":{"tag":"0.0.1","author":"devexra","date":"2026-05-07 18:36:27"},"0.0.2":{"tag":"0.0.2","author":"devexra","date":"2026-05-07 18:48:56"},"0.0.3":{"tag":"0.0.3","author":"devexra","date":"2026-05-07 19:02:16"}},"upgrade_notice":{"0.0.3":"<p>Readme polish, code-quality cleanup, and CI improvements. No database changes; safe to upgrade.<\/p>","0.0.2":"<p>Documentation, plugin metadata, and CI improvements. No database changes; safe to upgrade.<\/p>","0.0.1":"<p>Initial submission to WordPress.org.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3525885,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3525885,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3525885,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3525894,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3525894,"resolution":"772x250","location":"assets","locale":""},"banner.svg":{"filename":"banner.svg","revision":3525894,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.0.1","0.0.2","0.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3525885,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3525885,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3525885,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3525885,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Dashboard \u2014 overview of active discount rules and usage at a glance.","2":"Rule editor \u2014 configure percentage, fixed, BOGO (Pro), bulk (Pro), or free-shipping rules.","3":"Conditions \u2014 combine cart, product, category and customer filters with AND \/ OR logic.","4":"Settings \u2014 control engine behavior, visibility, and rule priority."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[331,15963,241051,5447,286],"plugin_category":[45,55],"plugin_contributors":[262220],"plugin_business_model":[],"class_list":["post-300023","plugin","type-plugin","status-publish","hentry","plugin_tags-discount","plugin_tags-dynamic-pricing","plugin_tags-pricing-rules","plugin_tags-sale","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-devexra","plugin_committers-devexra"],"banners":{"banner":"https:\/\/ps.w.org\/cartmagic\/assets\/banner-772x250.png?rev=3525894","banner_2x":"https:\/\/ps.w.org\/cartmagic\/assets\/banner-1544x500.png?rev=3525894","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/cartmagic\/assets\/icon.svg?rev=3525885","icon":"https:\/\/ps.w.org\/cartmagic\/assets\/icon.svg?rev=3525885","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/cartmagic\/assets\/screenshot-1.png?rev=3525885","caption":"Dashboard \u2014 overview of active discount rules and usage at a glance."},{"src":"https:\/\/ps.w.org\/cartmagic\/assets\/screenshot-2.png?rev=3525885","caption":"Rule editor \u2014 configure percentage, fixed, BOGO (Pro), bulk (Pro), or free-shipping rules."},{"src":"https:\/\/ps.w.org\/cartmagic\/assets\/screenshot-3.png?rev=3525885","caption":"Conditions \u2014 combine cart, product, category and customer filters with AND \/ OR logic."},{"src":"https:\/\/ps.w.org\/cartmagic\/assets\/screenshot-4.png?rev=3525885","caption":"Settings \u2014 control engine behavior, visibility, and rule priority."}],"raw_content":"<!--section=description-->\n<p><strong>CartMagic<\/strong> turns your WooCommerce store's promotions into a managed, rule-based system. Instead of stacking up dozens of single-use coupons, you define discount <strong>rules<\/strong> \u2014 what triggers a discount, how big it is, when it applies \u2014 and CartMagic evaluates them at the cart and checkout for every customer automatically.<\/p>\n\n<p>The free version covers the everyday discount types most stores need:<\/p>\n\n<ul>\n<li><strong>Percentage discount<\/strong> \u2014 take 10%, 15%, 20% off the cart, with optional cap (e.g. \"10% off, up to $50\").<\/li>\n<li><strong>Fixed-amount discount<\/strong> \u2014 flat dollar \/ euro \/ rupee amount off the cart.<\/li>\n<li><strong>Free shipping rule<\/strong> \u2014 give free shipping when the cart hits a threshold or matches a condition, without touching WooCommerce shipping zones.<\/li>\n<li><strong>Cart conditions<\/strong> \u2014 combine cart total, item count, and other cart-aware filters with AND \/ OR logic to decide when a rule fires.<\/li>\n<li><strong>Modern admin<\/strong> \u2014 a clean, fast React-based admin app inside WordPress. No 2010-era settings pages.<\/li>\n<li><strong>REST API<\/strong> \u2014 every rule is reachable through a versioned REST API at <code>\/wp-json\/cartmagic\/v1\/<\/code>, so you can manage rules from anywhere.<\/li>\n<li><strong>HPOS compatible<\/strong> \u2014 declares compatibility with WooCommerce High-Performance Order Storage, so it's safe on modern WooCommerce installs.<\/li>\n<li><strong>Translation-ready<\/strong> \u2014 text domain <code>cartmagic<\/code>, <code>.pot<\/code> file shipped in <code>\/languages\/<\/code>.<\/li>\n<li><strong>Privacy-respecting<\/strong> \u2014 rules and usage data live in your own database. No phone-home, no third-party tracking by default.<\/li>\n<\/ul>\n\n<h4>Why CartMagic?<\/h4>\n\n<p>WooCommerce coupons are great for one-off codes. They are not great when you want to:<\/p>\n\n<ul>\n<li>Run a \"10% off everything\" sale store-wide for a weekend, without sending every customer a code.<\/li>\n<li>Offer free shipping above a threshold, without hand-editing shipping zones.<\/li>\n<li>Apply different discount logic to different cart conditions in a single, reviewable place.<\/li>\n<\/ul>\n\n<p>CartMagic gives you a <strong>rules engine<\/strong> with a clear admin, so promotions become configurable instead of hard-coded.<\/p>\n\n<h4>Free vs Pro<\/h4>\n\n<p>The free plugin (this listing) ships everything you need for standard cart-level discounting:<\/p>\n\n<ul>\n<li>Percentage discount<\/li>\n<li>Fixed-amount discount<\/li>\n<li>Free shipping rule<\/li>\n<li>Cart total \/ item count conditions<\/li>\n<\/ul>\n\n<p>The optional <strong>CartMagic Pro<\/strong> add-on layers on advanced promotion types and reporting:<\/p>\n\n<ul>\n<li><strong>BOGO<\/strong> \u2014 buy X get Y configurations<\/li>\n<li><strong>Bulk \/ tiered pricing<\/strong> \u2014 quantity-based price tiers<\/li>\n<li><strong>Scheduled campaigns<\/strong> \u2014 start \/ end dates and time windows<\/li>\n<li><strong>Customer segments<\/strong> \u2014 role-based, first-order, and other segment conditions<\/li>\n<li><strong>Priority &amp; stacking control<\/strong> \u2014 fine-grained rule ordering and combination rules<\/li>\n<li><strong>Usage analytics<\/strong> \u2014 per-rule reporting and engagement metrics<\/li>\n<li><strong>White-label admin<\/strong> \u2014 rebrand the admin panel for client work<\/li>\n<\/ul>\n\n<p>The free plugin is fully usable without Pro. Pro is opt-in.<\/p>\n\n<h4>Built for developers<\/h4>\n\n<p>CartMagic exposes filters and actions so you can extend it without forking:<\/p>\n\n<ul>\n<li><code>cartmagic_evaluate_condition<\/code> \u2014 short-circuit or override condition evaluation.<\/li>\n<li><code>cartmagic_matching_rules<\/code> \u2014 filter the list of rules that match the current cart before discounts apply.<\/li>\n<li><code>cartmagic_register_rest_routes<\/code> \u2014 hook in your own REST endpoints under <code>cartmagic\/v1<\/code>.<\/li>\n<li><code>cartmagic_pro_features<\/code> \u2014 used by the Pro add-on to register feature unlocks.<\/li>\n<\/ul>\n\n<p>REST endpoints (admin-authenticated) include:<\/p>\n\n<ul>\n<li><code>GET \/ POST \/ PUT \/ DELETE \/wp-json\/cartmagic\/v1\/rules<\/code><\/li>\n<li><code>GET \/ POST \/wp-json\/cartmagic\/v1\/settings<\/code><\/li>\n<li><code>GET \/wp-json\/cartmagic\/v1\/products\/search<\/code> and <code>\/categories\/search<\/code><\/li>\n<li><code>GET \/wp-json\/cartmagic\/v1\/analytics\/...<\/code> (reads only; full reporting requires Pro)<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>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.<\/p>\n\n<!--section=installation-->\n<h4>Standard install<\/h4>\n\n<ol>\n<li>In your WordPress admin, go to <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Search for <strong>CartMagic<\/strong> and click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Make sure <strong>WooCommerce<\/strong> is also installed and active. CartMagic refuses to load its storefront logic without WooCommerce.<\/li>\n<li>In the admin sidebar, open <strong>CartMagic \u2192 Discount Rules<\/strong>.<\/li>\n<li>Click <strong>Add Rule<\/strong>, choose a discount type, set conditions, and save.<\/li>\n<\/ol>\n\n<h4>Manual install<\/h4>\n\n<ol>\n<li>Download the plugin ZIP from this page.<\/li>\n<li>In your WordPress admin, go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong> and upload the ZIP.<\/li>\n<li>Activate the plugin and continue from step 3 of the standard install above.<\/li>\n<\/ol>\n\n<h4>After install<\/h4>\n\n<ul>\n<li>Go to <strong>CartMagic \u2192 Dashboard<\/strong> to see active rules at a glance.<\/li>\n<li>Visit <strong>CartMagic \u2192 Settings<\/strong> to configure global engine behavior.<\/li>\n<li>Test a rule by adding products to the cart on the storefront and confirming the discount line shows on the cart and checkout.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20cartmagic%20require%20woocommerce%3F\"><h3>Does CartMagic require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. CartMagic is a WooCommerce extension. It will not load its storefront discount logic until WooCommerce is active. The plugin header declares <code>Requires Plugins: woocommerce<\/code> so WordPress 6.5+ will warn you if WooCommerce is missing.<\/p><\/dd>\n<dt id=\"is%20cartmagic%20compatible%20with%20woocommerce%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Is CartMagic compatible with WooCommerce HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes. CartMagic declares compatibility with WooCommerce HPOS \/ custom order tables, so it is safe to enable HPOS on a store running CartMagic.<\/p><\/dd>\n<dt id=\"does%20it%20work%20alongside%20woocommerce%20coupons%3F\"><h3>Does it work alongside WooCommerce coupons?<\/h3><\/dt>\n<dd><p>Yes. CartMagic discount rules are applied separately from WooCommerce's built-in coupon system. You can run both \u2014 for example, a CartMagic rule for \"free shipping above $100\" alongside a WooCommerce coupon for a flash sale code. Rule priority and stacking interactions across systems are handled in CartMagic Pro.<\/p><\/dd>\n<dt id=\"where%20are%20discount%20rules%20stored%3F\"><h3>Where are discount rules stored?<\/h3><\/dt>\n<dd><p>Rules and rule-usage records are stored in two custom database tables created on plugin activation:<\/p>\n\n<ul>\n<li><code>{prefix}_cartmagic_discount_rules<\/code> \u2014 your rule definitions<\/li>\n<li><code>{prefix}_cartmagic_discount_usage<\/code> \u2014 usage tracking<\/li>\n<\/ul>\n\n<p>When you delete the plugin from <strong>Plugins \u2192 Delete<\/strong>, both tables and the plugin's options are removed via the standard WordPress uninstall flow. Deactivating the plugin does <strong>not<\/strong> delete data, so you can safely deactivate to troubleshoot.<\/p><\/dd>\n<dt id=\"will%20cartmagic%20slow%20down%20my%20store%3F\"><h3>Will CartMagic slow down my store?<\/h3><\/dt>\n<dd><p>CartMagic loads the rules engine only when WooCommerce loads, evaluates rules per-cart (not per-page), and caches active rule definitions in a transient to avoid repeated database hits. For most stores, the per-request overhead is negligible. If you operate a high-traffic store with hundreds of active rules, the Pro version adds priority controls and additional caching primitives.<\/p><\/dd>\n<dt id=\"does%20cartmagic%20affect%20performance%20on%20the%20storefront%20for%20non-discounted%20carts%3F\"><h3>Does CartMagic affect performance on the storefront for non-discounted carts?<\/h3><\/dt>\n<dd><p>The engine returns early when no rule conditions match, so a typical no-discount checkout is essentially the same cost as a stock WooCommerce checkout plus one cached lookup.<\/p><\/dd>\n<dt id=\"is%20cartmagic%20translation-ready%3F\"><h3>Is CartMagic translation-ready?<\/h3><\/dt>\n<dd><p>Yes. The text domain is <code>cartmagic<\/code> and a <code>.pot<\/code> file ships in the plugin's <code>\/languages\/<\/code> folder. You can translate strings with Loco Translate, Poedit, or by dropping a translation into <code>wp-content\/languages\/plugins\/<\/code>.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20wpml%20%2F%20polylang%20%2F%20translatepress%3F\"><h3>Is it compatible with WPML \/ Polylang \/ TranslatePress?<\/h3><\/dt>\n<dd><p>CartMagic does not store translatable content per-locale by default \u2014 rule labels are stored as-is. If your store is multilingual, register CartMagic's strings with your translation plugin's \"string translation\" feature. Currency \/ locale-specific amounts are evaluated against the cart's actual currency at checkout.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20multisite%3F\"><h3>Does it work on multisite?<\/h3><\/dt>\n<dd><p>Yes. CartMagic activates per-site (network activation also supported). Each site has its own rules tables. There is no cross-site rule sharing in the free version.<\/p><\/dd>\n<dt id=\"how%20does%20cartmagic%20handle%20user%20privacy%3F\"><h3>How does CartMagic handle user privacy?<\/h3><\/dt>\n<dd><p>The free plugin stores rule definitions and aggregate usage counts in your own database. It does <strong>not<\/strong> transmit customer data, order data, or cart data to any external service by default. Pro analytics also stay on your server. See the <strong>Privacy<\/strong> section below.<\/p><\/dd>\n<dt id=\"i%20activated%20the%20plugin%20but%20i%20don%27t%20see%20the%20menu%20%E2%80%94%20what%20now%3F\"><h3>I activated the plugin but I don't see the menu \u2014 what now?<\/h3><\/dt>\n<dd><p>Two common causes:<\/p>\n\n<ol>\n<li><strong>WooCommerce isn't active.<\/strong> CartMagic only registers its admin menu when WooCommerce is loaded. Activate WooCommerce first.<\/li>\n<li><strong>You're not a user with <code>manage_woocommerce<\/code> capability.<\/strong> The CartMagic menu shows for shop managers and administrators by default.<\/li>\n<\/ol>\n\n<p>If both are correct and the menu still doesn't appear, deactivate and reactivate the plugin to retrigger admin hook registration.<\/p><\/dd>\n<dt id=\"can%20i%20import%20%2F%20export%20rules%20between%20sites%3F\"><h3>Can I import \/ export rules between sites?<\/h3><\/dt>\n<dd><p>Rule import \/ export is on the roadmap. For now, you can copy rules row-by-row from the source database into the destination database (or use a database migration tool like WP Migrate). The REST API can also be used to script bulk creation against <code>\/wp-json\/cartmagic\/v1\/rules<\/code>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20get%20support%3F\"><h3>How do I get support?<\/h3><\/dt>\n<dd><ul>\n<li>For free plugin support, use the WordPress.org support forum on this plugin page.<\/li>\n<li>For Pro license holders, please use the priority support channel referenced in your purchase email.<\/li>\n<li>For bug reports with reproducible test cases, please include WordPress version, WooCommerce version, PHP version, and the rule configuration that triggers the issue.<\/li>\n<\/ul><\/dd>\n<dt id=\"where%20can%20i%20learn%20more%20about%20cartmagic%20pro%3F\"><h3>Where can I learn more about CartMagic Pro?<\/h3><\/dt>\n<dd><p>Visit the <strong>CartMagic \u2192 Upgrade to Pro<\/strong> menu item inside your WordPress admin, or go to the project website linked in the <strong>Plugin URI<\/strong>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20uninstall%20cartmagic%20completely%3F\"><h3>How do I uninstall CartMagic completely?<\/h3><\/dt>\n<dd><p>Deactivate the plugin from <strong>Plugins<\/strong>, then click <strong>Delete<\/strong>. WordPress will run <code>uninstall.php<\/code>, which drops both CartMagic database tables, removes plugin options, and clears scheduled cron events. There is no leftover data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.0.3<\/h4>\n\n<ul>\n<li>Readme: trimmed the short description to satisfy WordPress.org's 150-character limit (was being truncated on the listing page).<\/li>\n<li>Readme: streamlined documentation and section structure.<\/li>\n<li>Code quality: resolved all PHPCS \/ WordPress Coding Standards violations (associative array layout in the feature catalog, statement alignment).<\/li>\n<li>CI: Code Analysis workflow now saves the full PHPCS report and a checkstyle XML as a downloadable workflow artifact, even when checks fail \u2014 so PR reviewers can see violations without re-running locally.<\/li>\n<li>CI: the asset\/readme update workflow is now gated by file paths (<code>readme.txt<\/code>, <code>.wordpress-org\/**<\/code>), so PHP-only pushes no longer trigger spurious \"other files modified\" failures.<\/li>\n<li>No database schema changes; safe to upgrade.<\/li>\n<\/ul>\n\n<h4>0.0.2<\/h4>\n\n<ul>\n<li>Readme: significantly expanded description, accurate free vs Pro feature breakdown, 14 FAQ entries, developer section with hooks \/ filters \/ REST endpoints.<\/li>\n<li>Banner: corrected feature pills to reflect the actual free-tier feature set (no longer advertises Pro-only BOGO \/ Bulk pricing as free).<\/li>\n<li>Admin: added Documentation \/ Support \/ Reviews quick links to the Plugins screen row meta.<\/li>\n<li>CI: bumped Node.js to 20 to satisfy the Tailwind v4 native-binding engine requirement; regenerated package-lock.json with cross-platform optional-dep variants so deploys work from any host platform.<\/li>\n<li>No breaking changes. Database schema unchanged.<\/li>\n<\/ul>\n\n<h4>0.0.1<\/h4>\n\n<ul>\n<li>Initial submission to WordPress.org.<\/li>\n<\/ul>","raw_excerpt":"Smart discount rules for WooCommerce: percentage, fixed-amount, free shipping, and cart-aware conditions. No coupon spam needed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/300023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=300023"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/devexra"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=300023"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=300023"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=300023"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=300023"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=300023"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=300023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}