Instagram Feed Integration: setup and help
Quick start
- Upload the module ZIP in Modules > Module Manager and open Configure.
- Enter Access Token and Instagram User ID for the intended account.
- Set Instagram Username and keep the feed enabled.
- Select Display Hook supported by your theme, such as displayHome.
- Set Layout Mode, columns and visible content, then save.
- Use Refresh Feed Cache Now if replacing cached content.
- Open the chosen storefront area, confirm media loads and test post/follow links.
Requires PrestaShop 1.6 or later and PHP 7.1 or later.
Setup manual
Install and connect
- Upload the Instagram Feed Integration ZIP through Modules > Module Manager.
- Open Configure.
- Enter Access Token, Instagram User ID and Instagram Username.
- Choose a real Display Hook supported by your theme, then save.
- Visit that storefront area so the first feed request runs. Confirm posts link to your intended account.
Requires PrestaShop 1.6 or later and PHP 7.1 or later.
Connection settings
| Setting | Installed default | What you do |
|---|---|---|
| Enable Module | Yes | Enables the storefront feed. It is separate from Enable Auto-Publish. |
| Access Token | Empty | Paste the token for the configured account and API mode. Saving requires a nonempty token but does not validate the remote account identity. |
| Instagram User ID | Empty | Enter the numeric account ID to select the Facebook Graph media endpoint and allow publishing configuration. |
| Instagram Username | Empty | Enter the profile username without @. Used in profile links and author labels. |
With Instagram User ID filled, the module requests https://graph.facebook.com/v18.0/USER_ID/media. With it empty, the module requests https://graph.instagram.com/me/media. Configure the intended Graph account and check the feed response.
After each uncached feed fetch, the module attempts token renewal through graph.instagram.com/refresh_access_token, including when Instagram User ID is configured. It saves a returned access token on success. Renewal is not guaranteed; replace credentials when authentication fails.
Display and layout
Placement
| Setting | Installed default | What it does |
|---|---|---|
| Display Hook | displayHome |
Choose a standard hook supported by your theme, such as displayHome, displayFooterBefore, displayFooter, displayLeftColumn or displayRightColumn. The widget option has no renderer in this version; use a standard hook. |
| Section Title | Follow us on Instagram | Heading above the feed. |
| Show Follow Button | Yes | Displays the follow link when a username is configured. |
| Follow Button Text | Follow @ | Text before the username. |
| Show on Mobile | Yes | Turn off to omit the feed for visitors detected as mobile by PrestaShop. |
| Enable Custom Widget | No | Saved, but has no effect because the custom widget hook is not implemented. |
Only the selected standard hook renders the feed. Your theme must call that hook. You can use the homepage for the initial test, then move it to a footer or column hook supported by your theme.
Layout
| Setting | Installed default | What it does |
|---|---|---|
| Layout Mode | grid |
Choose grid or slider. |
| Number of Posts | 12 | Media request limit, capped at 25. |
| Columns | 4 | Desktop grid columns. The supplied slider needs section-level variables to use this value. |
| Rows | 1 | Limits the grid to 1-3 visible rows at each screen width. Does not restrict slider output. |
| Mobile Columns | 2 | Grid columns below 768px; the supplied slider falls back to two. |
| Image source (not a setting) | Platform response | Uses the image URL or video thumbnail URL returned by Instagram. There is no Image Size control. |
| Gap Between Posts (px) | 10 | Grid item spacing; the supplied slider movement falls back to 10px. |
| Border Radius (px) | 8 | Grid corner rounding; slider styling may require a theme adjustment. |
| Hover Effect | overlay |
Choose overlay, zoom, fade or none. |
For a homepage grid, start with 12 posts, four desktop columns, two mobile columns and three rows. This shows up to 12 posts on desktop and six on mobile; tablets use three columns. Rows limits the visible grid items, while Number of Posts remains the overall maximum. For a footer slider, choose displayFooterBefore and slider, reduce Number of Posts if needed and hide captions or dates for a compact layout.
The supplied slider reads column and gap variables from the section, while the template declares them on the grid. Slider movement therefore falls back to four desktop items, three on tablets, two on mobile and a 10px gap unless your theme supplies those variables on the section. Test the slider after changing layout settings.
Post content and performance
Visible content
| Setting | Installed default | What it does |
|---|---|---|
| Show Caption | Yes | Display the caption, shortened by the fetcher to at most 120 characters. |
| Show Date | Yes | Display the post date. |
| Show Likes Count | Yes | Display a positive like count returned by the User ID Graph request. |
| Show Comments Count | Yes | Display a positive comment count returned by that request. |
| Show Author Name | Yes | Display the configured username on each item. |
Videos are represented by thumbnails with a play marker. Carousel albums appear as a linked preview with a gallery marker; the fetcher does not request and display all carousel children. The feed shows account media, not hashtag results. Items without a usable image or video thumbnail are skipped.
Cache and slider
| Setting | Installed default | What it does |
|---|---|---|
| Auto-Scroll (Slider) | Yes | Moves the slider automatically. |
| Scroll Speed (ms) | 3000 | Delay between automatic movements. |
| Lazy Load Images | Yes | Defers loading until images approach the viewport. |
| Cache Duration | 3600 seconds | Choose a duration from 15 minutes through 24 hours using the dropdown. |
The feed uses a local JSON cache in the module directory. A storefront request fetches media when the file is missing or older than Cache Duration. Shops using the same module directory share this cache. There is no scheduled refresh worker.
Refresh Feed Cache Now and saving the feed settings clear the cache. The next storefront request fetches media and saves only nonempty results. An API error or empty result shows no feed for that request; expired cached content is not served. Lazy loading uses IntersectionObserver, with immediate image loading when it is unavailable.
Optional Blog Revolution publishing
The configuration includes a publishing section and a Blog Posts panel. The panel needs MPR Blog Revolution data to list posts. Feed reading and publishing are separate operations. Leave Enable Auto-Publish off, its installed default, until you want published blog content to create remote posts. Saving the main feed form resets the separate auto-publish switch and caption template. Save the publishing form again after changing feed settings.
Caption Template defaults to:
{title}
{excerpt}
{url}
You can also use {shop_name}. For example, change the last part to Read the article: {url} and add {shop_name} on another line.
Automatic publishing reacts to object add/update hooks with published status 1 and configured credentials. The Instagram publisher requires Access Token, Instagram User ID and one featured image. It creates a media container and submits it for publication. It does not publish a multi-image carousel.
Manual buttons in the recent blog-post panel also publish real content to Instagram. Check the selected post, account and caption before using them, and make sure the token has permission to publish.
Publishing attempts use shared persistent queue/history data with duplicate and unknown-outcome checks. Publishing is attempted during the request; failed attempts need review before retrying. If the result is unknown or requires reconciliation, inspect the remote account and queue result before trying again.
The shared write policy can block publishing on a development/staging host or when the configured shop host is uncertain. Use the displayed result and PrestaShop logs to diagnose that block. There is no need to change publishing policy to test feed reading.
When the mprsocialrevolution stored platform-active setting is on, this module suppresses its own feed and automatic publishing for that platform. That takeover check reads the platform setting; it is not simply a test that the other module is installed.
Verify and troubleshoot
- Confirm the required credentials are saved, the feed switch is on and the selected hook executes in your theme.
- Clear the cache, visit the chosen area, and inspect the resulting feed. Check the cache file's timestamp and PHP/API errors if nothing appears.
- Test grid or slider controls, mobile visibility, follow links and post permalinks. Like/comment counters require the User ID request and returned positive values.
- If authentication fails, check the token, account ID, remote API version and permissions. Saving credentials checks that the token is nonempty; it does not verify the remote account identity. Changing the username alone does not change the API account ID.
- If publishing is denied, check the employee's module access, account credentials, host-policy result, shared-package compatibility and previous attempt state. Do not repeatedly publish after an uncertain response.
Customize and uninstall
Keep template overrides in your theme:
themes/your-theme/modules/mprinstagramintegration/views/templates/hook/feed.tpl
themes/your-theme/modules/mprinstagramintegration/views/templates/hook/post_item.tpl
Theme CSS can target .mprinstagram-section, .mprinstagram-title, .mprinstagram-grid, .mprinstagram-slider, .mprinstagram-item and .mprinstagram-follow-btn. Use .mprinstagram-caption for caption styling. Layout variables include --mprinstagram-gap and --mprinstagram-radius.
To pause output, turn off Enable Module. Turn off Enable Auto-Publish separately to stop automatic publishing. Before uninstalling, retain credentials and back up any publication history you need. Uninstall removes the module's menu and settings, clears its cache and runs its schema cleanup. It does not delete posts already created on Instagram.
Questions
1
Does Instagram image lazy loading wait for shopper consent?
Lazy loading uses viewport proximity where supported, with immediate loading as the fallback. Neither path checks consent. The feed uses the image URLs returned by Instagram. If your setup needs to hold those requests, verify that your consent tooling controls them before enabling the feed.
Known Issues
6
Instagram credentials cannot be saved from setup dialog
Setup warning remains after saving valid settings
Setup help appears as a warning
Module labels remain untranslated
Module back office fails to open
Incorrect module translations
Feature Requests
3
Implemented
Instagram feed with grid and carousel layouts
Instagram setup readiness checks
One-click module updates
Changelog
v1.0.132026-09-14
- Addedcomplete FR/DE/ES/IT/PL translations
- FixedAdd migrateFromPsConfiguration for ps_configuration cleanup
Older releases
v1.3.02026-04-20
- Addedadmin menu management via MenuInstaller for streamlined module setup
- AddedLicense management tab with key management and renewal options
- Addedself-healing integrity checks for automatic diagnostics and repair
- Addedcomplete FR/DE/ES/IT/PL translations
v1.2.02026-02-03
- Addedfull compatibility with PrestaShop 9.x and Hummingbird theme
- AddedReels support: video thumbnails with play icon overlay in the feed grid
- ImprovedOAuth token refresh — long-lived tokens auto-renewed 7 days before expiry
- Fixedfeed not updating after Instagram account switched to a different Business Profile
- Addedhover overlay with post caption excerpt and Instagram link
v1.0.02025-09-19
- Initialrelease: Instagram Basic Display API integration for PrestaShop
- InitialOAuth 2.0 authorization flow managed entirely from module settings
- InitialConfigurable post count (up to 24) and column layout (2–6 columns)
- InitialFeed cached server-side to avoid rate limiting — configurable TTL
v1.1.02025-08-25
- Addedslider layout as an alternative to the default grid view
- Improvedlazy loading: only images in the viewport are requested from Instagram CDN
- Fixedlayout breaking when a post caption contained emoji characters
- Addedconfigurable grid gap and border radius for seamless theme matching
Demo
Test the full module before you buy
Buy a licence later and keep your settings.
- Your 30-day demo Test it on your own shop for 30 days from the first install.
- Ready demo shop Explore a ready demo shop in your browser.
- No registration No account, email or store domain needed.
By downloading, you accept the demo terms and privacy policy.
By opening this demo you accept the demo terms and the privacy policy.