SafeSale · Blog

A Shopify sale on one brand: vendor targeting and MAP

How to put a single vendor's products on sale in Shopify, keep MAP-protected lines out of it, and prove the prices went back when the brand's promo ended.

A running shop stocks six brands. One of them, a sock maker, emails on Monday: 20% off their range this weekend, they will cover half of it on the next invoice, please have it live by Friday. Nothing else in the store should move. This is the most common sale a multi-brand retailer runs, and Shopify makes it slightly awkward because the brand is a product field called vendor, and discounts do not target vendors.

This post covers the three ways to put one brand on sale, the minimum-advertised-price question that comes with brand promotions, how SafeSale targets a vendor and lets you hold individual lines back, and what the brand will ask you to prove afterwards.

Vendor is a field, not a group

Every Shopify product has a vendor, a free-text field on the product details page that most stores fill with the brand name (Product details). It is searchable and filterable in the admin, and it can drive an automatic collection through the condition "Vendor is equal to". What it cannot do is be the scope of a discount. Shopify's automatic discounts apply to specific products or to collections, so the brand has to become a collection first.

That is the first route: create an automatic collection with the vendor condition, then an automatic discount of 20% on that collection, scheduled for Friday to Sunday. It works, and it is free. The cost is a collection that exists only for the discount, a product page that shows the full price with no strike-through, and a limit of 25 active automatic discounts for the shop, which the brand-of-the-week pattern eats into quickly (see the 25 automatic discounts limit).

The second route is to rewrite prices. Export the brand's variants, set compare-at to the current price and price to 80% of it, import, and reverse the file on Monday. The product page then shows was/now pricing, which is what the brand usually wants to see in its own channels. The risk is the Monday step: a missed variant, a price edited over the weekend, or a CSV that imports twice, all of which leave wrong prices behind.

How SafeSale targets a brand

SafeSale lets a sale target products, collections, tags and vendors, in any combination, and the result is the union of all of them. For a single-brand sale you pick the vendor from the list the app reads from your catalogue and leave the other three empty. Nothing has to be created in the admin first.

The vendor target behaves differently in the two modes, and the difference is the same one described in new products during a sale. In automatic discount mode the vendor is a rule evaluated at checkout, so a product from that brand added on Saturday is discounted from its first order. In price-rewrite mode the vendor is resolved into a list of variants when the sale is planned, prices are written, and that list is frozen so it can be reverted exactly. Either way, the preview shows every variant the vendor target resolved to, with the current price, the sale price and the percentage, before anything is published.

Two settings guard a brand-wide sale from a typo. Discounts above the confirmation threshold, 50% by default, require you to type the sale name before the sale is published. Discounts above the hard cap, 90% by default, are blocked for that variant. Both are set once in Settings, and both are per variant, so one cheap accessory that a percentage rule would push to near zero is flagged on its own line rather than hidden in a total.

MAP: what the brand is actually asking for

Brands that fund promotions usually also have a minimum advertised price policy. MAP is the lowest price a retailer may show in public for that brand's products. It is about advertising, not selling: many policies allow a lower price at checkout, in a cart, or behind a login, and forbid showing it on the product page, in a feed or in an email. Policies differ, they are enforced by the brand rather than by any law in most places, and the penalty is normally losing the account, which for a small retailer is the whole point of being careful.

A funded promotion is normally a temporary MAP change: the brand lowers the floor for the weekend and expects it back on Monday. But a brand promotion on part of the range is where the trouble starts. The brand says 20% off the sock range except the new merino line, which stays at MAP. A sale targeted at the vendor includes the merino line.

The two SafeSale modes map onto the two kinds of MAP policy. If your agreement forbids showing a price below MAP anywhere, automatic discount mode keeps the product page, the collection grid and your Merchant Center feed at full price and applies the discount at checkout. If the agreement allows the advertised price to drop for a sanctioned promotion, price rewrite mode shows was/now pricing everywhere and ends on time. The comparison of the two modes beyond MAP is in automatic discount vs compare-at rewrite.

Holding lines back without an exclusion list

SafeSale does not have an exclude button. What it has instead is a rule per variant. The preview table lists every variant the targets resolved to, and any row can be given its own rule that overrides the sale-wide default: a different percentage, an amount off, or a fixed price. For the merino line, set each variant's override to a fixed price equal to its current price, or to 0% off. The row then shows no change, the rest of the brand shows 20% off, and the sale is still a single object with one start, one end and one history.

The same mechanism handles the opposite request. Brands often supply a promo price list rather than a percentage: this style at 19, that one at 24, the three-pack at 49. A fixed-price override per variant reproduces that list exactly, and the preview's percentage column tells you if any of the brand's numbers crosses your confirmation threshold. Rounding rules apply after the fixed price, so leave rounding off when you are matching a brand's list.

If the brand's range in your store is large, check the preview for variants that are already discounted. A product with a compare-at price set by hand before the sale is handled as described in sale on products that already have a compare-at price, and SafeSale will not put a variant in two active sales, so a store-wide sale running at the same time is caught in the preview rather than at checkout. The double discount check exists for exactly this overlap.

What the brand asks for on Monday

Funded promotions come with a reconciliation. The brand wants to know the sale ran on the agreed dates, on the agreed products, at the agreed prices, and that prices returned afterwards. In automatic discount mode the answer is simple: the discount existed between the start and end time and no price was changed. In price-rewrite mode, SafeSale took a snapshot of every variant's price and compare-at before writing, wrote the sale prices, and restored the snapshot at the end time. The sale's page lists each write with its time and outcome, and the snapshot can be exported as a CSV with the before and after values per variant.

That export is also the document to send if the brand's own monitoring flags your store. MAP enforcement increasingly runs on crawlers that record a price and a timestamp; being able to show the exact minute a price went down and the exact minute it came back is the difference between a short email and losing the account.

A short checklist

  • Read the brand's MAP policy for the word "advertised" and decide the mode from that, not from what looks better.
  • Target the vendor, then scan the preview for lines the brand said to leave alone and give them a fixed-price or 0% override.
  • If the brand sent a promo price list, use fixed-price overrides and turn rounding off.
  • Set start and end in your store's time zone and check the brand meant the same zone; a promotion that ends at midnight somewhere else is a common cause of Monday emails (see scheduling across time zones).
  • After the end time, open the sale's history and keep the snapshot export with the brand's invoice credit.

A single-brand sale is the smallest sale a store runs and the one with the most paperwork attached. SafeSale targets the vendor directly, shows every affected variant before publishing, lets you hold protected lines at their price, and keeps the record the brand will ask for.

Frequently asked questions

Can a Shopify automatic discount apply to a vendor?

Not directly. Shopify's automatic discounts are scoped to products or collections, so the usual route is an automatic collection with the condition Vendor is equal to the brand, then a discount on that collection. SafeSale can target a vendor by name, in both its automatic discount mode and its price-rewrite mode, without the extra collection.

What is MAP and why does it matter for a Shopify sale?

Minimum advertised price is a floor set by a brand in its reseller agreement for the price a retailer may show in public. Selling below it is often allowed; advertising below it is not. A sale that rewrites the price shown on the product page advertises the lower price, while a discount applied only at checkout shows the full price on the page. Which of those your agreement permits is in the agreement, so read it before choosing a mode.

How do I keep one product out of a brand-wide sale?

SafeSale has no exclusion list, but every variant in the preview table can carry its own rule. Set the protected variant's override to a fixed price equal to its current price, or to 0% off, and it stays where it is while the rest of the brand moves. The preview shows the result before anything is published.

What happens to the brand's products when the promotion ends?

In automatic discount mode the discount is deleted at the end time and prices were never changed. In price-rewrite mode SafeSale restores every variant's price and compare-at from the snapshot it took when the sale started, and the sale's history page lists each write so you can show the brand exactly when prices went back.