A menu in Linked.Codes is a mobile-first page that lives at linked.codes/m/<your-slug> (or on your own domain, if you've connected one). It carries categories, items with photos and prices, dietary tags, optional info section, multi-language support driven by CSV, and a branding layer you can tune from one screen. Point a QR or short link at it and the customer scans → sees the menu → never sees a PDF.
/m/<your-slug>. Print the QR; you're live.
What's in a menu
Create your first menu
Open Menus in the sidebar.
Hit + New menu. Three fields — name (e.g. "Main menu"), currency, and tags (optional, so you can filter the menu list later). That's it — you're in the editor.
Add categories.
On the menu's Items tab, tap + Add category. Start with the headings you'd put on a paper menu — Starters, Mains, Drinks. Click the name to rename. Items inside a category drag-reorder; cross-category drag moves an item from one category to another.
Add items.
+ Add item opens a popup. Name, description, price, one or more categories, dietary tags (vegan, gluten-free, spicy, etc.), an availability toggle, and a photo (PNG / JPG / WebP, ≤2MB).
Tune the design.
The Design tab has a theme picker (light / dark / mint / warm), an accent colour, a font, and upload rows for logo + cover image (PNG / JPG / WebP, SVG for logos, ≤2MB each). Changes save as you click.
Open the public menu.
Use the Preview button in the top-right of the editor.
Items, photos, dietary tags
Item names cap at 200 chars, descriptions at 1,000. Price is in the menu's default currency unless you set a per-item override. A null price renders as "—" on the public menu — useful for "ask / market price" items.
The dietary tag picker covers ten presets: vegan, vegetarian, gluten-free, dairy-free, nut-free, spicy, halal, kosher, organic, low-carb. They render as small icons under the item name on the public menu, with a "What the icons mean" legend appearing automatically at the bottom of the menu when at least one item uses one.
The availability toggle off renders the item with a strikethrough + "currently unavailable" line. Useful for flipping items off when the kitchen runs out without deleting them.
The Highlight as a special toggle on an item adds a ★ Special pill next to its name and bubbles the item to a "Today's specials" strip at the top of the public menu. Good for happy hour, daily features, seasonal items — turn it off to remove the highlight without deleting the item.
Info page, hours, social links
The Info tab carries everything below your menu items — about paragraph, hours (Mon-Sun with start / end pickers and a per-day Closed toggle), tap-to-call phone, tap-to-email email, tap-the-address-for-Google-Maps address, and a list of social / external links. Each social link gets a dedicated icon (Instagram, Facebook, TikTok, X, YouTube, LinkedIn, WhatsApp, plus a generic "Website" or "Other link" option).
Import / export
Two CSV flows. The Items tab has Export CSV + Import CSV for bulk-editing every item in one go — open the CSV in a spreadsheet, edit names / prices / dietary, paste back. Re-importing fully replaces categories + items (photos preserved where item names match exactly).
The Languages tab uses the same CSV shape but tied to a specific locale — translate the file in your tool of choice, import back. Non-default-language imports only touch the translation rows, so your categories + prices stay put.
Branding
Multi-language via CSV
The menu's default language sits on the items themselves. Other languages live as translation rows keyed by ISO locale code (es, fr, de-de, etc.). The UI in v1 manages translations through CSV import / export instead of a per-row form — fast for hundreds of items, friction-free for whichever translation workflow you already use.
Open the Languages tab.
Tap + Add another language next to the languages chip row. Type the ISO code (
id,es,nl,fr-fr).Find CSV import / export on the same tab.
Pick the language you just added from the locale dropdown.
Export the CSV.
Columns: category, name, description, price, currency, available, dietary. The dietary column is pipe-separated (
vegan|spicy).Translate the file.
Any tool you prefer — manual edit, translation app, AI assistant. Keep the header row and the original name column values so the importer can match rows. Translate the human-language text and the description.
Hit Import CSV.
Paste the translated CSV. Non-default-language imports only update the translation rows; categories + items + prices stay untouched.
Info section
The Info tab toggles an extra section at the bottom of the public menu — about paragraph, hours, address, phone, email, website. Phone + email fields render as tap-to-call / tap-to-email links. Hours and address respect newlines (one line per row).
SEO + share preview
The SEO tab covers the share card shown in iMessage, WhatsApp, Slack, LinkedIn. OG title (defaults to the menu name), OG description (one line), OG image URL (1200×630 ideal). The noindex toggle adds noindex,nofollow to the public menu's <meta> tags — use for staff-only menus or seasonal menus you don't want Google ranking.
QR + short-link integration
The link editor at Links has a new destination type: Menu. Picking it shows a dropdown of your menus; pick one and the short link resolves to linked.codes/m/<slug> (or your custom domain plus /m/<slug> when the link is on a custom short-link host). Same shape for QR codes — pick "Menu" as the destination type in the QR designer.
Custom domain as menu home
If you own a domain (say your-restaurant.com) and have it pointed at Linked.Codes as a short-link domain, you can make the menu the root index. Open Domains, edit the domain, set Index URL to /m/<your-slug>. Now your-restaurant.com/ redirects straight to your menu — no path, no /m/, just your domain.
What's deferred to v2
Listed here so you know what's coming and what to plan around:
- Price variants per item (small/large, half/full).
- Multiple photos per item.
- Specials + happy-hour scheduling with start/end times.
- Drag-to-reorder for categories themselves (items already drag inside a category and across categories).
- Automatic FX conversion across currencies (today: prices display exactly as entered, including per-item currency overrides).
- Per-item translation editor in the dashboard (CSV is the v1 path).