DiscountFixDocs / Manage your sets
Discount sets

Manage your sets

Everything you can do with a set after it's created: track generation, export codes, add more, change settings and dates, and clean up.

The Discount codes list

Open Discount Codes in the app menu. At the top are two buttons, Create new discount set and Add codes to an existing discount, and two counters: codes created this month and codes remaining. Sets are listed newest first.

ColumnWhat it shows
Set TitleThe title, and underneath it ID: 1234. The ID is what you use in Shopify Flow and when contacting support. Sets bound to a discount made in Shopify carry a From Shopify badge. The set's tags appear below the ID.
CountCodes requested for the set, including every batch added later.
Valuee.g. 20%, 10USD, Free Shipping, Buy X Get Y or 15% + Free Shipping.
Created AtWhen the set was saved.
StatusIn queue Running Completed Failed, plus N rejected when some specific codes were refused. What each status means: Saving and generation.
ActionsSee Actions on a set.

Once you have tags, filters for Campaign, Channel and Department appear above the list. Choose No campaign (and so on) to find sets that haven't been tagged yet.

Discounts created by Flow's Create a personal discount action aren't in this list. They have their own Flow Discounts page.

Sets in progress

While a set or a batch of added codes is being generated, it appears in the In-progress discount sets card above the list, with X / Y created, a percentage, a progress bar and an estimate: About 4 min left while it runs, or 1 of your sets ahead · starts in about 2 min · done in about 3 min while it waits behind your earlier sets. The estimate is based on the speed actually measured and gets more accurate as the set runs. The page refreshes itself every few seconds until it's done, then the set moves into the table.

When you add codes to an existing set, the whole set moves to this card until the new batch is finished, and returns to the table afterwards.

Actions on a set

Each row has three controls: Stats, Export and the ⋯ (More actions) menu.

ControlWhat it does
StatsRedemptions, revenue, usage per code, orders and exports. Available on Pro and Unlimited. See Stats.
Export ▾Export as CSV, Export as XLSX, Export with discount links and Print QR vouchers (PDF). See Export codes.
⋯ More actionsShow details (the details panel), Add new codes (Add codes), Reserved codes (only when Shopify Flow reserved codes; Reserved codes), Edit settings (not on From Shopify sets; Edit a set), Edit tags (Tag sets), Duplicate (not on From Shopify sets; Duplicate a set), History (Set history), Open in Shopify and Delete.

Set details

Click Show details on a set to open a panel with:

  • Summary and Code Configuration: the set's discount and code settings.
  • Example Discount Code: a sample in the set's format. Generate another code shows a new sample; it isn't created in Shopify.
  • More actions: Open in Shopify (the discount in your Shopify admin, in a new tab), Edit settings and Delete.
  • Rejected codes: only when some specific codes were refused. See Rejected codes.
  • Code Adding History: one row per batch (the original set and each Add new codes batch) with its date, Code Count, Generated, status and its own Export button.
For the settings Shopify can't set through apps

Use Open in Shopify, for example to set Sales channel access. Changes you make to the discount in Shopify are picked up the next time you open Edit settings in the app.

Export codes

Click Export ▾ on a set and choose Export as CSV or Export as XLSX. The file downloads straight away.

  • Contents: one column, Discount Codes, with every code in the set: the original batch and all codes added later. Used and expired codes are included; rejected codes are not.
  • One batch only: use the Export button of that batch in Code Adding History. Handy when you add 1,000 codes for a new partner and want to send only those.
  • File name: discount_codes_YYYY-MM-DD_HHMMSS.csv or .xlsx. CSV files are UTF-8, so they open correctly in Excel.
  • Export is available once the set has finished generating.
  • With usage data: on Pro and Unlimited, the set's Stats page exports each code with its status, times used, expiry and dates.

Adds a Discount Link column next to each code. When a customer opens the link, the code is applied to their cart automatically and they land on the page you choose. Handy for influencers, emails and SMS.

  • Landing page: a path such as /collections/sale, or paste an address from your store. Default: the home page.
  • UTM source, UTM medium, UTM campaign (optional): show up in Shopify Analytics under sessions by UTM. The campaign is filled in from the set title.
  • Links use your store's primary domain, for example https://yourstore.com/discount/CODE?redirect=…. The code is saved in the browser that opens the link.

Print QR vouchers (PDF)

Creates a printable PDF with one QR code per discount code, for packaging inserts, flyers, events or in-store cards. Scanning a QR opens your store with the code already applied. A live preview in the window shows exactly how a card will print.

  • Layouts: Cards (8 per page, with headline, code, message and validity line, and dashed cut lines) or Labels (24 small QR codes per page, for stickers). Paper: A4 or US Letter.
  • Text: the headline is suggested from the set's value (e.g. 10% OFF) and the validity line from its end date; change both as you like. Any language works, including accented letters.
  • Links: the same landing page and UTM options as link export. UTM source/medium default to qr / print.
  • Big sets: every code in the set is included. Sets over 2,000 codes are split into PDFs of 2,000 codes and downloaded as one ZIP file.

Export for another app

Downloads the codes in the file format another app expects, so you can upload them as a code pool there. Choose Export ▾ → Export for another app.

TargetFileWhere to upload it
KlaviyoCSV with one column, Coupon CodeIn Klaviyo, go to Coupons, create an uploaded coupon, then choose Add codes.
Smile.ioCSV with one column, CodeAn imported reward in Smile.io. Codes with symbols such as %, $ or * are left out, because Smile.io doesn't accept them; the message after the export says how many.
WisepopsCSV with one column, CouponIn Wisepops, go to Integrations, then Uploaded Discount Codes, create a list and upload the file. Codes longer than 50 characters are left out, because Wisepops doesn't accept them; the message after the export says how many.
Plain listText file, one code per line, no headerAny app that takes a list of codes.

Only codes that are still available is on by default. It leaves out codes that were already used, expired, or handed out by Shopify Flow, so the same code isn't given out by two apps. Turn it off to export every code.

On Pro and Unlimited you can skip the file for Klaviyo: Send to Klaviyo sends the codes directly and keeps the coupon filled.

Make sure the other app has enough codes for everyone who will get one. When a pool runs out, apps like Klaviyo skip the message instead of sending it without a code.

Add codes to a set

Click + (Add new codes) on a set. The Add Discount Codes page adds a new batch to the same Shopify discount.

  • You choose: a title for the batch, random or specific codes, and the code format. The format starts with the set's current settings, so new codes look like the old ones.
  • Inherited, can't change here: discount type, value, products, minimum, customers, combinations, usage limits and dates. The Summary shows them under Adding to ….
  • Specific codes are pasted into the box; file upload is only on the create page.
  • The batch counts toward your monthly allowance like a new set. Its progress shows in the In-progress card, and it appears in the set's Code Adding History.
  • The set keeps its ID. Flow workflows using that ID see the new codes immediately.

To refill a set automatically, use the Flow action Generate more discount codes.

Edit a set

Click the pencil or Edit settings. Changes are saved to the Shopify discount straight away and apply to every code in the set, including batches added later. Orders already placed aren't affected.

You can changeYou can't change
Title
Value (and percentage / fixed amount on order + free shipping sets)
Item limit and free shipping on app-discount sets
Applies to: products and collections
Buy X Get Y: discounted quantity, value and uses per order
Free shipping: countries and maximum shipping amount, or the amount on fixed amount off shipping sets
Fixed value: Only apply discount once per order
Purchase type (one-time / subscription / both) and recurring payments, except on Buy X Get Y
Minimum purchase requirements
Eligibility: segments or markets
Combinations
Total uses and one use per customer
Start and end dates
Discount type
Codes: count, format, specific code list
Buy X Get Y: which products customers buy and get
Removing both the item limit and free shipping from an app-discount set
Switching between free shipping and a fixed amount off shipping
  • Total uses applies per code. Uses that already happened count toward the new limit.
  • Dates are in your store's timezone. Moving the end date into the future makes expired codes work again.
  • Press Save in the bar at the top; Discard undoes your changes. You'll see Discount set updated.
  • If the page shows Couldn't reach Shopify, it's showing the last saved values. Reload before saving if you changed the discount in Shopify meanwhile.
"From Shopify" sets can't be edited in the app

Their settings belong to the discount you created in Shopify. Change them in Shopify under Discounts. See Existing Shopify discounts.

Save errors

MessageWhat to do
Shopify rejected the change. Please review the values and try again.A value Shopify doesn't accept, e.g. an end date before the start.
We couldn't reach Shopify. Please try again in a few minutes.Temporary. Try again later.
Your Shopify connection has expired. Please reopen the app from your Shopify admin.Open DiscountFix again from Apps in Shopify.
The per-order item limit can be changed but not removed on this set.Create a new set without a limit.
This discount set no longer exists. Please refresh the page.The set was deleted, or the discount was deleted in Shopify.

Tag sets

Give each set a campaign (e.g. Black Friday), a channel (e.g. Email, Influencer) and a department (e.g. Marketing). Tags don't change how the codes work. They let you filter the list and compare results per tag in Stats.

  • Where the values come from: Settings in the app menu. A starter list of channels and departments is added for you; campaigns you add yourself. You can rename, archive or restore any value. Archived values can't be chosen for a set anymore, but sets that already use them keep them.
  • Tag a new set: the Tags card on the create form.
  • Tag an existing set: ⋯ More actions → Edit tags. This works on every set, including From Shopify sets. Codes added to a set later share its tags.
  • In Shopify too: the values are added to the discount's own Tags in Shopify, so you can filter by them under Discounts. Changing or renaming a value updates them; tags you add in Shopify yourself are left alone. Shopify can take a few seconds to show a change.
  • Make a tag required: in Settings, tick Required when creating a set. New sets can't be saved without it. Existing sets aren't affected.

Duplicate a set

⋯ More actions → Duplicate opens the create form with the set's settings already filled in: discount type and value, products and collections, minimum, customer eligibility, limits, combinations, code format, the number of codes and the tags. Review it and click Save. You get a new set with a new Shopify discount and new codes.

  • The title gets (copy) at the end. Change it if you like.
  • The start date is set to now. The end date is kept if it's still in the future; otherwise the copy has no end date.
  • A set of specific codes is copied as random codes, because the same codes already exist in Shopify.
  • The new codes count toward your monthly allowance, like any new set.

From Shopify sets can't be duplicated; their settings belong to the discount in Shopify.

Set history

⋯ More actions → History lists what happened to a set, newest first: when it was created (or copied from another set), codes added, settings changed (which fields), end date extended, tags changed, unused codes cleaned up and the set deleted. Changes made by Shopify Flow or Sidekick are marked as such.

History is recorded from October 1, 2026. Changes made directly in the Shopify admin aren't recorded.

Look up a code

The Look up a discount code box on the Discount codes page finds the discount any code belongs to, including codes not created with DiscountFix. Type the code (upper or lower case) and press Search.

The result shows the discount's title, status (Active, Scheduled, Expired), type, whether it was created with DiscountFix, the number of codes, times used for the whole discount, and its dates. Buttons: Add more codes and View stats for DiscountFix sets, and Open in Shopify admin.

Below the result, a checklist explains why the code may not work. If something blocks it right now, the box turns red and is titled Why this code doesn't work right now:

  • Blocking: the discount hasn't started yet, it has ended, this code has no uses left, or a Shopify rollout turns it off for all buyers.
  • Rollouts: a rollout turns the discount on or off for part of your visitors (shown once you allow rollout access).
  • Restrictions: only certain customer segments or markets, or subscription purchases only.
  • Conditions: once per customer, minimum purchase, selected products only, free shipping countries or rate limit, and whether it combines with other discounts.

The checklist shows the discount's own rules. A customer's cart can still block a code, for example when another discount in the cart doesn't combine with it. Useful when a customer writes in with a code and you need to know which campaign it's from and why it didn't apply.

Delete a set

Open the ⋯ menu on the set (or the set's details) and click Delete, then confirm. The set and all its added batches disappear from DiscountFix.

Deleting doesn't delete the codes in Shopify

The discount and all its codes stay live in Shopify and can still be used. Deleting only removes the set from the app. After that, the app stops tracking its redemptions and you can't export it or see its stats. There's no undo.

To stop the codes working, delete or deactivate the discount in Shopify under Discounts (use Open in Shopify first), or set an end date in the past with Edit settings before deleting.

Deleting a set doesn't return its codes to your monthly allowance.

To remove codes from Shopify instead, see Clean up unused codes.

Clean up unused codes

Shopify allows 20,000,000 discount codes per store. Every code counts, whether it's active, scheduled or expired, and whichever app created it. Once a store reaches the limit, no new codes can be added. Open Clean up from the app menu to see how close your store is and to free up room.

CardWhat it does
Discount codes in your storeYour store's total code count from Shopify, against the 20 million limit. It includes codes from other apps.
Ended sets with unused codesSets whose end date has passed and that still have codes nobody used. Select one or more sets and click Delete unused codes. The Unused column is an estimate. The exact number deleted appears in the history when the cleanup finishes.
Expired Flow personal discountsDiscounts that Flow's Create a personal discount action made for one customer, that expired without being used. Delete them removes those discounts from Shopify and from the Flow Discounts page.
Cleanup historyEach cleanup with how many codes were deleted and how many were kept.

What is and isn't deleted:

  • Only codes that were never used are deleted. Used codes stay, so your stats, redemptions and exports keep them.
  • The discount itself stays in Shopify.
  • DiscountFix only deletes codes it created. Codes you added to a discount yourself in Shopify are always kept.
  • If you extended the discount's end date in Shopify, the cleanup stops and deletes nothing.
There's no undo

A customer who types a deleted code sees that the code is invalid, not that it has expired.

Cleanups run in the background. You can leave the page; the history shows progress when you come back.

Code safety Pro & Unlimited

Open Code safety from the app menu. It has two parts.

Possible leaks

When a code you gave to one customer is used by a different customer, DiscountFix flags it. That usually means the code was shared or posted on a coupon site. It works for codes handed out to a customer with Shopify Flow: Reserve a unique discount code and Create a personal discount. Orders are checked every hour.

  • Each alert shows the code, the set, the customer it was given to, the customer who used it and the order, with links to them in Shopify.
  • Disable code removes that one code from the Shopify discount, so it stops working at checkout. The discount and its other codes keep working, and orders already placed aren't affected. There's no undo.
  • Dismiss closes the alert without changing anything, for example when a family member used the code.
  • Guest checkouts have no customer to compare, so they can't be flagged.
  • To react automatically (tag the order, email your team), use the Flow trigger Discount code possibly leaked.

Discount health check

Checks every active discount code in your store, including ones from other apps and ones you made in Shopify, for settings that make it easy to abuse:

FindingRisk
No usage limit on a discount with only a few codes: anyone who finds the code can use it again and againMedium (High at 30% off or more)
One code used 50 or more times: it's probably posted publiclyHigh
Each code in a large set can be used without limit, so one leaked code keeps workingMedium
50% off or more (not Buy X get Y)Medium (High at 80% or more)
In a Shopify rollout: a rollout turns the discount on or off for some or all buyers, so a code can work for one customer and not for another (needs rollout access, see below)Medium
No end date, no minimum purchase on a large discount, or combines with every other kind of discountShown as notes

Nothing is changed automatically. Use Open in Shopify or, for DiscountFix sets, Edit in DiscountFix to fix a setting. The check covers your 300 newest active discounts.

Discounts in Shopify rollouts

Shopify's Rollouts let you schedule a discount or test it on a share of your visitors. While a rollout is running, the discount's own dates no longer tell you who gets it. To see which discounts are in a rollout, click Allow access in the banner above the health check and approve read-only access to rollouts. The health check and Look up a code then show the rollout's name, its share of visitors and its dates. A split only applies in the Online Store.

Flow pages

PageHow to get thereWhat it shows
Reserved codes⋯ More actions → Reserved codes on a setEvery code Flow's Reserve a unique discount code action handed out: the code, customer (linked to Shopify), when it was reserved, its status and when it expires. Search by code or customer ID; 20 per page.
Flow DiscountsApp menuEvery discount created by Flow's Create a personal discount action: code, customer, value, created date, status and expiry. Search by code, title or customer ID; 20 per page.

Reserved code statuses:

StatusMeaning
Used (×N)The customer used the code, N times if more than once.
Not used yetThe code was given out and still works.
ExpiredThe workflow gave the code a Valid for (days) deadline, the customer didn't use it in time, and the code was removed from Shopify. It no longer works at checkout. See codes that expire N days after they are sent.

The Expires column shows the earlier of the set's end date and the code's own Valid for (days) deadline.

Both pages are read-only. To put a reserved code back in the pool, use the Flow action Release a reserved discount code.