In this article · 15 sections
- What a promo code is and when it beats a plain sale price
- Which discount type fits which promotion
- How to create a discount code in your online store, step by step
- How much discount you can give without losing money
- Percentage or fixed amount: which to choose
- How to stop discount code abuse
- Discount or free shipping: which sells more
- 10 promo code ideas for Black Friday and Christmas
- The Bulgarian shopping calendar: promo ideas for the whole year
- How to send the code: email, SMS, Viber and the cart
- Promo codes in ads: Meta, Google Ads and TikTok
- How to see which code brought orders
- Promo codes with an AI assistant: one sentence instead of dozens of clicks
- 7 promo code mistakes
- Frequently asked questions
In short: the promo codes that sell best are tied to one audience and one reason: early access for subscribers, a code per influencer, free shipping until the last delivery day before Christmas, a 60-minute flash sale. Before you pick a number, check your margin: at a 40% margin, a 20% discount needs twice as many units sold to earn the same profit.
This guide is for stores selling in or from Bulgaria and across the EU. It is written by the team behind CloudCart, the Bulgarian ecommerce platform, and the CloudCart facts come from the platform documentation and the Discount codes and promotions page.
What a promo code is and when it beats a plain sale price
A promo code (the admin calls it a discount code) is a string the shopper enters in the cart to get a percentage off, an amount off or free shipping. It beats a strikethrough price when the offer should reach only certain people: subscribers, loyal customers, an influencer's followers. Each channel gets its own code, so you know where the order came from, and you don't cut the price for people who would have bought anyway. A plain sale price is stronger for clearing whole categories.
Coupon aggregator sites collect store codes and rank well for "promo code" searches. A public code with no limit ends up there sooner or later.
Which discount type fits which promotion
CloudCart has 7 discount types under Marketing → Discounts → + Add discount, plus Cart rules for promotions with several conditions.
| Type (card in the admin) | What it does | Best for |
|---|---|---|
| Global discount | Percentage, amount or free shipping for everyone, an order threshold, a category or brand | Store-wide or category sale |
| Discount with promo code | The same, only with a code | Newsletter, social and ad codes |
| Discount with multiple promo codes - Container | A pool of reusable codes, each with its own percentage | Mail-outs that apply on click |
| Discount code (PRO) | Codes under one campaign, each with its own value, limit and dates | Influencers, one-time codes |
| Fixed discount | A new price on a product, the old one struck through | A bestseller at a special price |
| Quantity discount | Lower unit price for more units, up to 12 tiers | "Buy more, pay less" |
| Countdown discount | Order discount with a timer at checkout | Flash sale |
| Cart rules | "If this, then that" with several conditions | "3 for 2", loyalty discounts |
Promo code, global, fixed and quantity discounts are on every plan: 3 of each on Baby Pack, 5 on Starter Pack, unlimited on CC Pro and CC Master (see plans and pricing). Container codes and the countdown timer are on CC Pro and CC Master. If the Discount code (PRO) card shows an upgrade panel, your plan does not include it. Cart rules: 1 on Baby Pack and Starter Pack, 2 on CC Pro, 3 on CC Master. Customer groups: 3 on Starter Pack, 5 on CC Pro, 100 on CC Master.
How to create a discount code in your online store, step by step
A single code takes 2 to 3 minutes with the Discount with promo code card. Here is "BF15", 15% off orders over €60:
- Open Marketing → Discounts, click + Add discount and choose Discount with promo code.
- Set the code. Type it or use Generate a discount code. Up to 20 characters, unique in the store, accepted in upper or lower case.
- Choose type and target: percentage, fixed amount or free shipping, on the whole cart, Orders over an amount, a product, category, brand or smart collection. "Orders over" is strictly over, so for "from €60" enter €59.99.
- Set limits: Discount limits (total uses), Discount limit for customer (1 to 100,000), customer groups or Only registered users.
- Decide on discounted products. By default an "Orders over" code is refused if the cart holds a discounted product. Turn on The discount is applied even when the cart contains discounted products to allow it.
- Set the Date range, save and test the code in the cart from another browser.
Important: the link your-store-address/cart/discount:BF15 applies the code automatically. Put it behind the button in your email or SMS and the shopper types nothing.
How much discount you can give without losing money
A discount pays off only if extra sales cover the margin you give away: required growth in units = discount ÷ (margin − discount). A €50 product that costs you €30 earns €20 (40% margin). At 20% off it earns €10, so you need 2 units instead of 1.
| Your margin | 10% off | 20% off | 30% off |
|---|---|---|---|
| 30% | +50% units | +200% units | Zero profit |
| 40% | +33% units | +100% units | +300% units |
| 50% | +25% units | +67% units | +150% units |
| 60% | +20% units | +50% units | +100% units |
Below a 40% margin, prefer an amount over a threshold, free shipping or a gift, which don't cut every product's price. Keep 30% and up for stock you want to clear. More in pricing and margin for an online store.
Percentage or fixed amount: which to choose
A percentage works better on cheap products, and a fixed amount is safer on expensive and mixed carts, because the percentage grows with the cart.
| Cart | 10% code | €10 off over €80 |
|---|---|---|
| €50 | -€5 | Does not apply |
| €90 | -€9 | -€10 |
| €400 | -€40 | -€10 |
If two no-code "Orders over" discounts are active, CloudCart applies only one: the highest threshold the cart passes, whatever it saves. They never add up, so plan thresholds as steps that grow with the discount.
How to stop discount code abuse
Limits stop abuse. Set each code up so that a leak costs you little:
- One-time codes. The Discount code (PRO) generator creates codes in bulk (up to 5,000 per run by default), each with its own usage limit, for example 1. Container codes stay reusable until you turn them off, so don't use them as one-time codes.
- Limit per customer of 1 and a total limit, for example 300. A use counts once the order is paid, completed or fulfilled.
- Registered customers or one group only. A VIP code works for nobody outside the group.
- A short window. A 48-hour code reaches coupon sites after it has expired.
- Switch off on a leak with the toggle on its row. It takes effect at checkout immediately.
Discount or free shipping: which sells more
Free shipping is the cheaper promotion for a low-margin store, because it costs the courier fee whatever the order size. A discount is stronger for high-margin, expensive products.
| Situation | Better choice |
|---|---|
| Average order up to €40, margin under 40% | Free shipping with a code |
| Products over €150 | An amount over a threshold |
| Stock to clear | A percentage on the category |
| Loyal customer | Free shipping for the group |
Econt and Speedy, Bulgaria's main courier networks, and BOX NOW parcel lockers are built into CloudCart shipping. How to set the threshold against your real parcel costs is in the guide to the free shipping threshold.
10 promo code ideas for Black Friday and Christmas
Pick 3 or 4, not all 10. Black Friday is the last Friday of November and Cyber Monday the Monday after. The full store check before that week is in the 30-point Black Friday checklist.
1. Early access for subscribers
One-time Discount code (PRO) codes, 15% off, valid the day before Black Friday, sent in a campaign. Subscribers feel looked after and you test the load a day early.
2. VIP week
A code for the VIP customer group with a limit of 1 per customer. With no group, use a cart rule: "10% off for customers with 3 or more orders".
3. 60-minute flash sale
Countdown discount, 20% off the order with a timer that starts per cart. Checkout uses only the first active countdown it finds, so keep one active at a time.
4. "3 for 2"
A Cart rules rule: with 3 products in the cart, the cheapest item is €0. Limiting it to one category needs 2 conditions, so CC Pro or CC Master. With Aura Cart Rules you describe it in one sentence and review what Aura fills in.
5. Buy more, pay less
A Quantity discount: 1 to 2 units at €18, 3 to 5 at €15, 6 or more at €12. Good for consumables and team gifts.
6. Bestseller at a special price
A Fixed discount with the old price struck through. Under Directive (EU) 2019/2161, applied since 28 May 2022, an announced reduction must show the prior price: the lowest price in at least the 30 days before. In Bulgaria the Commission for Consumer Protection enforces consumer law. Don't lower the price in the month before the promotion.
7. Amount over a threshold
"€10 off over €80": Global discount, fixed amount, Orders over €79.99. It protects margin and nudges one more product into the cart.
8. Influencer codes
Discount code (PRO) gives each partner a code with its own percentage, limit and dates: MARIA15, IVAN20. Compare the uses and you know who sold. More in influencer marketing.
9. Free shipping until the last delivery day
A free shipping code that ends on the last day your courier delivers before Christmas. Put that day in the email. The deadline does the selling.
10. A January code in the Christmas parcel
One-time codes, 10% off in January, one per registered customer, sent after delivery. It gives a reason to come back after the holidays. For gifts after the last delivery day, add gift vouchers.
The Bulgarian shopping calendar: promo ideas for the whole year
If you sell to Bulgarian customers, these occasions are worth a code:
| Occasion | When | Idea |
|---|---|---|
| Name days, such as Ivanovden | Through the year; Ivanovden on 7 January | Celebrated like birthdays: gift sets |
| Valentine's Day and Trifon Zarezan (winegrowers' day) | 14 February | Gift bundles, wine |
| Baba Marta | 1 March | Martenitsi (red and white tokens) as a gift over a threshold |
| Women's Day | 8 March | Cosmetics and flowers |
| Orthodox Easter | Spring, often not the same Sunday as Western Easter | Home, food, free shipping before the holiday |
| Children's Day | 1 June | Toys and children's clothing |
| First school day | 15 September | Back-to-school quantity discounts |
| Black Friday, Christmas | November, December | The 10 ideas above |
Create each discount early with its start date: it starts by itself in the store's time zone. The full year is in the ecommerce marketing calendar.
How to send the code: email, SMS, Viber and the cart
Your own subscriber list is the safest channel, because you don't pay per view. CloudCart campaigns go out by email, SMS, Viber and Web Push to segments built from your customers and orders. Plans include 50 to 1,000 Marketing Suite subscribers, a bigger list starts at €19 a month for 1,000, and SMS and Viber are paid with credits. The variable {$dynamic_discount_code} creates a separate code for each recipient. The emails to have ready are in email marketing for an online store.
In an abandoned cart reminder, put the code only in the last message (see abandoned carts). On phones, send the /cart/discount:CODE link and keep codes short: BF15, not BLACKFRIDAYSALE15.
Promo codes in ads: Meta, Google Ads and TikTok
Give each channel its own code (FB15, G15, TT15), so the discount report shows what each brought even when a pixel misses a purchase.
| Channel | Where the code goes | In CloudCart |
|---|---|---|
| Meta | Ad text and the first seconds of a video | Facebook Pixel, every plan |
| Google Ads | A promotion asset, with a promo code field and occasions such as Black Friday (Google Ads Help) | Product feed for Google Ads and Merchant Center |
| TikTok | Said in the video and in the caption | TikTok Dynamic Ads app |
See Google Merchant Center in Bulgaria and Meta ads for an online store. A "Black Friday" category kept at the same address each year builds rankings; check it in Google Search Console and read online store SEO.
How to see which code brought orders
The Order discounts card in Analytics shows the top 5 discounts by amount given, uses, mobile and desktop split, and a link to the orders. In the discount list, each code's uses number opens its orders. After each campaign measure:
- Orders with the code against the same period without one.
- Average order with the code. If lower than usual, the threshold is too low.
- Discount given ÷ revenue with the code: the cost of the promotion.
- New customers among those orders.
Example: BF15 was used in 120 orders worth €9,600 with €1,440 given away, so the promotion cost 15% of turnover. The margin table tells you whether the extra orders cover it.
Promo codes with an AI assistant: one sentence instead of dozens of clicks
With Claude Code or ChatGPT Codex connected through a PAT (personal access token), you set up promotions in plain English. The CloudCart Admin API covers discounts, orders and products:
- "Create code BF15 for 15% off orders over €60, once per customer, from Black Friday to Cyber Monday."
- "Create MARIA15 for 15% with 200 uses and IVAN20 for 20% with 100."
- "Compare FB15, G15 and TT15: orders, revenue, new customers and discount given."
The API creates 5 types: percentage, fixed amount, fixed price, free shipping and Discount code (PRO). Quantity and countdown discounts are set in the admin. See running an online store with AI.
7 promo code mistakes
- One shared code with no limit. It reaches coupon sites fast.
- Code refused in the cart because of a discounted product. Decide on the setting in advance.
- "From €50" fails at €50. Enter €49.99.
- Editing on sale day. Listings take a moment to refresh after a save.
- A code in every email. Customers stop paying full price.
- A discount bigger than your margin.
- A prior price that isn't the 30-day lowest.
Questions about a setting: support@cloudcart.com. Every discount screen is covered in discount codes in CloudCart.
Frequently asked questions
Codes tied to one audience and one reason: early access for subscribers, a VIP code, a code per influencer, a flash sale, "3 for 2", free shipping until the last delivery day before Christmas and a January comeback code. Give each channel its own code.
In CloudCart open Marketing → Discounts → + Add discount → Discount with promo code. Set the code, type, target, limits and dates, then save. The link /cart/discount:CODE applies it automatically.
Extra units needed = discount ÷ (margin − discount). At a 40% margin, 10% off needs 33% more units and 20% off needs twice as many. Below 40% margin, prefer a threshold amount or free shipping.
Use one-time codes, a limit of 1 per customer, a total limit and a short window, or restrict the code to a customer group. A leaked code is switched off with its toggle, effective immediately.
With orders up to €40 and a margin under 40%, free shipping usually wins, because it costs only the courier fee. For expensive products an amount over a threshold works better. Test both with two codes.
Create the discounts at least two weeks early with Black Friday as the start date. End the Christmas shipping code on your courier's last delivery day, and keep regular prices stable for 30 days before any reduction.
Sources
- Directive (EU) 2019/2161eur-lex.europa.eu
- Commission for Consumer Protectionkzp.bg
- Google Ads Helpsupport.google.com
- Google Search Consolesearch.google.com
