
"34% off." "17% off." "52% off."
Each of those numbers is specific, credible, and different — because they come from actual price data, calculated automatically, for every product in your catalog. No rounding. No generic "SALE" badge. The exact discount, shown in the catalog ad, updated automatically when prices change.
This guide walks through how to auto-calculate the percent-off discount from your product feed and display it as a dynamic badge on every on-sale catalog ad — with no manual work and no stale messaging.
Why "34% Off" Outperforms "SALE" on Catalog Ads
Generic sale messaging — "SALE," "On Sale Now," "Special Offer" — is everywhere in e-commerce advertising. It's so common that shoppers have largely stopped registering it. When everything is on sale, "SALE" means nothing.
A specific percentage changes that equation. "34% off" communicates three things that "SALE" doesn't: the discount is real, it's been calculated, and it applies to this specific product. That specificity does real work in a catalog ad:
- It's more credible. A precise number feels like a fact, not a marketing claim. Shoppers trust "34% off" more than "SALE" because it implies the math has been done.
- It's more compelling. Percentages create an immediate value comparison. A shopper doesn't need to know the original price to understand that 34% off is a meaningful discount — the number itself carries the message.
- It drives higher CTR. Dynamic product ads with specific discount percentages consistently outperform ads with generic sale labels. The more information you give shoppers in the ad, the better equipped they are to decide to click.
The challenge has always been scale: calculating the exact percentage for hundreds or thousands of products, keeping it current as prices change, and only showing it when a product is actually on sale. Feed-based dynamic discount badges solve all three problems automatically.
What You'll Need
Auto-calculating and displaying percent-off discounts on catalog ads requires:
- A product feed with both price fields populated — a price (or compare_at_price) field for the original price and a sale_price field for the discounted price. Most e-commerce platforms populate both when a sale is active.
- A Meta product catalog connected to your Business Manager.
- A feed-based creative tool like Marpipe that supports custom formula fields and conditional display logic in catalog ad templates.
The percent-off calculation is simple arithmetic. Your product feed already has the numbers. The creative layer just needs to do the math and show the result — automatically, for every product, every time.
Step 1: Set Up the Percent-Off Formula in Your Product Feed
The discount percentage is calculated from two fields already in your product feed:
Percent off = ((original price − sale price) ÷ original price) × 100
For a product with a compare_at_price of $199 and a sale_price of $132, that's:
((199 − 132) ÷ 199) × 100 = 33.7% off — which rounds to 34% off.
In a feed-based creative tool like Marpipe, you define this as a custom formula field that reads the relevant price fields from your product feed and outputs the calculated percentage. The formula runs automatically for every product in your catalog. Products on sale get an exact percentage. Products at full price return no value — which controls when the badge shows.
A few things to configure at this stage:
Rounding. Most brands round to the nearest whole number ("34% off" rather than "33.7% off"). Round down rather than up — "33% off" is accurate; "34% off" when the true discount is 33.7% is technically misleading and could create trust issues at checkout.
Minimum threshold. Consider setting a minimum discount percentage below which the badge doesn't display. A "3% off" badge is not compelling and may undermine trust. A common threshold is 10% — only show the badge when the discount is meaningful enough to justify a click.
Step 2: Display the Discount Badge Conditionally on Your Catalog Ads
With the formula field set up, the next step is surfacing the calculated percentage in the catalog ad — but only when a sale price is present.
In Marpipe, this works through a conditional display element:
- Open your catalog ad template in Marpipe.
- Add a text element for the discount badge (e.g., "[percent_off]% Off").
- Map it to your calculated percent-off formula field.
- Set a conditional display rule: show this element only when sale_price is present and the calculated percentage meets your minimum threshold.
- Style the badge to stand out — a bold, high-contrast treatment works well. Common approaches: a colored badge shape behind the percentage text, or bold percentage type in an accent color against the ad background.
- Publish — every on-sale product in your catalog now automatically shows its exact discount percentage on its dynamic product ad. Full-price products show no badge at all.
The conditional logic is what makes this useful at scale. You don't need separate templates for sale and non-sale products. One template handles both states cleanly, automatically, forever.
Step 3: Optimize the Badge for Maximum Catalog Ad Performance
Getting the discount badge live is the starting point. Getting it to perform as well as possible takes a few additional considerations:
Lead with the number, not the word. "34% Off" reads faster and lands harder than "Off 34%" or "Save 34%." Put the percentage first.
Size it to be immediately readable. The badge needs to be legible at the sizes Meta actually serves catalog ads — including small mobile placements. If the percentage is too small to read at a glance, it's not doing its job. Test at actual ad dimensions before publishing widely.
Consider badge shape and placement. A circular badge in the top corner is a classic retail treatment that shoppers recognize immediately as a discount indicator. A horizontal strip across the top or bottom of the image is another strong option. Both work — the right choice depends on your product image layout and overall creative design.
Pair with strikethrough pricing. A dynamic discount badge ("34% off") and a strikethrough price display ($199 $132) are complementary signals on a catalog ad. The percentage tells shoppers how big the discount is; the price comparison shows them exactly what they're saving in dollars. Together, they address the discount from two angles simultaneously.
Watch for outliers. In a large catalog, you'll occasionally have products where the calculation produces an unexpected result — a very high percentage that seems implausible, or a very low one that isn't worth showing. After publishing, spot-check a sample of your catalog to confirm the badges look correct across a representative range of products.
How This Fits Into a Broader Catalog Ad Strategy
The percent-off badge is one of several data-driven overlays you can add to dynamic product ads using your existing product feed. Each surfaces a different type of information that influences purchase decisions:
- Star ratings signal trust and social proof.
- Countdown timers create urgency around a deadline.
- Inventory counts create urgency around scarcity.
- BNPL pricing lowers the perceived cost barrier.
- Strikethrough pricing shows the dollar value of the discount.
- Percent-off badges show the relative size of the discount as a percentage.
The percent-off badge and strikethrough pricing are particularly complementary — they communicate the same discount from two different angles. Running both together on the same catalog ad consistently outperforms either alone.
FAQ
Do I need a developer to add percent-off badges to my catalog ads?
No. With a feed-based creative tool, you set up the formula and the conditional display rule once in the template editor, and it runs automatically across every product in your catalog. No code, no per-SKU work.
Will this work with Shopify product feeds?
Yes. Shopify automatically populates compare_at_price (original) and price (sale) fields when you set a sale on a product. Those two fields are everything the percent-off formula needs.
How is this different from a standard dynamic product ad (DPA)?
A standard DPA pulls the product image, name, and price from your feed and shows them in a default Meta layout. A percent-off badge is a creative overlay added on top of that — it surfaces calculated discount data that the standard DPA format doesn't display.
What happens to the badge when a product comes off sale?
It disappears automatically. The conditional display rule only renders the badge when a sale_price is present in the product feed. As soon as the sale ends and the feed updates, the badge is gone — no manual work required.
The Bottom Line
"34% off" is more persuasive than "SALE" because it's more specific, more credible, and more informative. And when it's calculated automatically from your product feed and displayed conditionally only on products that are actually on sale, it's also zero ongoing effort after the initial setup.
The discount is already in your data. This is just a matter of showing it on every catalog ad.
Ready to display exact discount percentages on your catalog ads? Try Marpipe free and set up dynamic discount badges across your catalog today.

