A discount is a price change with a start and an end. On Instagram it often becomes a personality: permanent codes in the bio, “you deserve this” every Friday, and a full price nobody pays. Buyers are not ungrateful when they wait. You trained them. The full price stopped being real.
This guide is for a product shop that sometimes needs a true offer: a season, a last size run, a wholesale leftover, a quiet month. It uses the offer language you already froze in the brand kit and the measurement habit in metrics that matter. It is not a tutorial on looking expensive. It is a way to post a lower price without making the higher one look fake.
Name the reason or do not run the offer

Write the reason in internal words before you write the caption:
- End of a color you will not recut.
- A holiday cutoff you can explain.
- A bundle that is cheaper because fulfillment is simpler.
- A slow week you planned, with a date, not a panic.
If the reason is “engagement is down,” do not discount the hero. Fix the page, the bio, or the choice of SKU using which product gets the week. A discount for reach teaches the cheapest lesson available: wait, and the price falls.
If you cannot say the reason to a customer in one calm sentence, the offer is not ready. “Because we love you” is not a reason. It is a costume on top of a margin decision.
Put both prices where a screenshot cannot lie
The frame and the first caption line should show:
- The product name.
- The current price and the offer price, both numbers.
- The end: a date and a time zone.
- What is excluded: a size, a color, or wholesale.
Good: “The stone mug is $42, $34 through Sunday 6 p.m. Pacific. Matte black is not in this offer.”
Weak: “Treat yourself. Link in bio. You know.”
The page must show the same numbers before the post goes up. A caption that undercuts checkout, or a checkout that did not get the code, creates angry comments you then have to answer with the comment reply card. Check the page on a phone that is not your admin session.
Give the offer one home and take it down
Publish the offer in one hero post and, if you need it, two Stories. Do not repeat it in every tile until the grid is a sale bin. The other tiles that week can still be proof and care for the same product. They do not each need a percent sign.
When the end time passes:
- Archive or edit the Story.
- Update the caption’s first line if the grid tile still sits at the front. Say the offer ended, or replace the tile.
- Remove the code from the bio the same hour. A code that lives in the bio is not a limited offer.
- Turn the price back on the page before you announce that it is back.
Leaving the sale creative up because it “still gets saves” is how the next full-price post looks like a trick. People compare screenshots. Assume they will.
Do not invent urgency you would not say in the shop
Banned lines, unless they are literally true:
- “Last chance ever” on a product you restock.
- A timer that resets.
- “Only 2 left” when the shelf has twenty.
- A code named for a person that actually works for everyone, forever.
- A surprise second code in the comments for whoever complains.
Honest scarcity is allowed. The sold-out guide is the standard: say the stock you have. If the offer is “this color, while the eight units last,” and there are eight, you may say eight. If you are not willing to update the number, do not use a number.
Price advertising rules differ by country. The principle you can keep everywhere is simpler than a statute: the higher price should be a price you actually charged, and the end should be an end. When you want the formal US framing, the FTC’s pages on advertising claims are the sober version of this paragraph. Start from their business guidance at FTC business guidance and then come back to the sentence your shop can prove.
Write the caption in the normal voice
The offer is not a new brand. Use the same do’s and don’ts as any other week. State the reason in human language if it helps the buyer decide:
- “We are closing the sand color. The price is $34 through Sunday. After that, this color is gone and the other colors stay at full price.”
- “Holiday orders placed after the 12th will not promise arrival. The mug is $34 until the 12th, then $42.”
Avoid a second voice that only appears when money is involved. If your search captions sound like a shopkeeper, the sale caption should sound like the same shopkeeper on a week when the price is different. Keywords can include the product and the word “offer” or “ends.” They should not be a pile of “sale, discount, promo, deal, bargain.”
Decide who hears it first, then keep that promise
If a list or a past buyer group was promised early access, they get the real link before the feed. Give them a short window you can operationally support, such as a morning, not a secret week that makes the public post a rerun of sold-out stock.
If you did not promise anyone, post once, publicly, with the page. Do not also DM a quieter, deeper discount to people who reply “more off?” The comment and the inbox must quote the same price. Staff need a line: “The offer on the page is the offer. I can’t make a second one.”
Plan the week after the offer before you post this one
The dangerous week is the week after. If you have nothing to say except another code, you taught the wait. Before the discount goes live, write the next hero: full price, a fact, a proof post. That week should already be chosen with the SKU rule. When Sunday ends, you are not staring at an empty calendar and reaching for a new percent.
A quiet week plan, when you truly have no new product, is in what to post when nothing is new. A discount is one option inside a quiet month, not the only sentence you know.
Keep a record so the shop can see the pattern
On one card, log every public offer:
- Dates.
- SKU and the reason.
- Prices.
- Orders during the window and the seven days after, at full price.
- Whether comments asked for a better code.
If full-price orders collapse after every offer, the offers are too frequent or too deep. If people ask for a better code, someone has been negotiating in private. If the offer only moves a discontinued color, keep using offers for that job and stop using them as a weekly content format.
Bring the card to the same Monday meeting as the other metrics. A sale that “felt good” and trained the list to wait is not a win. Reach during a sale is the easiest number to misread.
Keep partners and wholesale off the public code
A friend, a stockist, or a wholesale account may have a different price on an invoice. That price does not become a comment reply and does not become a Story sticker. If a partner posts your product with their own offer, your caption still states your public price and your end date. Two public prices for the same SKU in the same week is how a buyer screenshots the cheaper one and arrives angry.
Write the exception where staff can see it: “Invoice terms stay in email. The feed only says the page price.” Then the person covering comments on a Saturday is not inventing a loyalty code to be kind.
Store the sentence where the next offer starts
Save the approved price sentence and the banned lines on the brand profile. The next time someone wants a code, they start from the card: reason, both prices, end, page updated, bio cleaned after. They do not start from a blank caption and a fire emoji.
Make the frame in the studio from the hero photo you already trust. Do not generate a new, louder product for the sale. The object did not change. The price did, for a while, for a reason you can say out loud.
Full price stays believable when lower prices are rare, dated, and identical in the caption and the cart. Post the offer like a shopkeeper who expects to charge the normal price again next week, because you have already planned the week that proves it.