Magento 2

Data Feed Manager

Export your products from your Magento website into csv, txt and xml data feeds for any shopping engine or market place! This extension includes all Google Shopping features and 19 sample templates.

must have
245,00€excl. VAT

4.9/5 rated 569 reviews

  • Lifetime license
  • 12 months support & upgrade
  • 60 days money-back guarantee
  • Extensible source code
  • Unlimited test domains
  • Free composer access
Demo Store

Easily export your products' data to shopping engines with Data Feed Manager for Magento 2

  • Display your products on any marketplace and make the most of your data feeds thanks to Data Feed Manager for Magento 2.

Efficiently export your products catalog to shopping engines

  • File formats — Export your products data into any data feed type: CSV, TSV, TXT, and XML
  • Product types — Include all product types to your data feeds: simple, configurable, bundle... and custom types.
  • Multi-stores — Create multi-currencies and multi-VAT-rates data feeds for each one of your Magento stores.

Create a data feed in compliance with any shopping engines requirements

  • Templates — Start configuring your data feed very quickly using one of the 19 sample templates.
  • Library — While configuring your data feed, find any attribute you're looking for in the attributes library.
  • Preview — Preview your data feeds from the black box and use the syntactic helper to avoid any misprints.

Completely customize your data feed according to your products catalog

  • Pattern — Configure your patterns by adding any Magento 2 attributes.
  • PHP API — Add PHP scripts into your patterns.
  • Category filter — Filter your products according to the product and/or parent categories.
  • Filters — Create filters based on the attribute sets, product types, and visibility.
  • Advanced Filters — Define more personalized filters using advanced filters.
  • AND/OR statements — Use OR/AND statements in your advanced filters.

Automatically and regularly send your updated data feed to shopping engines

  • Cron tasks — Schedule tasks to periodically generate your data feed.
  • FTP upload — Upload your data feeds via FTP and use the FTP testing tool.
  • Generation details — Make sure all is well thanks to the generation status and details.

Easily find the Google categories that correspond to yours

  • Category Mapping — Easily and rapidly map each one of your categories to Google ones.
  • Search As You Type — Facilitate your category mapping with the Search As You Type option.

Content

    How to use Data Feed Manager?

    STEP 1: Configure Data Feed Manager in a general way

    Before being able to configure your data feeds, you need to configure the extension in a general way. To do so, go to:
    Stores › Settings › Configuration › Wyomind › Data Feed Manager

    Cron job reporting

    In the Cron job reporting tab, you can activate the cron job reporting and fill in one or more email addresses to receive the reports. You have also the possibility to define a sender as well as to rename the reports as you want. 

    Core Settings

    In the Core Settings tab, you'll need to configure a certain number of fields.

    • Items in preview
      By default, there are 10 items in preview, if you want you can reduce or increase that number.
    • Items in buffer
      By default, products are inserted into the file on the server every 10 items but you can reduce or increase that number.
    • Items in SQL request
      By default, there are 1500 items in each MySql query.
    • Number of advanced filters
      By default, you have 10 advanced filters. If you need more, you can at any time increase that value.
    • Use of OR/AND statements in advanced filters
      OR/AND statements can be used in the advanced filters simply by enabling that option. 
    • Include not in menu categories
      You can also include the categories of products that are not in the menu. 
    • Memory limit size (M)
      The default memory limit is 1024.
    • Use canonical urls
      You have the choice between several options. You can choose to use the shortest category URL, the longest one, or the product URL.
    • Enable log reporting
      You can also enable the log reporting.
    • Allow trans-domain import/export
      Allow import and export options.
    • Include disabled products
      You can choose to include disabled products in the data feed.

    STEP 2: Configure your data feeds with Data Feed Manager

    To create and configure your data feeds, go to:
    Products › Data Feed Manager › Data Feeds

    Your data feeds will be listed according to IDs. For each data feed pattern, you will find the name of the file, its path as well as the link to the data feed file.

    The status of your data feed can be:

    • Pending: the data feed has never been generated or the scheduled hour is passed (waiting for the execution from the cron task)
    • Success: successful generation of the data feed, manually or automatically (the generation corresponds with a schedule)
    • Hold: in the process of generation (latency, indeterminate status)
    • Processing: generation progression percentage
    • Error: the generation is stopped

    In the grid, you should find the date and the hour of the last time the data feed has been generated as well as the store view for which it has been saved.

    From the Action dropdown, you'll be able to:

    • Edit
    • Generate
    • Preview (10 products)
    • Delete

    The Tool Box

    The Data Feed Manager extension includes a tool to help you create your feed and see what is wrong. When creating a data feed, you should see 2 buttons on the right of your screen.

    The toolbox is inevitably very useful. This will help you to configure your data feed more quickly.

    Below are the different options for the toolbox.

    Preview
    When clicking on Preview, you'll see a preview of your data feed. It's very useful to see if the values of your attributes are correctly retrieved and if your filters are working as expected.
    Library

    If you click on that button, a library of your store attributes will be displayed. This makes it easier to find very quickly which attribute you need to add to your pattern.

    Export and import your data feed templates

    Data Feed Manager also allows you to import and export patterns into and from your Magento 2 admin.

    Export

    To export a data feed pattern, edit an existing feed from:
    Products › Data Feed Manager › Data Feeds

    Once the data feed configuration page is loaded, you will be able to click on Export.

    A popup window opens and allows you to save the data feed pattern as a .dfm file (specific to Data Feed Manager). After that, you should find the data feed pattern in your Downloads folder.

    Import

    Before anything, to import a data feed pattern, it must be a .dfm file, which is specific to the Data Feed Manager extension.

     Click on Import a data feed from:

    Products › Data Feed Manager › Data Feeds

    Browse the .dfm file and click on Import data feed.

    The data feed pattern should have been added to the list of feeds.

    Configuration

    To create your own data feed, click on Create new data feed from:

    Products › Data Feed Manager › Data Feeds

    In that first tab is the main configuration of the data feed. To customize your data feed, you'll find several fields to fill in.

    • Name
      Enter a name for the file.
    • File Type
      Choose the format of your file between XML, CSV, TXT, and TSV.
    • File name format
      You have several format possibilities for your file name. 

      GoogleShopping-2015-01-26.xml

    • Encoding type
      Choose the encoding type of the data feed.
    • Path
      Define the path where you want the data feed to be generated. 

      /feeds/

    • Status
      Enable or disable the file.
    • Store View
      Define which store view is concerned.
      Note that you can also export the attributes default values.

    The configuration of the data feed will vary depending on the File Type you've chosen.

    XML FILES
    • Enclose xml tag content inside CDATA (recommended)
      Enclose XML tags inside CDATA or not.
    • Remove all empty xml tags (recommended)
      Remove empty XML tags or not.
    • Header pattern
      Add your header pattern in that field.
    • Product Pattern
      This is probably the most important field as this is where you will configure your pattern.
    • Footer pattern
      Here is the footer pattern.
    CSV, TXT, TSV FILES
    • Extra header
      It will add whatever you write on the top of your file (fit in with Amazon requirements).
    • Include header
      Allows you to include or not columns names in the first row of your file.
    • Columns name
      Is for the attribute name (you need to look in the shopping engine specifications to know which names are required).
    • Pattern
      Works in the same way as XML files. For example, {{product.url}} will return the product's URL. You can also add any static value.
    • Insert a new field
      Click on it to add a new column to your pattern. The fields order can be easily reordered by using the up and down arrows.
    • Extra footer
      You can add an extra footer in that field.
    • Fields delimiter
      Lets you choose which kind of delimiter you want to use to separate your fields.
    • Fields enclosure
      Lets you choose which kind of enclosure you want for your data.
    • Escape character
      Define the escape character between or ".

    Categories filter

    You can filter your categories according to two different ways:

    • Exclude all products from the selected categories.
    • Include all products from the selected categories.

    You also have different possibilities to filter your categories. You can include or exclude your categories depending on:

    • Parent categories only
      In the case where you have a configurable product with simple variants associated. The configurable has a category assigned but not the variants.
    • Product categories only
      If you have categories assigned to simple variants but not to the configurable product.
    • Product and parent categories
      In the case where you have both situations.

    Category selection and mapping

    In that subtab, you can select and map your categories to the ones of the marketplaces. This step is very important so that they can make a link between their product categories and yours.

    With Data Feed Manager, you have the possibility to change the file on which the category mapping is based.

    Taxonomy files for the main countries are directly included to allow you to map your categories more easily. You can also have a look at our documentation to know how to add a new taxonomy file and how to map your categories.

    What is a category mapping?

    Categories names you are using in your Magento 2 back-office aren't always the same than the ones used by the marketplaces to reference your products.

    This means you have to find out which categories have the best matching with yours, according to the their product taxonomy.

    For example, if you're selling furniture like coffee tables, you'll certainly have a Coffee table category in your Magento 2 back-office.

    But Google Merchant doesn't handle this kind of category. The closest Google product category would be Kitchen & Dining Room Table. So this should appear this way in your data feed:

    <g:google_product_category>Furniture > Desks & Tables > Kitchen & Dining Room Tables</g:google_product_category>
    How to map your categories with Data Feed Manager?

    Data Feed Manager provides you an easy way to input Google product categories matching yours.

    In your data feed configuration, go to the Categories tab. Then, in the Category selection and mapping section, you'll find a tree view of all your categories.

    For each category, you have a little arrow followed by mapped as.

    There, you'll be able to start typing a keyword in order to display a list of all categories including that keyword. You simply need to select the one you need.

    Once all your categories are mapped, you can click on the Save button.

    Here are a few guidelines for choosing the most appropriate category:

    • Use the category that best describes your item. To do this, first determine the primary function of the products you are submitting. For specific items like MP3 Players, select the MP3 Players category. While some MP3 players can also serve different functions, like those that contain a clock, they are primarily MP3 Players.
    • Use only one category. For some products, more than one category might be relevant. For example, an adapter to allow an MP3 player to be used in a car could be in both categories Motor Vehicles > Audio & Video and Electronics > Audio > Audio Accessories > MP3 Player Accessories. In such cases, choose the category that seems the most appropriate to you, but don't include more than one.
    • Use the most specific category possible. Being specific will help improve your data quality and in turn ensure that offers are presented in the right category. When viewing the taxonomy, try to navigate to the most specific category that still covers all the products being submitted. For instance, if you are submitting MP3 player chargers use the category MP3 Player Chargers. Conversely, if you are submitting multiple types of chargers use the category Chargers.
    How to include the category to the XML template?

    Finally, so that the category is retrieved in your data feed, you must add the following attribute to the XML template:

    <category>{{product.category_mapping}}</category>

    or for Google:

    <g:google_product_category>{{product.category_mapping}}</g:google_product_category>
    How to add a new taxonomy file in Data Feed Manager?

    The product taxonomy is a tree of categories that will help you generate values for your own categories.

    You can easily add a taxonomy file with Data Feed Manager.

    For Google Shopping, choose the language you want to use for your taxonomy at the bottom right of that page. Then, in the Downloadable taxonomy, open the Plain Text link that contains full category names.

    Save that file and paste it in:

    Magento 2 Root Directory › lib › Wyomind

    Don't forget to apply the permissions 644 to the file.

    You'll then be able to choose that specific taxonomy from your data feed configuration.

    Filters

    Data Feed Manager allows you to filter your products on several levels.

    Product Type

    First of all, you can choose to include products to your feed according to their type. For example, only include simple, virtual, and downloadable products.

    Attribute Set

    You have the choice to include products from one or several attribute sets.

    Product Visibility

    Then, choose the products that will be included in the feed between the products that are not visible individually, products from the Catalog, the Search results, or both.

    Advanced Filters

    In the Advanced filters, you can go further by setting more personalized filters.

    For example, we wanted to include only products which price is higher than 0, and which SKU is not null.

    Here again, you have the possibility to define advanced filters according to several options such as =, >, < or even more as shown below.

    • LIKE / NOT LIKE

    name like %shirt: will include all products which name ends with 'shirt'.
    name like Apple%: will include all products which name starts with 'Apple'.
    name like %women%: will include all products which name contains the 'women' character string
    name not like %shirt: won't include any product which name ends with 'shirt'.
    name not like Apple%: won't include any product which name starts with 'Apple'.
    name not like %women%: won't include any product which name contains the 'women' character string.

    • IS NULL / IS NOT NULL

    Special price is null: will include all products that don't have special prices.
    SKU is not null: will include all products which SKU is not null.

    • IN / NOT IN

    Size in S L: will include only products from these 2 sizes.
    Size not in S L: will include all products which size is not S or L.

    Cron schedule

    Data Feed Manager for Magento 2 provides you with a fully configurable schedule in the Cron Schedule tab of each data feed configuration.

    You simply have to tick the days and hours when you want your data feed to be generated.

    If you're facing some difficulties with scheduled tasks, or if you think your data feed is not automatically generated, have a look to our faq on that subject.

    FTP settings

    With Data Feed Manager for Magento 2, you can specify FTP settings to upload your data feeds. In the FTP settings tab of your data feed, you'll have several fields to configure:

    • Enable FTP upload
      Select Yes if you want to upload your data feed using FTP
    • Use SFTP
      Select Yes if you are using SFTP
    • Use Active mode
      If you are using SFTP, you don't have to care about the passive/active mode
    • Host
      In that field, fill in the host. 

      ftp.wyomind.com

    • Port
      Fill in the port.

      22

    • Login
      Is your login to connect to the server
    • Password
      Is your password to connect to the server
    • Destination directory
      Is a relative path from the entry directory when you connect to the FTP.  

      upload/
      or
      /

    In order to be sure your settings are correct, you can click on Test Connection.

    1. If you don't have an error message, it means the connection succeeded.
    2. If you have an error message, you'll certainly have to check your credentials.

    In the case where you don't get any error message while testing the connection, you'll need to check that the file is well uploaded.

    STEP 3: Generate and download the data feeds

    Generate the data feeds

    With Data Feed Manager, you have the possibility to generate your data feed manually or automatically. 

    Manually

    You can generate your data feeds manually in the grid from the action dropdown.

    You can also do it from the configuration panel by clicking on Generate.

    With the cron tasks
    In order to automatically generate the data feeds through the cron tasks, you must first make sure that the main cron task is enabled on your server.
    Data Feed Manager - Cron Success

    If not, you should see a warning message in Data Feed Manager.

    You must have selected a least one day and one-time frame from the Scheduled tasks tab of each data feed that must be updated.

    With the command lines
    You can also use the Command Line Interface to generate the data feeds.


    To generate all the data feeds:

    bin/magento wyomind:datafeedmanager:generate


    To generate one data feed from a given id:

    bin/magento wyomind:datafeedmanager:generate int DATA_FEED_ID


    To generate several data feeds from a given list of ids:

    bin/magento wyomind:datafeedmanager:generate  int DATA_FEED_ID [, int DATA_FEED_ID] [, int DATA_FEED_ID]...


    To list all data feeds including status, name, last update:

    bin/magento wyomind:datafeedmanager:list

    Download the data feeds

    When a data feed is ready to be downloaded, the link is displayed in both, the data feed grid and the data feed page at the top of the page. To download the data feed, right-click on the link and select Save link as. You can also find the file in your ftp client if the directory where the data feed is stored is not publicly accessible.

    Manage your data feed templates with Data Feed Manager

    10 Things to know when creating an XML data feed with Data Feed Manager

    All the XML data feeds used by shopping engines, like the one used by Google Shopping, are really simple to build but often have their own specifications.

    Simple Google Shopping and Data Feed Manager for Magento 2 provide one or more ready-to-configure patterns. These patterns will allow you to quickly build a valid and well-structured data feed.

    1. An XML data feed is using opening and closing tags that include a value.
      <tag>value</tag>​
    2. A data feed template is made up of several tags that include dynamic or fixed values.
      <g:id>{{product.sku}}</g:id><g:brand>YOUR BRAND</g:brand>
    3. Dynamic values are called variables and use the attribute codes of your Magento website preceded with the object. The variable must be enclosed using double brackets as {{object.attribute}}.
      <g:id>{{product.sku}}</g:id><price>{{parent.price}}</price>
    4. Between every opening and closing tags, you can also include some fixed values. Fixed values are simply text.
      <g:brand>YOUR BRAND</g:brand>
    5. You have also the possibility to add several variables and fixed values in the same tag.
      <title>{{parent.name}}, available in {{product.color}} for only ${{product.price}}</title>
    6. Some Magento 2 attributes like price, image or url may have further configuration options or parameters that will correspond to your specific data feed needs. For example:
      <price>{{product.price currency=EUR vat_rate=20}}</price>​
    7. You're allowed to use PHP code if you want to customize the pattern. For example, to retrieve the name of a product in lower cases:
      <tag>{{product.name output="wyomind_strtolower($self)"}}</tag>
    8. The syntactic coloration in Data Feed Manager will also help you to avoid many errors in your pattern as in the example below.

    9. You can use one or more fallback variables in case of the previous is empty or null. If attributeA exists then the value will be attributeA, otherwise, the value will be attributeB, etc...
      {{product.color | product.colour}}​
    10. CDATA is recommended. CDATA stands for Character Data. It means that the data in between these tags include data that could be interpreted as XML markup, but should not be. (Wikipedia article)
      <description><![CDATA[<p>Fantastic <b>Watch</b>, that not only tells you what time it is,but also gives the weather trends</p>]]></description>​

    10 Things to know when creating a CSV/TXT data feed with Data Feed Manager

    Data Feed Manager allows you to generate CSV/TXT files in addition to XML files. This particular file format can be used for some shopping engines like Amazon, Shopzilla, Twenga, etc.

    Data Feed Manager for Magento 2 provides you all you need to create any specific CSV/TXT file that you want. 

    Each shopping engine has its own requirements and column names. Some require fields enclosure, others need specific delimiters.

    You may need to add a special header to your file (for Amazon data feeds for example).

    1. A CSV file consists of any number of records. Each record consists of fields that are separated by other characters or strings. There is one row per record (so, one per product). Below is an example of CSV file content:
    2. You need to define delimiters to separate your fields ( ';' ',' '|' ' ab' or '[|]' for example) and enclosures for your data (" or ').

    3. You can enter the attribute names in each Column name fields (check the shopping engine specifications to know which names are required). For example:
    4. You can include in each Pattern field one or several Magento 2 attributes. An attribute is specified by its attribute code and must be enclosed using double brackets and preceded by an object. For example, to return the product SKU, you should use:
      {{product.sku}}
    5. You can also include some fixed values. Fixed values are simply text. For example, instead of {{product.manufacturer}} to retrieve the brand for each product, you could use directly:
      YOUR BRAND
    6. You have also the possibility to add several attributes and fixed values in the same field. For example, instead of {{product.url}}, you could use:
      {{product.url}}?_campaign=google&_adwords=test123
    7. You can use one or more fallback variables in case of the previous is empty or null. If attributeA exists then the value will be attributeA, otherwise, the value will be attributeB, etc...
      {{product.color | product.colour}}​
    8. You're allowed to use PHP code if you want to customize the pattern. You just have to write your PHP code in one single line, and it will work perfectly (check how to add PHP scripts into your patterns).
      {{product.name output="wyomind_strtolower($self)"}}
    9. You can add a field by using the button Insert a new field. The fields order can be easily reordered by using the up and down arrows.
    10. You can Preview your data feed to avoid any error in your pattern.

    How is a variable structured?

    To modify your pattern as you want, before anything you need to respect a particular syntax. Indeed, in order to retrieve attributes, the Data Feed Manager extension uses a specific structure. Then it is essential that you know how the variable is built to be able to configure your data feed according to your needs.

    The above screen details the different components of a variable.

    • object
      Defines what is the target for the attribute to retrieve. It can be a simple product, a parent, configurable, bundle, or grouped one.  
    • attribute
      Defines the code of the attribute to retrieve. For example, the price, the URL...
    • parameters
      Defines some additional parameters for specific attributes such as the currency or the VAT rate.
    • value
      Defines the different values available for the previous parameter.

    Attribute specifications

    The data feed pattern is totally customizable.

    OBJECTS

    In order to retrieve the value of an attribute, you need to define which object is targeted. Below are the different types of objects that you can use.

    {{product.attribute_code}}

    Retrieves the attribute for the product.

    For example:

    {{product.sku}}
    {{product.color}}
    {{parent.attribute_code}}

    Retrieves the parent attribute value.

    The parent value is retrieved only if the simple (item) product is associated with a parent product, if not, nothing is retrieved.

    The parent product may be a configurable, a grouped, or a bundle product. The first parent product that matches the simple product is used to get the attribute value.

    For example:

    {{parent.product_type}}
    {{parent.brand}}
    {{configurable.attribute_code}}

    Retrieves the first configurable parent attribute value.

    The configurable product value is retrieved only if the simple product is associated with a configurable product, if not, nothing is retrieved.

    For example:

    {{configurable.image_link}}
    {{configurable.url}}
    {{grouped.attribute_code}}

    Retrieves the first grouped parent attribute value.

    The grouped product value is retrieved only if the simple product is associated with a grouped product, if not, nothing is retrieved.

    For example:

    {{grouped.google_product_category}}
    {{grouped.url}}
    {{bundle.attribute_code}}

    Retrieves the first bundle parent attribute value.

    The bundle product value is retrieved only if the simple product is associated with a bundle product, if not, nothing is retrieved.

    For example:

    {{bundle.sale_price}}
    {{bundle.price}}

    PRODUCT IDENTIFIERS

    You'll find below the attributes the most commonly used to identify the products in data feeds patterns.

    {{object.id}}

    Retrieves the id of the product.

    For example:

    {{product.id}}
    {{object.sku}}

    Retrieves the sku of the product.

    For example:

    {{product.sku}}
    {{object.brand}}

    Retrieves the brand of the product.

    For example:

    {{product.brand}}
    Attention, this attribute is an example and can differ according to the configuration of your Magento 2 store.
    {{object.manufacturer}}

    Retrieves the brand of the product.

    For example:

    {{product.manufacturer}}

    BASIC INFORMATION

    You'll find below the attributes that are generally used to define basic information of products in the data feeds.

    {{object.inc}}

    Retrieves an auto-incremented value, starting at 1.

    For example:

    {{product.inc}}
    {{object.name}}

    Retrieves the name of the product.

    For example:

    {{product.name}}
    {{object.description}}

    Retrieves the description of the product.

    For example:

    {{product.description}}
    {{object.short_description}}

    Retrieves the short description of the product.

    For example:

    {{product.short_description}}
    {{object.condition}}

    Retrieves the condition of the product.

    For example:

    {{product.condition}}
    {{object.weight}}

    Retrieves the weight of the product.

    For example:

    {{product.weight}}
    {{object.type_id}}

    Retrieves the type of the product.

    For example:

    {{product.type_id}}
    {{object.children}}

    Retrieves the children of the product.

    For example:

    {{product.children}}

    You also have the possibility to use some parameters with this attribute:

    • separator = can be comma, pipe or semi-colon (by default: comma)
    • identifier = can be SKU or id (by default: SKU)

    For example:

    {{product.children separator="pipe" identifier="id"}}

    PRICES AND PROMOTIONS

    Below is a list of the price attributes that you can use in your feed pattern. For most of them, you can add some parameters in order to define the currency used or the VAT to apply for example.

    {{object.price}}

    Retrieves the best price among all the prices defined.

    If prices are exclusive of VAT and the product is liable to a unique VAT rate, the price retrieved will include this rate. Otherwise, the price exclusive of tax is retrieved.

    For example:

    {{product.price}}

    You also have the possibility to use some parameters with this attribute:

    • currency = automatically converts the original product price to a specified currency. It uses an exchange rate that you have already stored in your admin panel. By default, your local currency is used.
    • vat_rate = is a floating value between 0.00 and 100.00 that represents an arbitrary VAT rate to apply. This parameter rewrites the VAT rule for the product except if the product doesn't have any tax class.

    Here are some examples:

    To convert the prices to EUR and apply a 20% VAT rate:

    {{product.price currency=EUR vat_rate=20}}

    To convert the prices to USD and not apply any VAT rate:

    {{product.price currency=USD vat_rate=0}}

    If the prices of your catalog are already including VAT:

    {{product.price currency=USD}}

    To use an ISO2 code corresponding to one of the countries for which you specified a VAT rate in your tax settings:

    {{product.price currency=EUR vat_rate=FR}}

    This code may also be completed by an area code:

    {{product.price currency=USD vat_rate=US/NY}}

    To deduce the VAT corresponding to a country/area:

    {{product.price currency=GBP vat_rate=-GB}}

    To retrieve prices including different price values for simple products associated to a configurable one:

    {{parent.price currency=EUR vat_rate=20}}
    {{object.normal_price}}

    Retrieves the base price and ignores any other existing price value.

    For example:

    {{product.normal_price}}
    {{object.base_price}}

    Retrieves the base price as defined in the database in the price index table.

    For example:

    {{product.base_price}}
    {{object.special_price}}

    Retrieves the special price if exists. If this price doesn't exist the value is null.

    For example:

    {{product.special_price}}
    {{object.price_rules}}

    Retrieves the price including the catalog price rules if indicated, if not, nothing is retrieved.

    If prices are exclusive of VAT and the product is liable to a unique VAT rate, the price retrieved will include this rate. Otherwise, the price exclusive of tax is retrieved.

    For example:

    {{product.price_rules}}
    {{object.sale_price}}

    Retrieves the best promotional between price rules and special prices).

    For example:

    {{product.sale_price}}
    {{object.sale_price_effective_date}}

    Retrieves the sale price effective date as 2011-03-01T13:00-0800/2011-03-11T15:30-0800. If no date is defined or if the dates defined don't match with the current date, the value is null.

    For example:

    {{product.sale_price_effective_date}}
    {{object.has_special_price}}

    Retrieves either 1 if a special price exists or 0 if not.

    You also have the possibility to use some parameters with this attribute:

    • yes = value to retrieve if a special price exists. By default 1.
    • no = value to retrieve if no special price exists. By default 0.

    For example:

    {{product.has_special_price yes="Special price" no="No special price"}}
    {{object.has_sale_price}}

    Retrieves either 1 if a promotional price exists or 0 if not.

    You also have the possibility to use some parameters with this attribute:

    • yes = value to retrieve if a promotional price exists. By default 1.
    • no = value to retrieve if no promotional price exists. By default 0.

    For example:

    {{product.has_sale_price yes="Sale price" no="No sale price"}}
    {{object.tier_price}}

    Retrieves the tier price if exists. If this price doesn't exist the value is null.

    For example:

    {{product.tier_price}}

    You also have the possibility to use some parameters with this attribute:

    • customer_group_id =  id of the customer group for which the tier price is valid (Check in Stores › Other Settings › Customer Groups).
    • index = index of the Tier Price you want to retrieve.
    • vat_rate = is a floating value between 0.00 and 100.00 that represents an arbitrary VAT rate to apply. This parameter rewrites the VAT rule for the product except if the product doesn't have any tax class.
    • currency = automatically converts the original product price to a specified currency. It uses an exchange rate that you have already stored in your admin panel. By default, your local currency is used.

    For example:

    {{product.tier_price customer_group_id="1" index="1" vat_rate="DE" currency="EUR"}}
    {{object.tier_price_qty}}

    Retrieves the quantity defined for the tier price if exists. Otherwise, the value is null.

    For example:

    {{product.tier_price_qty}}

    You also have the possibility to use some parameters with this attribute:

    • customer_group_id =  id of the customer group for which the tier price is valid (Check in Stores › Other Settings › Customer Groups).
    • index = index of the Tier Price you want to retrieve.
    • vat_rate = is a floating value between 0.00 and 100.00 that represents an arbitrary VAT rate to apply. This parameter rewrites the VAT rule for the product except if the product doesn't have any tax class.
    • currency = automatically converts the original product price to a specified currency. It uses an exchange rate that you have already stored in your admin panel. By default, your local currency is used.

    For example:

    {{product.tier_price_qty customer_group_id="2" index="1" vat_rate="FR" currency="EUR"}}
    {{object.min_price}}

    Retrieves the minimum price.

    This attribute is used for configurable, bundle, or grouped products.

    If prices are exclusive of VAT and the product is liable to a unique VAT rate, the price retrieved will include this rate. Otherwise, the price exclusive of tax is retrieved.

    For example:

    {{product.min_price}}
    {{object.max_price}}

    Retrieves the maximum price.

    This attribute is used for configurable, bundle or grouped products.

    If prices are exclusive of VAT and the product is liable to a unique VAT rate, the price retrieved will include this rate. Otherwise, the price exclusive of tax is retrieved.

    For example:

    {{product.max_price}}
    {{object.promotion_id}}

    Retrieves the product promotion id if it exists and if the Google Merchant Promotions extension is installed.

    For example:

    {{product.promotion_id}}
    {{object.catalog_rule_id}}

    Retrieves the first catalog price rule id applied to the product if it exists

    For example:

    {{product.catalog_rule_id}}
    {{object.tax_class}}

    Retrieves the product tax class if it exists.

    For example:

    {{product.tax_class}}

    Below are listed the attributes that are generally used to retrieve any kind of link.

    {{product.url_config}}

    Retrieves URL to pre-select the simple product attributes from its configurable.

    You also have the possibility to use some parameters with this attribute:

    • currency=XXX =  This will add ?currency=XXX to the generated URL.
      The access to the generated URL will switch the product page to the corresponding currency

    For example:

    {{product.url_config currency=USD}}

    This will generate:

    https://www.yourstore.com/chaz-kangeroo-hoodie.html?currency=USD#142=5594&93=5476

    {{object.url}}

    Retrieves the product’s canonical absolute URL.

    You also have the possibility to use a parameter with this attribute:

    • currency=XXX =  This will add ?currency=XXX to the generated URL.
      The access to the generated URL will switch the product page to the corresponding currency

    For example:

    {{product.url currency=EUR}}

    This will generate:

    https://www.yourstore.com/joust-duffle-bag.html?currency=EUR

    Retrieves the product’s main image.

    You also have the possibility to use some parameters with this attribute:

    • index = index of any additional images to retrieve. It can be positive or negative.
      By default 0 (the main image).
    • role = role of the image to retrieve. Also works with the roles configured by the admin.

    For example:

    To retrieve the second image, use: 

    {{product.image_link index=2}}

    To retrieve the last image, use: 

    {{product.image_link index=-1}}

    To retrieve the second to last image, use: 

    {{product.image_link index=-2}}

    To retrieve the thumbnail image, use:

    {{product.image_link role="thumbnail"}}
    {{object.host}}

    Retrieves the host URL, for example: https://www.website.com

    Example with the small_image attribute:

    {{product.host}}/media/catalog/{{product.small_image}}
    {{object.uri}} or {{object.url_key}}

    Retrieves the product canonical relative url.

    For example:

    https://www.mywebsite.com/mystore_code/{{product.uri}}

    CATEGORIES

    To retrieve the categories of your products, you can check the below attributes.

    {{object.categories}}

    Display the category paths in which the product may be found.

    All category paths are listed under the categories attribute from the shortest to the longest path as in the below example:

    1. Default Category
    2. Default Category › Sales
    3. Default Category › Clothes
    4. Default Category › Clothes › Men
    5. Default Category › Clothes › Men › Pants
    6. Default Category › Sales › Spring and Summer Sales


    In order to display a specific category path you have the possibility to use some parameters with this attribute:

    • nth: display the nth category path, if not specified the 1st category is used by default. Negative values are allowed.
    • from: display a category path starting from the nth category level, if not specified the 1st category level is used by default. Negative values are allowed.
    • length: display a category path limited to the given number of category levels, if not specified the whole path is displayed by default.
    • separator: the character used to separate each category level.
    • url: replace the categories names by their URLs

    For example:

    {{product.categories nth="1"}}

    Shows the first category Default Category
      

    {{product.categories nth="-1"}}

    Shows the last category path: Default Category › Sales › Spring and Summer Sales
      

    {{product.categories nth="3" separator="-"}}

    Shows the 3th category path and change the category levels separator to "-":  DEFAULT CATEGORY - CLOTHES
      

    {{product.categories nth="-2"}}

    Shows the before last category path: Default CategorY › Clothes › Men › Pants
      

    {{product.categories nth="-2" from="2"}}

    Shows the before last category path from the 2nd category level: Clothes › Men › Pants
     

    {{product.categories nth="-1" from="-1"}}

    Shows the last category path from the last category level: Spring and Summer Sales
      

    {{product.categories nth="-2" from="2" length="1"}}

    Shows the before last category path from the 2nd category level with only one category level: Clothes 
      

    <?php /* {{product.categories_url}} */ ?> {{product.categories url=1 nth="-2" from="2"}}

    Shows the before last category path from the 2nd category level by replacing the names of the categories by their URLs:

    https://www.yourstore.com/clothes.html > https://www.yourstore.com/clothes/men.html > https://www.yourstore.com/clothes/men/pants.html

    {{object.category_mapping}}

    Retrieves any new category that you have assigned (in the Categories tab) to the item’s own product category. If no mapping is assigned to the first category found, the second category will be used etc…

    You also have the possibility to use some parameters with this attribute:

    • index = index of the category mapping

    For example:

    {{product.category_mapping index=0}}{{product.category_mapping index=1}}{{product.category_mapping index=2}}{{product.category_mapping index=3}}{{product.category_mapping index=4}}

    Will retrieve a maximum of 5 category mappings in 5 separate tags.

    {{object.google_product_category}}

    Retrieves the Google category that you have assigned (in the Categories section) to the first category found for the product (index 0).

    For example:

    {{product.google_product_category}}
    To find the Google categories that match with your categories: https://support.google.com/merchants/answer/160081?hl=en
    {{object.attribute_set}}

    Retrieves the attribute set of the product.

    For example:

    {{product.attribute_set}}

    AVAILABILITY AND INVENTORY

    {{object.status}}

    Retrieves either 1 if the product is enabled or 2 if the product is disabled.

    For example:

    {{product.status}}
    {{object.qty}}

    Retrieves the available quantity.

    The quantity retrieved for configurable products is based on the sum of simple products.

    You also have the possibility to use some parameters with this attribute:

    • float = is the number of decimals.
    • stock_id = id of the stock for which you want to retrieve the quantity.
      The sum of the quantities of the sources associated with the stock is retrieved (Magento Multi Stock Inventory module).

      By default, the value of the default stock is retrieved.

    • source_code = code of the source for which you want to retrieve the available quantity.
      By default, the value of the default source is retrieved.

    For example:

    {{product.qty float=1 stock_id="1"}}
    {{product.qty float=2 source_code="store_1"}}
    {{object.availability}}

    Retrieves either "in stock" if the product is in stock, "out of stock" if the product is out of stock, or "available for order" if the product is backordered.

    You also have the possibility to use some parameters with this attribute:

    • in_stock = value to retrieve if the product is in stock.
    • out_of_stock = value to retrieve if the product is out of stock.
    • backorderable = value to retrieve if the product is backorderable.
    • stock_id = id of the stock for which you want to retrieve the availability (Magento Multi Stock Inventory module).
      By default, the value of the default stock is retrieved.
    • source_code = code of the source for which you want to retrieve the availability.
      By default, the value of the default source is retrieved.

    For example:

    {{product.availability stock_id="2" in_stock="Currently in stock" out_of_stock="Out of stock" backorderable="Available for order"}}
    {{product.availability source_code="store_1" in_stock="In Stock" out_of_stock="No more Stock" backorderable="Can be ordered"}}
    {{object.is_in_stock}}

    Retrieves the stock status "in stock" or "out of stock".

    You also have the possibility to use a parameter with this attribute:

    • stock_id = id of the stock for which you want to retrieve the status (Magento Multi Stock Inventory module).
      By default, the value of the default stock is retrieved.
    • source_code = code of the source for which you want to retrieve the status.
      By default, the value of the default source is retrieved.

    For example:

    {{product.is_in_stock stock_id="1"}}
    {{product.is_in_stock source_code="store_1"}}

    REVIEWS

    You can also retrieve information on your products reviews using the following attributes.

    {{object.review_count}}

    Retrieves the number of reviews for the product.

    You also have the possibility to use some parameters with this attribute:

    • store_id = id of the store view

    For example:

    {{product.review_count store_id=1}}
    {{object.review_average}}

    Retrieves the average score of all the product's reviews.

    You also have the possibility to use some parameters with this attribute:

    • store_id = id of the store view
    • score_base = base ratings

    For example:

    {{product.review_average store_id=1 score_base=5}}

    PRODUCT VARIANTS

    In the case where you're using product variations (color, size, or gender) then you can use the following attributes. Attention, these attributes are examples and can differ according to the configuration of your Magento 2 store.

    {{object.relation_ship}}

    Retrieves all the attribute names for which the configurable product has simple ones defined.

    For example:

    {{product.relation_ship}}
    {{object.gender}}

    Retrieves the gender of the product.

    For example:

    {{product.gender}}
    {{object.age_group}}

    Retrieves the age group of the product.

    For example:

    {{product.age_group}}
    {{object.color}}

    Retrieves the color of the product.

    For example:

    {{product.color}}
    {{object.size}}

    Retrieves the size of the product.

    For example:

    {{product.size}}
    {{object.material}}

    Retrieves the material of the product.

    For example:

    {{product.material}}
    {{object.pattern}}

    Retrieves the pattern of the product.

    For example:

    {{product.pattern}}

    GENERAL PARAMETERS

    Below are listed all the parameters that you can use with any attribute in your data feeds.

    {{object.attribute prefix="value"}}

    The prefix is what will be displayed before the attribute value only if it is not null, otherwise, nothing is retrieved.

    Below are some examples:

    To add the currency symbol before the price and not retrieve anything when the value of the attribute is null:

    {{product.price currency=USD vat_rate=0 prefix="$"}}

    To add the weight unit before the attribute value and not retrieve anything when that value is null:

    {{product.weight prefix="LBS "}}
    {{object.attribute suffix="value"}}

    The suffix is what will be displayed after the attribute value only if it is not null, otherwise, nothing is retrieved.

    Below are some examples:

    To add the currency code after the price and not retrieve anything when the value of the attribute is null:

    {{product.price currency=USD vat_rate=0 suffix=" USD"}}

    To add the weight unit after the attribute value and not retrieve anything when that value is null:

    {{product.weight suffix=" LBS"}}
    {{object.attribute as="myVariable"}}

    The as parameter allows you to store the value of a given attribute into a variable for a later use in one of your PHP script or in a condition (see if parameter).
    Notice, the attribute call even if it uses the as parameter will produce an output in the data feed expect if you add the output attribute with the value null (see output parameter)


    Here are a few examples:

    Display the product name and store the value in a variable $name:

    <!-- Product name is displayed and stored under a new variable "name" --><name>{{product.name as="name"}}</name>

    $name can be then used in a PHP script latter in the template

    <?php /* If variable $name is equal to "Apple", then display "Apple" then display "Banana"*/if($name=="Apple") return $name;else return "Banana";?>

    Store the visibility of a product and use it in a condition for another attribute

    <!-- Product visibility is stored under a new variable "visibility" and the attribute doesn't display -->{{product.visibility as="visibility" output="null"}}<!-- If the product is not visible individually (1) then we display the parent product url, otherwise we use the product url--><url>{{parent.url if="visibility==1" | product.url}}</url>
    {{object.attribute if="condition"}}

    The if parameter allows you to define one or more necessary conditions to display the given attribute in the data feed.

    One condition is built with 3 items :

    • the variable to check :
      a product attribute
      a variable previously stores thanks to the as parameter (see as parameter)
    • the comparison statement
      == equal
      <= lower or equal to
      => hieght or equal to
      < lower than
      > higher than
      != different from
    • the value

    Example:

    <!-- Product description will be displayed only if product brand is equal to "Apple" --><name>{{product.description if="product.brand==Apple"}}</name>
    <!-- Product weight will be displayed only if the product is not virtual AND not downloadable--><weight>{{product.weight if="product.type_id!=virtual" if="product.type_id!=downlodable"}}</weight>
    {{object.attribute output="functions"}}

    You can use the basic functions (see basic functions), the advanced functions (see advanced functions) or any php functions.

    You must refer to the attribute by using the $self variable as the function's parameter.

    Example :

    <!-- Get the product name with the first letter of each word in uppercase --><name>{{product.name output="ucwords($self)"}}</name>

    If you want to use several functions, those must be imbricated as you do for with PHP:

    Example :

    <!-- Remove all html tags from the description and limit the description to the first 100 characters --><name>{{product.description output="substr(strip_tags($self),100"}}</name>

    You can also use null to display an empty string or you can use any string to display a specific message:

    Example :

    <!-- If product price is lower than $10 then display "Free Shipping"--><shipping_cost>{{product.price if="product.price<10" output="'Free Shipping'"}}</shipping_cost>
    The output parameter allows you to define the output format for a given attribute.
    {{object.attribute php="functions"}}

    The php parameter acts exactly as the output parameter.

    BASIC FUNCTIONS

    You can use any of the native php functions as well as all of the following ones with the default attributes that are defined in your Magento 2 back-office and also any attribute you have defined for your products (eg: name, description, short_description, weight, size, color…) apart from those which generate XML.

    The syntax to use in order to include php functions in the variables is:

    {{object.attribute output="function(parameters)"}}

    You can also apply one or more functions to all of these attributes by using the following syntax:

    {{object.attribute output="function1(function2(function3($self,parameters)))"}}

    All options are executed in the written order:

    <title>{{product.name}}</title><title>{{product.name output="wyomind_strtoupper($self)"}}</title><title>{{product.name output="wyomind_strtoupper(wyomind_substr($self,20,'...'))"}}</title>

    This will produce:

    <title>Affirm Water Bottle</title><title>AFFIRM WATER BOTTLE</title><title>AFFIRM WATER...</title>
    float($self,$decimal)

    Converts a numeric value to a floating number.

    You need to define some parameters:

    • decimal = number of floating number. By default: 0

    For example:

    <g:shipping_weight> {{product.weight output="float($self,2)"}}kg </g:shipping_weight>
    cleaner($self)

    Removes all characters that don't belong to the UTF-8 charset.

    For example:

    <g:title> {{product.name output="cleaner($self)"}} </g:title>
    inline($self)

    Removes all EOL characters from the value.

    For example:

    <description> {{product.description output="inline($self)"}} </description>

    IMPROVED FUNCTIONS

    The improved functions are used in the same way as the basic php functions but offer more possibilities. They are a rewrite of the native php functions but have been improved for a specific use of the Data Feed Manager extension.

    wyomind_strtoupper($self)

    Transforms the value to uppercase.

    For example:

    <g:title>{{product.name output="wyomind_strtoupper($self)"}}</g:title>
    wyomind_strtolower($self)

    Transforms the value to lowercase.

    For example:

    <tag>{{product.name output="wyomind_strtolower($self)"}}</tag>
    wyomind_implode($separator,$self)

    Joins all array elements in a string.

    You need to define some parameters:

    • separator = string used between each value. By default: ,

    This function may be useful for multi-select attributes like climate, activity general...

    For example:

    <activity> {{product.activity_general output="wyomind_implode('-',$self)"}} </activity>

    Will give:

    Outdoor-Running-Warmup-Lounge-Gym

    wyomind_html_entity_decode($self)

    Converts all HTML entities to their applicable characters.

    For example:

    <description> {{product.description output="wyomind_html_entity_decode($self)"}} </description>
    wyomind_strip_tags($self)

    Removes all HTML tags.

    For example:

    <description> {{product.description output="wyomind_strip_tags($self)"}} </description>
    wyomind_htmlentities($self)

    Converts all applicable characters to HTML entities.

    For example:

    <description> {{product.description output="wyomind_htmlentities($self)"}} </description>
    wyomind_substr($self,$length,$end)

    Truncates the value.

    You need to define some parameters:

    • length = maximum length of the value
    • end = string that will be added at the end of the string. By default: ...

    For example:

    <description> {{product.description output="wyomind_substr($self,50,'...')"}} </description>

    If there are HTML tags in your descriptions, you may need to use in combination with this function:

    <description> {{product.description output="wyomind_strip_tags(wyomind_substr($self,50,'...'))"}} </description>

    API PHP for Data Feed Manager

    With Data Feed Manager you can use PHP scripts in different ways to fully customize and control the data feed output.

    • Inline PHP scripts 
      Scripts that are added directly to the data feed template surrounded by PHP tags (<?php ... ?>) 
    • Custom attributes
      Scripts that can be called by using the custom attribute name just like you do for any attribute in your data feed template.
    • Custom functions
      Functions that can be called by using the function name and additional parameters and that can be applied to any attribute in your data feed template.

    API coding standards

    The Data Feed Manager PHP API uses the exact same syntax and standards as any PHP coding.

    Attribute calls

    For performance reasons, Data Feed Manager only loads in the collection of products the attributes that are explicitly required in the data feed template.
    This means that only the attributes that are called using the template placeholders, {{scope.attribute_code}}, will be added to the collection of products.

    As a consequence, when you try to access the value of an attribute from the $product object, you must be sure that the attribute has been added to the collection.
    Most of the time when the returned value is null for a given attribute, it means the attribute is not loaded in the collection of products.

    The best way to be sure that all the attributes you need are well loaded in the collection, is to add at the beginning of your template a simple script that lists all the attributes required.

    <?php /* list of required attributes * {{product.attribute_1}} {{product.attribute_2}} {{product.attribute_3}} {{product.attribute_4}}...*/?>

    Then you should be able to get the values of these attributes in your PHP script:

    <?php return $product->getAttribute1();?><?php return $product->getAttribute2();?><?php return $product->getAttribute3();?>....
    PHP functions in attribute calls

    You can use any PHP function to apply in the attribute calls even if the function requires one or more additional arguments, for instance:

    {{product.name output="str_replace('Apple','Banana',$self)"}}

    You can use several consecutive functions:

    {{product.ean output="str_pad(str_replace('X','0',$self),10,'0',STR_PAD_LEFT)"}}
    Conditional values

    To output values based on different conditions, use PHP conditional statements:

    • if/else
      <?php/* attribute {{product.sku}} required */if ($product->getSku()=="abc"){return "Alphabetic";}elseif($product->getSku()=="123"){return "Numeric";}else{return "Mixed";}?>
    • switch/case
      <?php/* attribute {{product.sku}} required */switch($product->getSku()){case "abc":return "Alphabetic";break;case "123":return "Numeric";break;default:return "Mixed";}?>
    Opening and closing tags

    When using the PHP API inline directly in your data feed template, you must use the opening and closing PHP tags (<? php ... ?>)

    <?php if($product->getData('size')=="X-Large") {return "XL";}?>
    Outputting a value

    Return
    Any value that you want to output in your data feed, must be returned with the return instruction.

    <?php return "Don't miss! ".$product->getTitle();?>/* This script adds for each product in data feed  a new output line *  Don't miss! Iphone 5*  Don't miss! Galaxy note 7*  ... */
    Variables scope

    All variables available in PHP scripts have a local scope, this means they can't be shared between several scripts.

    If you wish to share a variable with different scripts all along the data feed generation process, then the variable must be set as a global variable.

    <?php global $increment;$increment++;return $increment;/* This script will output a incremental $variable* 1* 2* 3* ...*/?>

    API Objects, Variables and Methods

    Object $product

    $product is an instance of Mage_Catalog_Model_Product. It contains all methods available by default and some other specific to Data Feed Manager.

    The list below includes the main methods available to use:

    • $product->getCategoriesArray()
      Retrieves an array of arrays that describes the categories to which belongs the products
    • $product->getCategoryIds()
      Lists all category ids in which the product may be found
    • $product->getVisibility()
      Returns the visibility of the product (1 = not visible individually, 2 = catalog, 3 = search, 4 = catalog and search)
    • $product->getStatus()
      Returns the status of the product (1 = enabled, 2 = disabled)
    • $product->getData($attributeCode)
      Returns the value of the given attribute code
    • $product->getAttributeText($attributeCode)
      Returns the textual value of the given attribute code
    Object $this

    $this is an instance of Wyomind_datafeedmanager_Model_Feed.

    It provides a few useful methods: 

    • $this->hasParent($product, $type="parent")
      Returns a Boolean value whether a product has a parent from the give type (parent, configurable, grouped, bundle) or not
    • $this->getParent($product, $type="parent", $strict=false)
      Returns a product object of the given parent type (parent, configurable, grouped, bundle) if available or the product object passed as 1st parameter when $strict parameter is set on false. 
    • $this->skip()
      Skips the current product, useful to filter out some products based on specific condition
    String | Integer | Boolean | Array in variable $self

    $self is the value of the attribute for the current product.

    This variable is only available for custom attributes and functions.

    Custom variables use

    Data Feed Manager allows you to create your own variables and to add them to your data feed.

    Create a custom variable

    To create custom variables from your Magento admin, go to :
    products › Data Feed Manager › Custom variables

    Some templates of use are loaded by default when installing the extension.

    Here is how to proceed:

    1. Create a new variable by clicking on "add new".
    2. Enter the name of your new custom variable and add a comment and PHP script.
    3. Add the new custom variable into your data feed template, in:
      Products › Data Feed Manager › Data Feeds
    An example of custom variables

    Replace some words in the product description:

    <?php
        $search=array('Nokia','BlackBerry','apple');
        $replace=array("NOKIA","BLACKBERRY","APPLE");
        return str_ireplace($search,$replace,$product->getDescription());
    ?>

    Create a thumbnail of the product image:

    <?php
        $objectManager = MagentoFrameworkAppObjectManager::getInstance();
        $_imagehelper = $objectManager->get('MagentoCatalogHelperImage');
        return $_imagehelper->init($product, 'image',['type'=>'image'])->resize(200,200)->getUrl();
    ?>

    Filter out the product that matches a condition:

    <?php
        if(strlen($product->getUpc())>=12)
            return $product->getUpc();
        elseif ($product->getMpn())
            return $product->getMpn();
        else
            $this->skip();
    ?>

    Calculate the sum of all quantity available for the configurable product:

    <?php
        $objectManager = MagentoFrameworkAppObjectManager::getInstance();
        $childProducts = $product$product->getTypeInstance()->getUsedProducts($product);
        $stock_count=0;foreach($childProducts as $child) {
            $stockItem=$objectManager->get('MagentoCatalogInventoryModelStockItem');
            $stock_count+=(int)$stockItem->loadByProduct($child)->getQty();
        }
        return "<g:quantity>".$stock_count."</g:quantity>";
    ?>

    Custom functions use

    Data Feed Manager also allows you to create custom functions.

    Create a custom function

    To create your own functions, go to:
    products › Data Feed Manager › Custom functions

    Here is how to proceed:

    1. Create a new option by clicking on "add new"
    2. Add PHP script for your new custom function
    3. Add the new custom function into your data feed template in:
      PRODUCTS › Data Feed Manager › Data Feeds › configuration
    Examples of custom functions

    Pad an attribute to a certain length with another string:

    <?php/** {{product.ean output="str_pad_custom($self,10,0)"}} * when ean is 12345, then the output is 0000012345 */return str_pad($self,$pad_length,$pad_string,STR_PAD_LEFT);/** could also be used as a inline function* {{product.ean output="str_pad($self,10,0,STR_PAD_LEFT)"}}*/?>

    Format a number:

    <?php /** {{product.price output="number_format_customl($self,2,',')"}} *when price is 9.99345, then the output is 9,99 */return number_format($self,$decimal,$decimal_separator,' ');/** could also be used as a inline function *{{product.ean output="number_format($self,2,',',' ')"}}*/?>

    FAQ

    Pre-sales informations

    Magento versions supported by Data Feed Manager

    This extension works with Magento Community Edition and also Magento Enterprise Edition. To know if Data Feed Manager is compatible with your Magento version, please check the Compatibility tab.

    Magento Open Source vs Magento Commerce vs Magento Commerce Cloud

    Magento offers three variations of its product.

    As their names have changed over the past few years, here is a recap:

    • Magento Open Source: previously Magento Community Edition (CE), is a free and non-hosted e-commerce platform.
    • Magento Commerce: previously Magento Enterprise (EE), is the paid version of Magento and offers support services.
    • Magento Commerce Cloud: is the paid version of Magento and offers support and hosting services.
    Simple Google Shopping Vs Data Feed Manager

    Data Feed Manager includes all the features of Simple Google Shopping but allows you to create more kinds of data feeds (csv, txt, xml) and with special features like extra-header for any shopping engine, market place or search engine such as BingShopping, Shopping.com, Shopzilla, Amazon...

    .

    Countries supported by Data Feed Manager

    All countries are supported (tax rates and currencies) by Data Feed Manager.

    You just need to edit the data feed for the targeted country.

    You may also have to use the appropriate currency when using prices attributes.

    Currencies supported by Data Feed Manager

    Any currency can be managed in your data feeds.

    You can define a different currency for each data feed using currency codes.

    This will automatically convert the prices into the indicated currency.

    Character encoding of the generated data feed

    The char encoding of the generated data feed is UTF-8 for Data Feed Manager. It allows the use of special characters, such as accented letters, but also Arabic and Chinese letters.

    If you're using Data Feed Manager, the default char encoding is UTF-8, while no char encoding is specified in the XML header.

    Data Feed Manager limitations

    Data Feed Manager has been tested successfully on Magento 2 shops containing more than 70,000 products.

    Remember that the generation and export time for any quantity of products will depend on your server capacity. Generally, exporting a data feed with 10,000 products shouldn't take more than 2-3 minutes on a standard shared server.

    License and domains

    License validity

    A license is valid for an unlimited period of time on one single installation

    • If you're using more than one installation, you will have to buy a separate license for each instance.
    • if you're running several domains on a same installation, you will need only one license for all of them.
    Although your license doesn’t have a limited period of validity, your Support & Upgrade period does. By purchasing a module, you’ll be granted a 12-month support period for free. Passed this period, you will have to pay for a new one (see FAQ: Extend your Support period)
    Domains pre-registration

    You can pre-register your live domain to your license in advance.

    Thanks to this option, you'll be able to get the module ready to use on your domain before it goes live.

    To pre-register your production domain: 

    1. Go to:
      mY account › Licenses & DOwnloads
    2. Click on the Settings icon next to the module you want your domain to pre-register on.
    3. Click on the link at the bottom of the page saying:
      Do you want to pre-register your domain in order to be ready to go live?
    4. Finally, enter your domain name and click on pre-register now .

    Testing environments

    One license is valid for an unlimited period of time on one installation only. However, it is possible to extend or transfer your license in 2 cases: 

    • If you would like to add your testing environments to your license. 
      In that case, it is possible to extend your license to an unlimited number of domains for free.
      For  mywebsite-staging.com or mywebsite-dev.com
    • If you want to transfer your license to another live domain.
      In that case, the Support & Upgrade period for your license must still be active.

    To be able to use Data Feed Manager on both your production and testing environments, follow the instructions below:

    1. Download Data Feed Manager.
      (see FAQ: Extensions download)
    2. Install Data Feed Manager on your environment.
      (see FAQ: Modules installation in Magento or in WooCommerce)
    3. Activate the license.
      (see FAQ: Licenses activation in Magento or in WooCommerce)
    Also, if you are managing a large amount of domains, please contact us so that we can automatically whitelist these domains.

    Modules versioning and download

    Extensions download

    In order to download Data Feed Manager, log into your Wyomind account:

      1. Go to:
        my account › Licenses & downloads 
      2. Click on the settings icon next to Data Feed Manager.

        A new window opens.

      3. Click on the download icon.

    Only the latest extension version released within your Support & Upgrade period is available. In order to get the very latest extension version make sure your Support & Upgrade plan is up to date.

    Modules upgrade

    When purchasing a module from wyomind.com, you benefit from 12 months of upgrade. Within this period you can at any time download the latest version of the module directly from your account.

    To upgrade Data Feed Manager, follow the steps below:

    1. Go to:
      my account › Licenses & Downloads
    2. Click on the settings icon next to Data Feed Manager.
    3. Click on the download icon.
    4. Install the new version of Data Feed Manager in your Magento admin or your WooCommerce back-office.

    Modules Installation/Uninstallation

    Extensions manual installation

    You can install Data Feed Manager manually.

    1. Download Data Feed Manager (zip file) on:
      mY ACCOUNT › Licenses & Downloads 
      Refer to the FAQ: Extensions download
    2. Once Data Feed Manager is downloaded, open the folder and unzip it.
    3. Copy the content of the unzipped folder and paste all files and directories in your Magento 2 root directory.
    4. In your Command Line Interface, execute:
      bin/magento setup:upgrade 

      If you are using a production mode, execute also:

      bin/magento setup:static-content:deploy  
      bin/magento setup:di:compile  
    Extensions installation via Composer

    You can install Data Feed Manager using Composer software in two cases:

    • if you purchased Data Feed Manager on Magento Marketplace.
    • if you purchased Data Feed Manager on Wyomind.com AND requested access to our repository:
      repo.wyomind.com
    1. Add to your composer configuration our repository:
      composer config repositories.wyomind composer https://repo.wyomind.com 

    2. Execute Composer command:
      composer require wyomind/datafeedmanager
    3. Then go in your Command Line Interface and execute:
      bin/magento setup:upgrade ​
    4. If you are using a production mode, also execute:
      bin/magento setup:static-content:deploy  ​
      bin/magento setup:di:compile​
    Extensions uninstallation

    To uninstall Data Feed Manager, start with disabling the extension running the following command:

    bin/magento module:disable Wyomind_DataFeedManager

    Then, you have 2 ways to uninstall the extension depending on how the extension has been previously installed: 

    • Manual installation

      Run the datafeedmanager-uninstall.sh file (you can find it in the extension zip folder) from your Magento root directory:

      sh datafeedmanager-uninstall.sh
    • Installation via Composer

      Run the below command line:

      composer remove wyomind/datafeedmanager

    Once the uninstallation is over, refresh your cache and enable the compiler back again (if you use it). 

    Extensions installation via Web Setup Wizard

    You can install Data Feed Manager via Web Setup Wizard if you purchased it from Magento Marketplace only.

    To know how to proceed, all steps are described in the link below: 
    http://docs.magento.com/m2/ce/user_guide/system/component-manager.html

    Next step is to activate your license:
    Extension activation

    Modules activation

    Extensions activation from the back-office of Magento

    Once Data Feed Manager is installed, you have to activate the license. For previous versions, you can activate the license from your back-office:

      1. Go to your Magento admin panel. A message pops up at the top of the page.
        If the message doesn't appear then you must check that:

           1. The Adminhtml_Notifications and Wyomind_Core modules are well enabled.
           2. The HTML output of the Adminhtml_Notifications and Wyomind_Core modules are not disabled in:
        storesconfigurationadvanced advanced
           3. The encryption key well exists in app/etc/env.php:
        <?php
         return array(
         'backend' => array(
         'frontName' => 'admin'
         ),
         'crypt' => array(
         'key' => '1e8f3c6772b7a6a6689c3c8cefa4ccf0'
         ),
         /* ... */
         )
        ?>​
      2. Copy your activation key in:
        Stores › Configuration › Wyomind › Your extension

        You can find your activation key in 2 different places:
        -  In the confirmation email that you received after purchasing Data Feed Manager.
        -  In your Wyomind account: My account › Licenses & downloads
        Select Data Feed Manager and click on  .

        A new page opens where you'll find your activation key (see below).
      3. In your Magento admin go to:
        Stores › Configuration › Wyomind › Your extension

        Paste the activation key in the Activation Key field and choose between the automatic (yes) or the manual (no) activation method:
        -  By choosing Yes, the connection to Wyomind license server will be automatic.
        -  By choosing No, you will have to log on to Wyomind license server yourself.
      4. Click on Save config .
      5. A message appears at the top of your admin panel. Click on that link: 
        Activate it now!
      6. Copy and paste the license code in the License code field from your admin or simply click on  Activate now! 

      7. Finally, refresh your cache, log out and log in back straight after, to complete the installation.

    Add another domain to your license


    To activate the license on another domain (test, staging...):

    1. Once the extension is installed on the new domain, copy your activation key in:
      Stores › Configuration › Wyomind › Your extension
    2. After having saved the configuration, a notification appears. Click on Add this domain to my license.

    3. A transfer request will then be sent to our team within an hour.
      Once the request is taken care of, you will receive a confirmation email.
      If your transfer request is accepted, you can use Data Feed Manager on both environments at the same time.

    Note that the order in which you activate your license on your domains does not matter. You can start with your staging/dev/local environment or with your live domain, the process will be the same.

    Also, if you have loads of staging domains, or if you are an agency managing load of domains for your customers, please contact us so that we can automatically whitelist these domains.
    Extensions activation from the CLI

    Once Data Feed Manager is installed, you have to activate the license.

    For this, you can use the below command line (change the Activation key with the corresponding value):

    bin/magento wyomind:license:activate Wyomind_DataFeedManager <YOUR_ACTIVATION_KEY>

    To retrieve the list of all the available modules as well as the licenses status, please use:

    bin/magento wyomind:license:status

     Among the different status, you can find: 

    • registered = your license is registered
    • pending = you need to run the activation command line
    • invalidated = the license has been invalidated due to a wrong activation key or a license infringement

    To activate several licenses at the same time, use:

    bin/magento wyomind:license:activate \
    Wyomind_Extension1,Wyomind_Extension2 \
    ACTIVATION_KEY_1,ACTIVATION_KEY_2

    or:

    bin/magento wyomind:license:activate \
    Extension1,Extension2 \
    ACTIVATION_KEY_1,ACTIVATION_KEY_2

    Check how to add another domain to your license.

    Modules use

    Generate and Export a data feed

    Generating a data feed is totally different from exporting a data feed.

    Generate your data feed

    To generate a data feed from Data Feed Manager, you only need to click on  Generate  when editing your data feed from:
    Products › Data Feed Manager › Data Feeds

    You will get an .xml, .csv or .txt file according to your configuration.

    This will allow you to upload your products data into the platform you want (such as Google Shopping).

    Export your template

    To export a data feed from Data Feed Manager, you need need to click on eXPORT  when editing your data feed from:
    Products › Data Feed Manager › Data Feeds

    You will get a .dfm file.

    You will be able to save a template that you have previously created from Data Feed Manager and to import it if needed into your Magento admin for example.

    Product type and Google product category

    <g:product_type> is for the categories that you have defined independently in your Magento 2 back-office.

    To retrieve the category you have assigned to it for each one of your products, you can easily fill this XML section using: 

    {{product.product_type}}

    Read also:
    https://www.google.com/support/merchants/bin/answer.py?answer=188494

    <g:google_product_category> is used for the categories that are already defined by Google.

    You must include this section for each one of your products with the Google category corresponding to yours using: 

    {{product.google_product_category}}

    Read also:
    https://support.google.com/merchants/bin/answer.py?answer=160081

    Use of CDATA in the data feed

    CDATA stands for Character Data. It means that the data in between these tags include data that could be interpreted as XML markup, but should not be.

    Syntactically, CDATA behaves similarly to a comment but it is still part of the document.

    CDATA sections have no encoding, so there's no way to include the ]]> string into them.

    New URL when generating a new feed

    If you're getting https://mywebsite.com/googlefeed/example_feed.xml?r=0123456789 instead of https://mywebsite.com/googlefeed/example_feed.xml when generating a new feed, it's normal.

    Actually, the url https://mywebsite.com/googlefeed/example_feed.xml is still available. The parameter ?r=0123456789 at the end of it is simply a random number to avoid cache issue when you download the data feed from your Magento 2 admin.

    Data feed configuration

    Schedule the file generation with Data Feed Manager

    Data Feed Manager provides you with a fully configurable schedule in the Cron Schedule tab of your pattern configuration for each data feed or profile.

    So that it works, you need to have one main scheduled task running from your server side and targeting cron.php located in the pub directory of Magento 2 root directory (ideally every hour).

    If the management panel from your hosting compagny doesn't provide such a service, you should be able to use a remote service such as: http://www.mywebcron.com

    Data Feed Manager also provides you with a cron job reporting, so that you can get email reports on each data feed or profile you're generating.

    Add a new taxonomy file in Data Feed Manager

    The Google and Facebook product taxonomies are category trees that will help you to generate values for the Google and Facebook product category attributes listing all possibilities.

    • Taxonomie Google: From that page, choose the language you want to use for your taxonomy at the bottom right. Then, in the Downloadable taxonomy, open the Plain Text link that contains full category names and save the file.
    • Taxonomie Facebook: From that page, choose the language you want to use from the Facebook product categories by language section. Then, click on the Plain Text link that contains full category names to download the file.

    Paste the file in:

    • For Simple Google Shopping: Magento 2 > app > code > Wyomind > Simple Google Shopping > data > Google > Taxonomies
    • For Facebook Product Feed: Magento 2 > app > code > Wyomind > Facebook Product Feed > data > Facebook > Taxonomies

    Don't forget to apply the permissions 644 to the file.

    You'll then be able to choose that specific taxonomy from your data feed configuration.

    Use operands in the pattern

    You can use the OR operand with all these variables (without option) as in the example below:

    {{object.proprietyA | object.proprietyB}}

    If object.proprietyA exists then the value will be object.proprietyA, otherwise, the value will be object.proprietyB.

    For example:

    {{product.url | parent.url}}

    There isn't any other operand of that kind.

    Configurable products retrieve invalid price

    In Magento 2, configurable products are in fact containers for the simple variant products. Then, their price will depend on the options that the customer has selected.

    Unfortunately, as it's not possible to know in advance the choice of the customers, it is recommended to use the minimum or the maximum price in your data feeds. You can use one of the below attributes:

    {{product.min_price}}
    {{product.max_price}}
    Google Shopping and configurable products

    According to Google requirements, you should only have simple products exported in your generated data feed. In fact, configurable products are only empty shells for your simple products.

    In the case where you export only simple variants into your data feed, you need to check that:

    • you use the Parent object to retrieve the information from the configurable product if needed.
      For example:
      <g:link>{{product.url | parent.url}}</g:link>​
    • your filters are not too restrictive.
      For example if your simple variant products are not visible individually, make sure to have ticked that options in your data feed filters.

    • the categories you've selected in the configuration of your data feed are also assigned to the simple variants.
      For example, if only the parent product has a category assigned, you'll be able to include product into your data feed based on the Product and parent categories.

    Remove the VAT from the product catalog prices

    To subtract the VAT from your catalog prices, in your pattern, you need to replace:

    {{product.price}}

    with:

    {{product.price currency=USD vat_rate=0}} 

    Replace USD with your own currency.

    If the prices of your catalog are already including the VAT, then you can use:

    {{product.price currency=USD}}
    Apply a custom VAT to products

    To apply a custom VAT to your products, you can replace:

    {{product.price}}

    with:

    {{product.price currency=CUR vat_rate=0.00}}

    Replace CUR with your own currency and 0.00 with a value between 0 and 100 that represents the VAT.

    For example:

    {{product.price currency=USD vat_rate=10}}
    Display the categories in the product urls

    In your data feed, you get https://www.mywebsite.com/product but the correct URL is https://www.mywebsite.com/category/subcategory/product.

    To retrieve the URL you want, you can define the options under:
    Stores › Settings › Configuration › Wyomind › Data Feed Manager

    You'll be able to choose which URL path to use in Use canonical URLs.

    You can choose between 3 options:

    • Individual product URLs
    • Shortest category URLs
    • Longest category URLs

    For example, if you have a "T-shirt" in 2 categories: "New arrivals" and "Shirts", then depending on your configuration, you'll get different results:

    • Shortest category URL = mywebsite.com/men/shirts/t-shirt
    • Longest category URL = mywebsite.com/men/new-arrivals/t-shirt

    The individual product URL won't include any category or subcategory.

    Download the generated file

    Here is the process to download your file:

    • Generate the file.
    • Right-click on on the generated link from the grid.
    • Choose the "Save as" option.

    Map categories to Google ones

    Categories names you are using in your Magento 2 back-office aren't always the same than the ones used by Google Merchant to reference your products.

    This means you have to find out which Google Merchant categories have the best matching with yours, according to the Google product taxonomy.

    For example, if you're selling furnitures like coffee tables, you'll have a Coffee table category in your Magento 2 back-office.

    But Google Merchant doesn't handle this kind of category. The closest Google product category would be Kitchen & Dining Room Table. So this should appear this way in your data feed:

    <g:google_product_category>Furniture > Desks & Tables > Kitchen & Dining Room Tables</g:google_product_category>
    

    This Google product category will be retrieved in your data feed after 2 steps.

    1. Map your categories with Data Feed Manager

    Data Feed Manager provides you an easy way to input Google product categories matching yours.

    In your data feed configuration, go in the Categories tab. Then, in Category selection and mapping section, you'll find a treeview of all your categories.

    For each category, you have a little arrow followed by mapped as . There, you'll be able to start typing a keyword in order to display a list of all categories including that keyword. You simply need to select the one you need.

    If your press the End key of your keyboard after typing a category mapping, the value will apply to all sub-categories.

    Once all your categories are mapped, you can click on the Save button.

    Here are a few guide lines for choosing the most appropriate category:

    • Use the category that best describes your item. To do this, first determine the primary function of the products you are submitting. For specific items like MP3 Players, select the MP3 Players category. While some MP3 players can also serve different functions, like those that contain a clock, they are primarily MP3 Players.
    • Use only one category. For some products, more than one category might be relevant. For example, an adapter to allow an MP3 player to be used in a car could be in both categories Motor Vehicles > Audio & Video and Electronics > Audio > Audio Accessories > MP3 Player Accessories . In such cases, choose the category that seems the most appropriate to you, but don't include more than one.
    • Use the most specific category possible. Being specific will help improve your data quality and in turn ensure that offers are presented in the right category. When viewing the taxonomy, try to navigate to the most specific category that still covers all the products being submitted. For instance, if you are submitting MP3 player chargers use the category MP3 Player Chargers . Conversely, if you are submitting multiple types of chargers use the category Chargers .

    2. Add the Google category to the Data Feed Manager XML pattern

    Finally, so that the Google category is retrieved in your data feed, you must add the following attribute to the XML pattern:

    <g:google_product_category>{{product.google_product_category}}</g:google_product_category>
    

    or

    <g:google_product_category>{{product.category_mapping index=0}}</g:google_product_category>
    Please note that this attribute is different from Product Type for which the name of the category you have defined in your Magento 2 admin is retrieved. Google recommends you include this attribute for all products, and for all target-countries. It will result in better categorization for your products.
    Retrieve each variant for the product customizable options in the pattern

    For your products with customizable options, instead of retrieving only one product, you have the possibility to retrieve each variant in your XML/CSV/TXT data feeds. 

      

    Example

    Imagine you have added the following customizable options for a bag : 

    • Bag Color: the bag is available in black and in red
    • Bag Size: the bag is available in small and in big

    Iterate the custom options

    To retrieve the information of each custom option, use the below code in your template:

    {{custom_options.iterate alias="Custom Option title"}}
    {{custom_options.alias.value}}

    You must use the below parameters: 

    • alias represents your custom option. You can retrieve up to 2 options. alias can be renamed with any name. For example: 

      color

    • Custom Option title is the title of your custom option. Attention, these titles are case-sensitive, they must be written exactly as in your Magento 2 admin. For example: 

      Bag Size

    • value = It is the value you want to retrieve. It can be the title, the SKU or the price of the option. You must use the following values: label, sku, price

    For example, to retrieve the 4 variants of your bag (Mini Red, Maxi Red, Mini Black, Maxi black), use the below code:

    {{custom_options.iterate alias1="Bag Size" alias2="Bag Color"}}
    {{custom_options.alias1.label}} - {{custom_options.alias1.sku}} - {{custom_options.alias1.price}}
    {{custom_options.alias2.label}} - {{custom_options.alias2.sku}} - {{custom_options.alias2.price}}

    Merge the custom options

    You can also retrieve all variants values using the merge option as below:

    {{custom_options.merge value="value" opt="Custom Option title"}}

    You must use the below parameters:

    • value = It is the value you want to retrieve. It can be the title, the SKU or the price of the option. You must use the following values: label, sku, price
    • opt = It represents the custom option. Replace Custom Option title by the title of the option as it is written in your Magento 2 back-office. For example : 

      Bag Color

    For example, to retrieve the SKUs of all the values of the Bag Color option, use the below code in your template:

    {{custom_options.merge value="sku" opt="Bag Color"}}

    Note that using the merge option, all values will be separated by a comma.

    Troubleshooting

    Base table or view not found

    This issue may be due to a problem during the installation process.

    You will be able to fix it by following these steps:

    1. Access your database via your control panel (Phpmyadmin for example).
    2. From the setup_module table, delete the entry Wyomind_extension.

      Be careful, that entry depends on your extension. For example, if you have the extension called Simple Google Shopping, you should delete Wyomind_SimpleGoogleShopping.

    3. Logout from your Magento 2 admin.
    4. Log into your Magento 2 admin.
    Scheduled tasks don't work in Magento 2
    How do cron tasks work?
    • The cron.php file (available in the pub directory of your Magento 2 root directory) is regularly launched from your server side (generally every 5 minutes).
    • The cron task for Data Feed Manager is targeted and evaluates if a data feed or a profile needs to be refreshed (depending on the timestamp stored in the database and on the schedule table for this specific profile).
    • If the above condition matches, then the data feed and the profile is re-generated.

    Be sure that you have correctly configured a scheduled task from the server side (cpanel) targeting the cron.php file in your magento 2 installation.

    The extension includes reporting and debug tools for the scheduled tasks available in:
    Stores › Settings › Configuration › Wyomind › Data Feed Manager

    For more information on the configuration of cron tasks in Magento 2, you can check their documentation.

    404 error instead of the Google Taxonomy

    You must apply the permissions 644 to app/code/Wyomind/SimpleGoogleShopping/data/Google directory and all sub folders and files via FTP.

    "Please make sure the directory /feeds/ is writeable by the server"

    The directory in which your data feed is stored must be writable (permissions 755). You should try to use another directory such as /media/ if /feeds/ is not properly set by changing the content of the Path field.

    "PHP features are disabled"

    You must update the module by downloading and installing the module last version available from your Wyomind.com account.

    The data feed is inaccessible

    In the case where your data feed URL is inaccessible, your site may be using the pub directory as the site root.

    Then, from the Configuration tab of your data feed, you should change the path so that it is generated in the /pub/feeds/ directory instead.

    Then, the data feed URL won't include the pub directory and will be:

    https://www.domain.com/feeds/GoogleShopping_full.xml

    Empty feed when opened from a browser

    You may have an incorrect character in your data feed description, for example, the & character.

    In that case, you should replace the & character with and or enclose your data between CDATA as in the example below.

    403 Forbidden error when saving data

    If when saving your data feed configuration in Magento 2, you get:

    Forbidden, You don't have permission to access /.../ on this server.

    This is probably something regarding the hosting company that doesn't allow to post XML in the form.

    The mod_security (security module) includes rules that stop all post/get requests including code.

    In order to fix that issue, you should get in touch with your hosting company so that they add some exceptions to the security rules.

    Characters from a data feed aren't displayed properly

    If the characters of your data feed are not correctly displayed, you should first be sure you used special attributes that will clean your content:

    {{product.description php="sgs_strip_tags(sgs_html_entity_decode(inline(cleaner($self))))"}}

    If your data feed still doesn't display properly, maybe it's because you're trying to read it as an ISO file while Data Feed Manager creates UTF-8 encoded files.

    We recommend you read it with dedicated programs like Notepad++ or Firefox (with Display › Encoding type › utf8 selected).

    User's reviews

    Jitheesh

    Developer · United Kingdom · User for 4 years

    ★★★★★

    A Must have plugin to all Magento sites

    We use the Datafeed Manager module across all projects, as it saves us from worrying about any feed integrations. The flexible admin UI and features let you adjust the module to suit your own needs.

    December 3, 2025Magento 2

    Laurent Antoine

    Merchant · France · User for 7 years

    ★★★★★

    Super Plugin for managing products feeds

    Date Feed manager is a super tool. I use it for google shopping. Very easy to use. I highly recommend for any commerce store.

    Chris C

    Ecommerce Agency · United Kingdom · User for 8 years

    ★★★★★

    Invaluable feed manager

    We use this module to create and export our product range to the likes of Google, Meta and other external marketing tools. We also use the feed to export our product range to external service providers that power on-site functionality too. Easy to schedule and quick to generate.

    August 26, 2025Magento 2

    Alex

    Merchant · Germany · User for 7 years

    ★★★★★

    An Essential Tool for Our Multichannel Strategy (using it since 2019)

    We use the Data Feed Manager to centrally manage all our product feeds – and we’re genuinely impressed. This extension allows us to connect all our sales channels from one place: Amazon, Meta (Facebook/Instagram), Google Merchant Center, and more. The configuration is highly flexible, the field mapping works flawlessly, and even complex requirements can be handled easily using filters and rules. What stands out most is the ability to manage multiple feeds in a clean and organized interface, with precise scheduling options. For us, the Data Feed Manager has become an essential part of our e-commerce infrastructure – highly recommended!

    David

    SEO specialist · Spain

    ★★★★★

    After two years using Wyomind with Magento 2, I can say their modules are powerful, reliable, and easy to integrate.

    I’ve been using Wyomind’s modules for Magento 2 for over two years, and the experience has been excellent. Their extensions are consistently stable, high-performing, and easy to integrate. Key tools like ‘Advanced Inventory’, ‘Mass Stock Update’, and ‘Data Feed Manager’ have become essential to managing our catalog and logistics efficiently. Their customer support is also fast and helpful—something you really value when working on a high-demand e-commerce platform. Wyomind has proven to be a reliable partner that truly enhances our Magento environment. I highly recommend their solutions.

    David

    Merchant · United Kingdom · User for 5 years

    ★★★★★

    Perfect fit for SkateHut

    Wyomind's data feed manager fit's the bill for us so well. It's not just a straight data output, it is so much more with the programming capabilities and logic that it can do.. From being able to create custom functions for it and additional variables, and being able to work with all the product types that Magento has, in our opinion the flexibility of the package is such that you don't need to consider any other packages for your merchant data feeds.

    JM Dimensions ApS

    Merchant · Denmark

    ★★★★★

    Simple to use and great function

    Really great tool - simple to use and just fast to get some great feeds created

    Sophana

    Merchant · France · User for 3 years

    ★★★★★

    Useful and easy to use

    DFM is incredibly user-friendly and efficient.

    Chris

    Merchant · United Kingdom · User for 8 years

    ★★★★★

    Good Feed Manager

    Works well for xml feeds

    February 17, 2025Magento 2

    Michal

    Merchant · United States · User for 5 years

    ★★★★★

    Good Feed Management Solution

    This extension helped manage our feeds for Google Shopping and more. The intuitive interface and powerful customization save time. Wyomind's support is responsive and helpful. It's a reliable, indispensable tool. Highly recommended.

    Manav

    Ecommerce Agency · India · User for 7 years

    ★★★★★

    Fantastic extension for managing product feeds

    Wyomind's Data Feed Manager is a fantastic tool for managing product feeds. It's user-friendly, reliable, and the support team is always quick to help. Highly recommend for any e-commerce store!

    June 19, 2024Magento 1 / OpenmageMagento 2

    David

    Merchant · Spain · User for 3 years

    ★★★★★

    Good plugin, very effective

    We use the plugin generally to extract product information from Magento usually as feeds. It is very useful and easy to use. Also very fast.

    Marco

    Merchant · Italy · User for 13 years

    ★★★★★

    Extension for MAgento

    I'm purchase more extension for Magento 1 and are very good

    April 8, 2024Magento 1 / Openmage

    Giuseppe

    Merchant · Italy · User for 13 years

    ★★★★★

    Very good

    The APP are very good,

    April 8, 2024Magento 1 / Openmage

    Seamus Og

    Merchant · United Kingdom · User for 4 years

    ★★★★★

    Great feed generator

    We have used a few different feed generators from competitors, however Wyomind's data feed manager was the most robust and easy to use we have found

    Dustin

    Merchant · Canada · User for 9 years

    ★★★★★

    Great extension, easy to customize and use

    Great extension. Have used for over 10 years on many of our sites. High customizable, we can configure it just the way we want to get google shopping feeds, Facebook feeds, Bing feeds, etc.. Has nice logic and filtering conditions to get the feeds just how we want them.

    January 30, 2024Magento 1 / Openmage

    Dgiouzelis

    Developer · Cyprus · User for 13 years

    ★★★★★

    Great Plugin and Wonderful support!

    Really simple to configure and works perfectly.

    I can manage without any problem Google, Facebook, and various product feeds, adding all data and filtering products.

    We tested many, this one is the best.

    October 26, 2023Magento 1 / OpenmageMagento 2WooCommerceiloveprints.gr

    Craig

    Merchant · United Kingdom · User for 4 years

    ★★★★★

    Very flexible data feed module

    We've been using Wyomind's Datafeed Manager for a few years now. It is very flexible in its outputs. It can take a while to configure if you want something custom but there are several pre-built templates to help with this and give a good starting point for custom outputs.

    August 3, 2023Magento 2

    Anthony

    Merchant · United Kingdom · User for 5 years

    ★★★★★

    Straight forward to use, great support

    We have used the data feed manager extension on our Magento 2 website for the last couple of years. The user guide is informative and easy to use, allowing complete control within our feed. On the one occasion we needed to contact their support, they replied speedily and were able to resolve our query straightway.

    David

    Ecommerce Agency · United Kingdom · User for 7 years

    ★★★★★

    We've used this addon for years, it works great!

    We've first used this on Magento 1 websites, and later migrated over to Magento 2. The addon is feature rich, and allows us full granular control over the data feeds we send to google, and other platforms. It's an invaluable part of our marketing toolkit and empowers our clients to succeed with their off-site order generation - such as marketplaces, affiliate sites and more.

    Magento 2 Compatibility

    Supported by our master extension versions

    • 2.4.8
    • 2.4.7
    • 2.4.6
    • 2.4.5
    • 2.4.4
    • 2.4.3
    • 2.4.2
    • 2.4.1
    • 2.4
    • 2.3.7
    • 2.3.6
    • 2.3.5
    • 2.3.4
    • 2.3.3
    • 2.3.2
    • 2.3.1
    • 2.3

    Supported by our legacy extension versions

    • 2.2.11
    • 2.2.10
    • 2.2.9
    • 2.2.8
    • 2.2.7
    • 2.2.6
    • 2.2.5
    • 2.2.4
    • 2.2.3
    • 2.2.2
    • 2.2.1
    • 2.2
    • 2.1.18
    • 2.1.17
    • 2.1.16
    • 2.1.15
    • 2.1.14
    • 2.1.13
    • 2.1.12
    • 2.1.11
    • 2.1.10
    • 2.1.9
    • 2.1.8
    • 2.1.7
    • 2.1.6
    • 2.1.5
    • 2.1.4
    • 2.1.3
    • 2.1.2
    • 2.1.1
    • 2.1
    • 2.0.18
    • 2.0.17
    • 2.0.16
    • 2.0.15
    • 2.0.14
    • 2.0.13
    • 2.0.12
    • 2.0.11
    • 2.0.10
    • 2.0.9
    • 2.0.8
    • 2.0.7
    • 2.0.6
    • 2.0.5
    • 2.0.4
    • 2.0.3
    • 2.0.2
    • 2.0.1
    • 2.0

    Changelog

    14.1.3

    Improvement

    • Output of the feed filters template is now escaped.
    • Unreadable or unwritable files during feed compression and FTP upload are now reported without PHP warnings.

    14.1.2

    Bug fix

    • Added prototype to the dependencies of the JavaScript files (with a slow connection, the code could be executed before prototype was loaded)

    14.1.1

    Compatibility

    • Compatibility with PHP 8.4 and Magento 2.4.9

    14.1.0

    New feature

    • The generated file can now be uploaded in gzip format (e.g. for OpenAI)

    Improvement

    • Files are now written in a temporary directory (var/tmp) before being moved to the feed destination directory, which avoids multiple file writes on distributed environments

    14.0.14

    14.0.13

    14.0.12

    14.0.11

    Bug fix

    • Fix output for {{product.qty}} while using the stock_id parameter

    14.0.10

    Bug fix

    • Fix replace() function in setup patches 

    14.0.9

    Bug fix

    • Fix preg_replace() function in setup patches 

    14.0.8

    Bug fix

    • Fix missing slash in image urls when using the role parameter

    14.0.7

    Code improvement

    •  remove trailing spaces in Helper/AttributePrice.php

    14.0.6

    Bug fix

    • sample date updated and fixed

    14.0.5

    Improvement

    • Add a configuration setting to manage cron log generation

    14.0.4

    Bug fix

    • Take memory limit configuration into account

    14.0.3

    Bug fix

    • Avoid an error message when a non-existent tier price is requested

    14.0.2

    Bug fix

    • Correct a regression brought up by version 14.0.1 : PHP API was malfunctioning

    14.0.1

    Improvement

    • The {{product.sale_effective_date}} placeholder now returns the date for tomorrow as the end date for the special price if there is no actual end date.
      The end date is required by Google for special prices with a validity period

    14.0.0

    Initial release for the master version

    13.0.0 legacy

    Initial release for the legacy version

    12.0.7

    Compatibility

    • Fix compatibility issue with Php v8.2

    12.0.6

    Improvement

    • Accelerate the data feed generation process 

    12.0.5

    Bug fix

    • FIx product visibility type support

    12.0.4

    Improvement

    • The extension supports now custom product visibility types 

    12.0.3

    Compatibility

    • Remove calls to Zend functions/methods

    12.0.2

    Bug fix

    • Fix "special to date" 

    12.0.1

    Bug fix

    • Fix for the MSI sources fetching 

    12.0.0

    Improvement

    • Better performance for the MSI sources fetching
    • Special price "special to date" applies till 23:59:59 

    Compatibility

    • Magento v2.4.6 + PHP v8.2

    11.24.6

    Improvement

    • The $_objectManager property is now public

    11.24.5

    Improvement

    • Fix the warning triggered by the strtotime() function if the value is empty

    11.24.4

    Bug fix

    • Fix the upload of the data feed on the FTP server with a specific port

    11.24.3

    Bug fix

    • Fix property name in install pactch

    11.24.2

    Improvement

    • The category mapping auto-complete is updated to match new jQuery overrides

    11.24.1

    Improvement

    • Remove "drop table"  instruction in the database install patch
    • PHP v8.1 compatibility 

    11.23.9

    • Compatibility fix for Php v8.1

    11.23.8

    • Compatibility fix for Php v8.1

    11.23.7

    • Re-disable by default the price block that overrides the configurable product prices

    11.23.6

    • Improvement of the price block that overrides the default price block for configurable products.

    11.23.5

    • PHP v8.1 compatibility Improvement

    11.23.4

    • Bug fix for PHP v8.1 for csv profile with no enclosure character

    11.23.3

    • Product prices cast to float for calls to number_format

    11.23.2

    Compatibility

    • Compatibility with PHP 8.1

    11.23.1

    • Minor fix on code

    11.23.0

    Compatibility

    • Compatibility with PHP 8.1

    11.22.1

    Compatibility

    • Compatibility with PHP 8.1

    Improvement

    • New parameter from_index=[1|0] added for the price attributes to retrieve information from Magento's price index

    11.22.0

    Compatibility

    • Compatibility with PHP 8.1

    11.21.2

    • Check added when using index=X with {{product.tier_price}} to avoid PHP error

    11.21.1

    • Fix for retrieving images with a particular role in the case where the role name ends with a number

    11.21.0

    Improvement

    • Possibility to choose the image role for {{product.image_link}}

    11.20.3

    • The FTP port entered during the connection tests is taken into account for the FTP/SFTP file export

    11.20.2

    • Fix for the button allowing to test the FTP connection on Firefox

    11.20.0

    • Support for tier prices with percentages for {{product.tier_price}}

    11.19.3

    • Fix for the number of elements rendered in the preview panel

    11.19.2

    • Fix for a bug preventing the display of the data feed grid if a data feed was linked to a store view that no longer exists

    11.19.1

    • Fix on links to documentation

    11.19.0

    • Better management for cron tasks that are now based on the locale date and hour defined in the back-office

    11.18.0

    • New parameter for availability, qty and is_in_stock attributes: source_code

    11.17.3

    • Fix for a typo in a method name from the cron tasks management

    11.17.2

    • Fix for the dates translation when scheduling data feeds execution

    11.17.1

    • The option to display the price of the pre-selected single product when arriving on the page of a configurable product is disabled by default

    11.17.0

    Improvement

    • The price of the product in the DOM is now the price of the pre-selected single product when arriving on the page of a configurable product from a URL including the pre-selected attribute options
    • Data feed templates are disabled by default

    11.16.9

    • Minor fix for a class property

    11.16.8

    • Fix when categories are deleted whereas they are selected in the data feed configuration

    11.16.7

    • Fix when categories are selected as filters but don't exist anymore in Magento

    11.16.6

    • Fix for the use of the currency parameter with product.url_config

    11.16.5

    • Fix for converting prices according to the price scope (global or website)

    11.16.4

    • Control added for a bug happening in some categories configurations

    11.16.3

    • Fix for the category filters

    11.16.2

    • Increase in the size allowed for configuration fields (new installations only)

    11.16.1

    • Fix for a bug preventing the data feed page to load when non-standard attributes were used

    11.16.0

    Improvement

    • New parameter for product_url and product.url_config that adds ?currency=XXX to the generated URL: this URL will automatically switch to the selected currency

    11.15.1

    Improvement

    • Better management of PHP scripts in CSV files

    11.15.0

    Improvement

    • Custom options are supported in CSV/TXT feeds

    11.14.2

    Improvement

    • Improved loading of Javascript JQuery modules

    11.14.1

    • Minor fix for custom variables and functions grids

    11.14.0

    Improvement

    • Improved license management system (Clear code)

    11.13.13

    • Fix for the demo store

    11.13.12

    • Fix for the use of custom options in the template

    11.13.11

    • Improved management of the prices to make it easier the fallback of an attribute with null price to another attribute

    11.13.10

    Bug fix

    • Fix for retrieving images for Magento Enterprise: row_id is used to retrieve images in the gallery table

    11.13.9

    • Sample data added for the demo

    11.13.8

    • The website's currency is taken into account

    11.13.7

    Improvement

    • Sample data
    • Product types retrieved dynamically in the filters

    Bug fix

    • Fix on the stock_id attribute: used to return the availability of the default stock

    11.13.6

    Bug fix

    • Fix for the stock_id attribute that used to return the availability for the default stock 

    11.13.5

    • Minor fix for {{product.catalog_rule_id}}

    11.13.4

    Improvement

    • Better management of sales_effective_date: dates are not displayed if from and/or to date are missing

    11.13.1

    • Fix for the database prefix in catalog_rule_id

    11.13.0

    Improvement

    • New attribute: {{product.catalog_rule_id}}

    11.12.5

    • MSI modules taken into account for retrieving stocks information

    11.12.4

    • Fix for the sale price calculation for bundle products

    11.12.3

    Improvement

    • Parent products are retrieved according to the entity_id of the child product

    11.12.2

    • Fix on the feed import when the database is using prefixed tables

    11.12.1

    • Fix in SQL queries for Magento Enterprise

    11.12.0

    • Use of the code of the storeviews in the products' URLs if needed

    11.11.2

    • Fix when saving the data feeds after a column has been deleted (CSV/TXT)

    11.11.1

    • Fix for Magento 2.3.3

    11.11.0

    • Compatibility with Magento 2.3.3

    11.10.2

    • Use of the Use SSL option for the FTP connection test when uploading the feeds after generation

    11.10.1

    • Fix for the stock management with Magento Multi Stock Inventory module: quantities automatically deducted when using MSI with the default stock only

    11.10.0

    Improvement

    • New children attribute allowing to list the child variants of a product (configurable, grouped, bundle)
    • New attributes for tax_class and type_id

    Patch v11.10.0.9

    • Minor fix on progress bar

    Patch v11.10.0.8

    • Fix for the generation via command line and cron task

    Patch v11.10.0.7

    • Fix for the categories sorting

    Patch v11.10.0.6

    • Code clean

    Patch v11.10.0.5

    • Fix for the categories sorting for {{product.categories}}

    Patch v11.10.0.4

    • JS fix for the data feeds grid

    Patch v11.10.0.3

    • Fix for the default value of Use canonical URL

    Patch v11.10.0.2

    • Sample date available for the demo

    Patch v11.10.0.1

    • Fix for relation_ship

    11.9.2

    Improvement

    • Code refact

    11.9.0

    Compatibility

    • Compatibility with the Multi Stock Inventory module on Magento v2.3.0

    Patch v11.9.0.8

    • Fix when retrieving parent data for each variant when there are loads of children products

    Patch v11.9.0.7

    • Minor fix for URL rewrite

    Patch v11.9.0.6

    • Fix for the canonical URLs default value

    Patch v11.9.0.5

    • Minor fix and code clean

    Patch v11.9.0.4

    • Fix for an SQL request

    Patch v11.9.0.3

    • Fix for Magento EE

    Patch v11.9.0.2

    • Minor fix on code

    Patch v11.9.0.1

    • Fix for the compilation

    11.8.1

    Improvement

    • Better management when retrieving relationships between simple and bundle products

    Bug fix

    • Fix for the installation of data

    Patch v11.8.1.4

    • Fix for the echo in the templates 

    Patch v11.8.1.3

    • Minor fix on code

    Patch v11.8.1.2

    • Fix for tier prices on Magento Enterprise

    Patch v11.8.1.1

    • Fix for PHP scripts in the templates
    • Disabled images are excluded from the data feed

    11.8.0

    Improvement

    • Possibility to export default values

    Patch v11.8.0.4

    • User interface enhanced in the license configuration

    Patch v11.8.0.3

    • Minor fix for profile import/export

    Patch v11.8.0.2

    • Better management of https in products and images urls

    Patch v11.8.0.1

    • Fix for energy_efficiency_class tag

    11.7.1

    Improvement

    • Better management for the feeds export/import (compatible PHP >= v5.3)

    Patch v11.7.1.1

    • Fix for energy_efficiency_class tag

    11.7.0

    Compatibility

    • Compatible with Magento 2.3

    Patch v11.7.0.1

    • Fix for energy_efficiency_class tag

    11.6.2

    Improvement

    • {{product.base_price}} retrieves the base price (as it is in the database indexes)

    Patch v11.6.2.1

    • Fix for energy_efficiency_class tag

    11.6.1

    Improvement

    • Improved execution of php script when the attribute value is a table

    Patch v11.6.1.2

    • Fix for energy_efficiency_class tag

    Patch v11.6.1.1

    • Minor fix

    11.6.0

    Improvement

    • Better management of categories and mapping
    • Improved management of the VAT rate retrieval
    • Support of FTP connection to upload generated files

    Bug fix

    • Fix on a static content error

    Patch v11.6.0.2

    • Fix for energy_efficiency_class tag

    Patch v11.6.0.1

    • Fix on a parameter

    11.5.2

    Bug fix

    • Fix for compatibilty with Magento < 2.2.5

    Patch v11.5.2.3

    • Fix for energy_efficiency_class tag

    Patch v11.5.2.2

    • Check when retrieving the VAT rate in the applyTax method

    Patch v11.5.2.1

    • Fix for files deployment

    11.5.1

    • Fix on PHP code execution in the template

    Patch v11.5.1.3

    • Fix for energy_efficiency_class tag

    Patch v11.5.1.2

    • Check when retrieving the VAT rate in the applyTax method

    Patch v11.5.1.1

    • Fix for files deployment

    11.5.0

    Improvement

    • Compatibility with Magento 2.2.5

    Patch v11.5.0.3

    • Fix for energy_efficiency_class tag

    Patch v11.5.0.2

    • Check when retrieving the VAT rate in the applyTax method

    Patch v11.5.0.1

    • Fix for files deployment

    11.4.1

    Improvement

    • Better management of the taxonomy

    Bug fix

    • New use of the custom functions to prevent any error with the cron task
    • Fix for default feeds

    Patch v11.4.1.1

    • Check when retrieving the VAT rate in the applyTax method

    11.4.0

    Improvement

    • New template for siroop.ch

    Patch v11.4.0.6

    • Check when retrieving the VAT rate in the applyTax method

    Patch v11.4.0.5

    • Better management of the taxonomy
    • Fix for default feeds

    Patch v11.4.0.4

    • Fix for the management of bundle products

    Patch v11.4.0.3

    • Fix for the category filters

    Patch v11.4.0.2

    • Fix for the blackbox overflow with the txt/csv profiles

    Patch v11.4.0.1

    • Fix for the command lines to avoid error : Area code is already set

    11.3.0

    Improvement

    • Magento v2.2.1 compatibilty

    Patch v11.3.0.7

    • Check when retrieving the VAT rate in the applyTax method

    Patch v11.3.0.6

    • Better management of the taxonomy
    • Fix for default feeds

    Patch v11.3.0.5

    • Fix for the management of bundle products

    Patch v11.3.0.4

    • Fix for the blackbox overflow with the txt/csv profiles

    Patch v11.3.0.3

    • Fix for the Magento unit tests

    Patch v11.3.0.1

    • Fix for the tier_price attribute

    11.2.0

    Improvement

    • Fix tax prices supported
    • All price attributes support now the currency conversion and tax class parameters (msrp, cost,...)
    • Better PHP scripts error reports

    Patch v11.2.0.10

    • Check when retrieving the VAT rate in the applyTax method

    Patch v11.2.0.9

    • Better management of the taxonomy
    • Fix for default feeds

    Patch v11.2.0.8

    • Fix for the management of bundle products

    Patch v11.2.0.7

    • Fix for the blackbox overflow with the txt/csv profiles

    Patch v11.2.0.6

    • Fix for {{product.categories}} when categories are excluded from the data feeds

    Patch v11.2.0.5

    • Fix for malformed file paths (slash automatically added)

    Patch v11.2.0.4

    • Fix for the data upgrade for Magento 2.2

    Patch v11.2.0.3

    • minor code fix 

    Patch v11.2.0.2

    • minor code fix

    Patch v11.2.0.1

    • fix for custom functions and custom variables creation

    11.1.0

    Improvement

    • Better support for PHP script errors in the data feeds
    • Black box can now be collapsed/expanded, maximized/minimized
    • Command lines renamed to datafeedmanager_* (instead of dfm_*)
    • Default Custom functions renamed to wyomind_* (instead of dfm_*)

    Bug fix

    • minor fix on the output parameter for static values

    Patch v11.1.0.7

    • Check when retrieving the VAT rate in the applyTax method

    Patch v11.1.0.6

    • Better management of the taxonomy
    • Fix for default feeds

    Patch v11.1.0.5

    • Fix for the management of bundle products

    Patch v11.1.0.4

    • Fix for the blackbox overflow with the txt/csv profiles

    Patch v11.1.0.3

    • Fix for {{product.categories}} when categories are excluded from the data feeds

    Patch v11.1.0.2

    • Fix for malformed file paths (slash automatically added)

    Patch v11.1.0.1

    • Fix for the data upgrade for Magento 2.2

    11.0.1

    Compatibility

    • compatibility with Magento v2.2

    Patch v11.0.1.5

    • Check when retrieving the VAT rate in the applyTax method

    Patch v11.0.1.4

    • Better management of the taxonomy
    • Fix for default feeds

    Patch v11.0.1.3

    • Fix for the management of bundle products

    Patch v11.0.1.2

    • Fix for the blackbox overflow with the txt/csv profiles

    Patch v11.0.1.1

    • Fix for {{product.categories}} when categories are excluded from the data feeds

    11.0.0

    Support on the following Magento optimization options:

    • Javascript merging
    • JavaScript bundling
    • Javascript minification

    Patch v11.0.0.10

    • Check when retrieving the VAT rate in the applyTax method

    Patch v11.0.0.9

    • Better management of the taxonomy
    • Fix for default feeds

    Patch v11.0.0.8

    • Fix for the management of bundle products

    Patch v11.0.0.7

    • Fix for the blackbox overflow with the txt/csv profiles

    Patch v11.0.0.6

    • Fix for {{product.categories}} when categories are excluded from the data feeds

    Patch v11.0.0.5

    • Fix for malformed file paths (slash automatically added)

    Patch v11.0.0.4

    • typo fixed in helper/AttributesInventory.php

    Patch v11.0.0.3

    • Fix on the column suppression in the cst/txt feed and cancellation of the pattern edition for cst/txt columns
    • Fix on the cst/txt column suppression 

    Patch v11.0.0.2

    • Stock temporary path for feeds import file fixed

    Patch v11.0.0.1

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    10.0.1

    Bug fix

    • Fix a bug in the display of the categories

    Patch v10.0.1.5

    • Fix for the management of bundle products

    Patch v10.0.1.4

    • Fix for the blackbox overflow with the txt/csv profiles

    Patch v10.0.1.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v10.0.1.2

    • Fix on enclosure escapers

    Patch v10.0.1.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    10.0.0

    Improvement

    • PHP API: getParent and hasParent functions supported 
    • Better management of Javascript files

    Improvement

    • Blackbox is back
    • Better performance when editing a configuration
    • Drag and drop available on the preview/library window

    Patch v10.0.0.5

    • Fix for the management of bundle products

    Patch v10.0.0.4

    • Fix for the blackbox overflow with the txt/csv profiles

    Patch v10.0.0.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v10.0.0.2

    • Fix on enclosure escapers

    Patch v10.0.0.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    9.0.3

    Improvement

    • New attribute {{product.url_config}} retrieves URL to pre-select the simple product attributes from its configurable 
    • Improved display of PHP script errors
    • Status attribute easier to manage 

    Patch v9.0.3.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v9.0.3.2

    • Fix on enclosure escapers

    Patch v9.0.3.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    9.0.2

    Improvement

    • Better support for attributes including html tags

    Patch v9.0.2.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v9.0.2.2

    • Fix on enclosure escapers

    Patch v9.0.2.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    9.0.1

    Improvement

    • Better support for the install/upgrade scripts
    • Method $this->skip() available directly from the template to skip the current product

    Patch v9.0.1.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v9.0.1.2

    • Fix on enclosure escapers

    Patch v9.0.1.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    9.0.0

    Improvement

    • categories attribute re-designed for a more flexible usage
    • Attributes can now be stored under variables with the as parameter
    • Conditions can now be applied to the attributes with the if parameter
    • Data feeds can be triggered with CLI
    • Php code parsing enabled by default

    Patch v9.0.0.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v9.0.0.2

    • Fix on enclosure escapers

    Patch v9.0.0.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.9

    Bug fix

    • Fix parent/child products link when the child product is not associated to a category

    Patch v8.0.9.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.9.2

    • Fix on enclosure escapers

    Patch v8.0.9.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.8

    Bug fix

    • Fix for images recovery in Magento 2.1 Enterprise Edition

    Patch v8.0.8.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.8.2

    • Fix on enclosure escapers

    Patch v8.0.8.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.7

    Improvement

    • Better parent values management

    Patch v8.0.7.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.7.2

    • Fix on enclosure escapers

    Patch v8.0.7.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.6

    Compatibility

    • Data Feed Manager is compatible with Magento 2.1.0

    Patch v8.0.6.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.6.2

    • Fix on enclosure escapers

    Patch v8.0.6.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.5

    Bug fix

    • Fix for images recovery

    Patch v8.0.5.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.5.2

    • Fix on enclosure escapers

    Patch v8.0.5.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.4

    Bug fix

    • Fix on the installation via Composer

    Patch v8.0.4.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.4.2

    • Fix on enclosure escapers

    Patch v8.0.4.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.3

    Bug fix

    • Fix on the attribute management in the data feed

    Patch v8.0.3.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.3.2

    • Fix on enclosure escapers

    Patch v8.0.3.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.2

    Bug fix

    • Encoding issue fixed for accentued characters

    Patch v8.0.2.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.2.2

    • Fix on enclosure escapers

    Patch v8.0.2.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.1

    Improvement

    • New management of licenses for Magento 2

    Patch v8.0.1.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.1.2

    • Fix on enclosure escapers

    Patch v8.0.1.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    8.0.0

    Compatibility

    • Data Feed Manager is compatible with Magento 2

    Patch v8.0.0.3

    • Fix on feeds export: no more SQL error when importing feeds that include inverted comma in settings  
    • Fix on configurable products: they can now be retrieved if they don't have child products

    Patch v8.0.0.2

    • Fix on csv export: enclosure characters can now be escaped 

    Patch v8.0.0.1

    Patch

    • Fix on {{product.categories}}
      Categories that are empty when retrieved by {{product.categories}}, are deleted from the category list.

    Feature request

    Specific needs or any ideas of enhancements and new features to add to the extension? Tell us more, we'll get back to you shortly!

    Thank you

    That’s a wrap.

    We will get back to you as soon as possible.

    You may also like