Shopify How to Create a Discount Code for Plus Stores
Table of Contents
- Introduction
- The Standard Workflow: Native Shopify Discounts
- Understanding Platform Constraints and Limits
- Moving Beyond Native: The Power of Shopify Functions
- Script-to-Functions Migration: A Strategy for Stability
- Choosing the Right Tooling: The Nextools Decision Framework
- Implementation Scenarios: Real-World Use Cases
- Safe Deployment: Testing and QA for Discounts
- Measuring Success Beyond the Redemption Rate
- Conclusion
- Nextools Shopify App Suite (Quick Links)
- FAQ
Introduction
As Shopify moves closer to the full deprecation of Shopify Scripts in August 2025, many high-volume merchants and agencies are hitting a wall with the native “Amount off” and “Buy X Get Y” builders. The core pain point isn’t just knowing the basic steps of how to create a discount code; it’s managing the complexity of modern commerce. When you need to stack discounts across international Markets, restrict specific payment methods to protect margins, or migrate legacy Ruby Scripts into a future-proof environment, the standard admin interface often falls short.
At Nextools, we specialize in bridging the gap between standard Shopify features and the advanced requirements of Shopify Plus merchants. Whether you are a developer tasked with a complex Script-to-Functions migration or a merchant looking to optimize checkout logic without the overhead of custom app development, understanding the underlying architecture of Shopify Discounts is critical. This post is designed for Plus merchants, agencies, and developers who need to move beyond basic coupon codes and into the world of high-performance, logic-driven commerce.
Our engineering-minded workflow follows the Nextools Playbook: first, we clarify the goals and constraints (such as Shopify plan limits and market-specific pricing); next, we confirm platform capabilities within the context of Shopify Functions and Checkout Extensibility; then, we choose the simplest durable approach—prioritizing Functions-first where relevant to avoid brittle theme hacks; we implement safely in staging environments; and finally, we measure impact on AOV and conversion to iterate for better results. Explore our full Shopify App Suite to see these principles in action.
The Standard Workflow: Native Shopify Discounts
Before diving into advanced customizations and Shopify Functions, it is essential to master the native discount engine. Shopify provides three primary types of discounts that cover most basic marketing needs: Amount Off (Product or Order), Buy X Get Y (BxGy), and Free Shipping.
Creating a Basic Discount Code
To create a standard discount code, navigate to the Discounts section in your Shopify admin and click Create discount. You will be prompted to choose between a “Discount code” (which requires manual entry by the customer) or an “Automatic discount” (which applies based on cart logic).
For a manual code, you define the name—avoiding special characters to ensure URL compatibility—and set the value (percentage or fixed amount). You then assign eligibility:
- Products/Collections: Which items can be discounted.
- Minimum Requirements: Minimum purchase amount or quantity of items.
- Customer Eligibility: All customers, specific segments (e.g., “Returning customers”), or specific individual customers.
- Usage Limits: Total number of times the code can be used or a limit of one use per customer.
Automatic Discounts vs. Codes
The fundamental difference lies in the customer experience. Automatic discounts are highly effective for conversion because they remove friction; however, Shopify traditionally limited stores to one automatic discount at a time. With the introduction of Discount Combinations, merchants can now allow certain discounts to stack. This is a critical area where many stores face logic conflicts—if you have an automatic “10% Welcome” discount and a “Free Shipping” code, you must explicitly check the boxes for “Combines with” to ensure both apply correctly.
Understanding Platform Constraints and Limits
When scaling a Shopify Plus store, “standard” features hit technical ceilings that can disrupt major sales events like BFCM. Knowing how to create a discount code is only half the battle; knowing the limits of the engine is what saves a launch.
The 20 Million Code Limit
Shopify stores have a cumulative limit of 20 million unique discount codes. While this sounds vast, stores using heavy influencer marketing or unique-code-per-customer apps can reach this limit surprisingly fast. Once reached, you must delete old codes to make room for new ones. Custom apps and third-party solutions cannot bypass this hard platform limit.
Entitlement Constraints
A single discount code can apply to a maximum of 100 specific customers, products, or variants. If your promotion requires discounting 500 specific SKUs, you cannot list them individually within one native discount. Instead, you must use a Collection-based discount, where the logic applies to any product within that collection.
Regional and Market Logic
With Shopify Markets, pricing and currency vary by region. A fixed-amount discount (e.g., $10 off) will be converted based on the customer’s currency. However, if you need a discount to only be available in Italy but not in the US, you must configure Market Eligibility. This ensures your margins remain protected in regions where shipping costs or tax liabilities are higher.
Nextools Insight: Always verify your “Market Eligibility” settings during the setup phase. A common error is creating a high-value discount that accidentally applies to a lower-margin international market because the “All Markets” default was left checked.
Moving Beyond Native: The Power of Shopify Functions
For Shopify Plus merchants, the “how to create a discount code” question often evolves into “how do I create logic that Shopify doesn’t support natively?” This is where Shopify Functions come in.
Functions are the modern replacement for Shopify Scripts. They allow developers to write custom logic that runs directly on Shopify’s infrastructure, ensuring ultra-fast checkout speeds and 99.9% reliability. Unlike older apps that relied on “draft orders” or theme-side hacks to apply discounts, Functions are native to the checkout engine.
Why Use Functions for Discounts?
- Tiered Pricing (Spend X, Save Y%): Native Shopify discounts struggle with complex tiers (e.g., Spend $100 save 10%, Spend $200 save 15%, Spend $300 save 20%). Using SupaEasy, you can generate these tiered logic steps as Shopify Functions without writing a single line of code.
- Payment-Method Specific Discounts: You may want to offer a 5% discount only if the customer uses a specific payment method (like a bank transfer) to reduce transaction fees. Standard Shopify cannot do this, but a Function can.
- B2B and Customer Tag Logic: If you run a hybrid store, you might need a discount code that only works if a customer has a specific tag AND is buying from a specific collection.
By using the Nextools App Suite, merchants can deploy these Functions-based discounts safely. We recommend starting with a clear definition of the logic constraints before building, as Functions run at the very beginning of the checkout process.
Script-to-Functions Migration: A Strategy for Stability
If your store currently relies on Ruby Scripts (via the Shopify Scripts app), you are on a ticking clock. Shopify is transitioning to Checkout Extensibility, and Scripts will eventually cease to function. The migration process is not a 1:1 copy-paste; it requires rethinking how your discounts are structured.
Identifying Script Logic
Most Scripts fall into three categories:
- Line Item Scripts: Changing the price of a specific product (e.g., “Buy 3, Get 10% off”).
- Shipping Scripts: Changing shipping rates (e.g., “Free shipping for VIPs”).
- Payment Scripts: Hiding or renaming gateways.
The Migration Path
At Nextools, we advocate for a phased migration. You don’t have to move everything at once. Start by recreating your most critical discounts using Shopify Functions. Apps like SupaEasy provide a “Scripts Migrator” tool and an AI-assisted Function generator to help Plus merchants move their logic into the modern ecosystem.
The benefit of moving to Functions is performance. Because they are compiled and run on Shopify’s edge servers, they don’t suffer from the execution time limits that often plagued complex Ruby Scripts. This means a smoother checkout experience and higher conversion rates during peak traffic.
Choosing the Right Tooling: The Nextools Decision Framework
Not every discount requires a custom Function. To maintain a clean and performant store, you should choose the simplest durable approach. Here is how we help our clients decide which tool to use:
Decision Checklist
- Is it a simple percentage or fixed amount off? Use Native Shopify Discounts.
- Do you need to stack 10+ tiers of discounts or “Buy More Save More” widgets? Use Multiscount. This is ideal for stores wanting to show the “save more” progress directly on the product or cart page.
- Do you need to hide a discount code field or block certain codes based on cart contents? Use Cart Block. This is essential for preventing fraud or ensuring that high-margin items aren’t accidentally discounted.
- Do you need to automate a “Gift with Purchase” when a specific code is used? Use AutoCart.
- Do you need custom logic (e.g., “Discount only if shipping to a specific zip code”)? Use SupaEasy to create a custom Function.
By following this framework, you avoid “app bloat” and ensure that your checkout remains as fast as possible. You can view all these options in the Nextools App Suite hub.
Implementation Scenarios: Real-World Use Cases
To truly understand how to create a discount code that drives value, let’s look at how professional Shopify teams implement these in complex scenarios.
Scenario 1: Regional Wholesale Discounts (B2B)
A merchant sells both to retail customers and wholesale partners. Wholesale partners need a 30% discount, but only on specific bulk collections and only when they are logged in.
- The Problem: Native “Customer Segments” work, but if the wholesaler uses a “Welcome” code, they might stack a 10% retail discount on top of their 30% wholesale price.
- The Nextools Solution: Use Cart Block to disable the discount code field for any customer with the “Wholesale” tag. Then, use SupaEasy to apply an automatic Function-based discount that is locked to that tag.
Scenario 2: High-Volume BFCM Tiers
A brand wants a “Spend $100 Get $10, Spend $200 Get $25, Spend $300 Get $50” promotion.
- The Problem: Setting this up as three separate automatic discounts in Shopify will cause conflicts, as Shopify usually applies only the “best” discount, but managing the UX of which one is “best” can be confusing for the buyer.
- The Nextools Solution: Deploy Multiscount. It handles the tiered logic natively within the cart and includes a widget that shows customers how much more they need to spend to reach the next discount tier, effectively increasing AOV.
Scenario 3: Restricting Discounts by Payment Method
A merchant wants to offer a deep discount code but only if the customer doesn’t use a high-fee “Buy Now, Pay Later” (BNPL) service.
- The Problem: Shopify doesn’t allow you to restrict discount codes based on the payment gateway selected later in the checkout.
- The Nextools Solution: Use HidePay to hide specific payment methods when a specific discount code is present in the cart. This ensures that the high-value discount is only used alongside low-fee payment gateways.
Safe Deployment: Testing and QA for Discounts
A broken discount code during a marketing push is a nightmare for customer support. Our playbook emphasizes safe implementation.
Testing in Dev Stores
Never test new, complex discount logic on your live production store. Use a Shopify Plus sandbox or a Development store. This allows you to verify that your Shopify Functions or app-based logic doesn’t conflict with existing shipping rates or tax calculations. SupaEasy offers a Free Dev Store plan specifically for this purpose.
The “Stacking” Audit
Before going live, perform a “Stacking Audit.” Create a matrix of all active discounts and test them against each other.
- Can a “Free Shipping” code be used with a “10% off” automatic discount?
- Does the discount apply before or after taxes? (Shopify applies it to the subtotal before taxes).
- What happens if the customer adds a “Gift with Purchase” via AutoCart? Does it trigger a second discount?
Rollback Plan
Always have a “kill switch.” If you are using a custom Shopify Function, know how to deactivate it instantly from the Shopify Admin under Settings > Customizations. If using an app, ensure you know which settings to toggle to revert to standard pricing.
Measuring Success Beyond the Redemption Rate
Most merchants only look at how many times a code was used. To optimize your store like an engineer, you need to look deeper.
AOV and Margin Impact
A discount that increases conversion but tanks your Average Order Value (AOV) might not be successful. Use Shopify’s Sales by Discount report to see if discounted orders have a higher or lower total value than non-discounted orders. If your “Spend $100 Get $10” code is frequently used on $101 orders, it might be too generous.
Support Ticket Volume
If your “how to create a discount code” workflow is too complex, customers will get frustrated. Monitor your support channels for phrases like “code not working” or “where do I enter the coupon?” If these tickets spike, consider moving from a manual code to an automatic discount or improving the UI with SupaElements.
Conclusion
Mastering how to create a discount code in Shopify is the foundation, but for Plus merchants, the real work lies in customization and stability. The transition to Shopify Functions and Checkout Extensibility is an opportunity to rebuild your discount logic to be faster, more reliable, and more aligned with your specific business goals.
Actionable Checklist:
- Clarify Constraints: Identify your target markets, product margins, and existing discount stack.
- Check Platform Limits: Ensure you aren’t exceeding the 20 million code limit or the 100-item entitlement limit.
- Choose the Approach: Use native discounts for simplicity; use SupaEasy for custom logic and Script migration; use Multiscount for tiered growth.
- Implement Safely: Test all logic in a dev environment and perform a stacking audit.
- Measure & Iterate: Track AOV and support tickets to refine your strategy.
Ready to take your store’s logic to the next level? Explore the Nextools Shopify App Suite and find the specific tool that fits your engineering needs.
Nextools Shopify App Suite (Quick Links)
- SupaEasy — Shopify Functions generator + Script migration + AI
- SupaElements — Checkout + Thank You + Order Status customization
- HidePay — Hide/sort/rename payment methods
- HideShip — Hide/sort/rename shipping methods + conditional rates
- Multiscount — Stackable + tiered discounts
- Cart Block — Checkout validator (block/validate orders; anti-bot/fraud)
- AutoCart — Gift with purchase + auto add/remove + companion products
- ShipKit — Dynamic shipping rates (rule-based)
- Hook2Flow — Send webhooks to Shopify Flow (automation)
- AttributePro — Cart attributes + line properties (conditional logic)
- Formify — Custom checkout forms (drag & drop)
- CartLingo — Checkout translator (manual + AI)
- NoWaste — Discount & promote expiring/damaged/refurbished/returned items
- Hurry Cart — Countdown cart urgency timer
- Fatturify — Sync invoices/products with “Fatture in Cloud” (Italian market)
- PosteTrack — Tracking for Poste Italiane (Italian)
FAQ
Does creating a discount code require Shopify Plus?
Basic discount codes and automatic discounts are available on all Shopify plans. However, advanced logic, such as using Shopify Functions for custom discount rules or migrating from Shopify Scripts, requires a Shopify Plus plan. Plus merchants also have access to higher API rate limits for managing large volumes of codes.
How can I test my discount codes before a major launch?
We recommend using a Shopify Plus sandbox or a development store. You can simulate checkouts to ensure that codes apply to the correct products and that “Discount Combinations” are functioning as expected. For app-based logic, SupaEasy and other Nextools apps offer free plans for development stores to facilitate safe QA.
Why won’t my Shopify discount codes stack?
By default, Shopify prevents discounts from stacking to protect merchant margins. You must explicitly enable “Combinations” in the discount settings. You can choose to allow a discount to combine with other “Product discounts,” “Order discounts,” or “Shipping discounts.” Note that a maximum of 5 discount codes can be applied to a single order.
What is the best way to migrate my old Shopify Scripts to the new system?
The best approach is to identify the core logic of your Ruby Script and recreate it using a Shopify Function. Tools like the SupaEasy Scripts Migrator and AI Generator can help you map your old logic to the new Function-based architecture, ensuring your store is ready for the 2025 deprecation of the old Scripts app.