seo for restaurants in ottawa: what actually moves the needle
Why most restaurant websites are invisible to Google
Search for "seo for restaurants ottawa" and you'll find plenty of advice about keywords and blog posts. For most restaurants that's not where the problem is. The problem is that the website doesn't give Google much to read.
The usual pattern looks like this. The menu is a PDF, or worse, a photo of a printed menu. The homepage is one long scroll with a hero image and a phone number. Hours are baked into a graphic. There's no structured data, and the "Order now" button goes to a third-party site.
To a person that's a fine-looking restaurant site. To a search engine it's a few sentences of text. It can't tell what you serve, what it costs, or whether you're open on Sunday.
The fixes below are roughly in order of impact. None of them need a redesign to start. All of them are cheaper than ads.
Make your menu actually crawlable
If you do one thing from this article, do this: put your menu on a regular web page, as text.
A menu in a PDF or an image has real costs:
- Text inside images isn't readable to search engines at all.
- A PDF is a separate document with no navigation, no links back to your site and no schema.
- Phone users pinch and zoom. Many leave.
- You can't link to a single dish, section or daily special.
An HTML menu fixes each of those. Every dish name and description becomes searchable text. Someone searching "butter chicken near me" or "vegan brunch Ottawa" can only land on you if a page of yours contains those words.
Some practical rules:
- One page per menu. Lunch, dinner, brunch, drinks, kids. Not one 90-item page.
- Real headings. Each section (starters, mains, desserts) gets an
h2orh3, not bold text in a div. - Write a line of description per dish. "Slow-braised short rib, roasted carrots, polenta" gives Google far more than "Short rib".
- Show prices as text. Searchers compare, and so does Google.
- Keep it current. An out-of-date menu page is worse than none. If you change the menu weekly, make it editable by you, not by a developer.
You can still offer a PDF for people who want to print it. Just don't make it the only version.
Restaurant schema markup
Structured data is a block of code on the page that tells search engines, in a defined format, what the page is about. For a restaurant, the useful types are Restaurant (or a narrower one like CafeOrCoffeeShop or BarOrPub), plus Menu, MenuSection and MenuItem for the menu itself.
A minimal example for the homepage:
{ "@context": "https://schema.org", "@type": "Restaurant", "name": "Your Restaurant Name", "servesCuisine": "Italian", "priceRange": "$$", "telephone": "+1-613-555-0100", "address": { "@type": "PostalAddress", "streetAddress": "123 Example St", "addressLocality": "Ottawa", "addressRegion": "ON" }, "openingHours": "Mo-Sa 11:30-22:00", "hasMenu": "https://example.com/menu" }
Three things to know before you add it:
- It helps Google understand you; it doesn't guarantee rich results. Google decides what to display. Cuisine, price range and hours can show up in listings, but there's no switch you can flip.
- Mark up only what's visible. If the markup says $$ and the page doesn't mention price, that's a mismatch.
- Test it. Use Google's Rich Results Test and fix warnings before you move on.
Make sure the name, address and phone number match exactly what's on your Google Business Profile. Inconsistencies there cause more local ranking problems than missing schema does.
Local landing pages vs. one homepage doing everything
A single homepage can rank for "restaurant Ottawa". It's a poor tool for anything more specific.
Think about how people actually search: "patio near the Glebe", "gluten-free dinner Byward Market", "catering for 40 people Ottawa", "birthday brunch Westboro". Each of those has a different intent, and a homepage can't answer all of them well.
Dedicated pages work when each one has a real reason to exist:
- Dish or category pages: your brunch menu, your vegetarian options, your catering offer.
- Occasion pages: private dining, group bookings, office lunches.
- Location pages: only if you have multiple locations, or a delivery or catering area worth describing.
The failure mode is copying one page ten times and swapping the neighbourhood name. Google has seen that trick. A page earns its place by containing something specific: the cross-street, parking notes, which dishes are popular with that crowd, the capacity of the private room.
If you can't write a few honest paragraphs that differ from your other pages, don't build it.
Online ordering as an SEO asset, not just a checkout flow
Many restaurants route ordering to a third-party app. It's easy to set up, but it has a side effect: the page where the customer decides what to eat lives on someone else's domain.
When ordering is built into your own site, a few things change:
- Your menu items are indexable pages on your domain, with your wording and your photos.
- Links point to you. When a local blogger or food guide links to "where to order", it can link to your page, not the platform's listing of you.
- You see the whole journey. Analytics can show which dishes get viewed, which pages lead to orders, and where people drop off.
- No commission on orders that come through your own flow, beyond payment processing fees. Check your own numbers, but for many restaurants the commission on a third-party platform is the larger cost.
The tradeoff is real: marketplaces bring discovery you may not get on your own. Many restaurants keep a listing there and also push regulars to order direct. If you want to see how the build side works, how we scope and price projects lays out what is dev fee, hosting and third-party cost, including payment processing.
Photos and gallery pages done right for search
Restaurants have good photos and waste them. A gallery full of files called IMG_4821.jpg with no alt text tells Google nothing.
What to do instead:
- Name files for what they show.
wood-fired-margherita-pizza.jpg, notIMG_4821.jpg. - Write alt text as a plain description. "Margherita pizza on a wooden board, basil and fresh mozzarella". One sentence. Skip keyword stuffing; if you wouldn't say it to a screen-reader user, delete it.
- Compress before uploading. A 6 MB hero image slows the page, and speed affects both ranking and whether a phone user waits.
- Put photos next to text. A dish photo beside its menu entry is worth more than a separate gallery nobody visits.
- Don't put text in the image. Specials, hours and prices belong in HTML.
A gallery page is still worth having. Give it a heading, a short intro on the space or the kitchen, and captions, so it's a page and not just a pile of images.
Where to start
If you're deciding what to tackle first, this order tends to work:
- Turn the menu into HTML pages.
- Check that your name, address, phone and hours are identical everywhere.
- Add
Restaurantand menu schema, then test it. - Fix image names, alt text and file sizes.
- Add pages for occasions or locations that you can honestly write about.
- Bring ordering onto your own domain if it isn't there.
Local search also depends on your Google Business Profile, reviews and Maps presence, which is a separate job from the website itself. The website is the part you fully control.
If your site is built on a template you can't change, or the menu is stuck somewhere nobody can edit, that's usually when a rebuild pays for itself. You can see what we build on our services page, or read about us to see who you'd be talking to. You'd be speaking directly with the developer, not an account manager.