← Back to support

Daily ops

Public menu PDFs

Updated: 2026-05-27

Public menu PDFs

Also known as: menu PDF, public menu, customer menu, menú público, carta, QR menu, menú QR, carta de vinos, carta de comida.

Brasio can publish any of your product categories as a downloadable A4 menu in two languages (English and Spanish). Every time a customer scans your QR code they receive a fresh, up-to-date PDF built from your live catalog — no manual exports, no design tool, no reprint.

First: ask us to publish the category

A menu URL only works once we have published that category for you. Until the self-serve toggle ships in the admin UI, contact us and tell us which category (or categories) you want public, and what you would like the menu address to be. We will set it up within a few hours and send you the exact URL.

If you try a menu address before we have published it, you will get a plain 404 Not Found with no explanation — that almost always means the category is not published yet, rather than that you typed the address wrongly.

Where the PDF lives

Once published, each menu has a stable URL:

https://<your-slug>.brasio.io/menu/<menu-address>-<lang>.pdf

<lang> is en or es.

The menu address is not the same as the category name. When we publish a category we give it a separate short menu address, and that is what appears in the URL. It is often different from what the category is called in your catalog — for example a category named Beers may have the menu address cervezas. If you are not sure what yours is, ask us and we will tell you.

For example, a venue at yourvenue.brasio.io whose Wine category has the menu address wine would have:

  • https://yourvenue.brasio.io/menu/wine-en.pdf
  • https://yourvenue.brasio.io/menu/wine-es.pdf

Point a QR code at either URL and it keeps working as long as the menu address does not change. Pick something short and stable — wine, food, drinks — because changing it later breaks any printed QR codes.

Subcategories are included automatically: publishing a Wine category also puts the wines in its Vino Blanco, Vino Tinto and Rosado subcategories on the same PDF.

A self-serve toggle in Admin → Categories is on the roadmap and will replace this step soon.

What appears on the PDF

The PDF lists every product in the category that is marked visible in your catalog. Products are grouped by subcategory (e.g. White Wine, Red Wine, Sparkling). Each row shows:

  • Name and description in the requested language. If a translation for that language is missing, the other language is shown as a fallback.
  • Price (VAT included).
  • Structured data depending on product type:
    • Wine and spirits — grape variety, region, vintage, and ABV.
    • Food and kitchen items — EU allergen codes (1–14) and dietary glyphs: 🌱 vegetarian, GF gluten-free, 🌶 spicy.

These fields are stored as first-class data in your catalog — not buried in description text — so the PDF layout can present them cleanly and consistently.

Your menu, your data

Every brasio tenant builds their own catalog from scratch. The wine list, food items, allergens, vintages, and prices that appear on your menu are exactly the products you have entered in Admin → Catalog. There is no shared or pre-built list. Edit a price once, save it, and the public PDF reflects the change within five minutes.

Languages

English and Spanish are rendered server-side from the same product record. Each product has separate descriptionEn and descriptionEs fields. You can populate one, both, or neither — brasio falls back to whichever is available. If you use the bulk-translate feature (coming soon), brasio can fill the missing language automatically.

Caching

PDFs are publicly cached for 5 minutes, with a stale-while-revalidate window of 24 hours. This means:

  • A customer who scans your QR code will always get a PDF no more than 5 minutes old.
  • If your CDN has a warm cached copy, it may serve that while fetching a fresh one in the background — the customer still gets a valid PDF immediately.

QR codes

Print your QR codes pointing directly at the brasio URL. They need no redirect service or dynamic QR generator. Because the URL structure is stable, the same printed code works indefinitely as long as:

  1. Your menu slug stays the same.
  2. Your workspace URL (subdomain) stays the same.

Both can be changed from account settings, but doing so after printing would break existing QR codes.

Highly Recommended

Each wine, dish, or any product can be flagged ★ Highly Recommended in Admin → Catálogo. On the PDF, the flagged items float to the top of their subcategory under a featured Highly Recommended heading; the rest follow under All wines / Resto de la carta. Use it for your sommelier picks, today's specials, or the dishes you actually want guests to order.

Toggle it on or off any time — the next PDF render picks up the change within five minutes.

English size labels

For wines and spirits, brasio understands that "Copa", "Botella", "Garrafa" are the standard Spanish size labels — but they make less sense to an English-speaking guest. Each size on the product editor has an optional Label (English) field (italic, next to the Spanish label) that the English PDF uses instead. Leave it blank to keep the Spanish label on both PDFs.

Common mappings we suggest:

| Spanish | English | | --- | --- | | Copa 250ml | Glass 250ml | | Botella | Bottle | | Garrafa 375ml | Carafe 375ml |

New wines default to showing the Spanish label on both PDFs until you fill in the English override.

Sections each get their own page

A subcategory always starts on a fresh page (e.g. White Wine, Red Wine, Sparkling). This makes the printed menu easier to lay out on the table — and easier to print only the sections you actually need (e.g. just Red Wine for a tasting evening).

Descriptions on the page

If a product has a descriptionEn or descriptionEs filled in, that prose now renders in italic under the grape/region/vintage line. Use it for tasting notes, dish ingredients, or anything that helps the guest decide. Keep it short — two short sentences read better in a small typeface than a single long paragraph.

More in Daily ops

Still stuck?

Talk to our 24/7 agent in your language. If it can't answer, we'll pass you to a human.