The owner of a small online clothing shop pauses while packing an order in her back room and frowns at her phone, which shows her own Instagram ad for a rust sweater carrying a 20% off badge she never added
Meta

Meta Can Put a Discount You Never Approved in Your Ad. One Checkbox in Commerce Manager Decides It.

Meta detected offers can pull discounts from your website into your Facebook and Instagram ads, even copies with promotions off. Here is the switch that stops it.

Nora BennettPaid Media Strategist, BrandRocket
14 min readNovember 10, 2026

It is the second week of November, and a shop owner does what every store owner does before Black Friday. She takes her best-performing Meta ad, duplicates it, swaps in a fresh photo and gets it ready for the sale. She never touched the promotions setting. The original ad had promotions switched off, and she assumed the copy would too.

A few days later a customer emails her a screenshot. The new ad is showing "20% off," using a code she wrote for her email list, a code that was never meant for strangers on Instagram. She did not put it there. Meta did.

This is not a glitch, and it is not new in principle. Meta reads the offers on your website and can show them on your ads. What has changed is how far that reach goes, and the fact that the switch most owners would reach for, the one on the ad itself, does not actually stop it. The real off switch is a single checkbox in Commerce Manager. If you sell through Meta's shop ads, it is worth twenty minutes of your time before the busiest weekend of the year.

Meta Reads the Discounts on Your Website and Picks One for Your Ad.

Start with how the feature works, because Meta describes it plainly in its own help pages and most owners have never read them.

Meta calls it detected offers. In Meta's words, it "automatically detects content on your website and ads that resemble promotions." That means anything on your site that looks like a deal: a percentage off in your banner, a free-shipping threshold, a bundle price, a promo code in your header. It also reads the text of your ads. Those offers get added to Commerce Manager, the part of Meta's tools that runs your shop and catalog, and from there Meta can show them across Facebook and Instagram.

Three details in Meta's documentation matter more than the rest.

Meta picks which offer to show. When your site has several promotions running at once, Meta says its ad delivery system "highlights the one most likely to drive engagement based on audience response." You are not choosing the offer. The system is, and its goal is engagement, not your margin.

The offer can appear before anyone taps. Meta says offers "may also appear before people tap on your ad for certain placements." Its own example is Instagram Stories, where the button on your ad can change to See offer. So the discount is not hidden on a product page somewhere. It can be the first thing a stranger sees.

The code can apply itself. When the shopper checks out on your website inside Instagram's or Facebook's built-in browser, Meta says it "automatically applies the code." Where that does not work, the code is shown highlighted so the shopper can copy and paste it.

None of this is sinister on its own. A store running one public sale wants that sale on its ads, and Meta is doing the work for it. The trouble starts when your website holds offers you never meant for an ad, or when you think you have switched the feature off and you have not.

Meta is not choosing the offer that protects your margin. It is choosing the one most likely to get a tap.

You Can't Switch Off Promotions on One Meta Ad. Meta Says So Itself.

Here is the part that catches people. Most owners who have noticed promotions on their ads went looking for the setting on the ad itself, found it, and turned it off. That setting does something, but it does not do what they think.

Meta's help page on promotions is direct about it: "You can't turn promotions off for one ad. But you can add or change the promotion shown on any particular ad in Ads Manager." In other words, the control inside an ad lets you choose which offer appears. It does not let you say "no offer on this one." The only way to stop offers Meta found on your website and your other ads, Meta says, is to turn off Detected offers in Commerce Manager, which then stops them appearing "including after someone taps."

The timing of those settings matters too. Meta says your promotion settings "apply when you create, duplicate or edit an ad," and that ads you do not change keep the settings they already have. That is exactly why duplicating is the risky moment. When you copy an ad, Meta has shown advertisers a notice that reads: "Eligible promotions can appear with your new ad, even though promotions are turned off for your original ad." The trade publication PPC Land first reported that notice on November 6, from screenshots shared by a Meta ads specialist, Bram Van der Hallen.

Think about what November looks like in a small store's ad account. You copy your winning ad to test a new photo. You copy it again to move it into a sale campaign. You copy it a third time to try a Black Friday headline. Every one of those copies is a fresh chance for Meta to attach an offer from your site, and none of them inherits the choice you made on the original.

There is one more gap worth knowing. Meta's own page says the Detected offers checkbox "does not apply to Shopify-synced offers." If your store runs on Shopify and you sync discounts to Facebook and Instagram, unticking the box in Commerce Manager will not stop those discounts. You also have to unsync the discount in Shopify.

We have written about this pattern before. In why most platform updates do not need a reaction, the argument was that the change that actually costs you money is rarely the one in the headlines. It is a box that got checked somewhere you do not look. This is that box.

The switch on the ad lets you change the offer. Only the switch in Commerce Manager lets you say no offer.

Meta Adds Website Discounts to Sales Ads, Not Lead Ads. Most Service Businesses Can Skip This.

Before you go digging through settings, check whether any of this applies to you. Plenty of businesses advertising on Meta can stop reading here.

Promotions on Meta belong to ads that sell products. Meta's own setup steps for the feature start with a campaign using the Sales objective that sends people to a website, and the offers themselves are managed in Commerce Manager, where an online store keeps its shop and product catalog on Meta. Meta's page on offers adds that the fully automatic version "is only available if you have migrated to simplified Shops Ads," Meta's current setup for ads that sell from a catalog. If you are a plumber, a dentist, a landscaper or a law firm running lead ads or sending people to a booking form, you are not running the kind of campaign this feature attaches offers to, and there is nothing here to switch off.

If you do sell products through Meta, what counts as an eligible offer depends on how your store is connected:

The other group to think about is stores whose ads were recently switched into product browsing, where a tap on the ad opens a product page inside Facebook or Instagram rather than your website. Two of the three boxes on Meta's offer settings page apply specifically to "ads leading to shop or product browsing." On October 28, Meta turned product browsing on in ads that were already running, for every advertiser who had not opted out by email, which we covered in Meta's product browsing change. If that change touched your account, these boxes now touch your ads too.

The Code You Wrote for Your Email List Can Become a Meta Ad Offer.

If your store runs one discount for everyone, this whole feature is close to harmless. Meta finds your sitewide sale and puts it on your ads, which is probably what you wanted. The risk is in every other kind of offer.

Most stores, especially in November, run several at once. There is the public sale in the banner. There is a welcome code for new subscribers, an early-access code for the email list, a code for a creator's audience, a make-good code customer service sends after a late package, and a free-shipping threshold that only kicks in over a certain cart size. Some of those were priced to be public. Others were priced for one small group, as a trade: a discount in exchange for an email address, or an apology to one customer.

We wrote a whole piece on how private discount codes leak onto coupon sites, and the lesson there applies here with one change. A coupon extension needs a shopper to type your code before it spreads. Meta only needs the code to be visible somewhere it can read. If a private code sits in plain text on a page of your site, in a popup, or in the copy of another ad, Meta's documentation says it can be detected and shown. And because Meta chooses "the one most likely to drive engagement," a deeper private discount is not obviously at a disadvantage against your public one.

Expired offers are the other trap. Meta's help page says active offers are "automatically updated throughout your ad campaign," but it does not say how quickly a promotion that has ended on your site stops appearing in ads, and the published reports do not either. If a shopper sees a specific number in your ad and it fails at checkout, they do not blame Meta. They blame you, and then they email your support inbox. That is the most likely place you will first find out a surprise offer ran.

Google is doing the same thing, by the way. Google Ads now pulls promotions it finds on your website into eligible campaigns, and we covered how to check that Google setting. If you run both, you have two platforms reading the same pages.

A coupon site needs a shopper to type your code before it spreads. Meta only needs to be able to read it.

Meta's 4.6% Promo Lift Measures Conversion Rate, Not Profit.

To be fair to the feature, Meta does make a case for it, and you should hear it before you switch anything off. On its promotions help page, Meta says campaigns created with promo codes enabled "have shown a 4.6% average lift in conversion rate for small and medium businesses."

Take that number for exactly what it is. It is Meta's own figure, from Meta's own data, and it measures conversion rate: the share of people who buy after clicking. It does not measure what each of those sales was worth after the discount came off. A sale that would have happened at full price and happened instead at 20% off counts as a conversion either way. More buyers at a lower price can still mean less money, and that matters most in the weeks when Meta ads cost the most, because every sale already carries a higher ad cost before the discount comes off.

So the decision is not "is this feature good or bad." It is "do the offers on my website all belong on my ads?"

Leaving detected offers on is reasonable when: you run one public offer at a time, every promotion on your site is one you would happily give any stranger, and you would rather Meta did the work of putting it on your ads. For a store like that, the feature saves time.

Switching it off is the safer choice when: you run several offers at once, any of them is private (email-only, loyalty, staff, make-good, creator codes), your margins are tight enough that an extra 10% off hurts, or you simply want every price claim in your ads to be one you wrote. You can still put a chosen offer on any ad yourself in Ads Manager, using the promotion setting on that ad. Switching off detected offers does not take away your ability to run a sale. It takes away Meta's ability to choose one for you. How the sale itself looks on your site is a separate decision, and we covered designing a Black Friday sale that still looks like your brand.

If you are not sure which group you are in, that is your answer. A store that cannot list every live offer on its website from memory is a store where Meta can find one you forgot.

Twenty Minutes in Commerce Manager Decides Which Discounts Meta Shows on Black Friday.

Here is the check. Do it this week, before you build or copy any sale ads, because a duplicate made today carries whatever the account setting says today.

  1. List every live offer on your website. Banner, popups, product pages, cart messages, free-shipping thresholds, bundle pages. Next to each, write who it was meant for: everyone, or a specific group.
  2. Open the setting. In Commerce Manager, choose your shop, then go to Settings and Offer merchandising. (Meta's help page also lists the route through the Offers tab and Manage offers.) Take a screenshot of the page before you change anything, so you know what it looked like.
  3. Decide each box on purpose. Under "All ads" there is a checkbox called Detected offers, which Meta describes as "Display offers detected from your website and ads." That is the one that matters for every ad in the account. Under "Ads leading to shop or product browsing" there are two more, Sale events and Seasonal event names, which pull sale wording from your ad text and add labels like a holiday name next to an offer. Tick or untick each one because you decided to, not because that is how you found it.
  4. Review the Offers tab. Open Offers in Commerce Manager and look at what Meta has already collected. For anything that should not be there, Meta's help page says to open the offer, choose Edit offer, then End early. Note that once you edit a detected offer, Meta stops syncing updates to it from your website.
  5. Check Shopify separately. If your discounts sync from Shopify, the Commerce Manager box does not cover them. Unsync any private discount in Shopify.
  6. Test with one copy. Duplicate one live ad and read every notice Meta shows you during the copy, then preview the new ad on Instagram Stories and the Facebook feed. If you still see an offer you did not choose, you have found it before your customers did.

Then put the same check on your calendar for the week after the sale, when the Black Friday offers come down and the January ones go up. An offer that ended on your site but still sits in Commerce Manager is the kind of thing nobody notices until a customer does.

Meta has not said whether detected offers is switched on by default, and it has not given a date for when the setting appeared, so we will not guess. The account where it was first reported publicly had every box ticked. Treat your own account as unknown until you have looked.

Meta keeps moving decisions that used to sit on one ad into account-wide settings in tools most owners never open. It already edits the creative in the ads you approved, and now it can choose the offer too. Most of these changes are fine. A few, like this one, put a price claim in your name. Checking settings like these, so the offers in your ads are the ones you chose, is part of the work we do every day for small businesses on Facebook and Instagram ads. If you would rather hand that off before the holidays, we are happy to take a look. And if you would rather do it yourself, the six steps above are the whole check.

Reading About Ads Is Free. So Is Talking to Someone Who Runs Them.

We've run paid ads for 25+ years and seen just about every way a budget goes sideways. Get on the phone with someone who does this every day. Bring your questions, your numbers and your skepticism. You'll hang up knowing what we'd do, whether you hire us or not.

Nora Bennett · Paid Media Strategist, BrandRocket

Paid media strategist at BrandRocket. Spends her days inside Google Ads and Meta accounts, helping small businesses get more out of every dollar they spend.