Skip to main content

Custom Labels — New, On-sale, and Updated Products

Automatically tag products in your feed as "new", "on sale", or "recently updated" so Meta's catalogue can surface them in targeted ad segments.

note

Available since v2.3.9

Overview

Facebook and Instagram catalogues support five custom label slots (0–4) per product. These are free-text fields you can populate with any value — and Meta lets you build audience segments or product sets based on those values. For example, you could run a campaign that only shows products tagged new-arrival, or exclude on-sale items from a full-price ad set.

The module can fill any of those five slots automatically based on rules it evaluates at feed generation time: how recently a product was added, whether it has an active discount, or how recently its data was updated. You supply the label text; the module decides which products receive it.

Configuration

  1. Go to Modules > Module Manager, find Facebook & Instagram Product Catalogue Feed Pro, and click Configure.
  2. Open the Custom Labels tab.
  3. For any of the five label slots (Custom Label 0 through Custom Label 4), open the dropdown and choose the label type you want — for example New Products, On Sale, or Updated Products.
  4. The relevant text fields and day-window fields appear below the dropdown.
  5. Fill in the label text (one field per store language), set any day window, and click Save.

Custom Labels configuration panel showing label type dropdowns and text fields

FieldValuesDefaultDescription
Custom Label 0–4 (type)New Products, On Sale, Updated Products, Bestseller, Trending, Category, Reference, Supplier Reference, Supplier Name, Tags, NoneNoneDetermines what rule the module uses to populate this slot for each product.
New Products labelAny text, per language(empty)The label string written into the feed when a product qualifies as new. Example: new-arrival.
New Products daysInteger30A product qualifies as "new" if it was added within this many days.
On Sale products labelAny text, per language(empty)The label string written when a product has an active specific price (discount).
Updated products labelAny text, per language(empty)The label string reserved for recently updated products.
Updated products daysInteger15Reserved for use when the updated-products detection is active.

Label text is language-aware. If your store runs in multiple languages, fill in the label for each language. The feed for each language uses the matching label value.

If you leave New Products days empty the module defaults to 30 days. If you leave Updated products days empty the module defaults to 15 days.

How Each Label Type Works

New Products

At feed generation time the module queries your product table for all products whose date_add (the date the product was created in PrestaShop) falls within the configured day window. Every product in that result set receives the label you defined.

  • The window is evaluated at the moment the feed is generated, so the set of "new" products shrinks naturally as products age past the threshold.
  • The comparison uses the product creation date recorded by PrestaShop, not the date it was first published or enabled.
  • All five label slots are evaluated independently, so you can assign the "new products" type to more than one slot if you want the same tag to appear in multiple positions — though that is rarely necessary.

On Sale Products

A product is considered on sale when PrestaShop has an active specific price record for it at generation time. Specific prices cover catalogue-level percentage discounts, fixed reductions, and group-price overrides configured in the Back Office under Catalog > Products > Pricing tab or Catalog > Discounts.

  • Detection is combination-aware. If only certain size or colour combinations carry a discount, only those combinations receive the label; the base product without a discount does not.
  • The label is applied during price calculation, so it reflects the actual discount state at the moment the feed runs — not a static flag.
  • Flash sales with a start/end date are included as long as the generation time falls within the active window.

Usage Examples

Example: Flag new arrivals for a "What's New" ad set

Set Custom Label 0 to New Products, enter new-arrival as the label text, and set the day window to 14. In Meta's Commerce Manager, create a product set filtered to custom_label_0 = new-arrival. Run a Dynamic Ads campaign against that set to automatically promote your latest additions.

Example: Suppress discounted products from a full-price campaign

Set Custom Label 1 to On Sale, enter on-sale as the label text. In Meta's Ads Manager, exclude the custom_label_1 = on-sale product set from your full-price campaign so discounted products don't dilute its ROAS signal.

Example: Combine two label types

Assign Custom Label 0 to New Products (new-arrival, 30 days) and Custom Label 1 to On Sale (on-sale). A product that is both new and discounted will carry both labels, letting you build an "new and on sale" product set for a targeted launch promotion.

Important Notes

  • Label text has no enforced length limit in the module, but Meta recommends keeping custom label values short and consistent. Using values like new-arrival (rather than a full sentence) makes them easier to filter in Commerce Manager.
  • Labels are regenerated every time the feed runs. A product that was "new" last month but is now older than the threshold will have its new-products label removed on the next generation.
  • Custom label slots are per-feed, not per-shop in isolation. If you run multiple shops, each shop's feed reflects the products and discount rules for that shop.
  • The on-sale detection reads PrestaShop's specific price system. Manual price changes that don't go through the specific price table will not trigger the label.

Troubleshooting

ProblemSolution
New products are not receiving the labelCheck that the products were created (not just modified) within the configured day window. The module uses date_add, not date_upd. Also confirm the label slot type is set to New Products and not None.
Discounted products are not tagged as on saleVerify the discount is set up as a specific price in PrestaShop's pricing panel, not as a manual price override. Also confirm the feed was regenerated after the discount was activated.
The label text appears blank in the feedThe label text field was left empty. Go to Custom Labels, find the relevant slot, and enter the text for each store language.
Updated Products label is not appearingThe Updated Products detection is not yet active in the current version. The label type can be configured but no products will receive it yet.

Frequently Asked Questions

Can I assign the same label type to more than one slot?

Yes. Assigning New Products to both Custom Label 0 and Custom Label 2 will populate both slots with the same label text. This is rarely useful but is not blocked.

How often does the "new" status refresh?

Every time the feed is generated. If your feed runs daily, a product crosses the threshold overnight and drops the label on the next generation run.

Does the on-sale label work with combination-level discounts?

Yes. Detection is combination-aware — if a specific price applies only to a particular attribute combination (e.g., size Large at a 10% discount), only that combination receives the label.

Will a product that was both recently added and discounted carry both labels?

Yes, as long as you assign the two label types to different slots. Each slot is evaluated independently.

What happens to the label if I delete the discount before regenerating the feed?

The next feed generation will no longer find an active specific price for that product, so the on-sale label will not appear in the new feed file.

Can I use the label text as a way to segment by price range or category?

Custom labels are free text — you can enter any value you want. However, for price-range or category segmentation there are dedicated label types (Category, and the option to map custom label slots manually). New/On Sale/Updated labels are specifically for time-based and discount-based segmentation.