Marketing

Promo code ideas: 10 discount offers for Black Friday and Christmas

Promo code ideas for an online store: 10 offers for Black Friday, Christmas and the Bulgarian calendar, how much to discount and how to stop code leaks.

The CloudCart team14 min read
A paper price tag with a perforated coupon half torn off, next to a small wrapped gift box and a desk calendar with one Friday circled
In this article · 15 sections
  1. What a promo code is and when it beats a plain sale price
  2. Which discount type fits which promotion
  3. How to create a discount code in your online store, step by step
  4. How much discount you can give without losing money
  5. Percentage or fixed amount: which to choose
  6. How to stop discount code abuse
  7. Discount or free shipping: which sells more
  8. 10 promo code ideas for Black Friday and Christmas
  9. The Bulgarian shopping calendar: promo ideas for the whole year
  10. How to send the code: email, SMS, Viber and the cart
  11. Promo codes in ads: Meta, Google Ads and TikTok
  12. How to see which code brought orders
  13. Promo codes with an AI assistant: one sentence instead of dozens of clicks
  14. 7 promo code mistakes
  15. 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 doesBest for
Global discountPercentage, amount or free shipping for everyone, an order threshold, a category or brandStore-wide or category sale
Discount with promo codeThe same, only with a codeNewsletter, social and ad codes
Discount with multiple promo codes - ContainerA pool of reusable codes, each with its own percentageMail-outs that apply on click
Discount code (PRO)Codes under one campaign, each with its own value, limit and datesInfluencers, one-time codes
Fixed discountA new price on a product, the old one struck throughA bestseller at a special price
Quantity discountLower unit price for more units, up to 12 tiers"Buy more, pay less"
Countdown discountOrder discount with a timer at checkoutFlash 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:

  1. Open Marketing → Discounts, click + Add discount and choose Discount with promo code.
  2. 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.
  3. 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.
  4. Set limits: Discount limits (total uses), Discount limit for customer (1 to 100,000), customer groups or Only registered users.
  5. 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.
  6. 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 margin10% off20% off30% off
30%+50% units+200% unitsZero 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.

Cart10% code€10 off over €80
€50-€5Does 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:

  1. 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.
  2. Limit per customer of 1 and a total limit, for example 300. A use counts once the order is paid, completed or fulfilled.
  3. Registered customers or one group only. A VIP code works for nobody outside the group.
  4. A short window. A 48-hour code reaches coupon sites after it has expired.
  5. 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.

SituationBetter choice
Average order up to €40, margin under 40%Free shipping with a code
Products over €150An amount over a threshold
Stock to clearA percentage on the category
Loyal customerFree 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:

OccasionWhenIdea
Name days, such as IvanovdenThrough the year; Ivanovden on 7 JanuaryCelebrated like birthdays: gift sets
Valentine's Day and Trifon Zarezan (winegrowers' day)14 FebruaryGift bundles, wine
Baba Marta1 MarchMartenitsi (red and white tokens) as a gift over a threshold
Women's Day8 MarchCosmetics and flowers
Orthodox EasterSpring, often not the same Sunday as Western EasterHome, food, free shipping before the holiday
Children's Day1 JuneToys and children's clothing
First school day15 SeptemberBack-to-school quantity discounts
Black Friday, ChristmasNovember, DecemberThe 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.

ChannelWhere the code goesIn CloudCart
MetaAd text and the first seconds of a videoFacebook Pixel, every plan
Google AdsA promotion asset, with a promo code field and occasions such as Black Friday (Google Ads Help)Product feed for Google Ads and Merchant Center
TikTokSaid in the video and in the captionTikTok 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

  1. One shared code with no limit. It reaches coupon sites fast.
  2. Code refused in the cart because of a discounted product. Decide on the setting in advance.
  3. "From €50" fails at €50. Enter €49.99.
  4. Editing on sale day. Listings take a moment to refresh after a save.
  5. A code in every email. Customers stop paying full price.
  6. A discount bigger than your margin.
  7. 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

  1. Directive (EU) 2019/2161eur-lex.europa.eu
  2. Commission for Consumer Protectionkzp.bg
  3. Google Ads Helpsupport.google.com
  4. Google Search Consolesearch.google.com
The CloudCart teamChecked against the platform documentation. Questions: support@cloudcart.com

Build your online store

The first 3 months on every plan are €1/month. Questions: support@cloudcart.com

Create a store for €1