WooCommerce Tips

Migrating From Shopify to WooCommerce: How to Recreate Your Automatic Discounts

Migrating From Shopify to WooCommerce: How to Recreate Your Automatic Discounts
🔄

WooCommerce Migration Guide

Your Promotions Don’t Move Themselves.

Shopify automatic discounts apply at checkout without a code. WooCommerce has no native equivalent. This guide shows you exactly how to rebuild what you had — percentage off, BOGO, spend thresholds — so your customers never notice the platform changed.

When merchants move from Shopify to WooCommerce, the product import and payment gateway setup usually go smoothly. What trips people up is the promotion stack. Shopify has native automatic discounts built into the checkout. WooCommerce does not. You can’t just export your discount rules and import them somewhere — you have to understand what each discount was doing and then rebuild it using the tools WooCommerce actually provides.

This guide is for merchants who are mid-migration or planning one and need to know how to recreate their automatic discounts in WooCommerce without losing the customer experience they’ve built. Every claim in this guide is verified against the current plugin code and readme. The free-vs-Pro split is accurate as of the time of writing.

What actually changes when you move from Shopify to WooCommerce

Shopify includes a discount engine as a native platform feature. You create a discount in the Shopify admin, choose whether it requires a code or fires automatically, and Shopify handles the rest at checkout. No third-party plugin required. The types you can build natively include percentage off, fixed-amount off, free shipping, and Buy X Get Y.

WooCommerce’s native discount toolset is narrower. Out of the box, you get product-level sale prices (set per product, scheduled via WordPress core) and coupon codes (percentage off, fixed off, free shipping). WooCommerce has no native “automatic discount” concept — a discount that fires at checkout based on a rule, without the customer entering anything.

This is the gap the whole WooCommerce discount plugin market was built to fill

Every major WooCommerce discount plugin — Smart Cycle Discounts, Discount Rules for WooCommerce (Flycart), Advanced Dynamic Pricing, and the rest — exists because WooCommerce’s native tools don’t support rule-based automatic discounts natively. The plugin you choose becomes your discount engine, the same way Shopify’s discount system was your discount engine before.

The practical effect of this gap: after migrating, you’ll need to install a discount plugin and rebuild each promotion manually. This is more work than the Shopify side, but it also gives you more control. WooCommerce’s plugin ecosystem supports discount structures that Shopify’s native automatic discounts don’t, including tiered quantity pricing, bundle deals, and campaign scheduling with conflict detection.

How both platforms apply discounts at runtime (the useful parallel)

Before you start rebuilding, it helps to understand one architectural point that Shopify and WooCommerce-based plugins actually share.

Shopify automatic discounts are applied at checkout time. When a customer’s cart meets the conditions — enough quantity for a BOGO, a total over the spend threshold — Shopify calculates the discount and subtracts it at checkout. The discount is not stored permanently against each product’s price; it’s evaluated fresh at checkout based on cart state.

Smart Cycle Discounts works the same way. Discounts are applied through WooCommerce’s price filters at display time, and cart totals are adjusted through WooCommerce’s cart calculation hook. The plugin does not write a stored sale price to each product’s database field on campaign activation. It evaluates what’s in the cart when the price is requested and applies the discount then.

One important difference from Shopify: the “On Sale” filter

Because Smart Cycle Discounts — like Shopify’s automatic discounts — doesn’t write prices to a database field, your discounted products won’t appear in WooCommerce’s built-in “On Sale” shortcode or block, or in third-party faceted-search filters (like FacetWP) that read stored sale data. On Shopify, this distinction doesn’t surface the same way. On WooCommerce, it’s worth knowing. Your theme’s “Sale!” badge and strikethrough pricing will show correctly on shop, category, and product pages — that’s driven by the filtered price, not the stored field — but the On Sale collection filter is a different system. If your store relies heavily on that filter, see why discounted products don’t appear in the On Sale filter and how to work around it.

Everything else about the migration maps more cleanly than you might expect. The discount types are similar, the scheduling concepts are similar, and the customer experience at checkout is identical.

The discount type map: Shopify to WooCommerce

Here is how Shopify’s native automatic discount types map to Smart Cycle Discounts’ campaign types. The “tier” column reflects the free/Pro split as verified in the current plugin readme.

Shopify discount type SCD equivalent Tier Notes
Percentage off (automatic) Percentage campaign, auto-apply delivery Free Fires automatically, no code required
Fixed amount off (automatic) Fixed amount campaign, auto-apply delivery Free Per-product fixed deduction
Buy X Get Y, same product (automatic) BOGO campaign, auto-apply delivery Free Buy N units of a product, get M units of that same product discounted
Buy X Get Y, different products (automatic) Buy X Get Y campaign, auto-apply delivery Pro Buy from one product pool, get a different product discounted
Minimum purchase amount (automatic) Spend threshold campaign Pro Triggers when cart total exceeds the threshold
Minimum quantity (automatic) Tiered pricing campaign Pro Discount scales with quantity purchased
Free shipping (automatic) Free shipping toggle inside any campaign Free Enable per campaign in the discount step
Discount codes Code-required campaign, any discount type Free Customer enters the code in the native coupon field

Percentage off, fixed amount, and same-product BOGO are all available in the free version of Smart Cycle Discounts. Cross-product Buy X Get Y (buy Product A, get Product B), spend-threshold, and tiered/volume discounts require a Pro license.

Rebuilding percentage-off automatic discounts

A Shopify percentage-off automatic discount reduces the price of qualifying products by a percentage at checkout, with no code required from the customer. On WooCommerce, the equivalent is a percentage campaign with auto-apply delivery mode.

Here is how to set it up:

Step 1: Create a campaign in the 5-step wizard

Go to Smart Cycle Discounts in your WordPress admin and click “New Campaign.” The wizard opens at the Basic Information step. Give the campaign a name that maps to what you had on Shopify — this helps when you’re running multiple campaigns during the transition.

Step 2: Select your products

In the Product Selection step, choose how to scope the discount. “All Products” covers your entire catalog (equivalent to a store-wide Shopify automatic discount). “Specific Products” lets you target by individual product or category, matching a collection-scoped Shopify discount. The search is AJAX-powered and handles large catalogs.

Step 3: Set the discount type to Percentage and enter the value

In the Discount Configuration step, select “Percentage” and enter your percentage value. Under the delivery section, select “Auto-apply” — this is what makes the discount fire automatically without a code, matching Shopify’s automatic discount behavior.

Step 4: Set your schedule

Enter the start and end dates and times for the campaign. The plugin activates and deactivates on schedule automatically. If you’re mid-migration and want the campaign to start immediately, set the start date to today and leave the end date open, then update it once you have a concrete end date.

Step 5: Review and launch

The Review step shows you the campaign’s health score and any pre-launch warnings (conflicts with other campaigns, priority ties). Review those before launching. If Campaign Intelligence flags an issue, it’s worth understanding it before customers see the discount.

That’s the full flow for a percentage-off automatic discount. Fixed-amount campaigns follow the same steps — only the discount type selection in Step 3 changes.

Rebuilding BOGO and Buy X Get Y deals

Shopify calls this “Buy X Get Y” and it’s one of the more popular automatic discount types. The customer adds qualifying products to their cart and a discount is applied automatically — no code required, no friction. Smart Cycle Discounts covers this with two distinct campaign types: BOGO (same-product deals, free) and Buy X Get Y (cross-product deals, Pro).

The mechanics are worth understanding before you configure anything. A BOGO campaign in Smart Cycle Discounts works at cart calculation time: when the cart contains enough “buy” quantity of a product, the configured “get” quantity of that same product receives the configured discount percentage. You can configure:

  • Buy quantity — how many units the customer needs to add to trigger the deal
  • Get quantity — how many units receive the discount
  • Discount percentage — 100% means free, 50% means half-price

Most common Shopify BOGO structures translate directly to the free BOGO type:

Shopify “Buy X Get Y” structure SCD configuration Tier
Buy 1 Get 1 Free (same product) BOGO: Buy 1, Get 1, 100% off Free
Buy 2 Get 1 Free (same product) BOGO: Buy 2, Get 1, 100% off Free
Buy 2 Get 1 at 50% off (same product) BOGO: Buy 2, Get 1, 50% off Free
Buy 1 of Product A, Get Product B free Buy X Get Y: separate buy/get product pools, 100% off Pro

The cross-product variant (buy one thing, get something different free) uses the separate Buy X Get Y campaign type, which requires a Pro license. You assign specific products or categories to each side of the deal. If your Shopify store ran cross-product “Buy X Get Y” deals, factor this into your migration budget alongside spend threshold and tiered pricing.

For the delivery mode on any BOGO or Buy X Get Y campaign, select “Auto-apply” to replicate Shopify’s automatic discount behavior. Set your schedule dates and launch. For a deeper look at BOGO mechanics and margin math, the complete WooCommerce BOGO setup guide covers all the structures, including the margin calculations you should run before committing to a “free” get unit on a low-margin product.

Rebuilding spend-threshold (minimum purchase) discounts

Shopify’s minimum purchase automatic discount fires when the cart total exceeds a set amount — “spend $75, get 15% off your whole order.” This is one of the more powerful promotional tools because it directly lifts average order value. On WooCommerce, Smart Cycle Discounts covers this with the Spend Threshold discount type.

Spend threshold requires Pro

Spend threshold campaigns are available in Smart Cycle Discounts Pro, not the free version. If your Shopify store relied heavily on minimum-purchase automatic discounts, factor this into your migration budget. The free version covers percentage, fixed, and BOGO — all with auto-apply delivery.

The setup follows the same five-step wizard. When you reach the Discount Configuration step, select “Spend Threshold” as the discount type. You’ll set the minimum cart total that triggers the discount and the discount value (percentage or fixed amount). The campaign evaluates cart total at checkout and applies the discount when the threshold is met.

One behavioral note: Shopify’s minimum purchase discount is typically calculated against the pre-discount cart subtotal. Smart Cycle Discounts’ spend threshold evaluates against the cart total at calculation time — which means if multiple campaigns are active, the order they evaluate can affect whether the threshold is met. Use Campaign Intelligence’s pre-launch conflict detection to catch these interactions before they cause surprises.

Sharing discount links that auto-apply the code

Shopify has a native feature that lets you share a URL that auto-applies a discount code when a customer clicks it. If you sent email campaigns with a link like yourstore.com/discount/SUMMER20, customers landed with the code already applied at checkout.

Smart Cycle Discounts has an equivalent for code-required campaigns: the ?wsscd_code= URL parameter. When a customer clicks a link containing this parameter, the code is applied automatically when they reach the cart — no typing required. The workflow inside the plugin is straightforward: on the codes admin page for any code-required campaign, click “Copy share link” and paste the resulting URL into your emails or social posts.

This covers the same use case Shopify’s discount URL feature covers — removing the friction of code entry for customers who arrive via a tracked link. For a full walkthrough of how this works and when to use it, see how to share a WooCommerce discount link that auto-applies the code.

Scheduling and recurring promotions

Shopify lets you set start and end dates on automatic discounts. You can also re-use a discount by editing its dates. For most merchants, this is sufficient — you create a Black Friday discount in advance, set the dates, and it fires and stops on schedule.

Smart Cycle Discounts handles this natively and adds a recurring mode that Shopify’s native discount engine doesn’t have. You can schedule any campaign with specific start and end datetimes, and optionally configure it to repeat on a schedule — weekly, monthly, or on a custom interval. A “Weekend Flash Sale” set up once will repeat every weekend without you touching it.

The campaign lifecycle mirrors what you’re used to from Shopify: campaigns draft, schedule, activate, and expire without manual intervention. If you have promotions that run on the same dates every year (holiday sales, anniversary sales), the recurring feature removes the annual setup work.

Migrate your discount calendar before launch day

Before you go live on WooCommerce, rebuild your current Shopify discount schedule as draft campaigns. Set the start dates to your intended go-live dates and the end dates to match what Shopify had. This way your promotions are ready to fire on schedule and you’re not scrambling to set up discounts on launch day while handling everything else that comes with a platform switch.

Four things to check before you go live

Rebuilding discounts is mostly mechanical once you understand the type mapping. These four checks catch the issues that bite merchants after launch.

1. Test each discount type with a real cart

After creating each campaign, add the qualifying products to your cart and verify the discount applies correctly before going live. The auto-apply delivery mode should show the discount without any code entry. For BOGO, add exactly the right quantity and verify — then add one fewer unit and confirm it doesn’t apply prematurely.

2. Check campaign priorities if you have multiple active campaigns

Shopify automatic discounts have a stacking behavior that’s different from WooCommerce’s campaign priority system. On Shopify, customers can sometimes combine multiple automatic discounts in ways you didn’t intend. Smart Cycle Discounts uses a priority field (1–5, with 5 being highest) to control which campaign wins when multiple campaigns affect the same product. Set priorities deliberately so the right discount wins on products covered by more than one campaign. Campaign Intelligence will flag priority conflicts in the Review step before you launch.

3. Decide on coupon code compatibility

On Shopify, automatic discounts and discount codes can sometimes combine. On WooCommerce, campaign discounts (which appear as sale prices) and WooCommerce coupon codes operate as separate systems and can stack by default. If your Shopify store had rules preventing customers from combining a promotional code with an automatic discount, you’ll need to configure that explicitly on WooCommerce. The approach depends on your specific setup — see how WooCommerce coupons and campaign discounts are different for the full picture on how they interact.

4. Understand the “On Sale” filter limitation before customers ask

If your Shopify store had a “Sale” collection page, you may want to recreate that experience on WooCommerce. As mentioned earlier, Smart Cycle Discounts applies discounts at display time through runtime filters — your theme’s “Sale!” badge will show correctly, but products won’t appear in WooCommerce’s built-in “On Sale” shortcode or block. If a “Sale Items” page or filter is part of your store’s navigation, you’ll need a different approach for that specific surface (a manually curated page, a product tag, or a query that uses your campaign product selection). This is a known tradeoff of runtime-filter architecture — it’s shared by virtually every WooCommerce discount plugin, not unique to Smart Cycle Discounts.

Smart Cycle Discounts covers most Shopify automatic discount types — free

Percentage off, fixed amount, BOGO, and free shipping campaigns are all in the free version. Spend thresholds, tiered pricing, and bulk unique codes require Pro. Install the free version, rebuild your core promotions, and upgrade if you need the advanced types.

Frequently asked questions

Does WooCommerce have native automatic discounts like Shopify?

No. WooCommerce’s native tools include product-level sale prices and coupon codes, but no rule-based automatic discounts that fire at checkout without a code. That gap is filled by discount plugins. Smart Cycle Discounts is one option — it provides auto-apply campaigns for percentage, fixed, BOGO, spend threshold, and tiered discount types.

Which Shopify discount types can I recreate for free in WooCommerce?

Using Smart Cycle Discounts’ free version: percentage-off campaigns, fixed-amount campaigns, BOGO campaigns (same-product Buy N Get M deals), free shipping toggle, and code-required campaigns. Cross-product Buy X Get Y (buy Product A, get Product B), spend threshold (minimum purchase amount), and tiered quantity pricing all require a Pro license.

How does “auto-apply” work in WooCommerce — does the customer need a code?

With Smart Cycle Discounts, campaigns set to “auto-apply” delivery fire automatically when a customer’s cart meets the campaign conditions. No code is required. The customer sees the discounted price on product pages and the discount applied at cart/checkout — the same experience as a Shopify automatic discount. Code-required campaigns are also available for situations where you want the customer to enter a code.

Can I replicate Shopify’s discount URL feature in WooCommerce?

Yes. Smart Cycle Discounts generates a ?wsscd_code=YOURCODE URL for any code-required campaign. When a customer clicks that URL, the code is applied automatically when they reach the cart — identical to Shopify’s discount URL behavior. Use the “Copy share link” button on the codes admin page for each campaign.

Will my discounted products show a “Sale” badge on WooCommerce?

Yes — on your shop, category, product, and search pages. Smart Cycle Discounts applies discounts through WooCommerce’s price filters, so your theme’s “Sale!” badge and strikethrough pricing appear automatically. However, discounted products will not appear in WooCommerce’s built-in “On Sale” shortcode or block, because the discount is applied at display time rather than written to a stored sale-price field. This is the same behavior as Shopify automatic discounts — neither platform writes a permanent stored price when an automatic discount is active.

Can I run multiple automatic discounts at the same time on WooCommerce?

Yes. Smart Cycle Discounts supports unlimited simultaneous campaigns. When multiple campaigns affect the same product, the campaign with the higher priority (1–5 scale, 5 is highest) wins. Campaign Intelligence warns you before launch if a new campaign conflicts with an existing one, so you can adjust priorities or schedules before customers see an unintended price.

How do I migrate a recurring Shopify sale (like a weekly flash sale) to WooCommerce?

Create a campaign in Smart Cycle Discounts and enable recurring mode in the Schedule step. You can configure it to repeat weekly, monthly, or on a custom interval. Set up your “Weekend Flash Sale” once and it repeats automatically — no re-creation needed for each occurrence. Recurring campaigns are available in the free version.

Do I need to configure anything for WooCommerce block-based cart and checkout?

No additional configuration is needed. Smart Cycle Discounts supports WooCommerce’s block-based cart and checkout pages (WooCommerce 8.3+). Discounts apply correctly in both classic and block-based templates, and strikethrough pricing displays in both. The plugin detects which template you’re using automatically.


Key Takeaways

  • WooCommerce has no native automatic discounts — you need a discount plugin to replicate what Shopify provides out of the box. This is expected, not a gap to be alarmed by.
  • Percentage off, fixed amount off, and same-product BOGO campaigns are all available free in Smart Cycle Discounts, with auto-apply delivery that fires at checkout without a code.
  • Spend-threshold (minimum purchase), tiered quantity pricing, and cross-product Buy X Get Y (buy Product A, get Product B) all require Smart Cycle Discounts Pro — factor this in if your Shopify store relied on those types heavily.
  • Both Shopify automatic discounts and Smart Cycle Discounts apply discounts at display/checkout time through runtime filters, not by writing stored prices to the database. Neither platform’s automatic discounts will populate a “Sale Items” filter that reads stored sale data.
  • Shopify’s discount URL feature (auto-applying a code from a link) maps to Smart Cycle Discounts’ ?wsscd_code= URL parameter, available free for any code-required campaign.
  • Rebuild your discount calendar as draft campaigns before your migration launch date so your promotions are ready to activate on schedule.
  • Campaign Intelligence catches priority conflicts and overlapping campaigns before launch — run the pre-launch review for each campaign you rebuild.

Webstepper

The Webstepper Team

WordPress Plugin Developers

We build WordPress tools for WooCommerce store owners. Smart Cycle Discounts and TrustLens both came from problems we ran into running stores ourselves.