Import menus
Load whole menus — dishes, sizes, prices, photos and every language — from an Excel or CSV sheet or from photos or a PDF of a printed menu, check and fix them in a draft, then import them in one go.
On this page
Instead of adding dishes one by one, you can bring a menu you already have — a spreadsheet, such as your own price list, a template you fill in or an export from a cash register, or photos or a PDF of your printed menu. The import turns it into a draft you check and fix, then creates the menus and their dishes as drafts you publish when they are ready.
Every planWho can do this: Owner, Admin, and Content manager
An import also adds dishes, add-ons and their prices to your catalogue, so your role must allow those too.
What you need
- A spreadsheet saved as .xlsx (Excel, Numbers or Google Sheets: File → Download → Microsoft Excel) or as .csv in UTF-8. Each dish takes a row; a dish sold in several sizes takes a row per size.
- The languages and currencies the sheet uses, turned on for your organization — see Menu languages and Currencies. Texts and prices in others are left out.
The quickest start is our template: open Menus, click Import, then Download the template. It has a column for every language and currency your organization uses, with headers the import recognises.
Import a spreadsheet
Open the import
On the Menus page, click Import. From anywhere in the dashboard you can also press ⌘K and choose Import menus.
Choose the file
Drop the file on the page or click the drop zone and pick it. The file is read in your browser.
Match the columns
The import guesses what each column holds from its header — dish name, size, price, category, group, menu, descriptions — and in which language or currency. Check each guess and change any that is wrong; set a column you don't need to Skip. Below the columns you see how many dishes, categories and menus the sheet makes. The import remembers your choices for the next sheet with the same columns.
Create the draft
Click Create the draft. The draft opens with everything the sheet holds.
Check and fix
The draft lists your menus with their groups, categories and dishes. Fix a name or a price right in its row, open Details for descriptions in every language, sizes, dietary facts, badges and add-ons, and use Only with problems to see only what needs attention. Every change is saved as you go.
Import
When nothing blocks the import, click the import button at the bottom of the draft. Your menus are created as drafts, and Open menu opens each one in the builder.
Import from photos or a PDF
Take photos of your printed menu — up to ten, one per page — or use its PDF. They are read automatically, and the dishes, sections and prices they show become a draft.
Choose the files
Open the import as above and drop the photos or the PDF on the page. Choose photos or one PDF, not both. Under the drop zone, Photos and PDFs says how many readings you have left today.
Wait for the menu to be read
The draft opens and says Reading your menu…. Reading takes up to two minutes; you can leave the page, and the import waits under Unfinished imports.
Check, fix and import
The draft opens like one made from a spreadsheet. Check every price and name against your menu: what is printed is copied as it is, nothing is translated, and allergens and dietary facts are never guessed, so add them yourself.
Each person can have two menus read a day, and each organization three. Readings run on a free service with a daily quota, so they can be unavailable for the rest of the day; the page then says when to try again. A reading that fails for a reason of ours is not counted. Spreadsheets and JSON files always work.
Photos and PDFs are read by Google Gemini, and Google may use them to improve its products. Upload only the menu itself, never documents with personal data — see our Privacy Policy.
Reading photos and PDFs isn't available for organizations with a venue in the European Economic Area, the United Kingdom or Switzerland.
How rows become dishes
- A row with a dish name is a dish. The rows right after it with the same name, or with no name but a size or a price, are its other sizes.
- A dish without a size gets one size named after the dish.
- A menu, group or category written in a row stays for the rows below until another one is written, so you can write a category once above its dishes.
- Without a menu column, the menu is named after the file; without group or category columns, the dishes go into one group and category named after the menu.
- Rows with nothing to import are skipped, and the import tells you how many.
Fix many dishes at once
In the draft, select dishes with their checkboxes to move them to another category, leave them out of the import or change their prices together. Find and replace changes a text everywhere in the draft, in every language, and Change prices raises or lowers prices by a percentage, rounded the way you choose.
Dishes you already have
When the draft opens, it is checked against your catalogue. A dish, add-on, group or category whose name you already have — in any of your languages — is marked on its row:
- From the catalogue: … — an exact match with the same sizes and prices is used as it is, so the import doesn't create a copy. This is chosen for you; you can change it.
- Looks like … — a similar name. The import creates a new one unless you decide otherwise.
Click the mark to decide what the import does with it:
- Use it as it is — the new menus show the catalogue's dish; the draft's texts, prices and photo for it are not used. A dish you only use needs no prices in the sheet, so you can build a menu from dishes you already have by listing their names.
- A version for these menus — the new menus show the dish with the draft's name, descriptions, size names, prices and photo; your other menus keep it as it is. Its sizes must match the draft's.
- Update it everywhere — the draft's texts in the languages it has, its prices, new sizes and dietary facts replace the dish's own in every menu. A size is never removed. If a published menu shows the dish, this needs permission to publish menus, and the import asks before guests see the change.
- Create a new one — the import creates a separate dish, as it does for everything without a match.
Use them as they are under the catalogue button decides every exact match at once; Create them all new makes them all new instead. Groups and categories are only used or created.
If a dish you chose to update changes in the catalogue before you import, or one you chose is deleted, the import stops and the dish asks you to decide again.
Add dish photos
Give a dish its photo right in the draft: click the square at the start of its row, then Upload a photo… to upload one or Choose from the media library… to use a photo you already have. An uploaded photo goes into your media library at once, and becomes the dish's photo when you import.
To add many at once, name each photo after its dish — Pumpkin latte.jpg, or 03 Pumpkin latte.jpg — click Add photos and choose all the photos. Each is matched to the dish whose name it bears, in any of your languages; a close but not exact name is marked Close match. Untick any wrong pair and upload: the photos land on their dishes one by one while you keep editing. A photo that matches no dish isn't uploaded — give it to its dish from the dish's own square.
If a photo is deleted from the media library before you import, its dish is imported without it, and the import says so.
Come back later
A draft waits on the import page under Unfinished imports until you import or discard it, and is deleted 30 days after its last change. Your organization can keep three unfinished imports at a time.
When you discard a draft that uploaded photos, you can delete them with it. Only photos uploaded for this import and used nowhere else are deleted, and only those you uploaded yourself unless your role can delete from the media library; photos chosen from the library always stay. A draft deleted after 30 days leaves its photos in the media library.
An import creates new menus as drafts. It changes dishes you already have only when you choose to update them. Your plan's limits on menus and dishes apply to what it creates, and the draft shows how much of them the import uses.