Skip to content
feedlab Request early access

Product vertical

Food and beverage

Food and drink feeds carry obligations no other vertical has: a unit price so shoppers can compare per kilo or per litre, an expiry date for perishable goods, and a multipack or bundle declaration. Alcohol is separately restricted and is refused outright on some channels.

Categories this covers

The Google product taxonomy branches these rules apply to. Match your own products against these paths before assuming the extra requirements are yours.

Attributes this vertical changes

These sit on top of the attributes every feed needs. A requirement shown here applies because of the category, not because of the channel.

Feed attributes whose requirement changes for Food and beverage
Attribute Requirement here Why
unit_pricing_measure Required in some cases Required in markets whose unit-pricing rules apply to goods sold by weight or volume, so a shopper can compare a 500g jar against a 1kg one.
unit_pricing_base_measure Required in some cases The denominator the unit price is expressed against, such as 100g or 1l. Required alongside unit_pricing_measure wherever that applies.
expiration_date Recommended Tells a channel to stop showing a perishable item after a date. Without it, short-life stock can be advertised past the point where you can legally ship it.
multipack Required in some cases Required when you have grouped identical items into a pack yourself, which is extremely common in this vertical and changes how the item is matched and priced.
is_bundle Required in some cases Required when an item is a bundle of different products, such as a hamper or a tasting set, so it is not matched against one of its components.
adult Required in some cases Applies to alcohol in the places it is permitted at all. Several channels restrict or refuse alcohol regardless, so check policy before mapping.
gtin Required Packaged groceries almost always carry a barcode, so an empty gtin in this vertical reads as missing data rather than as a product without an identifier.

What catches food and beverage stores out

The unit price cannot be derived from the title

A product called "Olive Oil 750ml" carries its measure in a string meant for humans. The feed needs the number and the unit as separate values, and parsing them out of titles works until the first product named "2 x 500ml" or "1.5L (magnum)". A metafield holding the net quantity is the only mapping that stays correct.

Multipacks are matched against single units without the declaration

A six-pack submitted without a multipack value looks to a channel like a single unit at six times the price, which is exactly how a competitive item ends up looking expensive. The value is the count of identical items in the pack, and it matters most on precisely the products where margin is thinnest.

Shopify weight is shipping weight, not net quantity

The weight field on a Shopify variant is what the parcel weighs, including the jar and the packaging. Unit pricing needs the net contents. Mapping shipping weight into unit_pricing_measure produces a unit price that is wrong on every product, and wrong in a direction that looks plausible.

Perishable stock outlives the feed

Channels keep product data for days or weeks after the last successful read. For short-life food that window is longer than the product's life, so an expiration_date is what stops the listing rather than the next feed run.

Alcohol policy is not a feed problem you can map around

Some channels refuse alcohol entirely, some allow it in specific countries with additional requirements, and none of that is expressed through feed attributes. The mapping work is only worth doing once the policy answer is known for each market you intend to sell into.

Where these values come from in Shopify

Shopify has a field for some of these and nowhere to put the rest. Both cases are worth knowing before you start mapping.

unit_pricing_measure
From a metafield holding the net quantity and unit. Parsing it from the title is the common shortcut and the common source of wrong unit prices.
unit_pricing_base_measure
Usually a static value per product type, such as 100g for food and 1l for drinks, applied through a rule rather than stored per product.
expiration_date
A metafield where the store tracks it. Stores that manage short-life stock by hand generally do not have it, in which case removing the product is the only mechanism available.
multipack
From a metafield or derived from the variant option where packs are sold as options of one product. Both are more reliable than the title.
gtin
From the variant barcode, which packaged groceries usually have. Supplier price lists are the practical source for filling the gaps in bulk.

Frequently asked questions

Do I need unit pricing in a food feed?

In the markets whose unit-pricing rules cover goods sold by weight or volume, yes, and that includes the EU. It needs the net quantity and a base measure such as 100g or 1l, neither of which Shopify stores as a structured field.

Can I use the Shopify weight field for unit pricing?

No. Shopify weight is the shipping weight of the packaged item, including the container. Unit pricing needs the net contents, so it has to come from a metafield or another explicit source.

How do I feed a multipack?

Send the multipack attribute with the number of identical items in the pack. Without it the channel treats a six-pack as a single unit at six times the price, which makes a competitively priced product look expensive.

Can I advertise alcohol through a product feed?

It depends entirely on the channel and the market, and several channels refuse it outright. No combination of feed attributes changes that, so confirm the policy per channel before building the mapping.

Attributes involved

Errors this vertical runs into

Related concepts

Channels this applies to

Primary sources

Channel specifications change. These are the official documents this page is based on.

Last reviewed View as markdown