Menus
Updated August 24, 2026
A menu is a structured, multilingual list of dishes. It belongs to your account and is assigned to one or more restaurant or hotel locations. Build it once and use it in three places: linked from a microsite, opened on its own public page, and published to Google Business Profile as the location’s food menu. Prices, photos, allergens and nutrition all live in one place, so a dish that changes is updated once rather than per location.
Before you start
- Menus use the Microsites permission module — there is no separate menus permission. Restricted access lets you open menus read-only. To edit, duplicate, delete or publish a menu, you need full access on every location it is assigned to. See Users and permissions.
- The Menus tab appears when the account industry is Other, Hotel and Lodging or Restaurant.
- A menu can only be assigned to locations whose Type is Restaurant or Hotel. Set the type in Locations → Manage — see Managing locations.
- Publishing to Google additionally needs a connected official Google Business Profile on the location — see Google Business Profile.
- Colours, fonts and the logo come from the brand appearance in Settings → Brands.
Where to find it
Sidebar → Web pages → Menus, or go to https://app.pluspoint.io/web-pages/menus.
Reading the menus list
Note A menu with no locations assigned is visible only to users whose Microsites access — restricted or full — covers every location. Managing it takes full access everywhere. There is no location through which to grant narrower access.
Creating a menu
- Go to Web pages → Menus.
- Click Create menu.
- In the Settings tab, fill in Internal name, Currency, Locations and Title, and optionally Cuisines and Description.
- Switch to the Menu builder tab. A first section already exists.
- Use Add item to add dishes and Add section to add further sections.
- Click Save.
Note A menu cannot be saved half-finished. Save stays disabled until the menu is complete. Hover it to see a checklist headed Complete the following to save the menu:.
Building sections and items
The structure is Menu → Sections → Items → Options.
Sections
Use Add section to add a section — the translation editor opens straight away so you can name it. A section’s divider turns red whenever the section has no name or no items, and that section blocks Save.
Items
Use Add item to add a dish. Drag an item to reorder it inside its section, or drop it into a different section.
| Field | Required | Notes |
|---|---|---|
| Item name | Yes | Up to 140 characters |
| Price | Yes | Numeric, minimum 0 |
| Description | No | Up to 1000 characters, with the AI writing assistant |
| Item photo | No | JPG or PNG, up to 10 MB |
The photo picker forces a square 1:1 crop and produces an image between 720 px and 1440 px wide. Pick artwork that reads well cropped square.
Item options
Switch Add item options on to add sizes or variants with their own prices. Each option needs a name. The Price on an option is optional — leave it blank and Google receives the item’s own price for that option.
Additional attributes
Additional attributes on an item card opens spiciness, allergens, dietary restrictions, preparation methods, ingredients (up to 5000 characters), portions and nutrition — all optional.
Note Type ingredients as one comma-separated sentence. When the menu is published to Google, that sentence is split into individual ingredients and each fragment is trimmed to 140 characters. If every language splits into the same number of fragments, they are paired up as translations of each other. Keep the same order and count in each language if you want them matched.
Translating a menu
Three places open the same translation editor:
- Localization on the Settings tab, for the menu title and description.
- The pencil icon on a section divider.
- Localization on an item card.
| Rule | Detail |
|---|---|
| Default language row | Cannot be deleted or switched, and its Title is required |
| Additional rows | Can be added while unused languages remain; their titles are optional |
| Item options | Translated in the same editor, one input per option per language |
| Save blocked when | The default title is empty, a title exceeds 140 characters, a description exceeds 1000 characters, or an option has no default-language name |
The menu’s default language comes from the account locale and is not selectable per menu:
| Account locale | Default menu language |
|---|---|
| United Kingdom, United States, International | English |
| Spain | Spanish |
| Portugal, Brazil | Portuguese |
| Ukraine | Ukrainian |
| Poland | Polish |
| Germany | German |
Note A language only appears in the public page’s language switcher if the menu-level title exists in it. Translating an item alone does not add a language — add the title translation on the Settings tab as well.
Publishing a menu to Google Business Profile
Two controls do the same thing: the Published on Google toggle in the list row, and the Show on Google Business Profile switch on the editor’s Settings tab.
Flipping either one syncs every location the menu is assigned to. Saving a menu, deleting it or changing which menus a location has also triggers a sync, and that sync covers the old locations as well as the new ones, so a location you removed is cleaned up too. A menu you have just created and an AI-imported draft both start with publishing off.
What has to be true for the sync to reach Google
| Requirement | If it is not met |
|---|---|
| The location has a connected official Google Business Profile with both a Google account and a Google location | The location is skipped |
| Google itself reports that the listing can have food menus | The location is skipped — Google’s own eligibility wins over the Restaurant or Hotel type set in Pluspoint |
| Something to publish, or something previously published | Nothing happens; Pluspoint does not wipe a menu the owner curated directly in Google |
Warning Neither skip shows anything in the dashboard — the toggle stays on and the row shows no error. There is no per-menu Google status indicator. If a menu never appears on Google, check the listing’s primary category in Google Business Profile first. A category Google does not treat as food-serving will never accept a menu.
What is sent
- All published menus for a location go up as one payload — it is a full replace, never a partial update. An empty list clears what Pluspoint previously published.
- Every menu carries a source URL pointing at its Pluspoint public page.
- Item photos are uploaded to Google as location media in the “Food and drink” category. Photos are never deleted from Google — removing an item’s photo in Pluspoint only stops referencing it. The image stays in the listing’s photo gallery.
- Sections and items go up in the order shown in the builder. Hidden items and hidden options are excluded.
Two published menus cannot share a name
Google rejects a location’s entire food-menu payload when two published menus share a top-level display name. Pluspoint blocks that up front when you publish, save or reassign a menu.
| Detail | Behaviour |
|---|---|
| What is compared | The public Title in any language, normalised — not the internal name |
| What conflicts | Only published menus that share at least one location |
| What does not conflict | Unpublished menus, and menus with the same title on different locations |
| Section and item names | Exempt — only top-level menu names must be unique |
| Duplicate titles inside one menu | Silently de-duplicated across languages before sending |
Importing a menu with AI
Import with AI turns an existing menu file into a draft you can edit.
- Click Import with AI.
- Drop files onto the upload area, or click to pick them.
- Click Import.
- The Create menu modal opens pre-filled. Review the sections, items and prices.
- Assign Locations, then click Save.
| Limit | Value |
|---|---|
| Files per import | 5 |
| Size per file | 10 MB |
| Total request size | 60 MB |
| Accepted types | .pdf, .jpg, .jpeg, .png, .webp, .xlsx, .csv, .json, .txt, .docx |
| Text read per file | Up to 200,000 characters |
| Item photos fetched | Up to 80; anything beyond that, over 10 MB, or not JPEG or PNG is skipped |
Warning The import produces a draft in the editor, not a saved menu. Nothing is stored until you press Save. The draft arrives with no locations assigned and Show on Google Business Profile off, so you must pick locations before it can be saved. Text lands in the account’s default menu language.
Writing descriptions with AI
The menu description and every item description carry an AI toolbar with a Write description action. The draft is built from the surrounding context — the menu title, cuisines and section names for a menu description; the item name, options, attributes, ingredients and servings for an item — and you can edit it afterwards like any other text.
Assigning menus from a location
If you think per location rather than per menu, assign menus from the location instead:
- Go to Locations → Manage and open the location.
- Scroll to Additional information.
- Open the Menus multi-select and tick the menus this location should serve.
- Save the location.
| Detail | Behaviour |
|---|---|
| When the field appears | The location’s Type is Hotel or Restaurant, and at least one menu exists in the account |
| What saving does | Replaces that location’s menu assignments with your selection |
| Access needed | Full access to the Microsites module on that location, and the right to manage each menu as it currently stands |
Duplicating and deleting menus
Duplicate creates a copy named <internal name> (copy). The copy keeps the same locations, currency, cuisines and full content, and drops the Google media references. It is created with publishing off, because two published menus on the same location may not share a public title — and the copy starts with an identical one. Rename it before you publish.
Delete cannot be undone. Deleting also re-syncs Google for the locations the menu was assigned to, which removes it from those listings.
Where a menu appears publicly
| Surface | How to get there |
|---|---|
| The Pluspoint public menu page | Its own URL on plsp.io, optionally with a location so the page uses that location’s branding, and optionally with ?language=XX. This is the URL Google receives as the menu’s source and the one a microsite menu button opens |
| A microsite button | Only on a location microsite whose location is Restaurant or Hotel and has that menu assigned — see Microsites |
| Google Business Profile | When Published on Google is on and the preconditions above hold |
Branding follows the viewed location’s brand appearance. With no location in the URL, the page uses the brand shared by all assigned locations, and falls back to a neutral default. The language shown is the one in ?language, then the visitor’s browser language, then the account default, then the first available.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| There is no Menus tab under Web pages | The account industry is not Other, Hotel and Lodging or Restaurant | Menus are only offered for those industries |
| Create menu and Import with AI are missing | You have restricted, not full, access to the Microsites module | Ask an admin for full access — see Users and permissions |
| A location is missing from the Locations dropdown | Its Type is not Restaurant or Hotel, or you cannot write it | Set the type in Locations → Manage |
| Save is greyed out | The menu is incomplete | Hover Save and work through Complete the following to save the menu: |
| A section divider is red | The section has no name or no items | Name it with the pencil icon, or add an item |
| Another published menu with the same name exists on one of this menu’s locations. | Two published menus on one location share a public Title | Rename one of them, or unpublish one |
| A duplicated menu is not on Google | Copies are created with publishing off on purpose | Rename the copy, then turn Published on Google on |
| The menu never shows up on Google | No connected Google profile, or Google does not consider the listing food-serving | Connect the profile and check the listing’s primary category in Google Business Profile |
| The AI import ends with Something went wrong | The file could not be parsed, often because it is too large | Split it into smaller files and import again |
| An AI draft will not save | Imported drafts arrive with no locations | Assign at least one location on the Settings tab |
| A language is missing from the public switcher | The menu-level Title has no translation in it | Add that language in Localization on the Settings tab |
| The Menu link type is unavailable on a microsite | The microsite is brand-owned, the location is not Restaurant or Hotel, or no menu is assigned to it | Assign the menu to the location and use a location-owned microsite |