Instagram feed for restaurant and café websites: what to show and where
Food is one of the things Instagram shows best, so a feed on a restaurant or café website seems obvious. But a feed of everything you post, dropped onto the homepage, often mixes tonight’s special with last winter’s holiday hours. This guide covers what a feed can and cannot do for a food business, which posts to show on which page, and how to use caption keywords, date ranges and Reels settings to keep each feed relevant.
Updated October 12, 2026

What a feed does well, and what it should not do
People who look at a restaurant or café website usually want to answer a few practical questions: Is it open? Where is it? What is on the menu, and roughly what does it cost? Can I book? Beyond that, they want a feeling for the place: what the food looks like, how busy and cozy it is, whether it suits a date, a family lunch or a quick coffee.
An Instagram feed is excellent at the second part. Recent photos of dishes, drinks, the room and the people show that the place is alive and give an honest preview. Because the feed updates itself from your account, the website stays fresh without anyone editing it.
A feed is poor at the first part. Opening hours, address, prices, allergy information and your full menu should be written as text on your pages. Captions only appear when a visitor opens a post, many visitors never do, and posts scroll out of the feed as you publish new ones. The W3C’s accessibility guidance also recommends real text rather than text inside images, because text can be resized without losing clarity and adapted by visitors who need it. A photo of a chalkboard menu is a nice post, but it should not be the only place your menu exists.
What to show: posts that help a hungry visitor
Most food businesses post a mix of content. Some of it helps someone deciding where to eat; some of it does not. Before you set up the feed, scroll through your own recent posts and sort them roughly like this:
| Post type | Helps on the website? | Why |
|---|---|---|
| Dishes and drinks, especially current ones | Yes | The main reason people look at a restaurant feed |
| Daily or weekly specials | Yes, while current | Shows something new, but goes out of date quickly |
| Seasonal menus and new items | Yes | Gives regulars and newcomers a reason to come now |
| The room, terrace, counter or view | Yes | Helps visitors picture the occasion |
| Kitchen and team, behind the scenes | Usually | Builds trust and personality, best on an About page |
| Events, live music, tastings | Yes, while upcoming | Useful on an events page; old ones less so |
| Closures, holiday hours, schedule changes | Rarely | Out of date within days; confusing months later |
| Job openings | Rarely | Belongs on a careers page, not next to the menu |
| Reposts, memes, giveaways | Depends | Fine on Instagram, often off-topic on the website |
You do not need to delete anything from Instagram. Social Feed by grip space lets you choose which posts appear on your website with filters, set separately for each widget. The next sections show how.
Where to put the feed on a restaurant website
The embed code is a single script tag, and the feed appears exactly where you paste it. That makes it easy to put feeds on several pages, each with its own selection of posts.
| Page | What the feed should show | Placement on the page | Suggested layout |
|---|---|---|---|
| Homepage | Recent dishes and the room | After hours, location and the reservation button | Grid, 3–4 columns, 6–12 posts |
| Menu page | Posts about menu items | Below the written menu | Slider or a short grid |
| Specials or “What’s new” section | Recent specials only | Next to a short text list of current specials | Grid, 3 columns, 3–6 posts |
| Reservations or contact page | The room, terrace, table settings | Below the address, map and booking form | Slider, 6–10 posts |
| Private events or catering page | Event setups, platters, groups | After the description and inquiry button | Grid, 3 columns, 6–9 posts |
| About page | Team, kitchen, suppliers | After your story | Grid, 3 columns, 6 posts |
| Footer on every page | Latest posts, unfiltered | Above copyright and links | One row: slider or 6 posts in 6 columns |
For general placement advice that applies to any site, including how placement affects page speed, see where to put an Instagram feed on your website.
Homepage: proof that you are open and busy
The top of a restaurant homepage should answer the practical questions: what kind of food, where, when open, and a button to book or order. Visitors on phones, often looking for somewhere to eat nearby, should not have to scroll past a gallery to find your hours.
Below that, a feed of recent posts does a job no static photo can: it shows that the place is active this week. A grid of 6 to 12 posts in 3 or 4 columns works well. Turn on the account header so visitors see your Instagram name and a follow button. The follow button text can be changed, so you can give it a reason, such as “Follow for daily specials”.
If your account mixes many kinds of posts, use the caption keyword filter in “Exclude matching posts” mode to keep closures and hiring posts off the homepage. See the filter recipes below.
Menu page: the written menu first, photos second
A menu page is one of the most visited pages on many restaurant websites, and it is where photos of dishes help most. A visitor reading “braised short rib, polenta, gremolata” decides faster when they can see it.
Keep the full menu as text on the page and put the feed below it. Then use the caption keyword filter in “Only matching posts” mode so that only posts about menu items appear. This works best if you already use, or start using, a consistent word or hashtag in captions of dish posts, for example “#onthemenu”, “#newmenu” or the name of the menu section.
If your menu has distinct sections, such as breakfast, lunch and dinner, or coffee and pastries, you could create one widget per section and place each one under its part of the menu. Each widget has its own filters and its own embed code, and you can copy settings from an existing widget so you only change the keywords.
Filter recipes for restaurants and cafés
Each widget has four kinds of post filters: caption keywords (show only matching posts, or hide matching posts), a date range (any time, the last 30 days, the last 90 days or the last year), a Reels setting (all, exclude Reels, or Reels only), and switches for carousel posts and video posts. When you combine filters, a post must pass all of them to appear. Here are some starting points; replace the keywords with the words you actually use.
| Goal | Caption keywords | Keyword mode | Date range | Reels |
|---|---|---|---|---|
| Homepage without closures or job posts | closed, holiday hours, hiring, we’re hiring | Exclude matching posts | Last 90 days | All |
| Menu page: dishes only | #onthemenu, #newmenu | Only matching posts | Last year | All |
| Specials section | #special, today’s special, daily special | Only matching posts | Last 30 days | All |
| Café pastry case | #pastry, #bakery, croissant | Only matching posts | Last 90 days | All |
| Seasonal menu page | #summermenu | Only matching posts | Any time | All |
| Events page | #livemusic, #tasting, event | Only matching posts | Last 90 days | All |
| Homepage video strip | (leave blank) | – | Last 90 days | Reels only |
| Calm photo-only grid | (leave blank) | – | Any time | Exclude Reels, and turn off video posts |
After setting a filter, check the preview in “Settings & preview”. If very few posts match, the grid may end up with a half-empty last row, or the widget may show fewer posts than you set. Widen the date range, add another keyword, or lower the number of posts.
How caption keyword matching works
Knowing exactly how the keyword filter matches saves a lot of trial and error:
- Separate keywords with commas. A post matches if its caption contains any one of them.
- Upper and lower case do not matter. “#NewMenu” and “#newmenu” match the same posts.
- Keywords match parts of words. “menu” also matches “menus” and “#newmenu”. That is convenient, but a short keyword can match more than you expect: “tea” also matches “steak”. Use a hashtag or a longer phrase when a short word is ambiguous.
- Phrases work. A keyword can include spaces, such as “today’s special”. Watch out for apostrophes: the straight ' and the curly ’ are different characters, so a phrase typed one way will not match a caption typed the other way. Hashtags avoid this problem.
- Only the caption is searched. Hashtags in your caption count, but hashtags you added in a comment do not, and neither do location tags or text in the image.
- Posts without a caption never match. In “Only matching posts” mode they are hidden; in “Exclude matching posts” mode they are shown.
Reels of dishes: where they fit
Many restaurants post short videos: sizzling pans, plating, latte art, a pour of wine. These can be the most engaging posts on your account, and the Reels setting lets you decide how they appear on the website.
In the grid or slider, videos and Reels appear as their cover image with a play mark, so a page full of Reels does not start several videos at once. When a visitor opens one, the lightbox plays it with the sound off at first and with the usual video controls. Instagram does not provide the video file for some posts, for example some videos with copyrighted music. Those appear as a still image without a play mark, and visitors can watch them on Instagram through the “View on Instagram” link in the lightbox.
- Reels only suits a short slider on the homepage, labeled for example “Watch the kitchen”. Choose cover images that show the dish, since that is what visitors see before they tap.
- Exclude Reels suits a menu page where you want clean photos of dishes, especially if many of your Reels are behind-the-scenes clips rather than food.
- All is a reasonable default for the homepage and footer.
The Reels setting only separates Reels from other videos. To leave out all video posts, including regular video posts, turn off “Include video posts”.
Daily specials: know how fast new posts appear
If you post a special at 11 a.m. and want it on the website by lunch, the timing depends on your plan. On the Free plan, the feed on your site is updated once a day, so a new post can take up to about a day to appear. On the paid plans (Light and Standard), new posts appear without that daily wait.
Either way, a feed is a supporting element for specials, not the announcement itself. If specials matter to your business, write today’s or this week’s specials as text on the page, and use the feed next to them as the visual. A “Specials” widget with the date range set to the last 30 days and an “Only matching posts” keyword such as “#special” keeps old specials from lingering for months.
If you notice that new posts do not appear at all, even after a day, see Instagram feed not updating on your website.
Seasonal menus and events: switch widgets on and off
Restaurants and cafés often have recurring seasons: a summer terrace menu, a pumpkin spice season, a holiday menu, a brunch only on weekends. You can prepare a widget for each one and turn it on when the season starts.
- Create a widget for the season, for example with the keyword “#holidaymenu” in “Only matching posts” mode.
- Paste its embed code on the page or section where the seasonal menu lives.
- When the season ends, switch the widget to Unpublished in the dashboard. The embed code then shows nothing, so you can leave it on the page.
- Next year, switch it back to Published. Use the date range filter if you only want this year’s posts.
Several widgets need a plan that allows them. The Free plan includes one widget, the Light plan three, and the Standard plan an unlimited number. Details are on the pricing section.
Settings that suit food photos
- Layout: a grid of 3 or 4 columns shows dishes large enough to look appetizing. Very small tiles do food no favors. On phones, the feed reduces columns automatically, usually to about three.
- Number of posts: 6, 9 or 12 fill full rows at three columns, which is what most phones show. The Free plan allows up to 16 posts, Light 30, and Standard 50.
- Click action: open the lightbox, so visitors see the dish larger and read the caption without leaving your site. Show the caption in the lightbox, because a dish photo is more useful with its name.
- Carousel posts: if you post several dishes in one carousel, set the lightbox to show all images, so visitors can browse them with arrows. The tile shows the first image only.
- Account header and follow button: on for the homepage and footer; you can turn it off on the menu page to keep attention on the food.
- Spacing: small gaps of 2 to 6 pixels look like an Instagram profile; slightly larger gaps give a lighter, menu-card feel.
Tiles are always square and the image is cropped to the center. If you shoot dishes from above in portrait format, keep the plate in the middle of the frame so it is not cut off in the tile. The lightbox shows the full image.
Cafés, bakeries and bars: a few differences
Cafés and bakeries often change what is in the case every day and post far more often than a full-service restaurant. That makes the date range filter especially useful: a homepage feed limited to the last 30 days always looks current, and a slider keeps a long stream of posts to one tile high. If you post the same latte art many times, the caption keyword filter in “Exclude matching posts” mode can hide a recurring hashtag you use for those.
Bars and wine bars tend to post events and evening atmosphere. An events page with a feed filtered to an event hashtag, plus the date range set to the last 90 days, shows what a night there looks like without featuring last year’s line-up first. Whatever you serve, keep any age, alcohol or allergy information on the page itself, not only in captions.
Accessibility: describe your food in text
The images in the feed currently do not carry text descriptions (alt text), so visitors who use screen readers cannot tell what each photo shows. Captions are available in the lightbox, but only when a visitor opens a post. This is one more reason to describe your dishes in the text of the menu page, with names, short descriptions and allergens, and to treat the feed as a visual extra. If a post is the only place where something important appears, such as a holiday schedule, copy that information into the page.
Setting it up, step by step
- Make sure your Instagram account is a professional account (Business or Creator). See the guide to Instagram professional accounts if you are not sure.
- Create a Social Feed account and connect your Instagram account.
- Create your first widget and set the layout, number of posts and filters in “Settings & preview”.
- Copy the embed code and paste it where the feed should appear. Platform guides: WordPress, Wix, Squarespace, Shopify, Webflow and HTML.
- Open the live page on your phone and check that hours, address and the booking button still come before the feed.
Common mistakes on restaurant websites
- The menu exists only as Instagram photos. Visitors cannot search it, enlarge it comfortably or rely on it being current. Write it out.
- An old closure notice on the homepage. “Closed for renovation” from two years ago, sitting in the feed, makes people think you are still closed. Exclude these posts with keywords, or use a date range.
- The feed pushes the booking button down on phones. Check the order on a real phone.
- A keyword that matches too much. Short words like “tea” or “pie” appear inside other words. Prefer hashtags.
- Expecting tagged guest photos. The feed shows posts from your own account only, not posts by guests who tagged you or used your hashtag. To show guest photos, repost them on your account.
Frequently asked questions
Can the feed show photos that guests post with our hashtag? No. Social Feed shows posts from your own connected professional account only. It does not collect posts by other accounts, hashtag searches or tagged photos.
Can I show Instagram Stories, for example today’s specials posted as a Story? No. Stories are not shown. If you announce specials in Stories, consider also posting them to your feed with a hashtag.
We have two locations with one Instagram account. Can each location page show its own posts? Yes, if your captions mention the location. Create one widget per location with that location’s name or hashtag as an “Only matching posts” keyword. If each location has its own Instagram account, note that one feed cannot mix posts from several accounts.
Will the feed slow down my menu page? It adds images, so it has some effect. In a grid, only the first row loads right away and the rest load as visitors scroll near them. Placing the feed below the written menu keeps the important part of the page fast.
To compare options before you decide, see our Instagram feed widget comparison and what a free Instagram feed widget includes.
Sources
- W3C Web Accessibility Initiative, “Images of Text” (Images Tutorial): https://www.w3.org/WAI/tutorials/images/textual/
Get your embed code in a few minutes. The Free plan needs no credit card.
Sign up freeMore articles

How to add an Instagram feed to a Ghost site
Three ways to show your Instagram posts on a Ghost site: an HTML card, Code Injection, or a theme partial. Which to use, step by step, and what each can’t do.
Read the article →
Free Instagram feed widget: what you get on the free plan (and its limits)
An honest look at the Social Feed by grip space Free plan: 1 widget, 16 posts, 3,000 views a month, daily updates, a credit link, and when to upgrade.
Read the article →
How to add an Instagram feed to your BigCommerce store
Show your Instagram posts on a BigCommerce store with a Page Builder HTML widget, and learn when Script Manager or theme files make sense instead.
Read the article →
How to add an Instagram feed to a GoDaddy website
Add an auto-updating Instagram feed to a GoDaddy Websites + Marketing site with an HTML section, plus tips on iframe height, the lightbox and GoDaddy WordPress.
Read the article →
How to add an Instagram feed in Divi
Show your Instagram posts on a Divi site: paste one embed code into a Code module, or add it to a global footer with the Divi Theme Builder. No plugin needed.
Read the article →
How to add an Instagram feed to Elementor (no extra plugin)
Add an Instagram feed to an Elementor page with the free HTML widget, or to every page with a Theme Builder footer (Elementor Pro). No extra plugin needed.
Read the article →