Magento 2 Instagram Feed

View Demo

Instagram is one of the most popular social networks around. It’s becoming more and more ecommerce-friendly with its seamless shopping experience. Expanding your presence on the network is an excellent business opportunity. However, seamless shopping means you have to get your products there first.

Magento 2 Instagram Feed lets you create a product feed for Instagram, schedule feed generation and delivery, analyze its results with an analytics suite, and more.

  • Generate an Instagram product feed
  • Create as many feeds as possible
  • Use ready templates and clone for similar catalogs
  • Use conditions to filter products
  • Validate feeds before upload
  • Automate the generation and delivery

ℹ️ Important: This sub-module is included in the Advanced Product Feeds extension.

Buying this item gives you access to all feeds including Facebook, Instagram, Google Shopping, and others in one powerful package.

Hyvä
Magento Cloud
Mage-OS
Compatible with:
Community:
2.3.* - 2.4.9
Enterprise:
2.3.* - 2.4.9

Business Value

  • Opportunity: Instagram says it has more than 1 billion users. This social network is gaining the lead in ecommerce, too. Its shoppable posts let users buy products without even leaving the app. 70% of shoppers in the US use Instagram for product discovery, according to Facebook. In other words, Instagram is perfect for sales and advertising.
  • Problem: Seamless shopping experience means you have to export your products to Instagram before you can sell there. You also have to be able to update them regularly.
  • Solution: Magento 2 Instagram Feed lets you quickly and easily generate a product feed for Instagram, tweak its content and automate its generation and delivery.

How It Works

Instagram takes its products from Facebook Shops. This feature lets you create a feed with a ready-to-go template for Facebook which you can then use in your Instagram account.

Main Advantages

Create as Many Feeds as Possible

There are no limits to the number of feeds or products inside them. You can generate as many of them as you need, which can be as large as required for your business.

Get Straight to Business

This feature offers a preconfigured Facebook template so you don’t have to waste time setting it up. However, we also offer advanced pattern and variable customization options if your business requires them. You can clone a preset for similar catalogs while keeping the source unchanged, and quickly locate templates using the A–Z index and name search. If your channel requires a unique structure, you can build a feed from a blank setup instead of using a template.

Use Conditions to Filter Products

You may not need to export the entire catalog. You can single out only the exact products you need with Magento conditions. They support both product attributes and product performance data.

Validate Feeds Before Export

Make sure your file meets platform rules before upload. Set checks in Content Settings > Validation Rule, generate the feed, and run validation. You will get a clear report with line numbers and plain-language messages. Fix values, regenerate, and publish with confidence.

Automate Generation and Delivery

If you update your catalog often, you can set the feed generation to a specific date. You can also automate feed delivery to Facebook via FTP or SFTP.

No hidden fees
Our developers install the extension on your store and configure it for your setup, free of charge.
Lifetime access to source code
Access to free support and updates for 1 year
Updates and support prolongation - $108

Pay today $179 for the first year.

Then $108 for updates and support services per year.

Cancel anytime.

30 days money back guarantee
See it in action!
Pick a quick tutorial to learn about various aspects of this extension
Customer Reviews 0
Earn points for your review about this extension modules. $1 = 10 points
Write Your Own Review

check-circle You submitted your review for moderation.

Manual & Support
Need more help?

Save time by starting your support request online and we'll connect you to an expert.

Frequently asked questions
chevron-down chevron-right

Can I generate the feed for a different service?

Yes, you can. Besides manual generation, this module includes templates for **50+** ecommerce services, including Amazon and Google Shopping.

Changelog
Version 1.17.0Oct 26, 2026
Feed is listed in the Core AI settings — Advanced Product Feeds now appears in the "modules using AI functionality" list of the Mirasvit Core AI settings, using the default AI provider configured there.
⚠️ Requires Mirasvit Core 2.0 — The module now requires mirasvit/module-core 2.0.0 or later and the new mirasvit/module-ai-core package. Composer installs them with the update; run setup:upgrade afterwards. Code that extended or injected the Core helpers the feed no longer uses (Mirasvit\Core\Helper\Io, Mirasvit\Core\Helper\Image, Mirasvit\Core\Service\SerializeService, Mirasvit\Core\Service\YamlService) needs to be updated.
Image resizing works on remote media storage — The resize filter in feed templates now uses Magento's own image processor and works whether media is stored locally or on Amazon S3. Resized images are cached under pub/media/mst_feed/cache, so their URLs in the feed change once. Two exports resizing the same image at the same time no longer clash, temporary files are always cleaned up, and an image that cannot be resized is exported at its original URL and the failure is logged.
The feed export lock is kept on the local disk — The per-feed lock file now lives under var/ instead of pub/media, so locking works the same when media is on S3 or a network drive. Reset on a feed now removes this lock file too.
Older product filters keep working — Feed product filters saved in the old storage format, or imported from older YAML files, are still read correctly. A filter that cannot be read is logged and skipped instead of breaking the export, preview or filter form, and saving such a filter shows an error message instead of an error page.
Out-of-stock products no longer appear as "in stock" in feeds (MSI) — With Multi-Source Inventory, a product whose source was flagged In Stock with quantity 0 and backorders off was exported as in stock, and the Is in stock (inventory) filter kept it. This most often affected configurable products whose only variants were in this state, and sent unsellable products to Google and Facebook. Stock status and the filter now use Magento's salable check, based on the stock assigned to the feed's website. Filtering for out-of-stock products in the default fast mode no longer drops products that should be kept. The stock is looked up once per store instead of once per product. (module-feed#922, module-feed#924)
A duplicated feed gets a sensible filename — Duplicating a feed named its copy after the internal working file, so it published as mst_feed_4.xml_copy.xml. The copy now takes the original's filename with _copy, or _copy2, _copy3 and so on if that name is already taken. (module-feed#920)
Two feeds can no longer publish to the same file — The duplicate-filename check on save compared internal names and never found a match, so two feeds with the same filename and type could overwrite each other's file. Saving a feed that would publish to the same file as another feed (same filename, extension and compression) is now refused. A feed with an empty filename is not checked. (module-feed#827)
CSV feed validation without a delimiter — Validating a CSV feed with no column delimiter set could crash on PHP 8 or pass a file it never checked on PHP 7.4. It now stops with a clear message asking you to choose a delimiter, translated into every supported locale. The tab delimiter is also recognised reliably on every PHP version. (module-feed#820)
AI profiles with a blank name — An AI profile could be saved with an empty or whitespace-only name through an update, the REST API or an import, leaving it with no label in the admin. A blank name is now refused on save, and an existing unnamed profile is shown by its code. (module-feed#822)
Fixed an error when the feed edit form was built outside a regular browser request, for example from the API or command line. (module-feed#828)
Version 1.16.0Oct 21, 2026
Parquet feed type — Choose Parquet in the Type selector of a feed or template to publish your catalog as an Apache Parquet file, the columnar format read by data warehouses and analytics tools. Columns and their types (text, numbers, prices, lists) come from the template's declarations, and each value is converted to its column's type. The file is written in row groups across the export's passes, so large catalogs export without hitting time limits, and the output is checked against files written by the standard pyarrow library.
Parquet preview — Previewing a Parquet feed shows its column schema and a table of the rows it will write.
Parquet validation — bin/magento mirasvit:feed:validate checks a Parquet feed's file structure, and your field validation rules are applied to the rows of the file the feed published, read back row group by row group.
Custom JSON and Custom Parquet starter templates — The Custom Feeds block on the New Feed screen now offers blank JSON and Parquet templates alongside Custom XML, CSV and TXT, with typed price and weight fields and a list of additional images ready to edit. Existing stores get them on setup:upgrade.
Schedule a feed by cron expression — The feed's Scheduled task section has a new Schedule mode: Fixed times (the existing days-and-times picker, still the default) or Custom cron expression, which takes a standard five-field cron expression such as */15 8-18 * * 1-5. The expression is required in this mode and validated on save with the wrong field named, and a plain-language preview of when it will run updates as you type. The next run time is shown for both modes, and the schedule wording is translated into every supported locale.
Bundle Regular Price attribute — A new Bundle Regular Price product attribute exports a bundle's regular price calculated from its default selections, converted to the store's display currency like the other prices.
JSON Lines is now part of the JSON type — The standalone JSONL type is no longer offered in the Type selector; choose JSON with its "one object per line" framing instead. Existing JSONL feeds keep working and are shown as JSONL (legacy), but a new feed can no longer be created from a JSONL template, either in the admin or through the REST API.
Faster exports for feeds using attribute set, dynamic attribute, dynamic variable or category mapping values — These were loaded again for every product (a category mapping alone could cost over 20 database queries per product). They are now loaded once per feed export and reused, and an edited category mapping is picked up on the next export instead of an outdated copy being used.
Scheduled feeds start on time — The feed export cron job now runs every minute instead of every 30 minutes, so a cron-expression schedule fires in the minute it matches. A check that finds nothing due writes no history entry, and a feed that is still generating is skipped instead of being logged as an error. Looking up the last cron run is also a single lightweight query.
Google Merchant Center upload is offered only for CSV, TXT and XML feeds — The Google Merchant options no longer appear for JSON and Parquet feeds, which Merchant Center does not accept.
⚠️ New columns cron_mode, cron_expression and cron_started_at in the mst_feed_feed table, added by setup:upgrade.
Two exports of the same feed can no longer run at once and corrupt the file — On shared filesystems without file locking (NFS, AWS EFS), the per-feed export lock silently did nothing, so two exports of one feed could interleave their output (for example, duplicated <?xml?> headers). The lock is now held in the database and works on every filesystem. It is also released correctly when the lock file cannot be opened, and it nests safely on Magento 2.3, which allows only one database lock at a time, so scheduled and queued feeds keep exporting there.
A scheduled feed whose run failed or was stopped is no longer restarted right away — It now waits for its next scheduled time.
Feed prices are in the store's display currency and labelled with it — A configurable product's regular price and the price of products whose variants are all out of stock were exported in the base currency while other prices were converted. Every final price and regular price the feed outputs is now converted, and the bundled templates name the display currency next to them (Ceneje now fills in its currency code and regular price, and Fyndiq's old price reads the regular price).
Bundled templates no longer hardcode a currency — Fourteen templates printed a fixed code such as USD or RON, or left the currency empty, so stores with another base currency published mislabelled or unpriced feeds. They now use the store's base currency (Rozetka keeps UAH, its only currency).
Prices in bundled templates are rounded — The Ceneje, Kwanko, Fnac and VidaXL templates, and the new Custom JSON and Custom Parquet templates, printed converted prices unrounded (for example 24.0278 instead of 24.03). They now format them as prices, which also keeps Parquet price columns from coming out empty.
Custom JSON and Custom Parquet logos now match the style of the other Custom template logos.
Dynamic Variables are validated correctly — The syntax check reported every variable as invalid, including ones with correct code. It now checks the PHP code properly, without running it.
A missing Dynamic Variable file is reported instead of exporting a blank value — When a variable's PHP file is missing (for example after a server migration that did not copy var/), the feed exported the value empty with no warning. The export now finishes with a warning naming the affected variables, and the problem is written to the log. This check no longer re-reads the file for every product.
Saving a JSON or JSONL feed or template from the admin form no longer loses its content.
The XML editor of a JSON feed shows and saves the template you wrote, not its compiled internal version.
A feed validated with both field rules and declared-type checks no longer fails its export.
Parquet reliability — An interrupted Parquet export no longer publishes wrong rows; a number too large for a 32-bit float column is written as empty and reported instead of being stored as infinity; a damaged or truncated Parquet file is reported as a validation error instead of passing as clean; and a file the validation cannot read is written to the log instead of being silently ignored.
Fixed a PHP 8.5 deprecation notice caused by a template element without a declared type.
Fixed the AI Clear values confirmation ignoring its "overridden values" checkbox when the checkbox ID contained special characters.
Version 1.15.16Oct 14, 2026
"is not" condition for multiselect attributes in feed filters. Product filter conditions on a multiselect attribute (for example Activity or Material) now offer the is not operator. With one or more values selected, it keeps only products that have none of them: "Activity is not Hike, Sports" drops every product tagged Hike or Sports. Left empty, it keeps products that have any value set for the attribute and drops those where it is blank, which was not possible before. The filter gives the same result whether products are checked one by one or filtered directly in the database, and an unexpected stored value is safely ignored instead of being treated as a match.
The Library of Patterns in the feed template editor no longer fails to open. Depending on which other scripts happened to load first on the admin page, the widget could stop with a "_ is not defined" error in the browser console and stay unusable. It now loads the library it depends on itself, so it works on every page load.
Version 1.15.15Oct 6, 2026
A replaced feed or template logo now shows the new image straight away. Each logo is stored under the same file name every time you upload one, so the admin's link to it never changed and the browser or CDN kept showing the old, cached picture after a replacement. The logo link now changes whenever the image does, so the new logo appears at once. Clearing or replacing a logo also used to leave the old file behind in pub/media, and that stale picture could come back on the next upload; the old file is now deleted. This works on remote media storage such as Amazon S3 too.
Duplicating a feed or template no longer puts the original's logo at risk. A duplicate pointed at the same logo file as the original, so saving the copy or clearing its logo deleted the original feed's or template's logo as well. A copy of one of the bundled templates could delete the bundled logo (for example the Bing logo) in the same way. A duplicate now gets its own copy of the logo, and saving a feed or template only ever deletes a logo file that belongs to it, which also protects copies made before this update. Re-saving an existing feed also no longer replaces its own logo with a template logo of the same name; a feed takes its logo from a template only when it is created from one.
A {% capture %} block that loops over context.products now renders its content. A product loop placed inside a {% capture %} (for example, to compute a timestamp shown in the feed header) was mistaken for the feed's main product loop: once it had gone through the products it stopped the whole export, so the captured value and everything after it came out empty on every run. JSON Lines feeds built from column patterns were hit the same way, because each column is wrapped in a capture. Loops inside a capture now run through to the end and the rest of the feed renders normally; the main product loop works as before.
Products are no longer silently missing from a feed when an export is split into several runs. A large export pauses when it reaches its time limit (or is stopped) and continues in the next run. If that pause happened while a product loop nested inside the main product loop was running, as it does in JSON Lines feeds built from column patterns, the product being written at that moment was skipped and never appeared in the feed. Only the main product loop can now pause the export, and it does so between products, so every product's row is written in full.
Version 1.15.14Oct 2, 2026
Configurable and grouped products whose variants are all out of stock no longer export a price of 0. Magento only counts in-stock variants when it works out the price of a configurable or grouped product, so once every variant sold out the feed's price, regular price and final price came out as 0. Google Merchant Center then suspended the item for a £0 price, and services that read the feed, such as Klaviyo, picked it up as a free product. When no in-stock variant is left, the price is now calculated from all enabled variants, ignoring stock, so the product keeps its real price in the feed. Products with at least one variant in stock are priced exactly as before.
Unexpected errors in the feed and AI profile admin screens no longer show database details to the admin. When saving an AI profile, clearing its stored values, previewing it, or previewing a feed's JSON output ran into an unexpected error, such as a database failure, the raw technical message was shown on screen, including the SQL error code and the full database query. The raw message is no longer shown on any of these screens. Saving an AI profile, clearing its values and the feed JSON preview now show a short, translated message saying what failed, and the full details are written to Magento's exception log (var/log/exception.log) for your developer. Messages that explain what to fix in the form or template, such as "Choose a kind before previewing", are still shown as before. The new messages are translated into all 15 bundled languages.
Reasons to choose Mirasvit
Client focusing and satisfaction

These are our primary. A major portion of our new clients come from referrals from our existing clients. Our professional team of developers, marketers and support staff have invested the best knowledge and experience in the field into our work, so you know you can come back to us again and again.

Remarkable support

One year free and high quality support. We go to great lengths to provide maximum satisfaction with every module you have purchased in our store. By helping you with installation, configuration, answering your every question, we do all our best to eliminate any possible problems.

Risk-free Investment

30-days money back guarantee. If you are not satisfied with our extension performance for any reason, we provide a full refund.

Constant improvements and upgrades

We constantly add new features to all our modules, and are always interested in hearing your opinion and implementing your suggested features in our future developments.

Comprehensive Documentation

We provide an expanded user guide for every aspect of our extension, so you can find answers for all your burning questions.

Unencrypted source code of our products

You can customize extension according to your needs and requirements.

Usability and Performance

The Module is easy to install and upgrade, just follow our step-by-step user guide. Additionally, the extension is ready to use with the Hyvä theme.

Ready for Magento Cloud

No core modifications. The extension has been tested in a Magento Cloud environment and is fully compatible with it.

Loading...