Product Data Feed#
The provisioning file installs and configures everything needed to generate a structured product feed directly from your Miva store. Two formats are available — XML and CSV — both built on the Google Merchant Center product data standard, which is also accepted by Meta Commerce Manager, TikTok Shop, and other major shopping channels.
Each provisioning file sets up:
- Custom field group and product/page custom fields for feed-specific attributes
- Product Data Fields and Feeds module
- Product Data Field definition and trigger for staging feed data
- Product Data Feed definition generating the XML or CSV output file
- Scheduled tasks automating data generation and feed creation
- Product import definition for bulk CSV updates of feed fields
Tip
Both formats share the same custom fields (pf_*). If you install both, the custom fields only need to be created once.
Download#
| Format | Provisioning File |
|---|---|
| XML Feed | product_feed_import.xml |
| CSV Feed | product_feed_import.xml |
Prerequisites#
- Access to Data Management
- The
product_feed_import.xmlprovisioning file (XML version, CSV version, or both) - Store using the custom fields module
Step 1: Import#
- Log into the Miva admin
- Navigate to Data Management
- Locate the XML Provisioning Format import option
- Find and run
product_feed_import.xml
Note
The following warnings on first import are expected and safe to ignore. The exact messages will reflect whether you are importing the XML or CSV version:
ProductDataField_Delete: [field code] not foundFeed_Delete: [feed code] does not existScheduledTask_Delete: [task name] does not exist(appears twice)
Step 2: Review Custom Fields#
After import, the following custom fields are created under the Product Feed: Custom Fields group and are shared across both formats.
Product-level fields:
| Code | Name | Type | Purpose |
|---|---|---|---|
pf_ignore_product |
Product Feed: Ignore Product | Checkbox | Excludes product/variant from the feed |
pf_google_product_category |
Product Feed: Google Product Category | Textfield | Full taxonomy path or numeric ID |
pf_custom_title |
Product Feed: Custom Title | Textfield | Optional feed title override |
pf_custom_descrip |
Product Feed: Custom Description | Textarea | Optional feed description override |
pf_brand |
Product Feed: Brand | Textfield | Brand name (defaults to store name if blank) |
pf_gtin |
Product Feed: GTIN | Textfield | UPC/EAN/ISBN — digits only |
pf_product_type |
Product Feed: Product Type | Textfield | Internal product hierarchy |
pf_material |
Product Feed: Material | Textfield | Primary material composition |
pf_size |
Product Feed: Size | Textfield | Size value if no size attribute exists |
Page-level field:
| Code | Name | Type | Purpose |
|---|---|---|---|
pf_default_google_product_category |
Product Feed: Default Google Product Category | Textfield | Fallback category when no product-level category is set |
Step 3: Set the Default Product Category#
The default category is pre-set to “Apparel & Accessories > Clothing”. Update this to match your store’s primary product type.
- Go to User Interface > Pages
- Search for the page code for your format:
- XML:
PRODUCTDATAFIELD_product_xml_fields - CSV:
PRODUCTDATAFIELD_product_csv_fields
- XML:
- Select the Custom Fields tab
- Update the Product Feed: Default Google Product Category field
- Save the page
Category selection logic: uses the product/variant-level pf_google_product_category if set, otherwise falls back to the page-level pf_default_google_product_category.
Tip
Google, Meta, and TikTok Shop all support Google’s product taxonomy for product categorization. Setting accurate categories improves feed approval and ad performance across all platforms.
Step 4: Data Field & Feed#
The two formats use parallel configurations with format-specific codes. Both queue regeneration on: product changes, attributes, images, variants, inventory, price groups, categories, and URI modifications.
Product Data Field
| Setting | XML | CSV |
|---|---|---|
| Code | product_xml_fields |
product_csv_fields |
| Name | Product Feed Fields (XML) | Product CSV Fields |
| Public | Yes | Yes |
| Trigger | product_xml_fields_trigger |
product_csv_fields_trigger |
Feed Definition
| Setting | XML | CSV |
|---|---|---|
| Code | product_xml_feed |
product_csv_feed |
| Name | Product XML Feed | Product CSV Feed |
| Module | productdata |
productdata |
| File Location | script directory |
script directory |
| File Name | /product_feed.xml |
/product_feed.csv |
| Feed URL | https://your-store-domain/product_feed.xml |
https://your-store-domain/product_feed.csv |
Step 5: Scheduled Tasks#
Each format uses two tasks that run in sequence — a data generation task that triggers a feed output task on completion.
Task 1 — Data Fields Generation
| Setting | XML | CSV |
|---|---|---|
| Description | Product Data Fields (XML) | Product Data Fields (CSV) |
| Module | productdata |
productdata |
| Operation | generate |
generate |
| Trigger | product_xml_fields_trigger |
product_csv_fields_trigger |
| Field | product_xml_fields |
product_csv_fields |
| Generation | queued |
queued |
| Completion trigger | product_xml_feed_trigger |
product_csv_feed_trigger |
Task 2 — Feed Output
| Setting | XML | CSV |
|---|---|---|
| Description | Product XML Feed | Product CSV Feed |
| Module | stdschtasks |
stdschtasks |
| Operation | feed |
feed |
| Trigger | product_xml_feed_trigger |
product_csv_feed_trigger |
| Feed | product_xml_feed |
product_csv_feed |
Both tasks default to Manual run interval. Task 2 fires automatically when Task 1 completes.
To regenerate all products (initial run or full refresh):
- Go to Settings > Scheduled Tasks
- Edit the Product Data Fields task for your format
- Change Generation to All Products
- Save and Run
- After completion, verify results
- Change Generation back to Queued Products
Step 6: Bulk Data Update via CSV#
A product import definition is included for bulk-updating feed fields across all products.
Import Definition Settings:
| Setting | Value |
|---|---|
| Module | productimport |
| Description | Product Data Import |
| Delimiter | Comma |
| Header | Required |
| Product handling | Products=update |
| Custom Fields handling | CustomFields=retain |
CSV column mapping:
code
custom-customfields-pf_google_product_category
custom-customfields-pf_custom_title
custom-customfields-pf_custom_descrip
custom-customfields-pf_brand
custom-customfields-pf_gtin
custom-customfields-pf_product_type
custom-customfields-pf_material
custom-customfields-pf_size
custom-customfields-pf_ignore_product
Sample CSV:
code,custom-customfields-pf_google_product_category,custom-customfields-pf_custom_title,custom-customfields-pf_custom_descrip,custom-customfields-pf_brand,custom-customfields-pf_gtin,custom-customfields-pf_product_type,custom-customfields-pf_material,custom-customfields-pf_size,custom-customfields-pf_ignore_product
TSHIRT001,Apparel & Accessories > Clothing > Shirts,Classic Logo Tee,A premium cotton t-shirt with our classic logo.,Store Brand,1234567890123,Apparel & Accessories > Shirts,100% Cotton,Large,0
TSHIRT002,Apparel & Accessories > Clothing > Shirts,,,Store Brand,1234567890124,Apparel & Accessories > Shirts,100% Cotton,Medium,0
DISCONTINUED01,,,,,,,,,,1
Note
codeis the Miva product codepf_ignore_productuses0(include) or1(exclude)- Omit unused columns but always include the header row
Running the import:
- Go to Data Management > Import > Products
- Select the Product Data Import definition
- Upload your CSV file and review the log for errors
- Run the Product Data Fields scheduled task to regenerate — the feed task fires automatically
Step 7: Verify the Feed#
Open your feed URL in a browser and confirm:
- XML (
/product_feed.xml): loads without errors, products show expected titles, descriptions, prices, and categories - CSV (
/product_feed.csv): rows are present and data looks correct
For both formats also confirm that ignored products do not appear and variants show correct images, GTINs, sizes, and item group IDs.
If the feed is empty:
- Verify products are active with inventory and images
- Confirm
pf_ignore_productis unchecked - Check that scheduled tasks completed without errors
Step 8: Connect to a Shopping Channel#
Submit either feed URL to any platform that accepts a URL-based product feed import. All platforms listed below accept both formats via scheduled or manual fetch.
| Platform | Input Method |
|---|---|
| Google Merchant Center | Products > Feeds — Scheduled fetch or URL fetch |
| Meta Commerce Manager | Commerce Manager — Data feed, scheduled URL fetch |
| TikTok Shop | Catalog Manager — URL feed upload |
Set the fetch frequency to match your scheduled task interval (e.g., daily). After the first crawl, resolve any platform-specific diagnostics such as missing GTINs, mismatched prices, or invalid categories.
Troubleshooting#
Products missing from feed
- Confirm the product is Active and not excluded by an availability group
- Verify
pf_ignore_productis unchecked - Confirm variants are properly configured with inventory
Incorrect category or brand
- Check product-level custom fields
- Verify the page-level default category if the product-level field is blank
- Brand defaults to the store name when
pf_brandis empty
Pricing and stock issues
- Ensure inventory is active and stock is available
- Out-of-stock items are flagged accordingly in the feed
- For products with a minimum quantity greater than 1, verify price calculations match what the platform expects