` tag in the following code snippet has the Xpath `/div/ul/li[1]`.
```
```
If you find the needed Xpath that identifies the location of the code element containing the data you want to extract, you can use the rule box **HTML getElementByXpath**.
Sometimes, the crawled code of your product page can differ from the code of that page accessed on your live website in the developer's panel of your browser. The Xpaths may vary as well. To get the Xpath to the needed element in your crawled code, you can:
Copy your crawled code and paste it into a local file on your computer.
Save the file as an HTML.
Open the HTML file in your browser and proceed using the developer's panel.
HTML getElementById [#html-getelementbyid]
The rule box **HTML getElementById** extracts data from HTML code using a specific ID defined in a tag. If the rule box doesn't find the provided tag ID in a value, it empties the value.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **HTML getElementById** rule box.
In **ID**, enter the tag ID that uniquely identifies the tag containing the data you want to extract.
Select **Save**.
For example, you have the following values in the **html\_code** attribute and want to extract product names from these HTML bodies. You can achieve this with the **HTML getElementById** rule box by entering `productName` as the tag ID:
| **html\_code** (before) | **html\_code** (after) |
| ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| `
Flat leather sandals with a bow
` | `Flat leather sandals with a bow` |
| `
High-heel sandals with a buckle
` | `High-heel sandals with a buckle` |
HTML getElementByTagName [#html-getelementbytagname]
The rule box **HTML getElementByTagName** extracts data from HTML code using a specific name of a tag. If the rule box doesn't find the provided tag name in a value, it empties the value.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **HTML getElementByTagName** rule box.
In **Tagname**, enter the name of the tag containing the data you want to extract.
If a value contains multiple matches of the defined tag, you can enter a number in **Occurance** to let the rule box know which occurrence of the defined tag you want to extract:
* Enter *0* or leave the field empty to extract the first occurrence of the tag.
* Enter *1* to extract the second occurrence of the tag.
If a value contains only one occurrence of the provided tag name, but you want to extract the second one, the rule box empties the value.
Select **Save**.
For example, you have the following values in the **html\_code** attribute and want to extract product names from these HTML bodies. You can achieve this with the **HTML getElementByTagName** rule box by entering `div` as the tag name:
| **html\_code** (before) | **html\_code** (after) |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| `
Flat leather sandals with a bow
High-heel sandals with a buckle
` | `Flat leather sandals with a bow` |
| `
High-heel sandals with a buckle
` | `High-heel sandals with a buckle` |
HTML getElementByXpath [#html-getelementbyxpath]
The rule box **HTML getElementByXpath** extracts data from HTML code using the Xpath leading to the element in the code that stores your data. If the rule box doesn't find the provided Xpath in a value, it empties the value.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **HTML getElementByXpath** rule box.
In **XPath**, enter the path leading to the element in the code that contains the data you want to extract.
If a value contains multiple matches of the defined path, you can enter a number in **Occurance** to let the rule box know which occurrence of the defined path you want to extract:
* Enter *0* or leave the field empty to extract the first occurrence of the path.
* Enter *1* to extract the second occurrence of the path.
If a value contains only one occurrence of the provided path, but you want to extract the second one, the rule box empties the value.
Select **Save**.
For example, you have the following values in the **html\_code** attribute and want to extract product names from these HTML bodies. You can achieve this with the **HTML getElementByXpath** rule box by entering `//div/h1` as the Xpath:
| **html\_code** (before) | **html\_code** (after) |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| `
Flat leather sandals with a bow
High-heel sandals with a buckle
` | `Flat leather sandals with a bow` |
| `
High-heel sandals with a buckle
` | `High-heel sandals with a buckle` |
Further work with the crawled data [#further-work-with-the-crawled-data]
After extracting the needed data using the rule box category *Work with HTML*, you may need to drill further into your HTML data. For example, you can extract data via split strings or regex.
Extract data via split strings [#extract-data-via-split-strings]
To split the HTML code into bits and preserve only the needed parts of it, you can use the following split string rule boxes:
* **Split String** splits a string into parts and removes the unneeded parts.
* **Split String for PLA** splits a string into parts and removes the unneeded parts. If the rule box finds no splitter character in a string, it empties the string.
* **Split String & Filter** splits a string into parts, removes the unneeded data, and trims the length of your resulting values according to a character limit.
* **Split String and Count Items** splits a string into parts, counts them, and replaces the current value with the number of data parts found in it.
See [Change string length](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/change-string-length) for more information on split string rule boxes.
Extract data via regex [#extract-data-via-regex]
To search your HTML data for information that matches specific search patterns defined using regular expressions, you can use the following regex rule boxes:
* **Preg Replace** searches your data for regex matches and replaces the matches with values of your choice.
* **Preg Match** searches your data for a regex match, preserves the matching part of the data, and removes the rest of the string. The **Preg Match** rule box stops scanning a string as soon as it finds a match, so the rule box saves only the first match if there are multiple matches in a string.
* **Preg Match All** has the same functionality as the **Preg Match** rule box, but it lets the platform find and preserve multiple regex matches within a string.
* **Set Value if Match (Regex)** specifies the values of one attribute based on the results of a regex search performed in another attribute.
See [Rule box category Use regular expressions](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/rule-box-category-use-regular-expressions) for more information on regex rule boxes.
# Rule box category Change string length
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The category *Change string length* contains all rule boxes that can help you control the length of your attribute values based on word or character count. Knowing the length of your values, you can cut or extend your values with the rule boxes in this category.
This category can be divided into several subgroups. In the following sections, you can learn how to use the rule boxes of each subgroup:
* [Count the number of characters or words](#section-idm234409194566318)
* [Cut or extend text based on string length](#section-idm234409196982844)
* [Extract specific parts of values with split string rule boxes](#section-idm232221351802675)
* [Add a static or dynamic value if it fits a character limit](#section-idm23440920712381)
Count the number of characters or words [#count-the-number-of-characters-or-words]
The category *Change string length* contains the rule boxes **Character count** and **Word count** to let you count the number of characters and words in your attribute values.
Character count [#character-count]
The **Character count** rule box counts the number of characters or bytes in a text value and overwrites the current value with the result.
You can also find out the number of characters in your attribute values using the *Length Distribution* section of the Analyzer feature. See [Analyze your data in Data View](/docs/help-center/map-and-optimize-your-data/data-view/analyze-your-data-in-data-view).
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Character count** rule box.
In the drop-down menu, choose whether the rule box should count and output the number of bytes or characters.
Select **Save**.
For example, you have the following values in the **color** attribute. See how the **Character count** rule box counts the number of characters and overwrites the current values with the result if you select *character* in the drop-down menu:
| **color** (before) | **color** (after) |
| ------------------ | ----------------- |
| *black* | `5` |
| *red* | `3` |
| | `0` |
Word count [#word-count]
The **Word count** rule box counts the number of words in a text value and overwrites the current value with the result.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Word count** rule box.
Select **Save**.
For example, you have the following values in the **color** attribute. See how the **Word count** rule box counts the number of words and overwrites the current values with the result:
| **color** (before) | **color** (after) |
| ------------------ | ----------------- |
| *black and white* | `3` |
| *red* | `1` |
| | `0` |
Cut or extend text based on string length [#cut-or-extend-text-based-on-string-length]
The rule box category *Change string length* contains the rule boxes **Cut first characters**, **Cut last characters**, **Cut last words**, **Extend Text**, **Trim Category Tree**, **Trim to 70 characters**, and **Trim to 150 characters** to let you reduce or increase the length of text values in your site.
You can also use the *Shorten Text* and *Lengthen Text* data services to achieve similar results. See [Shorten, lengthen, or create text from attributes with AI data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/shorten-lengthen-or-create-text-from-attributes-with-ai-data).
Cut first characters [#cut-first-characters]
The **Cut first characters** rule box removes a desired number of characters at the beginning of your text values, including when it means cutting off a part of a word. This rule box can be useful if you need to meet a length limit for an attribute's values or remove the same part of text added at the beginning of all values.
You can also use the *Shorten Text* data service to achieve similar results. See [Shorten, lengthen, or create text from attributes with AI data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/shorten-lengthen-or-create-text-from-attributes-with-ai-data).
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Cut first characters** rule box.
In the **Use** drop-down menu, choose whether the rule box should cut the number of characters or bytes at the beginning of each value.
In the input field, enter a desired number of characters or bytes that the rule box should cut off. If a value is shorter than the number of characters in this field, the rule box empties the value.
Select **Save**.
For example, you have the following values in the **title** attribute and want to cut off the first 15 characters in each value because the sale is over. You can achieve this with the following setup of the **Cut first characters** rule box:
| **title** (before) | **title** (after) |
| ----------------------------- | ----------------- |
| *SALE! 50% OFF! Socks* | `Socks` |
| *50% OFF Cap* | \[empty] |
| *SALE! 50% OFF! Pajama Pants* | `Pajama Pants` |
Cut last characters [#cut-last-characters]
The **Cut last characters** rule box does a hard cut when a text value reaches a desired character limit, including when it means cutting off a part of a word. This rule box can be useful if you need to meet a length limit for an attribute's values.
You can also use the *Shorten Text* data service to achieve similar results. See [Shorten, lengthen, or create text from attributes with AI data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/shorten-lengthen-or-create-text-from-attributes-with-ai-data).
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Cut last characters** rule box.
In **Cut last characters if length exceeds ... characters**, enter a desired character limit to let the rule box cut off all following characters when a text length reaches the limit.
Select **Save**.
For example, you have the following values in the **title** attribute and want each value to stay within the limit of 15 characters. You can achieve this with the **Cut last characters** rule box by entering `15` as the limit:
| **title** (before) | **title** (after) |
| -------------------------------------- | ----------------- |
| *Red Socks* | `Red Socks` |
| *Pillow Case with Fluffy Eco-Feathers* | `Pillow Case wit` |
| *Pajama Pants for Kids* | `Pajama Pants f` |
Compare these results to how the **Cut last words** rule box works. See [Cut last words](#N1720605542410).
Cut last words [#cut-last-words]
The **Cut last words** rule box cuts off all words that exceed a desired character limit in a text value and ensures your text values don't break off in the middle of a word, unlike the **Cut last characters** rule box. This rule box can be useful if you need to meet a length limit for an attribute's values.
You can also use the *Shorten Text* data service to achieve similar results. See [Shorten, lengthen, or create text from attributes with AI data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/shorten-lengthen-or-create-text-from-attributes-with-ai-data).
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Cut last words** rule box.
In **Cut last words if length exceeded**, enter a desired character limit to let the rule box cut off all words outside the character limit.
Select **Save**.
For example, you have the following values in the **title** attribute and want each value to stay within the limit of 15 characters. At the same time, you need each value to end with a full word. You can achieve this with the **Cut last words** rule box by entering `15` as the limit:
| **title** (before) | **title** (after) |
| -------------------------------------- | ----------------- |
| *Red Socks* | `Red Socks` |
| *Pillow Case with Fluffy Eco-Feathers* | `Pillow Case` |
| *Pajama Pants for Kids* | `Pajama Pants` |
Compare these results to how the **Cut last characters** rule box works. See [Cut last characters](#N1720606785014).
Extend Text [#extend-text]
The **Extend Text** rule box lets you increase the length of a text value by setting a desired character limit and, if a value is shorter, filling the rest of it with a desired text until it reaches the limit. If a value doesn't reach the character limit with the added text string, the rule box repeats the string as many times as necessary to reach the character limit. This rule box can be useful if you need to meet a minimum length requirement for an attribute's values.
You can also use the *Lengthen Text* data service to achieve similar results. See [Shorten, lengthen, or create text from attributes with AI data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/shorten-lengthen-or-create-text-from-attributes-with-ai-data).
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Extend Text** rule box.
In **length of the output string**, enter a desired character limit that the rule box should meet when adding and repeating a string.
If a current value exceeds the character limit you set in this field, the Extend Text rule box doesn't add any text to the value and doesn't cut it to fit the limit.
In **fill character(s)**, enter the string you want the rule box to add and repeat in your text value until it reaches the desired character limit.
In the drop-down menu, select where you want to add the string within the value:
1. *left* adds the string at the beginning of the current value.
2. *right* adds the string at the end of the current value.
3. *both* adds the string both at the beginning and end of the current value.
Select **Save**.
For example, you have the following values in the **short\_description** attribute and want each value to be exactly 30 characters long. Some values are shorter than that, so you want to add a piece of text to extend the length of those values and reach the desired 30-character limit. You can achieve this with the following setup of the **Extend Text** rule box:
| **short\_description** (before) | **short\_description** (after) |
| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| *Red Socks* | `Red Socks. Next-Day Shipping.` There is a space character at the end of the value. |
| *Pillow Case with Fluffy Eco-Feathers* | *Pillow Case with Fluffy Eco-Feathers* |
| *Pajama Pants for Kids* | `Pajama Pants for Kids. Next-Da` |
Trim Category Tree [#trim-category-tree]
The **Trim Category Tree** rule box cuts off category items at the `>` delimiter if they exceed a defined character limit. This rule box can be useful if you need to meet a length limit for the **category** attribute.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Trim Category Tree** rule box.
In **Cut last categories at the delimiter '>' if length exceeds ... characters**, enter a desired character limit for your categories.
Select **Save**.
For example, you have the following values in the **category** attribute and want each value to stay within the limit of 50 characters. You can achieve this with the **Trim Category Tree** rule box by entering `50` as the limit:
| **category** (before) | **category** (after) |
| ------------------------------------------------------- | -------------------------------------------- |
| *Apparel & Accessories > Shoe Accessories* | `Apparel & Accessories > Shoe Accessories` |
| *Home & Garden > Linens & Bedding > Bedding > Blankets* | `Home & Garden > Linens & Bedding > Bedding` |
| *Apparel & Accessories > Clothing > Underwear & Socks* | `Apparel & Accessories > Clothing` |
Trim to 70 characters [#trim-to-70-characters]
Google accepts values for the **brand** attribute if they are no longer than 70 characters.
The **Trim to 70 characters** rule box does a hard cut when a text value reaches a 70-character limit, including when it means cutting off a part of a word.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Trim to 70 characters** rule box.
Select **Save**.
For example, you have the following values in the **brand** attribute and want each value to stay within the limit of 70 characters. You can achieve this with the **Trim to 70 characters** rule box:
| **brand** (before) | **brand** (after) |
| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| *Natural History Museum and Royal Philharmonic Orchestra (RPO) Collaboration* | `Natural History Museum and Royal Philharmonic Orchestra (RPO) Collabo` |
| *Harley-Davidson Motor Company* | `Harley-Davidson Motor Company` |
Trim to 150 characters [#trim-to-150-characters]
Google accepts values for the **title** attribute if they are no longer than 150 characters.
The **Trim to 150 characters** rule box does a hard cut when a text value reaches a 150-character limit, including when it means cutting off a part of a word.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Trim to 150 characters** rule box.
Select **Save**.
For example, you have the following values in the **title** attribute and want each value to stay within the limit of 150 characters. You can achieve this with the **Trim to 150 characters** rule box:
| **title** (before) | **title** (after) |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *Kitchen Container for Organic Waste - Pine Wood & Stainless Steel for Organic Leftovers - Dishwasher-Safe - Removable Lid - Removable Insert* | `Kitchen Container for Organic Waste - Pine Wood & Stainless Steel for Organic Leftovers - Dishwasher-Safe - Removable Lid - Removable Insert` |
| *Medium-Size Kitchen Bin for Compost with Lid Indoor 8L - Green Plastic Container for Organic Waste - Ventilation Holes Preventing Humidity Build-Up and Odor Spreading to Kitchen* | `Medium-Size Kitchen Bin for Compost with Lid Indoor 8L - Green Plastic Container for Organic Waste - Ventilation Holes Preventing Humidity Build-Up a` |
Extract specific parts of values with split string rule boxes [#extract-specific-parts-of-values-with-split-string-rule-boxes]
The category *Change string length* contains the rule boxes **Split String**, **Split String for PLA**, **Split String & Filter**, and **Split String and Count Items** to let you shorten the values of attributes containing category paths, lists, or other data types that involve multiple data points. Using these rule boxes, you can split each text value into data points using a delimiter and preserve only the needed parts of the value in an attribute.
All split string rule boxes follow a specific method of numbering data points within strings using delimiters. This method supports both positive and negative numbers. For example, when applying any split string rule box to the category path *Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds*, the platform assigns the following numbers to each step of the category path:
| Positive numbers | `0` | `>` | `1` | `>` | `2` | `>` | `3` |
| ---------------- | ------------------------ | -------------- | -------------- | ---------- | --- | --- | --- |
| Category path | `Animals & Pet Supplies` | `Pet Supplies` | `Dog Supplies` | `Dog Beds` | | | |
| Negative numbers | `-4` | `-3` | `-2` | `-1` | | | |
Using these numbers and the greater-than sign (`>`) as a delimiter in a split string rule box, you can let the platform know which data points you want to retrieve and what character splits the string into data points.
You can use both positive and negative numbers of data points in a split string rule box. However, if you need to retrieve a couple of data points at the end of a string, and the strings in your attribute don't always have the same number of data points, you should use negative numbers.
Split String [#split-string]
The **Split String** rule box uses delimiters and analyzes the values of an attribute to extract and save only those parts of the values you need.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Split String** rule box.
Enter the delimiter character that splits your string into multiple data points in **Splitter**.
The platform never displays the splitter in the output if you extract only one data point from the value. To see the splitter in the output value, you need to extract at least two data points.
In **From**, enter the number of the data point from which the platform should start extracting information. The expected input format for this field is a digit.See the [previously shown numbering example](#informaltable-idm243305572252982) to identify the number of your desired data point.
Enter how many data points you want the platform to extract from your values in **Items**.The expected input format for this field is a digit. Only positive numbers are acceptable.
If you leave **Items** empty, the platform extracts all data points of the string, starting with the data point specified in **From**.
Select **Save**.
For example, you want to shorten a category path and keep only the first 2 category items in the **category** attribute. You can achieve this with the following setup of the **Split String** rule box:
| **category** (before) | **category** (after) |
| ----------------------------------------------------------------- | --------------------------------------- |
| *Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds* | `Animals & Pet Supplies > Pet Supplies` |
| *Home & Garden > Linens & Bedding > Bedding > Blankets* | `Home & Garden > Linens & Bedding` |
| *Apparel & Accessories > Clothing* | `Apparel & Accessories > Clothing` |
The **Split String** rule box can also let you extract information from a long text. For example, you want to extract product colors from the **description** attribute where all descriptions use the same template: *The manufacturer uses only natural and hypoallergenic materials to produce these \[products]. Colors available: color1, color2, and color3. Size range: size1, size2, and size3*. You can extract colors from these descriptions with the following setup of two **Split String** rule boxes:
There is a space character at the end of the input value `Colors available:`.
| **description** (before) | **description** (intermediate values before applying the second rule box) | **description** (after) |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------- |
| *The manufacturer uses only natural and hypoallergenic materials to produce these dog beds. Colors available: black, gray, white, green, yellow, and lilac. Size range: XS, S, M, L, XL, and XXL* | `The manufacturer uses only natural and hypoallergenic materials to produce these dog beds. Colors available: black, gray, white, green, yellow, and lilac` | `black, gray, white, green, yellow, and lilac` |
| *The manufacturer uses only natural and hypoallergenic materials to produce these dog blankets. Colors available: brown, gray, green, and blue. Size range: XS, S, L, and XXL* | `The manufacturer uses only natural and hypoallergenic materials to produce these dog blankets. Colors available: brown, gray, green, and blue` | `brown, gray, green, and blue` |
| *The manufacturer uses only natural and hypoallergenic materials to produce these climbing trees for cats. Colors available: beige, gray, white, black, and brown. Size range: M, L, and XL* | `The manufacturer uses only natural and hypoallergenic materials to produce these climbing trees for cats. Colors available: beige, gray, white, black, and brown` | `beige, gray, white, black, and brown` |
Split String for PLA [#split-string-for-pla]
The **Split String for PLA** rule box uses delimiters and analyzes the values of an attribute to extract and save only those parts of the values you need. If the rule box finds no delimiter in a value, it empties the value to prevent you from sending incorrect data to your export channels.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Split String for PLA** rule box.
Enter the delimiter character that splits your string into multiple data points in **Splitter**.
The platform never displays the splitter in the output if you extract only one data point from the value. To see the splitter in the output value, you need to extract at least two data points.
In **From**, enter the number of the data point from which the platform should start extracting information. The expected input format for this field is a digit.See the [previously shown numbering example](#informaltable-idm243305572252982) to identify the number of your desired data point.
If you enter `0` in **From**, the platform starts extracting information from your first data point and, after finding no splitter character in the string, returns the entire string as if it consisted of one data point only.To have the Split String for PLA rule box empty the values that contain no splitter characters, specify any number in **From** but for `0` and negative numbers.
Enter how many data points you want the platform to extract from your values in **Items**.The expected input format for this field is a digit. Only positive numbers are acceptable.
If you leave **Items** empty, the platform extracts all data points of the string, starting with the data point specified in **From**.
Select **Save**.
Google accepts the following values for the **gender** attribute:
| Rule box and setup | **category** (before) | **category** (after) |
| ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------- |
|
| *Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds* | `Pet Supplies > Dog Supplies` |
| *Apparel & Accessories > Clothing > Activewear* | `Clothing > Activewear` | |
| *Arts & Entertainment --- Event Tickets* | `Arts & Entertainment --- Event Tickets` | |
|
| *Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds* | `Pet Supplies > Dog Supplies` |
| *Apparel & Accessories > Clothing > Activewear* | `Clothing > Activewear` | |
| *Arts & Entertainment --- Event Tickets* | | |
See [Split String](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/change-string-length#section-idm4613280768827233045222567009) for more information.
Split String & Filter [#split-string--filter]
The **Split String & Filter** rule box uses delimiters and analyzes the values of an attribute to extract and save only those parts of the values you need. Additionally, it lets you limit the length of your resulting value. If the resulting value exceeds its maximum length, the rule box doesn't leave chunks of data points in the value. If a part of a data point doesn't fit into the character limit, the platform omits the data point from the resulting value entirely.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Split String & Filter** rule box.
Enter the delimiter character that splits your string into multiple data points in **Splitter**.
The platform never displays the splitter in the output if you extract only one data point from the value. To see the splitter in the output value, you need to extract at least two data points.
In **From**, enter the number of the data point from which the platform should start extracting information. The expected input format for this field is a digit.See the [previously shown numbering example](#informaltable-idm243305572252982) to identify the number of your desired data point.
Enter how many data points you want the platform to extract from your values in **Items**.The expected input format for this field is a digit. Only positive numbers are acceptable.
If you leave **Items** empty, the platform extracts all data points of the string, starting with the data point specified in **From**.
In **Max Length**, specify a character or byte limit for your resulting value.
In **Limit by**, select between *Characters* and *Bytes*.
Select *Bytes* in the **Limit by** to avoid rejection by the target system that has a byte limit, or if your attribute values contain non-ASCII characters, such as accents or language-specific characters. For example, Amazon Vendor has a 250-byte keyword limit for attribute value sizes, especially for generic keyword attributes.
Select **Save**.
Compare the output values of the **Split String** and **Split String & Filter** rule boxes applied to the same **category** attribute:
| Rule box and setup | **category** (before) | **category** (after) |
| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------ |
|
| *Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds* | `Animals & Pet Supplies > Pet Supplies > Dog Supplies` |
| *Apparel & Accessories > Clothing > Activewear* | `Apparel & Accessories > Clothing > Activewear` | |
| *Arts & Entertainment > Concerts, Shows, & Other Events > Event Tickets* | `Arts & Entertainment > Concerts, Shows, & Other Events > Event Tickets` | |
|
| *Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds* | `Animals & Pet Supplies > Pet Supplies` |
| *Apparel & Accessories > Clothing > Activewear* | `Apparel & Accessories > Clothing > Activewear` | |
| *Arts & Entertainment > Concerts, Shows, & Other Events > Event Tickets* | `Arts & Entertainment` | |
See [Split String](#section-idm4613280768827233045222567009) for more information.
Split String and Count Items [#split-string-and-count-items]
The **Split String and Count Items** rule box analyzes the values of an attribute to split them into separate data points and count how many data points each value contains. The rule box uses a delimiter to count the number of data points within a value and overwrites the value with the resulting total.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Split String and Count Items** rule box.
In **Please select Separator!**, enter the character that splits your value into data points.
If a value doesn't contain the defined delimiter character, the rule box considers it a value with one data point and outputs `1`.
Select **Save**.
For example, you have the following values in the **category** attribute and want to learn how many category items each product's category has. You can achieve this with the **Split String and Count Items** rule box by entering `>` as the delimiter:
| **category** (before) | **category** (after) |
| ----------------------------------------------------------------- | -------------------- |
| *Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds* | `4` |
| *Home & Garden > Linens & Bedding > Bedding > Blankets* | `4` |
| *Apparel & Accessories > Clothing* | `2` |
| *Apparel & Accessories \~ Clothing* | `1` |
Add a static or dynamic value if it fits a character limit [#add-a-static-or-dynamic-value-if-it-fits-a-character-limit]
The category *Change string length* contains the rule boxes **Add Value if Fits** and **Add Column if Fits** to let you add a static or dynamic value to an attribute if the current value can fit the added string without exceeding a character limit.
See [Find the needed rule box category](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category#section-idm234375746102324) for a definition of static and dynamic values.
Add Value if Fits [#add-value-if-fits]
The **Add Value if Fits** rule box lets you add a word or phrase to your current values if the overall length of the resulting value doesn't exceed a desired character limit.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Add Value if Fits** rule box.
In **Mode**, select where you want to add a string within the current value:
1. *append* adds the string at the end of the current value. To separate it from the rest of the text, add a space character at the beginning of your input in **Text**.
2. *prepend* adds the string at the beginning of the current value. To separate it from the rest of the text, add a space character at the end of your input in **Text**.
Enter the string you wish to append or prepend to your current values in **Text**.
Enter the desired character limit in **Max Length**.
If a current value exceeds the character limit you set in this field, the Add Value if Fits rule box doesn't add any text to the value and doesn't cut it to fit the limit.
Select **Save**.
For example, you have the following values in the **title** attribute and want to add *ORDER NOW* at the end of each title if the overall length of the resulting value doesn't exceed 150 characters. You can achieve this with the following setup of the **Add Value if Fits** rule box:
A space character at the beginning of the input in **Text** separates the added text from the current value.
| **title** (before) | **title** (after) |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *Kitchen Container for Organic Waste - Pine Wood & Stainless Steel for Organic Leftovers - Dishwasher-Safe - Removable Lid - Removable Insert* | `Kitchen Container for Organic Waste - Pine Wood & Stainless Steel for Organic Leftovers - Dishwasher-Safe - Removable Lid - Removable Insert ORDER NOW` |
| *Medium-Size Kitchen Bin for Compost with Lid Indoor 8L - Green Plastic Container for Organic Waste - Ventilation Holes Preventing Humidity Build-Up and Odor Spreading to Kitchen* | `Medium-Size Kitchen Bin for Compost with Lid Indoor 8L - Green Plastic Container for Organic Waste - Ventilation Holes Preventing Humidity Build-Up and Odor Spreading to Kitchen` |
The value *Medium-Size Kitchen Bin for Compost with Lid Indoor 8L - Green Plastic Container for Organic Waste - Ventilation Holes Preventing Humidity Build-Up and Odor Spreading to Kitchen* exceeds the 150-character limit, so the rule box doesn't add the text *ORDER NOW*.
Add Column if Fits [#add-column-if-fits]
The **Add Column if Fits** rule box lets you add the values of another attribute to your current values if the overall length of the resulting value doesn't exceed a desired character limit.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Add Column if Fits** rule box.
Select the attribute you want to add to your current values in **Column**.
In **Mode**, select where you want to add the values of the chosen attribute within the current values:
1. *append* adds the string at the end of the current value.
2. *prepend* adds the string at the beginning of the current value.
In **Max Length**, specify a character limit for the resulting values.
Optionally, you can add some text before or after the added attribute value:
1. Enter the desired text in the input field **your text**.
2. Open the drop-down menu on the left to select *Text Before* or *Text After* and choose whether to add the text before or after the added attribute value.
Select **Save**.
For example, you have the following values in the **title** attribute and want to add the color of the product at the end of each title if the overall length of the resulting value doesn't exceed 150 characters. You can achieve this with the following setup of the **Add Column if Fits** rule box:
| **color** (no changes) | **title** (before) | **title** (after) |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *Green* | *Kitchen Container for Organic Waste - Pine Wood & Stainless Steel for Organic Leftovers - Dishwasher-Safe - Removable Lid - Removable Insert* | `Kitchen Container for Organic Waste - Pine Wood & Stainless Steel for Organic Leftovers - Dishwasher-Safe - Removable Lid - Removable Insert - Green` |
| *Orange* | *Medium-Size Kitchen Bin for Compost with Lid Indoor 8L - Green Plastic Container for Organic Waste - Ventilation Holes Preventing Humidity Build-Up and Odor Spreading to Kitchen* | *Medium-Size Kitchen Bin for Compost with Lid Indoor 8L - Green Plastic Container for Organic Waste - Ventilation Holes Preventing Humidity Build-Up and Odor Spreading to Kitchen* |
The value *Medium-Size Kitchen Bin for Compost with Lid Indoor 8L - Green Plastic Container for Organic Waste - Ventilation Holes Preventing Humidity Build-Up and Odor Spreading to Kitchen* is over 150 characters long, so the rule box doesn't append the value *Orange* from **color**.
# Rule box category Clean up values
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The category *Clean up values* contains all rule boxes that can help you detect and remove irregularities in your data. For example, you can filter GTINs, separate words, decode HTML and Base64, translate colors, remove consecutive whitespace, or remove whitespace at the beginning and end of the value. Besides that, you can detect and extract values using the rule boxes in this category.
This category can be divided into several subgroups. In the following sections, you can find how to use the rule boxes of the *Clean up values* category:
* [Detect and extract information from an attribute](#section-idm232219360551454)
* [Filter GTINs](#section-idm232219357000848)
* [Decode special characters and remove HTML tags](#section-idm232219357363796)
* [Add or remove spaces](#section-idm23221948603919)
* [Remove parentheses and translate colors](#section-idm234379320036808)
Detect and extract information from an attribute [#detect-and-extract-information-from-an-attribute]
The rule box category *Clean up values* contains the rule boxes **Detect and Extract Value**, **Detect Brand**, and **Detect Color**. Using this rule box category, you can extract product information, such as brand or color, from one attribute into another. You can also detect and extract other desired values using lists.
Detect and Extract Value [#detect-and-extract-value]
You can find desired values in an attribute and extract them into another attribute. Using a *Standard Inclusion/Exclusion* list, the **Detect and Extract Value** rule box finds a match in a product's value and adds it to the attribute where you apply the rule box.
The platform goes through the terms on your list in the order you added them to the list. First, the platform looks for a match of the first term. If it finds a match for this term in a product's value, it extracts the match to the attribute where you apply the **Detect and Extract Value** rule box. Then, the platform moves on to the next product. Once it scans all products for a match of the first term, it moves on to the second term on your list to see if the products with no match of the first term contain a match of the second term. This process finishes when the platform has scanned all terms on your list. It may finish earlier if the platform finds matches for all your products before reaching the end of the list.
Before adding and setting up this rule box, you must go to **Lists** from your site's main menu and create a *Standard Inclusion/Exclusion* list with the values you want to extract. See [Exclude products with the Standard Inclusion/Exclusion list](/docs/help-center/map-and-optimize-your-data/lists/exclude-products-with-the-standard-inclusion-exclusion-list).
The order of the values in your list determines which values the platform adds to the attribute where you apply the rule box.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Detect and Extract Value** rule box to the attribute where you want to add the extracted values.
In **Input Column**, select the attribute where you want to search for matches. This drop-down list shows attributes available at the previous stage.
In **Detection List**, select the Standard Inclusion/Exclusion list you created for the values you want to detect and extract.
In **Mode**, select how you want to add the extracted values in your current attribute:
1. *assign* completely overwrites the current value with the extracted value.
2. *append* adds the extracted value at the end of the current value.
3. *prepend* adds the extracted value at the beginning of the current value.
In **Match Type**, select how the platform should extract the values from your list:
* *term can occur anywhere* takes the detected match from any place within the selected attribute's values, even if it is part of a word.
* *just entire word* takes the detected match only if it matches an entire word within the selected attribute's values.
* *content starts with* takes the detected match if it is at the start of the selected attribute's values, even if it is part of a word.
* *content starts with entire word* takes the detected match only if it matches an entire word at the start of the selected attribute's values.
In **Case**, select whether the matches should be case-sensitive:
* *insensitive* ignores the case of text values when matching them to the values on the list.
* *sensitive* checks if the case of the text values in the current attribute matches the case of the values on the list and extracts values only if the case matches.
In **On No Match**, select what should occur if there is no match:
* *set Empty* empties the value.
* *set Original Value* doesn't change the current value.
Select **Save**.
For example, you have a *Standard Inclusion/Exclusion* list with the following values:
* *purses*
* *shoes and socks*
* *sock*
If a term on the list matches an entire word in the **short description** attribute values in the import stage, you want to extract it into the **description\_keywords** attribute in the intermediate stage.
You add the **Detect and Extract Value** rule box to the **description\_keywords** attribute and set it up as follows:
Here is the data in your attributes after applying the rule box:
| **short description** (no changes) | **description\_keywords** (before) | **description\_keywords** (after) |
| ---------------------------------------- | ---------------------------------- | --------------------------------- |
| *socks, shoes* | | |
| *shoes and socks here* | | `shoes and socks` |
| *it is a set of socks, pants, and shoes* | | |
The values *socks, shoes* and *it is a set of socks, pants, and shoes* match the value *sock* from the list, but the rule box doesn't extract them into the attribute **description\_keywords** because they match a part of a word instead of an entire word.
Detect Brand [#detect-brand]
The **Detect Brand** rule box detects brands in one attribute and extracts them into another attribute. This rule box scans an attribute's values for a match of brand names stored in our database and adds the matches into the attribute where you apply the rule box.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Detect Brand** rule box.
Select the attribute that contains the brand information in the **Column** drop-down list.
In **Output**, select what you want to do with the extracted brand values in your current attribute:
1. *assign* completely overwrites the current value with the detected brand value.
2. *append* adds the detected brand value at the end of the current value.
3. *prepend* adds the detected brand value at the beginning of the current value.
4. *remove* deletes the detected brand value from the current value.
In **On No Match**, select what should occur if there is no brand match in your values:
* *leave old value* doesn't change the current value.
* *set empty* empties the value.
Select **Save**.
For example, you have the following values in your **title** attribute and want to extract the brands mentioned in the titles into the **brand** attribute. You can achieve this with the following setup of the **Detect Brand** rule box:
| **title** (no changes) | **brand** (before) | **brand** (after) |
| ---------------------- | ------------------ | ----------------- |
| *Nike sneakers* | | `Nike` |
| *acer laptop* | *Asus* | `acer` |
| *Gucci suit* | *Prada* | `Gucci` |
Detect Color [#detect-color]
The **Detect Color** rule box detects colors in one attribute and extracts them into another attribute. This rule box scans an attribute's values for a match of color names stored in our database and adds the matches into the attribute where you apply the rule box.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Detect Color** rule box.
Select the attribute that contains the color information in the **Column** drop-down menu.
In **Output**, select what you want to do with the extracted color values in your current attribute:
1. *append* adds the detected color value at the end of the current value.
2. *prepend* adds the detected color value at the beginning of the current value.
3. *assign* completely overwrites the current value with the detected color value.
4. *remove* deletes the detected color value from the current value.
In **Language**, select which language your colors are in. The options are German, English, Spanish, French, Italian, Dutch, and Thai. If you select *all*, the rule box detects color names matching colors in any of these languages.
In **On No Match**, select what should occur if there is no color match in your values:
* *leave old value* doesn't change the current value.
* *set empty* empties the value.
Select **Save**.
For example, you have the following values in your **title** attribute and want to extract the colors mentioned in the titles into the **color** attribute. You can achieve this with the following setup of the **Detect Color** rule box:
| **title** (no changes) | **color** (before) | **color** (after) |
| ---------------------- | ------------------ | ----------------- |
| *Nike sneakers blue* | | `blue` |
| *acer laptop silver* | *gray* | `silver` |
| *Gucci suit black* | *dark* | `black` |
Filter GTINs [#filter-gtins]
Most exports require each product to have a valid product identifier, such as Global Trade Item Number (GTIN). GTIN is a unique and internationally recognized product identifier. The **Filter GTINs** rule box detects invalid GTINs via a checksum digit and deletes them.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Filter GTINs** rule box.
Select one of the options in the **Advanced Behavior** drop-down menu to fix your values and make them valid GTINs:
* *Fill up to 14 digits* adds one or more zeros at the beginning of the value until the value length reaches 14 digits.
* *Fill up to 13 digits* adds one or more zeros at the beginning of the value until the value length reaches 13 digits.
* *Trim leading zeroes* removes all zeros from the beginning of the value.
* *Leave unchanged* keeps the original value.
Select **Save**.
For example, you have the following values in your **GTIN** attribute. You want to remove all invalid GTINs and ensure all valid GTINs are 14 digits long. You can achieve this with the **Filter GTINs** rule box by selecting *Fill up to 14 digits* as the advanced behavior:
| **GTIN** (before) | **GTIN** (after) |
| ----------------- | ---------------- |
| *811571013579* | `00811571013579` |
| *198002236142* | `00198002236142` |
| *194743857492* | |
The rule box checks if the GTINs are valid and adds zeros at the beginning of a value if the length of a valid GTIN is less than 14 characters. If a GTIN is invalid, the rule box empties the value.
Decode special characters and remove HTML tags [#decode-special-characters-and-remove-html-tags]
The rule box category *Clean up values* contains the rule boxes **Fix and Decode HTML**, **Decode base64 content**, and **Remove HTML Tags**. If you have pieces of code or HTML tags left in your data, you can convert them into readable text using these rule boxes.
Fix and Decode HTML [#fix-and-decode-html]
If your values have broken or encoded HTML tags, such as `&` or `ß` instead of `&` or `ß`, the **Fix and Decode HTML** rule box converts them into regular text characters.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Fix and Decode HTML** rule box.
Select **Save**.
For example, you have the following values in your **category** attribute and want to fix the broken characters. You can achieve this with the **Fix and Decode HTML** rule box:
| **category** (before) | **category** (after) |
| ------------------------------------------------------- | ------------------------------------------------------- |
| *Home & Garden > Linens & Bedding > Bedding > Blankets* | `Home & Garden > Linens & Bedding > Bedding > Blankets` |
| *Apparel & Accessories > Clothing > Activewear* | `Apparel & Accessories > Clothing > Activewear` |
| *Apparel & Accessories > Clothing > Underwear & Socks* | `Apparel & Accessories > Clothing > Underwear & Socks` |
Decode base64 content [#decode-base64-content]
If your values have broken or encoded base64 tags, the **Decode base64 content** rule box converts them into readable text. For example, you can convert *VGV4dCBFeGFtcGxl* into `Text Example`.
To use the **Decode base64 content** rule box, you first should prepend the values in your attribute with `base64:`. See [Add static or dynamic values](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/add-static-or-dynamic-values#section-idm243451095559490).
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Decode base64 content** rule box.
Select **Save**.
For example, you have the following values in your **category** attribute and want to decode them from base64 into regular text. You can achieve this with the **Decode base64 content** rule box:
| **category** (before) | **category** (after) |
| --------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| *base64:SG9tZSAmIEdhcmRlbiA+IExpbmVucyAmIEJlZGRpbmcgPiBCZWRkaW5nID4gQmxhbmtldHM=* | `Home & Garden > Linens & Bedding > Bedding > Blankets` |
| *base64:QXBwYXJlbCAmIEFjY2Vzc29yaWVzID4gQ2xvdGhpbmcgPiBBY3RpdmV3ZWFy4oCL* | `Apparel & Accessories > Clothing > Activewear` |
| *QXBwYXJlbCAmIEFjY2Vzc29yaWVzID4gQ2xvdGhpbmcgPiBVbmRlcndlYXIgJiBTb2Nrcw==* | `QXBwYXJlbCAmIEFjY2Vzc29yaWVzID4gQ2xvdGhpbmcgPiBVbmRlcndlYXIgJiBTb2Nrcw==` |
Remove HTML Tags [#remove-html-tags]
The **Remove HTML Tags** rule box removes any leftover HTML tags, such as *\* or *\<\br>*, from your attributes.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Remove HTML Tags** rule box.
Select **Save**.
For example, you have the following values in the **description** attribute and want to extract text from these HTML bodies. You can achieve this with the **Remove HTML Tags** rule box:
| **description** (before) | **description** (after) |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `
Flat leather sandals with a bow
` | `Flat leather sandals with a bow` |
| `
High-heel sandals with a buckle
` | `High-heel sandals with a buckle` |
| `Power Smoothie - Start the day with an energy boost.
5 reasons to buy it: - Gluten free,
- Vitality,
- Iron and Calcium,
- 100% organic,
- Brazilian fruits: Acai (29%), Grape (25%), Mango (18%), Banana (17%), Pineapple (11%).
` | `Power Smoothie - Start the day with an energy boost. 5 reasons to buy it: Gluten free, Vitality, Iron and Calcium, 100% organic, Brazilian fruits: Acai (29%), Grape (25%), Mango (18%), Banana (17%), Pineapple (11%).` |
Add or remove spaces [#add-or-remove-spaces]
The rule box category *Clean up values* contains the rule boxes **Remove Consecutive Whitespace**, **Remove Spaces At Beginning and End (Trim)**, and **Separate Words**. If your attribute values have more or less space than necessary, you can use these rule boxes to clean up the text.
Remove Consecutive Whitespace [#remove-consecutive-whitespace]
If you have more than one consecutive space character between words, the **Remove Consecutive Whitespace** rule box removes excessive space. The words should remain separated with only one space.
You can also remove or replace space using the **Text Replace** rule box. See [Text Replace](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/replace-values#N1658483877601).
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Remove Consecutive Whitespace** rule box.
Select **Save**.
For example, you have the following values in your **category** attribute and want to remove the extra spaces. You can achieve this with the **Remove Consecutive Whitespace** rule box:
| **category** (before) | **category** (after) |
| ------------------------------------------------------- | ------------------------------------------------------- |
| *Home & Garden > Linens & Bedding > Bedding > Blankets* | `Home & Garden > Linens & Bedding > Bedding > Blankets` |
| *Apparel & Accessories > Clothing > Activewear* | `Apparel & Accessories > Clothing > Activewear` |
| *Apparel & Accessories > Clothing > Underwear & Socks* | `Apparel & Accessories > Clothing > Underwear & Socks` |
Remove Spaces At Beginning And End (Trim) [#remove-spaces-at-beginning-and-end-trim]
The **Remove Spaces At Beginning and End (Trim)** rule box removes unnecessary space characters at the beginning or end of your attribute's values.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Remove Spaces At Beginning And End (Trim)** rule box.
Select **Save**.
For example, you have the following values in your **description** attribute and want to remove the extra spaces. You can achieve this with the **Remove Spaces At Beginning and End (Trim)** rule box:
| **description** (before) | **description** (after) |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *The manufacturer uses only natural and hypoallergenic materials to produce these dog beds. Colors available: black, gray, white, green, yellow, and lilac. Size range: XS, S, M, L, XL, and XXL* | `The manufacturer uses only natural and hypoallergenic materials to produce these dog beds. Colors available: black, gray, white, green, yellow, and lilac. Size range: XS, S, M, L, XL, and XXL` |
| *The manufacturer uses only natural and hypoallergenic materials to produce these dog blankets. Colors available: brown, gray, green, and blue. Size range: XS, S, L, and XXL* There is additional whitespace at the beginning and end of this value. | `The manufacturer uses only natural and hypoallergenic materials to produce these dog blankets. Colors available: brown, gray, green, and blue. Size range: XS, S, L, and XXL` |
Separate Words [#separate-words]
If the text in your values uses the camel case, where the second word starts with a capital letter without a space to separate it from the first word, such as *brownShoes*, the **Separate Words** rule box removes the camel case.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Separate Words** rule box.
Select **Save**.
For example, you have the following values in your **description** attribute and want to separate the words in the camel case. You can achieve this with the **Separate Words** rule box:
| **description** (before) | **description** (after) |
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| *TheManufacturerUsesOnlyNaturalAndHypoallergenicMaterialsToProduceTheseDogBeds.* | `The Manufacturer Uses Only Natural And Hypoallergenic Materials To Produce These Dog Beds.` |
| *ColorsAvailable: black, gray, white, green, yellow, and lilac.* | `Colors Available: black, gray, white, green, yellow, and lilac.` |
Remove parentheses and translate colors [#remove-parentheses-and-translate-colors]
The rule box category *Clean up values* contains the rule boxes **Remove Terms in Brackets** and **Translate Colors** to let you remove all terms in brackets from your texts and translate your color values into different languages.
Remove Terms in Brackets [#remove-terms-in-brackets]
The **Remove Terms in Brackets** rule box deletes text in parentheses from your values. It removes the text in brackets and the brackets themselves.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Remove Terms in Brackets** rule box.
Select **Save**.
For example, you have the following values in your **description** attribute and want to remove all text in brackets. You can achieve this with the **Remove Terms in Brackets** rule box:
| **description** (before) | **description** (after) |
| ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| *This is a great T-shirt, the very best (endorsed by world-famous jazz saxophonist Joshua Redman) one there is.* | `This is a great T-shirt, the very best one there is.` |
| *All reviewers note the high quality of the material ().* | `All reviewers note the high quality of the material .` |
If unneeded spaces remain in the value after applying this rule box, you can remove them with the **Text Replace** rule box by, for example, searching for `.` or `,` preceded with a space character and replacing them with `.` or `,`. See [Text Replace](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/replace-values#N1658483877601).
Translate Colors [#translate-colors]
The **Translate Colors** rule box detects colors in your values and translates them into English, German, French, Italian, Spanish, or Dutch.
If you need to translate more than just color values, you can use a dedicated data service. See [Translate your feed with the Google Translate and Google Translate (Advanced) data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/translate-your-feed-with-the-google-translate-and-google-tra).
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Translate Colors** rule box.
In **Source Language**, select the language of your current values:
* *English*
* *German*
* *French*
* *Italian*
* *Spanish*
* *Dutch*
In **Target Language**, select the language you want to translate your colors into.
* *English*
* *German*
* *French*
* *Italian*
* *Spanish*
* *Dutch*
Select **Save**.
For example, you have the following values in your **title** attribute and want to translate the colors mentioned in the values into German. You can achieve this with the **Translate Colors** rule box by selecting relevant source and target languages:
| **title** (before) | **title** (after) |
| ---------------------------- | ----------------------------- |
| *Sandals - green - size 39* | *Sandals -*`grün`*- size 39* |
| *Sneakers - white - size 40* | *Sneakers -*`weiß`*- size 40* |
| *Clogs - purple - size 44* | *Clogs -*`lila` -*size 44* |
# Rule box category Work with date & time
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The category *Work with date & time* contains all rule boxes that can help you convert date formats, set timestamps, and add values to your attributes based on a desired date and time.
This rule box category contains the following rule boxes:
* [Convert Datetime Format](#section-idm232219797422684) changes the date and time format.
* [Convert to Timestamp](#section-idm232219797133078) converts a date to a timestamp.
* [Limited Time Only](#section-idm232219797927674) adds a temporary text or discount based on a date.
* [Set Column by Time](#section-idm232219797657656) assigns, appends, or prepends another attribute's value based on a date.
* [Set Timestamp](#section-idm232219797000323) adds the current date and time to an attribute.
* [Set Value by Datetime](#section-idm4524692355780834317490833812) assigns a value based on comparing the date in the attribute with today's or another date.
Another option to work with time-bound values is to schedule rule boxes. See [Advanced rule box options](/docs/help-center/add-a-rule-box/advanced-rule-box-options).
Convert Datetime Format [#convert-datetime-format]
The **Convert Datetime Format** rule box changes the format of your date and time values.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Convert Datetime Format** rule box.
In **Source Format**, enter your current date format. See [PHP: date - Manual](https://www.php.net/manual/en/function.date.php) for the supported formats.
If you want to convert your date format into a Unix timestamp, the attribute where you apply the rule box must contain the full date and time, including hours, minutes, and seconds. If it doesn't, the platform uses the provided date elements and adds the hours, minutes, and seconds of the moment when you saved the rule box or your last site run.To assume the missing time elements, the rule box uses the GMT zone and the `H:i:s` time format.
In **Target Format**, enter the desired date and time format. For example, enter `U` to convert your regular date format into a Unix timestamp. See [PHP: date - Manual](https://www.php.net/manual/en/function.date.php) for other supported formats.
Select **Save**.
For example, the values in your **date** attribute are in one format, and you want to convert them to another format. You can achieve this with the following setups of the rule box **Convert Datetime Format**:
| Rule box setup | **date** (before) | **date** (after) |
| --------------------------------------------------------------------------------------- | ------------------- | ---------------- |
|
| `20230525 18:05:45` | `25-05-2023` |
|
| `20230525 18:05:45` | `1685030745` |
|
| `20230525` | `1685008255` |
The last row shows how the rule box works if your current value doesn't include hours, minutes, and seconds. Namely, it uses the moment when you saved the rule box, which was at 09:50:55 GMT+0000.
Convert to Timestamp [#convert-to-timestamp]
The **Convert to Timestamp** rule box converts a date or a date-related text into a Unix timestamp using your current time zone.
Examples of strings you can convert into timestamps using this rule box:
* *now*
* *June 2, 2023*
* *next Thursday*
See [PHP: strtotime - Manual](https://www.php.net/manual/en/function.strtotime.php) for the supported string formats you can convert into a timestamp.
If the rule box doesn't support the date and time format of a value, it empties the value.
To add the **Convert to Timestamp** rule box:
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Convert to Timestamp** rule box.
Select **Save**.
For example, you have the following values in the **date** attribute and want to convert them all to timestamps. You can achieve this with the **Convert to Timestamp** rule box:
| **date** (before) | **date** (after) |
| --------------------- | ---------------- |
| *01.02.2023 10:48:01* | `1675244881` |
| *01.02.2023* | `1675206000` |
| *now* | `1721399979` |
| *June 2, 2023* | `1685656800` |
| *2025-04-10 22:00:18* | `1744315218` |
| *last Thursday* | `1721253600` |
The rule box uses your time zone to create timestamps, which in this example is GMT+1.
If your values contain only a date without the exact time, such as *01.02.2023* instead of *01.02.2023 10:48:01*, the rule box **Convert to Timestamp** works as follows:
* Assumes the time is `00:00` in your current time zone.
* Converts the given date and the assumed time into the GMT zone.
* Converts the full date and time in the GMT zone to a timestamp.
This is why the full date and time *01.02.2023 10:48:01* in the GMT+1 time zone has the timestamp `1675244881`, but the same date without the time converts to `1675206000`.
Limited Time Only [#limited-time-only]
The **Limited Time Only** rule box temporarily changes a value in the attribute. This rule box can change a value by applying a discount, assigning a new value, and appending or prepending a string to a value. You can set the start and end dates or use dates stored in other attributes to create the timeframe when the platform should apply the desired changes.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Limited Time Only** rule box.
Use one of the following options to define the start date for applying the changes to your attribute:
1. Select a relevant attribute that stores the needed date in **Start Date via Column**.If you add your rule box in the intermediate stage, only import-stage attributes are available in this drop-down menu. If you add it in the export stage, only intermediate-stage attributes are available.
2. Enter a static date manually in **set Start Date**.
For both options, your dates must be in the format *Y-m-d*, for example, *2024-01-31*. See [Convert Datetime Format](#section-idm232219797422684) to change the date format if needed.
Use one of the following options to define the end date for applying the changes to your attribute:
1. Select a relevant attribute that stores the needed date in **End Date via Column**.If you add your rule box in the intermediate stage, only import-stage attributes are available in this drop-down menu. If you add it in the export stage, only intermediate-stage attributes are available.
2. Enter a static date manually in **set End Date**.
For both options, your dates must be in the format *Y-m-d*, for example, *2024-01-31*. See [Convert Datetime Format](#section-idm232219797422684) to change the date format if needed.
Choose how you want to change the values in your attribute:
1. If you want to add certain text to your attribute, enter the desired text in **Text** and choose how you want the rule box to add this text in **Mode**:
2. *assign* completely overwrites the current value with the desired text.
3. *append* adds the desired text at the end of the current value.
4. *prepend* adds the desired text at the beginning of the current value.
5. To add a discount to your attribute, enter the needed amount in **Discount** without the percent symbol (`%`).
Select **Save**.
For example, you have the following values in the **price** attribute and want to add a 30% discount to the prices of your products based on the start dates in **discount\_date**. The end of the sale should be on August 7, 2024. You can achieve this with the following setup of the **Limited Time Only** rule box:
| **discount\_date** (no changes) | **price** (before) | **price** (after) |
| ------------------------------- | ------------------ | ----------------- |
| *2024-07-10* | *300* | `210` |
| *2024-07-22* | *34* | `23.8` |
| *2024-08-22* | *3* | `3` |
You apply the **Limited Time Only** rule box on July 22, 2024.
Set Column by Time [#set-column-by-time]
The **Set Column by Time** rule box assigns, appends, or prepends a value from another attribute based on a date-and-time condition. A date and time condition works as follows:
. In the rule box setup, you choose a date attribute and select whether the date in that attribute should be in the past, future, or now to meet the desired date and time condition.
. If the date meets the desired date and time condition, the platform assigns, appends, or prepends a value from a selected attribute to the current attribute.
The **Set Column by Time** rule box may be helpful when launching a sale.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Column by Time** rule box.
In **Source Column**, choose your date attribute.
In **Time Format**, enter the format used in your date attribute. See [PHP: date - Manual](https://www.php.net/manual/en/function.date.php) for the supported formats.
In the drop-down menu, select your desired date and time condition:
* *in the future* applies the change if the current value contains a future date.
* *in the past* applies the change if the current value contains a past date.
* *now* applies the change if the current value contains today's date.
In **Column**, select the attribute that stores the values you want to add.
In **Mode**, choose how you want to modify your current values if the date attribute meets the desired date and time condition:
1. *assign* overwrites the current value with the value of the attribute chosen in [see the relevant section](#N1685975454647).
2. *append* adds the value of the attribute chosen in [see the relevant section](#N1685975454647) at the end of the current value.
3. *prepend* adds the value of the attribute chosen in [see the relevant section](#N1685975454647) at the beginning of the current value.
Select **Save**.
For example, you are selling a popular sneaker model, but a newer one will drop soon, and you have that date in **release\_date**. Once the new sneaker model becomes available, you want to announce a sale and append a short text from the **sale\_promo\_text** attribute to the title of the older sneakers in **product\_title**. You can achieve this with the following setup of the **Set Column by Time** rule box:
| **release\_date** (no changes) | **sale\_promo\_text** (no changes) | **product\_title** (before) | **product\_title** (after) |
| ------------------------------ | ---------------------------------- | -------------------------------- | ----------------------------------- |
| *2024-07-21* | *25% OFF* | *FIRE Sneakers 2023, Brown* | `FIRE Sneakers 2023, Brown 25% OFF` |
| *2024-10-03* | *25% OFF* | *FIRE Sneakers 2023, Orange* | `FIRE Sneakers 2023, Orange` |
| *06.07.2024* | *25% OFF* | *FIRE Sneakers 2023, Pale Green* | `FIRE Sneakers 2023, Pale Green` |
The platform checks whether the new sneakers' release date in **release\_date** has passed. As soon as that date passes, the platform appends the text from **sale\_promo\_text** to the title of your product.
You apply the **Set Column by Time** rule box on July 22, 2024.
Set Timestamp [#set-timestamp]
The **Set Timestamp** rule box overwrites the values in an attribute with the current date and time in a desired time zone and format. See [PHP: date - Manual](https://www.php.net/manual/en/function.date.php) for the supported formats.
This rule box renews the timestamp every time you run the site or refresh Data View.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Timestamp** rule box.
In **Format**, enter the date format that the rule box should use to add the current date and time to your attribute. See [PHP: date - Manual](https://www.php.net/manual/en/function.date.php) for the supported formats.
To add a Unix timestamp instead of standard date formats, enter `U`.
In **Timezone**, select the needed time zone.
Select **Save**.
For example, you have the following values in the **date** attribute and want to overwrite them with today's date in the format *DD.Mon YYYY*. You can achieve this with the **Set Timestamp** rule box by entering `d.M Y` in **Format** and choosing the needed timezone:
| **date** (before) | **date** (after) |
| ----------------- | ---------------- |
| *2024-07-21* | `22.Jul 2024` |
| | `22.Jul 2024` |
| *06.07.2024* | `22.Jul 2024` |
You apply the **Set Timestamp** rule box on July 22, 2024.
Set Value by Datetime [#set-value-by-datetime]
The **Set Value by Datetime** rule box compares a date value in an attribute with today's or another date to assign a new value based on the comparison. It follows this algorithm to compare dates and assign new values:
| If | `today or another date` | **\<** | `date in the attribute`, | then | assign a new value. |
| -- | ----------------------- | ------ | ------------------------ | ---- | ------------------- |
You can choose other inequality symbols, not only the less-than sign (**\<**).
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Value by Datetime** rule box.
Enter the date format used in your attribute in **Date Format**. See [PHP: date - Manual](https://www.php.net/manual/en/function.date.php) for the supported formats.
In **Operator**, choose an operator to compare the dates in your values to a desired date specified in Set Days:
* `<` means the date specified in Set Days should be less than the date in the attribute.
* `<=` means the date specified in Set Days should be less than or equal to the date in the attribute.
* `>=` means the date specified in Set Days should be greater than or equal to the date in the attribute.
* `>` means the date specified in Set Days should be greater than the date in the attribute.
In **Set Days**, define the date you want to compare your current values to by entering `-` or `+` and a number of days:
* Enter `+0` to compare your date values to today's date.
* Enter `+1` to compare your date values to tomorrow's date.
* Enter `-1` to compare your date values to yesterday's date.
In **Set value**, enter the value you want to assign in the current attribute if a date in the attribute matches the set condition.
Select **Save**.
For example, you have the following values in the **manufactured\_on** attribute and want to overwrite them with the value *incorrect* if the date in the attribute is later than last Friday, July 19, 2024. You can achieve this with the following setup of the **Set Value by Datetime** rule box:
| **manufactured\_on** (before) | **manufactured\_on** (after) |
| ----------------------------- | ---------------------------- |
| *2024-07-21* | `incorrect` |
| *2024-07-19* | *2024-07-19* |
| *06.08.2024* | *06.08.2024* |
| *2024-07-16* | *2024-07-16* |
| *2024-10-03* | `incorrect` |
You apply the **Set Value by Datetime** rule box on Monday, July 22, 2024.
# Rule box category Use lists
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The category *Use lists* contains the rule boxes that can apply a list you created in **Lists** to a relevant attribute within your site. To use the rule boxes of this category, you first need to create a list. See [Lists](/docs/help-center/map-and-optimize-your-data/lists).
You can collect all the search terms in a list and then use a list in a needed rule box to replace, categorize, include, or exclude items. Use the rule boxes with lists when you have more than 30 terms. Also, you can reuse lists across multiple sites, making changes in one place.
This category can be divided into several subgroups. In the following sections, you can find how to use list-based rule boxes to perform the following actions:
* [Replace values with list-based rule boxes](#section-idm234388372362115)
* [Categorize and map values to classifications with lists-based rule boxes](#section-idm234388380919298)
* [Include or exclude products with list-based rule boxes](#section-idm234388357357836)
* [Detect and extract information from an attribute with list-based rule box](#section-idm234391477524279)
Replace values with list-based rule boxes [#replace-values-with-list-based-rule-boxes]
The *Use lists* rule box category contains the replacement rule boxes to let you replace certain values based on a condition. If you need to replace a large number of values in your data, you can add them to a list and apply one of the following rule boxes that will search for and replace parts of your data in bulk:
* [Replacement](#section-idm234389788424418) applies a replacement list to substitute the matching complete words in the value with the mapped terms from the list.
* [Replacement Sensitive](#section-idm234389854406382) applies a replacement list to substitute the matching parts of a word in a value, a complete word, or an entire value with the terms from the list.
* [Taxonomy Mapping](#section-idm234390016150987) applies a Partner Taxonomy Mapping list to substitute the entire value or only a part of the value with the terms from the list. This rule box works best if you need to replace category terms according to your export partner taxonomy.
Replacement [#replacement]
The **Replacement** rule box substitutes the matching complete words within a value with the mapped terms from the list. If you need also to choose whether the matches should be case-sensitive and whether to leave the original value or empty the value if there’s no match in a value, use the [Replacement Sensitive](#section-idm234389854406382) rule box.
Go to **Lists** from your site's main menu and add all terms you need to replace to the *Standard*, *Dynamic*, or *Attribute-based Replacement* list. See [Lists](/docs/help-center/map-and-optimize-your-data/lists#section-idm13275861981064) to choose a required type.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Replacement** rule box.
Choose the appropriate replacement list from the **Select an Option** drop-down menu.
Select **Save**.
For example, you want to replace the size abbreviations with whole words. You can achieve this by adding these terms to the replacement lists and setting up the **Replacement** rule box as follows:
| **size** (before) | **size** (after) |
| ----------------- | ---------------------------- |
| *S* | `small` |
| *M* | `medium` |
| *L size* | `large size` |
| *S*, *M*, *XL* | `small, medium, extra large` |
The rule box changes all matching values, even if they are parts of the value. For example, *L size* changes into `large size`. *S, M, XL* changes into `small, medium, extra large`.
Replacement Sensitive [#replacement-sensitive]
The **Replacement Sensitive** rule box lets you substitute the matching parts of a word in a value, a complete word, or an entire value with the terms from the list.
Go to **Lists** from your site's main menu and add all terms you need to replace to the *Standard*, *Dynamic*, or *Attribute-based Replacement* list. See [Lists](/docs/help-center/map-and-optimize-your-data/lists#section-idm13275861981064) to choose a required type.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Replacement Sensitive** rule box.
Choose the appropriate replacement list from the **Select an Option** drop-down menu.
Select between *Case Sensitive* and *Case Insensitive* if the search needs to consider capitalization.
Select between full and partial word matches from the drop-down:
* *Exact Word* replaces a word only if it's a complete word that matches the search term. For example, if the value is *Texting is a good idea* and the list should replace *Texting* with `TESTING`, the result should be `TESTING is a good idea`.
* *Not Exact Word* replaces a word even if only a part of the word matches the search term. For example, if the value is *Texting is a good idea* and the list should replace *Text* with `TEST`, the result should be `TESTing is a good idea`.
Select the result you want to have in case of no match:
* *Set Value if No Match* leaves the original value.
* *Set Empty if No Match* empties the value.
Select **Save**.
For example, you need to correct a mistake in the description and replace all forms of the word `text` to `test`. You can achieve this by adding these terms to a replacement lists and setting up the **Replacement Sensitive** rule box as follows:
| **description** (before) | **description** (after) |
| ------------------------------------------- | ------------------------------------------- |
| *Texting cosmetics. Not texted on animals.* | `Testing cosmetics. Not tested on animals.` |
The setting *Not exact Word* lets the rule box change all matching parts of words. Selecting *Exact Word* in the rule box settings changes only the entire word within the value.
Taxonomy Mapping [#taxonomy-mapping]
The **Taxonomy Mapping** rule box lets you replace your categories with categories from a partner's taxonomy, such as categories of Google Merchant Center, Amazon, eBay, and other channels. Matching a partner taxonomy ensures that your product categorization is correct. The replacement happens if the replacement term matches the entire value.
Go to **Lists** from your site's main menu and add all terms you need to replace to the *Partner Taxonomy Mapping* list. See [Replace attributes with Partner Taxonomy Mapping list](/docs/help-center/map-and-optimize-your-data/lists/replace-attributes-with-partner-taxonomy-mapping-list) list.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Taxonomy Mapping** rule box.
Choose a list from the **Select an Option** drop-down menu.
In **Case Sensitivity**, choose *Match Sensitive* to perform a case-sensitive search in the attribute's values or *Match Insensitive* to ignore the case of the values.
In **On No Match**, choose what should happen if there is no match with the values of the list:
* *set to empty string* empties the value.
* *set original value* leaves the original value.
The checkbox **New taxonomy values should act as not matched, as log as there is no value assigned to them** lets you treat newly imported values:
* *selected* – new unmatched values stay unchanged in the attribute.
* *unselected* – new unmatched values stay unchanged, or the platform replaces them to empty values if you selected *set to empty string* in **On No Match**.
Select **Save**.
For example, you want to replace your current category names with partner taxonomy. You can achieve this by adding these terms to a Partner Taxonomy Mapping list and setting up the **Taxonomy Mapping** rule box as follows:
| **category** (before) | **category** (after) |
| ---------------------------- | ------------------------------- |
| *Shampoo* | `Beauty > Hair care` |
| *Lipsticks* | `Beauty > Decorative cosmetics` |
| *Lip balms* | |
| *Shampoo, conditioner, mask* | |
The rule box replaces only the entirely matching values. That's why the values *Lip balm* and *Shampoo, conditioner, mask* are empty.
Categorize and map values to classifications with lists-based rule boxes [#categorize-and-map-values-to-classifications-with-lists-based-rule-boxes]
The *Use lists* rule box category contains the categorization and mapping rule boxes to let you assign categories to the products and replace your custom categories with terms specific to a needed classification system.
* [Classification Mapping](#section-idm234390064730298) applies the Classification Mapping list to the values of the **category** attribute to replace its values with the terms specific to a needed classification system, such as the ETIM classification. See [Set up the Classification Mapping list](/docs/help-center/map-and-optimize-your-data/lists/set-up-the-classification-mapping-list).
* [Categorize by Keywords](#section-idm234390064916242) assigns a category based on the keywords found in the connected attribute.
Classification Mapping [#classification-mapping]
The **Classification Mapping** rule box replaces your current category values with the categories specific to the required classification system.
Go to **Lists** from your site's main menu and add all terms you need to replace to the *Classification Mapping list*.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Classification Mapping** rule box.
Choose the list from the **List** drop-down menu.
In **Case Sensitivity**, choose *Match Sensitive* to perform a case-sensitive search in the attribute's values or *Match Insensitive* to ignore the case of the values.
In **On No Match**, choose what should happen if there is no match with the values of the list:
* *set to empty string* makes the cell empty
* *set original value* leaves the original value
Select **Save**.
For example, you want to replace your current categories with categories used in the ETIM-9.0 classification. You can achieve this by adding these terms to the *Classification Mapping* list and setting up the **Classification Mapping** rule box as follows:
| **category** (before) | **category** (after) |
| --------------------- | -------------------- |
| *Heating* | `EC011686` |
| *Ventilation* | `EC011606` |
| *Tools* | `EC000181` |
| *Water taps* | |
In this example, the rule box replaces matching values with ETIM 9.0 classification categories and makes values that don't match empty.
Categorize by Keywords [#categorize-by-keywords]
The **Categorize by Keywords** rule box uses a replacement list to assign a category based on the keywords found in the needed attribute, such as **description** or **title**. This rule box can be useful if you don't need categorization for any specific classification system but want to create your categories based on the existing product titles or descriptions. The rule box can scan large texts to find the keywords and assign a corresponding category based on the highest score. The scoring rules are as follows:
* If there is no match, the output is empty.
* The text should have all the words from the search term in the replacing list.
* The order of the words in the text doesn't matter.
* Text matching is case-insensitive; for example, `blue` matches `Blue`.
* The repeating words are counted only once. For example, `women’s shoes, ladies’ shoes, girls’ shoes` matched against `women's shoes, ladies' shoes` would score 3: `women's`, `ladies'`, `shoes`.
* Only whole words match: the word `shoe` doesn't match `shoes`.
* Every word, including 1-letter words, counts. For example, `Three Men in a Boat: To Say Nothing of the Dog` matched against `a dog` will result in a score of 2: `a` and `dog`.
Create a list of terms you need to replace using the *Standard* or *Dynamic Replacement* list. See [Lists](/docs/help-center/map-and-optimize-your-data/lists#section-idm13275861981064) to choose a required type.
In Dataflow, connect from import to intermediate the attribute containing keywords to the attribute where you want to store categories. For example, you can connect **description** to **category**.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Categorize by Keywords** rule box to the attribute where you want to store categories.
In **Search in Column**, select an attribute where you want to search for the keywords from the list.
Choose the replacement list from the **List** drop-down menu.
Select **Save**.
For example, you want to create categories based on the existing product descriptions. You can achieve this by adding terms to the replacement lists and setting up the **Categorize by Keywords** rule box as follows:
| **description** | **category** (before) | **category** (after) |
| ------------------------------------------------------------------------ | --------------------- | -------------------- |
| *Women's Top, Classic Cut, Basic Short Sleeve Crop Top, Crew Neck, Blue* | *clothes* | `Tops & T-Shirts` |
| *Women's Top, Casual Cut, Basic Short Sleeve, Crew Neck, White* | *clothes* | `Tops & T-Shirts` |
| *Women's Top, Basic Long Sleeve Crop Top, V-Neck, Red* | *clothes* | `Long Sleeves` |
| *Women's Dress, Basic Long Sleeve, V-Neck, White* | *clothes* | `Long Dresses` |
| *Women's Dress, Long, White* | *clothes* | `Long Dresses` |
| *Women's Dress* | *clothes* | |
In this example, the rule box replaces existing category values with the categories in the replacement list and makes values that don't match empty.
The matching and category assignment is based on the scoring rules. In this example, the category with more unique words in the text wins. Also, when the number of unique words is equal, the exact match wins. For example, the fourth row contains two matches for two categories: `Long Sleeve` and `Dress Long`. The *Long Dresses* category wins as the keywords match exactly the search term in the list. In case of the *Long Sleeve* win, the text should contain `Top Long Sleeve`.
Include or exclude products with list-based rule boxes [#include-or-exclude-products-with-list-based-rule-boxes]
The *Use lists* rule box category contains the blacklist and whitelist rule boxes to let you exclude or include products during export if an attribute contains matches with the terms on the *Inclusion/Exclusion* list.
* **Blacklist** excludes products from export if their attribute's values contain a term that matches the term in the selected *Inclusion/Exclusion* list.
* **Blacklist Entire Word** excludes products from export if their attribute's entire values match a term in the selected *Inclusion/Exclusion* list.
* **Negative Blacklist** excludes products from export if their attribute doesn't contain values that match a term in the selected *Inclusion/Exclusion* list.
If you need to include certain products during export or protect specific terms from exclusion, use the **Whitelist** rule box.
See [Include or exclude products](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/include-or-exclude-products) to set up these rule boxes.
Detect and extract information from an attribute with list-based rule box [#detect-and-extract-information-from-an-attribute-with-list-based-rule-box]
The *Use lists* rule box category contains the detect and extract rule boxes to let you find desired values in an attribute and extract them into another attribute. Using a *Standard Inclusion/Exclusion* list, the **Detect and Extract Value** rule box finds a match in a product's value and adds it to the attribute where you apply the rule box.
See [Clean up values](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/clean-up-values) to set up the rule box.
# Rule box category Google Merchant Center
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The category *Google Merchant Center* contains all rule boxes that can help you prepare your product data for GMC. This category lets you set age groups, availability, conditions, gender, expiration dates, size types, and size systems to values accepted by Google.
Some rule boxes in this category only apply to specific sales verticals. For example, the **Set Size Type** or **Set Gender** rule boxes mainly relate to clothing retailers.
Select a link to go to the section describing the needed rule box:
* [Set Age Group](#section-idm232221321747321)
* [Set Age Group by Regex](#section-idm234388217401983)
* [Set Availability](#section-idm232221322027537)
* [Set Availability by Stock](#section-idm234388218581794)
* [Set Condition](#section-idm232221322125998)
* [Set Condition by Regex](#section-idm234388221071861)
* [Set Expiration Date](#section-idm232221322333827)
* [Set Gender](#section-idm232221322548479)
* [Set Gender by Regex](#section-idm234388225267714)
* [Set Identifier Exists](#section-idm4551344488440033327155444251)
* [Set Size System](#section-idm234388228536953)
* [Set Size Type](#section-idm232221322913584)
* [Set Size Type by Regex](#section-idm2343882284476)
* [Split String for PLA](#section-idm243441251445678)
* [Translate Google Category](#section-idm23222132313624)
Some rule boxes in this category use regular expressions (regex). See [Rule box category Use regular expressions](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/rule-box-category-use-regular-expressions) to learn about regex. You can use the *Regex generator* available in these rule boxes to get a regex suggestion that suits your use case:
Select a necessary rule box.
Select **>\_** in a rule box and describe the result you want to achieve in the **Regex generator** window.
Select **Generate**.
Select **copy** below the **Answer** field.
Paste the copied answer into the regex field of the rule box.
Set Age Group [#set-age-group]
Google accepts the following values for the **age\_group** attribute:
* *adult*
* *kids*
* *infant*
* *toddler*
* *newborn*
With the **Set Age Group** rule box, you can replace your current values with one of the valid age groups accepted by Google:
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Age Group** rule box.
Select the needed age group value from the drop-down menu.
Select **Save**.
For example, you have varying non-valid values in the **age\_group** attribute, and you want to change them all to the valid value *toddler*:
| **age\_group** (before) | **age\_group** (after) |
| ------------------------------------ | ---------------------- |
| *children between 1 and 3 years old* | `toddler` |
| *1-3 year olds* | `toddler` |
| *toddlers* | `toddler` |
Set Age Group by Regex [#set-age-group-by-regex]
Google accepts the following values for the **age\_group** attribute:
* *adult*
* *kids*
* *infant*
* *toddler*
* *newborn*
With the **Set Age Group by Regex** rule box, you can use regular expressions to search your current values for matches and replace them with corresponding valid age groups accepted by Google.
Once the **Set Age Group by Regex** rule box finds a regex match in a value, it changes the entire current value to the corresponding value accepted by Google. If one value contains multiple regex matches related to different age groups, the rule box assigns the age group related to the first regex match within the value.
If the rule box doesn't find a regex match in a value, it assigns the value `adult` to make sure your **age\_group** attribute contains only valid entries.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Age Group by Regex** rule box.
In **Adult**, **Kids**, **Infant**, **Toddler**, and **Newborn**, enter regular expressions to search your values and replace the matching parts with a relevant age group value.
Use the *Regex generator* by selecting **>\_** to get a regex suggestion.
Select **Save**.
For example, you have different non-valid values in the **age\_group** attribute, and you need to assign a valid age group to each product based on its current value.
With the regular expressions `/(women|female|men|male|adult|adults)/g` and `/(children|child|kid|kids|boy|girl|boys|girls)/`, you can search your current values for the possible alternatives to the valid *adult* and *kids* values and then change the current values to the appropriate valid age group.
| **age\_group** (before) | **age\_group** (after) |
| ----------------------- | ---------------------- |
| *women* | `adult` |
| *all ages* | `adult` |
| *children, men* | `kids` |
Set Availability [#set-availability]
Google accepts the following values for the **availability** attribute:
* *in stock*
* *out of stock*
* *preorder*
* *backorder*
With the **Set Availability** rule box, you can replace your current values with one of the valid availability types accepted by Google:
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Availability** rule box.
Select the relevant availability type from the drop-down menu.
Select **Save**.
For example, you have different non-valid values in the **availability** attribute, and you want to change them all to the valid value *in stock*:
| **availability** (before) | **availability** (after) |
| ------------------------- | ------------------------ |
| *available* | `in stock` |
| *available for purchase* | `in stock` |
| *in stock* | `in stock` |
Set Availability by Stock [#set-availability-by-stock]
Google accepts the following values for the **availability** attribute:
* *in stock*
* *out of stock*
* *preorder*
* *backorder*
With the **Set Availability by Stock** rule box, you can use your **stock** attribute to automatically set your **availability** attribute to one of the valid availability types accepted by Google:
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Availability by Stock** rule box.
Select the attribute with the stock information from the drop-down menu. This menu shows the attributes of the previous stage.
Select **Save**.
For example, you have your stock levels in the **stock** attribute, and you want to set your **availability** attribute to *in stock* or *out of stock* based on the stock level.
You add the **Set Availability by Stock** rule box to the **availability** attribute to let it change your current values in the following way:
| **stock** (no changes) | **availability** (before) | **availability** (after) |
| ---------------------- | ------------------------- | ------------------------ |
| *45* | *available* | `in stock` |
| *0* | *no longer available* | `out of stock` |
| *2* | *last items left* | `in stock` |
Set Condition [#set-condition]
Google accepts the following values for the **condition** attribute:
* *new*
* *refurbished*
* *used*
With the **Set Condition** rule box, you can replace your current values with one of the valid conditions accepted by Google:
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Condition** rule box.
Select the relevant condition type from the drop-down menu.
Select **Save**.
For example, you have varying non-valid values in the **condition** attribute, and you want to change them all to the valid value *new*:
| **condition** (before) | **condition** (after) |
| ---------------------- | --------------------- |
| *good as new* | `new` |
| *signs of use* | `new` |
| *new* | `new` |
Set Condition by Regex [#set-condition-by-regex]
Google accepts the following values for the **condition** attribute:
* *new*
* *refurbished*
* *used*
With the **Set Condition by Regex** rule box, you can use regular expressions to search your current values for matches and replace them with corresponding valid conditions accepted by Google.
Once the **Set Condition by Regex** rule box finds a regex match in a value, it changes the entire current value to the corresponding value accepted by Google. If one value contains multiple regex matches related to different condition types, the rule box assigns the condition type related to the first regex match within the value.
If the rule box doesn't find a regex match in a value, it assigns the value `new` to make sure your **condition** attribute contains only valid entries.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Condition by Regex** rule box.
In **New**, **Used**, and **Refurbished**, enter regular expressions to search your values and replace the matching parts with a relevant condition value.
Use the *Regex generator* by selecting **>\_** to get a regex suggestion.
Select **Save**.
For example, you have different non-valid values in the **condition** attribute, and you need to assign a valid condition type to each product based on its current value.
With the regular expressions `/(from manufacturer|packaged|new)/`, `/(use|used)/`, and `/(refurbished|repaired|returned)/`, you can search your current values for the possible variants of the valid *new*, *used*, and *refurbished* values and then change the current values to the appropriate valid conditions.
| **condition** (before) | **condition** (after) |
| ---------------------- | --------------------- |
| *returned, new* | `new` |
| *signs of use* | `used` |
| *brand new* | `new` |
Set Expiration Date [#set-expiration-date]
With the **Set Expiration Date** rule box, you can add an expiration date to the **expiration\_date** attribute as accepted by Google. In this rule box, you set the number of days left until the expiration date of an offer, and the rule box adds the corresponding date in the *YYYY-MM-DD* format to every product in the attribute.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Expiration Date** rule box.
In **Days to expire**, enter the number of days left until the offer or product expires.
You can enter no more than 31 days in the Set Expiration Date rule box starting from today. If you add 32 days or more, it results in an empty value.
Select **Save**.
For example, you have varying non-valid date formats in the **expiration\_date** attribute, with all your products expiring at the same time (in 8 days). You can change all your expiration dates to the valid date format by entering `8` in **Days to expire**.
| **expiration\_date** (before) | **expiration\_date** (after) |
| ----------------------------- | ---------------------------- |
| *July 9, 2024* | `2024-07-09` |
| *09.07.2024* | `2024-07-09` |
| *07/09/2024* | `2024-07-09` |
Set Gender [#set-gender]
Google accepts the following values for the **gender** attribute:
* *unisex*
* *female*
* *male*
With the **Set Gender** rule box, you can replace your current values with one of the valid gender options accepted by Google:
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Gender** rule box.
Select the relevant gender option from the drop-down menu.
Select **Save**.
For example, you have varying non-valid values in the **gender** attribute, and you want to change them all to the valid value *unisex*:
| **gender** (before) | **gender** (after) |
| ------------------- | ------------------ |
| *men, women* | `unisex` |
| *all* | `unisex` |
| *women, men* | `unisex` |
Set Gender by Regex [#set-gender-by-regex]
Google accepts the following values for the **gender** attribute:
* *unisex*
* *female*
* *male*
With the **Set Gender by Regex** rule box, you can use regular expressions to search your current values for matches and replace them with corresponding valid gender options accepted by Google. You need to provide regex only for *male* and *female* gender options. Products with no matches of these regular expressions get the value *unisex*.
Once the **Set Gender by Regex** rule box finds a regex match in a value, it changes the entire current value to the corresponding value accepted by Google. If one value contains multiple regex matches related to different gender options, the rule box assigns the gender option related to the first regex match within the value.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Gender by Regex** rule box.
In **Male regex** and **Female regex**, enter regular expressions to search your values and replace the matching parts with a relevant gender option.
Use the *Regex generator* by selecting **>\_** to get a regex suggestion.
Select **Save**.
For example, you have different non-valid values in the **gender** attribute, and you need to assign a valid gender option to each product based on its current value.
With the regular expressions `/\b(?:women|female|F)\b/` and `/\b(?:men|male|M)\b/`, you can search your current values for the possible variants of the valid *female* and *male* values and then change the current values to the appropriate valid gender option. The products that don't contain regex matches get the value *unisex*.
| **gender** (before) | **gender** (after) |
| ------------------- | ------------------ |
| *women* | `female` |
| *men and women* | `male` |
| *M* | `male` |
| *all* | `unisex` |
Set Identifier Exists [#set-identifier-exists]
Google uses the **identifier\_exists** attribute to see whether unique product identifiers (UPIs) are available for your product based on the values in the **brand**, **gtin**, **mpn**, and **category** attributes. See [Identifier exists](https://support.google.com/merchants/answer/6324478?hl=en#zippy=%2Cproducts-without-gtins-mpns-brands) for more information.
With the **Set Identifier Exists** rule box, you can add the valid *true* or *false* values to your **identifier\_exists** attribute based on the contents of your **category** value. If an identifier (a brand, MPN, or GTIN) exists for a product, the **identifier\_exists** attribute stays empty, which equals *true* when exporting it to Google Merchant Center. If there is no identifier for a product, the attribute has the value *false*.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Identifier Exists** rule box.
Select your category attribute from the drop-down menu. This menu shows the attributes of the previous stage.
Select **Save**.
Set Size System [#set-size-system]
Google accepts the following values for the **size\_system** attribute:
* *US*
* *UK*
* *EU*
* *DE*
* *FR*
* *JP*
* *CN*
* *IT*
* *BR*
* *MEX*
* *AU*
With the **Set Size System** rule box, you can replace your current values with one of the valid size system options accepted by Google.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Size System** rule box.
Select the relevant size system from the drop-down menu.
Select **Save**.
For example, you have varying non-valid values in the **size\_system** attribute, and you want to change them all to the valid value *UK*:
| **size\_system** (before) | **size\_system** (after) |
| ------------------------- | ------------------------ |
| *United Kingdom* | `UK` |
| *UK* | `UK` |
| *Britain* | `UK` |
Set Size Type [#set-size-type]
Google accepts the following values for the **size\_type** attribute:
* *regular*
* *petite*
* *plus*
* *big*
* *tall*
* *maternity*
With the **Set Size Type** rule box, you can replace your current values with one of the valid size types accepted by Google.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Size Type** rule box.
Select the relevant size type from the drop-down menu.
Select **Save**.
For example, you have varying non-valid values in the **size\_type** attribute, and you want to change them all to the valid value *regular*:
| **size\_type** (before) | **size\_type** (after) |
| ----------------------- | ---------------------- |
| *regular fit* | `regular` |
| *usual* | `regular` |
| \[empty] | `regular` |
Set Size Type by Regex [#set-size-type-by-regex]
Google accepts the following values for the **size\_type** attribute:
* *regular*
* *petite*
* *plus*
* *big*
* *tall*
* *maternity*
With the **Set Size Type by Regex** rule box, you can use regular expressions to search your current values for matches and replace them with corresponding valid size types accepted by Google.
Once the **Set Size Type by Regex** rule box finds a regex match in a value, it changes the entire current value to the corresponding value accepted by Google. If one value contains multiple regex matches related to different size types, the rule box assigns the size type related to the first regex match within the value.
If the rule box doesn't find a regex match in a value, it assigns the value `regular` to make sure your **size\_type** attribute contains only valid entries.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Set Size Type by Regex** rule box.
In **Regular**, **Petite**, **Plus**, and **Maternity**, enter regular expressions to search your values and replace the matching parts with a relevant size type.
Use the *Regex generator* by selecting **>\_** to get a regex suggestion.
Select **Save**.
For example, you have different non-valid values in the **size\_type** attribute, and you need to assign a valid size type to each product based on its current value.
With the regular expressions `/(regular|reg|usual)/`, `/(petite|smaller)/`, `/(plus|bigger)/`, and `/(maternity)/`, you can search your current values for the possible variants of these valid size types and then change the current values to the appropriate valid size types.
| **size\_type** (before) | **size\_type** (after) |
| ----------------------- | ---------------------- |
| *one size* | `regular` |
| *maternity clothes* | `maternity` |
| *petite, regular* | `regular` |
Split String for PLA [#split-string-for-pla]
See [Change string length](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/change-string-length#section-idm232221351802675) for more information on split string rule boxes.
The **Split String for PLA** rule box uses delimiters and analyzes the values of an attribute to extract and save only those parts of the values you need. If the rule box finds no delimiter in a value, it empties the value to prevent you from sending incorrect data to your export channels.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Split String for PLA** rule box.
Enter the delimiter character that splits your string into multiple data points in **Splitter**.
The platform never displays the splitter in the output if you extract only one data point from the value. To see the splitter in the output value, you need to extract at least two data points.
In **From**, enter the number of the data point from which the platform should start extracting information. The expected input format for this field is a digit.See [this numbering example](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/change-string-length#informaltable-idm243305572252982) to identify the number of your desired data point.
If you enter `0` in **From**, the platform starts extracting information from your first data point and, after finding no splitter character in the string, returns the entire string as if it consisted of one data point only.To have the Split String for PLA rule box empty the values that contain no splitter characters, specify any number in **From** but for `0` and negative numbers.
Enter how many data points you want the platform to extract from your values in **Items**.The expected input format for this field is a digit. Only positive numbers are acceptable.
If you leave **Items** empty, the platform extracts all data points of the string, starting with the data point specified in **From**.
Select **Save**.
Google accepts the following values for the **gender** attribute:
| Rule box and setup | **category** (before) | **category** (after) |
| ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------- |
|
| *Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds* | `Pet Supplies > Dog Supplies` |
| *Apparel & Accessories > Clothing > Activewear* | `Clothing > Activewear` | |
| *Arts & Entertainment --- Event Tickets* | `Arts & Entertainment --- Event Tickets` | |
|
| *Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds* | `Pet Supplies > Dog Supplies` |
| *Apparel & Accessories > Clothing > Activewear* | `Clothing > Activewear` | |
| *Arts & Entertainment --- Event Tickets* | | |
See [Split String](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/change-string-length#section-idm4613280768827233045222567009) for more information.
Translate Google Category [#translate-google-category]
Google accepts only a predefined list of values in the **category** attribute.
You can use a *Partner Taxonomy Mapping* list to ensure your **category** attribute contains values accepted by Google. See [Replace attributes with Partner Taxonomy Mapping list](/docs/help-center/map-and-optimize-your-data/lists/replace-attributes-with-partner-taxonomy-mapping-list) for more information.
With the **Translate Google Category** rule box, you can translate your Google categories from one language to another. You can also change your Google categories in any language to the associated category IDs, which are the same for all languages. The rule box empties the values in those products that contain invalid categories.
Take the steps from [Add a rule box](/docs/help-center/add-a-rule-box) to add the **Translate Google Category** rule box.
In **Source Format**, select the current language and country of your Google categories.Choose *id* if your category attribute contains category IDs instead of spelled-out category names.
In **Target Format**, select the language and country you want to translate your Google categories into.Choose *id* if you want to transform your spelled-out category names into category IDs.
You can remove all invalid categories from your category attribute without translating them by selecting the same languages in **Source Format** and **Target Format**.
Select **Save**.
For example, your **category** attribute contains valid Google categories for the US in English, and you need to translate them into valid Google categories in German.
| **category** (before) | **category** (after) |
| ------------------------------------------------------- | ----------------------------------------------------------------- |
| *Apparel & Accessories > Shoe Accessories > Slippers* | \[empty] |
| *Home & Garden > Linens & Bedding > Bedding > Blankets* | `Heim & Garten > Bett- und Haushaltswäsche > Bettwäsche > Decken` |
| *Apparel & Accessories > Clothing > Underwear & Socks* | `Bekleidung & Accessoires > Bekleidung > Unterwäsche & Socken` |
If you select *id* in **Target Format** for the same use case, the rule box outputs the following:
| **category** (before) | **category** (after) |
| ------------------------------------------------------- | -------------------- |
| *Apparel & Accessories > Shoe Accessories > Slippers* | |
| *Home & Garden > Linens & Bedding > Bedding > Blankets* | `1985` |
| *Apparel & Accessories > Clothing > Underwear & Socks* | `213` |
# Add icons and clipart to your image template
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
In Image Designer, you can add different elements to your existing product images and enhance the design of your image templates with an extensive collection of icons and clipart.
Add an icon [#add-an-icon]
Go to **Designer** from your site's main menu.
Select the **Insert** tab.
Open the **Icon Font** section.
Drag a selected icon into the image preview area.
Customize the corresponding icon layer in the *Layers* tab as desired. See [Icon layer settings](#section-idm4508754744604833635044576811).
Select the floppy disk icon in the upper toolbar to save the changes.
Icon layer settings [#icon-layer-settings]
The Image Designer adds icons as *Icon* layers in the Layers tab. You can edit the icon with the following settings:
* **X** and **Y**: Set icon coordinates to place your icon on the template. You can also drag the layer in the image preview area to achieve the same result.
* **width**: Define the width of the output icon.
* **height**: Define the height of the output icon.
* **Rotation (deg)**: Define the rotation degree of the output icon.
* **Stroke color**: Choose the color of the icon borders in the color picker.
* **Stroke width**: Define the width of the icon borders.
* **Transparency**: Select the transparency of the icon borders on a scale from 0% to 100%, where 0% means no transparency and 100% means fully transparent icon borders.
* **Font color**: Define the icon color in the color picker.
* **Font size**: Define the icon size in pixels.
* **Font Transparency**: Select the icon transparency on a scale from 0% to 100%, where 0% means no transparency and 100% means a fully transparent icon.
* **Horizontal alignment**: Choose the type of horizontal alignment.
* **Vertical alignment**: Choose the type of vertical alignment.
* **Render background**: Add a background color to the whole icon layer.
* **Partial background**: Add a background color to the inserted icon only.
* **Text Shadow**: Add a shadow to your icon.
Add a clipart [#add-a-clipart]
Go to **Designer** from your site's main menu.
Select the **Insert** tab.
Open the **Clipart** section.
Drag a selected clipart element into the image preview area.
Customize the corresponding image layer in the *Layers* tab as desired. See [Clipart layer settings](#section-idm232335342469844).
Select the floppy disk icon in the upper toolbar to save your template.
Clipart layer settings [#clipart-layer-settings]
The Image Designer adds clipart elements as *Image* layers in the Layers tab. You can edit the clipart with the following settings:
* **X** and **Y**: Set image coordinates to place your clipart on the template. You can also drag the layer in the image preview area to achieve the same result.
* **width**: Define the width of the output image.
* **height**: Define the height of the output image.
* **Transparency**: Change the transparency of the clipart image on a scale from 0% to 100%, where 0% means no transparency and 100% means a fully transparent clipart image.
* **Rotation (deg)**: Define the rotation degree of the output image.
* **Crop Mode**: Cut off the sides, top, and bottom of the image.
* **Slicing**: Activate **Slicing** to cut the image and then confirm the slicing.
* **Source**: Insert an URL of the additional image from outside your feed.
To change the URL, select the **Change URL** button and enter a new image URL.
* **Reset filters**: Reset all your filter settings for a layer.
* **brightness**: Increase the image brightness.
* **hue**: Change the image coloring.
* **grayscale**: Convert your image to black and white.
* **invert**: Invert the colors by moving the slider to the right.
* **contrast**: Increase the image shades.
* **saturate**: Increase the image saturation.
* **sepia**: Add a sepia filter to the image.
* **blur**: Blur the image.
# Add a rating to your image template
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
In Image Designer, you can add a rating to your image template and choose its design and shape, such as stars, concentric circles, a progress bar, and a Tripadvisor-branded rating. Each rating design type has some common and specific settings.
Add a rating [#add-a-rating]
Go to **Designer** from your site's main menu.
Select the **Insert** tab.
Open the **Elements** section.
Drag the **Rating** element into the image preview area.
Customize the rating layer in the *Layers* tab as desired. See [Rating layer settings](#section-idm23233535117954).
Select the floppy disk icon in the upper toolbar to save the changes.
Rating layer settings [#rating-layer-settings]
The Image Designer adds a rating as *Rating* layer in the Layers tab. You can edit the rating layer with the following settings:
Common rating settings [#common-rating-settings]
All rating design types share the following settings:
* **Input**: Select the attribute that contains the rating for products.
If the attribute has an ex (**✘**) before its name, the product you are currently editing in Image Designer has an empty value in that attribute.If the attribute has a checkmark (**✔**) before its name, the product has a relevant value in the attribute.
* **Rating type**: Select the type of rating you want to use.
* **Default value**: Enter the default static value for the rating score if needed.
* **X** and **Y**: Set rating area coordinates to place your rating on the image template. You can also drag the layer in the image preview area to achieve the same result.
* **width**: Define the width of the entire rating area.
* **height**: Define the height of the entire rating area.
* **Stroke color**: Choose the color of the rating symbols' borders in the color picker.
* **Stroke width**: Define the width of the rating symbols' borders.
* **Transparency**: Select the transparency of the rating symbols' borders on a scale from 0% to 100%, where 0% means no transparency and 100% means fully transparent borders.
Star rating settings [#star-rating-settings]
The star rating has all common settings and the following additional ones:
* **Full star color**: Define the color for the inner part of the full rating symbol.
* **Transparency**: Select the transparency for the inner part of the full rating symbol on a scale from 0% to 100%, where 0% means no transparency and 100% means a fully transparent rating symbol.
* **Empty star color**: Define the color of the empty rating symbols.
* **Transparency**: Select the transparency of the empty rating symbols on a scale from 0% to 100%, where 0% means no transparency and 100% means a fully transparent empty rating symbol.
* **Don't fill empty**: Check this box to make empty stars transparent.
* **Inner Radius**: Define the radius if you want the rating area to be angled.
Concentric circles rating settings [#concentric-circles-rating-settings]
The concentric circles rating consists of the outer and inner circles and has all common settings and the following additional ones:
* **Fill**: Define the color for the inner part of the full rating symbols.
* **Don't fill**: Check this box to make empty circles transparent.
* **Transparency**: Select the transparency for the inner part of the full rating symbols on a scale from 0% to 100%, where 0% means no transparency and 100% means a fully transparent rating symbol.
* **Inner margin**: Define the size of the inner circles.
* **Spacing**: Define the distance between the circles.
* **Rotation (deg**): Define the rotation degree of the rating area.
Progress bar rating settings [#progress-bar-rating-settings]
* **Fill**: Define the color of the inner or outer bar part.
* **Don't fill**: Check this box to make the empty bar part transparent.
* **Transparency**: Select the transparency of the inner or outer progress bar rating on a scale from 0% to 100%, where 0% means no transparency and 100% means a fully transparent progress bar.
* **Inner margin**: Define the size of the inner circles.
* **Rotation (deg)**: Define the rotation degree of the rating area.
Tripadvisor rating settings [#tripadvisor-rating-settings]
The Tripadvisor rating has the following settings:
* **Input**: Select the attribute that contains the rating for products.
If the attribute has an ex (**✘**) before its name, the product you are currently editing in Image Designer has an empty value in that attribute.If the attribute has a checkmark (**✔**) before its name, the product has a relevant value in the attribute.
* **Default value**: Enter the default static value for the rating score.
* **X** and **Y**: Set the rating area coordinates to place your rating on the template. You can also drag the layer in the image preview area to achieve the same result.
* **width**: Define the width of the rating area.
* **height**: Define the height of the rating area.
# Add a rectangular element to your image template
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
In Image Designer, you can add a rectangular element to your image template as a background for text or other design elements.
Add a rectangular [#add-a-rectangular]
Go to **Designer** from your site's main menu.
Select the **Insert** tab.
Open the **Elements** section.
Drag the **Rect** element into the image preview area.
Customize the corresponding Rect layer in the *Layers* tab as desired. See [Rect layer settings](#section-idm232335338592873).
Select the floppy disk icon in the upper toolbar to save the changes.
Rect layer settings [#rect-layer-settings]
The Image Designer adds rectangular elements as *Rect* layers in the Layers tab. You can edit the Rect layer with the following settings:
* **X** and **Y**: Set the element's coordinates to place your rectangular on the image template. You can also drag the layer in the image preview area to achieve the same result.
* **width**: Define the width of the rectangular.
* **height**: Define the height of the rectangular.
* **Fill color**: Choose the color of the internal part of the rectangular in the color picker.
* **Fill transparency**: Change the transparency of the rectangular on a scale from 0% to 100%, where 0% means no transparency and 100% means a fully transparent rectangular.
* **Stroke color**: Choose the color of the borders of the rectangular element in the color picker.
* **Stroke width**: Choose the width of the borders of the rectangular element.
* **Transparency**: Change the transparency of the borders on a scale from 0% to 100%, where 0% means no transparency and 100% means fully transparent borders.
* **Radius X** and **Radius Y**: Round the angles of the rectangular.
* **Rotation (deg)**: Define the rotation degree of the rectangular.
# Image Designer interface & overview
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
How to navigate and access Image Designer [#how-to-navigate-and-access-image-designer]
Please loging into the Productsup platform. Next, please do:
Go to a desired Site in your Organization.
Open the site's main menu on the left.
Access **Image Designer**.
Image Designer interface [#image-designer-interface]
Image Designer consists of:
* Toolbar
* Image preview
* Editing tabs
Toolbar [#toolbar]
The Image Designer toolbar buttons allow you perform the following:
* The **Preview Product** arrows take you to the next or the previous product in your feed. Use it to preview how the designs apply to the images.
* The **Search by** allows you find a specific product in the feed and preview the design instanteniously. You might want to search by SKU, ID, GTIN/EAN code, or even a Title, Theme, Product Line - the search is flexible, it will return all the matching products, and you can use the Preview Product arrows again to view all the images and decide if you are happy with the design.
* The zoom-in (**+**) and zoom-out (**-**) buttons let you increase or decrease the image preview size.
* The **"Eye" icon** lets you show or hide elements that are out of the design template frames.
* The **Copy and Paste icons** let you copy and insert a selected layer.
* The **Save**, **Undo** and **Redo** buttons perform the respective actions. Revert & repeat actions apply to your last actions, and you can choose a specific action from the drop-down menu.
Image preview [#image-preview]
The area below the toolbar displays a selected product image and all the applied layers. You can move, resize, and rotate the layers over the image as desired.
Image Designer lets you preview only the first 50 images of your feed. If you fish to preview a specific product, please use **Search by** feature in the Toolbar.
Editing tabs [#editing-tabs]
On the right side of the Toolbar, you can find four (4) Editing tabs:
. **Layers** is a list of transparent sheets that lets you edit separate design elements. See [Layers tab](#section-idm4582673833624033646784373035) for more details.
. **Insert** represents different sets of elements - such as text, images, shapes, clipart, and icons, and the image uploader. All of these you can embed into an image template. See [Insert tab](#section-idm46014041341712336467936016) for more details.
. **Templates** is a collection of the default templates offered by the Productsup platform and your custom templates. See [Templates tab](#section-idm4542019716217633646814511053) for more details.
. **Settings** for the entire template. See [Settings tab](#section-idm4542019719320033646859333642) for more details.
Layers tab [#layers-tab]
Layers are the first tab in the Image Designer. Layers are transparent sheets that let you edit separate design elements. Every new element you add to the template in Image Designer appears as a separate layer.
Actions with Layers [#actions-with-layers]
You can perform the following actions with layers:
* Change a layer position in the list by dragging and dropping it with the help of the left handle.
* Rename layers with the "pen" icon.
* Link and move several layers simultaneously. To do so, select the link icon for each necessary layer.
* Hide a layer with the "eye" icon to reveal the layer beneath it.
* Delete a layer with the "bin" icon.
Layer types [#layer-types]
Image Designer creates the following layer types when dragging elements from the *Insert* tab to the image template preview area. Each layer type has its specific settings.
* **Rect**, or Rectangular is a layer for the *Rect* element from *Elements*.
* **Text** is a layer for the *Text* element from *Elements*.
* **DynamicText** is a layer for the *Dynamic Text* element from *Elements* or a clipart item from *Clipart*.
* **Image** is a layer for the *Image from URL* element from *Elements*.
* **DynamicImage** is a layer for the *Dynamic Image* element from *Elements*.
* **CustomImage** is a layer for images uploaded in *Your Custom Images*.
* **Icon** is a layer for an icon selected from *Icons*.
* **Rating** is a layer for the *Rating* element from *Elements*.
Insert tab [#insert-tab]
Insert is the second tab in the Image Designer. Insert lets you add shapes, descriptions, graphical elements, clipart, and icons or upload custom images. You can drag and drop a necessary element to the preview area. Each added element creates an individual layer in the Layers tab, where you can edit it.
The Insert tab consists of the following sections:
* **Elements** is a set of graphic elements, texts, and custom images.
* **Clipart** is a set of clipart images.
* **Icon Font** is a set of icons.
* **Your Custom Images** is a tool for uploading and saving images in a library.
Templates tab [#templates-tab]
Templates is the third tab in the Image Designer. It consists of two sections:
* **Global Templates** - a set of default image templates offered as an example by Productsup. It might be easier to start up with selecting pre-saved Global templates, edit those, and later save them as your custom templates.
* **Your Templates** is a list of your custom image templates. You can edit, rename, or delete your custom templates, copy them to another Site, or share them over the Projects or for the entire Organization. You can also switch between the All, Intermidiate level, or Export level templates here.
Settings tab [#settings-tab]
Settings is the fourth tab in the Image Designer. They apply to your entire active design template:
. Select the **Stage the template will be implemented on** in Productsup:
* choose **Intermediate Level** to make import-stage columns available for your template's dynamic text and image layers;
* choose **Export Level** to make intermediate-stage columns available for your template's dynamic text and image layers.
. Add a **Grid** to align elements in the preview. You can select the variants: `None`, `10`, and `60`. The grid appears only during editing and doesn't appear on the final image.
. Change the **Canvas** settings - choose the Background as HEX or RGB code or the Template size to ensure the format meets the requirements of the export channel. The **Template Size** drop-down shows pre-defined template types and sizes in pixels.
. Apply **SVG filters** to all the layers simultaneously:
* **Reset filters** resets all your filter settings for a layer.
* **Brightness** increases the image brightness.
* **Hue** changes the image coloring.
* **Grayscale** converts your image to black and white.
* **Invert** inverts the colors.
* **Contrast** increases the image shades.
* **Saturate** increases the image saturation.
* **Sepia** adds the sepia filter to the image.
* **Blur** softens the image.
# Add static or dynamic text to your image template
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
In Image Designer, you can add static or dynamic text to your image template.
Dynamic text is the value that the platform takes from an assigned column in your feed.
Add a static text [#add-a-static-text]
Go to **Designer** from your site's main menu.
Select the **Insert** tab.
Open the **Elements** section.
Drag the **Text** element from the *Elements* section to the image preview area.
Customize the corresponding Text layer in the *Layers* tab as desired. See [Static text layer settings](#section-idm353363502702036).
Select the floppy disk icon in the upper toolbar to save your template.
Add a dynamic text [#add-a-dynamic-text]
Go to **Designer** from your site's main menu.
Select the **Insert** tab.
Open the **Elements** section.
Drag the **Dynamic Text** element into the image preview area.
Customize the corresponding DynamicText layer in the *Layers* tab as desired. See [Dynamic Text layer settings](#section-idm232335350868781).
Select the floppy disk icon in the upper toolbar to save changes.
Text settings [#text-settings]
Static text layer settings [#static-text-layer-settings]
The Image Designer adds a static text as *Text* layer in the Layers tab. You can edit the static text with the following settings:
* **X** and **Y**: Set text area coordinates to place your text on the image template. You can also drag the layer in the image preview area to achieve the same result.
* **width**: Define the width of the text.
* **height**: Define the height of the text.
* **Rotation (deg)**: Define the rotation degree of the text.
* **Stroke color**: Choose the color of the text borders in the color picker.
* **Stroke width**: Define the width of the text borders.
* **Transparency**: Select the transparency of the text borders on a scale from 0% to 100%, where 0% means no transparency and 100% means fully transparent text borders.
* **Font color**: Define the text color in the color picker.
* **Font size**: Define the text size in pixels.
* **Font Transparency**: Select the transparency of the text on a scale from 0% to 100%, where 0% means no transparency and 100% means fully transparent text.
* **Line height (px)**: Define the line height in pixels.
* **Text**: Add the static text.
* **Superscript currency symbol and fractional** checkbox lets you superscript the currency symbol preceding the price and the fractional part of the price. You can use it only for the price attributes.
* **Font family**: Choose between 800 different fonts from the [Google Fonts project](https://fonts.google.com/) or [Add custom text fonts](#section-idm4589732831417634241544667666).
* **Font decorations**: Define the font decorations such as bold, italics, underline, or strikethrough.
* The strikethrough font decoration applies to the entire value rather than a part of it, such as *"This is value"*.
* **Horizontal alignment**: Choose the type of horizontal alignment.
* **Vertical alignment**: Choose the type of vertical alignment.
* **Word Spacing (px)**: Change the spacing between the words by filling in the number of pixels.
* **Character Spacing (px)**: Change the spacing between the characters by filling in the number of pixels.
* **Render background**: Add a background color to the whole text area.
* **Partial background**: Add a background color to the inserted text only.
* **Text Shadow**: Add a shadow to your text.
Dynamic Text layer settings [#dynamic-text-layer-settings]
The Image Designer adds a dynamic text as *DynamicText* layer in the Layers tab. You can edit the dynamic text with the following settings:
* **Input**: Select the attribute that contains the value you want to use as dynamic text.
If the attribute has an ex (**✘**) before its name, the product you are currently editing in Image Designer has no value in that attribute. If you choose an attribute with an empty value, Image Designer displays the warning text `DYNAMIC TEXT - NO VALUE IN SELECTED COLUMN` in the product's image preview. However, if you send an image with an empty value to an export channel, the platform removes the warning text and displays a blank value instead.If the attribute has a checkmark (**✔**) before its name, the product has a relevant value in the attribute.
* **Max length**: Define the max length of the text.
* **X** and **Y**: Set text area coordinates to place your text on the template. You can also drag the layer in the image preview area to achieve the same result.
* **width**: Define the width of the text.
* **height**: Define the height of the text.
* **Rotation (deg)**: Define the rotation degree of the text area.
* **Color**: Choose the color of the text.
* **Stroke color**: Choose the color of the text borders in the color picker.
* **Stroke width**: Define the width of the text borders.
* **Transparency**: Select the transparency of the text borders on a scale from 0% to 100%, where 0% means no transparency and 100% means fully transparent text borders.
* **Font color**: Define the text color in the color picker.
* **Font size**: Define the text size in pixels.
* **Font Transparency**: Select the transparency of the text on a scale from 0% to 100%, where 0% means no transparency and 100% means fully transparent text.
* **Line height (px)**: Define the line height in pixels.
* **Superscript currency symbol and fractional** checkbox lets you superscript the currency symbol preceding the price and the fractional part of the price. You can use it only for the price attributes.
* **Font family**: Choose between 800 different fonts from the [Google Fonts project](https://fonts.google.com/) or [Add custom text fonts](#section-idm4589732831417634241544667666).
* **Font decorations**: Define the font decorations such as bold, italics, underline, or strikethrough.
* The strikethrough font decoration applies to the entire value rather than a part of it, such as *"This is value"*.
* **Horizontal alignment**: Choose the type of horizontal alignment.
* **Vertical alignment**: Choose the type of vertical alignment.
* **Multiline**: Activate this button to write text in more than one row.
* **Word Spacing (px)**: Change the spacing between the words by filling in the number of pixels.
* **Character Spacing (px)**: Change the spacing between the characters by filling in the number of pixels.
* **Render background**: Add a background color to the whole text area.
* **Partial background**: Add a background color to the inserted text area.
* **Text Shadow**: Add a shadow to your text.
Add custom text fonts [#add-custom-text-fonts]
You can add custom text fonts used by your brand to make consistent design of your images.
The font files you wish to upload must be one of the supported formats: *.otf*, *.woff*, or *.woff2*.
To add custom fonts for texts in Image Designer:
Add static or dynamic text as described in [Add a static text](#section-idm4542019718984033646934368685) or [Add a dynamic text](#section-idm4582677451142433646935232175).
In **Layers** in the right panel, select the **Font family** drop-down menu.
Scroll down in the menu and select **More Fonts**.
In the **Font Selector** pop-up window, select **Add custom font**.
Drag and drop the font files to the upload area or select the highlighted area to choose a file from your computer. Select **OK**.
For each uploaded font, in **Font Name**, enter a font name that should include the font variant, such as `Roboto regular` or `Arial italic`. Accurate labeling helps you distinguish among the added fonts.
In **Font Variant**, add the corresponding font variant such as `regular`, `bold`, or `italic`. If you leave the field empty, the platform considers the font as regular.
Select the terms and conditions checkbox to confirm your right to use and distribute the uploaded fonts in your projects.
Select **Add Fonts**. The new fonts are now available for use in your designs.
To find and use your custom fonts, in the text layer, select the **Font family** drop-down menu, and select a needed font in **Your Selected Fonts**.
# Image Designer
import { Callout } from "fumadocs-ui/components/callout";
Introduction [#introduction]
Image Designer is a Productsup image-editing application that helps you enhance images in your product feed within the platform. At scale.
You can mix several images, overlay the descriptions, add a logo, price, or discount label to your images. Apply the same design template to all the images in your product feed or a certain selection of products. This is controlled by the *Use Image Designer Template* rule box in Dataflow and Data View.
Image Designer supports the following image formats:
* Input: JPG, JPEG, and PNG.
* Output: JPG and PNG.
What you can do with Image Designer [#what-you-can-do-with-image-designer]
Image Designer helps you edit images in the following ways:
* [Create and apply custom image templates](/docs/help-center/map-and-optimize-your-data/image-designer/create-and-apply-custom-image-templates.mdx).
* [Add a new image](/docs/help-center/map-and-optimize-your-data/image-designer/add-a-new-image-to-your-image-template).
* [Add static or dynamic text](/docs/help-center/map-and-optimize-your-data/image-designer/add-static-or-dynamic-text-to-your-image-template).
* [Add icons and clipart images](/docs/help-center/map-and-optimize-your-data/image-designer/add-icons-and-clipart-to-your-template).
* [Add product rating/reviews](/docs/help-center/map-and-optimize-your-data/image-designer/add-rating-to-your-template).
* [Add a rectangular element](/docs/help-center/map-and-optimize-your-data/image-designer/add-a-rectangular-element-to-your-template).
* [Search and preview any product in your feed](/docs/help-center/map-and-optimize-your-data/image-designer/search-for-a-product-in-the-image-designer-preview.mdx).
For a walkthrough of the Image Designer application and features, read [Image Designer interface & overview](/docs/help-center/map-and-optimize-your-data/image-designer/interface-image-designer).
How to obtain Image Designer access [#how-to-obtain-image-designer-access]
Image Designer is an additional service that requires contract amendment. However, you can test it with limited access without activating the full version. In the limited version, you can see and try the same features as in the full version, but apply the template only to a limited number of images.
| Full Image Designer | Limited Image Designer |
| -------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| Apply the templates to all products in the feed. | Apply the templates only to 50 random products. |
| Apply the templates with the rule box *Use Image Designer Template*. | Apply the templates with the rule box *Use Image Designer Template (limited)*. |
To activate the full version of Image Designer, reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com).
# Create and apply custom image templates
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Productsup provides a collection of pre-designed global templates to let you edit your product images in Image Designer. The global templates are available to all customers. Instead of creating a template from scratch, you can select a needed global template and edit it with the tools of Image Designer.
You can choose from the following global templates:
* Dynamic Multiple Images
* Dynamic Long
* Close-Up Material
* Side Slant
* Sale
* Dynamic Three Images
* Dynamic
* Blank Image
* Three (3) Travel templates
Create a custom image template [#create-a-custom-image-template]
Go to **Designer** from your site's main menu.
Select the **Templates** tab.
Select a desired template from **Global Templates**.
Customize the template in the *Layers*, *Insert*, and *Settings* tabs.
Select the floppy disk icon in the upper toolbar to save your custom template.
Once created, the template automatically shows up in the *Your Templates* section of the *Templates* tab.
By default, your product image preview area shows the first image from your current site feed, and you can preview only one image at a time. Select another product image using the **Preview Product** arrows in the Image Designer toolbar.
The preview shows an image placeholder if your feed has no images.
Edit your custom templates [#edit-your-custom-templates]
Go to **Designer** from your site's main menu.
Select the **Templates** tab.
Select a desired template from **Your Templates**.
In the *Your Templates* section, you can do the following actions with your templates:
* Rename a template:
Go to the **Templates** tab.
Scroll down to the *Your Templates* section.
Select the pen icon next to the template's default name and enter the desired name.
Select the checkmark icon (**✔**) to confirm.
Select **Save**.
* Delete a template:
Go to the **Templates** tab.
Scroll down to the *Your Templates* section.
Open the drop-down menu of the needed template's area on the right.
Select **Delete**.
Select **OK** in the pop-up window to confirm your action.
* Copy a template to another site:
Go to the **Templates** tab.
Scroll down to the *Your Templates* section.
Open the drop-down menu of the needed template's area on the right and choose **Copy To Another Site**.
Choose a site in the *Select Site* pop-up and select **OK**.
* Make a template available for a project or the entire organization.
Go to the **Templates** tab.
Scroll down to the *Your Templates* section.
Open the drop-down menu of the needed template's area on the right and choose a needed level.
Apply image templates to your product images [#apply-image-templates-to-your-product-images]
To export your edited images to the destination, you need to apply the templates with a rule box:
Go to **Data View** from the site's main menu.
Select **Edit** in the necessary image column.
Select **Add Box** and search for the *Use Image Designer Template* rule box.
The limited Image Designer version lets you use only the *Use Image Designer Template (limited)* rule box. With this rule box, you can test the functionality with a limited number of images.
Select the needed template from the **Template** drop-down menu.
Select **Save**.
When you modify images, they go through the Productsup image servers.
Each time you change and apply a template, the URL of the exported image changes and starts with `https://gfx.productsup.io/`.
# Search and preview any product in the Image Designer
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
By default, the Image Designer preview shows the first 50 products of your product feed, and you can move between them with the **Preview Product** arrows. The Product Search feature lets you jump straight to a specific product instead of paging through the list.
You can search by **any product attribute**, such as ID, SKU, GTIN, Title, etc - no limitation here. The search is case-insensitive and supports partial values, and the preview navigates to the products that match your query.
How to search for a product in the Image Designer preview [#how-to-search-for-a-product-in-the-image-designer-preview]
Go to **Designer** from your site's main menu.
Select an attribute in the drop-down next to **Search by** in the upper toolbar. For example, `sku`.
Enter a full or partial value in the search input and select the magnifying glass icon.
Use the **Preview Product** arrows to move between the matching products. The counter below the arrows shows your position in the search results, for example, `Match 1 of 1`.
The preview shows the selected product with all layers of your template, so you can check how the template renders for that exact product before saving it.
Clear the search input to return to the default preview of your feed's products.
When to use the Product Search [#when-to-use-the-product-search]
The product search is useful in the following scenarios:
* You run prioritized product campaigns, such as hero SKUs or limited assortments, and need to verify the template on the exact products of the campaign.
* Your feed is large or contains duplicates, and the product you want to preview is not among the first products of the feed.
* You use your own prioritization logic and want to confirm which product variant the template picks up.
# Add a new image to your image template
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
In Image Designer, you can apply images over your existing product image using one (1) of the following ways:
. Upload a static image file to the platform image library and use it for all templates within the site where you uploaded it. See [Add a static image](#section-idm4631011274931233646918317425).
. Add an image via the URL of the storage that contains the image. See [Add an image via the URL](#section-idm4631011230899233646920029781).
. Add a dynamic image from a selected column in your feed. See [Add a dynamic image](#section-idm4582677101676833646919969093).
Add a static image [#add-a-static-image]
You can upload images from your computer and use them for all templates within the site where you uploaded them. You can find all uploaded images in the **Your Custom Images** section of the Insert tab. To add an image:
Go to **Designer** from your site's main menu.
Open the **Insert** tab.
Scroll down to the section **Your Custom Images**.
Upload images by dragging them into the upload area or selecting **Or click here to upload**.
To see the uploaded image details, select **Show Upload Details**.
Drag the uploaded image to the image preview area.
Customize the corresponding custom image layer in the *Layers* tab. See [Set up an image layer](#section-idm4556118247084833685000640929).
Select the floppy disk icon in the upper toolbar to save the changes.
Add an image via the URL [#add-an-image-via-the-url]
You can upload images via the URL of the storage that keeps them.
Go to **Designer** from your site's main menu.
Open the **Insert** tab.
Open the **Elements** section.
Drag the **Image from URL** element into the image preview area.
Enter the image URL in the pop-up window and select **Add**.
Customize the corresponding image layer in the *Layers* tab as desired. See [Set up an image layer](#section-idm4556118247084833685000640929).
Select the floppy disk icon in the upper toolbar to save the changes.
Add a dynamic image [#add-a-dynamic-image]
You can add an image from a selected column in your feed.
Go to **Designer** from your site's main menu.
Open the **Insert** tab.
Open the **Elements** section.
Drag the **Dynamic Image** element into the image preview area.
Customize the corresponding Image layer in the Layers tab as desired. See [Set up an image layer](#section-idm4556118247084833685000640929).
Select the floppy disk icon in the upper toolbar to save the changes.
Set up an image layer [#set-up-an-image-layer]
Whenever you add an image to the image template, the platform creates a new layer and gives it a name according to its type and order. To locate a necessary layer, go to the **Layers** tab and select one of the following:
* For a static image, select the corresponding layer named such as `CustomImage: Layer-XX`.
* For an image added via URL, select the corresponding layer named such as `Image: Layer-XX`.
* For a dynamic image, select the corresponding layer named such as `DynamicImage: Layer-XX`.
To edit your image layer, set up the following:
The settings of all image types are almost the same. The difference is only in the **Input** and **Source** fields.
* (For Dynamic Image layer only) **Input**: Select the attribute that contains the value you want to use as a dynamic image.
If the attribute has an ex (**✘**) before its name, the product you are currently editing in Image Designer has no image.If the attribute has a checkmark (**✔**) before its name, the product has a relevant image in the attribute.
* **X** and **Y**: Set image coordinates to place your image on the template. You can also drag the layer in the image preview area to achieve the same result.
* **width**: Define the width of the image. You can also change the image size right in the image preview area.
* **height**: Define the height of the image. You can also change the image size right in the image preview area.
* **Transparency**: Set the transparency of the image on a scale from 0% to 100%, where 0% means no transparency and 100% means a fully transparent image.
* **Rotation (deg)**: Define the rotation degree of the image.
* **Crop Mode**: Cut off the sides, top, and bottom of the image.
* **Slicing**: Slice the image into pieces.
* **Source**: To change the image, do one (1) of the following actions depending on the image layer type:
* For *CustomImage* layers, choose the needed image from the drop-down menu to change an image.
* For *Image* layers, select the **Change URL** button and enter the URL of a new image.
* **Reset filters**: Reset all your filter settings for this layer.
* **brightness**: Increase the image brightness.
* **hue**: Change the image coloring.
* **grayscale**: Convert your image to black and white.
* **invert**: Invert the colors.
* **contrast**: Increase the image shades.
* **saturate**: Increase the image saturation.
* **sepia**: Add a sepia filter to the image.
* **blur**: Blur the image.
# Advanced rule box options
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
While optimizing your product data with the help of rule boxes in Data View or Dataflow, you can apply the following advanced options to rule boxes:
* [Pause a rule box](#N1659614411807)
* [Delete a rule box](#N1659614423545)
* [Duplicate a rule box](#section-idm232219334686326)
* [Apply rule boxes to segments](#section-idm4496911623404833190509284293)
* [Schedule rule boxes to run at a specific time](#section-idm232219334970168)
Also, you can copy and apply rule boxes across multiple sites with the Bulk Option functionality. See [Apply rule boxes in bulk across multiple sites](#section-idm232217535173292) for more information.
Pause or delete a rule box [#pause-or-delete-a-rule-box]
To terminate the effect of a rule box, you may pause or delete it.
Pause a rule box [#pause-a-rule-box]
To temporarily pause a rule box and re-activate it later:
Go to **Data View** from the site's main menu.
Choose the needed export or the intermediate stage in the dropdown on the left.
Select **Edit** in the attribute's column where you have a rule box.
Select the wrench icon 🔧 in the top right-hand corner of the rule box.
Select the **pause (||)** icon.
Select **Save**.
To activate the rule box again, repeat the previous instructions and select the play icon **(▶︎)** in [step 5](#N1659514972415).
Delete a rule box [#delete-a-rule-box]
To remove the rule box:
Go to **Data View** from the site's main menu.
Choose the needed export or the intermediate stage in the dropdown on the left.
Select **Edit** in the attribute's column where you have a rule box.
Select the wrench icon 🔧 in the top right-hand corner of the rule box.
Select the red **trash** icon.
Select **Save**.
Duplicate a rule box [#duplicate-a-rule-box]
To apply the same rule box several times for the same attribute, but with slightly different settings, you can duplicate a rule box and its settings. To duplicate a rule box:
Go to **Data View** from the site's main menu.
Choose the needed export or the intermediate stage in the dropdown on the left.
Select **Edit** in the attribute's column where you have a rule box.
Select the wrench icon 🔧 in the top right-hand corner of the rule box.
Select the **duplicate** icon.
Select **Save**.
Apply rule boxes to segments [#apply-rule-boxes-to-segments]
If you need to edit only a part of your products, you can combine these products into a segment and apply rule boxes to the whole segment without affecting other products.
Before applying rule boxes to specific product segments, you must first create a segment. To learn how to create segments, see [Use segments to apply rule boxes to specific product groups](/docs/help-center/map-and-optimize-your-data/data-view/use-segments-to-apply-rule-boxes-to-specific-product-groups#section-idm23222108490782).
To apply rule boxes to segments:
Go to **Data View** from your site's main menu.
Choose the needed export or the intermediate stage in the dropdown on the left.
Select **Edit** in the attribute column where you want to apply a rule box to a product segment.
If you have already added the needed rule box, proceed to the next step. If not, choose **Select an Option**, select the needed rule box, and set it up.
Select the wrench icon 🔧 in the top-right corner of the rule box.
Select the label icon 🏷 at the top of the rule box and go to the *Available Segments* window to select the plus icon **+** next to the needed product segment.
You can select several segments in one rule box. In this case, the platform applies the rule box to all products matching all selected segments.
Select **Save**.The rule box affects the products of the selected segment only. The rest of the products remain unchanged.
If you need to apply rule boxes to products based on the contents of multiple attributes, you can use the Rule box conditions feature available in Dataflow. See [Apply rule boxes based on conditions](/docs/help-center/add-a-rule-box/apply-rule-boxes-based-on-conditions).
Schedule rule boxes to run at a specific time [#schedule-rule-boxes-to-run-at-a-specific-time]
You can schedule rule boxes to run at a specific time. For example, if you want to offer discounts on products on weekends.
The timezone of the rule boxes is the same as the site's timezone. You can't change it by yourself. If you need to change the timezone, contact [support@productsup.com](mailto:support@productsup.com). In your request, indicate the following:
* needed timezone
* the site IDs where you want to apply the timezone.
Schedule a rule box for a specific day [#schedule-a-rule-box-for-a-specific-day]
To schedule a rule box for a specific day of the week and time interval:
Go to **Data View** from the site's main menu.
Choose the needed export or the intermediate stage in the dropdown on the left.
Select **Edit** in the attribute's column where you have a rule box.
Select the wrench icon 🔧 in the top right-hand corner of the rule box.
In the Box Scheduling section, select **Execute on specific days**.
Select **Add Date**.
Pick a day of the week from the dropdown.
Select the **Begin** and **End** times.
Select **Save** at the top of the toolbar.
You can schedule as many timeframes as desired by repeating the previous actions.
After you add a schedule, a little clock icon appears next to the scheduled rule box.
Schedule a rule box between two dates [#schedule-a-rule-box-between-two-dates]
Go to **Data View** from the site's main menu.
Choose the needed export or the intermediate stage in the dropdown on the left.
Select **Edit** in the attribute's column where you have a rule box.
Select the wrench icon 🔧 in the top right-hand corner of the rule box.
In the Box Scheduling section, select **Execute between two dates**.
Define both **Start** and **End** dates or just one of them.
Select **Save** at the top of the toolbar.
If you define only a Start date, the rule box works for all runs starting this date.
If you define only an End date, the rule box works for all runs before the end date.
If you define the Start and End dates, the rule box works for all runs between and on those dates.
Apply rule boxes in bulk across multiple sites [#apply-rule-boxes-in-bulk-across-multiple-sites]
If you need to add the same rule boxes to multiple sites, use the Bulk Option functionality to save time.
Your sites must have the same attribute names to apply rule boxes in bulk.
Set up the rule boxes in one site.
Go to the organization or project level.
Select **Bulk Option** in the upper ribbon. A new page opens.
In the *Choose Sites* step, choose the site where you created the rule boxes and select **Next Step**.
In the *Choose Operation* step, select **Add Dataflow Boxes** and confirm your choice by selecting **Next Step**.
In the *Operation Details* step, choose the stages that contain the rule boxes in the **Dataflow** dropdown. If you choose *Intermediate - Export*, select the export containing your rule boxes from the **Export** dropdown.
All sites where you want to apply the rule boxes must have the selected export.
In the *Connections* section, select the connections that contain the rule boxes you want to copy and apply in bulk.You can see the rule boxes applied to each connection.
To let the platform display the sites where you want to copy the rule boxes, select the projects they belong to in the *Target Projects* section.
Search for your desired sites in the **Target Sites** search field.
If you are adding rule boxes between the intermediate and export stages, find the *Channels* column and select the exports where you want to apply the copied rule boxes.
Select **Execute**.
In the *Confirmation* step, check the results of the applied changes.You can leave this screen by selecting **Return to organization page**. You can also go to one of the sites where you performed the changes by selecting the name of the needed site.
# Twig-based rule box capabilities to enhance your product data
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Twig is a template engine based on PHP that lets you add dynamic content to the template.
You can transform your data with the help of Twig in the rule boxes such as *Text Template*, *Text Template with Lists*, and *Math Template* in Data View or Dataflow.
Twig lets you make text transformations, do math calculations, dynamically update URLs, and apply simple conditional logic.
This document shows some examples of using Twig to optimize your product data.
Use rule boxes with Twig to edit the text and do calculations [#use-rule-boxes-with-twig-to-edit-the-text-and-do-calculations]
You can enhance your data with the help of rule boxes that can use Twig to dynamically change the content of the attributes in Data View or Dataflow. To add a rule box, take the following steps:
Go to **Data View** from the site's main menu.
Choose the needed export or the intermediate stage in the drop-down menu on the left.
Select **Edit** in the attribute column where you want to apply the rule box:
* To create or edit text in the attributes, use the rule boxes *Text Template* or *Text Template with Lists*. See [Create text template using data from other attributes](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/replace-values#section-idm353458339224944) to learn how to set up these rule boxes.
* To make math calculations in the attributes, use the *Math Template* rule box. See [Work with prices & math](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/work-with-prices-math) to learn how to set up the rule box.
Enter your text with Twig to integrate attributes' values in your text. See [Add Twig in the rule boxes](#section-idm4625748940313634263541042005).
Select **Save**.
Add Twig in the rule boxes [#add-twig-in-the-rule-boxes]
To get the needed result with Twig, create the Twig code according to the rules:
. The Twig should begin and end with curly brackets and spaces such as `{{ text }}`.
. The contents of Twig are case-sensitive meaning that if you refer to an attribute with a Twig, you need to enter the attribute's name exactly as it is in the feed. For example, `{{ Long_description }}` or `{{ long_description }}`.
. To get values from certain attributes and insert them into the template of the rule box with Twig, use the necessary Twig syntax:
* If the attribute name consists only of alphanumeric characters and underscores, you can refer to it using this syntax: `{{ attribute_name }}`.
* If the attribute name contains spaces, dots, commas, or other special characters, you can refer to it using this syntax: `{{ fromField('attribute name')|raw }}`.
Alternatively, you can rename such an attribute using only alphanumeric characters and underscores. Then, you can refer to the renamed attribute in a Twig using the standard syntax `{{ attribute_name }}`.If renaming an attribute isn't an option, you can copy it, rename the copy, and use the copy in a Twig.
. To edit the attribute's current value, use `currentValue`:
* If the value consists only of alphanumeric characters and underscores, you can refer to it using this syntax: `{{ currentValue }}`.
* If the value contains spaces, dots, commas, or other special characters, you can refer to it using this syntax: `{{ fromField('currentValue')|raw }}`.
Use AI-generator for Twig suggestions [#use-ai-generator-for-twig-suggestions]
If you need a suggestion for a possible Twig, use our AI-based Twig generator.
Select the **>\_** icon in a rule box.
Describe the aim and result you want to achieve in the Twig generator window and select **Generate**.
Select **Copy** below the **Answer** field.
Paste the copied answer into the Twig field of the rule box.
To create the most accurate prompts, see our best practices in [Create the right prompt for the AI Twig generator](/docs/help-center/best-practices/create-the-right-prompt-for-the-ai-twig-generator).
Refer to a site with Twig [#refer-to-a-site-with-twig]
Some sites use shared elements. To distinguish data among the sites, it is possible to add a site tag or site ID in the data feed. See [Edit site settings](/docs/help-center/get-started/manage-your-organization-projects-and-sites/edit-site-settings) to learn how to add a tag to a site.
If you need to refer to a site in your data feed, you can use Twig for site ID such as `{{Tag.SiteID}}` or a site tag such as `{{Site.Tags.XXX}}`, where XXX is the tag key that you can set in the site settings.
Leave a comment for Twig [#leave-a-comment-for-twig]
It is helpful to add a comment to your Twig in the rule boxes to keep a reminder for your colleagues and yourself of the purpose or logic of the change. To leave a comment for a Twig, use the format `{# … #}` and enter the necessary text inside the brackets. For example, `{# it's a comment to remind you what this Twig edits #}`.
The comments are invisible in the data feed and you can only see them when you open the rule box.
Use cases for data editing with Twig [#use-cases-for-data-editing-with-twig]
Here are some use cases where you can use Twig:
| Use case | Attribute value | Text Template with Twig | Result |
| --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------- |
| **Create a text**: Create simple product descriptions in the description attribute using values from *product\_type* and *brand*. | product\_type: `T-shirt`brand: `Nike` | `This is a {{ product_type }} from {{ brand }}.` | `This is a T-shirt from Nike.` |
| **Create a URL**: In the link attribute, create a URL that includes *brand*, and *category*. | brand: `Nike`category: `T-shirts` | `https://www.store-example.com/{{ brand }}/{{ category }}` | `https://www.store-example.com/Nike/T-shirts` |
| **Set value if empty**: Change the current value to `brand new` if it is empty. | The current attribute is empty | `{% if currentValue == '' %}{{'brand new'}}{% else %}{{currentValue}}{% endif %}` | `brand new` |
| **Prepend the text**: Prepend the text `'cheap'` if the price is lower than 130. | The current attribute: `red jacket` | `{% if price < 130 %}Cheap {{currentValue}}{% else %}{{currentValue}}{% endif %}` | `Cheap red jacket` |
# Manage an FTP server hosted by Productsup
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Once you create your FTP server, you can manage it directly in Productsup.
Reset the FTP server password [#reset-the-ftp-server-password]
Go to the organization level and select **FTP Accounts**.
Select the arrow to expand the drop-down menu.
Select **Reset Password**.
Enter and then repeat the new password.
Delete an FTP server [#delete-an-ftp-server]
When you delete an FTP server you created, be aware that you should first back up all hosted files. Additionally, any data feed that you export to the FTP will fail once you delete the FTP server. Ensure that you change the export destination for your data feeds.
Go to the organization level and select **FTP Accounts**.
Select the arrow to expand the drop-down menu.
Select **Remove**.
# Create and manage an FTP server
import { Callout } from "fumadocs-ui/components/callout";
If you need an FTP server to import or export data, you can use an FTP server hosted by Productsup.
Creating and managing FTP servers through Productsup is only possible for admin users.
# Create an FTP server hosted by Productsup
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
FTP (File Transfer Protocol) servers are the software used for transferring files across the Internet and facilitating remote data sharing between computers. FTP server lets you organize your files and provide access to other users to download them remotely. The FTP server gives you storage protected with a username and password.
Productsup lets you create an account at an FTP server to transfer and store your files.
Create an FTP account [#create-an-ftp-account]
Go to the organization level and select **FTP Accounts**.
Select **ADD FTP ACCOUNT**.
Create a username for your FTP server and enter it in the **Username** field.
Enter and repeat your password.
Select **Save**.
Get credentials for your FTP server [#get-credentials-for-your-ftp-server]
After creating an account, you get the link to the FTP server where you can store your files. This link never changes.
You need the credentials, for example, to access an FTP client to transfer files between your computer and the server. See [Upload files to or download them from an FTP server](#section-idm4525956711566433418746304707).
| **Host name** | [ftp://ftp.productsup.com/](http://) |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Username** | Defined upon creation |
| **Password** | Defined upon creation |
| **Port number** | For FTP servers, the global port number is `21`.For SFTP servers, the global port number is `22`. These are default port numbers. If arranged with the administration, your specific port number can differ. Contact [support@productsup.com](mailto:support@productsup.com) if you experience issues with your connection. |
See [Reset the FTP server password](/docs/help-center/get-started/create-and-manage-an-ftp-server/manage-an-ftp-server-hosted-by-productsup#section-idm232209163571939).
Upload files to or download them from an FTP server [#upload-files-to-or-download-them-from-an-ftp-server]
You can transfer files between the FTP server and your computer.
You need to install a program on your computer, such as [Cyberduck](https://cyberduck.io/) or [FileZilla](https://filezilla-project.org/), to transfer files between the FTP server and your computer. Use your FTP server's credentials to access it and upload or download files.
Import files from the FTP server to Productsup [#import-files-from-the-ftp-server-to-productsup]
You can use files from the FTP server as a data source to import them into the Productsup platform:
Create an FTP account and get the credentials. See [Create an FTP account](#section-idm4525956770785633418778107327).
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Feed URL* and select **Add**. Give it a custom name as desired and select **Continue**.
In **Source URL**, add a link to your file stored on the FTP server. In **Description (optional)**, edit the name of the data source as needed.
As you can store multiple files on the FTP server, you need to enter the URL with the complete path to your file within the server in **Source URL** — for example, `ftp://ftp.productsup.com/yourfile.csv`.
Enter a username and password for your FTP account.
Select **Save**.
Export files to the FTP server from Productsup [#export-files-to-the-ftp-server-from-productsup]
You can export your feed from a site in Productsup to the FTP server hosted by Productsup. See [Add an FTP, SFTP, or FTPS destination](/docs/help-center/export-data-feeds/set-up-an-export-destination/add-an-ftp-sftp-or-ftps-destination) for setup instructions.
# Transport Server Data Retention Policy
According to the *Productsup Platform Description – Version Q2-2023-V1, updated May 29, 2023*, the retention policy for the files stored on the Productsup Transport Server is as follows:
* Removal of Files stored on Transport Server:
* Productsup removes files older than 12 months stored on the Transport Server. To prolong their lifetime, you can export the same files again to reset the 12-month Time-To-Live (TTL).
* Files with dynamic filenames:
* Files with filenames containing a dynamic template fragment ( `{{ ... }}` ) have a 30-day TTL. Productsup removes files if you haven't updated them.
See [Legal](https://www.productsup.com/legal/) for more information.
# Billing section
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The Billing section lets administrators add and modify their billing information.
To access Billing, select your profile icon in the top-right corner and choose **Billing**.
You can only see the *Workspaces* link leading to the [Retail platform](https://retail.productsup.com/dashboard/insights) if you have a Retail platform account.
Prerequisites [#prerequisites]
You must be an administrator of your Productsup organization to access the **Billing** section.
Payment Settings tab [#payment-settings-tab]
The Payment Settings view lets you set up an automatic payment method on your organization. You can choose to pay your invoices by direct debit or credit card if the Productsup Finance team has set up [Zuora](https://www.zuora.com/products/billing-software/) on your organization. Productsup supports the following credit cards: Mastercard, Visa, and American Express.
You can also select a default payment method or remove payment methods. Productsup only offers the direct debit payment option in the European, United Kingdom, and Australian regions. Contact [support@productsup.com](mailto:support@productsup.com) if you have any questions.
Productsup does not store any credit card data. Payment provider [Zuora](https://www.zuora.com/products/billing/) stores all credit card payment data.
Add direct debit or credit card [#add-direct-debit-or-credit-card]
To add a direct debit or credit card payment method, select the **Payment Settings** tab in the Billing section and **Add payment method**.
Select **Direct debit** or **Credit card** and choose **Continue** at the bottom of the window.
Enter your payment details in all fields and select **Add**. This process directs you to the region-specific direct debit modal based on the account setup in Zuora. For example, if your billing address is in France, your country's banking details are pre-populated by the EU (SEPA) direct debit modal.
Once you return to the Payment Settings view, choose a payment method and select **Set as default payment method**.
To remove a payment method, select the delete icon.
You can't delete the default payment method. You must select another payment method as default before being allowed to delete an active default method.
# Set up User Management
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Learn how to set up User Management, add new users, remove users, and change user access to sites and projects. To learn more about multiple user types, see [User types and permissions](/docs/help-center/get-started/user-management/user-types-and-access-rights).
To access User Management, you must be a user admin in your organization.
All changes, such as adding new users, removing existing ones, and changing access permissions, must be performed by the organization admin(s). The Productsup Support Team cannot make those changes.
Access User Management [#access-user-management]
To access User Management:
Go to **User Management** from your [organization's](/docs/help-center/get-started/manage-your-organization-projects-and-sites/your-productsup-organization) main menu.
Here's an overview of all users associated with your organization.
Add new users [#add-new-users]
Go to **User Management** from your organization's main menu.
Select **INVITE USERS** in the top right-hand corner of the *User Management* page.
Add the email address(es) of those you wish to invite.
1. You can add one email address per line to invite multiple users at once.
Select if your user should have **Admin** or **User** access.
1. After making a selection, you can give them access to the appropriate sites or projects.
2. When adding sites or projects, you should define whether access should be Read-Write or Read-Only.
Select **Save**.
* The users you invited now receive an email prompting them to accept an invitation to join your organization.
* The email prompts your invited users to accept this invitation.
* Upon accepting it, they will be prompted to configure their account by setting their name, password, email address, the country they are in, and the language they want to use in the platform.
* After accepting the invitation, your new users will have access to Productsup.
Any invites sent to new users will be valid for 30 days. After this, the link expires. The address will then disappear from the list of invited users in your User Management.
Remove users [#remove-users]
Go to **User Management** from the main menu at the organization level.
Select the arrow to expand the **Edit** drop-down menu for the user you want to delete.
Select **Delete**.
To delete admin users, you should first change their role from *Admin* to *User*. See [Change user/admin role](#section-idm232207392753555).
Without changing the user role, you can't delete admin users.
Give users access to sites/projects [#give-users-access-to-sitesprojects]
To give access to users, either Read-Write or Read-Only, to sites or projects:
Go to **User Management** from your organization's main menu.
Select the button showing the number of sites the user has access to.
**Add**, **change**, or **delete** access to sites and projects.
Change user/admin role [#change-useradmin-role]
You can elevate users to administrators as well as demote administrators to users.
Go to **User Management** from your organization's main menu.
To demote a person from an admin profile, select **Edit** from their user profile in User Management:
1. In **Role**, change their role from *Admin* to *User*.
2. Select **Save**.
3. Add any sites/projects you wish the user to have access to.
To elevate a user with read-only or read-write access:
1. Select edit on their user profile in **User Management**.
2. Under settings, change the role to **Admin**.
3. Select **Save**.
# Two-factor authentication (2FA) feature
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Two-factor authentication (2FA) requires you to prove your identity using a device you own besides your standard login credentials. An authenticator sends a code to an app on your mobile phone to confirm your identity.
You can use a third-party authenticator app, such as Google Authenticator, which you can install to your phone in [App Store](https://apps.apple.com/us/app/google-authenticator/id388497605) and [Play Market](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2\&hl=en\&gl=US).
There are two ways to activate 2FA:
* You can activate 2FA for your user in user profile settings. See [Set up user profile](/docs/help-center/get-started/user-management/set-up-user-profile#section-idm232205856133962) for step-by-step instructions.
* You can activate 2FA for all users within your Productsup organization if you are an admin of that organization. See [Activate 2FA for all users within the organization](#section-idm23220705515061) for step-by-step instructions.
If you change your mobile device, you can turn two-factor authentication off to disconnect the old device and save the settings. Then, reactivate 2FA and connect the new device. See [Set up user profile](/docs/help-center/get-started/user-management/set-up-user-profile) for step-by-step instructions.
If you don't have access to your 2FA device anymore, contact [support@productsup.com](mailto:support@productsup.com).
Activate 2FA for all users within the organization [#activate-2fa-for-all-users-within-the-organization]
Select the cogwheel icon
at the bottom of your organization's main menu.
The **Organization settings** page opens in a new tab.
Toggle **Force two-factor authentication for the entire organization** to activate the feature.
Select **Save**.
If you activate 2FA for all users, ensure every user in your organization recognizes this change. 2FA forces all users to authenticate during their next login, so they won't be able to access your Productsup organization without first setting up 2FA.
# Usage data dashboard and overage calculations
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
According to the Productsup License Agreement, you get access to the platform based on your contract entitlement. If you exceed your entitlement and overuse the platform, you face additional charges for overages. The platform automatically calculates overages based on particular metrics.
This document explains the formulas used to calculate excessive use of the Productsup platform.
The Usage data dashboard overviews your platform usage and helps you understand charges and overages. The Usage data dashboard shows the essential metrics affecting invoices, such as items, exports, sites, users, and syndication frequency overages.
The dashboard is available in the Billing section of the platform, and only organization admins can access it.
You can also download the detailed usage reports in CSV format.
To access the Usage data dashboard:
Select your admin profile icon in the top-right corner and choose **Billing**.
Select the *Usage* tab.
You can find metrics' meanings under the info icon
next to each metric name.
Overage calculation metrics [#overage-calculation-metrics]
The platform calculates overages for the following metrics:
* [Max items](#section-idm4520563288896033230246059519)
* [Exports](#section-idm4634253574464033230248710409)
* [Users](#section-idm4561994551683233230348428299)
* [Sites](#section-idm4566155644926433230350696624)
* [Syndication frequency overages](#section-idm4631468298771233551804415214).
Overage calculations exclude the sandbox project usage. See [Use your sandbox project for testing purposes](/docs/help-center/best-practices/use-your-sandbox-project-for-testing-purposes).
Max items [#max-items]
The platform identifies the maximum items imported or exported daily for each non-manual site run for every organization or edition and calculates the monthly overage. Non-manual runs are the ones that use the site scheduling, a trigger of another site, or an API triggers the site.
The formula for overage calculation is:
`Overage = [the highest number of items per day within a month] - [your service entitlement]`
For example, if the item entitlement is `5000`, the overage calculation looks as follows:
The overage for January 2021 is 5000, calculated as `10000 actual items - 5000 items from the entitlement`. There are no overages in February 2021, as the platform imported or exported exactly 5000 items.
Exports [#exports]
The platform takes daily snapshots of the number of your configured main and standard exports for every organization or edition and calculates the monthly overage.
The overage calculations for the exports metric takes into account export clustering. See [Export clustering](#section-idm4561994500652833230356936418) to learn how it works.
The formula for overage calculation is:
`Overage = [the total number of clustered exports within a month] - [your service entitlement]`
The platform doesn’t count the sandbox project’s exports. See [Use your sandbox project for testing purposes](/docs/help-center/best-practices/use-your-sandbox-project-for-testing-purposes).
For example, if the exports entitlement is `60`, the overage calculation looks as follows:
The overage for January 2021 is 40, calculated as `100 added exports - 60 exports from the entitlement`. There are no overages in February 2021, as the customer added only 50 exports.
Export clustering [#export-clustering]
The Productsup platform uses export clustering to calculate overages for exports. Productsup has three (3) types of exports:
* Standard export: highlighted in *green* in the following example tables.
* Main export: highlighted in *yellow* in the following example tables.
* Sub-export: highlighted in *red* in the following example tables.
Standard exports [#standard-exports]
A standard export is the default export that doesn't have any classifications or sub-exports. For example, *Google Merchant Center*.
To count standard exports on the site level, use the following formula:
`[The same standard export added N times] = N`
For example:
The platform counts the standard export A every time you add it, which makes up three (3) exports.
Main exports [#main-exports]
The main export is a standard export that can have one or more sub-exports associated with it. For example, *Upljft - Basic catalog* is the main export for sub-exports *Upljft - Country feed* and *Upljft - Language feed*. This system helps to avoid overages by clustering multiple similar sub-exports that send data to the same channel but for different countries, languages, etc.
To count main exports on the site level, use the following formulas:
* `[The same main export added N times] = 1`For example:
The platform counts the standard export A every time you add it, which makes up two (2) exports, while it counts the main export B as one (1) export although added twice. In total: three (3) exports.
* `[N different main exports added] = N`For example:
The platform counts the standard export A every time you add it, which makes up two (2) exports, while it counts the main export B as one (1) export although added twice. The platform counts main export C added once as one (1) export. In total: four (4) exports.
Sub-exports [#sub-exports]
A sub-export is an export that belongs to the main export and helps cluster multiple similar exports that send data to the same channel but for different countries, languages, etc. However, there might be cases where a sub-export doesn’t belong to the main export because there is no need of the main export for certain setups. In this case, the platform creates a non-global placeholder as the main export and associates sub-exports with it. For example, FabDis exports, such as *Fabdis 3.0 - C01\_Extension*, are sub-exports that belong to the non-global placeholder main export *FabDis 3.0 - Master Channel Shell*.
To count sub-exports on the site level, use the following formulas:
* `[The same sub-export added N times] = 1`For example:
The platform counts the standard export A and the main export B as two (2) exports, while it counts the sub-export C belonging to the main export D as one (1) export although it is added twice. In total: three (3) exports.
* `[N different sub-exports belonging to the same main export] = 1`For example:
The platform counts the standard export A and main export B as two (2) exports, and it counts all sub-exports belonging to the same main export D as one (1) export, although they are added three times (twice for C and once for F). In total: three (3) exports.
* `[Sub-exports from N different main exports] = N`For example:
The platform makes the following calculations:
1. Counts every time you add each standard export A and H per site, which makes five (5) exports.
2. Counts the main exports B and E only once for each export type per site, regardless of how many times you added them. This makes four (4) exports.
3. Counts two (2) sub-exports C belonging to the main export D, and one (1) sub-export F belonging to the main export G, only once for each main export per site. This makes three (3) exports.
4. In total: 12 exports.
Users [#users]
The platform makes a daily snapshot of the number of users in each organization or edition and calculates the monthly overage.
The formula for overage calculation is:
`Overage = [the highest number of users daily within a month] - [your service entitlement]`
For example, if the users entitlement is `10`, the overage calculation looks as follows:
The overage for January 2021 is `10-10=0`. For February and March 2021, it is `15-10=5`.
Sites [#sites]
The platform makes a daily snapshot of the number of sites or catalogs in every Seller/Vendor Onboarding Module in each organization and calculates monthly overage.
The formula for overage calculation is:
`Overage = [the highest number of sites within a month] - [your service entitlement]`
For example, if the sites entitlement is 10, the overage calculation looks as follows:
The overage for January 2021 is `30-10=20`. For February and March 2021, it is `10-10=0` and `5-10=-5,` and both result in zero (0) overages.
Syndication frequency overages [#syndication-frequency-overages]
The platform makes a daily snapshot of the number of syndications per export in each organization and calculates the monthly overage. Syndication is the sum of exports runs per site per day.
The platform doesn't count manual site runs triggered when you select the **Export** or **Run** buttons. However, if the manual site run triggers another site run, the triggered site run counts as syndication and increases the total syndication frequency count by one (1). To prevent overages in this case, check the triggering settings of your sites in **Scheduling**. See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling) for more information.
Suppose the organization has three (3) active exports: A and B in site 1, and C in site 2. The syndication frequency entitlement per export is 1.
The following syndication frequency happened during January 2021:
* 01.01.2021: Three (3) syndications for export A, one (1) for export B, and one (1) for export C.
* 02.01.2021: Two (2) syndications for export A, one (1) for export B, and two (2) for export C.
* 03.01.2021: One (1) syndications for each export.
The platform doesn’t count the number of syndications but only the fact of exceeding the entitlement per export per day, and sums up these daily cases for a month.
In this example, the number of daily syndications with overages on 01.01.2021 is only one (1) because only export A exceeds the entitlement. On 02.01.2021, it is two (2) as two (2) exports exceed the entitlement. And on 03.01.2021, there were no overages. See the following table:
January overages equal the sum of one (1) exceeding syndication case on 01.01.2021 and two (2) cases on 02.01.2021, which makes three (3) in total for January. See the following table:
Syndication frequency overages details [#syndication-frequency-overages-details]
You can view details of syndication frequency overages per day:
Select a necessary month bar on the *Syndication frequency overages* graph.
Select a necessary day bar on the *Syndication frequency overages* graph.
The *Syndication Frequency Overages Details* table shows all sites that lead to overages. You can check the following metrics for each site in your organization for a selected day:
* **Overage**
* **Exports**
* **Entitlement**
* **Syndications**
You can take the following actions:
. Select another day.
Open the day picker dropdown. The red dots in the top-right corner of a day indicate the days with overages.
Select a necessary day.
. View the list of exports for each site and deactivate unnecessary exports to reduce overages:
Select a number next to the necessary site in the *Exports* column to go to the *Overview* tab of the Exports page of the site.
Check the active exports and deactivate unimportant exports.
. View the scheduling of each site:
Hover over a necessary site line and select **View Scheduling** to get to the *Site Scheduling* tab in Scheduling.
Adjust your schedule to match your entitlement. See [Schedule your site runs in Site Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling#section-idm4498060092667233567717425562).
Download the usage reports [#download-the-usage-reports]
You can download the detailed usage reports in CSV format. The reports contain information for one (1) selected month with daily data. You get a *.zip* folder named `usage-report-YYYY-MM` that consists of the following CSV files:
* Excluded sites with names
* Exports with names
* Max items with names
* Sites with names
* Syndication frequency with names
* Users with names
You can download the reports only for the months starting from November 2022.
To download the reports, do the following:
Go to the *Usage* tab.
Select the download icon
.
Select the year and month for the report.
Select **Download**.
Format the downloaded usage report [#format-the-downloaded-usage-report]
If the CSV files show all data in a single cell instead of separate rows and columns, you may need to set a delimiter in the Table settings of your tool:
For *Numbers* on macOS, do as follows:
Select the **Table** button.
Select the **Adjust Import Settings…** button.
Select a comma (**,**) in **Separate Value Using**.
Select **Update Table**.
For *Microsoft Excel*, do as follows:
Go to the **Data** tab.
In **Get & Transform Data**, select **From Text/CSV**.
In **Import Data**, find and select your CSV file.
In **Text Import Wizard**, select **Delimited** and select **Next**.
Choose a comma (**,**) or a semicolon (**;**) as a delimiter and select **Next**.
Check if the preview shows all the necessary columns highlighted and select **Next**.
Choose the appropriate data format for each column, such as *General*, *Text*, or *Date*, and select **Finish**.
The Productsup Help Center disclaims all responsibility and accountability for the accuracy and relevance of the processes, features, UI elements, and other information mentioned in these instructions about third-party tools. The instructions aim to help you perform activities outside the Productsup platform.
# Set up user profile time zone
import { Callout } from "fumadocs-ui/components/callout";
Your import and export times use the time zone that you set in your user profile.
Any time zone you set only affects your Productsup profile. This means you can select one time zone and see all site run times in this time zone, whilst your colleague with another time zone will see different run times for the same site.
A new user sees the default European time zone set for Berlin (GMT+1).
Change the time zone for your user profile [#change-the-time-zone-for-your-user-profile]
To choose a time zone for your user profile, select the profile icon in the top-right corner of the page from the organization, project, or site level:
You can only see the *Workspaces* link leading to the [Retail platform](https://retail.productsup.com/dashboard/insights) if you have a Retail platform account.
*Billing* is only available to admin users. See [Usage Data Dashboard and overage calculations](/docs/help-center/get-started/user-management/usage-data-dashboard-and-overage-calculations).
Alternatively, go directly to [user profile settings](https://platform.productsup.com/profile).
In your profile settings, you can use the **Timezone** drop-down menu to choose the needed time zone.
Schedule a site for a specific time zone [#schedule-a-site-for-a-specific-time-zone]
The default time zone for Scheduling is the time zone you have set in your user profile.
But you can also select a different time zone in Scheduling.
See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling#section-idm4615619487793633569328756071) for more details about scheduling.
Reporting is always in UTC [#reporting-is-always-in-utc]
If you compare the reporting data with another tracking system, such as Amazon or Google Analytics, you need to use UTC. Otherwise, you are not comparing the same time ranges.
The time zone for Reporting is always UTC. You can't change this.
See \[component:17350].
# User types and access rights
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
There are two user types in Productsup:
. Admin
. User
Users may have Read-Write or Read-Only access rights depending on the project or site they get access to.
Admins [#admins]
Admins have the right to perform all actions within an organization. This includes:
* Accessing all projects and sites
* Creating, changing, and deleting all projects and sites
* Inviting and deleting users
* Providing users with access to sites or projects
* Specifying Read-Write or Read-Only access rights for users in each site or project
* Changing the rights of other administrators in the organization or demoting administrators to users.
Follow these steps to add new users if you are an administrator:
Go to **User Management** from your organization's main menu.
Select **INVITE USERS** in the top right-hand corner of the *User Management* page.
Add the email address(es) of those you wish to invite.
1. You can add one email address per line to invite multiple users at once.
Select if your user should have **Admin** or **User** access.
1. After making a selection, you can give them access to the appropriate sites or projects.
2. When adding sites or projects, you should define whether access should be Read-Write or Read-Only.
Select **Save**.
To learn how to delete users or change user access rights, see [Set up User Management](/docs/help-center/get-started/user-management/set-up-user-management).
Read-Write users [#read-write-users]
A *Read-Write user* has access to the projects or sites that an administrator has made available to them only. Such users have the right to change those projects or sites as needed:
* Edit site data
* View and use all features on the site level
* Create new sites
Read-Write users don't have the right to:
* Invite new users
* See the list of all users in an organization
* Assign additional access rights to themselves
The administrator grants the required access if a user needs access to additional sites or projects.
At the site level, a Read-Write user has access to these features:
* **Dashboard**
* **Data Map**
* **Authentication**
* **Data Sources**
* **Data Services**
* **Exports**
* **Designer**
* **Scheduling**
* **Dataflow**
* **Data View**
* **Lists**
* **ROI Strategy**
* **Reporting**
* **Error Log**
* **Monitor**
* **Activity**
* **Tracking**
* **Settings**
At the project level, Read-Write users have access to:
* **Overview**
* **Authentication**
* **Reporting**
* **Reporting**
* **Settings**
At the organization level, Read-Write users can access only **Overview** and **Authentication**.
Read-Only users [#read-only-users]
A *Read-Only user* has the right to view only the sites or projects that an administrator has made available to them and can't edit anything in the platform.
The administrator grants the required access if a user needs access to additional sites or projects.
Read-Only users have access to a restricted list of Productsup features. At the site level, Read-Only users can access these features:
* **Dashboard**
* **Data Map**
* **Data Services**
* **Exports**
* **Data View**
* **Reporting**
At the project level, Read-Only users have access to:
* **Authentication**
* **Reporting**
At the organization level, Read-Only users can access only **Overview** and **Authentication**.
# Set up single sign-on (SSO)
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
As an admin user, you can configure single sign-on (SSO) to let the users within your organization log in to all related applications with one set of login credentials.
There are three variants of login for users in Productsup:
. *Regular login* lets users log in with their Productsup credentials. This option is available to all users before you configure SSO.
. *Enabled SSO* lets users log in with either Productsup or SSO credentials. This option is available when you have already enabled SSO but haven't finalized the configuration yet. You can stop the SSO configuration process on this step if you want to enable SSO in parallel with regular login. This step also lets you test your SSO before proceeding to enforced SSO.
. *Enforced SSO* lets users only log in using SSO credentials. This option is available as soon as you finalized the SSO configuration process and enforced single sign-on.
Once you set up enforced SSO, you can't remove it and roll back to the previous step. Contact [support@productsup.com](mailto:support@productsup.com) if you need to remove the enforced SSO settings.
To log in with enforced SSO, users have two options:
1. Go to `subdomain.productsup.com` created for your organization after enabling SSO. The link redirects you to the Productsup login page with the SSO login button. Select the button to land on the Identity Provider (IdP) login page where you must provide your IdP credentials, such as Google account login and password.
2. Go to `platform.productsup.com` and enter the email associated with the Productsup account. If their account has enforced SSO, the platform redirects you to the Productsup login page with the SSO login button as described in [Option a](#N1717772494218).
Prerequisites [#prerequisites]
To set up SSO, you need:
. An account with an Identity Provider (IdP), such as Google, Microsoft, AWS, etc.
. The admin access rights to your IdP account interface to set up SSO for users in your organization.
. The Identity Provider (IdP) metadata file. See [Prepare the IdP metadata file](#section-idm4519154337857632442011241752).
. The admin access rights in Productsup.
Prepare the IdP metadata file [#prepare-the-idp-metadata-file]
Identity Provider (IdP) is a service that stores and verifies user identity.
To use the SSO feature in Productsup, you must upload your IdP metadata file to the platform. The Productsup platform then creates metadata information for you to share with your IdP. When the configuration is ready, Productsup, as an SSO provider, checks user identity with the IdP when users log in.
For example, to learn how to get the IdP file from Microsoft Entra ID, see [Configure Microsoft Entra SSO](https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/samlssoconfluence-tutorial#configure-azure-ad-sso).
The IdP metadata XML file that you receive from your IdP should contain the following:
* IdP or Entity ID.
* Certificate.
* SSO URL.
* Redirect URL.
The service provider metadata XML file contains:
* Entity ID
* Redirect URL
* Logout URL
* SSO Assertion Consumer Service URL
Set up SSO [#set-up-sso]
To set up SSO in Productsup for your organization:
Select the cogwheel icon
at the bottom of your organization's main menu.
The **Organization settings** page opens in a new tab.
Select the **Single Sign-On (SSO)** tab on the left-hand side.
Take the following steps:
1. [Configure single sign-on](#section-idm4631883022056034293075463896).
2. [Enable single sign-on](#section-idm4519154055641632442014087608).
3. [Test the setup](#section-idm4559435165608034293217215196).
4. [Enforce single sign-on](#section-idm4519153987779232442025574732) (optional).
Configure single sign-on [#configure-single-sign-on]
In this step, you need to provide you organization subdomain information:
In the **Configure single sign-on** section, select **Configure**.
Enter your organization's subdomain name, for example, `yourcompany.productsup.com`, and select **Continue**.
Copy the **Entity ID** and **Sign on URL and Reply URL (ACS URL)** using the **Copy** buttons and paste them into your IdP's admin console. Select **Continue**.
Drag and drop your IdP's metadata XML file or select **BROWSE** to add the file from your computer. Select **Finish**.
The platform fills out the **Entity ID/Issuer** and **SSO URL** fields automatically, but your IdP's XML file must contain the Productsup *Entity ID* and *SSO URL*.
You have now configured SSO. Continue with [Enable single sign-on](#section-idm4519154055641632442014087608).
Enable single sign-on [#enable-single-sign-on]
In this step, you can enable SSO and test it to ensure everything works correctly and all users in your organization can access the platform via SSO.
In the *Enable single sing-on* section, select **Enable**.
A pop-up window appears with the following message:\*By enabling SSO, you can start testing for your organization. Testing SSO allows users in your organization to confirm if they can log in via Single Sign-on without issue.\**Note: Once you enable testing, we will use Just-In-Time (JIT) provisioning if a user attempts to log in to your Productsup organization via SSO using an email address not associated with a Productsup user. This automates user account creation with basic permissions.*
*Just-In-Time (JIT)* is an authentication method that automates user account creation using the information from the IdP.Basic permissions are access rights given to the users who logged in with SSO. Newly-created SSO users don't have access to projects or sites until the admin provides it to them in the organization's User Management.
Select **Enable** in the pop-up to turn on SSO.
You have enabled SSO. Take the following steps to test it.
Test the setup [#test-the-setup]
Select **Copy URL** in the bottom of the *Test the setup* section.
Log in using SSO.
Before testing, log out of the account, use the incognito mode or another browser.
If you don't want to enforce SSO for your users, you can stop here and share the copied subdomain URL with your users to let them log in via the URL. Or they can still log in using their Productsup credentials.
Enforce single sign-on [#enforce-single-sign-on]
Enforcing SSO enables your users to log in only via SSO, not with the Productsup credentials. Ensure the user accounts are compatible with your SSO Identity Provider. For example, their registered platform emails must match the SSO IdP, such as an Outlook email address matches the Outlook IdP.
If you invite users to an additional organization that isn't SSO enforced, they may still log in via an email and a password.
Once you enforce SSO, you can't remove the enforced SSO configuration. Contact [support@productsup.com](mailto:support@productsup.com) if you need to remove the enforced SSO settings.
Now you can only enforce SSO for the emails with specific domain names:
In **Domain name**, enter one or multiple domain names separating them with `##`.
Select **I have tested the SSO, and I'm ready to enforce it now**. This checkbox activates the **Enforce** button.
Select **Enforce** in the top right corner. In the pop-up, enter the same organization's subdomain name that you entered in the step [Test the setup](#section-idm4559435165608034293217215196). Select **Enforce** to confirm the SSO enforcement.
You have now turned on SSO for users in your organization.
# Set up user profile
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Personalize your Productsup user profile settings, such as your name, email, password, job title, country, timezone, and language. In profile settings, you can also enable two-factor authentication (2FA).
Access your user profile settings [#access-your-user-profile-settings]
To access user profile settings, select the profile icon in the top-right corner of the page from the organization, project, or site level. Alternatively, go directly to [user profile settings](https://platform.productsup.com/profile).
You can only see the *Workspaces* link leading to the [Retail platform](https://retail.productsup.com/dashboard/insights) if you have a Retail platform account.
*Billing* is only available to admin users. See [Usage Data Dashboard and overage calculations](/docs/help-center/get-started/user-management/usage-data-dashboard-and-overage-calculations).
Change your profile name and email [#change-your-profile-name-and-email]
You can change your profile name and email in profile settings. However, if your email is the main email registered for your organization, you can't change it in your profile settings. Contact [support@productsup.com](mailto:support@productsup.com) to change the main email registered in Productsup for your organization.
To change your name and email:
Go to *Profile settings* from your user profile icon in the top-right corner of the page.
Enter your name and email in **Full Name** and **Your email**.
Select **Save**.
If you have updated your email, go to your inbox to confirm the new email address.
Change your password [#change-your-password]
You can change your password in the user profile settings.
Go to *Profile settings* from your user profile icon in the top-right corner of the page.
Select **Change** near the **Current password** field to open the *CHANGE PASSWORD* window.
Enter your existing password in **Current password**.
Add a new password that meets platform requirements in **New password** and repeat it in **Confirm new password**.
Your password must contain at least 12 characters, 1 number, both lower- and uppercase letters, and 1 special character, such as `#`, `?`, `!` and so on.
Select **Save**.
Enter job title, location, and timezone [#enter-job-title-location-and-timezone]
Enter your job title, location, and timezone to better identify your professional role and place within your organization.
Go to *Profile settings* from your user profile icon in the top-right corner of the page and enter your position in **Job title**.
Select your location in **Country** and choose a suitable option in **Timezone**.
Select **Save**.
See [Set up user profile time zone](/docs/help-center/get-started/user-management/set-up-user-profile-time-zone) for more information.
Change the platform language [#change-the-platform-language]
You can use the Productsup platform in English, German, or French. To choose the needed language option, do the following:
Go to *Profile settings* from your user profile icon in the top-right corner of the page.
In **Language**, select the desired language.
Select **Save**.
Use two-factor authentication (2FA) [#use-two-factor-authentication-2fa]
You can set two-factor authentication (2FA) as a login standard for your organization.
Go to *Profile settings* from your user profile icon in the top-right corner of the page.
Use the toggle **Enable two factor authentication** to start the setup and select **Save**.
When the platform saves your new settings, you see the following pop-up window. Select **Continue** to proceed.
On the login page, enter your email and password to see 2FA instructions.Follow the instructions on the page *Mobile Authenticator Setup* to install an authenticator app and add a device.
You can use the following apps:
* Google Authenticator
* FreeOTP
* Microsoft Authenticator
Enter a code from your authenticator app in **One-time code**. You will need to enter authentication codes in this field every time when logging in.
When logging in, use the last added code in your authenticator app called `Productsup: {your-address@email.com}`. If you have used 2FA with Productsup previously, you may have multiple codes with this name in the app. All previously added codes are no longer relevant.
If desired, provide a name for your authentication device in **Device Name**.
Select **Submit**.
Changed phones? [#changed-phones]
If you change your mobile device, you can turn two-factor authentication off to disconnect the old device and save the settings. Then, reactivate 2FA and connect your new device by following the previously mentioned steps.
Lost your phone? [#lost-your-phone]
If you don't have access to your 2FA device anymore, contact [support@productsup.com](mailto:support@productsup.com).
# Remove duplicate products with the Unique Rows Filter service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
If you need to remove duplicate rows from the Productsup Platform, you can use the unique rows filter service. You can define which attribute to check for uniqueness.
You may also consider skipping unique values directly in an export feed.
Ensure you have set a [unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) to use this service.
Add the Unique Rows Filter service [#add-the-unique-rows-filter-service]
To add the Unique Rows Filter service:
Go to **Data Services** from your site's main menu and select **ADD SERVICE**. Then choose *Unique Rows Filter*, and select **Add**.
(Optional) In **Name**, give the new service a custom name.
(Optional) Define a custom column prefix in **Column prefix**. The platform uses a column prefix when a service generates multiple columns from one service and needs a common prefix for all new columns.
The *Unique Rows Filter* service is only available on the import level for the **Service Data Level** function.
Select **Add**.
In **Uniqueness Column**, select the column you wish to filter for uniqueness in the drop-down list.
In **Occurrence**, choose **first** or **last** value occurrences from the selected *Uniqueness Column* you want to keep in your import feed. The platform removes other occurrences during the import process.
Select **Save**.
For example, you can use the Unique Rows Filter service for the following scenario. This scenario imports the first occurrence of every ID and removes all duplicates.
| id | title | stock |
| --- | ---------------------------- | ----- |
| `1` | `Amazing Shoes` | `4` |
| `1` | `Amazing Shoes in blue` | `4` |
| `2` | `Great Jeans` | `1` |
| `3` | `Wonderful T-Shirt` | `5` |
| `3` | `Wonderful T-Shirt in green` | `4` |
In the previous configuration, the uniqueness column is `title`, and the selected occurrence is *first*. Here are the results:
| id | title | stock |
| --- | ------------------- | ----- |
| `1` | `Amazing Shoes` | `4` |
| `2` | `Great Jeans` | `1` |
| `3` | `Wonderful T-Shirt` | `5` |
Edit an existing Unique Rows Filter service [#edit-an-existing-unique-rows-filter-service]
To edit settings for your Unique Rows Filter service:
Go to **Data Services** from your site's main menu.
Choose the *Unique Rows Filter* data service and select the settings cogwheel icon (**⚙**).
Delete an existing Unique Rows Filter service [#delete-an-existing-unique-rows-filter-service]
To delete your Unique Rows Filter service:
Go to **Data Services** from your site's main menu.
Choose the *Unique Rows Filter* data service and select the settings cogwheel icon (**⚙**).
Scroll to the bottom of the page and select **Remove this service**.
# Split one column into multiple columns with the Explode Columns service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
If your data feed contains a column with a list of values, you can split the column into multiple columns using the Explode Columns data service.
For example, you have the following data at the import stage and wish to split the `color` column:
| id | color |
| -- | ----------------------- |
| 1 | `red`, `green`, `blue` |
| 2 | `gray`, `black`, `blue` |
After applying the Explode Columns data service, your output may look similar to the following:
| id | color\_1 | color\_2 | color\_3 |
| -- | -------- | -------- | -------- |
| 1 | `red` | `green` | `blue` |
| 2 | `gray` | `black` | `blue` |
The Explode Columns data service is available for the import and intermediate stages.
Prerequisites [#prerequisites]
To set up the Explode Columns data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
. A column in your feed that contains a list of values separated by a delimiter.
Add the Explode Columns data service [#add-the-explode-columns-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Explode Columns*, select **Add**, and give it a desired name and column prefix.By default, `___exploded` is the column prefix.
Choose the stage containing the columns you want to split in **Service Data Level** and select **Add**.
Select the column you want to split from the drop-down list **Column that will be split into multiple columns**.
If you choose **Import** in **Service Data Level** in [see the relevant section](#N1676387000216), the drop-down list **Columns that will be split into multiple columns** displays the columns of your import stage. If you choose **Intermediate**, the drop-down list contains your intermediate-stage columns.
In **Delimiter**, select the delimiter that separates the values in the column you want to split.
Select **Save**.
Repeat steps starting with [see the relevant section](#N1676387043550) if you want to split more columns with the Explode Columns data service. The platform shows all exploded columns in a table at the bottom of the data service setup page.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
Edit the Explode Columns service [#edit-the-explode-columns-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Explode Columns service [#delete-the-explode-columns-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Restructure your import data with the Pivot Layout data service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
If your data feed has multiple rows representing attributes for the same product, you may need to reorganize your product attributes into columns to do attribute mapping in Dataflow properly.
The Pivot Layout data service is available for the import stage only.
The Pivot Layout data service scans the column containing your attribute names, creates a new column for each attribute, and sets the value in that column as stated in your value column. As a result, each product in your feed appears only once as a single row:
In the example above, only one column identifies each product, *id*. The Pivot Layout data service can also work with multiple columns that uniquely identify products.
The benefits of using the Pivot Layout data service are as follows:
* The new attribute columns are instantly available in Dataflow, and you can map them to your intermediate and export stages.
* You don't need to transform your import files manually to represent data in the format required by your export channels.
* You can apply lists on the data service setup page to let the platform change the attribute names and values in bulk according to a necessary taxonomy.
Prerequisites [#prerequisites]
To use the Pivot Layout data service, you need to:
. Import your data into a Productsup site.
. Make sure your imported data has product-identifying columns, a column containing attribute names, and a column containing values corresponding to those attributes.
Add the Pivot Layout data service [#add-the-pivot-layout-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Pivot Layout*, select **Add**, and give it a desired name.
Choose *Import* in **Service Data Level** and select **Add**.
In **Rows**, choose the columns that uniquely identify your products. You can select multiple columns. The order of the selected columns influences the order of rows in your feed.
In **Attribute name column**, choose the column that contains the names of your product attributes. The platform scans this column to create a new column for each attribute name.
Optionally, use the drop-down menu **Attribute name mapping list (optional)** to choose a list created in *Lists* if you need to change your current attribute names in bulk.See [Lists](/docs/help-center/map-and-optimize-your-data/lists) to create and set up a taxonomy mapping or replacement list.
In **Attribute values column**, choose the column that contains the values of your product attributes. The platform scans this column to fill the cells of the new attribute columns with their corresponding values for each unique product.
Optionally, use the drop-down menu **Attribute values mapping list (optional)** to choose a list created in *Lists* if you need to change your current attribute values in bulk.See [Lists](/docs/help-center/map-and-optimize-your-data/lists) to create and set up a taxonomy mapping or replacement list.
Select **Save**.
For the platform to process a new data service, select **Import** or **Run** in the top-right corner of your site's view\.As soon as the site finishes processing your data, you can see the new structure of your data at the import stage in Data View and Dataflow.
If you can't see the columns the Pivot Layout data service added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose *Import* in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the hidden attributes in the list and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
If your data feed has more columns than you defined in the data service setup fields **Rows**, **Attribute name column**, and **Attribute values column**, the platform removes these columns from your restructured feed. To see warnings about column deletion, you can open the Run log panel by selecting its icon in the top-right corner of your view while the site is running.
Edit the Pivot Layout data service [#edit-the-pivot-layout-data-service]
After saving the setup of the Pivot Layout data service, you can only edit the lists used for replacing your attribute names and values.
If your newly selected list has a different set of attributes, the platform adds new columns for new attributes and deletes the columns of the attributes that aren't on the list anymore. Any changes in the lists affect the columns after each site run.
The fields **Rows**, **Attribute name column**, and **Attribute values column** are non-editable. If you need to edit these fields in a data service you already saved, you should delete the current data service, run the platform to reset the imported data, and create a new data service. See [Delete the Pivot Layout data service](#section-idm243319908032630).
To edit the Pivot Layout data service:
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service and choose the needed lists.
Select **Save**.
For the platform to process an edited data service, select **Import** or **Run** in the top-right corner of your site's view.
Delete the Pivot Layout data service [#delete-the-pivot-layout-data-service]
Go to **Data Services** from your site's main menu.
To stop a data service from restructuring your feed without deleting the data service itself, you can choose the pause icon next to the desired data service.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Split parent items to create product variants with the Split Variants data service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
If a product attribute in your feed contains all product variants, such as sizes or colors, in one (1) row, you can split these product variants into separate rows using the Split Variants data service.
The Split Variants data service is only available for the import stage.
For example, the following feed contains the *size* attribute that stores all sizes of each product in the same row, separated by a comma:
| parent\_id | size | title |
| ---------- | ------ | ---------- |
| 1 | XS,S,L | t-shirt |
| 2 | XS,M | polo shirt |
After applying the Split Variants data source with the **Mutliply Variants** mode, each size takes a separate row, and the feed looks as follows:
| parent\_id | size | title |
| ---------- | ---- | ---------- |
| 1 | XS | t-shirt |
| 1 | S | t-shirt |
| 1 | L | t-shirt |
| 2 | XS | polo shirt |
| 2 | M | polo shirt |
The Split Variants data service creates more rows in your feed, increasing the number of imported and maintained products.
This service is the opposite of the Merge Variants data service. See [Combine product variants into one parent item with the Merge Variants data service](/docs/help-center/map-and-optimize-your-data/data-services/combine-product-variants-into-one-parent-item-with-the-merge).
Prerequisites [#prerequisites]
To set up the Split Variants data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier).
. Products in your feed that contain variants in one of their attributes.
Add the Split Variants data service [#add-the-split-variants-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Split Variants* and select **Add**.
Give the service a desired name and column prefix, and select **Add**.
By default, `___service_split` is the column prefix.
Select **Add Split Column**.
Select the column that you want to split in **Source Columns**. The source column is typically the *parent\_id* or the *item\_group\_id* attribute.
In **Delimiter**, enter the character that currently separates the values in the source column.
In **Split mode**, select from one of the options. See [Set up split modes](#section-idm4589942687297633671130114533) for more information.
Select **Save**.
To run the data service, select **Import** in the top-right corner of your site's view.
Set up split modes [#set-up-split-modes]
You can select from three (3) different modes to split your product variants:
* **Multiply Variants** mode creates separate rows for each product variant.
* **Aggregate Variants** mode creates separate rows for each product variant combining values from different columns according to their position in a row.
* **Static Variants** appends and/or prepends static strings to the attribute values creating a new row for each added variant.
Multiply Variants split mode [#multiply-variants-split-mode]
The Multiply Variants split mode lets you select one (1) or more source attributes to split them into new rows with all possible combinations of product variants.
For example, you have the following feed:
| id | size | color |
| --- | ----- | -------- |
| 123 | S,M,L | blue,red |
To split product variants of products by sizes and colors into separate rows, use the following setup:
. Select **Add Split Column**.
. Select `size` and `color` in **Source Columns** and enter a comma (`,`) in **Delimiter**.
Using Multiple Variants, you must add one (1) or several columns in **Source Columns**.
. Select **Multiply Variants** in **Split mode**.
. Select **Import** in the top-right corner of your site's view to let the platform split the product variants into separate rows as follows:
| id | size | color |
| --- | ---- | ----- |
| 123 | S | red |
| 123 | M | red |
| 123 | L | red |
| 123 | S | blue |
| 123 | M | blue |
| 123 | L | blue |
Aggregate Variants split mode [#aggregate-variants-split-mode]
The Aggregate Variants split mode lets you split two (2) or more columns into separate product variant rows combining values by their position in the source columns.
For example, you have the following feed:
| id | country | food |
| --- | ----------------------------- | ---------------------- |
| 123 | France,Germany,United Kingdom | cheese,sausage,pudding |
To split variants of products into separate rows where each row contains a country and its corresponding food, use the following setup:
. Select **Add Split Column**.
. Select `country` and `food` in **Source Columns** and enter a comma (`,`) in **Delimiter**.
Using Aggregate Variants, you must add at least two (2) columns in **Source Columns**.
. Select **Aggregate Variants** in **Split mode**.
. Select **Import** in the top-right corner of your site's view to let the platform split the product variants into separate rows as follows:
| id | size | color |
| --- | -------------- | ------- |
| 123 | France | cheese |
| 123 | Germany | sausage |
| 123 | United Kingdom | pudding |
Static Variants split mode [#static-variants-split-mode]
The Static Variants split mode lets you append and/or prepend static variants to the attribute values creating a new row for each variant.
For example, you have the following feed:
| id | title |
| --- | ---------------------- |
| 123 | My product is the best |
To append the static variants `Alpha`, `Bravo`, and `Charlie` to the *title* attribute, use the following setup:
. Select **Add Split Column**.
. Select `title` in **Source Columns**.
The Static Variants split mode is only available if you select one (1) column in **Source Columns**.
. Select **Static Variants** in **Split mode**.
. Enter variants separated by a comma in **Comma separated list of variants**.
. In **Variant Format**, enter how you want the data service to add your variants to the attribute. By default, the value is `{{ value }} {{ variant }}`, which means that your variant appears after the title value.
. Select **Save**.
. Select **Import** in the top-right corner of your site's view to let the platform split the product variants into separate rows as follows:
| id | title |
| --- | ------------------------------ |
| 123 | My product is the best Alpha |
| 123 | My product is the best Bravo |
| 123 | My product is the best Charlie |
Edit the Split Variants data service [#edit-the-split-variants-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Split Variants data service [#delete-the-split-variants-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Data Services
import { Callout } from "fumadocs-ui/components/callout";
Introduction [#introduction]
A Productsup data service is a tool that lets you enhance and restructure your product feed using the Data Services feature. This section covers the data services that let you restructure and optimize your product data. See [Enhance your import data through Data Services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services) for more information on the data services that help to enhance your product feed with additional data.
Some data services are available at an additional cost in all platform editions. If you are unsure whether the desired data service is free, reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com).
All Productsup data services fall into one of the following categories:
* *ID Generators* - Enhance your products with columns containing unique product or category IDs.
* *Crawlers* - Let you crawl your product or image links to extract additional product data or image properties and add them to your site.
* *Merge/Split Feed* - Let you manage product variants by splitting a product into multiple product variants or merging multiple product variants into one product.
* *Implode/Explode/Group Columns* - Let you manage your columns by merging and splitting them. They also help you manipulate your column values to enhance the feed with more data.
* *Exclude Rows from Import* - Remove duplicate products from your feed based on product IDs.
* *Travel Services* - Enrich your feed with geographical data and information related to weather and travel.
* *Pricing* - Let you add price comparison data to your feed.
* *AI Services* - Use machine learning to transform or enrich your data by, for example, removing image backgrounds or detecting image colors.
Prerequisites [#prerequisites]
All data services require you to:
* Add a unique item identifier in your site. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
The rest of the prerequisites are individual to each data service. You can see the relevant prerequisites in a document dedicated to the data service of your interest.
See [Arrange the processing order of your data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services#section-idm4653092417062433346529892231) to set up the order according to which Productsup should execute your data services.
# Group data across multiple rows with the Group Attributes data service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The *Group Attributes* data service lets you create a new attribute in your site to group values from a chosen attribute for all products that have the same value in a grouping attribute. For example, for all products in your site that have the same value in the grouping attribute **id**, you can create a new attribute **\_\_\_grouped** and populate it in the following ways:
* Add all values of a chosen attribute. See [Concat method](#N1684769874080).
* Count values of a chosen attribute and output the result. See [Count method](#N1684769892570).
* Identify and save the highest or lowest value in a chosen attribute. See [Max and Min methods](#N1684769951508).
* Produce a sum of all values of a chosen attribute. See [Sum method](#N1684769929250).
The service works based on the SQL function `GROUP BY`. See [SQL Tutorial](http://www.sql-tutorial.net/sql-group-by.asp) for more information.
The *Group Attributes* data service is available for the import and intermediate stages.
Prerequisites [#prerequisites]
To set up the *Group Attributes* data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
Add the Group Attributes data service [#add-the-group-attributes-data-service]
Go to **Data Services** from your site's main menu and select **Add Service**.
Search for *Group Attributes*, select **Add**, and rename the data service as desired.
Choose the stage containing the attributes you want to group in **Service Data Level** and select **Add**. This takes you to the data service setup:
Select the attribute containing the values you wish to group from the drop-down menu **Attribute containing the values**.
If you choose **Import** in **Service Data Level** in [see the relevant section](#step-idm351683120570619), the drop-down menu **Attribute containing the values** displays the attributes of your import stage. If you choose **Intermediate**, the drop-down menu shows your intermediate-stage attributes.
In the drop-down menu **Import attribute you want to group by**, select the import-stage attribute which should determine your value-grouping range. If multiple products have the same value in this grouping attribute, the data service analyzes the values of these products in the attribute chosen in [see the relevant section](#step-idm353366241141236) and groups the values of these products in a newly-created attribute named in [see the relevant section](#N1739875634135) by performing the action chosen in [see the relevant section](#N1739875407524)To choose several grouping attributes, hold the *CTRL* (or *CMD*) key while selecting.In **Import attribute you want to group by**, you can't choose an attribute that contains only empty values. If you do so and try to save the data service setup, the platform shows an error and prompts you to change your attribute selection:
Enter the desired name of the new attribute in **Result attribute**.The system creates a new attribute to store the grouped data without overwriting your existing attributes. The platform prepends the attribute name specified in this field with the prefix you set in [see the relevant section](#N1683194128497).
Select the grouping method from the **Method** drop-down menu.
For the Concat method only:
In **Delimeter**, select the delimiter that separates the grouped values in the new attribute.
Activate **Concat unique** if you don't want to display duplicate values.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
Output examples of different grouping methods [#output-examples-of-different-grouping-methods]
While setting up the data service, you can select from five different data-grouping methods in the **Method** drop-down menu:
* *Concat*
* *Count*
* *Max*
* *Min*
* *Sum*
Here is a sample feed we can use to show how each grouping method works:
| id | item\_group\_id | stock | size | color | discount\_in\_percent |
| -- | --------------- | ----- | ---- | ----- | --------------------- |
| 1 | 123 | 4 | S | red | 10 |
| 2 | 123 | 2 | S | blue | 15 |
| 3 | 123 | 1 | L | blue | 25 |
| 4 | 456 | 5 | 38 | black | 7 |
| 5 | 456 | 4 | 38 | blue | 15 |
| 6 | 456 | 7 | 38 | green | 5 |
| 7 | 456 | 2 | 40 | green | 10 |
Concat method [#concat-method]
Use the **Concat** method to combine all values from different products in one attribute.
Example:
To concat sizes for products with the same **item\_group\_id**, use the following setup:
* **Attribute containing the values**: `size`
* **Import attribute you want to group by**: `item_group_id`
* **Result attribute**: `concat_sizes`
* **Method**: *Concat*
* **Delimiter**: *,COMMA*
* **Concat unique**: off
Using this setup, the system groups all sizes of the products with the same **item\_group\_id** in a newly created **\_\_\_concat\_sizes** attribute:
| id | item\_group\_id | stock | size | color | discount\_in\_percent | \_\_\_concat\_sizes |
| -- | --------------- | ----- | ---- | ----- | --------------------- | ------------------- |
| 1 | 123 | 4 | S | red | 10 | S,S,L |
| 2 | 123 | 2 | S | blue | 15 | S,S,L |
| 3 | 123 | 1 | L | blue | 25 | S,S,L |
| 4 | 456 | 5 | 38 | black | 7 | 38,38,38,40 |
| 5 | 456 | 4 | 38 | blue | 15 | 38,38,38,40 |
| 6 | 456 | 7 | 38 | green | 5 | 38,38,38,40 |
| 7 | 456 | 2 | 40 | green | 10 | 38,38,38,40 |
The system combines the data without any spaces between characters.
Count method [#count-method]
Use the **Count** method to count the number of product variations.
Example:
To count the number of product variations with the same **item\_group\_id**, use the following setup:
* **Attribute containing the values**: `item_group_id`
* **Import attribute you want to group by**: `item_group_id`
* **Result attribute**: `count_variations`
* **Method**: *Count*
Using this setup, the system counts all product variations with the same **item\_group\_id** and records the result in a newly created **\_\_\_count\_variations** attribute:
| id | item\_group\_id | stock | size | color | discount\_in\_percent | \_\_\_count\_variations |
| -- | --------------- | ----- | ---- | ----- | --------------------- | ----------------------- |
| 1 | 123 | 4 | S | red | 10 | 3 |
| 2 | 123 | 2 | S | blue | 15 | 3 |
| 3 | 123 | 1 | L | blue | 25 | 3 |
| 4 | 456 | 5 | 38 | black | 7 | 4 |
| 5 | 456 | 4 | 38 | blue | 15 | 4 |
| 6 | 456 | 7 | 38 | green | 5 | 4 |
| 7 | 456 | 2 | 40 | green | 10 | 4 |
Max and Min methods [#max-and-min-methods]
Use the **Max** or **Min** methods to find and display the highest or lowest value.
Example:
To return the highest discount among all products with the same **item\_group\_id**, use the following setup:
* **Attribute containing the values**: `discount_in_percent`
* **Import attribute you want to group by**: `item_group_id`
* **Result attribute**: `max_discount`
* **Method**: *Max*
Using this setup, the system compares discounts of all products with the same **item\_group\_id** and records the highest value in a newly created **\_\_\_max\_discount** attribute:
| id | item\_group\_id | stock | size | color | discount\_in\_percent | \_\_\_max\_discount |
| -- | --------------- | ----- | ---- | ----- | --------------------- | ------------------- |
| 1 | 123 | 4 | S | red | 10 | 25 |
| 2 | 123 | 2 | S | blue | 15 | 25 |
| 3 | 123 | 1 | L | blue | 25 | 25 |
| 4 | 456 | 5 | 38 | black | 7 | 15 |
| 5 | 456 | 4 | 38 | blue | 15 | 15 |
| 6 | 456 | 7 | 38 | green | 5 | 15 |
| 7 | 456 | 2 | 40 | green | 10 | 15 |
Sum method [#sum-method]
Use the **Sum** method to return the numerical sum of products matching the selected conditions.
Example:
To sum the stock for products with the same **item\_group\_id** and **color**, use the following setup:
* **Attribute containing the values**: `stock`
* **Import attribute you want to group by**: `item_group_id` and `color`
* **Result attribute**: `stock_sum`
* **Method**: *Sum*
Using this setup, the system sums the values of all products with the same **item\_group\_id** and **color** and records the numbers in a newly created **\_\_\_stock\_sum** attribute:
| id | item\_group\_id | stock | size | color | discount\_in\_percent | \_\_\_stock\_sum |
| -- | --------------- | ----- | ---- | ----- | --------------------- | ---------------- |
| 1 | 123 | 4 | S | red | 10 | 4 |
| 2 | 123 | 2 | S | blue | 15 | 3 |
| 3 | 123 | 1 | L | blue | 25 | 3 |
| 4 | 456 | 5 | 38 | black | 7 | 5 |
| 5 | 456 | 4 | 38 | blue | 15 | 4 |
| 6 | 456 | 7 | 38 | green | 5 | 9 |
| 7 | 456 | 2 | 40 | green | 10 | 9 |
Edit the Group Attributes data service [#edit-the-group-attributes-data-service]
Go to **Data Services** from your site's main menu.
Change the settings of the needed data service:
1. To deactivate a data service, choose the pause icon next to the desired data service.
2. Select the cogwheel icon (**⚙**) next to the desired data service to edit other settings and select **Save**.
Delete the Group Attributes data service [#delete-the-group-attributes-data-service]
Go to **Data Services** from your site's main menu.
To stop a data service from affecting your feed without deleting the data service itself, you can choose the pause icon next to the desired data service.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Merge multiple columns with the Implode Columns service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
If you wish to unite multiple columns with corresponding values into one column, you can merge these columns using the Implode Columns data service.
For example, you can merge the varying color columns in the following data source:
| id | color\_1 | color\_2 | color\_3 |
| --- | -------- | -------- | -------- |
| `1` | `red` | `green` | `blue` |
| `2` | `gray` | `black` | `blue` |
After applying the Implode Columns data service, your data may look similar to the following:
| id | color\_1 | color\_2 | color\_3 | \_\_\_imploded\_all\_colors |
| --- | -------- | -------- | -------- | --------------------------- |
| `1` | `red` | `green` | `blue` | `red,green,blue` |
| `2` | `gray` | `black` | `blue` | `gray,black,blue` |
The Implode Columns data service is available for the import and intermediate stages.
Prerequisites [#prerequisites]
To set up the Implode Columns data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
. A number of relevant columns in your feed that you want to merge.
Add the Implode Columns data service [#add-the-implode-columns-data-service]
Go to **Data Services** from your site's main menu, and select **Add data service**.
Search for *Implode Columns*, select **Add**, and give it a desired name and column prefix.By default, `___imploded` is the column prefix.
Choose the stage containing the columns you want to merge in **Service Data Level** and select **Add**.
Select the columns you want to implode from the **Columns that you want to use as input** drop-down list or write the column names directly into the input text field.If you chose **Import** in [see the relevant section](#step-idm243349476307592), the drop-down list **Columns that you want to use as input** displays the columns of your import stage. If you chose **Intermediate** in that field, the drop-down list contains your intermediate-stage columns.
* Alternatively, you can check the **Use regex** box and enter a valid PHP regex into the input text field. See [Rule box category Use regular expressions](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/rule-box-category-use-regular-expressions) and [Pattern Syntax](https://www.php.net/manual/en/reference.pcre.pattern.syntax.php) for more information.
In the field **Column that will be created and populated with the selected columns above**, enter a name for your merged output column.
The platform uses the column prefix and the name you specify in this step to produce the full name of the new column. For example, if you use the default column prefix `___imploded` and the output column name is `all_colors`, the full name of the new imploded column is `___imploded_all_colors`.
In **Delimiter**, select the delimiter that separates the values of different columns once you merge them.You can choose from a list of popular delimiters or enter a custom delimiter in the input text field that appears after selecting **Custom**.
Select **Save**.
For the platform to process a new data service, select **Import** or **Run** in the top-right corner of your site's view.
If you can't see the columns that the Implode Columns data service added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___imploded` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the Implode Columns data service depends on the column prefix you chose in [see the relevant section](#step-idm243349476184336). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
You can add multiple instances of this data service by repeating these steps. The platform shows all imploded columns and their source columns in a table at the bottom of the data service setup page.
Edit the Implode Columns data service [#edit-the-implode-columns-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Implode Columns data service [#delete-the-implode-columns-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Combine product variants into one parent item with the Merge Variants data service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The *Merge Variants* data service lets you combine all attribute values of all product variants with the same ID into one item. Alternatively, you can use any attribute other than an ID as a basis to merge your product variants.
The *Merge Variants* data service is available for the import stage only.
For example, if you have product variants in your data feed, it may look similar to this:
| **product\_id** | **variant\_id** | **size** | **color** | **discount\_code** |
| --------------- | --------------- | -------- | --------- | ------------------ |
| *1* | *1-1* | *XS* | *green* | |
| *1* | *1-2* | *S* | *green* | *SALE20* |
| *1* | *1-3* | *L* | *blue* | |
| *2* | *2-1* | *XS* | *red* | |
| *2* | *2-2* | *M* | *yellow* | |
You can merge all product variants with the same value in the **product\_id** attribute. This means that, instead of several product variants with the same product ID, you create one item in your feed and combine attribute values for all relevant product variants. After applying the *Merge Variants* data service, your feed can look as follows:
| **product\_id** | **variant\_id** | **size** | **color** | **discount\_code** |
| --------------- | --------------- | -------- | ------------ | ------------------ |
| *1* | `1-1,1-2,1-3` | `XS,S,L` | `green,blue` | `,SALE20,` |
| *2* | `2-1,2-2` | `XS,M` | `red,yellow` | `,` |
This example illustrates removing duplicate values for each merged attribute. You can also keep them in your merged values.
Prerequisites [#prerequisites]
To set up the *Merge Variants* data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
Add the Merge Variants data service [#add-the-merge-variants-data-service]
Go to **Data Services** from your site's main menu and select **Add Service**.
Search for *Merge Variants*, select **Add**, and rename the data service as desired.
Select **Add** to go to the data service setup page:
Select **Add Merge Column** to open a pop-up window.
In the drop-down menu **Source Columns**, select the import-stage attribute that should be the basis for merging your product variants.In **Source Columns**, you can't choose an attribute if 100% of its values are empty. If you do so and try to save the data service setup, the platform shows an error and prompts you to change your attribute selection:
In **Delimeter**, select the delimiter that should separate your combined values in the merged attributes. If you don't select a delimiter, the platform merges values without separating them with any characters.
Select **Add** to close the pop-up window and return to the data service setup page.
If you don't want to display duplicate values in the merged attributes, leave **Concat unique** checked. Uncheck this box to keep duplicates in the merged attributes.
For the platform to process the new data service, select **Import** in the top-right corner of your site's view.
Edit the Merge Variants data service [#edit-the-merge-variants-data-service]
Go to **Data Services** from your site's main menu.
Change the settings of the needed data service:
1. To deactivate a data service, choose the pause icon next to the desired data service.
2. Select the cogwheel icon (**⚙**) next to the desired data service to edit other settings.
Delete the Merge Variants data service [#delete-the-merge-variants-data-service]
Go to **Data Services** from your site's main menu.
To stop a data service from affecting your feed without deleting the data service itself, you can choose the pause icon next to the desired data service.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Information security and data protection
import { Callout } from "fumadocs-ui/components/callout";
At Productsup, customer data confidentiality and the service's reliability are essential. Productsup is committed to a comprehensive company-wide information security program and continues to participate in independent external security validations, such as being certified according to ISO/IEC 27001.
Authentication [#authentication]
With SAML 2.0-based single sign-on (SSO), we allow our customers to access our service through an identity provider (IDP) of their choice. Our platform has strict requirements for password complexity and uses two-factor authentication (2FA) to provide an extra layer of security.
Data Centers [#data-centers]
Our servers are hosted at state-of-the-art data center parks that provide excellent and environmentally friendly infrastructure. These data centers meet strict safety requirements and hold certifications such as ISO/IEC 27001. Our cloud hosting provider is also certified for various security and privacy standards, including ISO 27001, ISO 27017, ISO 27018, SOC1, SOC2, and SOC3.
DDoS Protection [#ddos-protection]
Our hosting provider's automated DDoS protection system recognizes almost all attack patterns in advance, allowing it to block attacks and thwart most of them effectively. It uses the latest hardware appliances and sophisticated perimeter security technologies, providing first-rate protection against large-scale DDoS attacks.
Incident Response [#incident-response]
We have established policies and procedures for responding to potential security incidents. Our dedicated incident response team manages all security incidents. In the event of an incident, affected customers will be informed and quickly updated by our support team while our teams fix the issue. In addition, the operational status of our platform components is always available for our customers under [https://status.productsup.io/](https://status.productsup.io/).
Privacy [#privacy]
Fulfilling our data privacy and security commitments is essential to us. Therefore, we have ensured that our processes, data processing agreements (DPAs), and other protections in place comply with GDPR requirements. Our compliance with GDPR requirements is regularly audited through our external DPO Nils Möllers (Keyed GmbH).
Reliability [#reliability]
To ensure the safety of our customers' data, we perform incremental backups every hour and full backups every day, storing them both on- and off-site. We test our data restoration procedure regularly. If needed, we can smoothly switch to another infrastructure region, as core components are redundantly deployed across two geographically separated hosting locations.
Secure Development [#secure-development]
At Productsup, security is managed throughout every stage of our software development lifecycle (SDLC). This involves the application of development procedures and secure coding principles, consideration of OWASP Top 10 vulnerabilities, and fully automated code reviews with strict quality gates, among others.
Vulnerability Scanning [#vulnerability-scanning]
Productsup uses advanced network and web application vulnerability scanners to identify vulnerabilities and potential security threats. Identified vulnerabilities are assessed by our development and infrastructure operations team and remediated subsequently. In addition, we regularly undergo external security assessments through independent third parties.
Encryption [#encryption]
Our service uses HTTPS with modern TLS (1.2) implementations only and strong ciphers to encrypt all data while in transit. For sensitive data at rest, column-level encryption is applied (AES256), and user credentials are salted and hashed.
Exporting data to third parties
A necessary aspect of feed management is sending product feeds to data to external channels such as Google, Facebook, Amazon, and hundreds more. The method of integration with these channels depends on the use case. Each external channel will receive the data over a destination. For example, this could be an FTP Server or an API connection. The encryption varies, depending on the destination. You are advised to make yourself aware of the type of encryption of these destinations before using them.
Encryption types of the most popular Productsup destinations
Here is a brief list of some of the most popular Productsup destinations and appropriate encryption methods and security information:
| Destination | Encryption method | Security protocol |
| -------------------------- | ------------------------------------------------- | ----------------- |
| Productsup Server | TLS1.2 | HTTPS |
| Productsup Platform API | TLS, SSLv3 | HTTPS |
| Google Merchant Center API | TLS, SSLv3 | HTTPS |
| Facebook Marketing API | TLS, SSLv3 | HTTPS |
| SFTP Server | AES, 3DES, or other, depending on the target host | SSH |
| Productsup SFTP Server | aes256-ctr, aes192-ctr,aes128-ctr | SSH |
| FTP Server | None | FTP |
| SAP Product Content Hub | TLS, SSLv3 | HTTPS |
SAP Product Content Hub data is sent through the Productsup Platform API.
# Supported browsers
The Productsup platform and the Content Portal run best on the latest versions of Chrome, Firefox, Safari, and Edge (Chromium-based). See the following links for the latest browser versions:
* [Firefox](https://www.mozilla.org/en-US/firefox/)
* [Chrome](https://www.google.com/chrome/)
* [Safari](https://www.apple.com/safari)
* [Edge (Chromium)](https://www.microsoft.com/en-us/edge)
If you experience any issues displaying the platform properly, contact the Support Team at [support@productsup.com](mailto:support@productsup.com). Include a screenshot of the issue and list your browser version. See [Report a platform-related issue to Support](/docs/help-center/best-practices/report-a-platform-related-issue-to-support).
# Product feed management and automation benefits
Introduction [#introduction]
Automating product feed allows you to keep product data up-to-date across multiple channels automatically. Product feed, also known as a product data feed or data feed, refers to product information files. These feed files vary; see the following list for some commonly-used formats:
* CSV - Comma-separated value
* JSON - JavaScript Object Notation
* TXT - Text files
* XLS - Excel file spreadsheet
* XML - Extensible Markup Language
Marketers, for instance, use product feed across sales and marketing channels to communicate product data from one end to another. This product data can contain product size information, colors, availability, product images, etc. Online merchants use this data to display product listings to customers in the E-commerce space accurately. Depending on the marketplace, the formatting and structure of the product feed typically follow guidelines set by any specific channel. Automate the display of product feed across several channels to reduce the amount of time needed to optimize data feeds across all channels.
Productsup [#productsup]
Productsup is a SaaS feed management software solution for data feed integration, optimization, and distribution. Productsup lets you manage product feed by automating the import, optimization, and export of product data feed. You can import product data feed from multiple sources, including API integrations. From spreadsheets to product information management (PIM) solutions, integrate product data feed in several formats and sizes.
Automation use and benefits [#automation-use-and-benefits]
Productsup offers you a range of solutions to efficiently manage product feed, integrate marketplaces, onboard vendors, suppliers, third-party data providers, and use with product content syndication or PIM platforms. Managing product feed with Productsup helps marketplaces and brands structure and enhance their product content across thousands of retail and digital channels.
Automating pricing updates and inventory, along with data mapping, defining product categories, scheduling imports, and even excluding products for export, is where automation becomes most beneficial. And the importation and exportation of product feed is the most efficient way to communicate this data seamlessly throughout multiple channels.
High-quality product feed [#high-quality-product-feed]
Channels rely on product feeds to display product listings to shoppers reliably. The higher the quality of your product feed means the more accessible your products are to vendors and clients by matching merchant-set algorithms.
Accuracy [#accuracy]
Product feed must be accurate, as marketplaces and channels rely on accurate data to display your products. Marketplaces can be a highly competitive space, where inaccuracies in your data feed may cause a loss of clients.
Save time and money [#save-time-and-money]
Save time by automating updates and the processing of your data feeds. You’ll also save money by managing your product feed data from one platform. Productsup lets your marketing campaigns reach their maximum potential, reducing waste on ad spend, costs-per-clicks, lost conversions, etc.
Get started [#get-started]
See [Set up User Management](/docs/help-center/get-started/user-management/set-up-user-management) for getting started in the Productsup platform.
# Network information
import { Callout } from "fumadocs-ui/components/callout";
All requests originate from the IP ranges listed below. **These ranges belong exclusively to Productsup** — no other organization sends traffic from them — so there is no need to configure a proxy in the platform.
You must allowlist the **entire range**, not a single IP address. Productsup might use any address in these blocks, and the specific source IP for any given request is not stable.
Productsup IP ranges [#productsup-ip-ranges]
* IPv4: `185.252.140.0/22`
* IPv6: `2a13:7840::/29`
For more information about the Productsup network, see [AS200249](https://www.peeringdb.com/net/31954) on PeeringDB.
CIDR and netmask notation [#cidr-and-netmask-notation]
The `/22` and `/29` suffixes are CIDR notation — a compact way of writing a whole range of IP addresses in one line. Instead of listing every individual address, the suffix tells your firewall how large the range is. For example, `185.252.140.0/22` means "this address and the 1,023 addresses that follow it."
Most modern firewalls, load balancers, and server tools accept this CIDR format directly — paste the range as written and you are done.
Some older or simpler IPv4 tools split the range into two separate fields: a starting IP address and a *netmask* (sometimes called a *subnet mask*). The netmask is just a different way of describing the same range size. If your tool asks for both, use the values below.
| CIDR | Starting IP | Netmask |
| ------------------ | --------------- | --------------- |
| `185.252.140.0/22` | `185.252.140.0` | `255.255.252.0` |
IPv6 has no netmask equivalent — the protocol only uses CIDR notation (the `/29` prefix length). Enter `2a13:7840::/29` directly wherever your tool accepts an IPv6 range.
# Error log codes and troubleshooting overview
import { Callout } from "fumadocs-ui/components/callout";
Introduction [#introduction]
Error log is the platform's feature that shows all the records of the errors and warnings that occurred during the import, export, or run.
When you open a list of projects, you can see the number of errors and warnings per site. To see more details on them, open the error log.
Locate Error Log [#locate-error-log]
To access the error log:
. Go to **Error Log** from your site's main menu.
. Alternatively, in the site's **Dashboard**, select the **View error log** link in the Warnings and Errors section. The section displays the number of warnings and errors from the last run of the site and the severity level of the errors: *Medium*, *High*, or *Low*.
Error log [#error-log]
Error log displays all warnings and errors represented in a table view:
* **Result** - indicates whether the process failed or generated warnings.
* **Datetime** - shows the date and time when the process took place.
* **Process ID** - shows a unique ID of every process such as import, export, or run.
* **# Errors** - shows the number of times errors occurred.
* **# Warnings** - shows the number of times warnings occurred.
* **Purge** - lets you remove the entry from the list.
You can open each record to see the details of every process, namely:
* The orange labels for warnings and red labels for different severity levels for errors.
* **Process** with its ID. You can select the arrow (**>**) icon for each entry to expand more details.
* **Score** - the entry's rank, with 0 for the lowest and 1000 for the highest score.
* **Code** - the error code by which you can search for the meaning of the error and find possible solutions in our Help Center. See [Error codes and possible solutions](#section-idm4558182659704032694736461777).
* The **Snooze/Blacklist** drop-down menu with the following actions:
* **Add to Blacklist** - an entry will not appear in your error history until you remove it from the blacklist.
* **Snooze for 24 hours** - an entry won't appear in your error history for 24 hours.
* **Snooze for 7 days** - an entry won't appear in your error history for 7 days.
* **Snooze for 14 days** - an entry won't appear in your error history for 14 days.
* **Snooze for 30 days** - an entry won't appear in your error history for 30 days.
Beneath the error history, a table shows all snoozed or blacklisted errors, where you can unsnooze or remove from Blacklist the needed errors.
Error codes and possible solutions [#error-codes-and-possible-solutions]
If you run into an issue in the platform and see an error code or message in your error log, here's a summary of what they mean and some possible solutions to help you resolve the issue.
| Error code | Description of error | Possible cause for error | Possible solution |
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `10000` | `Download Failed or File is empty` | Downloading the feed from the source was unsuccessful or the file did not contain any data. This could indicate an invalid URL or error when during the file creation process. | - Make sure the Source URL, and if applicable, the username and password are all correct. - Make sure the Productsup Platform has permission to access this file. You may need to make sure the file has read permissions, and if the source server blocks outbound traffic, allowlist Productsup's IP ranges (see [Network information](/docs/help-center/get-started/productsup-fundamentals/network-information)). - Confirm the file is not empty, the file path and filename exist, and there are no typographical errors. |
| `10008` | `Export not enabled for this site` | You have not mapped any Dataflow connections to the intermediate and or export stages yet. | Map your product data from the import stage to the export stage. |
| `10012` | `FTP Transfer: Could not connect to host` | The FTP server has a firewall and only allows certain IP addresses to connect to it. | If the FTP server only allows certain IPs, allowlist Productsup's IP ranges (see [Network information](/docs/help-center/get-started/productsup-fundamentals/network-information)). |
| `10018` | `No exports enabled yet` | You have not added export channels to the site yet.You have set **Upload** on all export channels to **Off**. | - Add an export channel. - Confirm that you set **Upload** to **On** for at least one export channel. |
| `10031` | `Import File Empty or Missing CSV Header` | When you import XML files as data sources, you convert them into CSV files, which then lets you manipulate those products in the platform. Sometimes this conversion can go wrong and the generated CSV file is missing its header.This can also occur when you import a CSV, but you add XML settings in the setup and vice versa. | Contact [support@productsup.com](mailto:support@productsup.com). |
| `10032` | `Failed to connect expanding CSV. Skipping.` | Your additional data source is unable to connect with the main data source correctly. Could be because the ID columns are incorrectly set. | Go to your additional data source settings and confirm that the ID columns are set correctly. To learn more about additional data sources and how to add them to your site, see [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources). All settings are case-sensitive. |
| `10036` | `No files to upload to export destination since all products have been skipped. If this is not expected, please review your skipping rules` | Your skipping rule boxes have caused the platform to skip all of your products for this specific export channel. | Review your skipping rules to confirm that they are not skipping rows or products by accident. |
| `10042` | `FTP Remote Folder not Found` | The platform is unable to find the folder on the FTP server to upload the exported feed file to. | In your export channel’s FTP server destination setup, confirm that both the **FTP Host** is correct and the FTP directory exists on the server. |
| `10044` | `FTP Upload failed` | A generic error message, usually followed by a more detailed message, often indicating an error with the export destination. | Check the error log for more detailed information about the error message. |
| `10055` | `Index column doesn't exist` | The column chosen to connect the main data source to an additional data source doesn't exist during import. It can happen possibly due to the order of operations of import, data services, and column creation. | - Go to your additional data source settings. - Confirm that the ID columns are set correctly. The column chosen as **ID Column From Your Main Feed** can't be a column created by a data service from this site. See [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources), to learn more about additional data sources and how to add them to your site. |
| `10064` | This message uses the actual numbers and attribute names from your site. See an example:`50 items (100%) of column "shipping" contains an invalid shipping value` | Some of the products in the given attribute contain incorrect values. | - Check the warning message to find information about the export and attribute where your products contain incorrect values. - Go to the needed site and export, select **Analyze** in the column of the relevant attribute, and see what causes the problem with your values |
| `10078` | `Unable to download Feed or Feed is empty` | - The data source was unable to download. - The data source contained no data. - The server containing the file uses a firewall and only allows specific IP addresses to connect to it. | - Confirm the source URL or host is correct, and if applicable, the username and password as well. - Confirm the Productsup platform has permission to access this file (read permissions). - Confirm the file is not empty. - If the server uses a firewall, allowlist Productsup's IP ranges (see [Network information](/docs/help-center/get-started/productsup-fundamentals/network-information)). |
| `10079` | `Downloaded Additional Feed is empty` | The downloaded additional data source contains no data. | Check with your local IT team since the logic to populate this data source, before the Productsup platform pulls it, may contain a bug. |
| `10080` | `Main feed doesn't contain any products` | - The main data source contains no data. - The contained data is distorted. | Check with your local IT team since the logic to populate this data source, before the Productsup platform pulls it, may contain a bug. |
| `10081` | `No Data Source defined yet.` | The site has no data sources set up, so the run cannot begin since there is no available data for download. | Set up a data source. |
| `10082` | `Request to URL forbidden (HTTP Status 403)` | The platform does not have permission to access the URL. | Check if the URL needs credentials. If it requires an IP allowlist, allowlist Productsup's IP ranges (see [Network information](/docs/help-center/get-started/productsup-fundamentals/network-information)). |
| `10083` | `File not found at URL (HTTP Status 404)` | - The hosted file is in another URL. - The URL expired. | Double-check and update the file URL in the **Data Sources** > **Settings** tab. |
| `10097` | `FTP Transfer: Could not login at host` | - The credentials you used to access the FTP could be incorrect. - The FTP server only allows *Passive Mode*. | - Confirm you are using the correct credentials. - Activate **Passive Mode** in the **Data Sources** > **Settings** tab. |
| `10104` | `IO Service \{{ UserInfo.Metadata. service_name }}\" failed"` | The activated IO service may not be compatible with your data. | Check the settings of the IO service. If they look correct, contact Technical Support at [support@productsup.com](mailto:support@productsup.com). |
| `10115` | `Feed upload failed` | A generic error indicates that either the destination settings are not correct or the platform cannot access the destination. | - Check the destination settings for possible typographical errors or incorrect credentials. - If the destination requires an IP allowlist, allowlist Productsup's IP ranges (see [Network information](/docs/help-center/get-started/productsup-fundamentals/network-information)). - If everything looks correct, contact Technical Support at [support@productsup.com](mailto:support@productsup.com). |
| `10117` | `Conditionally mandatory attribute is empty` | A [conditionally mandatory attribute](/docs/export-template-management/attributes/conditionally-mandatory-attributes) has no value for products where one of its conditions is met. The attribute becomes mandatory when one of its configured conditions is met; for example, when `batteries_required` equals `true` or when the trigger attribute contains any non-empty value. | - Provide a value for the attribute on the affected products, or review the attribute's conditions in the Developer Portal. - Go to the site and export, and select **Analyze** in the attribute's column to see which products are affected. |
| `10118` | `Conditionally mandatory attribute failed validation` | A [conditionally mandatory attribute](/docs/export-template-management/attributes/conditionally-mandatory-attributes) has a value that fails one of its Analyzer Tests (for example, length, format, numeric range, or allowed values) for products where one of its conditions is met. | - Correct the values so they pass the attribute's Analyzer Test, or review the test configuration in the Developer Portal. - Go to the site and export, and select **Analyze** in the attribute's column to see which products and values are affected. |
| `10200` | `Unable to download file from FTP/SFTP/FTPS/FTPES` | The server may use a firewall or require different credentials. | Check if the platform needs credentials. If the server requires an IP allowlist, allowlist Productsup's IP ranges (see [Network information](/docs/help-center/get-started/productsup-fundamentals/network-information)). |
| `10202` | `Columns for Id Service were missing` | The platform did not set up the **ID Column** in **Data Sources** > **Settings**, or it disappeared. | Go to **Data Sources** > *Settings* tab, find the section *Unique item identifier*, and define one or more attributes that uniquely identify items in your feed. |
| `10211` | `Aborted due to Error Monitoring Configuration` | Monitor event conditions were met, so the platform aborted the current run. | Go to the error log to see which Monitor event was met. If it appears as expected, you can snooze the Monitor event for a specific period. |
| `10212` | `File decompression of download source {{ UserInfo.Datasource }} failed` | File decompression of download source `{{ UserInfo.Datasource }}` failed. | - Check with your IT team to see how they have compressed the file. - Check the file, as an uncompressed file might contain the wrong extension. For example, containing a .zip or .gz extension. |
| `10222` | `Could not upload {{ UserInfo. Metadata.cnt }} products. Mandatory attributes were missing` | The export is missing mandatory attributes that the target channel sets. | Confirm all mandatory attributes in the export channel have mapped connections to them. Mandatory attributes appear blue in **Dataflow**. |
| `10224` | `Channel not enabled for this site` | The platform is refreshing **Data View** for a channel that is currently inactive. | Check if it’s expected that the channel is inactive. If so, you can ignore this error message. |
| `10250` | `List {{ UserInfo.Id }} download failed. Read access is required?` | The platform may have restrictions for accessing or downloading the file. | - Confirm that everyone with the list URL has at least read access and rights to download the file. - If importing from Google Sheets, check that the URL ends with `/export? format=csv`. |
| `10313` | `Column '{{ UserInfo.Column }}' disappeared from source feed` | A previously imported column in Productsup no longer exists in the platform. This could be the case if you removed it from the data source or because the data source has failed to import. | Verify if the imported column should not exist. If it should, check with your IT team and confirm the data source that contained the column was set up correctly and did not fail to import. If it failed, review the corresponding error message. |
| `10314` | `Column '{{ UserInfo.Column }}' appeared as new column in the source feed` | A warning message letting you know that the site imported a new attribute from your data sources. The warning message mentions the name of the new attribute instead of the curly brackets shown in this example. | There must have been a change in your data sources, which resulted in the site importing a new attribute. No specific actions required. You can use the new attribute in your site if needed. |
| `10322` | `Destination Failed` | Generic error message for a failed upload to an export destination. May occur because of incorrect credentials, a server outage, or other technical reasons. | Check the error log for further information or contact [support@productsup.com](mailto:support@productsup.com) to investigate. |
| `10323` | `Product Count Changed from Import to Intermediate` | This error message indicates an inconsistency in the database regarding the number of products in the import and intermediate stage. | Contact [support@productsup.com](mailto:support@productsup.com) to investigate. |
| `10330` | `Product Count Changed from Intermediate to {{ UserInfo.Metadata. currentStage }}` | This error message indicates an inconsistency in the database regarding the number of products in the intermediate column and the listed export channel. | Contact [support@productsup.com](mailto:support@productsup.com) to investigate. |
| `10343` | `Could not upload {{ UserInfo. Metadata.cnt }} of {{ UserInfo. Metadata.total }} products {{ UserInfo. Metadata.rate }}% to Bing Content API` | The platform could not upload a percentage of products via the Bing Content API. | Check that all mandatory attributes are present. Mandatory attributes appear in blue in **Dataflow**. |
| `10344` | `Failed to connect expanding SQLite. Skipping.` | This error indicates that the database was not able to expand with additional data. | Check that you have the correct column names in the **Additional Data Source** settings. Check for possible typos, the correct case, for example, `ID` vs `id`, or if the column exists in **Data Sources** > **Additional Data Sources** > the **Content Mode** section. |
| `10345` | `Maximum Product Count Exceeded. Please Contact Productsup Support: support@productsup.com` | This error comes from a predefined value of the maximum number of products the platform allows for import and acts as a safeguard to prevent performance limitations or accidental overages. | Confirm you did not accidentally try to import too many products. If you need to increase the limit, contact [support@productsup.com](mailto:support@productsup.com), as they can adjust this limit according to your needs. |
| `10352` | `Maximum processing time exceeded` | This error refers to the threshold set in the Monitor event **Site run exceeds given number of hours**. For example, this could occur because of new rules applied in the Dataflow or Data View, or slow down and upload speeds. The number correlates to previous durations. | Review your Monitor settings. If the run time seems unusually high, contact [support@productsup.com](mailto:support@productsup.com) to investigate. |
| `10354` | `Unable to parse XML file` | A generic error message, usually followed by a more detailed message, could indicate a corrupted file. | Check the error log for more information. |
| `10370` | `XSL Transformation Failed (Export {{ UserInfo.Metadata.export_id }}: {{ UserInfo.Metadata.name\|raw }})` | An error occurred while attempting to transform the export XML file using an XSL Template. This may occur because the XML structure changed or the XSLT is invalid. | If you set up the XSLT, go to the settings of the specified export and check if you can find any inconsistencies between the XSL Template under XSL Template for XML Export and the original XML. Otherwise, contact Technical Support at [support@productsup.com](mailto:support@productsup.com) to investigate. |
| `10380` | `Invalid Dynamic Filename` | This occurs when an export uses a dynamic filename or URL, and the used Twig that generates the filename or URL is invalid. | Confirm that the used Twig that builds the filename or URL is valid. See [Import dynamic URLs](/docs/help-center/import-data-feeds/import-your-data-into-productsup-advanced-settings/import-dynamic-urls) for both imports and exports. |
| `10513` | `Processing Error` | A generic error message indicating an issue with the data processing in the database. | Contact [support@productsup.com](mailto:support@productsup.com) to investigate. |
| `10514` | `Service Failed` | A generic error message indicating a failed data service. | - Go to **Data Sources** > *Settings* tab, find the section *Unique item identifier*, and define one or more attributes that uniquely identify items in your feed. - If the setup looks correct, contact [support@productsup.com](mailto:support@productsup.com) to investigate. |
| `10515` | `Too many input columns provided` | The hard limit of columns in the import is 2.000 | - Check if there are any unnecessary columns and remove them from your import source. - Services may create additional columns, such as *Explode Columns*. - If the import file is an XML or JSON file, it might help to reduce the threshold for **Bundle repeating nodes** found in **Data Source** options > **Content Options** > **XML Settings**. |
| `10517` | `Destination upload failed because of missing required file configuration` | The failed export doesn't have a file to send data to | Go to the settings of the failed export and check if there is a file added in the *Files* panel at the bottom of the export setup page. If not, select **Add File**, define a desired filename and extension in **Filename**, and select **Save**. |
# Edit or delete a project
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Once a project is set up, you can edit its name or delete it entirely.
You can use projects to organize your sites as you wish. This could be per country, per brand, per branch, or in any other way that suits your organization and use case.
Navigate to a project [#navigate-to-a-project]
Go to the organization level.
Select the project name.
Edit a project name [#edit-a-project-name]
Go to the project level.
Go to **Settings** from the project's main menu.
Enter a new name in the **Project name** field.
Select **Save**.
Delete a project [#delete-a-project]
To delete a project, it must not have any sites in it. You must first delete the sites.
This is built-in as a safeguard to ensure that your feeds cannot easily be removed.
Go to the project level.
Go to **Settings** from the project's main menu.
Go to the **advanced settings**.
Select **Delete Project**.
# Add a project
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
According to the Productsup data structure, each site should exist in a project. The project is a container for sites, and you need to add a project to your Productsup organization before creating sites.
It is up to you to define the names and hierarchy of your projects and sites within Productsup.
Add a project to your organization [#add-a-project-to-your-organization]
You may have access to several organizations, each of which has its projects, sites, and settings. If you have only one organization, you can go to the organization level one of the following ways:
1. Select your organization name at the top of the main menu (highlighted in red).
2. Select your organization name in the breadcrumbs (highlighted in blue).
3. Go directly to the link ending with your organization ID, for example, `https://platform.productsup.com/overview/account/123456`.
Select **Add Project**.
Enter a name for your project.
Select **Save**. This action creates a project and redirects you to the project level in Productsup, where you can see an overview of the selected project and all its sites.
To see an overview of all projects within your organization, go to the organization level described in [Step 1](#N1650895275458).
Project's main menu [#projects-main-menu]
You can open the project-level menu by selecting it in breadcrumbs.
The project's main menu features include:
* **Overview**: an overview of all sites within the selected project available for you according to your access rights.
* **Dashboard**: an overview of errors and warnings occurring in the sites belonging to the project.
* **Authentication**: a feature that lets you add and view your authentications with external systems. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) for more information.
* **Monitor**: a feature that lets you set up email alerts for error events and process breaks. See [Monitor events overview](/docs/help-center/dashboard-and-monitor/ensure-data-quality-in-monitoring/monitor-events-overview) for more information.
* **Activity**: a summary of maintained and exported products by a selected month.
* **Reporting**: settings to generate and download performance reports for clicks and orders of the selected exports.
* **Settings**: a page where you can rename, delete, or move a site to another project.
The list of available features depends on your user access rights. See [User types and access rights](/docs/help-center/get-started/user-management/user-types-and-access-rights) for more information.
Use the navigation bar of the project level [#use-the-navigation-bar-of-the-project-level]
Once you've created a project, you can use the upper ribbon to apply various actions to the sites within the chosen project.
* Use the **Search** field to find a site by its name.
* Use the **Filter**, **Recent**, **Exports**, and **Tags** drop-down menus to filter sites within the selected project based on their states, time of creation, available exports, and tags. You can add tags in the project level:
Select the **Tag** drop-down menu in the needed project line.
Select **Add new tag** or select a tag from the list of existing tags.
Add key and value and select **Save**.
In the project level, you can only add new tags or select from the existing tags. To edit or delete tags, go to the **Setting** in the site level. See [Edit site settings](/docs/help-center/get-started/manage-your-organization-projects-and-sites/edit-site-settings#section-idm234666106254992).
* To search for errors, select **Errors** and start typing the error name. Select the necessary error from the drop-down list and choose **Search** to see the sites with the error.To get the meaning of the errors, see [Error log codes and troubleshooting overview](/docs/help-center/get-started/manage-your-organization-projects-and-sites/error-log-codes-and-troubleshooting-overview). Alternatively, you can view the error history in **Error Log** in the main menu.
Use **Clear Filters** in the upper ribbon to restore the page view before the error searching.
* Select the graph icon to change the project view and have different columns describing your sites. By default, the warning view is active.
* The graph view provides such columns as *ID*, *Title*, *State*, *Imported*, *Changed*, *Export(ed)*, *Tags*, *Last Duration*, and *Last/Next Run*.
* The warning view provides such columns as *ID*, *Title*, *State*, *Errors/Warnings*, *Imported*, *Last Duration*, and *Last/Next Run*.
The *Errors/Warnings* column shows the number of errors and warnings during the last run. To see the list of errors, hover over the red cross icon. To see the list of warnings, hover over the orange exclamation mark icon.
* Perform a bulk action on multiple projects and sites simultaneously by selecting **Bulk Option**. See [Use bulk options to perform actions across multiple sites](/docs/help-center/get-started/manage-your-organization-projects-and-sites/use-bulk-options-to-perform-actions-across-multiple-sites) for more information.
* Select **Download** to download a list of all sites within the selected project as a CSV file.
* Select **Clear Filters**, to restore the default state of the page before using any filters.
* Sort through sites by any column selecting the column title and using the up and down arrows.
# Manage your organization, projects, and sites
Learn how to manage your Productsup organization, projects, and sites. Also, learn how to use them.
There are two main levels in a Productsup organization:
* **Projects:** A portfolio or folder that groups and organizes sites, for example, by region, country, or branch.
* **Sites:** Productsup processes and maintains feeds within sites. You can create several exports in a site.
# Edit site settings
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
To structure and organize your Productsup organization, you can use various site settings. This document gives you an overview of the high-level site settings.
Change the name of a site [#change-the-name-of-a-site]
Go to **Settings** from the site's main menu.
Enter the new name in **Title**.
Select **Save**.
Add a logo to a site [#add-a-logo-to-a-site]
You can see a site's logo between the **Title** and **State** columns of the site's row on the project and organization overview pages. In the following screenshot, the globe image is an example of a logo added to a site.
Go to **Settings** from the site's main menu.
Add a link to your logo in **Logo URL**.
Select **Save**.
Add a comment to a site [#add-a-comment-to-a-site]
You can add comments to sites to keep things organized and help other users of the platform understand the purpose of each site better.
Go to either the organization or the project level.
Select the comment bubble at the end of the chosen site's row.
Enter your comment and select **Save**.
To see your comment, hover over the comment bubble or select it. Sites with comments have a black comment bubble, while sites with no comments have a white comment bubble.
Site's tags [#sites-tags]
Tags let you do the following actions:
* Filter sites by tags on the project level in the Overview. See [Add a project](/docs/help-center/get-started/manage-your-organization-projects-and-sites/add-a-project#section-idm4519495076728033017925908111).
* Refer to the necessary sites when using some rule boxes. See [Replace values](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/replace-values#section-idm353458339224944) and [Other](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/other#section-idm234573119882414).
* Simplify the site references when making some operations via Platform API. You can use a textual representation of a site instead of storing the site ID. In this case, the site tags must be unique within an organization.
Add tags to a site [#add-tags-to-a-site]
Go to **Settings** from the site's main menu.
Choose the **Tags** tab.
Add key and value in the **Add new tag** section and select **Add Tag**.
Edit or delete tags [#edit-or-delete-tags]
Go to **Settings** from the site's main menu.
Choose the **Tags** tab.
Next to the needed tag, select **Edit** to change the tag or select **Remove** to delete the tag.
You can't edit the platform-generated tags.
Move a site to a different project [#move-a-site-to-a-different-project]
Go to **Settings** from the site's main menu.
From the **Project** drop-down menu, select the project where you want to move the site.
Select **Save**.
Move multiple sites to a different project in bulk [#move-multiple-sites-to-a-different-project-in-bulk]
You can move multiple sites into a different project at once:
Go to either the organization or the project level.
Select **Bulk Option** in the upper ribbon.
Tick the boxes next to the sites you want to move and select **Next Step**.
Select **Move into Project** and choose **Next Step**.
From the **Project** drop-down menu, select the project where you want to move the sites.
If one of the sites you are moving has lists shared on the project level, this project loses access to the lists as the lists' source site moves to a different project. The lists become available to the target project chosen in the **Project** drop-down menu.
Select **Execute**.
Reset data in a site [#reset-data-in-a-site]
You can delete all product data from a site but preserve all site configurations, such as data sources, mapping, rule boxes, and exports. To reset the data:
Go to **Settings** from the site's main menu.
Choose the **Advanced Settings** tab.
Select **Reset** in the **Reset Data** panel.
Select **Yes**.
Reset data for multiple sites in bulk [#reset-data-for-multiple-sites-in-bulk]
You can reset data for multiple sites at once:
Go to either the organization or the project level.
Select **Bulk Option** in the upper ribbon.
Tick the boxes next to the sites where you want to reset data and select **Next Step**.
Select **Reset Sites** and choose **Next Step**.
Select **Execute**.
Disable or pause a site [#disable-or-pause-a-site]
By default, sites are always active in the platform. They import data from your data sources, process it by applying rule boxes and mapping attributes, and export it to the selected channels. If you want to deactivate a site, there are two (2) options:
. Pause a site's export. In this case, the site still imports data from your data sources and processes it without exporting it to any channels.
. Disable a site. In this case, the site no longer imports, processes, or exports any data. Even if the site uses scheduling or triggering settings, no run occurs.
To pause or disable a site, use one of the following procedures.
From the site level [#from-the-site-level]
Go to **Dashboard** from the site's main menu.
In the top-right corner, select the **Active** drop-down menu.
To pause the export of this site, select **Paused**. To disable this site, select **Disabled**.
From the organization or the project level [#from-the-organization-or-the-project-level]
Go to either the organization or the project level.
Select the green play icon (**▶︎**) in the **State** column of the desired site.
To pause the export of this site, select **Paused Upload**. To disable this site, select **Disabled**.
To change the state of multiple sites in bulk, use the Bulk Option feature:
Go to the organization or the project level and select **Bulk Option**.
Tick the boxes next to the desired sites and select **Next Step**.
Select **Activate/Deactivate Sites** and choose **Next Step**.
Choose the desired state and select **Execute**.
Delete a site [#delete-a-site]
Go to **Settings** from the site's main menu.
Choose the **Advanced Settings** tab.
In the **Delete this Site** panel, select **Yes, delete this Site**.
Select **Yes**.
Delete multiple sites in bulk [#delete-multiple-sites-in-bulk]
Go to either the organization or the project level.
Select **Bulk Option** in the upper ribbon.
Tick the boxes next to the sites you want to delete and select **Next Step**.
Select **Delete Sites** and choose **Next Step**.
Select **Execute**.
# View your Activity Log and Summary
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
With the Activity feature, you can keep track of the following:
* All your applied, edited, scheduled, and deleted rule boxes.
* All rule box conditions added to, moved within, or deleted from attributes.
* All added and deleted connections in Dataflow.
* All added, edited, and deleted user-generated attributes.
* The number of monthly maintained and exported items.
Locate the Activity page [#locate-the-activity-page]
To access the Activity page, go to **Activity** from your organization's, project's, or site's main menu.
* If you access the Activity page from the organization or site level, you can see two tabs:
* The *Activity Log* tab displays all activities related to rule boxes, connections, rule box conditions, and user-generated attributes.
* The *Activity Summary* tab shows the number of monthly maintained and exported items for the organization.
* If you access the Activity page from the project level, you can see only the *Activity Summary* tab with the number of monthly maintained and exported items for each site in a project.
Activity Log [#activity-log]
Activity Log displays your users' activities in Dataflow and Data View:
* Adding, editing, pausing, scheduling, or deleting rule boxes.
* Applying rule box conditions to attributes, moving them within attributes, or removing them from attributes.
* Adding or deleting connections in Dataflow.
* Adding, editing, and deleting user-generated attributes.
Your Activity Log displays a table containing the following information:
* **Activity** shows the name of the logged activity.
* **Type** displays the type of performed activity, such as *Add*, *Edit*, *Order change*, and *Delete*. The current version doesn't show the scheduling of rule boxes and changes of Dataflow versions.
* **Location** shows the project and site of the activity.
* **Timestamp** displays the time when the activity occurred based on the time zone selected in your profile. See [Set up user profile time zone](/docs/help-center/get-started/user-management/set-up-user-profile-time-zone).
* **User** records the name and email of the user who performed the activity.
Search for the needed user activities in the top toolbar [#search-for-the-needed-user-activities-in-the-top-toolbar]
You can search for the needed user activities using the search bar or the filters displayed next to it:
. In **Activity**, choose the entity that the needed activity relates to and select **Apply**:
* *Dataflow connection* shows an added or deleted connection between attributes in Dataflow.
* *Dataflow rule box* shows a rule box added, edited, moved, or deleted in Data View or Dataflow.
* *Rule box condition* shows an applied, moved, or deleted rule box condition in Data View or Dataflow.
* *User-generated attribute* shows an added, edited, or deleted attribute in the intermediate or export stage in Dataflow.
. In **Type**, choose the needed type of activity and select **Apply**:
* *Add* shows activities where a user added a rule box, a connection, a rule box condition, or a user-generated attribute.
* *Edit* shows activities where a user changed a rule box setup or renamed a user-generated attribute.
* *Order change* shows activities where a user changed the order of rule boxes and rule box conditions in an attribute.
* *Delete* shows activities where a user deleted a rule box, a connection, a rule box condition, or a user-generated attribute.
See the activity details [#see-the-activity-details]
Select any activity in Activity Log to view its details:
. The rule box activity details page shows the following information:
* *Add*, *Edit*, *Order change*, and *Delete* identify the type of action related to the rule box.
* *User* shows the user who performed the change.
* *Location* displays the organization, project, and site where the change happened.
* *Timestamp* logs the time of the change.
* *Rule box name* shows which rule box relates to the change.
* The *Before* and *After* panels display:
* The settings of the rule box before and after the change. This is only visible for *Edit* activities.
* In **Attribute Name**, the attribute where a user applied the rule box.
* In **Rule Box Order**, the number indicating the order in which a user applied the rule box to the attribute. See [Rule box order](/docs/help-center/add-a-rule-box#note-idm243488719234062).
* In **Stage**, the stage or export where a user applied the rule box.
. The activity details page of a Dataflow connection shows the following information:
* *Add* and *Delete* identify the type of activity related to the connection in Dataflow.
* *User* shows the user who performed the change.
* *Location* displays the organization, project, and site where the change happened.
* *Timestamp* logs the time of the change.
* *Connection* shows the stages where the connection changed. If the connection changed between the intermediate and export stages, you can also see the name of the specific export related to the change.
* The names of the attributes between which a user changed the connection.
. The activity details page of a rule box condition shows the following information:
* *Add*, *Order change*, and *Delete* identify the type of activity related to the rule box condition.
* *User* shows the user who performed the change.
* *Location* displays the organization, project, and site where the change happened.
* *Timestamp* logs the time of the change.
* The *Before* and *After* panels display:
* In **Attribute Name**, the attribute where a user applied the rule box condition.
* In **Rule Box Order**, the number indicating the order in which a user applied the rule box condition to the attribute. See [Rule box order](/docs/help-center/add-a-rule-box#note-idm243488719234062).
* In **Stage**, the stage or export where a user applied the rule box condition.
. The activity details page of a user-generated attribute shows the following information:
* *Add*, *Edit*, and *Delete* identify the type of activity related to the user-generated attribute.
* *User* shows the user who performed the change.
* *Location* displays the organization, project, and site where the change happened.
* *Timestamp* logs the time of the change.
* The *Before* and *After* panels display:
* In **Attribute Name**, the name of the affected attribute.
* In **Stage**, the stage or export where a user added, edited, or deleted the attribute.
Activity Summary [#activity-summary]
Your Activity Summary displays two KPIs:
* **Maintained items** (previously *Maintained Products*) show the average monthly number of imported items per site, project, or organization available in Activity. The platform calculates the average number of items in the import and intermediate stages and displays the higher of the two numbers. See a calculation example in the following table.
* **Exported items** (previously *Exported Products*) show the total monthly number of exported items per site, project, or organization available in Activity.
The platform keeps your data for one (1) year only.
The Activity Summary tab shows you the maintained and exported items for a selected month per project when you are at the organization level. But if you access the Activity Summary tab from the project level, you can see the maintained and exported items per each site within this project. And if you access it from the site level, the Activity Summary tab displays the maintained and exported items only for the current site.
To view your import and export activities for a certain month, choose the month from the dropdown in the top right corner.
Example of maintained items calculation:
In the following table, you can see that the platform triggered a run four times during the month and imported 7,525 items on average (30,100 divided by 4). At the same time, the platform passed 10,000 items on average to the Intermediate stage (20,000 divided by 2). Since the Intermediate average is higher than the Import average, the Activity Summary displays `10,000` as the number of Maintained items for that month.
| Event | Item count on Import | Item count on Intermediate | Description |
| ------ | -------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Run #1 | `100` | `0` | The platform triggered an import, but the file was faulty and only imported 100 out of 10,000 items. The platform passed nothing to the intermediate and export stages. |
| Run #2 | `10,000` | `0` | The platform triggered an import again and imported all items successfully. The platform passed nothing to the intermediate and export stages. |
| Run #3 | `10,000` | `10,000` | The platform triggered an import and export for all items and passed them to the intermediate stage and then to the export stage. |
| Run #4 | `10,000` | `10,000` | Scheduling triggered another data import and export, successfully passing all imported items. |
| | `7,525` | `10,000` | Average maintained items. |
The Activity Summary data might differ from your invoice if you moved a site from your testing or sandbox project to a live project. For example, in January, the sandbox site had 1,000 maintained items. You moved this project to live in February. Now, if you select January to review Activity Summary for January, you see 1,000 maintained items under the live project, even though in that month, they belonged to a sandbox project.
Download Activity Summary [#download-activity-summary]
You can download the Activity Summary data as a CSV file for one of the past 12 months as follows:
In the *Activity Summary* tab, select a month from the dropdown on the right.
Select **Export CSV**.
# Create or copy a site
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
A site is the smallest structural entity in the platform. Your Productsup organization can have multiple projects where you can add multiple sites. A site contains your imported data, the optimizations you apply to it, and the exports where you can send your data. Sites are usually your main workspace in the Productsup platform.
Similar to projects, you can organize your sites per country, brand, language, export, etc.
Dashboard is the homepage of every site. Here, you can see the site's stats and get quick access to troubleshooting features.
When creating a site, you have two options:
. Creating a new site and manually setting it up from scratch.
. Copying an existing site and reusing its settings.
Create a site [#create-a-site]
You have created a new site. The platform opens it in your current browser tab, leading you directly to Data Sources to let you start setting up your new site. See [Import your data into Productsup](/docs/help-center/import-data-feeds/import-your-data-into-productsup) for next steps.
Go to a project where you want to add a site.
Select **Add Site**.
Enter a name for your site in **Title**.
Leave the option *Create a new Site* in the **Create or Copy** dropdown.
Select **Add**.
Copy a site [#copy-a-site]
Copying a site saves time and reduces the probability of errors caused by configuring sites manually.
|
Productsup copies the following entities from the source site:
|
Additionally, you can choose to copy:
|
Productsup doesn't copy:
|
- Data sources and unique item identifier settings.
- Exports.
- Dataflow connections and rule boxes.
- Segments from Data View.
- Data service settings.
- Tracking settings.
- All lists shared on the site level.
- ROI rules from ROI Strategy.
- Site tags from Settings.
|
- Export destinations.
- Site scheduling and triggering settings.
|
- Tracking data: the platform copies tracking settings into the new site, but all tracking data is only available in the source site. ROI rules based on tracking KPIs, such as clicks and orders, don't work in the new site.
- Organization- and project-level lists: the availability of lists shared on the project and organization level depends on where your new site exists. If the new site exists in the same project or organization as the source site, your new site automatically uses all lists shared within that project or organization. If you delete a list shared on the project or organization level from the source site where it was originally created, all sites in the same project or organization lose access to it.
|
You can use bulk actions to copy multiple sites at once. See [Use bulk options to perform actions across multiple sites](/docs/help-center/get-started/manage-your-organization-projects-and-sites/use-bulk-options-to-perform-actions-across-multiple-sites).
To copy a site, take these steps:
Go to the organization level in Productsup by performing one of the following actions:
1. Select your organization name at the top of the main menu (highlighted in red).
2. Select your organization name in the breadcrumbs (highlighted in blue).
3. Go directly to the link ending with your organization ID, for example, `https://platform.productsup.com/overview/account/123456`.
Select the name of the project where you wish to add a site.
Select **Add Site**.
Enter a name for your site in **Title**.
Select *Create a copy of an existing Site* from the **Create or Copy** dropdown.
In the *Select a Site* pop-up, choose the site you want to copy in **Select a Site to copy**.
Choose **Select**. This action closes the pop-up and shows you further site settings.
If you want to copy all export destinations from the source site, select **Copy with Export Destinations**.
If you copy a site with its export destinations, the destinations of both the source and the new site have the same settings, such as file names, folders, buckets, etc.The *Productsup Server* destination is the only one that remains unique and gets a new link and file name when you copy it.
To copy all scheduling and triggering settings from the source site, select **Copy with Scheduling & Triggering**.
To copy all shared dataflow settings from the source site to the new one, select **Copy with Shared elements**.
This option lets you copy only the sites that already have a shared dataflow\.It is impossible to copy a site with this option if the selected source site is also the source site for the shared dataflow settings. If you still need to copy this type of site, do it without the **Copy with Shared elements** option and then manually set up the shared dataflow in **Shared Dataflow** at the organization level. See [Share dataflow with other sites](/docs/help-center/map-and-optimize-your-data/dataflow/share-dataflow-with-other-sites) to learn more.
Select **Copy Selected Site**.
Site statuses [#site-statuses]
Using site statuses, you can manage which sites run or export data and which ones don't. There are three site statuses in Productsup:
* **Active**: In an active site, the platform uses the existing triggers and schedules to run the site automatically. It imports, processes, and exports data as expected. This is the default site status.
* **Paused**: In a paused site, the platform uses the existing triggers and schedules to partially run the site. It imports and processes your data, but it doesn't send any data to any of the added export destinations. Even if you manually run a paused site, the platform doesn't export the data. Using paused sites is a good way to test data optimization strategies without exporting any data to your target channels before it's ready.
The platform considers items in paused sites as maintained items.
* **Disabled**: In a disabled site, the platform doesn't apply any existing triggers or schedules to import, process, or export data. Disabled sites don't run.The platform doesn't consider items in disabled sites as maintained items.
Besides the site level, you can also change a site's status at the project and organization level in Overview using the dropdown in the *State* column.
Site's main menu [#sites-main-menu]
You can open and collapse the site-level menu using the arrow at the bottom of the menu.
The features available in the site's main menu are:
* **Dashboard**. You can see an overview of a site, including the number of imported and exported items, errors and warnings, import history overview, core readiness score, and site run times. See [Dashboard at the organization, project, and site level](/docs/help-center/dashboard-and-monitor/dashboard-at-the-organization-project-and-site-level).
* **Data Map**. You can get a visual overview of where your data is coming from, what happens to it, and what exports it goes to. See [View your site's flowchart in Data Map](/docs/help-center/dashboard-and-monitor/view-your-sites-flowchart-in-data-map).
* **Authentication**. You can add and view your authentications with external systems. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems).
* **Data Sources**. You can add new data sources and select a unique item identifier. See [Add a main data source to import your products](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-a-main-data-source-to-import-your-products).
* **Data Services**. You can add and view data services that can enhance and restructure your data feed. See [Enhance your import data through Data Services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services) and [Restructure your data in Data Services](/docs/help-center/map-and-optimize-your-data/data-services).
* **Exports**. You can add and set up exports and view the export history. See [Export data feeds](/docs/help-center/export-data-feeds).
* **Designer**. You can edit images in your data feed. See [Image Designer](/docs/help-center/map-and-optimize-your-data/image-designer).
* **Scheduling**. You can create schedules and trigger events so that your sites run automatically. See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling).
* **Dataflow**. You can get an overview of attribute mapping from import to export. See [Map your data from import to export in Dataflow](/docs/help-center/map-and-optimize-your-data/dataflow).
* **Data View**. You can view your data and use rule boxes to optimize it. See [Data View](/docs/help-center/map-and-optimize-your-data/data-view).
* **Lists**. You can include, exclude, replace, or map values in your data feed. See [Lists](/docs/help-center/map-and-optimize-your-data/lists).
* **ROI Strategy**. You can optimize your data feed using performance tracking data and KPIs.
* **Reporting**. You can generate and download performance reports for clicks and orders for selected exports.
* **Error Log**. You can see all errors and warnings occurring within site runs. See [Error log codes and troubleshooting overview](/docs/help-center/get-started/manage-your-organization-projects-and-sites/error-log-codes-and-troubleshooting-overview).
* **Monitoring**. You can set up email notifications or other monitoring actions for site run failures or irregularities. See [Monitor events overview](/docs/help-center/dashboard-and-monitor/ensure-data-quality-in-monitoring/monitor-events-overview).
* **Activity**. You can get a summary of the maintained and exported items for a selected month or see user activity in your site. See [View your Activity Log and Summary](/docs/help-center/get-started/manage-your-organization-projects-and-sites/view-your-activity-log-and-summary).
* **Tracking**. You can track and analyze performance by collecting clicks, keywords, conversions, and other statistics from your exports.
* **Settings**. You can rename, delete, or move a site to another project.
The list of available features depends on your user access rights. See [User types and access rights](/docs/help-center/get-started/user-management/user-types-and-access-rights) for more information.
# View runtime and estimations in the header
Introduction [#introduction]
You can view your site’s runtimes in the header to give you a better understanding of run durations. View your estimated runtime or historical information, such as when a run occurred and how long it lasted.
View inactive run header information [#view-inactive-run-header-information]
On any site-level page, for inactive runs, hover your mouse over the **Run** button to view:
* *The Last run (date, time)*
* *Estimated duration (amount of time)*
* *Last run’s duration (amount of time)*
**Note:** While on a site-level page, Productsup updates the *Estimated duration once a minute*.
View active run header information [#view-active-run-header-information]
After selecting the **Run** button to trigger a run, hover your mouse over **Run** to view:
* *Run’s estimated duration (amount of time)*
* *Last run (date, time)*
* *Last run’s duration (time)*
View queued-run status on site-level pages [#view-queued-run-status-on-site-level-pages]
View queued-runs information on any site-level page by hovering your mouse over the **Importing**, **Processing**, and **Exporting** header statuses. Read a tooltip pop-up message displaying the following information:
* *There are runs on hold since (day, time)*
* *The Run started (day, time)*
* *Run’s estimated duration (amount of time in hours, minutes)*
* *Last run’s duration (amount of time in hours, minutes)*
Read more about site-level statuses in the *View queued-runs in the header document*.
Have questions? Contact [support@productsup.com](mailto:support@productsup.com).
# View queued runs in the header
import { Callout } from "fumadocs-ui/components/callout";
Introduction [#introduction]
When you schedule or trigger runs on-demand, they generally begin when they’re supposed to. For runs that don’t start when expected, they may have fallen into a queue. There are several reasons why runs can fall into a queue. One reason can be that a run produced an error, which prevented it from being processed. The other is that an earlier run took longer than expected.
In the Productsup platform, you can view the status of queued runs at the site level, all from the site-level header.
View queued runs pop-up warning message [#view-queued-runs-pop-up-warning-message]
On every site-level page, a pop-up warning message displays, *There are runs on hold since (date, time)*, if all of the following conditions are met:
. You scheduled a run, or it was manually triggered by another site or API connection
. The run is ongoing
. The run blocks at least one other run’s start. This typically occurs when the estimated time of completion exceeds the next run’s start
You can close this pop-up message by selecting the **X** selector.
The queued runs pop-up warning message reappears after every browser restart or when the queue clears.
View queued runs header status [#view-queued-runs-header-status]
Confirm if you have queued runs by checking the site-level header on any site-level page. Queued runs display one of the following header statuses:
* **Importing**
* **Processing**
* **Exporting**
The **Importing**, **Processing**, and **Exporting** site-level headers indicate:
* That you scheduled a run, or it was manually triggered by another site or API connection
* A run is ongoing
* A run blocks at least one other run’s start, because its estimated time of completion exceeds the next run’s start
View queued runs status on site-level pages [#view-queued-runs-status-on-site-level-pages]
View queued runs information on any site-level page by hovering your mouse over the **Importing**, **Processing**, and **Exporting** header statuses.
The tooltip pop-up message displays the following information:
* *There are runs on hold since (day, time)*
* *The Run started (day, time)*
* *Run’s estimated duration (amount of time in hours, minutes)*
* *Last run’s duration (amount of time in hours, minutes)*
Have questions? Contact [support@productsup.com](mailto:support@productsup.com).
# Your Productsup organization
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The organization level consists of all information in Productsup related to your company, such as all projects and their sites, user management, monitoring, and more.
Find your organization [#find-your-organization]
You may have access to several organizations, each of which has its projects, sites, and settings. If you have only one organization, you can go to the organization level one of the following ways:
. Select your organization name at the top of the main menu (highlighted in red).
. Select your organization name in the breadcrumbs (highlighted in blue).
. Go directly to the link ending with your organization ID, for example, `https://platform.productsup.com/overview/account/123456`.
If you have multiple organizations, to switch to the necessary organization level, take the following steps:
Select the arrow next to your organization name at the top of the side menu.
Search for or select the necessary organization from the list.
Overview of your organization level [#overview-of-your-organization-level]
The organization level of the platform provides you with an overview of all projects within your Productsup organization.
You can select the right arrow icon (**>**) on a project to expand it and get an overview of its sites.
For example, the expanded *Tracking Data* project has the site *Tracking Data for Retailer Demo*.
In the upper ribbon of the overview of the projects in your organization, you can search for, sort, and filter your projects and sites with the help of the following options:
* Use the search bar to find a project or a site by name. You can also search for the sites containing specific attributes and connections between the stages.
* Use the **Projects only**, **Filter**, **Recent**, **Exports**, and **Tags** dropdowns to filter projects and sites based on their states, exports, and tags.
* Select **Errors** to see the projects and sites that have the error you are looking for.
* Select the graph or warning icon to change the view of your organization overview and have a different set of columns describing your projects and sites:
* The graph view focuses on exports.
* The warning view focuses on errors and warnings.
* Perform a bulk action on multiple projects and sites simultaneously by selecting **Bulk Option**. See [Use bulk options to perform actions across multiple sites](/docs/help-center/get-started/manage-your-organization-projects-and-sites/use-bulk-options-to-perform-actions-across-multiple-sites) for more information.
* Select **Unfold all Projects** to expand all projects and see all their sites in your organization overview.
* Select **Download** to download a list of all projects and sites within your organization as a CSV file.
* Use **Clear Filters** to bring the selected options to the default state.
Search for sites by their attributes in the needed stage and connections between them [#search-for-sites-by-their-attributes-in-the-needed-stage-and-connections-between-them]
You can search for the sites based on their attributes and connections between them in different stages.
Enter an attribute name and desired connection in the search bar in the top right corner of the Projects Overview page. Use one of the following search requests, entering the needed attributes instead of AAA, BBB, and CCC:
| Search request | Description |
| -------------------------- | -------------------------------------------------------------------------------------------------- |
| import: AAA --> | All sites with the connection between the import attribute AAA and any intermediate attribute. |
| import: AAA -/-> | All sites with no connection between the import attribute AAA and any intermediate attribute. |
| import: AAA --> BBB | All sites with the connection between the import attribute AAA and the intermediate attribute BBB. |
| import: AAA -/-> BBB | All sites with no connection between the import attribute AAA and the intermediate attribute BBB. |
| import: --> BBB | All sites with the connection between the intermediate attribute BBB and any import attribute. |
| import: -/-> BBB | All sites with no connection between any import attribute and the intermediate attribute BBB. |
| intermediate: BBB --> | All sites with the connection between the intermediate attribute BBB and any export attribute. |
| intermediate: BBB -/-> | All sites with no connection between the intermediate attribute BBB and any export attribute. |
| intermediate: BBB --> CCC | All sites with the connection between the intermediate attribute BBB and the export attribute CCC. |
| intermediate: BBB -/-> CCC | All sites with no connection between the intermediate attribute BBB and the export attribute CCC. |
| intermediate: --> CCC | All sites with the connection between the export attribute CCC and any intermediate attribute. |
| intermediate: -/-> CCC | All sites with no connection between any intermediate attribute and the export attribute CCC. |
Select the Enter key to see the sites meeting the search request.
For example, enter *import: image-->image*. As a result, the platform shows all sites where the **image** attribute in the import stage connects to the **image** attribute in the intermediate stage.
You can only filter sites but not the exports within them. If a site contains multiple exports, some exports may meet the search request, while others may not.
Organization's main menu [#organizations-main-menu]
You can open the organization-level menu by selecting your organization's name at the top of the main menu.
The organization's main menu features include:
* **Overview**: an overview of all projects and sites available to you according to your access rights.
* **Dashboard**: an overview of the errors and warnings occurring in all projects and sites on this organization.
* **Authentication**: a feature that lets you add and view your authentications with external systems. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) for more information.
* **User Management**: a feature that lets you add, edit, and remove users and change their access to sites and projects. See [User Management](/docs/help-center/get-started/user-management) for more information.
* **Monitor**: a feature that lets you set up email alerts for error events and process breaks. See [Monitor events overview](/docs/help-center/dashboard-and-monitor/ensure-data-quality-in-monitoring/monitor-events-overview) for more information.
* **FTP Accounts**: a feature that lets you add your FTP accounts in Productsup.
* **Activity**: a summary of maintained and exported items by a selected month.
* **Shared Dataflow**: a feature that lets you configure Dataflow once and reuse it across multiple sites. See [Share dataflow with other sites](/docs/help-center/map-and-optimize-your-data/dataflow/share-dataflow-with-other-sites).
The number of available menu options depends on your user access rights. For example, the *User Management* menu option is only available to users with administrator rights.
See [User types and access rights](/docs/help-center/get-started/user-management/user-types-and-access-rights) for more information.
Edit Organization settings [#edit-organization-settings]
Users with admin rights can access the Organization settings by selecting the cogwheel icon
in the lower-left corner of the main menu.
The **Organization settings** page opens in a new tab. On the left-hand side, you can choose what you want to configure: Organization settings or single sign-on (SSO).
In the **Organization settings**, you can do the following actions:
* Change the company name.
* Force the two-factor authentication (2FA) for the entire organization.
Select **Save** when you've made all the needed changes.
To set up single sign-on (SSO), see [Set up single sign-on (SSO)](/docs/help-center/get-started/user-management/set-up-single-sign-on-sso).
Switch between Productsup and Retail platforms [#switch-between-productsup-and-retail-platforms]
The [Productsup](https://platform.productsup.com/) and [Retail](https://retail.productsup.com/) platforms share the same login.
If you use both platforms, you can switch between them using the Projects and Workspaces icons on the side panel on the left. Also, from this panel, you can go to Content Portal.
See [Productsup Retail Platform Help Center](https://retail-docs.productsup.com/en/) for end-user documentation.
To go to Workspaces or Content Portal:
Select the **Workspaces** or **Content Portal** icon in the side panel on the left.
# Use bulk options to perform actions across multiple sites
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
When working with your data, you may need to perform the same action across multiple sites. To save time, you can use the Bulk Option feature and perform this action once while applying the needed changes across multiple sites in bulk.
You can find the Bulk Option feature in the upper ribbon at the organization and project level. If you use it at the organization level, you can apply bulk actions to all sites of your organization. If you use this feature at the project level, you can apply changes only to the sites located within one project.
Full list of available bulk actions [#full-list-of-available-bulk-actions]
Productsup offers bulk actions to save time when optimizing your product data across sites.
The following bulk actions can affect the site dataflow:
* Add Dataflow Boxes
* Add Dataflow Connection
* Copy Exports
* Map Dataflow Boxes from one dataflow
* Map import column(s) to multiple exports
To mitigate the risks, save a Dataflow version before making any of these bulk actions. See [Manage versions in Dataflow](https://help.productsup.com/en/29493-29497-organize-your-dataflow-columns-and-attributes.html#UUID-29d1496f-2f39-6677-788e-f7daf8528370_section-idm232216577475068).
Here is the full list of available bulk actions:
| Bulk action name | Description |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *Activate/Deactivate Sites* | Changes the site status by pausing the chosen sites to let them stop running or making them active again to resume site runs. |
| *Add Dataflow Boxes* | Copies rule boxes from a connection in the source site into the same connection in the target sites while overwriting the existing rule boxes in this connection. To copy rule boxes from one site to another, you need to make sure your target sites have the same connection as the one you are copying rule boxes from. |
| *Add Dataflow Connection* | Connects attributes between the import and intermediate or the intermediate and export stages in multiple sites. To create a connection between attributes in multiple sites, you need to make sure all the selected sites have the needed attributes in the respective stages.If you need to create a connection in one site only, go to **Dataflow** and add it there. |
| *Copy Data Sources* | Copies data sources and their settings from the selected source site to the target sites. |
| *Copy Exports* | Copies exports and their settings from the selected source site to the target sites. You can also choose to copy the export's destinations and dataflow. |
| *Copy Segments* | Copies Data View segments from the selected source site to the target sites. |
| *Delete Exports* | Deletes the chosen exports from the selected site. |
| *Delete Sites* | Deletes the selected sites. Be careful while using this bulk action. It deletes the selected sites along with all their data sources, data services, exports, rule boxes, and other settings. |
| *Disable Export* | Pauses the chosen export to stop it from sending data to its destinations during the following site runs. |
| *Enable Export* | Adds a new export to the chosen sites in bulk. |
| *Import* | Starts a partial run in the selected sites to let them import data from the active data sources. |
| *Import & Export All* | Starts a full run in the selected sites to let them import, process, and send data to the active export destinations. |
| *Map Dataflow Boxes from one dataflow* | Copies the rule boxes of the selected connections into the export of the same template within the same site.If you added two (2) Google Merchant Center exports to your site, you can add and set up the needed rule boxes for one of the Google Merchant Center exports and use this bulk action to copy all the configured rule boxes to the other Google Merchant Center export within this site. To copy rule boxes from one export template to the other, you need to first map all the relevant attributes in the target export template. |
| *Map import column(s) to multiple exports* | Connects the selected import-stage attributes to the respective attributes of one or more exports in this site. |
| *Move into Project* | Moves the selected sites to a different project. |
| *Remove Service Data Source* | Removes the additional data sources created by the added data services while leaving the related data services and their settings intact. |
| *Reset Sites* | Removes all product data from the selected sites while leaving all the other site settings intact. If a site has a delta export, the next site run imports all product data from the active data sources, applies the added data optimizations, and then exports all the products in the site to the destination of this delta export. |
Set up the needed bulk action [#set-up-the-needed-bulk-action]
In this section, you can find the general steps necessary to add a bulk action:
Go to the organization or project level and select **Bulk Option** in the upper ribbon.The platform opens a page featuring the first of four (4) steps.
In *Step 1*, choose the site or sites where you want to apply the changes and select **Next Step**.
You see the full list of bulk actions only if you select one (1) site in *Step 1*. If you select multiple sites, the platform shows a reduced list of bulk actions in *Step 2*:
| - *Activate/Deactivate Sites* - *Add Dataflow Connection* - *Delete Sites* - *Disable Export* - *Enable Export* | - *Import* - *Import & Export All* - *Move into Project* - *Remove Service Data Source* - *Reset Sites* |
| --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
In *Step 2*, choose the bulk action and select **Next Step**.
In *Step 3*, provide more details for the desired bulk action and select **Execute**.
If you use **Copy Exports** bulk action in this step, you can choose what you want to copy. Choosing the following options affects the target site's dataflow as follows:
* If you choose **Copy import-intermediate**, the platform overwrites the entire import-intermediate stage of the target site's dataflow, including column names, dataflow connections, and rule boxes.
* If you choose **Copy intermediate-export**, the platform overwrites the entire intermediate-export stage of the target site's dataflow, including column names, dataflow connections, and rule boxes.
If you aren't sure that you want these changes, save a Dataflow version before making the **Copy Exports** bulk action to have an opportunity to revert to the original dataflow. See [Manage versions in Dataflow](https://help.productsup.com/en/29493-29497-organize-your-dataflow-columns-and-attributes.html#UUID-29d1496f-2f39-6677-788e-f7daf8528370_section-idm232216577475068).
In *Step 4*, view the performed changes.You can leave this screen by selecting **Return to organization page**. You can also go to one of the sites where you performed the changes by selecting the name of the needed site.
See the following documents for the specific steps to set up the needed bulk action:
* [Apply rule boxes in bulk across multiple sites](/docs/help-center/add-a-rule-box/advanced-rule-box-options#section-idm232217535173292)
* [Move multiple sites to a different project in bulk](/docs/help-center/get-started/manage-your-organization-projects-and-sites/edit-site-settings#section-idm232209042059852)
* [Change the state of multiple sites in bulk](/docs/help-center/get-started/manage-your-organization-projects-and-sites/edit-site-settings#tip-idm243411323387524)
* [Reset data for multiple sites in bulk](/docs/help-center/get-started/manage-your-organization-projects-and-sites/edit-site-settings#section-idm232209049596325)
* [Delete multiple sites in bulk](/docs/help-center/get-started/manage-your-organization-projects-and-sites/edit-site-settings#section-idm232209057735875)
* [Map attributes across multiple sites in bulk](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export#section-idm4605326145878432706744933005)
* [Manually importing multiple sites in bulk](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-a-main-data-source-to-import-your-products#section-idm243410997409660)
# Set up the Walmart Marketplace Product Creation export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The Walmart Marketplace Product Creation export lets you create new product listings on Walmart Marketplace and update existing ones directly from Productsup. It connects via the Walmart Marketplace REST API and currently supports the US marketplace.
Prerequisites [#prerequisites]
Before setting up the Walmart Marketplace Product Creation export, confirm the following:
* You have an approved Walmart Marketplace seller account (US) with access to Seller Center.
* You are ready to authorize Productsup to access your Walmart account. You do this as part of [Configure the destination](#configure-the-destination) below.
Add the export [#add-the-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for **Walmart Marketplace - US - Product Creation** and select **Add**.
Select the export's name link.
Configure the destination [#configure-the-destination]
Select **Add Destination** and choose *Walmart Marketplace Products* from the dropdown. Give it a name as desired and select **Save**.
In **Authentication**, choose an existing authentication or select **Add New Authentication**.
Selecting **Add New Authentication** redirects you to Walmart's authorization page. After you approve access, Walmart redirects you back to Productsup automatically.
Toggle **Active** to **On** to activate the destination.
Select **Save**.
Set up category mapping [#set-up-category-mapping]
Walmart has more than 6,700 product types, each with its own required and optional category-specific attributes. Map your product categories to Walmart's categories using a Classification Mapping list so Productsup knows which attributes to make available to you.
Not every Walmart category is available in Productsup today. If a category you need doesn't appear when you set up the Classification Mapping list below, contact [support@productsup.com](mailto:support@productsup.com) to request it.
Automotive product types that require fitment data (vehicle compatibility submitted as ACES/PIES files) aren't supported. If you sell automotive parts that require fitment, contact your Customer Success Manager before setting up this export.
Go to **Lists** from your site's main menu and select **ADD LIST**.
Choose **Classification Mapping** and select **Continue**.
In **Name**, give your list a desired name.
In **Classification**, choose **Walmart Marketplace - US - Product Creation**.
In **Stage**, select **Import** to replace your imported categories with the categories accepted by Walmart.
In **Attribute**, choose your category attribute from your imported attributes.
Select **Add**.
Map your categories, pre-populated in the right-hand column, to the corresponding Walmart product categories in the **Replace term** column.
Create a new Classification Mapping list every time you change the category attribute in your data source or import new category values into your site.
Map attributes in Dataflow [#map-attributes-in-dataflow]
Go to **Dataflow** from your site's main menu and select **Walmart Marketplace - US - Product Creation** in the dropdown on the left.
Map your category attribute in the import stage to `__category_path` in the intermediate stage.
Select `__category_path` in the intermediate stage to add the Classification Mapping rule box. Choose the list you created in [Set up category mapping](#set-up-category-mapping) from the **List** dropdown, and configure **Case Sensitivity** and **On No Match** as needed. Select **Save**.
Select **Run** or **Import** in the top-right corner to load your categories and attributes into Dataflow.
This first run is expected to fail — no data is exported yet. Its only purpose is to load the Walmart categories and their attributes into Dataflow.
Once the run completes, open the **Classifications** dropdown in the top toolbar of Dataflow. It now lists all your mapped Walmart product categories. Refresh the page if the dropdown doesn't appear.
Select each category in the **Classifications** dropdown and map its relevant attributes from import to export. Attributes with a fork icon next to their name are specific to the selected category.
Set up variants [#set-up-variants]
If your products have variants, for example different sizes, colors, or counts of the same product, set up each variant as a separate row. All variants in a group share the same `variantGroupId`.
Map the following attributes:
| Attribute | Description |
| :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `variantGroupId` | The same value for every item in the variant group. |
| `isPrimaryVariant` | Set to *Yes* for exactly one item in the group — typically the top-selling item or the one with the most inventory. This is the item Walmart displays by default. |
| `variantAttributeNames` | Up to three attributes that vary within the group, for example *size*, *color*, or *countPerPack*. Each attribute you list here must also be mapped and visible at the export stage, or the submission fails. |
For example, a curtain set available in 2 sizes and 6 colors needs 12 rows, all sharing the same `variantGroupId`.
Set up swatch images [#set-up-swatch-images]
For visual variants such as color, you can provide swatch images that Walmart displays on the item page. Map the following attributes:
| Attribute | Description |
| :----------------------- | :----------------------------------------------------------------------------------------------------------- |
| `swatchVariantAttribute` | The attribute the swatch represents, for example *color*. |
| `swatchImageUrl` | The URL of the swatch image for each variant. Walmart recommends a resolution of 100 x 100 pixels at 72 ppi. |
Include swatch image URLs on every row when you resubmit variants. Leaving them out can remove existing swatch images from the live listing.
Common pitfalls [#common-pitfalls]
| Pitfall | What to do |
| :----------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- |
| The first export run fails | This is expected. The first run only loads Walmart's categories and attributes into Dataflow. Map the remaining mandatory attributes and run again. |
| The Classifications dropdown doesn't show your categories | Refresh the page after the first run. If categories still don't appear, check that your category attribute is correctly mapped to `__category_path`. |
| A category you need isn't in the Classification Mapping list | Contact [support@productsup.com](mailto:support@productsup.com) to request it. |
| Variant submissions are rejected | Confirm that every attribute listed in `variantAttributeNames` is also mapped and visible at the export stage. |
# Add CJ Affiliate Products Delta API export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
CJ Affiliate is one of the biggest online advertising companies operating worldwide in the affiliate marketing industry.
You can use the *CJ Affiliate Products Delta API* export template in Productsup to send your new or updated product data to CJ Affiliate via API. The export uses delta logic, meaning it sends only updated product data instead of the entire catalog.
Prerequisites [#prerequisites]
To send your products to CJ Affiliate, you need:
. An account in CJ Affiliate.
Set up CJ Affiliate Products Delta API export [#set-up-cj-affiliate-products-delta-api-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *CJ Affiliate Products Delta API*, hover over it, and select **Add**.
Go to **Exports** and select *CJ Affiliate Products Delta API*.
Select **Add Destination**.
Select *Commission Junction* from the **Destination** dropdown, and choose **Save**.
In **Company Id**, enter your CJ Company Id.
In **Access Token**, enter your Cj Access Token.
Leave the **Feedback Import** toggle **On** to let the platform receive feedback files from CJ Affiliate in case of export errors to troubleshoot the setup.
Toggle **Active** to **On** to activate the destination.
Select **Save**.
Go to **Dataflow** from the site's main menu and choose the added export from the dropdown in the top ribbon on the left.
Map the attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.
Your export must have the **AdID** attribute containing the advertiser link IDs for every product from CJ Affiliate. If it is missing in the import file, add it as and additional data source. Or, if only few products are missing the AdIDs, add the attribute in the export stage of the Dataflow and add values using the *Static Value* rule box. See [Add static or dynamic values](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/add-static-or-dynamic-values#section-idm243451095539816) to learn how to add a static value.
If you want to add many additional images, you must add custom attributes like **additionalImageLink.1** and **additionalImageLink.2**, up to 20 attributes. Each attribute should only contain one image URL. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export#section-idm4605326417364832706742715884) to learn how to add custom attributes.
Check your export readiness. See the following section.
Check your export readiness [#check-your-export-readiness]
Use analyzer tests in Data View to check your data completeness and readiness for export.
Go to **Data View** from your site's main menu and select *CJ Affiliate Products Delta API* from the dropdown at the top left-hand side.
Select **Full View** in the top ribbon and refresh the Data View page.
For each attribute, select **Analyze** to ensure your data meets the CJ Affiliate requirements. Alternatively, select the **Overview** dropdown and choose **Readiness**. See [Analyze your data in Data View](/docs/help-center/map-and-optimize-your-data/data-view/analyze-your-data-in-data-view) for more information.
See the core readiness score and correct the data using rule boxes, if needed.
Once your data is ready, select **Run** in the top-right corner of your view to send your products to CJ Affiliate.
You can open the Run log panel
to check the export progress.
# Add Cdiscount Offers export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Cdiscount is one of the largest e-commerce platforms in France. It offers a various products, including electronics, household appliances, and food.
The *Cdiscount Offers* export lets you send pricing and stock updates for items already listed on Cdiscount. You can't send new items with it.
You can also synchronize order between Producstup and Cdiscount using the the *Cdiscount Orders* data source and the *Cdiscount Order Shipment Delta API* export. See [Set up order sync for Cdiscount](/docs/help-center/export-data-feeds/special-export-setups/set-up-order-sync-for-cdiscount).
Add the Cdiscount Offers export [#add-the-cdiscount-offers-export]
You can send your offer updates to the items that are already listed on Cdiscount.
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Cdiscount Offers*, hover over it, and select **Add**.
In the *Exports* page, select the name of the added export to set it up.
Select **Add Destination**, choose *CDiscount offers* from the dropdown, give it a name as desired, and select **Save**.
Enter the seller ID in **Seller ID**.
Toggle **Preprod environment** to **On** to send offers to the sandbox environment without affecting live Cdiscount data. You can use Preprod environment only if you requested Octopia to enable it for you in Productsup.
Toggle **Active** to **On** to activate the destination.
Select **Save**.
Go to **Dataflow** from the site’s main menu. Choose your *Cdiscount Offers* from the dropdown on the top left.
Connect the attributes from the import to export stages.
Cdiscount requires the following mandatory attribute:
* **Offer/ProductEan**
* **Offer/Price**
* **Offer/Stock**
* **Offer/SellerProductId**
* **Offer/EcoPart**
* **Offer/ProductCondition**
Ensure each of these attributes has values. The platform won't export the offers with empty attributes to Cdiscount.
If your data is ready, select **Run** or **Export this export** in the upper right corner of the page.
If you want to receive feedback files, contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) to enable this feature.
# Add Magento 2.x Product Export
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The Magento 2.x Product Export lets you export products from the Productsup platform to a Magento 2.x instance. Use the Magento Product Export to enhance your data and provide more product information.
Add and set up export [#add-and-set-up-export]
To add the *Magento 2.x Product Export* in Productsup:
Go to **Exports** from your site’s main menu.
Select **ADD EXPORT** and search for *Magento 2.x Product Export.*
Select **Add** and confirm adding it again as an export.
In the export setup, select **Add Destination** and choose *Magento 2 API Product Export* from the drop-down list. Now enter a destination **Name**.
In **Authentication**, choose **Select authentication**. Then choose an available authentication from the drop-down list or select **Add New Authentication**. You can also choose to use pre-existing export tags from another platform in **Authentication**. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) to set up authentication with another platform.
Add your Magento store URL in **Base URL**.
Switch **Feedback import** to **On** if you want an error file returned to the platform once your data export finishes. Go to step [10](#N1616685345815) if **Feedback import** is set to **Off**.
Choose a column that you want to receive a feedback import file on in **Main feed connection column**.
Enter the column that connects to your feedback import in **Feedback file connection column**.
Select a **Magento Version** from the drop-down list.
Turn on the destination by switching **Active** to **On**.
Select **Save**.
# Add Google Product Inventory Feed (LIA) export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Google Local Inventory Ads (LIA) are Google Shopping ads that provide your customers with up-to-date information on prices, availability, and location of your in-store items. Google Local Inventory Ads (LIA) information is an additional data feed to the Google Merchant Center (GMC) main data feed.
Productsup lets you prepare the Google LIA additional data feed using one of the export templates:
. The *Google Product Inventory Feed (LIA)* export sends your data to selected destination, such as an SFTP of your choice. We recommend this export for exporting feeds with over 10M items.
. The *Google LIA Delta API* export sends your data directly to Google via API. This export sends only the updated items, rather than re-sending the entire catalog.
The Google LIA exports are part of the *LIA Module*, available at an additional cost in all platform editions. Contact your Customer Success Manager to discuss adding it to your organization.
Productsup still supports the legacy variant of the Google LIA export called *(Legacy) Google Local Product Feed (LIA)*, in case you are already using it.
Prerequisites [#prerequisites]
Before setting up any Google LIA exports, follow these steps:
. Create a Google account and enable your local inventory ads. See Google Local inventory onboarding guide:
* [Step 1: Enable local inventory ads or free local product listings](https://support.google.com/merchants/answer/3425157?hl=en\&ref_topic=7023401).
* [Step 2: Add your business information](https://support.google.com/merchants/answer/7457386?hl=en\&ref_topic=7023401).
* [Step 3: Link your Business Profiles and select your business group](https://support.google.com/merchants/answer/10507042?hl=en\&ref_topic=7023401).
* [Step 4: Select a landing page experience for your local inventory ads](https://support.google.com/merchants/answer/10507043?hl=en\&ref_topic=7023401).
* [Step 5: Upload a primary feed](https://support.google.com/merchants/answer/10947084?hl=en\&ref_topic=7023401).
The Productsup Help Center doesn't bear any responsibility for the accuracy of the information provided in the [Google Local inventory onboarding guide](https://support.google.com/merchants/answer/3540291?hl=en\&visit_id=638112759963254050-2537880770\&ref_topic=7023401\&rd=1). The steps of the guide aim to help you follow the process between the Productsup platform and Google instances.
. Have a separate site for GMC in Productsup and set up the *Google Merchant Center* export for your main feed. See [Add Google Merchant Center export](/docs/help-center/export-data-feeds/add-export/add-google-merchant-center-export).
If you want to make a product available online only and prevent it from appearing in certain locations, use the **\[excluded\_destination]** attribute.
. Set up a new site in Productsup for the Google LIA export. See [Create or copy a site](/docs/help-center/get-started/manage-your-organization-projects-and-sites/create-or-copy-a-site). The GMC feed and the LIA feed must be in different sites. The reason is that the Google LIA data feed can have the same item ID multiple times for every store where the item is available, unlike the GMC feed, which has unique IDs per item. That leads to different settings for the two sites.
Add and set up the Google Product Inventory Feed (LIA) export [#add-and-set-up-the-google-product-inventory-feed-lia-export]
If you want to prepare and first get your data feed in an SFTP and then manually upload the feed to the Google account, use the *Google Product Inventory Feed (LIA)* export:
Go to **Exports** from your Google LIA site's main menu and select **ADD EXPORT**.
Search for *Google Product Inventory Feed (LIA)*, hover over the export, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose a necessary destination from the dropdown, give it a name as desired, and then select **Save**.
You can choose any destination matching Google's requirements. See [Upload options](https://support.google.com/merchants/answer/188477).
Go to the **Settings** tab and ensure that **Product Uniqueness** is unselected to let products repeat multiple times in the data feed for different stores.
Go to **Dataflow** and map all mandatory attributes for Google Product Inventory Feed (LIA) from import to export. The mandatory attributes are in blue.
* **id** shows an individual SKU or item ID.
SKUs may appear multiple times in the feed because numerous store locations may have the same items. Ensure that your GMC and LIA feeds use the same ID values.
* **store code** shows in which stores customers can find the items. The store code values are case-sensitive and must match the store codes in your Google Business Profiles. See [Google Business Profile](https://www.google.com/business/) for more information.
* **availability** shows whether an item is in or out of stock.
As of June 15, 2023, the **quantity** attribute is no longer mandatory, while **availability** is required. See [2023 Merchant Center product data specification update](https://support.google.com/merchants/answer/13648265?sjid=11833305773604807122-EU%7Chttps://support.google.com/merchants/answer/13648265?sjid=11833305773604807122-EU%7Csmart-link).
Select **Export** in the top right corner of the page to run the export.
Next, finalize the setup process on the GMC side and upload your LIA feed to Google.
Finalize your registration in Google and submit LIA data [#finalize-your-registration-in-google-and-submit-lia-data]
To finalize the setup process and upload your LIA feed to Google, you must complete your registration in Google Merchant Center. See [Local inventory onboarding guide](https://support.google.com/merchants/answer/3061590?hl=en\&ref_topic=7023401) and follow the steps:
* [Step 6b: Create a local product inventory feed - Step 3: Upload your local products inventory feed](https://support.google.com/merchants/answer/7023001?hl=en\&ref_topic=7023401)
* [Step 6c: Verify your About page (Austria, Germany, and Switzerland only)](https://support.google.com/merchants/answer/3061590)
* [Step 7: Request inventory verification](https://support.google.com/merchants/answer/7455784?hl=en\&ref_topic=7023401).
* [Step 8: Link your Merchant Center and Google Ads accounts (local inventory ads only)](https://support.google.com/merchants/answer/7022488?hl=en\&ref_topic=7023401).
* [Step 9a and 9b: Enable local products in your Shopping campaigns](https://support.google.com/merchants/answer/10506537?hl=en\&ref_topic=7023401).
Add and set up the Google LIA Delta API export [#add-and-set-up-the-google-lia-delta-api-export]
Alternatively, if you want to send your data directly to Google via API, use the *Google LIA Delta API* export:
Go to **Exports** from your Google LIA site's main menu and select **Add export**.
Search for *Google LIA Delta API*, hover over the export, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Google LIA Delta Export* from the dropdown, give it a name as desired, and then select **Save**.
Enter your Google Merchant Center account ID in **Account ID**.
Select **Add New Authentication** or choose a previously created authentication from the **Select authentication** dropdown. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) to set up authentication with another platform.
Enter your merchant ID in **Merchant ID** to send data directly to the selected Merchant Center account. If you have a multi-client Merchant Center account, enter the ID of the relevant sub-account.
If you have several sub-account, you must add and set up a separate export for each of them.
Leave **Feedback Import** on **On** if you want to receive a response directly from GMC in case of any export failures.
Toggle **Active** to **On** to activate the destination.
Select **Save**.
Go to **Dataflow** and map all mandatory attributes for Google LIA from import to export. The mandatory attributes are in blue.
* **productId** shows a unique item identifier.
* **price.value** shows the price of an item.
* **price.currency** contains the currency code for the price, following ISO currency standards such as *USD* or *EUR*.
* **availability** indicates whether the item is in stock.
* **storeCode** contains the code of the specific local store.
* **language** shows the code of the language used to display information about an item, such as *en* for English.
* **country** contains the code of the country where the store is located.
* **merchantID** shows the unique identifier of the Google Merchant Center account.
Select **Export** in the top right corner of the page to run the export.
# Add Digitec Galaxus export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Digitec Galaxus is the largest online retailer in Switzerland that operates two online shops called digitec and Galaxus and runs several physical outlets across different German- and French-speaking parts of the country.
The digitec store primarily focuses on selling electronics, while Galaxus offers a broader array of products spanning household, DIY, sports, office, fashion, and other categories of goods.
Prerequisites [#prerequisites]
. An established partnership with Digitec Galaxus. See [Join our merchant programme!](https://www.galaxus.ch/en/page/join-our-merchant-programme-12462).
. An FTP server account and connection data.Digitec Galaxus supports submitting all product data to their marketplace through an FTP server. See [Data Transmission](https://confdg.atlassian.net/wiki/spaces/PI/pages/168665885047/Product+Data) for more info on establishing your FTP server access and contact Digitec Galaxus to get your FTP connection data.
Digitec Galaxus exports in Productsup [#digitec-galaxus-exports-in-productsup]
There are four separate Digitec Galaxus exports in the Productsup platform: Stammdaten, Verfügbarkeit und Preis, Eigenschaften, and Zubehör. Each of these exports contains different sorts of data that you can submit to the Digitec Galaxus marketplace. Stammdaten, Verfügbarkeit und Preis, and Eigenschaften are obligatory exports that you must set up to send your products to Digitec Galaxus. The Zubehör export is optional.
Digitec Galaxus - Stammdaten export [#digitec-galaxus---stammdaten-export]
The Stammdaten export contains all basic product data, such as product ID, GTIN, category, product description, product title, image URLs, etc. This export can contain German, French, Italian, and English product data. Language variations of attributes' names end with a corresponding language code: `_DE`, `_FR`, `_IT`, `_EN`.
Digitec Galaxus - Verfügbarkeit und Preis export [#digitec-galaxus---verfügbarkeit-und-preis-export]
The Verfügbarkeit und Preis export contains data on stock levels and prices for every product from the Stammdaten export.
Digitec Galaxus - Eigenschaften export [#digitec-galaxus---eigenschaften-export]
The Eigenschaften export enriches your product data with attributes relevant for the customer, such as product color, size, material, features, technical details, etc. This export can contain German, French, Italian, and English product data. Language variations of attributes' names end with a corresponding language code: `_DE`, `_FR`, `_IT`, `_EN`.
The Eigenschaften export requires a separate row for every attribute of a product, which is why the CSV output file contains as many rows for each product as the number of German attributes that product has.
Every row in the output file contains the following columns:
* `ProviderKey` - This is the product ID.
* `SpecificationKey` - This is the ID of the product attribute described in this row.
* `SpecificationGroup_LanguageCode` - This is the attribute group to which the attribute described in this row belongs. For example, if a row describes the attribute height, its attribute group can be dimensions. You can specify your attribute group in multiple languages.
* `SpecificationKey_LanguageCode` - This is the attribute's name. You can specify it in multiple languages.
* `SpecificationValue_LanguageCode` - This is the attribute's value. You can specify it in multiple languages.
Currently, Productsup doesn't support the columns `SpecificationKey` and `SpecificationGroup_LanguageCode` because they aren't mandatory for the Eigenschaften export. Productsup leaves them blank in the output file without affecting the overall success of exporting products to Digitec Galaxus.
Digitec Galaxus - Zubehör export [#digitec-galaxus---zubehör-export]
The Zubehör export is optional. You don't have to set it up in Productsup to send your products to the Digitec Galaxus marketplace. However, you can set it up to supplement your products from the Stammdaten feed with related items that customers can buy as accessories to those products.
This export has only two attributes: `ProductKeyMainProduct` and `ProductKeyAccessoryProduct`.
Add and set up the exports [#add-and-set-up-the-exports]
To add the Digitec Galaxus exports to Productsup, follow these steps for each export. The Stammdaten, Verfügbarkeit und Preis, and Zubehör exports have the same setup process, while the setup of the Eigenschaften export has some differences outlined in notes throughout the steps.
Go to **Exports** from your site’s main menu. Select **ADD EXPORT** and search for *Digitec Galaxus - Stammdaten*, *Digitec Galaxus -Verfügbarkeit und Preis*, *Digitec Galaxus - Eigenschaften*, or *Digitec Galaxus - Zubehör*.
Select **Add** on the needed channel, give it a custom name if you desire, and again select **Add**.
Select **Add Destination** and choose *SFTP/FTP/FTPS Server* from the drop-down list. Enter a custom name as desired in **Name** and select **Save**. In the destination setup, select the needed protocol in **Protocol**, enter your connection data in **Host**, **Username**, **Password**, and **Directory**, select **On** in **Active**, and then select **Save**. See [Export your data to an FTP, SFTP, or FTPS server](/docs/help-center/export-data-feeds/set-up-an-export-destination/add-an-ftp-sftp-or-ftps-destination) for more details.
For export testing purposes, you can select **Add Destination** once more and choose *Productsup Server* from the drop-down list, enter a custom name as desired in **Name**, and select **Save**. Using this destination, you can look at your output files before sending them to Digitec Galaxus.
For the Eigenschaften export, don't add any destination and skip Step 3 altogether. This export doesn't require any destination because of the writer class added in Step 4.
This step is relevant for the Eigenschaften export only.Go to the *Labels, Tags & Sorting* tab on the channel setup page. In the **Export Tags** panel, find the **Key** field and add `custom_csv_writer_class`. In **Value**, add `ProductsUp_Csv_File_Writer_DigitecGalaxus_VollstandigeEigenschaften`. Select **Add Tag** and then select **Save**.
In Dataflow, Productsup maps the mandatory attributes of the export stage with their respective attributes in the intermediate stage automatically. If you want to map non-mandatory attributes, you must do it manually.Go to **Dataflow** and select the needed export in the drop-down menu on the left. Check that your import stage has the information required for the relevant export attributes. If not, add the needed information to your data source and trigger an import by selecting **Import** in the upper-right corner of your view in **Dataflow**.
The Eigenschaften export in **Dataflow** automatically creates two attributes in the export stage: `ProductKey` and `ProviderKey`. To set up your export properly, you need to add the rest of the relevant attributes to the export stage manually.The attributes you add here should be the product attributes you want to display on Digitec Galaxus, such as color, brand, size, etc. Later, the writer class you added in the channel setup restructures products and attributes in the output file featuring the `SpecificationKey_LanguageCode` and `SpecificationValue_LanguageCode` columns.To add an attribute to the export stage in Dataflow:
1. Go to **Dataflow** from your site's main menu
2. Select **Drop or Click to add new field** under the export stage
3. Give the attribute a name
4. Select **Save**
Mind that Productsup follows specific attribute naming rules while processing the export. Make sure to:
* Use the language codes `_FR`, `_IT`, `_EN` at the end of attribute names in French, Italian, and English, respectively.
* Use either the language code `_DE` or no language code at all at the end of attribute names in German.
The minimum requirement for the Eigenschaften export to work is one (1) attribute in German per row.
Once you have all the needed information in the import stage and all relevant attributes in the export stage, select the node of a chosen attribute in one stage and drag a line from that node to the node of a corresponding attribute in the next stage to map the attributes. You should map all relevant attributes from import to intermediate and then from intermediate to export.
# Add Amazon Inventory and Price Update SP-API export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The *Amazon Inventory and Price Update SP-API* export lets you send updates on inventory and prices for the items on Amazon. This API-based export uses delta files, sending only new, updated, and deleted items to Amazon instead of the entire catalog.
See [Add Amazon Seller Central – Product Creation (US) export](/docs/help-center/export-data-feeds/add-export/add-amazon-seller-central-product-creation-us-export) to learn more about the Amazon ecosystem in Productsup.
Prerequisites [#prerequisites]
Before adding the *Amazon Inventory and Price Update SP-API* export in Productsup, you need to:
. Create an Amazon seller account. You need to provide your account data to Productsup to connect to Amazon via the Selling Partner API.
. Upload your data to Amazon.
. Import your inventory and price updates to Productsup.
Add and set up Amazon Inventory and Price Update SP-API export [#add-and-set-up-amazon-inventory-and-price-update-sp-api-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Amazon Inventory and Price Update SP-API*, hover over it, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination** and choose *Amazon Price & Inventory export* from the drop-down list, give it a name as desired, and select **Save**.
In **Authentication**, choose the Amazon authentication you previously set up in your organization, project, or site. If you haven't set up Amazon authentication yet, perform the following steps:
1. Select **Add New Authentication**.
2. Select *Amazon Authentication (BETA version by Amazon)* in **Type**. You can optionally give your authentication a name.
3. Select **Next**.
4. If applicable, select **Region** and **Country** to choose your marketplace country and locale.
5. Select **Connect**.
Before proceeding, Productsup redirects you to Amazon to finalize your authentication. After completing the authentication setup, Amazon redirects you back to Productsup.
6. Close the confirmation window to proceed.
Choose the market of interest in **Marketplace ID**.
Enter your merchant token from your Amazon seller account in **Seller ID**.
Switch **Active** to *On* to activate the destination.
Select **Save**.
Next, map the attributes for the export. See the following section.
Map the attributes to Amazon Inventory and Price Update SP-API export [#map-the-attributes-to-amazon-inventory-and-price-update-sp-api-export]
To update price and inventory using JSON-based feeds, you must map mandatory attributes from the import to export stage in Dataflow.
Go to **Dataflow** from your site's main menu and select *Amazon Inventory and Price Update SP-API* in the drop-down menu on the left.
Map all mandatory attributes from import to export:
* **SKU** is a unique identifier to track and manage your inventory.
* **FulfillmentCenterID** is the name of the fulfillment channel. Possible values are `DEFAULT (MFN)`, `AMAZON_NA (FBA)`, `AMAZON_EU (FBA)`, and `AMAZON_JP (FBA)`. Depending on your fulfillment method, the mapping should be as follows:
* MFN (Merchant Fulfilled Network) is a shipping method where you list your items on Amazon international marketplaces and choose to ship them by yourself to each customer.If MFA is your fulfillment method, unmap the **FulfillmentCenterID** attribute. The platform will automatically consider the `DEFAULT (MFN)` value for this attribute.
* FBA (Fulfillment by Amazon) is a service that lets you outsource order fulfillment, including storage, packing, and shipping, to Amazon.If FBA is your fulfillment method, map the **FulfillmentCenterID** attribute containing your fulfillment method as a value.
It's impossible to switch from MFN to FBA and back by changing the attribute's values. First, you need to change your fulfillment method in your Amazon account and only then adjust the feed in Productsup. See [List products for Fulfillment by Amazon](https://sellercentral.amazon.com/help/hub/reference/external/200141220?initialSessionID=144-0577865-4577356\&ld=NSGoogle\&pageName=US%3ASD%3AFBA-main) for mote information.
* **Quantity** is the MFN quantity available for fulfillment.
* **StandardPrice** is a standard price when you haven't scheduled any discounted price.
* **StandardPrice.currency** is the currency of the **StandardPrice** attribute.
Optionally, you can map the following attributes:
* **RestockDate** is the date when an item will be available again. The date format should be `yyyy-mm-dd`.
* **FulfillmentLatency** is the handling time for MFN fulfillment. The format is the number of days.
* **Available** shows `true` or `false` for the MFN inventory instead of providing a quantity value.
Map either **Available** or **Quantity**. You can't map both; otherwise, you will get an error from Amazon.
* **MinimumSellerAllowedPrice** is the minimum price for automated pricing.
* **MaximumSellerAllowedPrice** is the maximum price for automated pricing.
* **Sale.StartDate** and **Sale.EndDate** contain the discounted price start and end dates. The date format is `yyyy-mm-dd`.
* **Sale.SalePrice** is a discounted price.
If your data is ready, select **Run** or **Export** in the upper right corner of the page. If you don't want to run the entire site, including all active exports set up in it, you can go to **Exports**, select the Amazon Inventory and Price Update SP-API export, and then choose **Export this export**.
# Add Meta Shops Ads exports to sell your products on Meta
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Meta Shops Ads are the new shopping format where Meta owns the checkout experience and lets social media users shop, order, and pay directly in the Meta apps. This leads to a smoother shopping experience, higher conversion rates, and more transparent ad performance, which yields a higher return on ad spend.
Meta Shops Ads are currently in closed beta testing in the US. The general release of the new ads is due in mid-2023 in the US. There are currently no plans to expand Meta Shops Ads to countries other than the US.
To support customers interested in selling products in the US via the new Meta Shops Ads, Productsup has built an ecosystem that sends product and order data to Meta Shops Ads:
. *Meta Shops Ads Main*Meta requires receiving your full product catalog every 24 hours and your product data updates every hour. This API-based export uses the destinations *Meta Shops Ads: Data Feed* and *Meta Shops Ads: Delta Upload* to send your full product catalog or product data updates to Meta Shops Ads and meet these requirements.
. *Meta Shops Ads - Price & Stock Update*Meta requires receiving your price and stock updates every 15 minutes. This API-based export sends your products' price and stock changes to Meta to meet this requirement.
. *Meta Shops Ads - Order Import*This data source imports order data from Meta to let you send it to your order management system. When you import an order from Meta into Productsup, the order status on Meta changes from `CREATED` to `IN_PROGRESS`.
. *Meta Shops Ads - Order Fulfilment Export*When your orders have the status `IN_PROGRESS`, you can send shipment and tracking information to Meta using this API-based export. You can notify customers of full and partial shipments. A partial shipment of the order means that not all of the ordered items are in one shipment.
You receive a payment transfer from Meta when you confirm the order's shipment and send the corresponding tracking details to Meta.
. *Meta Shops Ads - Order Cancellation Export*If you can't accept and ship an order, you can send cancellation information to Meta using this API-based export. You can cancel orders fully or partially. A partial cancellation means that some products in the order are still going to be shipped. Only orders with the status `IN_PROGRESS` can be canceled.
. *Meta Shops Ads - Order Refund*If you need to refund an order that you have already shipped, you can send refund information to Meta using this API-based export. You can refund only orders with the status `COMPLETED` or `IN_PROGRESS`. Refunds can be full or partial.
The Meta Shops Ads ecosystem in Productsup doesn't manage ads. It only helps you send the needed product and order updates to Meta. You need to manage your ads on Meta.
To send your product and order data to Meta Shops Ads, you need to set up this ecosystem in the following order:
*Meta Shops Ads Main*. See [Send your full product catalog and its updates to Meta](#section-idm4578928862486433696783562844).
*Meta Shops Ads - Price & Stock Update*. See [Send your price and stock updates to Meta](#section-idm4635650123020833696783840529).
*Meta Shops Ads - Order Import*. See [Import orders from Meta](#section-idm241684839243865).
All exports dealing with order data. See [Send order data to Meta](#section-idm243369678487728).
Prerequisites [#prerequisites]
The entire Meta Shops Ads ecosystem in Productsup is currently available to a limited number of customers only. If you want to gain access to it, reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com).
To set up the Meta Shops Ads ecosystem in Productsup, you need:
. A project in your Productsup organization where you are going to create multiple sites pushing and pulling data from Meta. In this separate project, you need to create a separate site for each Meta Shops Ads export. The data source *Meta Shops Ads - Order Import* should also have a separate dedicated site.
A separate project for all Meta Shops Ads sites is a recommended option. If it doesn't fit your overall organization structure, you can ignore this advice.However, splitting all product-data exports into separate sites is mandatory to keep your setup easy to manage and let you set up the needed site-running schedules.
. A Facebook account.
. A commerce account ID that you can find in Commerce Manager on Meta.
. A catalog ID that you can find in Commerce Manager on Meta.
. A Meta Shops Ads authentication created on the project or organization level to use it across all Meta Shops Ads sites. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) for more information.Add this authentication as follows:
1. Go to **Authentication** from your organization's or project's menu and select **ADD AUTHENTICATION**.
2. In **Type**, select *Meta Shops Ads Authentication*, give it a custom name as desired, and select **Next**.
3. In **CMS ID**, enter your commerce account ID.
4. In **Business Name**, enter your business's name as displayed on Meta.
5. Select your location's timezone and currency in the respective fields.
6. Select **Connect** for Productsup to redirect you to a Meta account page where you can give Productsup access to your Meta account. Follow the instructions on Meta to connect the systems.
On the *Open your shop* screen, uncheck the box **Facebook ads** to skip creating an ad account and pixel on Meta.
7. Once ready, select **Done** to let Meta redirect you back to Productsup. Close the confirmation window in Productsup to proceed.
Add exports to send product data to Meta [#add-exports-to-send-product-data-to-meta]
Productsup should be your source of truth for product data. Creating and managing products on Meta directly can cause errors on Meta's site when you run exports in Productsup.
Send your full product catalog and its updates to Meta [#send-your-full-product-catalog-and-its-updates-to-meta]
According to the Meta Shops Ads requirements, you need to send your full product catalog to Meta once every 24 hours and all product data updates (delta files) once every hour. To set up different scheduling for the full catalog and delta exports, create two (2) separate sites in your Meta Shops Ads project.
Full product catalog [#full-product-catalog]
One of the sites you created in your Meta Shops Ads project is going to send your full product catalog to Meta. Open this site and follow these steps:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Meta Shops Ads Main*, hover over it, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Meta Shops Ads: Data Feed* from the drop-down list, give it a name as desired, and then select **Save**.
In **Product Catalog ID**, enter the catalog ID of your relevant catalog in Commerce Manager.
In **Feed Name**, enter the name that Meta should display in Commerce Manager as the name of your product catalog.
Toggle the **Compression** button to *On* if you want the site to export your feed as a *.zip* file.
In **Authentication**, select the Meta Shops Ads authentication you have added to your Productsup organization or project.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Lists** and add two (2) lists:
1. Add a Partner Taxonomy Mapping list to map your categories to the expected Google category taxonomy by selecting **ADD LIST** and choosing **Partner Taxonomy Mapping**. Then, select **Continue**.
2. Add a Classification Mapping list to map your categories to Meta's categories by selecting **ADD LIST** and choosing **Classification Mapping**. Then, select **Continue**.
Give each list a desired name, select **Google MC - US** in **Taxonomy** or **Meta Shops Ads Main** in **Classification**, and choose **Import** in **Stage**.
|
|
|
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
In both list types, select the **Attribute** field to choose the attribute in your import stage that contains your products' category data. Then, select **Add** at the bottom of the page to add the list.
In both list types, go through all the values of your category column and select corresponding Google or Meta categories in the **Replace term** column.
Go to **Dataflow** and select **Meta Shops Ads Main** from the drop-down menu on the left.
Map all the needed attributes from import to export. The attributes list you see in the export stage is relevant for products of all your categories.
Map your import-stage category attribute to both `category_path` and `google_product_category` in the intermediate stage to add the needed rule boxes and apply the lists.
Add rule boxes to apply your created lists to the needed attributes:
1. Select `google_product_category` in the intermediate stage and open the **Select an Option** drop-down menu on the right to find and add the rule box **Taxonomy Mapping**. Choose your Partner Taxonomy list in **List** and select **Save**.
2. Select `category_path` in the intermediate stage and open the **Select an Option** drop-down menu on the right to find and add the rule box **Classification Mapping**. Choose your Classification Mapping list in **List** and select **Save**.
To let the site display your category-specific attributes in Dataflow, select **Run** in the top-right corner of your view.
This run will fail because you haven't yet mapped all the mandatory attributes, so no data export occurs at this stage. The aim of the run is to import the needed categories and attributes in Dataflow.
Once the site run finishes, the **Classifications** drop-down menu appears in the upper ribbon in Dataflow. Select each category in this drop-down menu to let Dataflow display the relevant category-specific attributes in the export stage. Map all the needed attributes from import to export.
If you can't see the **Classifications** drop-down menu when the site run finishes, try refreshing your page.
Go to **Scheduling** and add a schedule to run your site every 24 hours.See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling) for more information.
Once all the settings are ready, you can send your product data to Meta. Start a site run manually by selecting **Run** in the top-right corner of your view or let your added schedule perform your first site run automatically at the defined time.
Delta files [#delta-files]
The other site you created in your Meta Shops Ads project is going to send product data updates (delta files) to your Meta account. Open it and repeat all the steps you just took in the site that exports your full product catalog. Keep in mind the following modifications:
* In [see the relevant section](#N1685026414810), choose the destination *Meta Shops Ads: Delta Upload*.
* Skip [see the relevant section](#N1685027038044) and [see the relevant section](#N1685027088633).
* In [see the relevant section](#N1685027672771), add a schedule to run your site every hour instead.
Send your price and stock updates to Meta [#send-your-price-and-stock-updates-to-meta]
According to the Meta Shops Ads requirements, you need to send your price and stock updates to Meta every 15 minutes. Create a separate site in your Meta Shops Ads project and follow these steps:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Meta Shops Ads - Price & Stock Update*, hover over it, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Meta Shops Ads - Stock and Price Delta Export v1 - DEV* from the drop-down list, give it a name as desired, and then select **Save**.
In **CMS ID**, enter your commerce account ID.
In **Product Catalog ID**, enter the catalog ID of your relevant catalog in Commerce Manager.
In **Authentication**, select the Meta Shops Ads authentication you have added to your Productsup organization or project previously.
Toggle the **Feedback Import** button to *Off* if you don't want the platform to receive feedback files from Meta.This feature is active by default to let Productsup receive a feedback file from Meta's Graph API in case of errors. This helps to troubleshoot the export setup.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Scroll down on the export setup page to find the *Delta Files* section. Select **Update Files** and then select **Save** to add delta files to your export.
Go to **Dataflow** and select **Meta Shops Ads - Price & Stock Update** from the drop-down menu on the left to map all the needed attributes from import to export.
Go to **Scheduling** to let your site run every 15 minutes. See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling) for more information.
To set up a scheduling interval of 15 minutes, create four (4) schedules with the following setup in **Quick selection** and **Hour(s)**:
In **Minutes**, uncheck the **Random** box and enter `00`, `15`, `30`, and `45` in the four schedules respectively.
Once all the settings are ready, you can send your price and stock updates to Meta. Start a site run manually by selecting **Run** in the top-right corner of your view or let the schedules perform your first site run automatically at the defined time.
Import orders into Productsup and send order data to Meta [#import-orders-into-productsup-and-send-order-data-to-meta]
Import orders from Meta [#import-orders-from-meta]
You can sync your Meta orders with your order management system, such as Shopify, via Productsup. Create a separate site in your Meta Shops Ads project and follow these steps:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Meta Shops Ads - Order Import*, select **Add**, give it a name as desired, and then choose **Continue**.
In **CMS ID**, enter your commerce account ID.
If you want to import orders created within a specific timeframe only, enter the desired dates in **Updated before** or **Updated after**. The expected input format is *YYYY-MM-DD*.
If you want your Productsup site to import orders with specific statuses only, enter them in **Order state** and separate them with commas.The supported order statuses are:
1. `FB_PROCESSING`
2. `CREATED`
3. `IN_PROGRESS`
4. `COMPLETED`
See [Commerce Platform Overview](https://developers.facebook.com/docs/commerce-platform/order-management/overview#order_state) for more information on order statuses and the order flow.
To import specific types of orders only, enter them in **Order filter** and separate them with commas.The supported order types are:
1. `no_shipments` imports orders that you haven't shipped yet.
2. `has_cancellations` imports orders that contain canceled items.
3. `no_cancellations` imports orders that contain no canceled items.
4. `has_refunds` imports orders that contain refunded items.
5. `no_refunds` imports orders that contain no refunded items.
In **Authentication**, select the Meta Shops Ads authentication you have added to your Productsup organization or project previously.
Specify the desired name of the data source in **Description (optional)**.
Select **Save**.
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Find your order management system, add it as an export, set it up, and map the needed attributes in Dataflow.
Choose **Run** in the upper-right corner of the page to let the site import your order data and send it to your order management system.
When you import an order from Meta into Productsup, the order status on Meta changes from `CREATED` to `IN_PROGRESS`.
Send order data to Meta [#send-order-data-to-meta]
To send shipment, cancellation, and refund data to Meta, create three (3) separate sites in your Meta Shops Ads project and follow these steps to add the needed export in each site:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Meta Shops Ads - Order*, hover over one of the following exports, and select **Add**:
1. *Meta Shops Ads - Order Cancellation Export*
2. *Meta Shops Ads - Order Fulfilment Export*
3. *Meta Shops Ads - Order Refund*
Select the name of the added export and choose **Add Destination** to add and set up the following export destinations:
1. For the export *Meta Shops Ads - Order Cancellation Export*, choose the destination *Meta Shops Ads - Order Cancellation Export*.
2. For the export *Meta Shops Ads - Order Fulfilment Export*, choose the destination *Meta Shops Ads - Order Fulfilment Export*.
3. For the export *Meta Shops Ads - Order Refund*, choose the destination *Meta Shops Ads - Order Refund*.
Change the names of the added destinations as desired and select **Save**.
On the setup page of each destination, take these steps:
1. In **CMS ID**, enter your commerce account ID.
2. In **Authentication**, select the Meta Shops Ads authentication you have added to your Productsup organization or project previously.
3. Toggle the **Feedback Import** button to *Off* if you don't want the platform to receive feedback files from Meta.This feature is active by default to let Productsup receive a feedback file from Meta's Graph API in case of errors. This helps to troubleshoot the export setup.
4. Toggle the **Active** button to *On*.
5. Select **Save**.
Go to **Dataflow** from the site's main menu. Choose the added Meta Shops Ads exports in the drop-down menu on the left and map the following attributes from import to export:
| Export name | Export-stage attributes |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *Meta Shops Ads - Order Cancellation Export* | The full list of export-stage attributes: - `facebook_order_id` - `quantity` - `reason_code`See [Cancel order](https://developers.facebook.com/docs/commerce-platform/order-management/cancellation-refund-api#reason_code) for a list of accepted cancellation reason codes. - `reason_description` - `restock_items` - `retailer_id` If you do a full cancellation, the order status on Meta changes to `COMPLETED`. If you cancel an order partially, the order status stays `IN_PROGRESS` until shipped. |
| *Meta Shops Ads - Order Fulfilment Export* | The full list of the mandatory export attributes: - `facebook_order_id` - `item_quantity` - `item_retailer_id` - `tracking_carrier` - `tracking_number` - `fulfillment_location_id` or all of the following: The platform doesn't highlight these attributes as mandatory because they are conditional. Meta requires either `fulfillment_location_id` or the full following list. - `address1` - `address2` - `city` - `country_code` - `postal_code` - `province_code` - `state` - `zip` |
| *Meta Shops Ads - Order Refund* | The platform doesn't highlight the attributes listed below as mandatory because they depend on your refund type. To refund an order in full, you need to send only two (2) attributes to Meta: - `facebook_order_id` - `reason_code`See [Refund order](https://developers.facebook.com/docs/commerce-platform/order-management/cancellation-refund-api#refund_reason_code) for a list of accepted refund reason codes. To refund an order partially, you need to send either this list of attributes: - `deduction_type` - `deduction_amount` - `shipping_refund.amount` - `shipping_refund.currency` - `retailer_id` - `item_refund_amount.amount` - `item_refund_amount.currency` Or this one: - `deduction_type` - `deduction_amount` - `item_refund_quantity` If you plan to do both full and partial order refunds, you should create two (2) separate sites for the export *Meta Shops Ads - Order Refund* and set up the full and partial refund flows separately. |
If your data is ready, select **Run** in the upper-right corner of your view to send order data to Meta.
In your order data sites, the feed structure is product-based, meaning that every row is a product. If an order contains multiple products, those products have the same `facebook_order_id` or `tracking_number`. Based on a unique identifier like this, the site groups all products belonging to one order during export and sends notifications to customers about the order or shipment on the whole, and not about separate items in them.
# Migrate your Google Content API for Shopping export to the multi-threading destination
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Productsup has implemented the multi-threading feature that lets you export the feed updates up to 6 times faster than before.
Previously, you could only use the single-thread approach with destinations such as **Google Content API for Shopping** and **Google Content API for Shopping (single account)** and send updates to Google Merchant Center (GMC) in one bucket one by one. Therefore, for large feeds, the export could take hours.
The multi-threading feature lets the platform combine the updates into multiple buckets and then send them to GMC in parallel.
Benefits of multi-threading feature for you:
. Faster export of product feed updates to GMC. For example, the live tests showed that, with multi-threading, the platform exported updates for 2.6 million products in 1,5 instead of 9 hours.
. Possibility to schedule more frequent updates as the export takes less time. The number of updates still shouldn't exceed the defined quota limit.
. The import or export schedules that depend on the completion of the export *Google Content API for Shopping* can also start earlier than before. Adjust schedule settings if needed.
To let you use the multi-threading feature, we implemented a new destination **Google Content API (single account + multi-thread)**.
The new destination with the multi-threading feature is available for you only if you upload your product feeds to Google Merchant Center via API and for that purpose currently use the export **Google Content API for Shopping** with the destinations such as **Google Content API** or **Google Content API (single account)**.
The multi-threading destination isn't available to the export **Google Merchant Center** that uses destinations such as **Productsup Server**, **Google Merchant Center FTP**, and **Google Merchant Center SFTP**.
Migrate your existing Google Content API for Shopping to the multi-threading destination [#migrate-your-existing-google-content-api-for-shopping-to-the-multi-threading-destination]
You need to migrate your exports to the multi-threading destination by *May 1, 2024*. You can plan to do it at a time and pace comfortable for you. If you don't migrate your exports by May 1, 2024, Productsup will migrate them automatically. The destination *Google Content API for Shopping (single account)* will no longer be available in the platform.
To migrate your **Google Content API for Shopping** export to the multi-threading destination:
Go to **Exports** from the main menu of the site that contains your *Google Content API for Shopping* export.
On the *Exports Overview* page, select your currently active export *Google Content API for Shopping*.
Select **Add Destination**, choose **Google Content API (single account + multi-thread)** from the **Destination** drop-down list, leave the default name in **Name**, and then select **Save**.
Configure your destination:
In **Merchant Center ID**, add the ID of your GMC account. This ID should be the same Merchant Center ID as in the previous destination.
You can go to the export **Overview** page, select **Setup** the previous destination **Google Content API (single account)**, and copy the ID from the **Merchant Center ID**.
With the new multi-threading destination, you don't need Merchant Center Parent ID anymore.
In **Target Country** and **Target Language**, select the same values as in the previous destination.
In **Authentication to use**, select the same authentication as in the previous destination.
Switch **Enable Error Log File** to **On**. This option lets you view the details of the issues during the recent runs in *Error Log*.
Switch **Active** to **On** to activate the destination.
Select **Save**.
You may leave all other fields with the default settings.
Go back to the *Overview* tab of the export *Google Content API for Shopping* and select the **Settings** tab.
Select **;SEMICOLON** in the **CSV Separator** drop-down menu and select **Save**.
Go back to the **Overview** tab and deactivate the previous destination:
Select **Setup** for the previous destination.
Switch **Active** to **Off**.
Select **Save**.
Select **Export this export** or **Run** at the top-right corner of the page to run the export with the new destination.
Monitoring and troubleshooting [#monitoring-and-troubleshooting]
The multi-threading feature has been successfully tested in the development and live environments. However, we recommend monitoring your exports and checking your Google Merchant Center seller center after the migration to ensure that everything is correct.
In rare cases, you may encounter issues such as **daily or per min/request quota is hit** that may cause the export failure. This issue is a known response from Google Content API meaning that the defined limits are consumed, and Google stops receiving updates from the Productsup platform for the given period. This issue may happen when you send millions of updates several times a day for the same subaccount. To prevent this issue, we recommend scheduling exports less frequently or increasing the intervals between the full uploads.
In case of issues or if you need assistance with the migration reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com).
# Add Ceneo export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
*Ceneo.pl* is Poland's most popular comparison site, founded in 2005. Ceneo allows customers compare product offers from more than 18,000 Polish online stores.
Productsup created the integration that lets you export your data feed in XML format to Ceneo.
Set up Ceneo export [#set-up-ceneo-export]
Go to **Exports** from your site's main menu, and select **Add export**.
Search for *Ceneo*, hover over it, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**.
Select the needed destination option from the **Destination** dropdown, and select **Save**. See [Find the most suitable export destination](/docs/help-center/best-practices/find-the-most-suitable-export-destination) to choose a destination.
Select **Save**.
Go to **Dataflow** from the site's main menu and choose the added export from the dropdown in the toolbar.
Map the attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.
For additional images, you must add and map the **img\_i** attribute in the export stage by selecting **Drop or Click to add new attribute**. These attributes may have multiple values separated by a comma (`,`).
If your data is ready, select **Run** or **Export** in the upper right corner of the page. If you don't want to run the entire site, including all active exports set up in it, you can go to **Exports**, select the added *Ceneo* export, and then choose **Export this export**.
# Add Attentive Product Export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Attentive is a US-based SMS marketing platform that lets you send personalized text messages to your customers.
Productsup has built Attentive Product Export that lets you create and update your product catalog on Attentive to use the catalog products for SMS messages to your customers.
Prerequisites [#prerequisites]
To proceed with the Attentive Product Export setup, you need:
. An active Attentive account.
. The API key that you can create in your [Attentive account](https://ui.attentivemobile.com/signin?redir=%2Fintegrations).
Select **Write** in **Product Catalog**.
. A contact of your Customer Success Manager at Attentive. You need to contact them to check if the platform sent or updated the product catalog correctly.
Add and set up the export [#add-and-set-up-the-export]
To add Attentive Product Export in Productsup:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Attentive Product Export*, hover over it, and select **Add**.
On the *Exports* page, select the name of the added export to set it up.
Select **Add Destination**, choose *Attentive* from the drop-down list, give it a name as desired, and then select **Save**.
In **Attentive API Key**, enter the API key you got in your Attentive account to let the Productsup platform authenticate in your Attentive account.
Switch **Sendbox Mode** to **On** if you want to test the export first. Ask your Attentive Customer Success Manager to help you check that the platform exported products correctly. Then, return the setting to **Off** to send the live feed.
Switch **Active** to **On** to activate the destination.
Select **Save**.
Go to **Dataflow** and select your Attentive Product Export from the drop-down menu in the upper ribbon.
Map all the needed attributes from import to export and run the export.
Each attribute in the Dataflow columns acts as a variant of a product. The `product_id` attribute is the identifier that binds different variants into one product.
Various attributes on Attentive can have multiple values and there can be up to 100 variants. These attributes are:
* `product_option`
* `product_attributes`
* `variant_option`
* `variant_attributes`
* `product_images`
By default, you have 3 iterations of the same attributes:
* `product_option1_name`, `product_option2_name`, `product_option3_name`
* `product_option1_position`, `product_option2_position`, `product_option3_position`
* `product_option1_values`, `product_option2_values`, `product_option3_values`
If needed, you can add more attributes with the help of the button **Drop or Click to add new attribute** and use the naming convention such as of the default attributes. For example, `product_option4_name`.
Some fields accept multiple values in a single field. Use `#` as the separator between values.
The following fields support multiple values:
* `product_categories` — for example, `Footwear#Sportswear`
* `product_tags` — for example, `sale#new-arrival`
* `product_collections` — for example, `Summer#Outlet`
* `product_option{N}_values` — for example, `S#M#L#XL`
Verify the catalog export [#verify-the-catalog-export]
The Attentive settings don't let you check if the platform sent or updated the product catalog correctly. Contact your Attentive Customer Success Manager and ask them to check it for you.
Also, Attentive’s API doesn't provide feedback on the status of the product catalog. Therefore, the Productsup platform can't give you any feedback on errors that could have happened during the export. You can check the analyzer tests to ensure your data is correct. See [Analyze your data in Data View](/docs/help-center/map-and-optimize-your-data/data-view/analyze-your-data-in-data-view).
# Add Joor export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Joor is the largest B2B e-commerce platform used by over 380,000 retailers and 14,000 brands to connect and grow sales around the world.
In Productsup, you can add the export *Joor - Product Assets* to send your product images to Joor via API. This export is a delta-based export that sends only the new, changed, or deleted product assets to Joor instead of exporting the entire asset catalog during every site run.
Prerequisites [#prerequisites]
To send product images to Joor, you need:
. A Joor account.
. Authentication data for your Joor account, such as the API secret and key, as well as your account ID, username, and password.
. A data structure in your site that suits the requirements of the Joor export. Every product-asset combination should be a separate row in your site:
* If a product has multiple assets, this product appears in the site in as many rows as there are assets for this product.
* If an asset belongs to multiple products, this asset appears in the site in as many rows as there are products with this image.
Set up Joor - Product Assets export [#set-up-joor---product-assets-export]
Go to **Exports** from your site's main menu, and select **Add export**.
Search for *Joor - Product Assets*, hover over it, and select **Add**.
Go to **Dataflow** from the site's main menu and choose the added export from the dropdown in the toolbar.
Map the attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.The only non-mandatory attribute is `asset_external_id` that can contain your seller-defined image IDs.The mandatory attributes are as follows:
* `asset_filename` should contain a unique name of the image as you want Joor to display it.
* `asset_source_url` should contain the image URL.
* `asset_type` should contain the value *image*. The export doesn't support any other asset types.
* `display_order` should contain a number to arrange the order in which Joor displays all images of one product. If a product has only one image, the value in this attribute should be *1*.
* One of the following attribute options containing product identifiers that connect your assets to the related products.
* If your site has product IDs defined by Joor, you must provide them in `product_id`.
* If your site has seller-defined product IDs, you must provide them in `product_external_id` and `product_identifier`.
Go to **Exports** and select *Joor - Product Assets*.
Select **Add Destination**.
Select *Joor Product Assets* from the **Destination** drop-down menu, and choose **Save**.
Toggle **Sandbox mode?** to *On* if you want to send product images to your Joor sandbox. To send product images to your production organization, leave it *Off*.
If you want to delete all assets that your products already have on Joor and substitute them with new assets, toggle **Replace existing assets?** to *On*. To keep the assets your products already have on Joor, leave it *Off*.
This option only deletes assets for the products featured in your export data. The products that your export data doesn't include keep their existing assets.
In **Joor Client ID** and **Joor Client Secret**, provide your Joor API authentication data.
In **Account ID**, enter the ID of your Joor account. In **Joor Username** and **Joor Password**, enter your Joor account credentials.
In **Batch Size**, enter the desired number of product assets that the platform should send to the Joor API per request. By default, the recommended batch size is `10`.
Leave the **Feedback Import** toggle *On* to let the platform receive feedback files from the Joor API in case of export errors. This helps to troubleshoot the setup.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
If your data is ready, select **Run** or **Export this export** in the upper right corner of the page to let the platform send your product images to Joor via API.
# Add export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Select from a variety of export templates to add exports or set up your custom exports using blank export templates.
Choose you export template from the following categories:
* Search engines
* Comparison shopping
* Shop systems
* Marketing and advertising
* Marketplaces
* Social media
* Retailers and distributors
* PIM systems
* Classification standards
* Custom-built
* Data pools and product databases
* Order sync
* Other
If the export template you are looking for isn't on the list, contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) to request it.
Add export [#add-export]
To add a new export:
Go to **Exports** from your site’s main menu.
Select **Add export** in the top right corner. If you add your first export, select **ADD EXPORT** in the middle of the page.
Select the close icon **X** in the top right corner to return to the Exports page without saving any changes.
Search for the export template name in the search field or choose your export template category from the list on the left.
Select **See all** to unfold a complete list of export templates.
If necessary, sort the results by popularity or alphabet. For that, select **See all** on the right and choose a sorting option from the **Sort by** dropdown.
Select a necessary export template name in the list to open its description.
Not all export templates have descriptions yet. The Productsup team is working on adding them.
You can select one or several export templates:
* To select one (1) export, hover over the necessary export template and select **Add**.
* To select several export templates, select the corresponding checkboxes next to their names. Confirm the choice by selecting **Add exports** at the bottom of the page.
If you don't want to proceed with the chosen export templates, uncheck the box for the number of selected exports or select the trash bin icon.
The *Export Overview* page opens with your export templates already added. Now, you can set up your exports.
Set up your export [#set-up-your-export]
When you add one or more exports, the platform automatically returns you to the *Exports* page, where you can view the list of all added export templates and set them up individually.
Every export's setup page consists of four (4) tabs:
* Overview
* Settings
* Labels, Tags & Sorting
* Pricing
In most cases, you only need to set up the destination in the *Overview* tab.
Overview tab [#overview-tab]
In the export's Overview tab, you can view your export dashboard and add destinations and files.
The export dashboard gives you an overview of your export runs:
* *Last Export* shows the date and time of the previously run export.
* *Next Export* shows the date and time of the next scheduled export if you have set it up .
* *Items* shows the quantity of exported items.
* *Channel* is the name of the export template used for the current export.
To set up your export, you must add a destination in **Destinations**:
Select **Add Destination**.
Select a destination from the dropdown and then edit its name as needed in **Name**.
Select **Save**.
To learn more about destinations, see [Set up an export destination](/docs/help-center/export-data-feeds/set-up-an-export-destination).
You change the file name or limit the number of items per file:
Select **Setup** in the *Files* section.
Enter the desired filename and a valid feed format extension in the **Filename** field. Valid feed formats are `.xml`, `.csv`, `.txt`, `and .tsv`. If you want to compress the file, consider using extensions such as `.bz2`, `.zip`, or `.gz`.
Enter the number of items you want to export per file in the **Limit (Products per File)** field. Here is some guidance:
* To export all items from the file without limits, set the limit to `0`. This means that the export begins with the first item, skipping the table header.
* Enter the target value to limit the number of items in your data feed. Limiting can be helpful in case you want to test and try out a new export. You can limit the number of items, for example, to 100, to avoid sending your entire catalog.
Select **Save**.
To split the data feed into several files:
Select **Add File** in the *File* section.
Enter the desired filename and a valid feed format extension in the **Filename** field. Valid feed formats are `.xml`, `.csv`, `.txt`, `and .tsv`. If you want to compress the file, regard such extensions as `.bz2`, `.zip`, or `.gz`.
Enter the number of items you want to export per file in the **Limit (Products per File)** field.
Select **Save**.
If you add a second feed, you are not exporting to the channel twice. You only split the export into two (2) feeds in equal parts. Or if you set a limit per file, the platform splits the feeds according to the set limits.
For example, if your data feed contains 1,000 items and you set up three (3) files with a 200-item limit, the platform only exports 600 items. The remaining 400 items aren't present in any file. To avoid this situation, set a limit of `0` in your last file to ensure you export all items. If the number of items is less than the sum of all file limits, the platform doesn't update unnecessary files. If you want to receive empty files instead, turn on the *Allow empty files* option in the *Settings* tab. See [Settings tab](#section-idm243459226017834).
If you want to export once as a CSV and once as an XML file, you must set up two (2) separate exports for this.
You can add a dynamic filename with Twig:
Select the **Setup** button in the *Files* section.
Enter the filename in the following format:
* To use the site and export names as dynamic placeholders in the filename:`{{ Site.id ~ "" ~ Export.name | replace({ "/":"" }) }}.txt`
* To add the export name and date, enter the following filename:`{{ Export.name | replace({ " ":"" }) ~ "" ~ "now" | date("Ymd") }}.csv`
Settings tab [#settings-tab]
In the export's Settings tab, you can you can activate the following settings of your export output:
In **CSV Separator**, select the separator.
Leave **CSV Enclosure** selected if you want to enclose data in CSV files containing more than one word or number. Enclosure prevents the platform from incorrectly parsing data when it encounters a delimiter.
Select **Enable Pixel Tracking** to activate a tracking pixel, a small piece of code in the form of a pixel that you implement in your website code. When you select **Enable Pixel Tracking**, the **Tracking column** dropdown appears to let you choose the needed attribute.
Select **Enable Redirect Tracking** to activate redirect tracking, which collects your site ID, export ID, and product ID. It sets a cookie for the conversion pixel.
Select **Shorten Tracking URL** if your channel only accepts a limited number of characters in the tracking URL. When you select **Shorten Tracking URL**, the **Tracking column** dropdown appears to let you choose the needed attribute.
We don't support using plugins any longer but if your output file requires a specific format, such as JSON or XLSX. Take the following steps:
On the export setup page, go to the *Settings* tab, leave the **Export-Plugin** empty and select **Save**.
Open the tab *Labels, Tags & Sorting*, find the section *Export Tags*, and enter the following under **Add new tag**:
1. In **Key**, enter `custom_csv_writer_class`.
2. In **Value**, enter `ProductsUp_Csv_File_Writer_Json`.
Select **Add tag** to save it.
For an Excel XLSX plugin, enter the following value in the **Export-Plugin** field on the export's *Settings* page:
* `\Export\Xlsx`
Contact [support@productsup.com](mailto:support@productsup.com) if you need help with a non-JSON or Excel XLSX plugin.
Select **Allow empty files (0 products)** to let Productsup export empty files. It can be helpful if you create internal reports. For example, you can export a file that reports image URLs that lead to a 404 page. In this case, having an empty file with headers is suitable.
In **Product Uniqueness**, choose the attribute in the dropdown that you consider unique for your export and select **Add**. The platform prevents duplicate values and exports unique items. You can see **id** selected by default, but you can remove it and select one or more attributes of your choice.
Select **Hide unmapped attributes on the Intermediate** to hide unmapped attributes on the intermediate stage.
Select **Save**.
In some specific exports, such as blank exports, you may find the following settings:
Select **Export as XML** to send your file as XML. Remember to change the filename extension to *.xml*.
Select **XSL Template for XML Export** to use an XSL template as a style sheet for your XML export.
Use **Add Header before Main Header in CSV (optional)** and **Add Header after Main Header in CSV (optional)** if your channel requests additional headers before or after the CSV attribute's header name.
You can use these settings in *Blank Export (empty)* and *Blank Export (with ID)*.
Request the on-demand setting **Replace Main Header in CSV (optional)** if you need to replace the header row of your CSV export file with a header that suits your needs.
**Replace Main Header in CSV (optional)** is available in one export only: *Blank Export (with ID)*.To have the **Replace Main Header in CSV (optional)** filed in any other export, contact [support@productsup.com](mailto:support@productsup.com) or your Customer Success Manager. This service is free of charge.
To replace the header row in your CSV export file:
Go to **Exports** from your site's main menu and select the needed export.
Select the **Settings** tab.
In **Replace Main Header in CSV (optional**), enter your new header row and separate the names of the attributes with a comma (`,`). The platform omits the commas in the output file.For example, enter the string *product\_ID,product\_title,price* for the CSV export file to contain the header row `product_IDproduct_titleprice`.If you enter the string *product\_ID, product\_title, price,* the platform outputs an export file with the header row `product_ID product_title price`.
You can use empty and dynamic attribute names in **Replace Main Header in CSV (optional)**:
1. Empty attribute names.You can enter a space character instead of the attribute's name in between commas if you need an attribute without a name. For example, enter *product\_ID, ,price* for the CSV export file to contain the header **product\_ID price**.
2. Dynamic attribute names.If you need an attribute to contain dynamic data, such as today's date, you can enter a Twig expression instead of the attribute's name in between commas. For example, enter *product\_ID, \{\{ "now"|date("m/d/Y") }}, price* for the CSV export file to contain the header **product\_ID 06/22/2022 price**.
Select **Save**.
Labels, Tags & Sorting tab [#labels-tags--sorting-tab]
In the export's Labels, Tags & Sorting tab, you can set up labels, tags, and sorting for your export.
. Labels.If you have many different exports, labels help you categorize them. You can later use these labels as filters in Exports. To add a label:
Go to **Exports** from your site's main menu and select the export you want to modify.
Select the **Labels, Tags & Sorting** tab.
Add one or more labels separated by a comma (`,`) in **Labels**.
Select **Save**.Once you've created a label(s), the *Labels* dropdown appears in the *Exports* page, and you can search for your exports with particular labels:
Go to **Exports** from your site’s main menu. If any export has a label, you can see it below the export's names.
Select **Labels** and choose the desired label(s) from the dropdown. Select **Apply**.
. Export Tags.*Export Tags* let you distinguish attribute titles for each exported item.
Go to **Exports** from your site's main menu and select the export you want to modify.
Select the **Labels, Tags & Sorting** tab.
In the *Export Tags* section, enter **Key** and **Value**.
Select **Add Tag**.
You can also use **Predefined Tags** from an external system by connecting to it via the chosen authentication from the dropdown. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) to set up authentication with an external system.
Here are two examples of the key and value entries to get the desired outcome:Desired outcome #1: BMEcat without CDATA ( `` ) -
* Key: *custom\_xml\_writer\_class*
* Value: *ProductsUp\_Xml\_File\_Writer\_BMEcatWithoutCDATA*
* Output result: `Here is the value from the attribute`
Desired outcome #2: Show CSV output with enclosures ( `‘’ or ““ or ||` ) -
* Key: *custom\_csv\_writer\_class*
* Value: *ProductsUp\_Csv\_File\_Writer\_AllEnclosured*
* Output result: `‘row1’;’row2’;’size’;’price’;’product_id’`
. Sorting.*Sorting* lets you define the order of items in the export based on a specific attribute, mode, and direction.
Choose an attribute in **Select Column**.
Choose a sorting mode in **Select Mode**, which can be *Alphabetical*, *Numerical*, or *Natural*.
Choose a sorting order in **Select Direction**, which can be either *Ascending* or *Descending*.
Select **Add Sorting Rule**.
Pricing tab [#pricing-tab]
Add a pricing model for your export to calculate costs in the *Reporting* page.
Build your export from scratch [#build-your-export-from-scratch]
In some cases, the existing export templates may not cover your needs. Then, you can build an export from scratch using blank exports. There are four (4) types of blank exports: Blank Export (empty), Blank Export (with ID), Delta Blank Export, and Export2Datasource Blank. See [Build your exports from scratch](/docs/help-center/export-data-feeds/add-export/build-your-exports-from-scratch) for more information.
To add a new blank export:
Go to **Exports** from your site’s main menu and select **Add export**.
Select the necessary blank export template in the gray banner under the search field.
After adding a blank export template, you need to set it up. Each blank export has its setup peculiarities. See [Build your exports from scratch](/docs/help-center/export-data-feeds/add-export/build-your-exports-from-scratch) for more information.
Edit an export name [#edit-an-export-name]
You can modify the export's name. This is helpful when you use the same export template for different exports. For example, you can differentiate *Google Merchant Center*, *Google Merchant Center (clothes only)*, etc.
To modify an export's name:
Go to **Exports** from your site's main menu and select the cogwheel icon (**⚙**) next to the export you want to modify.
Select the **Edit** icon next to the export's name.
Modify the export's name and add a short description.
Select the checkmark icon to save your modifications.
View the export run status and reorder the export attributes [#view-the-export-run-status-and-reorder-the-export-attributes]
When you are in any export setup page, you can see a specific main menu on the left from where you can go to the **Status** or **Order Attributes** pages, or return to the **Setup** page.
Status page [#status-page]
The Status page becomes available in the main menu when you are in any export setup page.
The Status page lets you see the following information about all past export runs:
* *Export Started* shows the data and time when the export run started.
* *Export Finished* shows the data and time when the export run completed.
* *Number of exported Products* shows the number of items exported during the export run.
Order Attributes page [#order-attributes-page]
The *Order Attributes* page becomes available in the main menu when you are in any export setup page. You can change the order of attributes in your final output feed by selecting and dragging them up and down as needed.
The colors of the attributes have specific meanings:
* When the attributes are in their initial order, they are green.
* When you change the order, the attributes turn black.
To reset the order to its original state, select **Reset column order to initial state**.
When you change the order of the attributes, you can see the result in the export stage of Dataflow. To see it:
Go to **Dataflow** and select the needed export from the dropdown on the left.
Select **View** in the upper ribbon and select **Sort by**.
Select **Export Order** in the dropdown. Check the export stage in the Dataflow.
# Add Facebook Dynamic Ads (Delta Upload) export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The *Facebook Dynamic Ads (Delta Upload)* export sends changed products to [Facebook Commerce Manager](https://business.facebook.com/commerce/), one of Meta Business Manager tools, via the Facebook Marketing API. This export uses delta files, which means it sends only new, updated, and deleted products to Facebook instead of the entire catalog. The export doesn't send unchanged products to Commerce Manager, which helps reduce site-running times.
With your product catalog available in Commerce Manager, you can advertise your products to wide audiences across the entire Meta ecosystem based on users' interests and previous behavior. The Meta ecosystem includes Facebook, Instagram, Messenger, and the Audience Network.
See [Add Facebook Dynamic Ads export](/docs/help-center/export-data-feeds/add-export/add-facebook-dynamic-ads-export) for the difference between this export and other Facebook exports available in Productsup.
Prerequisites [#prerequisites]
To send your product catalog to Facebook Commerce Manager using the export *Facebook Dynamic Ads (Delta Upload)*, you need:
. A Facebook business account with at least one product catalog created in it.
. The ID of the catalog where you want to send your products.
. A Facebook authentication in your Productsup organization.To add a Facebook authentication:
Go to **Authentication** from the organization's, project's, or site's menu and select **Add Authentication**.
In **Type**, select *Facebook*, give it a desired name, and select **Next**.
Select **Connect** for Productsup to redirect you to a Facebook page where you can give Productsup access to your Facebook business account. Once ready, Facebook redirects you back to Productsup. Close the confirmation window to proceed.
Set up the Facebook Dynamic Ads (Delta Upload) export [#set-up-the-facebook-dynamic-ads-delta-upload-export]
Go to **Exports** from your site's main menu, and select **Add export**.
Search for *Facebook Dynamic Ads (Delta Upload)*, hover over it, and select **Add**.
Go to **Dataflow** from the site's main menu and choose the added export from the dropdown in the toolbar.
Map all relevant attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.There are only 9 mandatory attributes for Facebook:
Go to **Exports** and select *Facebook Dynamic Ads (Delta Upload)*.
Select **Add Destination**.
Select *Facebook Marketing API: Data Feed Delta* from the **Destination** drop-down menu, and choose **Save**.
In **Product сatalog id**, enter the ID of the product catalog in Commerce Manager where you want to send your products.
If you have already created an authentication for Facebook in your current site, project, or organization, you can choose it in the **Facebook authentication** drop-down menu. If not, see [Prerequisites](#N1736181018845).
Leave the **Feedback import** toggle *On* to let the platform receive feedback files from the Facebook Marketing API in case of export errors. This helps to troubleshoot the setup.
Ignore the toggle **Replace instead of Patch**. It is a legacy setting that no longer affects how the destination works.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Go to **Data View**. In the top ribbon, select *Readiness* from the **Overview** drop-down menu to see what data transformations are necessary to meet Facebook's product data requirements. See [Analyze your data in Data View](/docs/help-center/map-and-optimize-your-data/data-view/analyze-your-data-in-data-view) for more information on using the Analyzer feature.
If your data is ready, select **Run** or **Export** in the top-right corner of the page.
If the run finishes with issues, you can go to **Error Log** to troubleshoot.
Go to your Facebook business account to check that Facebook has successfully uploaded all your product data changes to the needed catalog. In case of issues, get back to Productsup and go to **Data Sources** to access Facebook's feedback about your export in the additional data source *Feedback data from destination Facebook Marketing API: Data Feed Delta*.
This additional data source is only available if you have turned on the setting **Feedback import**.
# Add TikTok Product Catalog API export
import { Step, Steps } from "fumadocs-ui/components/steps";
Use the TikTok Product Catalog API export template to upload products to your product catalog. The export uses delta logic, which means that it exports only updated data instead of the entire product feed data.
See [TikTok for Business Developers](https://ads.tiktok.com/marketing_api/docs?id=1701890909484033) for more information about TikTok API for Business.
Add and set up the export [#add-and-set-up-the-export]
To add the TikTok API export in Productsup:
Go to **Exports** from your site’s main menu and select **ADD EXPORT**.
Search for *TikTok Product Catalog API* , hover over it, and select **Add**.
On the **Exports** page, select the name of the added export template to set it up.
Select **Add Destination** and choose *TikTok Business Center API* from the dropdown. Give it a name as desired, and select **Save**.
Enter your TikTok Ads Manager organization ID in **TikTok Business Center ID**.
In **Catalog ID**, enter your TikTok catalog ID. The destination searches for catalogs without an ID if this field is left empty.
Enter a name to locate your catalog in **Catalog Name**. The platform attempts to find a catalog with a matching name, country, and currency.
Specify your locale in **Target Country**.
Select the currency of your locale in **Currency**.
If a catalog doesn't exist, the platform automatically creates one when you select **Create Catalog**.
In **Authentication to use**, select an existing authentication from the dropdown or create a new TikTok authentication by selecting **Add New Authentication**.
* To add a new authentication, the platform then redirects you to TikTok once you select **Type** and enter the **Name** of your authentication. Then, select **Next** and **Connect** and enter your TikTok credentials to proceed.
If you want an error file returned to the platform once your data export finishes, switch **Feedback import** to **On**. If not, skip this step and go to step [15](#N1630676389653).
Select the attribute where you want to receive a feedback import file in **Main feed connection column**.
Enter the attribute that connects to your feedback import in **Feedback file connection column**.
Switch **Active** to *On* to activate the destination.
Select **Save**.
# Migrate your Google Content API export to Merchant API (single account)
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Google is shutting down the Content API for Shopping on August 18, 2026, in favor of the new Merchant API (generally available since July 2025). If you use a Content API-based destination to export your product data to Google Merchant Center, you need to migrate to the Merchant API destination before that date to keep your exports running.
This migration is mandatory, but full feature parity is maintained and your export templates require no changes. You only need to add the new destination, configure it, and disable the old one.
Throughout this guide, **data source** refers to a data source (feed) as configured in Google Merchant Center — not a Productsup data source — unless explicitly labeled **Productsup data source** or **feedback data source** (both of which are Productsup entities used in the feedback-file workflow described in [Enable the feedback file](#enable-the-feedback-file)).
Scope [#scope]
This migration covers Content API to Merchant API destinations only. If you deliver your Google feed via SFTP or FTP, this guide does not apply to you. Moving from SFTP to API is a separate change that uses different export templates and isn't required as part of this migration.
Choose your data source strategy (optional) [#choose-your-data-source-strategy-optional]
We recommend keeping the same data source (feed) you already use: map **Feed Label**, **Content Language**, and **Default Currency Code** to the correct target as described in this guide. This approach requires no manual intervention in Google Merchant Center.
This matches Google's "Keep existing Content API data sources" option: data sources created with the Content API for Shopping remain fully compatible with the Merchant API. See [Choose your data source strategy](https://developers.google.com/merchant/api/guides/compatibility/data-sources#choose-data-strategy) in Google's documentation for more information.
Destination name mapping [#destination-name-mapping]
The following table maps the old destination to its Merchant API replacement.
| Old destination (Content API) | New destination (Merchant API) |
| :------------------------------ | :----------------------------------- |
| Google Content API for Shopping | Google Merchant API — single account |
What changes in the destination settings [#what-changes-in-the-destination-settings]
The destination configuration has changed. The **Target Country** and **Target Language** dropdowns are replaced by three free-text fields.
Before, with the Content API destination:
| Field | Example value |
| :----------------------------- | :--------------------- |
| **Target Country** (dropdown) | *United Arab Emirates* |
| **Target Language** (dropdown) | *English* |
After, with the Merchant API destination:
| Field | Description | Example value |
| :------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- | :------------ |
| **Feed Label** | Replaces Target Country. Uppercase ISO country code. Maximum 20 characters (A–Z, 0–9, hyphen, underscore). Immutable after feed creation | `AE` |
| **Content Language** | Replaces Target Language. ISO 639-1 two-letter code in lowercase. Google validates this server-side and flags mismatches | `en` |
| **Default Currency Code** | New field. ISO 4217 three-letter uppercase currency code. See the field mapping table for valid values per country | `AED` |
Use the ISO 3166-1 alpha-2 country code in uppercase as your **Feed Label** (for example, `AE`, `ES`, `GB`) to keep it consistent with how Merchant Center identifies data sources and to ensure you continue pushing to the same primary data source. This value is immutable once the data source is created, so confirm it before saving.
Example: United Arab Emirates / English [#example-united-arab-emirates--english]
| Old setting | Old value | New field | New value |
| :-------------- | :--------------------- | :-------------------- | :-------- |
| Target Country | *United Arab Emirates* | Feed Label | `AE` |
| Target Language | *English* | Content Language | `en` |
| — | — | Default Currency Code | `AED` |
Full field mapping reference [#full-field-mapping-reference]
Use this table to find the correct values when you configure the new destination. **Feed Label** uses the uppercase ISO country code, **Content Language** uses the lowercase ISO 639-1 code, and **Default Currency Code** uses the uppercase ISO 4217 code.
| Old: Target Country | Feed Label | Content Language(s) | Default Currency Code |
| :------------------- | :--------- | :------------------ | :-------------------- |
| Argentina | `AR` | `es` | `ARS` |
| Australia | `AU` | `en` | `AUD` |
| Austria | `AT` | `de` | `EUR` |
| Bahrain | `BH` | `ar` | `BHD` |
| Belarus | `BY` | `ru` | `BYN` |
| Belgium | `BE` | `fr` / `nl` / `de` | `EUR` |
| Brazil | `BR` | `pt` | `BRL` |
| Canada | `CA` | `en` / `fr` | `CAD` |
| Chile | `CL` | `es` | `CLP` |
| Colombia | `CO` | `es` | `COP` |
| Czechia | `CZ` | `cs` | `CZK` |
| Denmark | `DK` | `da` | `DKK` |
| Ecuador | `EC` | `es` | `USD` |
| Egypt | `EG` | `ar` | `EGP` |
| Ethiopia | `ET` | `en` | `ETB` |
| Finland | `FI` | `fi` / `sv` | `EUR` |
| France | `FR` | `fr` | `EUR` |
| Georgia | `GE` | `ka` | `GEL` |
| Germany | `DE` | `de` | `EUR` |
| Ghana | `GH` | `en` | `GHS` |
| Greece | `GR` | `el` | `EUR` |
| Hong Kong | `HK` | `zh` / `en` | `HKD` |
| Hungary | `HU` | `hu` | `HUF` |
| India | `IN` | `en` / `hi` | `INR` |
| Indonesia | `ID` | `id` | `IDR` |
| Ireland | `IE` | `en` / `ga` | `EUR` |
| Israel | `IL` | `he` | `ILS` |
| Italy | `IT` | `it` | `EUR` |
| Japan | `JP` | `ja` | `JPY` |
| Jordan | `JO` | `ar` | `JOD` |
| Kazakhstan | `KZ` | `ru` | `KZT` |
| Kenya | `KE` | `en` | `KES` |
| Kuwait | `KW` | `ar` | `KWD` |
| Lebanon | `LB` | `ar` | `LBP` |
| Malaysia | `MY` | `ms` / `en` | `MYR` |
| Mauritius | `MU` | `en` / `fr` | `MUR` |
| Mexico | `MX` | `es` | `MXN` |
| Netherlands | `NL` | `nl` | `EUR` |
| New Zealand | `NZ` | `en` | `NZD` |
| Nigeria | `NG` | `en` | `NGN` |
| Norway | `NO` | `no` | `NOK` |
| Oman | `OM` | `ar` | `OMR` |
| Paraguay | `PY` | `es` | `PYG` |
| Peru | `PE` | `es` | `PEN` |
| Philippines | `PH` | `en` / `tl` | `PHP` |
| Poland | `PL` | `pl` | `PLN` |
| Portugal | `PT` | `pt` | `EUR` |
| Romania | `RO` | `ro` | `RON` |
| Russia | `RU` | `ru` | `RUB` |
| Saudi Arabia | `SA` | `ar` | `SAR` |
| Singapore | `SG` | `en` / `zh` | `SGD` |
| Slovakia | `SK` | `sk` | `EUR` |
| South Africa | `ZA` | `en` | `ZAR` |
| South Korea | `KR` | `ko` | `KRW` |
| Spain | `ES` | `es` | `EUR` |
| Sweden | `SE` | `sv` | `SEK` |
| Switzerland | `CH` | `de` / `fr` / `it` | `CHF` |
| Taiwan | `TW` | `zh` | `TWD` |
| Tanzania | `TZ` | `sw` / `en` | `TZS` |
| Thailand | `TH` | `th` | `THB` |
| Turkey | `TR` | `tr` | `TRY` |
| Uganda | `UG` | `en` | `UGX` |
| Ukraine | `UA` | `uk` | `UAH` |
| United Arab Emirates | `AE` | `ar` / `en` | `AED` |
| United Kingdom | `GB` | `en` | `GBP` |
| United States | `US` | `en` / `es` | `USD` |
| Uruguay | `UY` | `es` | `UYU` |
| Uzbekistan | `UZ` | `uz` | `UZS` |
| Vietnam | `VN` | `vi` | `VND` |
| Zambia | `ZM` | `en` | `ZMW` |
| Zimbabwe | `ZW` | `en` | `USD` |
Migrate to the Merchant API destination [#migrate-to-the-merchant-api-destination]
Take a few screenshots of your current product output before you start. The new destination has been validated internally, but a before-and-after reference lets you confirm it produces identical results, and gives you something to compare against if anything looks unexpected.
Go to **Destinations** and add *Google Merchant API — single account*.
Configure the destination: enter **Feed Label**, **Content Language**, and **Default Currency Code** using the field mapping table, and complete all other required credentials.
Switch **Active** to **On** and select **Save**.
Disable the previous destination *Google Content API for Shopping* and select **Save**.
Run the site to push your data through the new destination and confirm the output looks correct.
No further action is needed. Export templates require no changes.
Important settings to check before and during the switch [#important-settings-to-check-before-and-during-the-switch]
Enable the feedback file [#enable-the-feedback-file]
Switch on the feedback file to keep visibility into actionable insights if products get rejected due to data quality issues. If something goes wrong, the feedback file is available as an additional downloadable Productsup data source, showing what's failing and why.
Some clients don't use the feedback file, so sites can fail silently. This isn't caused by the migration — it's caused by unrelated data quality issues that only the feedback file would surface.
If you enable the feedback file and start seeing more errors than before, two separate things are usually happening:
. **Real product-level errors from Google become visible.** Many accounts never had the feedback file enabled under the Content API, so Google's product-level rejections went unnoticed. In most cases, these errors are pre-existing catalogue or data-quality issues that existed before the migration.
. **Unmapped-items notifications appear as separate UI noise.** The feedback file arrives as an additional feedback data source in Productsup and isn't automatically mapped to your main Productsup data source. This can trigger extra notifications that look like errors but aren't actual export problems. To reduce this noise, map ID to ID from the feedback data source to your main Productsup data source, or snooze the notification on the feedback data source.
Use Force Full Upload and Cleanup with care [#use-force-full-upload-and-cleanup-with-care]
Only switch on **Force Full Upload** or **Cleanup** when there's a clear, identified need — for example, when Productsup and Google Merchant Center are de-synced and products still exist in GMC that Productsup has no record of, and only when Productsup is the single source of truth for that data source (feed). Leaving these options on unnecessarily increases the risk of hitting your daily quota limits. Disable them again as soon as the sync is back to normal.
Set the Full Upload Interval correctly [#set-the-full-upload-interval-correctly]
Google removes products from Merchant Center if they haven't been refreshed within 28 days. **Full Upload Interval** controls how often Productsup sends your entire catalogue to Google as a full upload, rather than only new or changed products. This refreshes every product's timestamp, including unchanged ones, and prevents Google from dropping them after 28 days.
Do not set **Full Upload Interval** to `0`, especially on a schedule that runs daily. A value of `0` forces a full upload on every run, which removes the delta export benefit and significantly increases the risk of hitting your daily quota.
The more often you export, the larger this value should be, closer to 28. The less often you export, the smaller it should be, for example `7`–`14`, so unchanged products still get refreshed before Google's 28-day cutoff.
Do not use Dry Run for this migration [#do-not-use-dry-run-for-this-migration]
**Dry Run** is intended for new clients who are still testing their data setup before going live. If your site is already running in production, using Dry Run interferes with your normal delta and export flow. Add and activate the new destination as described in [Migrate to the Merchant API destination](#migrate-to-the-merchant-api-destination) instead.
After the switch [#after-the-switch]
Once you've switched, the data source may still be labeled *Content API* inside Google Merchant Center.
This is expected and won't affect your exports. The label in Merchant Center hasn't been renamed yet, but the underlying integration is already Merchant API and continues to work after August 18, 2026.
To confirm the switch was successful, check that:
* Products in the data source (feed) have an update timestamp after the switch.
* There has been a successful run since the switch.
* The feedback file shows no issues.
Fallback procedure [#fallback-procedure]
If something goes wrong after switching, restore your previous setup:
Disable the new *Google Merchant API — single account* destination.
Re-enable the old *Google Content API for Shopping* destination.
Restart the delta on the site and run it again to restore normal data flow.
Contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) immediately to report the issue.
Act quickly. The faster you switch back, the shorter the gap in data delivery.
FAQ [#faq]
Do I need to update my export templates? [#do-i-need-to-update-my-export-templates]
No. Export templates for *Google Content API for Shopping* remain unchanged. Only the destination changes.
What actually changes in the destination configuration? [#what-actually-changes-in-the-destination-configuration]
The **Target Country** and **Target Language** dropdowns are replaced by three free-text fields: **Feed Label** (for example, `AE`), **Content Language** (for example, `en`), and **Default Currency Code** (for example, `AED`). See [What changes in the destination settings](#what-changes-in-the-destination-settings) for the full breakdown and the field mapping table for all 71 countries.
Will my data source in Merchant Center change? [#will-my-data-source-in-merchant-center-change]
No. If you follow this guide and use the recommended Feed Label, an uppercase ISO country code, Productsup pushes to the same primary data source (feed) as before. No manual action is needed in Merchant Center. See [Choose your data source strategy](#choose-your-data-source-strategy-optional).
After the switch, my data source in Merchant Center is still labeled Content API. Did the migration fail? [#after-the-switch-my-data-source-in-merchant-center-is-still-labeled-content-api-did-the-migration-fail]
No, this is expected. Even though the data source may still show as *Content API* in the Merchant Center UI, you're already exporting via the new Merchant API destination under the hood, and it continues working past August 18, 2026, as long as you've switched to *Google Merchant API — single account* in Productsup. See [After the switch](#after-the-switch).
Why are we still using Google Content API export templates? [#why-are-we-still-using-google-content-api-export-templates]
This is intentional. The Merchant API destination was built to work with your existing Content API export templates, so you don't need to change them now or in the future.
Do I still need to choose between the single-account and multi-threading destinations? [#do-i-still-need-to-choose-between-the-single-account-and-multi-threading-destinations]
No. The new *Google Merchant API — single account* destination handles this automatically. It's a unified solution that replaces both the *Google Content API (single account)* and *Google Content API (single account + multi-thread)* destinations, so you no longer need to choose between them.
What happens if I don't migrate by August 18, 2026? [#what-happens-if-i-dont-migrate-by-august-18-2026]
The Content API stops accepting requests and your exports fail until you switch to a Merchant API destination.
What if I only use one feed? [#what-if-i-only-use-one-feed]
No additional action is needed. Data is pushed to your main catalogue automatically.
What is the correct Feed Label value? [#what-is-the-correct-feed-label-value]
Use the ISO 3166-1 alpha-2 country code in uppercase, for example `GB`, `ES`, `AE`. It must match the feed label configured in Merchant Center. This value cannot be changed after the data source (feed) is created.
How do I confirm the switch was successful? [#how-do-i-confirm-the-switch-was-successful]
Check that products in the data source (feed) have an update timestamp after the switch, that there's been a successful run since, and that the feedback file shows no issues, or only pre-existing issues unrelated to the migration. See [After the switch](#after-the-switch).
What if something goes wrong after switching? [#what-if-something-goes-wrong-after-switching]
Follow the [Fallback procedure](#fallback-procedure): disable the new Merchant API destination, re-enable the old Content API destination, restart the delta, run again, and contact us immediately. Act quickly, since the faster the fallback, the shorter the gap in data delivery.
Should I turn on Force Full Upload or Cleanup during the switch? [#should-i-turn-on-force-full-upload-or-cleanup-during-the-switch]
Only if there's a clear, identified need, for example if Productsup and Google Merchant Center are de-synced and Productsup is the single source of truth for that data source (feed). Otherwise, leave them off. See [Use Force Full Upload and Cleanup with care](#use-force-full-upload-and-cleanup-with-care).
What should Full Upload Interval be set to, and why does it matter? [#what-should-full-upload-interval-be-set-to-and-why-does-it-matter]
Never `0`. Google removes products that haven't been refreshed in 28 days, and Full Upload Interval refreshes unchanged products so they aren't dropped. As a rule of thumb, the more frequently your site runs, the higher this number should be, closer to 28. The less frequently it runs, the lower it should be, for example `7`–`14`. See [Set the Full Upload Interval correctly](#set-the-full-upload-interval-correctly).
I'm seeing frequent internal_error responses in the feedback file. What's going on? [#im-seeing-frequent-internal_error-responses-in-the-feedback-file-whats-going-on]
The Merchant API is still going through some instability on Google's side. `internal_error` and similar transient failures are typically temporary issues on Google's side rather than something caused by your setup or by Productsup. See Google's [Merchant API known issues](https://developers.google.com/merchant/api/known-issues) for current known issues.
# Add TikTok Shop exports
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
TikTok Shop provides a new, native checkout experience for TikTok users and lets them shop, order, and pay without leaving the TikTok app. This leads to a smoother shopping experience, higher conversion rates, and more transparent ad performance, which yields a higher return on ad spend. TikTok Shop is currently available in the United States, the United Kingdom, Spain, France, Germany, and Italy.
Currently, Productsup can support you in selling your products on TikTok Shop only in the UK, Germany, and the US.
To let you sell your products on TikTok Shop, Productsup has built an ecosystem that sends product and order data to TikTok Shop and imports order data from TikTok Shop into Productsup:
. \*TikTok Shop - Product Catalog API (US)\*This export creates, updates, and deletes products on TikTok Shop via API for the US market and contains the attributes relevant to products of all product categories. When setting up this export, you also use multiple category-specific attributes that let you send products of relevant product categories to TikTok Shop. This export sends only delta updates to TikTok Shop instead of exporting the entire product catalog during every site run.
. \*TikTok Shop - Product Catalog API (UK)\*This export creates, updates, and deletes products on TikTok Shop via API for the UK market and contains the attributes relevant to products of all categories. When setting up this export, you also use multiple category-specific attributes that let you send products of relevant product categories to TikTok Shop. This export sends only delta updates to TikTok Shop instead of exporting the entire product catalog during every site run.
. TikTok Shop - Product Catalog API (DE)This export creates, updates, and deletes products on TikTok Shop via API for the German market. When setting up this export, you also use multiple category-specific attributes that let you send products of relevant product categories to TikTok Shop. Currently, it supports only a limited number of categories under *Health & Beauty*. Contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) to request the necessary categories. This export sends only delta updates to TikTok Shop instead of exporting the entire product catalog during every site run.
. *TikTok Shop - Shipment Notifications API*This export sends shipping updates to TikTok Shop via API to let you send tracking information to TikTok and inform customers on TikTok that you shipped their orders. This export sends only new shipment data to TikTok Shop instead of sending the entire product catalog during every site run.
. *TikTok Shop Order Import*This API-based data source imports orders from TikTok Shop into Productsup to let you send the order data to your order management system.
Prerequisites [#prerequisites]
To set up the TikTok Shop ecosystem in Productsup, you need:
. Product variants in your product data.Your data should support product variants, which means multiple rows in your data source can represent one main product that varies in size, color, model, etc.All products in your data feed must have **product\_id** and **parent\_id**. The **product\_id** attribute uniquely identifies product variants, and the **parent\_id** attribute links all product variants to their main product.If a product doesn't have variants, it still must have the **parent\_id** attribute. It can just have the same value as the **product\_id** attribute.See [Mind product variants and their attributes](#section-idm243374369527850) for more information.
If your data doesn't support product variants and doesn't have the needed main product and variant IDs, you need to optimize your data in Productsup to ensure that it meets the TikTok Shop requirements.
. A project in your Productsup organization where you are going to create three (3) sites, pushing and pulling data from TikTok Shop. In this separate project, you need to create a separate site for each TikTok Shop export and data source.
This is a recommended option. If a separate TikTok Shop project doesn't fit your overall organization structure, you can ignore this advice.
. A TikTok seller account and a shop set up on TikTok Shop. See [Set Up TikTok Shop Using TikTok Seller Center](https://ads.tiktok.com/help/article/set-up-tiktok-shop-using-tiktok-seller-center?lang=en) for more information.
. A list of all TikTok categories you want to sell products in.
This integration has [category-specific attributes exports](/docs/help-center/glossary#N68b809d75a5fd). Productsup supports only some categories by default. But we can add missing categories upon request. It may take around two weeks to add support for your request. To request the necessary categories or countries for this integration, contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) and provide the following information:
* List of categories. See [Product Categorisation](https://seller-sg.tiktok.com/university/essay?knowledge_id=7643185937581825\&from_article=1\&identity=1) for more information on choosing the right TikTok Shop product categories.
* List of countries. Now, we only support the UK, Germany, and the US.
. An approval from TikTok to sell products of specific categories and brands. Some brands and categories on TikTok Shop are invite-only, so you need to reach out to TikTok to get their approval to work with the categories and brands that aren't publicly available.
. A TikTok Shop authentication created on the project or organization level to use across all TikTok Shop sites. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) for more information.Add this authentication as follows:
1. Go to **Authentication** from your organization's or project's menu and select **ADD AUTHENTICATION**.
2. In **Type**, select the needed authentication type based on your country of interest, give it a custom name as desired, and select **Next**:
* Select *TikTok Shop US Authentication* if you want to sell products on the US market.
* Select *TikTok Shop Non-US Authentication* if you want to sell products on the UK or German markets.
3. Select **Connect** for Productsup to redirect you to a TikTok account page where you can give Productsup access to your account. Follow the instructions on TikTok to connect the systems.
|
|
|
| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
4. Once ready, TikTok redirects you back to Productsup to finish the authentication process. Close the confirmation window in Productsup to proceed.
Send products to TikTok Shop [#send-products-to-tiktok-shop]
To send your products to TikTok Shop in the US, Germany, or the UK, you first need to add and set up the export *TikTok Shop - Product Catalog API (US)*, *TikTok Shop - Product Catalog API (DE)*, or *TikTok Shop - Product Catalog API (UK)* and create a *Partner Taxonomy Mapping* list for your category attribute.
Your next steps depend on what attributes you want to send to TikTok Shop. If you plan to send any of the following attribute types, you need to take additional steps to set them up:
* The brand attribute
* Attributes that require predefined values
* Multi-value attributes
* Product variant attributes
See the following sections for information on setting up the export itself and working with each attribute type listed above.
To see what data in your feed doesn't meet the export channel requirements, you can use the Analyzer feature. See \[component:65264] for more information on identifying the data that needs optimization.
See [TikTok Shop Partner Center API Documents](https://partner.tiktokshop.com/doc/page/262784?external_id=262784) for reference on TikTok Shop's requirements for each attribute.
Add and set up your TikTok Shop export [#add-and-set-up-your-tiktok-shop-export]
In the site dedicated to the TikTok Shop export, add and set up the needed export as follows:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for the needed export based on your country of interest, hover over it, and select **Add**:
* Search for and add *TikTok Shop - Product Catalog API (US)* if you want to sell products on the US market.
* Search for and add *TikTok Shop - Product Catalog API (UK)* if you want to sell products on the UK market.
* Search for and add *TikTok Shop - Product Catalog API (DE)* if you want to sell products on the German market.
On the Exports page, select the name of the added export.
Select **Add Destination**, choose *TikTok Shop Export Products* from the dropdown, give it a name as desired, and then select **Save**.
In **Authentication**, select the TikTok Shop authentication you have added to your Productsup organization or project.
To let the platform create a file and log all calls to the TikTok Shop API, toggle the **Log API calls** button to *On*. You can also toggle **Log headers of API calls** to *On* to let the logs feature request and response headers.
You can use these settings to troubleshoot your export setup on demand, but you shouldn't use them permanently because they slow down the export process.
Toggle the **Enable Feedback File** button to *Off* if you don't want the platform to receive feedback files from TikTok.This feature is active by default to let Productsup receive a feedback file from the TikTok Shop API in case of export errors. This helps to troubleshoot the setup.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Lists** from your site's main menu and select **ADD LIST**.
Choose **Partner Taxonomy Mapping** and select **Continue**.
Give the list a desired name, select the needed taxonomy in **Taxonomy**, and choose **Import** in **Stage**:
* Search for and add the taxonomy *Tiktok US categories with ids* if you want to sell products on the US market.
* Search for and add the taxonomy *Tiktok UK categories with ids* if you want to sell products on the UK market.
* Search for and add the taxonomy *Tiktok DE categories with ids* if you want to sell products on the German market.
Select the **Attribute** field to choose the attribute in your import stage that contains your products' category data. Then, select **Add** at the bottom of the page to add the list.
Go through all the values of your category attribute in the column on the left and select the corresponding TikTok Shop categories in the **Replace term** column.
You must create and set up a new Partner Taxonomy Mapping list every time you modify the chosen category attribute in your data source and import its new values into your site. Otherwise, the already existing list can't upload your new values, and you can't map them to the corresponding TikTok Shop categories. Once you create a new Classification Mapping list, you need to choose it in the related rule box.
Go to **Dataflow** and select the added export from the dropdown on the left.
Map all the needed attributes from import to export. The attributes you see in the export stage are relevant for products of all your TikTok categories.
Map your import-stage category attribute to both **category\_id** and **category\_path** in the intermediate stage to add the needed rule boxes and apply the Partner Taxonomy Mapping list.
Select **category\_id** in the intermediate stage and open the **Select an Option** dropdown on the right to find and add the rule boxes:
1. Search for and select **Taxonomy Mapping**. Choose your category list in **List**.
2. Search for and select **Split String**. Enter `|` in **Splitter**, `0` in **From**, and `1` in **Items**. Select **Save**.This way, the **category\_id** attribute contains only the ID of the needed category.
Select **category\_path** in the intermediate stage and open the **Select an Option** dropdown on the right to find and add the rule boxes:
1. Search for and select **Taxonomy Mapping**. Choose your category list in **List**.
2. Search for and select **Split String**. Enter `|` in **Splitter**, `1` in **From**, and `1` in **Items**. Select **Save**.This way, the **category\_path** attribute contains only the path of the needed category.
To let the site display your category-specific attributes in Dataflow, select **Run** in the top-right corner of your view.
This run will fail because you haven't yet mapped all the mandatory attributes, so no data export occurs at this stage. The aim of the run is to import the needed categories and attributes in Dataflow.
Once the site run finishes, the **Classifications** dropdown appears in the top ribbon in Dataflow. Select each category in this dropdown to let Dataflow display the relevant category-specific attributes in the export stage. Map all the needed attributes from import to export.
If you can't see the **Classifications** dropdown when the site run finishes, try refreshing your page.
Set up the brand attribute [#set-up-the-brand-attribute]
When receiving brand information about a product, TikTok Shop requires the ID of that brand. To satisfy this requirement, you need to create a Partner Taxonomy Mapping list in your site and map your current brand attribute with the brand IDs expected by TikTok:
Go to **Lists** from your site's main menu and select **ADD LIST**.
Choose **Partner Taxonomy Mapping** and select **Continue**.
Give the list a desired name, select **Tiktok brands with ids** in **Taxonomy**, and choose **Import** in **Stage**.
Select the **Attribute** field to choose the attribute in your import stage that contains your products' brand data. Then, select **Add** at the bottom of the page to add the list.
Go through all the values of your brand attribute in the column on the left and select the corresponding TikTok-recognized brands and brand IDs in the **Replace term** column.
You must create and set up a new Partner Taxonomy Mapping list every time you modify the chosen brand attribute in your data source and import its new values into your site. Otherwise, the already existing list can't upload your new values, and you can't map them to the corresponding brands and brand IDs recognized by TikTok Shop.
Go to **Dataflow** and select **TikTok Shop Product Export API Main** from the dropdown on the left.
To apply the brand-mapping list to your attributes and extract the needed data from it, select **brand\_id** in the export stage and open the **Select an Option** dropdown on the right to find and add the rule boxes:
1. Search for and select **Taxonomy Mapping**. Choose your brand-mapping list in **List**.
2. Search for and select **Split String**. Enter `|` in **Splitter**, `0` in **From**, and `1` in **Items**. Select **Save**.This way, the **brand\_id** attribute contains only the IDs of the needed brands, as required by TikTok Shop.
Set up attributes that require predefined values [#set-up-attributes-that-require-predefined-values]
For some attributes, TikTok Shop accepts predefined values only and requires receiving the IDs of those values together with the values themselves. For example, TikTok Shop accepts only the values *Foldable* and *Non-Foldable* for the attribute `product_attribute. Foldable Furniture#100887` and also expects to receive those values' IDs *1002263* and *1002263* in this attribute. You thus need to send the values as follows: `Foldable:::::1002263` and `Non-Foldable:::::1004668`.
To check which attributes in your feed require predefined values with value IDs:
Go to **Dataflow** and select your export from the dropdown on the left.
For category-specific values, open the **Classification** dropdown and select the needed category.
In the **Overview** dropdown, select **Readiness**.
The platform highlights problematic attributes in orange or red. Select the readiness percentage under the name of each problematic attribute. If the attribute supports only predefined values, you will see a similar pie chart in the *Analyzer tests* section and a list of the supported values for this attribute.
See \[component:65264] for more information on the Analyzer and export readiness scores.
To provide the right values and the relevant value IDs in the attributes that support only predefined values, do the following for each of these attributes:
Go to **Lists** from your site's main menu and select **ADD LIST**.
Choose **Partner Taxonomy Mapping** and select **Continue**.
Give the list a desired name, select **Tiktok non-customized with ids** in **Taxonomy**, and choose **Import** in **Stage**.
Select the **Attribute** field to choose the attribute in your import stage that should contain predefined values. Then, select **Add** at the bottom of the page to add the list.
Go through all the values of your chosen attribute in the column on the left and select the corresponding values supported by TikTok Shop in the **Replace term** column.
You must create and set up a new Partner Taxonomy Mapping list every time you modify the chosen attribute in your data source and import its new values into your site. Otherwise, the already existing list can't upload your new values, and you can't map them to the corresponding predefined TikTok Shop values with IDs.
Go to **Dataflow** and select your export from the dropdown on the left.
To apply the list to the chosen attribute and extract the needed data from it, select the relevant attribute in the export stage and open the **Select an Option** dropdown on the right to find and add the rule boxes:
1. Search for and select **Taxonomy Mapping**. Choose your list in **List**.
2. Search for and select **Split String**. Enter `|` in **Splitter**, `1` in **From**, and `1` in **Items**. Select **Save**.
Set up multi-value attributes [#set-up-multi-value-attributes]
TikTok Shop allows some attributes to contain multiple values. Here are some of these attributes:
* Images
* Material
* Delivery service IDs
To see if an attribute can send multiple values to TikTok Shop, you can use the Analyzer feature. If an attribute doesn't have analyzer tests at the export stage in the Analyzer, the attribute is likely to support multiple values. See \[component:65264] for more information on the Analyzer feature.
You can also see which attributes support multiple values in your TikTok account.
Most multi-value attributes are category-specific.
For all the attributes that should send multiple values to your TikTok Shop account, do the following:
Go to **Dataflow** and select your export from the dropdown on the left.
Map an attribute from the import stage to the corresponding multi-value attribute in the intermediate stage.
Select the attribute in the intermediate stage and open the **Select an Option** dropdown on the right to find and add the rule boxes.
Search for and select **Append/Prepend Column**.
In **Column**, choose another attribute that should add its value to the multi-value attribute. Then, select **append** in **Mode**.
In the **text** field, enter `#` to separate the value of the added attribute from the current value.
Open the **Select an Option** dropdown to search for and select **Text Replace**.
Enter `#` in **Search for** and `#` in **Replace by**.
With the suggested settings, the Append/Prepend Column rule box adds the value of your chosen attribute to the current value in your edited multi-value attribute by using the number sign (`#`) and a space before it as a delimiter.Don't forget to enter the space before `#` in **Search for** to let the Text Replace rule box remove the space.
Select **Save**.
If you want to add more than one (1) attribute to a multi-value attribute in the intermediate stage, you need to add as many Append/Prepend Column rule boxes as necessary to append all the desired values.Mind that the order of the rule boxes matters. The higher a rule box is in the list of added rule boxes, the earlier a site processes and applies it to the data. So the order of the Append/Prepend Column rule boxes from top to bottom should be the same as your desired order of values in the attribute.You should add the Text Replace rule box only once, and it should be at the bottom of the rule box list.
Mind product variants and their attributes [#mind-product-variants-and-their-attributes]
The TikTok Shop product data scheme uses main products and product variants. All products in your feed must have **product\_id** and **parent\_id**. The **product\_id** attribute uniquely identifies product variants, and the **parent\_id** attribute links all product variants to their main product. The platform considers the first product variant with a new **parent\_id** as both a product variant and the main product.
All product variants have the same values as their main products in such attributes as **parent\_id**, **product\_name**, **images**, **category\_id**, **description**, etc. However, some attributes can contain values individual to each product variant. The names of these varying attributes start with **sku.**, except for **product\_id**.
When modifying the data in your feed, you shouldn't let product variants with the same **parent\_id** have different values in the shared attributes. But the values in **product\_id** and the **sku.** attributes can differ per product variant.
Import orders from TikTok Shop [#import-orders-from-tiktok-shop]
To let Productsup import your orders from TikTok Shop, do the following in the site dedicated to the TikTok Shop data source:
TikTok users can cancel orders within one (1) hour after placing an order. You can import orders created within the last hour, but you shouldn't ship them right away.
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *TikTok Shop Order Import*, select **Add**, give it a name as desired, and then choose **Continue**.
In the **Order Status Filter** area, select the statuses that orders should have for Productsup to import them. If you don't select any order statuses, the platform imports orders of all statuses.
Hold the *Ctrl* or *Cmd* key to select multiple order statuses. *Shift* helps to select a range of statuses.
See [Fulfillment Process Integration Design](https://partner.tiktokshop.com/doc/page/273742) for more information on the TikTok Shop order status flow.
If you want to import orders created within a specific timeframe only, enter the needed number of days in **Earliest Order Creation Time** or **Earliest Order Update Time**. The expected input format is a digit in both fields.For example, if you enter `7` in **Earliest Order Creation Time**, the platform imports only the orders created within the last seven (7) days. To import orders updated within the past three (3) days, enter `3` in **Earliest Order Update Time**.
In **Authentication selection**, select the TikTok Shop authentication you have added to your Productsup organization or project.
Specify the desired name of the data source in **Description (optional)**.
Select **Save**.
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Find your order management system, add it as an export, set it up, and map the needed attributes in Dataflow.
Choose **Run** in the top-right corner of the page to let the site import your order data and send it to your order management system.
Send shipment updates to TikTok Shop [#send-shipment-updates-to-tiktok-shop]
There are two (2) types of shipping methods available on TikTok Shop:
. Self-shipping, which you manage yourself.
. Shipping managed by TikTok.
* Currently, Productsup supports only self-shipping and doesn't allow splitting and batching packages.
* TikTok users can cancel orders within one (1) hour after placing an order. You shouldn't ship orders created within the last hour because there is a cancellation risk.
To send shipment updates to TikTok Shop and notify your customers of the shipment process, do the following in the site dedicated to the TikTok Shop shipment export:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *TikTok Shop - Shipment Notifications API*, hover over it, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *TikTok Shop Shipment Notification Export* from the dropdown, give it a name as desired, and then select **Save**.
In **Authentication selection**, select the TikTok Shop authentication you have added to your Productsup organization or project.
Toggle the **Feedback Import** button to *Off* if you don't want the platform to receive feedback files from TikTok.This feature is active by default to let Productsup receive a feedback file from the TikTok Shop API in case of export errors. This helps to troubleshoot the setup.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** and select your TikTok Shop - Shipment Notifications API export from the dropdown on the left.
Map all the needed attributes from import to export.
Once all the settings are ready, you can send your shipment updates to TikTok Shop. Select **Run** in the top-right corner of your view to send the data.
# Add CrossEngage (JSON) export
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The CrossEngage (JSON) export lets you send product data to your CrossEngage instance directly from the platform. Using the Crossengage (JSON) export, you must access a plug-in in the platform to convert your data as a JSON file.
Add and set up export [#add-and-set-up-export]
To add and set up the *Crossengage (JSON)* export in Productsup:
Go to **Exports** from your site’s main menu.
Select **ADD EXPORT** and search for *Crossengage (JSON)*. Select **Add** and confirm adding it again as an export.
Now, select **Add Destination** and choose your desired destination from the drop-down list. (Optional) In **Name**, you can customize the destination name. Select **Save**.
Enter the credentials or settings for your destination, as necessary.
Before converting your feed file to JSON, rename it to *xxx.json*. For example, `myexamplecrossengfile.json`.
Go to the **Settings** tab in the Crossengage (JSON) export channel and confirm that `,COMMA` appears in **CSV Separator**.
To confirm that the export plug-in functions correctly, switch the **CSV Enclosure** button to **On**.
In **Export-Plugin**, enter the following path for the plug-in: `\Export\JsonCrossengage`.
Select **Save**.
# Add TikTok Product Catalog export
import { Step, Steps } from "fumadocs-ui/components/steps";
The TikTok Dynamic Product Ads feature automatically retargets users with relevant product ads based on their activities inside advertiser apps and websites.
Use the TikTok Product Catalog to push your product catalog with enhanced product information for your Dynamic Product Ads. This export creates a CSV catalog feed file for uploading your products to the catalog.
To export product data using delta logic, use the *TikTok Product Catalog API* export instead. See [Add TikTok Product Catalog API export](/docs/help-center/export-data-feeds/add-export/add-tiktok-product-catalog-api-export).
See [TikTok for Business Developers](https://ads.tiktok.com/marketing_api/docs?id=1701890909484033) for more information on connecting to your TikTok for Business.
Add and set up the export [#add-and-set-up-the-export]
To add the TikTok Product Catalog export in Productsup:
Go to **Exports** from your site’s main menu and select **ADD EXPORT**.
Search for *TikTok Product Catalog* , hover over it, and select **Add**.
On the **Exports** page, select the name of the added export template to set it up.
Select **Add Destination** and choose your desired destination from the dropdown, for example *Productsup Server*. Give it a name as desired, and select **Save**. See [Find the most suitable export destination](/docs/help-center/best-practices/find-the-most-suitable-export-destination) to learn what destination fits you.
Select **Save**.
# Add Bing Shopping export
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Bing Shopping is a key Microsoft Advertising platform that lets customers search for products from various sellers.
Prerequisites [#prerequisites]
To set up the Bing Shopping export, you need:
. Your Microsoft Advertising account.
Set up Bing Shopping export [#set-up-bing-shopping-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Bing Shopping*, hover over it, and select **Add**.
Go to **Exports** and select your *export name*.
Select **Add Destination**, choose the needed destination from the Destination drop-down menu, and select **Save**. You can choose any standard flat-file destination option, such as *Productsup Server* or *SFTP/FTP/FTPS Server*.
Select **Save**.
Go to **Dataflow** from the site's main menu and choose the added export from the drop-down menu in the top ribbon on the left.
Map the attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.
When your data is ready, select **Run** or **Export this export** in the upper right corner of the page.
Productsup creates a link to the TXT output file. To find it, scroll to the *Filename* section at the bottom of the export setup page. Copy the link and paste it into the file in your Microsoft Advertising account to upload your products.
# Set up the Amazon Product Export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The Amazon Product Export lets you create new product listings on Amazon and update existing ones directly from Productsup. It works for both Seller Central (third-party sellers) and Vendor Central (first-party vendors) accounts, and connects via Amazon's Selling Partner API (SP-API).
Prerequisites [#prerequisites]
Before setting up the Amazon Product Export, confirm the following:
* You have an active Amazon Seller Central or Vendor Central account.
* You have your **Seller ID** (Seller Central) or **Vendor Code** (Vendor Central). You can find these in the left-hand navigation or the product listing view in your Amazon account.
* The marketplace you want to export to is available in the export list. See [Add the export](#add-the-export).
* Your Amazon account is in good health: valid payment method, correct VAT or tax details, and no outstanding compliance issues.
If authentication fails during setup, the most common cause is an issue with your Amazon account — for example, an expired payment method or missing VAT details — and not a Productsup error. Check your Amazon account health before raising a support request.
Add the export [#add-the-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for the marketplace you want to export to. Exports follow the naming format:
* **Amazon Seller Central – Product Creation (XX)** for Seller Central accounts
* **Amazon Vendor Central – Product Creation (XX)** for Vendor Central accounts
Replace **XX** with the country code of your target marketplace, for example *US*, *DE*, or *AU*.
If the marketplace you need is not in the list, that region is not yet supported. Contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) to request it.
Hover over the export and select **Add**.
Configure the destination [#configure-the-destination]
On the **Exports** page, select the name of the export you added.
Select **Add Destination**. From the dropdown, choose the destination that matches your account type:
* *Amazon Seller Central Products* for Seller Central accounts
* *Amazon Vendor Central Products* for Vendor Central accounts
Give the destination a name and select **Save**.
In **Authentication**, select an existing authentication or select **Add New Authentication** to connect your Amazon account via OAuth.
Selecting **Add New Authentication** redirects you to Amazon to complete the authorisation. Once authorised, Amazon redirects you back to Productsup automatically.
In **Marketplace ID**, select the country or region you are exporting to. This must match the export you selected in [Add the export](#add-the-export).
If you are using a Seller Central account, enter your Amazon Seller ID in **Seller ID**.
If you are using a Vendor Central account, enter your Amazon Vendor Code in **Vendor Code**.
Switch **Feedback Import** to *On*. This is required to receive error feedback from Amazon after each export run.
Keep **Category Specific Attributes** set to *On*.
Switch **Active** to *On* and select **Save**.
Set up category mapping [#set-up-category-mapping]
You must map your attributes to the Amazon categories using a *Classification Mapping* list to let Productsup know which category-specific attributes should be available to you.
Go to **Lists** from your site's main menu and select **ADD LIST**.
Select **Classification Mapping** and select **Next**.
In **Name**, give the list a descriptive name, for example *Amazon classification mapping*.
In **Classification**, select the Amazon export you added in [Add the export](#add-the-export), for example *Amazon Seller Central – Product Creation (DE)*.
In **Stage**, select whether your category data comes from the **Import** or **Intermediate** stage.
In **Attribute**, select the attribute in your data that contains your product categories.
Select **Add**.
Map the category values pre-populated in the list to the corresponding Amazon categories.
Map attributes in Dataflow [#map-attributes-in-dataflow]
Go to **Dataflow** from your site's main menu and select your Amazon export in the dropdown on the left.
Map your category attribute to `__category_path` in the intermediate stage, and apply the *Classification Mapping* rule box using the list you created in [Set up category mapping](#set-up-category-mapping).
Select **Run** in the top-right corner of your view.
This run will fail — this is expected. The platform uses this run to retrieve the category-specific attribute (CSA) templates from Amazon for the product types in your data. After the run completes, the **Classifications** dropdown appears in the Dataflow toolbar.
Use the **Classifications** dropdown to switch between CSA sub-channels and map the attributes for each product type. Some attributes only appear for specific sub-channels — these are the category-specific ones.
Once all attributes are mapped across all sub-channels, check your export readiness before going live. See [Check your export readiness](#check-your-export-readiness).
Check your export readiness [#check-your-export-readiness]
Use the Readiness analysis tool in Data View to verify your data meets Amazon's requirements before going live.
Go to **Data View** from your site's main menu and select your Amazon export from the dropdown on the top left.
Select the **Overview** dropdown and choose **Readiness**.
Review the readiness score and use rule boxes to correct any flagged issues. Aim for 100% readiness before running a live export.
Monitor results after submission [#monitor-results-after-submission]
Amazon validates your products in stages — first when you submit them, then through asynchronous compliance checks — before they ever reach a buyer. Productsup does not just send your product data to Amazon; it also brings back the issues Amazon raises during and after submission. That means you can spot errors early, act on them in time, and keep your products live.
Channel Feedback for Amazon [#channel-feedback-for-amazon]
Channel Feedback is your one-stop dashboard for monitoring product feed issues on Amazon. Instead of hunting through raw error logs, you get a structured, prioritised view of everything Amazon has accepted, rejected, or flagged — all in one place.
Channel Feedback for the Amazon export requires activation per site. Contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) with your site ID to request it.
See everything at a glance [#see-everything-at-a-glance]
The Channel Feedback History page records every feed submission from the past 30 days. Open any export to see what happened, compare results over time, and track your progress as you resolve issues. Feedback from both product submission and compliance checks appears here.
The following statuses may appear in the history list:
| Status | What it means |
| -------------------- | ------------------------------------------------------ |
| *Received* | Feedback successfully synced — ready to review |
| *Partially Received* | Some feedback synced, but the report may be incomplete |
| *Not Received* | Sync failed — raise a support ticket for investigation |
| *Awaiting* | Sync in progress — check back in a few minutes |
| *0 issues found* | No errors or warnings reported for this run |
You can download the raw feedback as a CSV file from the history list.
Get to the bottom of every issue [#get-to-the-bottom-of-every-issue]
Select any export in the history list to open the Channel Feedback Detail page, which shows exactly what Amazon reported back. For each issue, you can see:
* How serious it is — whether it is a critical error blocking your products or a suggestion for improvement.
* Which field has the problem — price, description, image, and so on, identified immediately.
* How many products are affected — so you can gauge the impact at a glance.
* What to do about it — clear error messages that make sense.
You can switch between two views to investigate issues the way that suits you:
* **View by issue** — feedback grouped by error message, with the affected attribute, severity, and the number of products affected by each issue.
* **View by product** — feedback grouped by product ID, so you can see every issue tied to a single item.
Jump straight to the problem products [#jump-straight-to-the-problem-products]
When you spot an issue, select **Affected Products** to open a filtered Data View showing only the products with that specific problem — with the affected field already highlighted. You can see exactly which products need attention and act on them immediately, without searching through your entire catalog manually.
Channel Feedback reflects Amazon's synchronous validation only. A product accepted at this stage is not guaranteed to be live on Amazon. See [Check for downstream issues](#check-for-downstream-issues) to catch issues that arise after acceptance.
Check for downstream issues [#check-for-downstream-issues]
Amazon runs a second round of validation hours after the initial acceptance. Issues at this stage do not appear in Channel Feedback.
To check for downstream issues, set up an Amazon Product Import datasource using the **Listings API** source. The platform pulls your products back from Amazon with any errors or warnings flagged after acceptance — equivalent to the product issues view in Seller Central or Vendor Central.
The Listings API supports up to 1,000 products per call. Use SKU or severity filters to narrow results when working with large catalogs.
If the Listings API and the Amazon UI show conflicting results, treat the **Amazon UI as the source of truth**. Discrepancies between the two are an Amazon-side issue.
As an alternative, log in to your Seller Central or Vendor Central account directly and review product issues there.
Common issues [#common-issues]
| Issue | Likely cause | What to do |
| -------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| Authentication fails | Amazon account health issue | Check your Amazon account for expired payment details, missing VAT, or compliance flags |
| Products rejected in Channel Feedback | Incorrect or missing attribute values | Review the error messages, correct the data, and run the export again |
| Product accepted but not visible on Amazon | Amazon downstream async validation failed | Check via the Product Import (Listings API) datasource or Seller/Vendor Central |
| Product not in Channel Feedback and not on Amazon | Submission may have failed silently | Contact [support@productsup.com](mailto:support@productsup.com) with the affected SKU(s) |
| Marketplace or product type missing from the export list | Not yet supported | Contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) to request it |
# Add Idealo Partner API v2.0 export
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
This section describes how you can modify and upload your feed to the Idealo Partner API v2.0 in the Productsup platform.
See Idealo's [Partner Web Service (PWS 2.0) API documentation](https://import.idealo.com/docs/#_put).
In the platform, choose from three (3) Idealo Partner API v2.0 export templates to upload your feed:
* Idealo Partner API v2.0 - Price Comparison Offers export template for products available for price comparison.
* Idealo Partner API v2.0 - Offers Export template for products available for direct checkout and price comparisons on Idealo.
* Idealo Partner API v2.0 - Partial Offer Updates for updates to existing products only.
Requirements [#requirements]
You need to map two attribute groups in *Dataflow* to set up an Idealo Partner API v2.0 successfully:
`paymentCosts` attributes - You must provide a value for at least one (1) payment cost field and for any payment method you accept.
* If you do not want to associate a cost, enter `0.00`.
`energyLabels`, referred to as EEK (Energy Efficient Class) attributes - You must have values for applicable products, for example, electronics, lighting, and tires, for these fields, as required under EU law:
See:
* [Elektronische Geräte](https://idealo.us8.list-manage.com/track/click?u=55d1194af6621aef71dfb168f\&id=621b39b7b7\&e=3cb2722f36)
* [Reifen](https://idealo.us8.list-manage.com/track/click?u=55d1194af6621aef71dfb168f\&id=ab17deae6c\&e=3cb2722f36)
* [Lichtquellen](https://idealo.us8.list-manage.com/track/click?u=55d1194af6621aef71dfb168f\&id=a3d2e5828e\&e=3cb2722f36)
You can also learn more in Idealo's API documentation regarding labels. See [Partner Web Service (PWS 2.0) API Documentation](https://import.idealo.com/docs/#_put).
Delete products from Idealo Partner API v2.0 [#delete-products-from-idealo-partner-api-v20]
Productsup applies delta logic to capture products removed from import data and automatically delete them from Idealo.
Delta logic means that when you remove offers from the import data, the platform compares products to the previous run and identifies changed and deleted products. The platform changes or deletes those products from the export during the next run. Unchanged products stay without changes.
Idealo Partner API v2.0 - Price Comparison Offers [#idealo-partner-api-v20---price-comparison-offers]
Use the Idealo Partner API v2.0 - Price Comparison Offers export template for products available for price comparison.
Go to **Exports** from your site’s main menu.
Select **ADD EXPORT** and search for *Idealo Partner API v2.0 - Price Comparison Offers*.
Select **Add**, give it a custom name if you desire, and select **Add** again.
Under **Destinations**, select **Add Destination** and choose *Idealo Offer Export API* from the drop-down list. Optionally, you can customize the destination's description in **Name**.
In **Client ID** and **Client Secret**, enter your Idealo client credentials.
Enter the Idealo **Shop ID** for shop orders.
(Optional) To continue with the feedback import option, switch **Feedback import** to **On**. Use this option if you want an error file returned to the platform once your data export finishes. The platform returns the feedback error file to your site as an additional data source with the following:
* `SKU`: Your product ID. This field contains the default name or the name you defined during setup in step [3](#N1641219469571).
* `**___idealo_id**`: The Idealo product ID.
* `**___idealo_status**`: Product upload status. For example, `OK`, `failed`, and `ignored`.
* `**___idealo_status_message**`: The reason why the upload failed for this product. For example, `Mandatory field 'title' is missing or empty!`
Turn on the destination by switching **Active** to **On**.
Select **Save**.
Idealo Partner API v2.0 - Offers Export [#idealo-partner-api-v20---offers-export]
Use the Idealo Partner API v2.0 - Offers Export template for products available for direct checkout and price comparisons on Idealo.
Go to **Exports** from your site’s main menu.
Select **ADD EXPORT** and search for *Idealo Partner API v2.0 - Offers Export*.
Select **Add**, give it a custom name if you desire, and select **Add** again.
Under **Destinations**, select **Add Destination** and choose *Idealo Offer Export API* from the drop-down list. Optionally, you can customize the destination's description in **Name**.
In **Client ID** and **Client Secret**, enter your Idealo client credentials.
Enter the Idealo **Shop ID** for shop orders.
(Optional) To continue with the feedback import option, switch **Feedback import** to **On**. Use this option if you want an error file returned to the platform once your data export finishes. The platform returns the feedback error file to your site as an additional data source with the following:
* `SKU`: Your product ID. This field contains the default name or the name you defined during setup in step [3](#N1641220327143).
* `**___idealo_id**`: The Idealo product ID.
* `**___idealo_status**`: Product upload status. For example, `OK`, `failed`, and `ignored`.
* `**___idealo_status_message**`: The reason why the upload failed for this product. For example, `Mandatory field 'title' is missing or empty!`
Turn on the destination by switching **Active** to **On**.
Select **Save**.
Idealo Partner API v2.0 - Partial Offer Updates [#idealo-partner-api-v20---partial-offer-updates]
Use the Idealo Partner API v2.0 - Partial Offer Updates for updates to existing products only. This method is efficient since there are fewer attributes required to send.
Go to **Exports** from your site’s main menu.
Select **ADD EXPORT** and search for *Idealo Partner API v2.0 - Partial Offer Updates*.
Select **Add**, give it a custom name if you desire, and select **Add** again.
Under **Destinations**, select **Add Destination** and choose *Idealo Offer Updates API* from the drop-down list. Optionally, you can customize the destination's description in **Name**.
In **Client ID** and **Client Secret**, enter your Idealo client credentials.
Enter the Idealo **Shop ID** for shop orders.
(Optional) To continue with the feedback import option, switch **Feedback import** to **On**. Use this option if you want an error file returned to the platform once your data export finishes. The platform returns the feedback error file to your site as an additional data source with the following:
* `SKU`: Your product ID. This field contains the default name or the name you defined during setup in step [3](#N1641220304541).
* `**___idealo_id**`: The Idealo product ID.
* `**___idealo_status**`: Product upload status. For example, `OK`, `failed`, and `ignored`.
* `**___idealo_status_message**`: The reason why the upload failed for this product. For example, `Mandatory field 'title' is missing or empty!`
Turn on the destination by switching **Active** to **On**.
Select **Save**.
# Set up the Walmart Marketplace Price & Inventory export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Walmart Marketplace treats pricing and inventory as two separate updates. Productsup provides a dedicated export and destination for each:
* **Walmart Marketplace Pricing update**, sent to the *Walmart Marketplace Price export* destination.
* **Walmart Marketplace Inventory update**, sent to the *Walmart Marketplace Inventory export* destination.
Both update products you've already listed on Walmart Marketplace.
Prerequisites [#prerequisites]
* You have an approved Walmart Marketplace seller account (US) with access to Seller Center.
* You have set up the [Walmart Marketplace Product Creation export](/docs/help-center/export-data-feeds/add-export/add-walmart-marketplace-product-creation-export), or your products are otherwise already listed on Walmart Marketplace.
Set up the pricing export [#set-up-the-pricing-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for **Walmart Marketplace Pricing update** and select **Add**.
Select the export's name link.
Select **Add Destination** and choose *Walmart Marketplace Price export* from the dropdown. Give it a name as desired and select **Save**.
In **Authentication**, choose the Walmart authentication you previously set up, or select **Add New Authentication** to connect your account.
Toggle **Active** to **On** and select **Save**.
Go to **Dataflow** and select **Walmart Marketplace Pricing update** in the dropdown on the left. Map your price attributes from the intermediate to the export stage. The export uses **SKU** as the delta key to match rows to your existing listings.
Select **Run** in the top-right corner to send your pricing updates to Walmart.
Set up the inventory export [#set-up-the-inventory-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for **Walmart Marketplace Inventory update** and select **Add**.
Select the export's name link.
Select **Add Destination** and choose *Walmart Marketplace Inventory export* from the dropdown. Give it a name as desired and select **Save**.
In **Authentication**, choose the Walmart authentication you previously set up, or select **Add New Authentication** to connect your account.
Toggle **Active** to **On** and select **Save**.
Go to **Dataflow** and select **Walmart Marketplace Inventory update** in the dropdown on the left. Map your inventory attributes from the intermediate to the export stage. The export uses **SKU** as the delta key to match rows to your existing listings.
Select **Run** in the top-right corner to send your inventory updates to Walmart.
Walmart limits pricing and inventory updates to 6 runs per day. If you need to update more often, request a higher limit directly from Walmart Marketplace.
# Add Magento 2.x Stock and Price Export
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The Magento 2.x Stock and Price Export lets you export products from the Productsup platform to a Magento 2.x instance. Use the Magento Stock and Price Export to enhance your data and provide more product information.
Add and set up export [#add-and-set-up-export]
To add the Magento 2.x Stock and Price Export in Productsup:
Go to **Exports** from your site’s main menu.
Select **ADD EXPORT** and search for *Magento 2.x Stock and Price Export.*
Select **Add** and confirm adding it again as an export.
In the export setup, select **Add Destination** and choose *Magento 2 API Stock and Price Export* from the drop-down list. Now enter a destination **Name**.
In **Authentication**, choose **Select authentication**. Then choose an available authentication from the drop-down list or select **Add New Authentication**. You can also choose to use pre-existing export tags from another platform in **Authentication**. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) to set up authentication with another platform.
Add your Magento store URL in **Base URL**.
Switch **Feedback import** to **On** if you want an error file returned to the platform once your data export finishes. Go to step [10](#listitem-idm11616685403177) if **Feedback import** is set to **Off**.
Choose a column that you want to receive a feedback import file on in **Main feed connection column**.
Enter the column that connects to your feedback import in **Feedback file connection column**.
Select a **Magento Version** from the drop-down list.
Turn on the destination by switching **Active** to **On**.
Select **Save**.
# Add Google Responsive Search Ads export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
This document explains the necessary steps for exporting your product ads using the Google Responsive Search Ads export. And how to use your exports during campaign creation in Google Ads.
The Google Responsive Search Ads export replaced the Google Ads API export. Productsup sunset the Google Ads (API) in anticipation of Google discontinuing support for expanded text ads on 30 June 2022.
You can create Google Ads campaigns, even if you don't list your products in Google Merchant Center, such as real estate listings.
To export ads to the Google Ads API, follow these required steps:
Add Google Ads authentication.
Set up the Google Responsive Search Ads export.
Set up the Google Responsive Search Ads destination.
Add your Google Ads authentication [#add-your-google-ads-authentication]
To add and set up Google Ads authentication:
Go to **Authentication** from the site's main menu. Then select **ADD AUTHENTICATION**.
Next, select *Google Ads* from the drop-down menu and enter a custom name as desired in **Name**. Then select **Next**.
After selecting **Connect**, you can now proceed to Google to authenticate and authorize your Google and Productsup connection.
Set up the Google Responsive Search Ads export [#set-up-the-google-responsive-search-ads-export]
Go to **Exports** and select **ADD EXPORT**. Next, choose the *Google Responsive Search Ads* export and select **Add**. Confirm the export again by selecting **Add**.
To set up the export destination, select **Add Destination**, and choose *Google Responsive Search Ads* from the drop-down menu. Now enter a custom name if you desire in **Name**.
In **Authentication to use**, select **Add New Authentication** or choose **Select authentication**. Choose the authentication you previously set up in step [1](#N1618330122474). You can also use pre-existing export tags from another platform in **Authentication**. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) to set up authentication with another platform.
Now, enter the **Manager customer ID** and **Campaign owner customer ID**, and **Campaign ID** found in your Google Ads account.
Enter a value in **Final URLs column values separator** to separate URLs. The default separator is a comma (`,`).
Turn on the destination by switching **Active** to **On**, then select **Save**.
Create your campaign ads in Productsup and then perform an export to send them to Google Ads.
Creating Adgroups [#creating-adgroups]
You can find the different Adgroups that structure your text ads within your Google Ads account. Aside from assigning existing Adgroups to your text ads, you can dynamically create them. By populating the `group_name column`, the export to API creates the Adgroups if they are not yet present in Google Ads.
Populate export columns in Dataflow [#populate-export-columns-in-dataflow]
Add export column fields to populate ad content, as seen in the following expanded text ad examples:
The following content was necessary to create the expanded text ad, as previously shown:
| Export Column | Content |
| --------------- | ---------------------------------------------------- |
| `headlinePart1` | Cruise to Mars #12QjNuTP |
| `headlinePart2` | Best Space Cruise Line |
| `description` | Buy your tickets now! |
| `finalUrls` | [http://www.example.com/0](http://www.example.com/0) |
| `path1` | all-inclusive |
| `path2` | deals |
Run log and warnings [#run-log-and-warnings]
You can open the Run log while the site is processing to get live responses from the Google Responsive Search Ads export. Select the **Run log** icon in the top-right corner.
The Run log can warn you about trademark violations, unapproved word usage, and syntax errors.
# Add Google Things To Do export
import { Step, Steps } from "fumadocs-ui/components/steps";
*Things to do* is an area within Google Travel where users can discover and book tours, activities, and attractions. You can list your tours, activities, and attractions, providing descriptions, prices, and availability information. When users select a listing, they get to the operator's website and can book directly without any Google's commission.
You can use the *Google Things To Do* export in Productsup to upload your product feed to Google in the specified JSON format.
Prerequisites [#prerequisites]
To set up the *Google Things To Do* export, you need:
. Create a Things to do centre account and Secure File Transfer Protocol (SFTP) endpoints in Google. During the setup, you need to provide the following SSH key to Google:
| `ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNnqgT4GoIWhMaY7kp1XvLJXjWLy7Q49ltWaLGbFFN80GzWWWRYOjpGZSPi8KgvkbACkbGu5kYDGYDy+jBlhiiI/XDTO02h5ZNjkaEHJ8s/FMqhaY6eOwwiRfQDdwBAoPY5yxZI/yfsdP3lJaZgZykyMPCiYviUK662j1H6gvLBFcIhROCD1BIby5x2JgRck7apgkEWAmdArWjCDJCMtouEb1X90gQZwgkzsZDDiE8gKxFvqyMoLtCM2Vo6caC/IyIX9mrj9cOhsOOYxK1LCHZTOL1UiYkDGGJpaItyQwjkVuQ4ACuWv1eVGGWCZCw7dShntBOuY4ryu5YzcAbBGm8r/lzdZ+bVnmBeCC8Cf1Al+46jV+KmpVkqcXeLuWCA1rk9xLPv0fa92DFQcRW5x9GLV+Kq25Q4F34RxmQ3LLX6gTky+MhVa8NFBijRcTiaPrTyjzlRKS2acYuX8rnBFfI9l8MqDPzZq0XEjO2HJNzmAzknwFR6ZogDzxUybu+GbU= google-things-to-do@productsup.com` |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| See [Things to do centre: Starter guide](https://support.google.com/google-ads/answer/13387362?hl=en-AU#:~:text=Initial%20setup,in%20Things%20to%20do%20centre.) for more information. |
Set up Google Things To Do export [#set-up-google-things-to-do-export]
Go to **Exports** from your site's main menu and select **Add export**.
Search for *Google Things To Do*, hover over it, and select **Add**.
In Exports, select the added export *Google Things To Do*.
Select **Add Destination**.
Select *Google Things To Do* from the **Destination** drop-down menu, and choose **Save**.
In **SFTP Host**, enter your SFTP server address without prefixes, such as `sftp://`.
In **Port**, enter the port number that the platform should use to establish a connection with your SFTP server. By default, the platform uses port `22`.
In **SFTP Username**, enter your server username.
If you want to send your data to a specific folder on your SFTP server, provide the path to the desired folder in **SFTP Directory**. By default, the platform sends your data to the root folder.
Leave the **Feedback Import** toggle *On* to let the platform receive feedback files from the Google API in case of export errors. This helps to troubleshoot the setup.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** from the site's main menu and choose the added export from the drop-down menu in the top ribbon on the left.
Map the attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information. Use the following recommendations:
1. The platform creates the attributes for the data in English. If you need to add attributes containing the data in other languages, you can add user-generated attributes in Dataflow. Provide them with the names according to the following naming convention: `product.title.[language abbreviation]` such as **product.title.en** for English, **product.title.de** for German, and so on.
2. For sections with multiple values, such as product features, product media, and product options, for the sake of brevity, we support only one value by default. If you need more values, you can add them by creating separate user-generated attributes. Name them the same way as shown in the example:
* For **product.media\[0].url**, add **product.media\[1].url**, **product.media\[2].url**, and so on.
* For **option\[0].id**, add **option\[1].id**, **option\[2].id**, and so on.
* For **option\[0].price\_option\[0].id**, add **option\[0].price\_option\[1].id**, **option\[0].price\_option\[2].id**, and so on.
3. To provide coordinates in the coordinates attribute, use the comma (`,`) separator, such as `-25.3510319200353,131.03269662583725`.
4. As the products for Things to do can serve different user experiences, the mandatory attributes may vary, which we can't highlight on the platform as usual. You can find the list of mandatory attributes that you must map in [Required and recommended fields](https://developers.google.com/actions-center/verticals/things-to-do/guides/partner-integration/required-fields#:~:text=Note:%20By%20providing%20the%20required,other%20fields%20are%20considered%20optional.\&text=%5B1%5D%20Experience%20module%20may%20choose,tickets%20and%201st%20party%20experiences.).
If your data is ready, select **Run** or **Export** in the upper right corner of the page. If you don't want to run the entire site, including all active exports set up in it, you can go to **Exports**, select the added *Google Things To Do* export, and then choose **Export this export**.
# Add DoorDash exports
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
DoorDash is a US-based on-demand delivery platform where grocery and convenience retailers list their products for local delivery. Productsup has built the DoorDash exports to let you keep your DoorDash listings up to date automatically — your product catalog, your store-level pricing and availability, and your store opening hours.
DoorDash keeps three kinds of data separate — your product catalog, your store-level inventory, and your store details. Productsup provides four channels across them. You can add one, some, or all of them, depending on what you need:
| Channel | What it sends | When to use it |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| **DoorDash Items - API** | Your product catalog — names, descriptions, images, and categories. | You need your products listed on DoorDash. |
| **DoorDash Inventory - API** | Store-level pricing and availability as a delta — only what has changed since the last run is sent directly to DoorDash. | You need ongoing, incremental price and stock updates per store. |
| **DoorDash Inventory Pull - API** | Store-level pricing and availability as a full catalogue — every run prepares a complete per-store file that DoorDash collects itself. | You have large or batch-style stock updates, or DoorDash prefers to pull a full file. |
| **DoorDash Store Management - API** | Each store's opening hours and holiday hours. | You need your store hours synced to DoorDash. |
Inventory has two flows: choose **DoorDash Inventory - API** for incremental delta updates pushed to DoorDash, or **DoorDash Inventory Pull - API** for full-catalogue files that DoorDash pulls. Use one or the other, not both, for a given store.
Each channel is added and set up separately, following the same steps.
The DoorDash exports cannot delete items or create stores. DoorDash has no delete operation, so to remove a product you mark it as unavailable instead. The **DoorDash Store Management - API** channel only updates stores that already exist on DoorDash — it cannot create new ones.
Prerequisites [#prerequisites]
To add a DoorDash export, you need:
. A DoorDash merchant account with API access enabled.
. Your DoorDash API credentials: **Developer ID**, **Key ID**, and **Signing Secret**. You enter these in the destination settings in Productsup.
. For the **DoorDash Store Management - API** channel, the stores you want to update must already be live on DoorDash.
Add and set up the export [#add-and-set-up-the-export]
Repeat these steps for each DoorDash channel you want to use.
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for the DoorDash channel you need — *DoorDash Items - API*, *DoorDash Inventory - API*, *DoorDash Inventory Pull - API*, or *DoorDash Store Management - API* — hover over it, and select **Add**.
On the *Exports* page, select the name of the added export to set it up.
Select **Add Destination**, choose the matching DoorDash destination from the drop-down list, give it a name as desired, and then select **Save**.
Enter your DoorDash API credentials in **Developer ID**, **Key ID**, and **Signing Secret**. These let the Productsup platform authenticate with your DoorDash account.
Switch **Active** to **On** to activate the destination.
Select **Save**.
Go to **Dataflow** from your site's main menu and select the added export from the drop-down menu in the upper ribbon.
Map the attributes from import to export, then run the export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.
Map repeating fields [#map-repeating-fields]
The channel template already includes the columns you map your data into. Some fields can repeat — for example, a store's opening hours or a product's images — and these come as numbered columns ending in `_1`, `_2`, `_3`, and so on. The template ships with a set number of these columns. If a store or product needs more, add the next-numbered column following the same name.
| What repeats | Already in the template | Add more as |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| Store opening hours (Store Management) | `open_hours_day_index_1` to `_8`, each with its matching `open_hours_start_time_N` and `open_hours_end_time_N` | `open_hours_day_index_9`, `_10`, and so on, with matching start and end times |
| Store holiday and special hours (Store Management) | `special_hours_date_1` to `_5`, each with its start time, end time, and closed value | `special_hours_date_6`, `_7`, and so on |
| Product images (Items) | `image_url_1` | `image_url_2`, `image_url_3`, and so on |
For a day that has a break — for example, a store that closes for lunch — map that day a second time in the next available block. A seven-day store with one lunch break maps into blocks `_1` to `_8`.
Keep the numbering in order from 1, with no gaps. A missing number stops the platform from picking up every column after it.
Map product attributes [#map-product-attributes]
The **DoorDash Items - API** channel can send DoorDash product attributes — extra descriptive properties such as *limited edition*, *alcohol vintage*, or *battery required*. You do not need these built into the template in advance; you add them yourself using custom numbered columns.
Each attribute uses two columns that share the same number: a name column and a value column.
. Add a name column, `product_attribute_1_name`, and set its value to the attribute's name exactly as DoorDash expects it — for example, `limited_edition`.
. Add one value column for that same attribute, chosen by the attribute's type:
| Value column | Attribute type | Accepted values |
| ----------------------------------------- | -------------- | ------------------------------------------ |
| `product_attribute_1_multi_select_string` | Text | One value, or several separated by commas |
| `product_attribute_1_multi_select_double` | Number | One number, or several separated by commas |
| `product_attribute_1_single_select_bool` | True or false | `true` or `false` |
To send a second attribute, add `product_attribute_2_name` with its own value column, then `_3`, and so on.
The name column and its value column must always share the same number. For example, `product_attribute_2_name` pairs only with `product_attribute_2_multi_select_string` — not with `product_attribute_1_multi_select_string`.
Delta export and category updates [#delta-export-and-category-updates]
The **DoorDash Items - API** channel is a delta export. Productsup's delta engine decides, per item, whether to send it as a POST (a new item, never sent before) or a PATCH (a modified item that has already been sent). Once an item has been sent once, every later export of that item goes out as a PATCH.
DoorDash's API only accepts category data (`item_categorizations`) on a POST. DoorDash rejects a PATCH that carries category data, and the whole item fails with the error "Item categorizations update using PATCH is not supported."
This has a practical consequence: for an item already sent once, a normal re-export cannot update its category. The delta always sends that item as a PATCH, which can never carry category data.
To force every item back through POST and send category data again, reset the site data in the site's **Advanced Settings**. This resets the delta completely, so the next export run treats every item as new and sends full category data for all of them.
Resetting the site data resets the delta for the entire site, not just category data. The next export run resends every item as a POST.
Check the feedback file [#check-the-feedback-file]
After each export, the platform retries any failed records automatically. Anything that still fails is written to a feedback file that names the product or store that failed and the reason DoorDash gave. The feedback file is the first place to look when something does not appear on DoorDash as expected.
The following table covers the most common issues:
| What you see | Likely cause | What to do |
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Some items show errors on the first run | The items already exist on DoorDash, and the export had no way to know | This is expected. Later runs correct themselves. |
| Every record fails | Missing, incorrect, or expired credentials in the destination settings, or a DoorDash outage | Check your credentials in the destination settings, then check DoorDash's status. |
| A store's hours are rejected | The hours were not in the format DoorDash expects | Check the feedback file for that store and review the hours formatting in your feed. |
| A store update fails with "not found" | That store is not set up on DoorDash yet | Use a store that is already live on DoorDash. |
| A product attribute does not appear on DoorDash | The name column and value column do not share the same number, the value column type is wrong, or the value is empty | Check that the `product_attribute_N_name` column and its value column use the same number, and that the value is not blank. |
| An item fails with "Item categorizations update using PATCH is not supported" | The item was already sent once, so the delta exported it as a PATCH, which cannot carry category data | See [Delta export and category updates](#delta-export-and-category-updates). Reset the site data if you need category data resent. |
| An error never appears in the feedback file | DoorDash reported the problem after accepting the request | Check your DoorDash developer portal. |
# Add Google Merchant Center export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
[Google Shopping](https://shopping.google.com/) shows your products as search results in the *Shopping* tab of Google Search.
Google Shopping ads are product advertisements visible across the entire Google ecosystem. Although possible locations of your Google Shopping ads depend on your chosen type of Google Shopping campaign, your product ads can generally appear in Google Shopping, Google Search, Google Images, Google Maps, etc.
In Productsup, you can use multiple exports to send your data to Google Merchant Center (GMC), which lets you post your products in Google Shopping and advertise them with Google Shopping ads.
You can send different types of data to Google Merchant Center from Productsup using different exports:
| Type of data | Exports in Productsup that send this data to GMC |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| General product data (titles, images, prices, descriptions, brands, stock levels, etc.) | *Google Merchant Center*, *Google Content API for Shopping*, or *Google Content API for Shopping (multi)*.See the following sections in this document for the setup of these exports. |
| Promotion data and promo text for ads | *Google Merchant Promotions* or *Google Merchant Center - Promotions (API)*.See [Add Google Merchant Promotions export](/docs/help-center/export-data-feeds/special-export-setups/add-google-merchant-promotions-export).See [Add Google Merchant Center - Promotions (API) export](/docs/help-center/export-data-feeds/special-export-setups/add-google-merchant-center-promotions-api-export). |
| Star-based product ratings, overall number of product reviews, and other reviews data | *Google Product Ratings* or *Google Products Reviews* |
Choose how you want to send data to GMC [#choose-how-you-want-to-send-data-to-gmc]
The Productsup platform lets you export your product feed to Google Merchant Center. The specific way of setting up the export in the platform depends on how you want GMC to ingest your product data:
. Via URL generated by Productsup.
. Via SFTP server provided by Google Merchant Center.
Google stopped supporting FTP in Merchant Center. See [End of support for FTP in Merchant Center](https://support.google.com/merchants/answer/13033917) for more information.
. Via API integration between Productsup and GMC that lets you automate and schedule data uploads.
You can choose any option based on the number of products you have and the rate of their data changeability:
* If your feed contains few products and the data doesn't change often, consider using the URL or the SFTP server.
* If your feed contains many products and the data constantly updates, select API. With API, you can only send product data updates to GMC instead of entire feeds, which speeds up the export.
Prerequisites [#prerequisites]
To export your product data to Google Merchant Center via URL, you need:
. A Google Merchant Center account.
. Product data containing the needed product attributes. See [Product data specification](https://support.google.com/merchants/answer/7052112) for information on all mandatory and optional attributes for GMC.
To export your product data to Google Merchant Center via SFTP, you need:
. A Google Merchant Center account.
. Relevant SFTP server credentials, such as a username and a password.
. Product data containing the needed product attributes. See [Product data specification](https://support.google.com/merchants/answer/7052112) for information on all mandatory and optional attributes for GMC.
To export your product data to Google Merchant Center via API, you need:
. A Google Merchant Center account.
. GMC authentication in your Productsup organization. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) for more information.To add GMC authentication to your Productsup organization:
Go to **Authentication** from the organization's, project's, or site's menu and select **ADD AUTHENTICATION**.
In **Type**, select *Google Merchant Center*, give it a custom name as desired, and select **Next**.
Select **Connect** for Productsup to redirect you to a Google account page where you can give Productsup access to your Google Merchant Center account. Once ready, Google redirects you back to Productsup. Close the confirmation window to proceed.
. Your Merchant ID that Google assigned to your payment profile. See [Find your Merchant ID](https://support.google.com/paymentscenter/answer/7163092?hl=en) for more information.
. Product data containing the needed product attributes. See [Product data specification](https://support.google.com/merchants/answer/7052112) for information on all mandatory and optional attributes for GMC.
. A clear strategy for migrating to the API export method:
You can skip this requirement if you have never uploaded any products to your GMC account.
* If you have already uploaded product data to your Google Merchant Center account, use the same product IDs you used with your previous data upload mechanisms to avoid data conflicts and loss.
* You must stop uploading product data using other mechanisms and let the API method in Productsup be the only way you send product data to your GMC account.
Upload data to Google Merchant Center via URL [#upload-data-to-google-merchant-center-via-url]
To upload your product data to Google Merchant Center via URL, add the Google Merchant Center export template to your site and use the Productsup Server destination:
Go to **Exports** from your site's main menu and select **Add export**.
Search for *Google Merchant Center*, select **Add**, give it a name as desired, and again select **Add**.
Select **Add Destination**, choose *Productsup Server* from the dropdown, give it a name as desired, and then select **Save**.
Go to **Dataflow** to locate all the attributes mandatory for Google Merchant Center and map them from import to export.
Go to **Data View** to optimize your data as needed. See [Rule box category Google Merchant Center](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/rule-box-category-google-merchant-center) for more information.
Upload data to Google Merchant Center via the SFTP server [#upload-data-to-google-merchant-center-via-the-sftp-server]
To upload your product data to GMC via the SFTP server, add the Google Merchant Center export template to your site and use the Google Merchant Center SFTP destination:
Go to **Exports** from your site's main menu and select **Add export**.
Search for *Google Merchant Center*, select **Add**, give it a name as desired, and again select **Add**.
Select **Add Destination**, choose *Google Merchant Center SFTP* from the dropdown, give it a name as desired, and select **Save**.
Set up Google Merchant Center SFTP destination:
1. In **User**, enter your SFTP server username.
2. In **Password**, enter the password for your SFTP server account.
3. Select **On** in **Active** to activate the destination.
4. Select **Save**.
Go to **Dataflow** to locate all the attributes mandatory for Google Merchant Center and map them from import to export.
Go to **Data View** to optimize your data as needed. See [Rule box category Google Merchant Center](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/rule-box-category-google-merchant-center) for more information.
Upload data to Google Merchant Center via API [#upload-data-to-google-merchant-center-via-api]
When you use the API option to upload your product feed to Google Merchant Center, Productsup continuously processes all changes you perform in your data and syncs only the changed parts of the data with GMC. The API uploads delta files only.
Besides automating data synchronization and helping you work with more products, uploading data to GMC via API lets Productsup receive error responses from GMC as feedback files in *Data Sources*. You can troubleshoot your product data optimizations using these files.
To upload your product data to GMC via API, you should use one of the following export templates:
. *Google Content API for Shopping*. Use this option to export one product feed to one Google Merchant Center account.
If you have multiple parent GMC accounts to which you want to send your feed, add and set up multiple templates of the Google Content API for Shopping export to your site.
. *Google Content API for Shopping (multi)*. Use this option to export one product feed to multiple sub-accounts within your parent GMC account.
With the Google Content API for Shopping (multi) export, you can use multithreading to push products to GMC in parallel and speed up your exports.
Add Google Content API for Shopping export [#add-google-content-api-for-shopping-export]
Google recommends limiting the size of the product batches you export from Productsup into GMC. The default batch size is 1,000 products. You can expect that Productsup typically sends batch sizes ranging from 100 to 1,000 products.
Go to **Exports** from your site's main menu and select **Add export**.
Search for *Google Content API for Shopping*. Select **Add**, give it a name as desired, and again select **Add**.
Select **Add Destination** and choose *Google Content API (single account)* from the dropdown. You can optionally customize the destination's description in **Name**. Select **Save**.
In **Merchant Center ID**, enter your [Merchant ID](#listitem-idm243381106444736). If you have a multi-client GMC, enter the Merchant ID of your sub-account.
Select the appropriate target country and language for the feed in **Target Country** and **Target Language**.
Define how often you want the platform to perform a complete product upload in **Full Upload Interval (in days)**. To avoid product expiration, the platform exports new, deleted, changed, and unchanged products during a complete upload performed once every defined time interval.
Google Merchant Center deactivates unchanged products after 30 days or sooner if a specified number of days have passed.
In **Merchant Center Cleanup**, choose **Yes** to delete products within GMC that do not originate from Productsup. By default, this option is disabled.*This setting should only be used once*. You can enable it if you are migrating from other service providers to Productsup. Once the migration is over, you should disable this setting.
Keeping this setting enabled can cause unexpected product deletions. For example, during a full catalog export, the destination matches the items it exports from your site with the products already available in your GMC. If a product in your GMC isn't present in the export, the destination removes it from GMC.
Choose your GMC authentication in **Authentication to use**. If you haven't created the authentication in the platform yet, select **Add New Authentication** and create it, as previously seen in [Prerequisites](#listitem-idm241690553222369).
Select **On** in **Enable Error Log File** to let Productsup upload feedback files that contain export-related errors as a new data source. You can also download the zipped errors file from the Run log.
The ZIP folder may contain error logs spread across different files. You can search for something specific in the logs using a keyword, for example, `product ID`. Some text editors let you search for a keyword across all files in a ZIP file.
In **Log API calls**, select **On** for the platform to log calls to the GMC API. You can find the logs in the Run log.
In **Log headers of API calls**, select **On** to add response headers to the logs.
In **API call logging end time**, enter a date using the `YYYYMMDD` or `YYYY-MM-DD` format, stating when the platform should stop logging API calls.
Do not let this feature run indefinitely, as it generates excessive files and slows exports.
Turn on the destination by selecting **On** in **Active**.
Select **Save**.
Go to **Dataflow** to locate all the attributes mandatory for Google Merchant Center and map them from import to export.
Go to **Data View** to optimize your data as needed. See [Rule box category Google Merchant Center](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/rule-box-category-google-merchant-center) for more information.
The API is more restrictive than the SFTP or URL upload. If you upload an incorrect category or your feed is missing mandatory attributes, the product upload fails.
Add Google Content API for Shopping (multi) export [#add-google-content-api-for-shopping-multi-export]
Google recommends limiting the size of the product batches you export from Productsup into GMC. The default batch size is 1,000 products. You can expect that Productsup typically sends batch sizes ranging from 100 to 1,000 products.
Go to **Exports** from your site's main menu and select **Add export**.
Search for *Google Content API for Shopping (multi)*. Select **Add**, give it a name as desired, and again select **Add**.
Select **Add Destination** and choose *Google Content API (multi account)* from the dropdown. You can optionally customize the destination's description in **Name**. Select **Save**.
In **Parent Merchant Center**, enter the [Merchant ID](#listitem-idm243381106444736) of your GMC sub-account.
In **Merchant Reference Column**, choose the attribute within your feed that contains your merchant center name, merchant center ID, or seller ID.
Select the appropriate target country and language for the feed in **Target Country** and **Target Language**.
Define how often you want the platform to perform a complete product upload in **Full Upload Interval (in days)**. To avoid product expiration, the platform exports new, deleted, changed, and unchanged products during a complete upload performed once every defined time interval.
Google Merchant Center deactivates unchanged products after 30 days or sooner if a specified number of days have passed.
Choose your GMC authentication in **Authentication to use**. If you haven't created the authentication in the platform yet, select **Add New Authentication** and create it, as previously seen in [Prerequisites](#listitem-idm241690553222369).
Select **On** in **Create Merchant Centers** to let the platform create new merchant centers in your GMC account. This option only works when you use the merchant center name or seller ID as your merchant reference in **Merchant Reference Column**. By default, this option is on.
Select **On** in **Enable Error Log File** to let Productsup upload feedback files that contain export-related errors as a new data source. You can also download the zipped errors file from the Run log.
The ZIP folder may contain error logs spread across different files. You can search for something specific in the logs using a keyword, for example, `product ID`. Some text editors let you search for a keyword across all files in a ZIP file.
In **Merchant Center Cleanup**, choose **Yes** to delete products within GMC that do not originate from Productsup. By default, this option is disabled.*This setting should only be used once*. You can enable it if you are migrating from other service providers to Productsup. Once the migration is over, you should disable this setting.
Keeping this setting enabled can cause unexpected product deletions. For example, during a full catalog export, the destination matches the items it exports from your site with the products already available in your GMC. If a product in your GMC isn't present in the export, the destination removes it from GMC.
In **Reference Validation (regex)**, leave the default value `#.+#` for Productsup to check whether your products follow the data structure required by GMC. Once the platform validates your products, it can send them to Google Merchant Center.
From the **Merchant Reference Type** drop-down list, choose one of the following options depending on what the attribute you chose in **Merchant Reference Column** contains:
* **Merchant Reference Column contains the Merchant Center Name**
* **Merchant Reference Column contains the Merchant Center ID**
* **Merchant Reference Column contains the Seller ID**
Enter the name of each newly created merchant center account in **New Merchant Account Name**. This setting applies only if you use the seller ID as a merchant reference.
Select **On** in **Remove Empty Subaccounts** to remove empty sub-accounts from your Google Merchant Center before running a new export. With this option On, the API deletes empty sub-accounts every time the site runs.
In **Log API calls**, select **On** for the platform to log calls to the GMC API. You can find the logs in the Run log.
In **Log headers of API calls**, select **On** to add response headers to the logs.
In **API call logging end time**, enter a date using the `YYYYMMDD` or `YYYY-MM-DD` format, stating when the platform should stop logging API calls.
Do not let this feature run indefinitely, as it generates excessive files and slows exports.
Turn on the destination by selecting **On** in **Active**.
Select **Save**.
Go to **Dataflow** to locate all the attributes mandatory for Google Merchant Center and map them from import to export.
Go to **Data View** to optimize your data as needed. See [Rule box category Google Merchant Center](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/rule-box-category-google-merchant-center) for more information.
The API is more restrictive than the SFTP or URL upload. If you upload an incorrect category or your feed is missing mandatory attributes, the product upload fails.
Export your feed to GMC via API [#export-your-feed-to-gmc-via-api]
When you export to GMC via API, you can't download your export file from the Files panel in the Overview tab of your export setup.
Export your product feed by selecting **Export** or **Run** in the top-right corner of your site's view.
Make sure to export unavailable products with the status `out of stock`. Otherwise, they appear available in GMC.
Once the run completes, you can see the result in the Run log. To open it, select the **Run log** icon in the top-right corner of your site's view.
If the export fails, you can check error messages in the Run log provided that you have turned on the **Enable Error Log File** option as previously seen in [see the relevant section](#step-idm241657788961800) or [see the relevant section](#step-idm243316491590336). Otherwise, correct your feed and try again.You can also go to **Error Log** and open your site's last run to see what went wrong with it.
After the first upload in GMC, your products could take longer than expected to display in your organization. If you have already exported your feed to GMC via API, the process should take less time.
# Add Google Analytics 4 exports
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Google has announced the sunsetting of Universal Analytics by July 2023 and a move to the platform's new version called Google Analytics 4.
Productsup has added five (5) Google Analytics 4 export channels that let you send data to your GA4 instances:
. *Google Analytics 4 - Cost Data Export* – This export template lets you import cost data, such as campaign costs, into GA4 and get a better overview and analysis of campaign performance and ROI.
. *Google Analytics 4 - Item Data Export* – This export template lets you import item data into GA4 and measure user behavior, traffic, conversions, and other metrics at the product level.
. *Google Analytics 4 - Offline Data Export* – This export template lets you import offline data from sources that don't have an internet connection into GA4 to enrich the data collected online.
. *Google Analytics 4 - User Data Export (client-ID)* – This export template lets you import user data, such as last purchase date or loyalty rating, into GA4 to improve user segmentation and remarketing audiences. Use this export template if you identify users by Client ID assigned to each unique user of your website.
. *Google Analytics 4 - User Data Export (user-ID)* – This export template lets you import user data, such as last purchase date or loyalty rating, into GA4 to improve user segmentation and remarketing audiences. Use this export template if you identify users by User ID assigned only to logged-in users.
You can still use *Google Analytics Product Export* while using Universal Analytics. But we encourage you to move to the new Google Analytics 4 exports as soon as you move to GA4.
All these exports use the flat-file approach, where Productsup generates a CSV file with the needed data to let you upload it to your Google Analytics property manually. See [About Product Data](https://support.google.com/analytics/answer/6066852) for more information on uploading product data to Google Analytics 4.
Prerequisites [#prerequisites]
To upload the product data from Productsup to GA4, you need to:
* Have an active GA4 account.
Set up Google Analytics 4 exports [#set-up-google-analytics-4-exports]
To set up the necessary GA4 exports:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for the needed Google Analytics 4 export, hover over it, and select **Add**.
Go to **Dataflow** from the site's main menu and choose the added export from the dropdown in the toolbar.
Map the attributes from import to export.
Use the **Automap connections** drop-down menu in the top ribbon to let the platform automatically connect the attributes.
Go to **Exports** and select the name of the needed export.
Select **Add Destination**.
Select *Productsup Server* from the **Destination** drop-down menu and select **Save**.
If you want to send your CSV file to an FTP, SFTP, or FTPS server, select *SFTP/FTP/FTPS Server* as a destination. If you don't have a server account yet, you can create one using the **FTP Accounts** feature in Productsup. See [Export your data to an FTP, SFTP, or FTPS server](/docs/help-center/export-data-feeds/set-up-an-export-destination/add-an-ftp-sftp-or-ftps-destination) for more details.
If your data is ready, select **Run** or **Export this export** in the upper right corner of the page.
To download the output CSV file, select the link to the file that appears in the *Filename* section at the bottom of the export setup page.
Import the downloaded file to your GA4 account.
# Add Bazaarvoice export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Bazaarvoice is a platform brands can use to integrate user-generated content such as product reviews, ratings, Q\&As, and visual and social content. Our Bazaarvoice integration enables you to syndicate your product catalog to Bazaarvoice to map the UGC to the correct products. The export generates an XML file and sends it to Bazaarvoice's SFTP.
If your product catalog is above 750,000 products, Bazaarvoice sometimes recommends splitting it into multiple XML files. You should confirm with your Bazaarvoice contact whether you should do this in your case. Productsup provides the **Split feed** feature in the Bazaarvoice destination setup page, which lets you split the feed into multiple files.
Prerequisites [#prerequisites]
To add the Bazaarvoice export, you need to:
. Create a Bazaarvoice account, if you don't have one.
. Get the SFTP credentials for Bazaarvoice.
Set up Bazaarvoice export [#set-up-bazaarvoice-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Bazaarvoice*, hover over it, and select **Add**.
Go to **Dataflow** from the site's main menu and choose the added export from the drop-down menu in the top ribbon on the left.
Map the attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information. The Bazaarvoice mapping has the following peculiarities:
* This export supports custom attributes. You need to set them up individually. The attribute name should start with *Attribute@*. See [Filter catalog data based on custom product attributes](https://knowledge.bazaarvoice.com/wp-content/conversations/en_US/Collect/xml_feed.html#filter-catalog-data-based-on-custom-product-attributes) for more information. For example, to pass the custom attribute **example**, create the custom attribute **Attribute\@example** on the export stage and map the relevant attributes to this attribute from the previous stages.
* Bazaarvoice has a concept of product families and bundles. See [Configure product families](https://knowledge.bazaarvoice.com/wp-content/conversations/en_US/Collect/xml_feed.html#using-the-product-feed) for more information. You need to map the family and bundle name to the **BV\_FE\_FAMILY** and **BV\_FE\_EXPAND** attributes respectively.
* Starting from the Bazaarvoice version 15.1, the **Currency** attribute accepts prices with currency such as `19.99 EUR`. The output on XML may look as follows:
```
```
* The **EAN**, **UPC**, **MPN**, and **ModelNumber** attributes accept multiple values separated by comma. For example, mapping of `123456789101,123456789102,123456789103` to the **EAN** attribute results in the following XML:
```
123456789101
123456789102
123456789103
```
* If you have localized brand and category names, create custom attributes for them in the following format: `ATTRIBUTENAME@ATTRIBUTEVALUE`.For example, if you create the attributes:
* **BrandName\_locale\@en\_CA** with value `Second Brand CA`
* **BrandName\_locale\@fr\_CA** with value `Deuxième marque CA`
along with the standard attributes:
* **BrandExternalId** with value `BBB`
* **BrandName** with value `Second Brand`,
the platform creates the following output in XML:
```
BBB
Second Brand
Second Brand CA
Deuxième marque CA
```
Go to **Exports** and select *Bazaarvoice*.
Select **Add Destination**.
Select *Bazaarvoice* from the **Destination** drop-down menu, and choose **Save**.
In **XML Feed name**, enter the feed name of generated file.
In **SFTP Host**, provide your server host starting with `sftp://`.
The target host must be one of Bazaarvoice’s supported Staging or Production servers, which are each region-specific. See [Bazaarvoice Knowledge Base](https://docs.bazaarvoice.com/articles/#!ratings-reviews-legacy-prr/product_feeds/a/sftp-connection-values).
| Environment | Region | Server Host |
| ----------- | ------ | --------------------------------- |
| Staging | Europe | sftp\://sftp7-stg.bazaarvoice.com |
| Staging | US | sftp\://sftp-stg.bazaarvoice.com |
| Production | Europe | sftp\://sftp7.bazaarvoice.com |
| Production | US | sftp\://sftp.bazaarvoice.com |
In **SFTP Port**, enter `22`.
In **SFTP Directory**, enter the directory where the platform should export the file. By default, it is `/import-inbox`.
Provide you your SFTP credentials in **SFTP Username** and **SFTP password**. If you don't know your SFTP credentials or your file location, contact [Bazaarvoice Support](https://knowledge.bazaarvoice.com/wp-content/knowledge/en_US/Contacting_support.html).
In **Remote File Name**, enter the name of the generated XML file. By default, it is `bazaarvoice.xml`.
In **Product Feed Version**, enter your feed version or leave the default `http://www.bazaarvoice.com/xs/PRR/ProductFeed/14.7`. See [XML feed](https://knowledge.bazaarvoice.com/wp-content/conversations/en_US/Collect/xml_feed.html#example-xml-feed) for more information.
Optionally, in **Category file URL**, enter your category file URL.
Optionally, in **Category File Delimiter**, select a delimiter.
Leave the **Encoding Fix** toggle *On* to ensure the data is UTF-8 encoded. Toggle it to **Off** if you want to export the data with default encoding.
Leave the **Splits feed** toggle *On* to split the files containing over 750,000 products into separate XML files, as required by Bazaarvoice.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
If your data is ready, select **Run** or **Export this export** in the upper right corner of the page.
# Add Bol export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Bol is an online retail platform and one of the largest e-commerce websites in the Netherlands and Belgium. It’s an online marketplace where customers can buy a wide range of products, including books, electronics, clothing, and home goods.
Currently, we support only nl and nl/be languages and a specific list of categories.
To let you sell your products on Bol, Productsup has built an ecosystem that sends products and offers data to Bol and imports order data from Bol into Productsup.
The ecosystem consists of four (4) exports and two (2) data sources to let you manage your products and orders on Bol:
. \*Bol Products Delta API (NL, BE)\*This export creates and sends products to your Bol account. Usually, first, you send the products to Bol and then, for those placed products, you send the offers. But if your products are already on Bol, you can only send the offers and skip this export. When setting up this export, you also need to use multiple category-specific exports that contain category-specific product attributes (CSA). Also, this product creation export is a delta-based export that sends only the new, changed, or deleted products to Bol instead of exporting the entire product catalog during every site run.
. *Bol Offers Management Delta*This export creates and sends new offers to Bol, updates existing ones, and deletes the ones that are no longer in the import feed. An offer is your individual product listing on Bol where you offer a certain product for a certain price with certain shipment conditions. Use this export after sending the products to Bol. It is a delta-based export that sends only the new, changed, or deleted product listings to Bol instead of exporting the entire catalog during every site run.
. *Bol Order Shipment Delta*This export updates shipment-related data on Bol.
. *Bol Order Cancellation Delta*This export lets you acknowledge order cancellation from a buyer on Bol.
. *Bol Offers*This data source lets you upload your offers from Bol to Productsup to use them for *Bol Offers Management Delta*.
. *Bol Orders*This data source lets you upload the orders from Bol to Productsup to use them for *Bol.com orders cancellation delta export* and *Bol Order Shipment Delta*.
Prerequisites [#prerequisites]
To set up the Bol ecosystem in Productsup, you need to:
. Create a project in your Productsup organization and, in this project, create separate sites for each Bol import: products, offers, and orders.
This is a recommended option. If a separate Bol project doesn't fit your overall organization structure, ignore this recommendation.
. Create a retailer account on Bol, if you don't have one. See the [guide to working with Bol’s Retailer API](https://api.bol.com/retailer/public/Retailer-API/index.html) for more information on registering as a retailer on Bol.
. Have login and password for your Bol retailer account.
. Prepare a list of the Bol categories you want to sell the products in.
This integration has category-specific channels. Productsup supports only some categories by default. But we can add missing categories on request. It may take around two weeks to add support for your request. To request the necessary categories, countries, or languages for this integration, contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) and provide the following information:
* List of categories.
* Region or language. We currently support NL, NL/BE. You can request FR, FR/BE.
. Import your products to Productsup as the main data source. The feed should contain the category differentiator to map your categories to the Bol's categories.
. Set up a *Classification Mapping* list for categories.
Bol re-authentication (upcoming) [#bol-re-authentication-upcoming]
Bol is introducing [more detailed permission controls](https://api.bol.com/retailer/public/Retailer-API/fine-grained-access.html) for connected platforms. From *mid-August*, you need to re-authenticate your Bol account through Productsup and approve the specific permissions listed below.
This doesn't change any of Productsup's capabilities on Bol. Re-authenticating is required to stay compatible with Bol's new security requirements. Existing connections keep working until they expire; after that, you must re-authenticate to avoid interruptions to your offers, orders, or shipments.
| Permission | Used for |
| -------------------------- | ----------------------------------------------------------------------------- |
| **Manage offers** | Creating and updating offers, prices, and stock, and importing current offers |
| **Manage Product Content** | Sending product titles, descriptions, and attributes to Bol |
| **Manage Orders** | Importing orders and order statuses, and cancelling order items |
| **Manage shipments** | Sending shipment and track-and-trace notifications to Bol |
Approve all four permissions to keep every feature working as expected.
Set up a Classification Mapping list for Bol [#set-up-a-classification-mapping-list-for-bol]
If you use specific category names, you must map them to the Bol categories with the help of the *Classification Mapping* list so that Productsup knows which sub-channels should be available to you, and Bol would receive the correct category names.
Go to **Lists** from your site's main menu and select **ADD LIST**.
Choose **Classification Mapping** and select **Continue**.
In **Name**, give your list a custom name to help you identify it among others. You can later edit it.
In **Classification**, select **Bol Products Delta API (NL, BE)**.
In **Stage**, choose the **Import** stage to replace values with the classification categories.
In **Attribute**, enter and select attributes from the list of pre-defined values from your selected import attribute's column. The platform later populates the list with the values of this attribute to let you choose and map the needed category values.
Optionally, toggle on the **Share list** button and choose one of the following:
1. **Account level** shares this list with all sites across all projects under this organization.
2. **Project level** shares this list with all sites under this project.
If you share the list at the organization or project level, the platform updates the list during an import from the original site where you created the list.
Select **Add**.
Map your categories to the Bol categories. Go through all the values of your category attribute in the column on the left and select the corresponding Bol categories in the **Replace term** column.
You must create and set up a new Classification Mapping list every time you modify the chosen category attribute in your data source and import its new values into your site. Otherwise, the already existing list can't upload your new values, and you can't map them to the corresponding Bol categories. Once you create a new Classification Mapping list, you need to choose it in the related rule box.
After setting up the export as explained in the next section, you can map the attributes and apply the Classification Mapping list with the rule boxes.
Send your products to Bol [#send-your-products-to-bol]
In the site dedicated to sending your products to Bol, add and set up the export *Bol Products Delta API (NL, BE)*:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Bol Products Delta API (NL, BE)*, hover over it, and select **Add**.
On the **Exports** page, select the name of the added export to set it up.
Select **Add Destination**, choose *Bol.com Product Delta Export (NL/BE)* from the drop-down list, give it a name as desired, and select **Save**.
In **Authentication selection**, select an existing one or select the **Add New Authentication** button. The platform redirects you to the Bol retailer account.
Leave the **Feedback Import** button *On* to let Productsup receive a feedback file from the Bol API in case of export errors. This helps troubleshoot the setup.
Leave the **Category Specific Attributes** button *On* to map category-specific attributes in Dataflow.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** and select *Bol Products Delta API (NL, BE)* from the drop-down menu on the left.
Set up the main channel:
Map the `category` attribute in the import level to `__gpc_code` and `gpc_code_name` in the intermediate stage.
For both **\_\_gpc\_code** and **gpc\_code\_name**, on the intermediate level, add the **Classification Mapping** rule box and choose the list created in [Set up a Classification Mapping list for Bol](#section-idm353416186897364).
For **\_\_gpc\_code**, on the intermediate stage, add the **Split String** rule box below the *Classification Mapping* rule box and enter the following values:
* **Splitter**: a single space without the quotation marks
* **From**: `0`
* **Items**: `1`
For **gpc\_code\_name**, on the intermediate stage, add the **Split String** rule box below the *Classification Mapping* rule box and enter the following values:
* **Splitter**: a single space without quotation marks
* **From**: `1`
* **Items**: `1`
Ensure you saved all changes.
Map these and other necessary attributes from the import to the export stage.
To let the site display your category-specific attributes in Dataflow, select **Run** or **Import** in the top-right corner of your view.
This run will fail because you haven't yet mapped all the mandatory attributes, so no data export occurs at this stage. The aim of the run is to import the needed categories and attributes into Dataflow.
Once the site run finishes, the **Classifications** drop-down menu appears in the upper ribbon in Dataflow. Select each category in this drop-down menu to let Dataflow display the relevant category-specific attributes in the export stage. Map all the needed attributes from import to export.
If you can't see the **Classifications** drop-down menu when the site run is complete, refresh your page.
If some attributes are missing on the intermediate stage, add them manually.
Go to **Data View** from the same site's main menu and choose *Bol Products Delta API (NL, BE)* from the drop-down menu on the top left-hand side.
For each attribute, select **Analyze** to ensure your data is compliant with the Bol expectations. Alternatively, select the **Overview** drop-down and choose **Readiness**.
Once your data is ready, select **Run** in the top-right corner of your view to send your products to Bol.
Import your offers to Productsup [#import-your-offers-to-productsup]
After you have exported your products, you can import your offers to Productsup as an additional data source and map them by EAN (European Article Number) to the products. This allows Productsup to identify which EANs the platform has already placed as offers on Bol and which it should send as new offers. To import your offers:
Go to **Data Sources** from the main menu of the site dedicated to the Bol offers.
Select **ADD DATA SOURCE**.
Add your products as the main data source. For example, you can use the *Google Sheets* data source. It should be the same product feed that you used in the site dedicated to product creation.
Go back to the **Data Sources** page, search for *Bol Offers* in the **Search** bar, and select **Add**. Give your data source a custom name as desired, then select **Continue**.
Set up your data source:
In **Authentication selection**, select an existing one or select the **Add New Authentication** button. The platform redirects you to the Bol retailer account.
Optionally, add a description.
Select **Save**.
After the platform redirects you to **Data Sources**, select the cogwheel icon (**⚙**) next to your newly added data source.
Scroll down to the **Content Mode** panel and select **Additional Data Source**.
In the **Additional Data Source Types** section, leave **Additional Data Source Values Always (Default)** selected by default. This option lets you replace the main data source values with the additional data source values, even if the additional data source values are empty.
In **ID Column In This Feed**, enter the column's name within your additional data source that contains the products EANs. This field is case-sensitive.
In the **ID Column From Your Main Feed** drop-down menu, select a column in your main data source that Productsup should map to the products EANs.
* The platform updates the offers for the products with the same EANs in the main and additional data sources, instead of creating new offers.
* The platform creates new offers for the products with EANs that don't match between the main and additional data sources.
* The platform deletes the offers related to EANs that aren’t in the feed anymore.
Select **Save**.
Select **Import** to import your offers to Productsup.
If your **fulfilment.method** attribute contains FBR, you must provide the number of delivery days in the **deliveryCode** attribute.
If your **fulfilment.method** attribute contains FBB, you must set `null` in the **deliveryCode** attribute.
See [Update an offer](https://api.bol.com/retailer/public/Retailer-API/v9/functional/retailer-api/offers.html#_update_an_offer) for more information about specific attribute settings.
Send your offers to Bol [#send-your-offers-to-bol]
After you have imported the offers, you can add and set up *Bol Offers Management Delta* in the site dedicated to offers:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Bol Offers Management Delta*, hover over it, and select **Add**.
On the **Exports** page, select the name of the added export to set it up.
Select **Add Destination**, choose *Bol Offers Management Delta* from the drop-down list, give it a name as desired, and then select **Save**.
In **Authentication selection**, select an existing one or select the **Add New Authentication** button. The platform redirects you to the Bol retailer account.
Leave the **Feedback Import** button *On* to let Productsup receive a feedback file from the Bol API in case of export errors. This helps troubleshoot the setup.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** and map the attributes from import to export.
The **economic\_operator\_id** attribute is mandatory now for creating a valid offer. To get the ID:
Add the economic operator manually in the Bol. seller’s account.
Import the ID via API using Postman or similar tool. See [Economic Operator API - V1 (1.0.4)](https://api.bol.com/registry/redoc/economic-operators/economic-operators-v1.html) for more information. Add the ID of the created operator to the **economic\_operator\_id** attribute.
Ensure you map **economic\_operator\_id** attribute from import to export in Dataflow.
Contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) if you need help with adding your economic operator ID.
Once your data is ready, select **Run** in the top-right corner of your view to send your offers to Bol.
Running the offers export in less than 15 minutes after the previous run results in retrieving the same export file. You need to wait at least 15 minutes after the previous export run to send the new, updated, or deleted offers.
Import orders from Bol [#import-orders-from-bol]
To let Productsup import your orders from Bol, do the following in the site dedicated to the Bol orders:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Bol Orders*, select **Add**, give it a name as desired, and choose **Continue**.
Set up your data source:
In **Fulfilment method**, select the fulfillment option that Productsup should import:
* **FBR** imports only orders fulfilled by the retailer.
* **FBB** imports only orders fulfilled by Bol.
* **ALL** imports both FBR and FBB.
In **Status**, select the order status that Productsup should import:
* **OPEN** imports only open orders excluding shipped and canceled orders.
* **SHIPPED** imports only shipped orders.
* **ALL** imports both open and shipped orders.
Set either **Change interval minute** or **Latest change date** that are mutually exclusive:
* In **Change interval minute**, you can set how many minutes passed since the latest change on an ordered product. You can enter the values from `1` to `60`.
* In **Latest change date**, you can select the date when the latest change happened on an ordered product. You can select the date in the period of up to three (3) months.
Bol recommends using *Change interval minute*. See [Bol's Best practices - order process](https://api.bol.com/retailer/public/Retailer-API/v9/functional/retailer-api/orders-shipments.html#_filtering_order_items_by_fulfilment_method).
In **Authentication selection**, select an existing one or select the **Add New Authentication** button. The platform redirects you to the Bol retailer account.
Optionally, add a description.
Select **Save**.
Select **Import** to import your orders.
During the time between retrieving an open order and shipping it, a customer can still request cancellation. If there is a long time between retrieving an open order and shipping, we recommend retrieving all the open orders again before shipping to check for possible cancellation requests from the customers.
Send order cancellation updates to Bol [#send-order-cancellation-updates-to-bol]
To change the status of your orders on Bol and inform your customers about order status changes, after importing the orders from Bol to Productsup, you can add and set up *Bol Order Cancellation Delta* in the site dedicated to orders:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Bol Order Cancellation Delta*, hover over it, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Bol Order Cancellation Delta* from the drop-down list, give it a name as desired, and select **Save**.
In **Authentication selection**, select an existing one or select the **Add New Authentication** button. The platform redirects you to the Bol retailer account.
Leave the **Feedback Import** button *On* to let Productsup receive a feedback file from the Bol API in case of export errors. This helps troubleshoot the setup.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Once your data is ready, select **Run** in the top-right corner of your view to send your data about cancellations to Bol.
If a customer only cancels a single item within an order, you only need to cancel this one item and ship the other ordered items.
To confirm the cancellation of a single ordered item within an order, assign the value *REQUESTED\_BY\_CUSTOMER* to the **reasonCode** attribute.
Don't use the reason *REQUESTED\_BY\_CUSTOMER* without a customer cancellation. For example, when the item is out of stock, as it negatively impacts your performance scores.
Send shipment notification updates to Bol [#send-shipment-notification-updates-to-bol]
To change the status of your shipment at Bol and inform your customers about it, you can add and set up *Bol Order Shipment Delta* in the site dedicated to orders after importing the orders from Bol to Productsup.
Bol supports shipment in three (3) different ways:
1. *LVB/FBB* means that Bol handles the order from start to end. Therefore, the shipment export doesn't include FBB orders.
2. *FBR with own shipping labels* means that you process these orders by yourself and must provide the information about them with tracking numbers and transporter codes to Bol. See [Transporters](https://api.bol.com/retailer/public/Retailer-API/v9/functional/retailer-api/orders-shipments.html#_transporters).
3. *FBR with shipping labels purchased via Bol* isn't supported by Productsup.
If you haven't handled the order within three (3) days of the expected delivery date, Bol automatically cancels such FBR orders and this negatively impacts your performance score.
An order can consist of one or more items. All mutations in the API depend on an item. This means you ship or cancel every item separately using its **orderItemId**. Even if you ship them in one box, the API needs separate confirmations or cancellations per item. The order remains open until you shipped all items. It stays open also for the already shipped items from the same order.
Correspondingly, there are two ways of setting up the shipment or cancellation export:
. [Set up shipping or cancellation per orderItem](#section-idm234553733872264).
. [Set up shipping or cancellation of the entire order in one package per orderId](#section-idm234553762431943)
Set up shipping or cancellation per orderItem [#set-up-shipping-or-cancellation-per-orderitem]
Bol prefers this approach. This setup gives you full control over each item in an order. For example, it lets you ship one (1) order in multiple parcels if needed or to confirm the customer's cancellation of a specific item from the order.
You must import `trackingNumber` and `careerCode` per **orderItemId** to Productsup.
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Add your order management system as the main data source and set it up.
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Bol Order Shipment Delta*, hover over it, and select **Add**.
You may also choose to add the *Bol Order Cancellation Delta* export instead.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Bol Order Shipment Delta* from the drop-down menu, give it a name as desired, and select **Save**.
In **Authentication selection**, choose an existing authentication or select the **Add New Authentication** button. The platform redirects you to the Bol retailer account.
Leave the **Feedback Import** button *On* to let Productsup receive a feedback file from the Bol API in case of export errors. This helps you troubleshoot the setup.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** and map the attributes from import to export.
Once your data is ready, select **Run** in the top-right corner of the page to send your shipment notifications to Bol.
Set up shipping or cancellation of the entire order in one package per orderId [#set-up-shipping-or-cancellation-of-the-entire-order-in-one-package-per-orderid]
This approach doesn't let you control the shipment or cancellation of individual items in an order. If a customer cancels only one (1) item of an order, you must handle this manually to prevent a negative impact from Bol.
This setup lets you ship or cancel orders without storing and managing **orderItemIds** in your main order management system. It is enough to import **trackingNumber** and **careerCode** per **orderId** to Productsup.
To set up this type of the shipping or canceling export:
Add *Bol Orders* as a main data source as described in [Import orders from Bol](#section-idm4611366625382434168764530978).
Add your order management system as an additional data source. See [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources).
Map the main and additional data sources by **orderId** in the **ID Column In This Feed** and **ID Column From Your Main Feed**.
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Bol Order Shipment Delta*, hover over it, and select **Add**.
You may also choose to add the *Bol Order Cancellation Delta* export instead.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Bol Order Shipment Delta* from the drop-down menu, give it a name as desired, and select **Save**.
In **Authentication selection**, select an existing authentication or select the **Add New Authentication** button. The platform redirects you to the Bol retailer account.
Leave the **Feedback Import** button *On* to let Productsup receive a feedback file from the Bol API in case of export errors. This helps you troubleshoot the setup.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** and map the attributes from import to export.
Once your data is ready, select **Run** in the top-right corner of your view to send your shipment notifications to Bol.
# Add the Amazon Offer Creation export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The Amazon Offer Creation export lets you list a new offer (price, condition, and availability) on an Amazon ASIN that already exists in Amazon's catalog. This is different from the Amazon Product Export: it does not create a new product or touch the ASIN's content data, and it does not require category-specific attribute (CSA) mapping. Use it when you want to co-list against an existing catalog entry rather than create a listing from scratch.
Once an offer exists, use the [Amazon Inventory and Price Update SP-API export](/docs/help-center/export-data-feeds/add-export/add-amazon-inventory-and-price-update-sp-api-export) to keep its price and stock current. The Offer Creation export only creates new offers — it does not update existing ones.
Prerequisites [#prerequisites]
Before setting up the Amazon Offer Creation export, confirm the following:
* You have an active Amazon Seller Central account. This export is not available for Vendor Central accounts.
* You know the ASIN you want to attach each offer to. If you only have a barcode (UPC, EAN, GTIN, ISBN, or JAN), see [Find Amazon ASINs by barcode](/docs/help-center/import-data-feeds/import-data-from-third-party-external-systems/find-amazon-asins-by-barcode) first.
* The marketplace you want to export to is available in the export list. See [Add the export](#add-the-export).
* Your Amazon account is in good health: valid payment method, correct VAT or tax details, and no outstanding compliance issues.
Amazon restricts who can list an offer against certain ASINs — for example, brand-registered or gated products. If Amazon rejects your offer for this reason, you or your client need approval from Amazon or the brand owner before the offer can go live. This is an Amazon policy, not a Productsup limitation.
Add the export [#add-the-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for the marketplace you want to export to. Exports follow the naming format **Amazon Seller Central – Offer Creation (XX)**, where **XX** is the country code of your target marketplace, for example *US*, *DE*, or *FR*.
If the marketplace you need is not in the list, that region is not yet supported. Contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) to request it.
Hover over the export and select **Add**.
Configure the destination [#configure-the-destination]
On the **Exports** page, select the name of the export you added.
Select **Add Destination**, choose *Amazon Seller Offer Creation Delta Export* from the dropdown, give it a name, and select **Save**.
In **Authentication**, select an existing authentication or select **Add New Authentication** to connect your Amazon account via OAuth.
Selecting **Add New Authentication** redirects you to Amazon to complete the authorization. Once authorized, Amazon redirects you back to Productsup automatically.
In **Marketplace ID**, select the country you are exporting to. This must match the export you selected in [Add the export](#add-the-export).
In **Seller ID**, enter your Amazon Seller ID. Leave this blank to use the Seller ID of the account you authenticated with in step 3.
Switch **Active** to *On* and select **Save**.
Map your data [#map-your-data]
Unlike the full Amazon Product Export, this export does not use category-specific attribute templates. Amazon resolves the product category for you, based on the ASIN, so you only map the offer fields below.
| Field | Required | Notes |
| :------------------------------------------------- | :------- | :------------------------------------------------- |
| SKU | Yes | Your own identifier for this offer |
| ASIN | Yes | The existing Amazon ASIN you're co-listing against |
| Condition | Yes | For example *new\_new* or *used\_good* |
| Price | Yes | Your offer price, with currency |
| Fulfillment channel | Yes | Whether you or Amazon (FBA) fulfill this offer |
| Quantity | Yes | Available stock for this offer |
| Handling time, sale price, and other offer details | No | Optional fields available in Dataflow |
Go to **Dataflow** from your site's main menu and select your Amazon Offer Creation export in the dropdown on the left.
Map your attributes to the fields listed above in the intermediate stage.
Select **Run** in the top-right corner of your view to submit your first offers.
Monitor results after submission [#monitor-results-after-submission]
An unknown, missing, or invalid ASIN is skipped rather than escalated to full product creation. Check your export's feedback to find and fix these rows.
A rejection specific to one offer, such as an invalid attribute value, is skipped so the rest of your export continues. Review the feedback for the affected SKU, correct the issue, and the offer is resubmitted on the next run.
Submission is asynchronous — a successfully submitted offer may take a few minutes to appear against the ASIN in Seller Central. To check on a specific offer immediately, set up an Amazon Product Import datasource using the **Listings API** source.
Common issues [#common-issues]
| Issue | Likely cause | What to do |
| :--------------------------------------------------- | :------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Offer skipped with feedback | ASIN is missing, invalid, or has no product type in this marketplace | Confirm the ASIN exists in this marketplace, or find it with [Find Amazon ASINs by barcode](/docs/help-center/import-data-feeds/import-data-from-third-party-external-systems/find-amazon-asins-by-barcode) |
| Offer rejected due to brand or category restrictions | The ASIN is brand-gated or otherwise restricted | Get approval from Amazon or the brand owner before listing against this ASIN |
| Offer accepted but not visible on Amazon | Amazon's asynchronous validation is still processing | Wait a few minutes, then check via the Amazon Product Import (Listings API) datasource or Seller Central |
| Authentication fails | Amazon account health issue | Check your Amazon account for expired payment details, missing VAT, or compliance flags |
| Marketplace missing from the export list | Not yet supported | Contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) to request it |
# Build your exports from scratch
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Build exports from scratch using a blank export if existing export templates don't suit your needs. Blank export is a blank canvas that you can customize as you need.
There are four types of blank export templates in Productsup:
. *Blank Export (empty)*. This blank export template lets you manually create a custom set of attributes in the export stage of Dataflow to meet the requirements of the desired channel. See [Set up Blank Export (empty) and Blank Export (with ID)](#section-idm455072265296483337401677465) for more information.Use *Blank Export (empty)* in the following cases:
* To create custom exports, test your exports, or use them in reports.
* To create an item setup sheet. See [Use an item setup sheet](/docs/help-center/export-data-feeds/special-export-setups/use-an-item-setup-sheet#section-idm463502822158883297643722671) for more information.
* To download a feed with more than 10,000 items. See [First steps with Data View](/docs/help-center/map-and-optimize-your-data/data-view/first-steps-with-data-view#section-idm232217635442184) for more information.
. *Blank Export (with ID)*. This blank export template is similar to *Blank Export (empty)* but has the **id** attribute pre-defined as a mandatory attribute in the export stage in Dataflow. See [Set up Blank Export (empty) and Blank Export (with ID)](#section-idm455072265296483337401677465) for more information.
. *Delta Blank Export*. This blank export template lets you work with delta updates. The most popular use case for Delta Blank Export involves exporting only new, changed, and removed items to your channels without exporting items with unchanged data. Delta updates reduce transport time and data volume for big feeds requiring few updates. See [Set up Delta Blank Export](#section-idm4557758669414433380650892281) for more information.
. *Export2Datasource Blank*. This blank export template lets you compile data from different sites within one organization into a single bucket and use this bucket as a data source in another data-accumulating site. See [Set up Export2Datasource Blank](#section-idm4663886527628833382440260539) for more information.
There are no analyzer tests for blank exports.
Add a blank export [#add-a-blank-export]
To add a blank export to your site, take the following steps:
>
> In Exports, you can see the added export. See the next sections for further setup steps based on the chosen blank export template.
>
Go to **Exports** from your site's main menu.
Select **Add export**.
Select the necessary blank export in the gray banner under the search field.
Set up Blank Export (empty) and Blank Export (with ID) [#set-up-blank-export-empty-and-blank-export-with-id]
*Blank Export (empty)* and *Blank Export (with ID)* let you create custom exports if none of the ready-made export templates fit your needs. These export templates are blank canvases where you can manually add and map the desired attributes in Dataflow.
The process of setting up the exports *Blank Export (empty)* and *Blank Export (with ID)* is similar:
Take the steps from [Add a blank export](#section-idm353337036706384) to add *Blank Export (empty)* or *Blank Export (with ID)*.
Go to **Dataflow** from the site's main menu and select your blank export from the dropdown on the left of the top toolbar.
Map the needed attributes from intermediate to export by dragging a connection from an attribute in the intermediate stage to **Drop or Click to add new field** in the export stage.
For *Blank Export (with ID)*, the **id** attribute is the only mandatory attribute. You must connect it with a corresponding attribute in the intermediate stage.
Go to **Exports**, find your blank export in the list of exports, and toggle its status in the *Status* column to **Active**.
Select the name of your blank export in the *Export name* column.
On the export setup page, select **Add Destination**.
Select the needed destination option from the **Destination** dropdown, and choose **Save**. See [Find the most suitable export destination](/docs/help-center/best-practices/find-the-most-suitable-export-destination) to choose a destination.
Set up your destination, and toggle **Active** to *On* to activate it. Select **Save** when done.
Select **Export this export** in the top-right corner of the page to send your data to the destination. Alternatively, the platform exports the data during the next scheduled run.
Set up Delta Blank Export [#set-up-delta-blank-export]
When you work with extensive data feeds, data processing in the platform may take a long time. With the help of *Delta Blank Export*, which uses delta updates, you can send only updated data to the needed channel.
Delta updates are a way of storing or transmitting data in the form of differences, called deltas, rather than complete data sets. With delta updates, the platform doesn't export unchanged items, which allows it to reduce transport time and data volume for large feeds.
The platform uses a unique item identifier, such as an ID, GTIN, or variant ID, to identify each item and compare its current data to its data from the previous run. The platform generates up to four (4) types of files for delta updates, depending on the data changes:
* **New**: items new to the feed.
* **Changed**: items that have been in the feed before, but the data has changed.
* **Deleted**: items that aren't in the feed anymore because of skip rules or deletions.
* **Unchanged**: items that have been in the feed before and haven't changed.
Use *Delta Blank Export* in the following cases:
* If you don't expect your entire data feed to change frequently.
* If your target channel requires you to export your data feed as delta updates due to technical requirements on their side.
Apart from *Delta Blank Export*, several partner-specific export templates have similar delta update features. For example, *Salesforce Commerce Cloud B2C: Inventory (Delta)* or *Facebook Dynamic Ads (Delta Upload)*. If you need support exploring your optimal solution, reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com).
To set up your *Delta Blank Export*, take the following steps:
Take the steps from [Add a blank export](#section-idm353337036706384) to add *Delta Blank Export*.
Go to **Dataflow** from the site's main menu and select your blank export from the dropdown on the left of the top toolbar.
Map the needed attributes from intermediate to export by dragging a connection from an attribute in the intermediate stage to **Drop or Click to add new field** in the export stage.
The export stage already has the **id** attribute. You must connect it with a corresponding attribute in the intermediate stage.
Go to **Exports**, find your blank export in the list of exports, and toggle its status in the *Status* column to **Active**.
Select the name of your blank export in the *Export name* column.
On the export setup page, select **Add Destination**.
Select the needed destination option from the **Destination** dropdown, and choose **Save**. See [Find the most suitable export destination](/docs/help-center/best-practices/find-the-most-suitable-export-destination) to choose a destination.
Set up your destination, and toggle **Active** to *On* to activate it. Select **Save** when done.
1. Some export destinations, for example, *Productsup Server*, may automatically create a file in the *Files* section on the export setup page. You don't need this file for *Delta Blank Export*. If you see an automatically created file, select **Setup** next to the file, then select **Delete**, and then confirm the action.
On the export setup page, select **Update Files** in the *Delta Files* section. A pop-up displays four files for delta updates: unchanged, new, modified, and deleted. Modify the file names as needed.
If the pre-configured extension of the files doesn't match requirements, contact [support@productsup.com](mailto:support@productsup.com).
In the *Delta Files* pop-up, toggle **Add Site ID to Delta Filenames** to *On* if your destination receives files with delta updates from multiple sites or systems. Enabling this option appends the site ID to the file names, allowing you to distinguish between files from different sites.
Select **Save** to close the *Delta Files* pop-up.
Select **Export this export** in the top-right corner of the page to send your data to the destination. Alternatively, the platform exports the data during the next scheduled run.
After each export run, you can download any file with delta updates in the *Filename* section at the bottom of the export setup page.
Generate empty delta files [#generate-empty-delta-files]
You may want the platform to generate files with delta updates for deleted or new items, even if such files are empty. It is necessary if your destination or target channel always expects to have four files (new, changed, deleted, and unchanged) with every export run. Otherwise, your destination or channel might ingest files from previous runs, which can cause ID conflict issues and item duplicates.
To enable the generation of empty files, follow the steps:
Your target channel or destination settings must also allow empty files. They may discard these empty files if they interpret them as obsolete or unchanged.
Go to **Exports** and select your *Delta Blank Export*.
Go to the *Settings* tab.
Check the box **Allow empty files (0 products)**, and select **Save** at the bottom of the page.
Export data in JSON and avoid creating empty delta files in Delta Blank Export [#export-data-in-json-and-avoid-creating-empty-delta-files-in-delta-blank-export]
If you use the `\Export\Json` plugin to export data in JSON files, the platform ignores whether you have checked the box **Allow empty files (0 products)** and always creates empty delta files for each export run. If you want to both export your data in the JSON format and avoid creating empty delta files, you should take these steps:
On the export setup page, go to the *Settings* tab, remove `\Export\Json` in **Export-Plugin**, and select **Save**.
Open the tab *Labels, Tags & Sorting*, find the section *Export Tags*, and enter the following under **Add new tag**:
1. In **Key**, enter `custom_csv_writer_class`.
2. In **Value**, enter `ProductsUp_Csv_File_Writer_Json`.
Select **Add tag** to save it.
Check your Delta Blank Export history [#check-your-delta-blank-export-history]
Go to **Exports** from your site's main menu.
Go to the *Export history* tab.
Activate the option **Show delta file changes** to view the export history with a breakdown of all types of delta updates.
Set up Export2Datasource Blank [#set-up-export2datasource-blank]
*Export2Datasource Blank* lets you compile data from different sites within an organization into one bucket and use this bucket as a data source in another data-accumulating site.
For example, you run a marketplace and, in the Productsup platform, you have hundreds of sites exporting your separate product feeds to the designated Google Merchant Center accounts. In this case, you may want a site that combines these different feeds into one main feed and exports it to price comparison channels, Facebook, or other systems. If you did it manually, you would have to create exports in each site, send data for each export to the Productsup Server, and then add each separate Productsup Server link as a data source in one data-accumulating site. Instead, you can use the *Export2Datasource Blank* export and export all your separate feeds into a bucket. Later, you can use this bucket as a single data source.
Contact [support@productsup.com](mailto:support@productsup.com) if you want to use this feature. Since it's an advanced tool, you may need assistance with the initial setup.
Prerequisites [#prerequisites]
To be able to export to and import from buckets, your Productsup organization should meet the following requirements:
* All sites from which you want to send data to the same bucket should have the export *Export2Datasource Blank* with the same bucket name.
You can create a copy of the export if you plan to use it multiple times without starting from scratch. See [Add export](/docs/help-center/export-data-feeds/add-export#section-idm353339436030962) for more information.
* If you have several buckets in your organization, each should have a unique name. Otherwise, the platform can't distinguish which bucket it should send data to.
* All sites that send data to the same bucket should have feeds with the same structure.
Export2Datasource Blank setup steps [#export2datasource-blank-setup-steps]
Take the steps from [Add a blank export](#section-idm353337036706384) to add *Export2Datasource Blank*.
Go to **Dataflow** from the site's main menu and select your blank export from the dropdown on the left of the top toolbar.
Map the needed attributes from intermediate to export by dragging a connection from an attribute in the intermediate stage to **Drop or Click to add new field** in the export stage.
The export stage already has the **id** attribute. You must connect it with a corresponding attribute in the intermediate stage.
Go to **Exports**, find your blank export in the list of exports, and toggle its status in the *Status* column to **Active**.
Select the name of your blank export in the *Export name* column.
On the export setup page, select **Add Destination**.
Select *Export to Data Source* from the **Destination** dropdown and select **Save**.
On the destination setup page, add a unique bucket name in **Bucket**.
You can't choose an already-created bucket in this field. If you want to send your data to an existing bucket, you must manually enter the existing bucket name. The field is case-sensitive.
By default, the destination doesn't export skipped items. To include skipped items in the export, toggle **Allow skipped rows** to *On*.
By default, the destination includes platform-generated attributes, for example, created by a data service, into the export and sends them to the bucket. This allows you to use these attributes in other sites without needing to apply the same data services or other features again. If you don't want to export these attributes to the bucket, toggle **Remove Passthru Columns** to *On*.
By default, the destination sends empty attributes to the bucket. To avoid sending empty attributes to the bucket, toggle **Remove Empty Columns** to *On*.
By default, the destination sends the export output file to the bucket regardless of whether it contains any data. To avoid exporting files without data, toggle **Prevent Empty Upload** to *On*.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Select **Export this export** in the top-right corner of the page to send your data to the destination. Alternatively, the platform exports the data during the next scheduled run.
*Export to Data Source* is a destination and not a file format. As a result, you can't edit file settings, such as file name, item limit, sorting actions, or item count.
Import data from a bucket via the data source Export to Data Source [#import-data-from-a-bucket-via-the-data-source-export-to-data-source]
To import data from a bucket into a data-accumulating site, take the following steps to set up the data source *Export to Data Source*:
Go to **Data Sources** from the site's main menu, and select **Add data source**.
Search for *Export to Data Source*, select **Add**, give it a name as desired, and then select **Continue**.
Select a necessary bucket from **Bucket**. If you don't see a list of existing buckets and haven't set one up in *Exports*, see [Set up a bucket destination](/docs/help-center/export-data-feeds/set-up-an-export-destination/set-up-a-bucket-destination).
To include skipped items in the import, toggle **Allow skipped rows** to *On*.
To skip importing data that came from invalid sites, toggle **Clear invalid sites** to *On*.
To remove platform-generated attributes from the import, toggle **Remove Passthru Columns** to *On*.
In **Description (optional)**, add a description for your data source. It substitutes the data source name in the *Overview* tab in *Data Sources*.
Select **Save** and select **Import** in the top-right corner of the page.
# Add Kaufland exports and import order data from Kaufland
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Kaufland is a large marketplace that offers a wide variety of products. It is very popular in Germany, with [Kaufland.de](https://www.kaufland.de/) attracting over 30 million visitors monthly. The marketplace is expanding to Czechia, Slovakia, Poland, Austria, Italy, and France with country-specific storefronts.
To let you sell your products on Kaufland, Productsup has built an ecosystem that sends product and order data to Kaufland and imports order data from Kaufland into Productsup:
. *Kaufland Product Creation*This API-based export lets you create and update products on Kaufland and contains the attributes relevant to products of all categories. When setting up this export, you also use multiple category-specific exports that contain category-specific product attributes. The product creation export is a delta-based export that sends only the new, changed, or deleted products to Kaufland instead of exporting the entire product catalog during every site run.
. *Kaufland Inventory Export*This API-based export lets you create and update your product listings on Kaufland. It is a delta-based export that sends only the new, changed, or deleted product listings to Kaufland instead of exporting the entire catalog during every site run.
. *Kaufland Orders Fulfilment Export*This API-based export sends order fulfillment updates to Kaufland to let you inform customers on Kaufland about the status of their orders. This is a delta-based export that sends only new order fulfillment data to Kaufland instead of sending the entire order catalog during every site run.
. *Kaufland Order Units*This API-based data source imports orders from Kaufland into Productsup to let you send the order data to your order management system.
Prerequisites [#prerequisites]
To set up the Kaufland ecosystem in Productsup, you need:
. A project in your Productsup organization. In this separate project, you need to create separate sites for each of the following types of data that you send to and receive from Kaufland:
* Products
* Inventories
* Orders
* Order fulfillment details
This is a recommended option. If a separate Kaufland project doesn't fit your overall organization structure, you can ignore this recommendation.
. A Kaufland Seller Center account. See [Become a seller on the Kaufland online marketplaces!](https://www.kaufland.de/seller-signup/en/) for more information on registering as a seller on Kaufland.
. An API key and API secret that you can find in your Kaufland Seller Center account.
. A list of all Kaufland categories you want to sell products in.
These integrations use category-specific attributes. Productsup supports only some categories by default. But we can add missing categories on request. It may take around two weeks to support your request. To request the necessary categories for Kaufland, contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) and provide a list of categories.
Decide which Kaufland export you should set up first [#decide-which-kaufland-export-you-should-set-up-first]
The Kaufland data schema distinguishes between a product and an inventory.
In Kaufland terms, a product is a set of metadata about an item that sellers offer on Kaufland. A collection of such products on Kaufland is equivalent to a catalog of all items sold on the platform.
An inventory is your individual product listing, or offer, on Kaufland. You offer a certain product for a certain price with certain shipment conditions. Every seller has an inventory per each product they sell on Kaufland.
Here is a diagram to help you identify what Kaufland export you need to set up first based on what data you want to send:
Your next steps depend on the option recommended by the diagram:
* See [Send products to Kaufland](#section-idm4485930642996833736842961611) to set up the *Kaufland Product Creation* export. Once done, you can move on to setting up *Kaufland Inventory Export*.
* See [Send inventories to Kaufland](#section-idm4591664900384034064977314961) to set up *Kaufland Inventory Export*. If your products are already available on Kaufland, you can skip setting up the product creation export.
Send products to Kaufland [#send-products-to-kaufland]
In the site dedicated to sending your products to Kaufland, add and set up the *Kaufland Product Creation* export:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Kaufland Product Creation*, hover over it, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Kaufland Product Export* from the drop-down list, give it a name, and then select **Save**.
In **Client Key** and **Secret Key**, enter the API key and secret you got in your Kaufland Seller Center to let the Productsup platform authenticate in your Kaufland account.
In **Locale**, choose the market where you plan to sell products:
* *de-DE* – German storefront in the German language.
* *cs-CZ* – Czech storefront in the Czech language.
* *sk-SK* – Slovakian storefront in the Slovakian language.
* *pl-PL* – Polish storefront in the Polish language.
* *de-AT* – Austrian storefront in the German language.
* *it-IT* – Italian storefront in the Italian language.
* *fr-FR* – French storefront in the French language.
Leave the **Feedback Import** toggle *On* to let the platform receive feedback files from the Kaufland API in case of export errors. This helps to troubleshoot the setup.
Leave the **Category Specific Attributes** toggle *On* to map category-specific attributes in Dataflow.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
See [Map category-specific attributes for Kaufland](#section-idm4602196929054434191328897484) to proceed.
Map category-specific attributes for Kaufland [#map-category-specific-attributes-for-kaufland]
To proceed with setting up your *Kaufland Product Creation* export, you need to create a Classification Mapping list for your categories and map all relevant category-specific attributes:
Go to **Lists** from your site's main menu and select **ADD LIST**.
Choose **Classification Mapping** and select **Continue**.
Give the list a desired name and select *Kaufland Product Creation* in **Classification**.
Choose **Import** in **Stage** and select the **Attribute** field to find the attribute in your import stage that contains your products' category data. Then, select **Add** at the bottom of the page to add the list.
Map your categories to the corresponding Kaufland categories in the **Replace term** column.
You must create and set up a new Classification Mapping list every time you modify the chosen category attribute in your data source and import its new values into your site. Otherwise, the already existing list can't upload your new values, and you can't map them to the corresponding Kaufland categories. Once you create a new Classification Mapping list, you need to choose it in the related rule box.
Go to **Dataflow** and select *Kaufland Product Creation* from the drop-down menu on the left.
Map all the needed attributes from import to export. The attributes you see in the export stage are relevant for products of all your Kaufland categories.
Map your import-stage category attribute to `category` in the intermediate stage. Then, map it to both `category` and `___category_path` in the export stage to add the needed rule boxes and apply the Classification Mapping list.
Select `category` in the intermediate stage and open the **Select an Option** drop-down menu on the right.Search for and select **Classification Mapping**. Choose your category list in **List** and select **Save**.
To let the site display your category-specific attributes in Dataflow, select **Run** or **Import** in the top-right corner of your view.
This run will fail because you haven't yet mapped all the mandatory attributes, so no data export occurs at this stage. The aim of the run is to import the needed categories and attributes into Dataflow.
Once the site run finishes, the **Classifications** drop-down menu appears in the upper ribbon in Dataflow. Select each category in this drop-down menu to let Dataflow display the relevant category-specific attributes in the export stage. Map all the needed attributes from import to export.
If you can't see the **Classifications** drop-down menu when the site run finishes, try refreshing your page.
Once your data is ready, select **Run** in the top-right corner of your view to send your products to Kaufland.
Product safety attributes [#product-safety-attributes]
The export *Kaufland Product Creation* has the following attributes dedicated to help you comply with the General Product Safety Regulation (GPSR):
* **ce\_certificate**
* **product\_safety\_contact.address**
* **product\_safety\_contact.email\_address**
* **product\_safety\_contact.name**
* **product\_safety\_contact.phone\_number**
* **safety\_guidelines**
Although these attributes are optional, we highly recommend populating them with relevant values and sending them to your Kaufland account to be GPSR-compliant.
Send inventories to Kaufland [#send-inventories-to-kaufland]
You can send your inventories to Kaufland only when your products already exist there.
In the site dedicated to sending your inventories to Kaufland, add and set up *Kaufland Inventory Export*:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Kaufland Inventory Export*, hover over it, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Kaufland Inventory Export* from the drop-down list, give it a name as desired, and then select **Save**.
In **Client Key** and **Secret Key**, enter the API key and secret you got in your Kaufland Seller Center to let the Productsup platform authenticate in your Kaufland account.
In **Storefront**, enter the market where you plan to send your product listings:
* *de* – Germany.
* *cz* – Czechia.
* *sk* – Slovakia.
* *pl* – Poland.
* *at* – Austria.
* *it* – Italy.
* *fr* – France.
Leave the **Feedback Import** toggle *On* to let the platform receive feedback files from the Kaufland API in case of export errors. This helps to troubleshoot the setup.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** and select *Kaufland Inventory Export* from the drop-down menu on the left.
Map all the needed attributes from import to export. See [Inventory CSV Files](https://sellerapi.kaufland.com/?page=inventory-files) for more information on attribute requirements.
The `ean` attribute contains the ID of the product from the *Kaufland Product Creation* export, while the `id` attribute uniquely identifies each inventory.
Once your data is ready, select **Run** in the top-right corner of your view to send your inventories to Kaufland.
Import orders from Kaufland [#import-orders-from-kaufland]
To let Productsup import your orders from Kaufland, do the following in the site dedicated to the Kaufland data source:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Kaufland Order Units*, select **Add**, give it a name as desired, and then choose **Continue**.
In **Client Key** and **Secret key**, enter the API key and secret you got in your Kaufland Seller Center to let the Productsup platform authenticate in your Kaufland account.
In **Storefront**, choose the market where you want to import your order data from:
* *de* – Germany.
* *cz* – Czechia.
* *sk* – Slovakia.
* *pl* – Poland.
* *at* – Austria.
* *it* – Italy.
* *fr* – France.
In **Status**, select the status that orders should have for Productsup to import them. The default option is *open*.
* *open* – A customer created a new order on Kaufland. Customers can still cancel orders with this state within 15 minutes after placing them.
* *need\_to\_be\_sent* – You received the order and need to dispatch it to the customer.
Use this order status to import only the orders you haven't yet sent to your customers.
* *sent* – You dispatched the order to the customer.
* *received* – The customer received your order. This order status is only available if you provide tracking information.
* *cancelled* – You or the customer canceled the order.
* *sent\_and\_autopaid* – You dispatched the order that the customer has paid for, but you haven't provided any tracking information. The 21-day period until payout has ended, and you can now receive payment for this order unit.
* *returned* – You received a return from the customer.
* *returned\_paid* – You received a return and refunded the cost of the related order items to the customer.
See [Managing orders](https://sellerapi.kaufland.com/?page=orders) for more information on managing orders on Kaufland.
If you want to import orders created within a specific timeframe only, choose the suitable options in **Updated Since** or **Created from**.For example, if you choose *24 hours* in **Created from**, the platform imports only the orders created within the last 24 hours. To import orders updated within the past seven (7) days, choose *7 days ago* in **Updated Since**.
Specify the desired name of the data source in **Description (optional)**.
Select **Save**.
Go to **Exports** from your site's main menu and select **Add export** to find and add your order management system. Set up the added export and map its relevant attributes in Dataflow.
Choose **Run** in the top-right corner of the page to let the site import your order data from Kaufland and send it to your order management system.
Send order fulfillment updates to Kaufland [#send-order-fulfillment-updates-to-kaufland]
To change the status of your orders on Kaufland and inform your customers about order status changes, do the following in the site dedicated to the Kaufland order fulfillment export:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Kaufland Orders Fulfilment Export*, hover over it, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Kaufland Orders Fulfilment Export* from the drop-down list, give it a name as desired, and then select **Save**.
In **Client Key** and **Secret Key**, enter the API key and secret you got in your Kaufland Seller Center to let the Productsup platform authenticate in your Kaufland account.
Leave the **Feedback Import** toggle *On* to let the platform receive feedback files from the Kaufland API in case of export errors. This helps to troubleshoot the setup.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** and select *Kaufland Orders Fulfilment Export* from the drop-down menu on the left.
Map all the needed attributes from import to export:
* `item_order_unit` contains the ID of the order unit. See [Managing orders](https://sellerapi.kaufland.com/?page=orders) for the explanation of the order unit term.
* `fulfilment_action` contains the action you are taking regarding the order. The accepted values are *fulfil*, *send*, and *cancel*.
If the value is *send*, you should provide tracking information in `tracking_number` and `carrier_code`. It isn't mandatory, but it is a best practice. See [Carrier Codes](https://sellerapi.kaufland.com/?page=order-files#carrier-codes) or check the analyzer tests for a full list of accepted carrier codes.If the value is *cancel*, you must provide a reason for cancellation in `cancel_reason`. This is mandatory. See [Cancellation Reasons](https://sellerapi.kaufland.com/?page=order-files#cancellation-reasons) or check the analyzer tests for a full list of accepted values.
Once all the settings are ready, you can send your order fulfillment updates to Kaufland. Select **Run** in the top-right corner of your view to send the data.
# Add Facebook Dynamic Ads export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
This document covers the setup of the export *Facebook Dynamic Ads* and the difference between all Facebook exports available in Productsup.
Using Productsup, you can send your product catalog to [Facebook Commerce Manager](https://business.facebook.com/commerce/), one of Meta Business Manager tools. With your product catalog available in Commerce Manager, you can advertise your products to wide audiences across the entire Meta ecosystem based on users' interests and previous behavior. The Meta ecosystem includes Facebook, Instagram, Messenger, and the Audience Network.
Productsup offers the following exports to send data to the Meta ecosystem:
| Export name | Export purpose and description |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *Facebook Dynamic Ads* | Sending your product catalog to Facebook Commerce Manager, where you can find it as a data feed added in the *Data sources* tab.You can use this export as a file or API-based export. For a detailed breakdown of the differences and advantages of these options, see [this table below](#informaltable-idm243509337719856).This export sends your entire catalog to Commerce Manager. If you have millions of products, exporting the entire catalog may take considerable time.See the following sections in this document for information on setting up this export. |
| *Facebook Dynamic Ads (Delta Upload)* | Sending changed products to Facebook Commerce Manager via the Facebook Marketing API. This export uses delta files, which means it sends only new, updated, and deleted products to Facebook instead of the entire catalog. The export doesn't send unchanged products to Commerce Manager, which helps reduce site-running times.When this export runs, it creates a *Productsup* app in the *Data sources* tab in Commerce Manager that uploads the changed data into your product catalog.See [Add Facebook Dynamic Ads (Delta Upload) export](/docs/help-center/export-data-feeds/add-export/add-facebook-dynamic-ads-delta-upload-export). |
| *Facebook Localized Catalog - Country Feed* | Sending additional country-specific data as a supplement to your product catalog in Facebook Commerce Manager. Useful for cases when you sell products across multiple countries that use different currencies or units of measurement.You can use this export as a file or API-based export. For a detailed breakdown of the differences and advantages of these options, see [this table below](#informaltable-idm243509337719856).This export sends your entire catalog to Commerce Manager. If you have millions of products, exporting the entire catalog may take considerable time.See [Facebook Localized Ads template](/docs/help-center/export-data-feeds/facebook-localized-ads-template). |
| *Facebook Localized Catalog - Language Feed* | Sending data in multiple languages as a supplement to your product catalog in Facebook Commerce Manager. Useful for cases when you sell products across multiple countries that use different languages.You can use this export as a file or API-based export. For a detailed breakdown of the differences and advantages of these options, see [this table below](#informaltable-idm243509337719856).This export sends your entire catalog to Commerce Manager. If you have millions of products, exporting the entire catalog may take considerable time.See [Facebook Localized Ads template](/docs/help-center/export-data-feeds/facebook-localized-ads-template). |
Documentation on *Facebook Local Product Feed (LIA)*, *Facebook Dynamic Ads Video*, *Facebook Travel Ads - Flight Feed*, *Facebook Travel Ads - Destination Feed*, *Facebook - Automotive Inventory Ads*, and *Facebook Real Estate* is coming soon.
Although you can find the *Instagram* export in Productsup, we recommend using *Facebook Dynamic Ads* or *Facebook Dynamic Ads (Delta Upload)* to advertise your products on Instagram. The *Instagram* export doesn't get regular maintenance and updates, unlike the Facebook exports.
Prerequisites [#prerequisites]
To send your product catalog to Facebook Commerce Manager using the export *Facebook Dynamic Ads*, you need:
. A Facebook business account with at least one product catalog created in it.
. Only relevant if you choose to send your product catalog to Facebook Commerce Manager via the Facebook Marketing API:
1. The ID of the catalog where you want to send your products.
2. A Facebook authentication in your Productsup organization.To add a Facebook authentication:
Go to **Authentication** from the organization's, project's, or site's menu and select **Add Authentication**.
In **Type**, select *Facebook*, give it a desired name, and select **Next**.
Select **Connect** for Productsup to redirect you to a Facebook page where you can give Productsup access to your Facebook business account. Once ready, Facebook redirects you back to Productsup. Close the confirmation window to proceed.
Set up the Facebook Dynamic Ads export [#set-up-the-facebook-dynamic-ads-export]
Go to **Exports** from your site's main menu, and select **Add export**.
Search for *Facebook Dynamic Ads*, hover over it, and select **Add**.
Go to **Dataflow** from the site's main menu and choose the added export from the dropdown in the toolbar.
Map all relevant attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.There are only 9 mandatory attributes for Facebook:
* **brand**
* **condition**
* **id**
* **image\_link**
* **link**
* **price**
* **availability**
* **description**
* **title**
Go to **Exports** and select *Facebook Dynamic Ads*.
Select **Add Destination** and choose the needed destination from the **Destination** drop-down menu:
1. You can choose any standard file destination, such as *Productsup Server* or *SFTP/FTP/FTPS Server*.
2. You can select the API-based destination *Facebook Marketing API: Data Feed*.
\| Destination | What it does | When to choose it | How to set it up |
| A file destination, such as *Productsup Server* or *SFTP/FTP/FTPS Server*. | A file destination generates a file and sends your entire product catalog to that file. When running your first export with this destination, you need to manually upload the generated file to Commerce Manager to let Facebook import your data from it. The manual file upload is a one-time action. | - You have a smaller product catalog and/or do less frequent data updates.A smaller product catalog can contain hundreds or thousands of products as opposed to millions. | See [Find the most suitable export destination](/docs/help-center/best-practices/find-the-most-suitable-export-destination) to choose your file destination option and find a document covering its setup. |
| -------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| The API-based destination *Facebook Marketing API: Data Feed* | *Facebook Marketing API: Data Feed* generates a file, sends your entire product catalog to that file, and automatically uploads the file to Commerce Manager. This destination also lets you comply with Facebook's file size requirements thanks to compression and automatically splitting your product catalog into multiple files if needed. The destination lets you configure any desired schedule for Facebook to import your product catalog. | - You have a large product catalog with millions of products and/or do frequent data updates to achieve more real-time data synchronization. - You want to receive feedback from Facebook to troubleshoot your data in Productsup. If your use case fits both points and you want to speed up your exports to Facebook by sending only changed data to Commerce Manager, you may want to consider the export *Facebook Dynamic Ads (Delta Upload)* with its own API- and delta-based destination. See [Add Facebook Dynamic Ads (Delta Upload) export](/docs/help-center/export-data-feeds/add-export/add-facebook-dynamic-ads-delta-upload-export). | See [the following section](#section-idm234723382307493) to set up the API-based destination *Facebook Marketing API: Data Feed*. |
Go to **Data View**. In the top ribbon, select *Readiness* from the **Overview** drop-down menu to see what data transformations are necessary to meet Facebook's product data requirements. See [Analyze your data in Data View](/docs/help-center/map-and-optimize-your-data/data-view/analyze-your-data-in-data-view) for more information on using the Analyzer feature.
When your export setup and product data are ready, select **Run** or **Export** in the top-right corner of the page.
If the run finishes with issues, you can go to **Error Log** to troubleshoot.
Go to your Facebook business account:
1. If you are using the destination *Facebook Marketing API: Data Feed*, check that Facebook has successfully uploaded all your products to the needed catalog.
2. If you are using any other destination, go to the *Data sources* tab in your Commerce Manager to upload the generated file as your data feed. You can copy the link to your generated file in Productsup on the export setup page in the section *Files* or the destination setup page.
Set up the destination Facebook Marketing API: Data Feed [#set-up-the-destination-facebook-marketing-api-data-feed]
If you have already created an authentication for Facebook in your current site, project, or organization, you can choose it in the **Authentication** drop-down menu. If not, see [Prerequisites](#N1734534896927).
In **Product Catalog ID**, enter the ID of the product catalog in Commerce Manager where you want to send your products.
If you don't want to use *Productsup Product Feed* as the default name of a data feed added in the *Data sources* tab in Commerce Manager, enter a different name for your data feed in **Feed Name**.
In **Market country**, choose the country where you want to advertise and sell your products.
In **Default currency**, choose the currency of the prices in your product catalog. If you don't choose a currency here, `USD` is the default option added to your product catalog's metadata in Commerce Manager.
If your product catalog includes millions of products, you may need to compress it and split it into multiple files to meet Facebook's file size requirements and speed up the export.See [File formats and size limits for data feeds](https://www.facebook.com/business/help/120325381656392?id=725943027795860#Formats) for more information on Facebook's file size limits for data feeds.
1. Toggle **Compression** to *On* to compress your product catalog and send it as a GZIP file to Facebook.
2. Toggle **Multiple feeds** to *On* if your overall export file size exceeds Facebook's requirements and you plan to send your product catalog in multiple files.
If you turn this setting on, you need to add another file to your export. Once you finish the destination setup and select **Save**, the platform takes you to the setup page of your *Facebook Dynamic Ads* export, where you should select **Add File** at the bottom of the page. See [Overview tab](/docs/help-center/export-data-feeds/add-export#para-idm243469430052168) for more information.
3. Toggle **Delete other feeds** to *On* if you have enabled the setting **Multiple feeds** and want Facebook to delete previously added files if a new export has fewer products and doesn't need as many files.
Set up a schedule for Facebook imports in **Replace Interval**, **Update Interval**, and **Trigger download**. See [the following section](#section-idm234730258165143) for detailed instructions.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Set up a schedule for Facebook to import your export data [#set-up-a-schedule-for-facebook-to-import-your-export-data]
Once you set up your Facebook imports, go back to [see the relevant section](#N1736513150146) in the previous section to finish the destination setup.
There are different ways to set up how often Productsup generates your export file and how often Facebook imports data from it:
* On the Productsup side, you can generate your export file whenever necessary by running your *Facebook Dynamic Ads* export manually or setting up automatic site runs in Scheduling. See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling).
* On the Facebook side, you can use different fields in the setup of the *Facebook Marketing API: Data Feed* destination:
* Use the setting **Trigger download** if you want Facebook to import data from your export file based on site runs in Productsup.
* Set up a desired schedule using the fields **Replace Interval** and **Update Interval** if you want to disconnect Facebook imports from site runs in Productsup.
More information on these fields:
| Field name | What it does | How to set it up |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Trigger download** | Lets Facebook import data from your export file as soon as Productsup finishes uploading data to it. Ties Facebook imports to Productsup exports. | Toggle **Trigger download** to *On* to let Facebook upload your entire product catalog every time Productsup finishes updating it in the generated export file. |
| **Replace Interval** | Uses a defined schedule to let Facebook overwrite your previously imported products with new data from the generated export file. This option updates the data of your previously imported products, creates new products added to the export file, and deletes previously uploaded products that are no longer in the export file.You must create a site-running schedule in Productsup to let Facebook timely import up-to-date product data. This schedule should run less often than the update interval. Allow for your average site run time between your scheduled Productsup exports and your replace interval on the Facebook side. | Specify how often you want Facebook to overwrite your previously uploaded products with a new batch in **Replace Interval**.You can configure this interval *only once* before sending your product catalog to Commerce Manager for the first time. Use the following templates to define the needed replace interval: - Enter `h` for hourly uploads. - Enter `d:12` for daily uploads at noon or `d:18:30` for daily uploads at 6:30 PM. - Enter `w:3:20` for weekly uploads on Wednesdays at 8 PM. - Enter `m:20:1` for uploads on the twentieth of each month at 1 AM. |
| **Update Interval** | Uses a defined schedule running more often than the replace interval to let Facebook update your previously imported products with new data from the generated export file. This option updates the data of your previously imported products and creates new products added to the export file. No product deletions occur at this stage.You must create a site-running schedule in Productsup to let Facebook timely import up-to-date product data. This schedule should run more often than the replace interval. Allow for your average site run time between your scheduled Productsup exports and your update interval on the Facebook side. | Use the same templates as in your replace interval to specify how often Facebook should update your catalog in **Update Interval**.You can configure this interval *only once* before sending your product catalog to Commerce Manager for the first time. |
There are three scenarios for using these settings:
. \*\*\*Using only replace and update intervals.\*\*\*Data updates on Facebook can happen on a fixed schedule of Facebook imports without interference. Real-time data updates aren't possible. All data changes must wait for the next update cycle to appear in Commerce Manager.To use this scenario, set **Trigger download** to *Off*.
. \*\*\*Using only triggered downloads.\*\*\*Data updates on Facebook can happen on a fixed schedule created in Productsup or follow manual site runs in Productsup. This lets you change your data in Commerce Manager at any moment, allowing near real-time updates, which is ideal for rapidly changing data like inventory levels or flash sales.To use this scenario, remove the default input `d:12` from **Replace Interval** to avoid unnecessary Facebook imports.
. \*\*\*Using intervals and triggered downloads together.\*\*\*Data updates on Facebook can happen on a fixed schedule of Facebook imports and follow manual site runs or site-running schedules in Productsup. This can help you achieve near real-time updates with a fallback mechanism of scheduled Facebook imports in case of API or system issues causing triggered downloads to fail. However, this scenario requires meticulous timing to prevent intervals and triggered downloads from interfering with each other.
We recommend using the replace and update intervals without triggered downloads if multiple exports in your Productsup organization send data to the same product catalog in Commerce Manager.
# Add monitor event for imported items increase
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Use a monitor event to signal an increase in imported products.
Add Number of imported items increased error event [#add-number-of-imported-items-increased-error-event]
First, make sure that a large fluctuation in imported products is not common for the site.
Next, go to **Monitor** from your site-level menu and select **ADD ERROR EVENT**.
Choose the stage **Import** and select **Continue**.
Select the error event, **Number of imported Items increased**, then select **Continue**.
Enter a percentage value in **Threshold** to trigger an error event. When exceeded, the threshold value initiates an error event notification.
Choose the **Severity Level** that you have determined to be appropriate for the error event.
Select the action(s) you want to occur in case of an error event and select **Add**.
If you select the **Send Email Notification** option, you will receive an email indicating the affected site and list name(s).
You can view the newly added monitoring event in **Monitor** on the **All** tab.
Have questions? Contact [support@productsup.com](mailto:support@productsup.com).
# Set up Monitor for your feeds
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Let Productsup help you stay on top of your feed status automatically by setting error events and receiving notifications when events occur. In Monitor, you can set up email and chat tools, such as Slack and Microsoft Teams, to receive error notifications to an audience of your choice.
Here are some questions you may have in regards to your feeds, such as:
* Did the data from our back-end update successfully?
* Am I missing key attributes in my feeds?
* Do my feeds meet all partner channel expectations?
* Do we have high latency when providing our data to clients?
You can set up monitoring *events* to address those questions and set up notifications or trigger a run to stop processing runs entirely. For more information on available event types, see [Monitor events overview](/docs/help-center/dashboard-and-monitor/ensure-data-quality-in-monitoring/monitor-events-overview).
* Only Administrators or Users with *Read/Write access can manage monitoring*.
* Ensure you have defined a *unique item identifier* in **Data Sources** on the *Settings* tab. See [Add a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier).
Set up error events [#set-up-error-events]
You can add or edit and configure events for multiple sites or projects.
Add/edit a monitoring event [#addedit-a-monitoring-event]
Go to **Monitor** in the main menu from the site, project, or organization level.
Select **ADD ERROR EVENT**.
To edit a pre-existing event, select the event's settings button and choose **Edit**.
To create a new event, select one of the following stages: *Import*, *Intermediate*, *Export*, or *General*, and select **Continue**.
Choose your event and select **More** to get the event's details. Then, either choose **Select** within the event description box or select **Continue** from the *ADD ERROR EVENT* view to proceed.
Configure your event by selecting a **Severity Level**.
Some of the events can have the *Threshold (%)* field. For example, these are all the events on the intermediate level. These events only happen upon reaching a predetermined threshold.
Select the action you want to trigger when an error event occurs. Choose among **Stop Processing**, **Email Notification**, or **Slack Notification**.
Select **Add**.
Your error event is now active for all stage sub-levels.
Set up the Import failed for Data Source event [#set-up-the-import-failed-for-data-source-event]
For the *Import failed for Data Source* monitor event, you should also define Data Source after [Step 5](#N1671641574126) of the previous section.
Here are the rules depending on the level where you add an event:
When you add an event at the organization or project level:
* There is no *Choose data source(s) to which the error event should be applied* section step. The platform automatically selects all data sources.
* The platform creates only one event for all data sources.
* When you add new data sources, the platform automatically includes them in the monitoring.
If an event already exists on the organization level, the project-level event overrides it, but only for the data sources belonging to this project. All other data sources follow the organization level's event settings.
When you add an event on the site level:
* The *Choose data source(s) to which the error event should be applied* section appears in the wizard, and you must select all or specific data sources.
* The platform creates individual events for each data source.
* When you add new data sources, the platform doesn't include them in the monitoring automatically, even if you choose **Select All** for data sources.
Set up error event notifications [#set-up-error-event-notifications]
To stay informed of error events, you can set up automated notification messages via email, Slack, or Microsoft Teams.
You can use email, Slack, and Microsoft Teams notifications combined.
Set up email notifications for single email addresses [#set-up-email-notifications-for-single-email-addresses]
Go to **Monitor** in the main menu.
Set up a new monitoring event or edit a pre-existing one. See [Add/edit a monitoring event, step 2](#N1617256897000).
Toggle the **Send Email Notification** button to the **On** position.
Enter the recipient's email address in the **Email Notification** field.
Select **Add**.
Repeat the process as necessary and select **Save**.
Set up group email notifications [#set-up-group-email-notifications]
You can also set up error event notifications sent to group email addresses.
Go to **Monitor** in the main menu.
Create a new error event or edit a pre-existing one. To add a new group notification, select **Group Notifications**.
Next, select **ADD GROUP**.
Choose **Email** and select **Continue**.
In **Name**, enter a group name. Next, add the group email address in **Members** and select **Add**.
(Optional) Toggle the **Assign responsibilities** button to the **On** position. Assigning responsibilities lets you define which types of error event notifications your specified groups receive. Then choose the **Severity Level** for group notifications.
Select **Finish**.
To edit error event group notifications, choose the group error type on the overview page. Then select the settings button and choose **Edit**. Modify the settings and select **Save**.
Set up Slack group notifications [#set-up-slack-group-notifications]
You can receive notifications directly in Slack. Similar to email notifications, you can send notifications to personal Slack chats, including yours, or a multi-person chat where you're a member. You can also receive notifications in Slack channels.
Go to **Monitor** in the main menu.
Set up a new Slack monitoring event or edit a pre-existing one. To add a connection to your Slack chat or channel, you must first select **Group Notifications** and perform the setup.
Next, select **ADD GROUP**.
Choose Slack and select **Continue**. A pop-up window appears where you can enter your Slack login credentials.
Select a personal Slack chat or channel that you want to notify from the drop-down list under *Where should Productsup App post?*
Set up Slack notifications [#set-up-slack-notifications]
Go to **Monitor** in the main menu.
Add a new monitoring event or edit a pre-existing one. See Add/edit a connection to your Slack chat or Slack channel [step 2](#listitem-idm11617293024670).
Toggle the **Slack Notification** button to the **On** position.
In **Slack Notification**, enter the name of the Slack channel or Slack chat you want to notify.
Select **Add**.
Repeat the process as necessary and select **Save**.
Set up Microsoft Teams group notifications [#set-up-microsoft-teams-group-notifications]
Connect your Microsoft Teams account to Productsup to automatically receive error event notifications on the platform. You can set up notifications and assign them to specific groups for each monitoring event.
You must have a Microsoft Teams account to set up notifications from the Productsup platform. See [Microsoft Teams](https://www.microsoft.com/en-us/microsoft-teams/group-chat-software) for an account.
Go to **Monitor** in the main menu.
Set up a new Microsoft Teams monitoring event or edit a pre-existing one. To add a connection to your Microsoft Teams channel, you must first select **Group Notifications** and perform the setup.
Next, select **ADD GROUP**.
Choose *Microsoft Teams* and select **Continue**. A pop-up window appears where you can enter your Microsoft Teams login credentials.You then advance to Microsoft Teams to decide which channels you want to set up for notifications.
Set up Microsoft Teams notifications [#set-up-microsoft-teams-notifications]
Go to **Monitor** in the main menu.
Create a new error event or edit a pre-existing one. To add a new group notification, select **Group Notifications**.
Next, select **ADD GROUP**.
Choose *Microsoft Teams* and select **Continue**.
Select the **Choose a channel** drop-down list and find and select the channel name.
(Optional) Toggle the **Assign responsibilities** button to the **On** position. Assigning responsibilities lets you define which types of error event notifications your specified groups receive. Then choose the **Severity Level** for group notifications.
Select **Continue**.
To edit error event group notifications, choose the group error type on the overview page. Then select the settings button and choose **Edit**. Modify the settings and select **Save**.
Set up notifications based on severity levels [#set-up-notifications-based-on-severity-levels]
Severity levels let you assign a level of importance to specific error events. For notifications via email groups or Slack, you can include a severity level to the notification. In other words, email groups or Slack channels automatically receive error event notifications when they match the severity level you set.
You can also use severity levels to moderate which target groups should receive specific notifications.
Add a severity level to an email group, Slack, or Microsoft Teams channel [#add-a-severity-level-to-an-email-group-slack-or-microsoft-teams-channel]
Go to **Monitor** in the main menu.
Select the **Group Notifications**.
Either add a new monitoring group or edit the pre-existing one.
(Optional) Toggle the **Assign responsibilities** button to the **On** position. Assigning responsibilities lets you define which types of error event notifications your specified groups receive. Then choose the **Severity Level** for group notifications.
Select **Add** to add the email group or Slack channel.
Repeat the process as necessary and select **Save**.
Now notifications are sent to the email group, Slack, or Microsoft Teams channel that you assigned a severity level.
Stop feeds from processing based on monitoring events [#stop-feeds-from-processing-based-on-monitoring-events]
When you add an error event, such as being notified via email or Slack, you can also stop the site from processing runs. When turned on, your error event triggers this action.
For example, if an import failure causes a significant drop in products, you probably want to avoid creating feeds with a large number of missing products. The platform stops processing runs when a run triggers an event. In other words, if you set an import monitoring event, the site does not process the intermediate or export stages.
Set up a monitoring event to stop the processing of a site [#set-up-a-monitoring-event-to-stop-the-processing-of-a-site]
Go to **Monitor** in the main menu.
Set up a new monitoring event or edit a pre-existing one. See [Add/edit a monitoring event](#N1617274838955).
Toggle the **Stop Processing** button to **On**.
# Add monitor event - Unmapped Categories
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
In the platform, you can define which actions you want to occur for unmapped categories in your data feeds during a run. Set up the *Unmapped Categories* error event to perform any or a combination of the following:
* Stop processing a run.
* Receive an email notification.
* Receive a Slack notification.
Add Unmapped Categories error event [#add-unmapped-categories-error-event]
To begin, you need to add the **Taxonomy Mapping** rule box to your site in Data View or Dataflow. Then in **Monitor**, choose the previously created list you want to trigger for an *Unmapped Categories* error event when a product category is unmapped.
Go to Lists from your site's main menu and find an exiting or create a new list that contains the unmapped categories you want to monitor.
Add the **Taxonomy Mapping** rule box to your site in Data View or Dataflow.
Go to **Monitor** and select **ADD ERROR EVENT**.
Choose the **General** stage and select **Continue**.
Select the event **Unmapped Categories** and select **Continue**.
You can only apply one (1) error event to each separate list.
Choose the list that you want to apply the error event to and select **Continue**.
Optionally, enter a percentage value in **Threshold** to trigger an error event. When exceeded, the threshold value initiates an error event notification.
Select **Low**, **Medium**, or **High** in **Severity Level** to prioritize your desired error event.
Select which action(s) you want to occur in case of an error event and select **Add**.
If you select the **Send Email Notification** option, you will receive an email indicating the affected site and list name(s).
You can now view the newly added monitoring event in **Monitor** from the **All** tab.
Monitor only displays *Unmapped Categories* for the lists you added under the **Taxonomy Mapping** rule box in Data View or Dataflow.
# Add monitor events for failed file import
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Import file failed to download or is empty in the first main feed [#import-file-failed-to-download-or-is-empty-in-the-first-main-feed]
Use the **Import file failed to download or is empty (first main feed)** error event if downloads of the feed from the main source were unsuccessful. An invalid URL, missing data, or an error during the file creation process could cause the import file failure.
Add an error event in **Monitor** that notifies you of failed/empty files for import from the first main feed.
Go to **Monitor** from your site-level menu and select **ADD ERROR EVENT**.
Choose **Import Stage** and select **Continue**.
Select the event **Import file failed to download or is empty (first main feed)** then, select **Continue**.
Enter a **Severity Level** that you have determined to be appropriate for the error event.
Select which action(s) you want to occur in case of an error event and select **Add**.
If you select the **Send Email Notification** option, you will receive an email indicating the affected site and list name(s).
You can view the newly added monitoring event in **Monitor** on the **All** tab.
Import failed for Data Source [#import-failed-for-data-source]
Use the Import failed for Data Source error event to report a data source that’s unable to download a file(s) or contained no records.
Add an error event in **Monitor** that notifies you of a data source that did not download/contained any files for import.
Go to **Monitor** from your site-level menu and select **ADD ERROR EVENT**.
Choose **Import Stage** and select **Continue**.
Select the event **Import failed for Data Source**, then select **Continue**.
Enter a **Severity Level** that you have determined to be appropriate for the error event.
Select the action(s) you want to occur in case of an error event and select **Add**.
If you select the **Send Email Notification** option, you will receive an email indicating the affected site and list name(s).
You can view the newly added monitoring event in **Monitor** on the **All** tab.
Have questions? Contact [support@productsup.com](mailto:support@productsup.com).
# Monitor events overview
import { Callout } from "fumadocs-ui/components/callout";
Introduction [#introduction]
The Monitor feature lets you check the data processing status at any stage. You can set up the error events conditions on which the platform stops the data processing and notifies you by email, Slack, or Microsoft Teams.
This document provides an overview of different error events you can see and set up in Monitor.
Prerequisites [#prerequisites]
* Have the Administrators or Read-Write users access rights.
* Ensure you have defined a unique item identifier in Data Sources. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
Set error events [#set-error-events]
You can access **Monitor** at the site, project, or organization level.
In **Monitor**, Productsup offers over 25 error event types within four (4) groups:
. Import
. Intermediate
. Export
. General
Monitor error events in the import stage [#monitor-error-events-in-the-import-stage]
You can monitor the data processing in the import stage.
| Monitoring event | Description |
| ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Import failed for Data Source | A data source couldn't import products, or the import feed was empty and contained no records. |
| Import file failed to download or is empty (first main feed) | The platform couldn't import the feed from your first main data source, or the feed contained no data. There could be an invalid URL or an error during the file creation. |
| Item Identifier attribute disappeared | The attribute assigned as a unique item identifier in Data Sources has disappeared from the import feed. |
| Mapped attribute has been removed from Data Sources | A mapped attribute has disappeared from a data source. This may indicate errors on the data source side caused by file creation processes. This can also mean an issue with appending an additional data source to your feed. |
| New attribute added to Data Sources | A new attribute appeared in one of the data sources, or you set up a data source and added new attributes to the feed. |
| Number of days without a change in Data Sources | The content of a data source hasn't changed within a specified number of days. This can indicate that the file updating process doesn't work or the URL is outdated. |
| Number of import file download retries | This monitoring event shows the number of retries the platform performs to import a file if the previous import attempts failed. You can use this monitoring event if you know that the connection to a data source is unstable. |
| Number of imported items decreased | The number of imported items has decreased compared to the last import. Big drops may indicate source file issues, such as a misconfiguration or an invalid syntax, which impacts the data import. |
| Number of imported items increased | The number of imported items has increased compared to the last import. Significant increases may indicate source file issues, such as a misconfiguration or an invalid syntax, which impacts the data import. |
| Number of Imports without a change in Data Sources | The contents of a data source haven't changed in a given number of runs. This may indicate that the file update process doesn't work or the URL is outdated. |
Monitor error events in the intermediate stage [#monitor-error-events-in-the-intermediate-stage]
You can monitor data processing in the intermediate stage.
| Monitoring event | Description |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Percentage of added items | A given percentage of new items appeared in the feed. These items weren't involved in the previous site run. |
| Percentage of deleted items | A given percentage of items disappeared from the feed. These items were present in the feed after the previous site run. |
| Percentage of modified items | A given percentage of items between the import and intermediate stages contains modified attributes as compared to the previous run. These modifications could come from the data source or through the changes with rule boxes applied in Dataflow and Data View. |
Monitor error events in the export stage [#monitor-error-events-in-the-export-stage]
You can monitor your data processing in the export stage.
| Monitoring event | Description |
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Feed upload failed | The export failed. For example, if an export destination is unreachable or the credentials are wrong. |
| Fewer items exported | The platform exported fewer items compared to the last run. This could be due to fewer items in the feed, skip rules, or ROI rules. |
| More Products Exported | The platform exported more items compared to the last run. This could indicate adding more items to the feed or deactivating skip or ROI rules active in the previous run. |
| Percentage of added items in a delta export | A given percentage of new items appeared in a delta export. These items weren't present in the feed during the previous run or didn't appear in the output due to skip rules. |
| Percentage of deleted items in a delta export | A given percentage of items disappeared from a delta export. These items are no longer present in or skipped from the feed compared to the last run. |
| Percentage of missing values in all mandatory attributes | A given percentage of items contained missing values in all mandatory attributes. These values were initially absent in the data source or disappeared from the output due to rule boxes applied in Dataflow or Data View. |
| Percentage of missing values in all optional attributes | A given percentage of items in a delta export have changes in their attributes compared to the previous run. These modifications could come directly from your data source or through rule boxes applied in Data View or Dataflow. |
| Percentage of modified items in a delta export | A given percentage of items in a delta export contains modified attributes absent in the previous run. These modifications could come from the intermediate stage, or you could add them with the rule boxes in Dataflow or Data View. |
| Percentage of values in all mandatory attributes that failed a set Analyzer test | A given percentage of values in all mandatory attributes failed the Analyzer test in Data View. This applies to all columns that use such tests. |
| Percentage of values in all optional attributes that failed a set Analyzer test | A given percentage of values in all optional attributes failed the Analyzer test in Data View. This applies to all columns that use such tests. |
Some of the events can have a **Threshold (%)** field. For example, these are all the events on the intermediate level. These events only appear in the error log upon reaching the defined threshold.
For exports, you can choose to monitor all export channels, specific export templates, or specific export channels:
Monitor general platform events [#monitor-general-platform-events]
You can monitor the entire data processing of a site from import to export.
| Monitoring event | Description |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Site run exceeds given number of hours | A site run exceeds a given time limit. For example, this could be due to applying new rule boxes in Dataflow or Data View or a slow speed while downloading data from a data source or uploading data to an export destination. The given number of hours equals the previous durations. Consider your previous run durations to set an adequate threshold. |
| Unmapped Categories | Some of the lists in a given site have unmapped categories. |
Example of using the monitoring event *Site run exceeds given number of hours*:
You run your site once an hour, and the process typically takes 15 minutes. If the run takes longer than one hour, the platform fails to update your data in time and run your site according to your export schedule. To solve the problem, you can set up the event *Site run exceeds a given number of hours* to let the platform stop processing a delayed run and send you a notification or the error.
Set up monitoring events at the site, project, or organization level [#set-up-monitoring-events-at-the-site-project-or-organization-level]
You can set up monitoring events on different platform levels to apply the same settings to multiple sites or projects:
* Set up monitoring on the organization level to apply settings across all projects and all sites in your organization.
* Set up monitoring on the project level to apply settings across all sites in the project.
* Set up monitoring on the site level to apply settings only to the relevant site.
Priority of events at different levels [#priority-of-events-at-different-levels]
If some of the monitoring event settings applied over your entire organization, project, site or export don't fit a certain project, site, or export, you can override them by adding a monitoring event on a lower level:
* Site settings override project and organization settings.
* Project settings override organization settings.
* The same monitoring event added only for one specific export overrides the monitoring event set for all exports at the same site. For example, if you set the **Fewer items exported** event for all exports with a threshold of `30%` and the same event for the Google Merchant Center export with a threshold of `50%`, the site will only stop processing if the GMC export has 50% fewer items exported.
If there are any event conflicts at different platform levels, the platform displays the priority monitoring event in white and all other overridden monitoring events in gray. For other sites in the project without a specialized event on the site level, you can only see the project monitoring events.
# Export your data to Google Cloud Storage
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
All exports in Productsup have the option of sending data to Google Cloud Storage:
* The destination *Google Cloud Storage* sends data to Google Cloud Storage using a regular Google account.
* The destination *Google Cloud Storage (service account)* sends data to Google Cloud Storage using a Google service account.
Prerequisites [#prerequisites]
To set up the *Google Cloud Storage* destination in Productsup, you need:
. A regular Google account.
. A Google storage authentication in your Productsup organization.To add a Google storage authentication:
Go to **Authentication** from the organization's, project's, or site's menu and select **ADD AUTHENTICATION**.
In **Type**, select *Google Storage Authentication*, give it a desired name, and select **Next**.
Select **Connect** for Productsup to redirect you to a Google account page where you can give Productsup access to your Google Cloud Storage. Once ready, Google redirects you back to Productsup. Close the confirmation window to proceed.
. The name of the bucket where you want to send data.
To set up the *Google Cloud Storage (service account)* destination in Productsup, you need:
. A Google service account key in JSON. See [Create and delete service account keys](https://cloud.google.com/iam/docs/keys-create-delete).
. The name of the bucket where you want to send data.
Set up the destination Google Cloud Storage [#set-up-the-destination-google-cloud-storage]
Choose the destination *Google Cloud Storage* if you use a regular Google account for data transfer between systems.
Go to **Exports** from your site's main menu and select an export from the list to open the export setup page. If your site doesn't have the needed export yet, select **ADD EXPORT** to find and add an export.
On the export setup page, select **Add Destination**, choose *Google Cloud Storage* from the drop-down list, give it a name, and then select **Save**.
On the destination setup page, choose the needed Google storage authentication in **Authentication** if your organization, project, or site already has it. If not, add the needed authentication by selecting **Add New Authentication** as shown in [Prerequisites](#section-idm454171530072963422219036491). Then, choose the added authentication in the **Authentication** drop-down list on the destination setup page.
In **Bucket**, enter the name of the bucket where you want to send data.You can enter both static and dynamic bucket names in this field. See [Dynamic bucket and directory names](#section-idm460360552784963422726602192).
If you want to send your data to a specific folder in your Google Cloud Storage bucket, provide the path to the desired folder in **Directory**. By default, the platform sends your data to the root folder.You can enter both static and dynamic folder names in this field. See [Dynamic bucket and directory names](#section-idm460360552784963422726602192).
Toggle **Active** to *On* to activate the destination.
Select **Save**.
When your data is ready for export, select **Run** in the top-right corner of your page to let the platform import, process, and send your data to the destinations of all active exports in your site.If you want to run only the export where you added your Google storage destination, you should:
Select **Import** to let the site import and process your data.
Go to **Exports**, select the needed export, and choose **Export this export**.
Once the site finishes the export, you can go to your Google storage bucket to check the uploaded data. If everything is as expected, you can let your export channel system start an import from the bucket.
Set up the destination Google Cloud Storage (service account) [#set-up-the-destination-google-cloud-storage-service-account]
Choose the destination *Google Cloud Storage (service account)* if you use a Google service account for data transfer between systems. Typically, service accounts are the preferred option for virtual machines and applications.
Go to **Exports** from your site's main menu and select an export from the list to open the export setup page. If your site doesn't have the needed export yet, select **ADD EXPORT** to find and add an export.
On the export setup page, select **Add Destination**, choose *Google Cloud Storage (service account)* from the drop-down list, give it a name, and then select **Save**.
On the destination setup page, provide your Google service account key in **Service Account Key**. It must be in JSON.
In **Bucket**, enter the name of the bucket where you want to send data.You can enter both static and dynamic bucket names in this field. See [Dynamic bucket and directory names](#section-idm460360552784963422726602192).
If you want to send your data to a specific folder in your Google Cloud Storage bucket, provide the path to the desired folder in **Directory**. By default, the platform sends your data to the root folder.You can enter both static and dynamic folder names in this field. See [Dynamic bucket and directory names](#section-idm460360552784963422726602192).
Toggle **Active** to *On* to activate the destination.
Select **Save**.
When your data is ready for export, select **Run** in the top-right corner of your page to let the platform import, process, and send your data to the destinations of all active exports in your site.If you want to run only the export where you added your Google storage destination, you should:
Select **Import** to let the site import and process your data.
Go to **Exports**, select the needed export, and choose **Export this export**.
Once the site finishes the export, you can go to your Google storage bucket to check the uploaded data. If everything is as expected, you can let your export channel system start an import from the bucket.
Dynamic bucket and directory names [#dynamic-bucket-and-directory-names]
In both Google Cloud Storage destinations, the fields **Bucket** and **Directory** support static and dynamic bucket or folder names.
A dynamic bucket or folder name can use information like the name or ID of a site or export. For example, if you send data to multiple buckets from different locations in Productsup, the names of these buckets may correspond to the names of the sites or exports that send data to them. This is where you can use dynamic bucket or folder names in the destination setup.
* `{{Site.name}}` uses the name of a site as a bucket or folder name.
* `{{Site.id}}` uses the ID of a site as a bucket or folder name.
* `{{Export.name}}` uses the name of an export as a bucket or folder name.
* `{{Export.id}}` uses the ID of an export as a bucket or folder name.
If the names of your sites or exports contain a forward slash `/`, and so do your folder names in Google Cloud Storage, you need to replace the forward slash in your Google Cloud Storage folder names with another symbol, such as `_`, because `/` indicates a new folder in the **Directory** field input.
When you replace `/` with `_` or another symbol in your folder names, you need to add a replace filter to the **Directory** field input. For example, if you want to use a folder path that contains a folder with a site name and a folder with an export name where the site name folder now has `_` instead of `/`, the field input should be `{{Site.name| replace({ "/":"_" })}}/{{Export.name}}`.
# Export your feed as an Email
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The Email destination generates and hosts your feed, then issues an email to the assigned inbox with a URL link to the file.
The issued email will resemble this example:
Prerequisites [#prerequisites]
Fully configure an Export. See [Add export](/docs/help-center/export-data-feeds/add-export).
Add and configure one of the supported destinations:
. Productsup Server
. SFTP/FTP/FTPS Server
. Excel Macro Files (xlsm)
. Image Exporter (FTP or SFTP)
The Email destination picks up the file URL link directly from the other configured destination, and sends the email to the configured email address.
This process doesn't work if the Email destination is the only one added to an export, or if the other destination is not one of the supported types.
If you want to use an FTP server to share export output files with third parties via links in an email, make sure the email recipients have access to that FTP server.
How to configure the Email destination [#how-to-configure-the-email-destination]
The steps you need to take to set up the emails depend on the kind of data your export produces:
* See [Configure the Email destination to export products and other data](#section-idm4584738277248033515670282627) if your export produces a variety of product data types.
* See [Configure the Email destination to export images](#section-idm4560251483396833515669583895) if your export produces **image data only**.
Configure the Email destination to export products and other data [#configure-the-email-destination-to-export-products-and-other-data]
Follow these steps after you have completed the prerequisites:
Go to **Exports** from your site's main menu and select the cogwheel icon (**⚙**) next to the desired export.
Select **Add Destination** and choose the *Email* destination from the drop-down list, give it a name as desired, and select **Save**.
On the destination setup page, enter the email addresses that should receive output file links in **Recipients**. If you need to enter multiple email addresses, separate them with a comma (`,`). For example, `email1@example.com,email2@example.com`.
To add carbon copy and blind carbon copy recipients, you can enter their email addresses in **CC** and **BCC**. Separate the addresses with a comma (`,`) if necessary.
If you have only one email in **Recipients** and add the same email in **BCC**, the destination fails.
In **Subject**, enter the subject line of your email. You can use Twig to create dynamic subject lines. For example, `Productsup - {{ Export.name }}` is the default field value that adds the name of this destination's export to the subject line. See [Twig - The flexible, fast, and secure PHP template engine](https://twig.symfony.com/).
In **Reply to**, add an address where your recipients can send a reply to the auto-generated email. Otherwise, they send it directly to [support@productsup.com](mailto:support@productsup.com).
In **Custom Body Addition**, you can enter the text you want the platform to add to the email body. The platform adds this text at the bottom of the email above the signature.
In **Time Format**, choose a time format the platform should use to add a timestamp to your email.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Select **Run** or **Export** in the top-right corner of your view to let the site run the export.
Configure the Email destination to export images [#configure-the-email-destination-to-export-images]
Follow these steps after you have completed the prerequisites:
Exporting images is only supported if you implemented the **Image Exporter** destination during the prerequisites.
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Image Exporter*, hover over this export, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *Image Exporter (FTP or SFTP)* from the drop-down list, give it a name as desired, and select **Save**.
In the destination setup, enter your connection data in **FTP Hostname**, **FTP Username**, and **FTP Password**. The hostname should include a prefix, such as `ftp://your.example-hostname.com`.
The hostname has to start with `ftp://` or `sftp://`.
In **Base path**, you can enter a path to the server folder where you want to store the images.
In **Concurrency**, you can enter how many images the export should simultaneously download and send to your server. The expected input format is a digit. If you have a lot of products in your site, the number in this field should not be high.
In **Download Progress Notification Interval**, you can enter how many images the platform should send to the server before notifying you of the export's progress. The expected input format is a number.
The destination sends your images to the server as separate image files. To let the destination send your images to the server in a *.zip* file, give that file a desired name in **Zipfile (optional)**. The platform uses the input you provide in this field and adds `_0001` as a postfix to create the full name of the *.zip* file. For example, the full name of your exported file can be *name-example\_0001.zip*.
If you provide a desired name for your *.zip* file in step 9, you can also use the **Zip Size Limit** field to specify a maximum file size in bytes. The expected input format is a number. If the size of the *.zip* file with all your exported images exceeds this limit, the destination sends the images to the server in multiple *.zip* files. Each *.zip* file has its number specified in a postfix that the platform adds to its name. For example, if the platform splits all your images into three (3) files, their names can be *name-example\_0001.zip*, *name-example\_0002.zip*, and *name-example\_0003.zip*.
If you enter `0` in this field, the destination sends all images to one *.zip* file on your server without restricting its size or amending its name with a postfix.
Toggle the **Skip failures** button to *On* to let the destination ignore image download failures and export the rest of the images.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow**, select **Image Exporter** in the drop-down menu on the left, and map all required attributes from import to export.
Test the destination by selecting **Run** or **Export** in the top-right corner of your view to let the site run the export.
The Image Exporter export sends only new and changed images to your destination. If your destination doesn't receive any images, you may have to change your image data, such as image links or names, to make images eligible for export.
Configure the Email destination as described in steps 2-11 of [How to configure the Email destination](/docs/help-center/export-data-feeds/set-up-an-export-destination/export-your-feed-as-an-email#how-to-configure-the-email-destination).
Troubleshooting: if you receive no email [#troubleshooting-if-you-receive-no-email]
If you set everything up and run your export, but the recipients don't get an email, perform the diagnostic steps below:
Open the Run log panel in the top-right corner of your view.
If you see the notification *Destination Failed* highlighted in red, go to **Error Log** to check what destination failed during the last run:
1. If the Email destination failed, go to the settings of the affected export and check if:
1. The spelling of the added email addresses is correct.
2. The **Active** field is *On*.
3. The same email isn't both in **Recipients** and **BCC**.
2. If your main destination failed, such as FTP server or Image Exporter (FTP or SFTP), go to the setup page of the affected export and check the settings of the main destination, such as credentials or file paths.
If there are no errors in the Run log, then check the site Error Log for errors.
If no errors are found in either, then check your email Spam and Promotions folder.
Check with your internal admin who manages your email service to evaluate if the email might have been blocked.
If issues persist after exhausting these diagnostic steps, contact [support@productsup.com](mailto:support@productsup.com).
The Image Exporter export sends only new and changed images to your destination. If your Image Exporter (FTP or SFTP) destination doesn't receive any images, you may have to change your image data, such as links or names, to make images eligible for export. For example, add a rule box to one of the image attributes.
# Set up an export destination
For all exports in the Productsup platform, you can choose a desired destination to send your data to.
It makes sense to use some exports in combination with a specific destination. For example, you should use the export *TikTok Shop Product Export API Main (US)* with the destination *TikTok Shop Export Products*. You can find instructions on how to set up such export-specific destinations in the documents dedicated to the relevant exports.
Other destinations are non-specific to exports. You can add and set them up for most exports in Productsup to let the platform send your export data to a desired location. This section of the help center explains how to set up these destinations.
See [Find the most suitable export destination](/docs/help-center/best-practices/find-the-most-suitable-export-destination) for guidance on choosing the needed export destination.
# Add the HTTP Post Request destination
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Most exports in Productsup can send data to the *HTTP Post Request* destination. This is a general API destination that can send data to a REST API endpoint. It isn't specific to any particular API.
You can use the *HTTP Post Request* destination if your export channel system has a REST API endpoint that can import data. You can also use it to send your data to a WebDAV server, which can be an alternative to FTP.
Prerequisites [#prerequisites]
To set up the *HTTP Post Request* destination, you need to find the following details in the API documentation of your export channel system:
. The host URL of the API with the needed endpoint for importing data.
. The query that your API request should use.
. The way the platform should push your product data to the API.
. The name of the file attribute within the API request.
. The product file extension that the API accepts.By default, Productsup generates CSV export files that contain your product data. If the API doesn't accept CSV files, you may need to go to the *Settings* tab on your export setup page and use the **Export-Plugin** or **Export as XML** fields to let the export generate a file with the needed extension. See [Add export](/docs/help-center/export-data-feeds/add-export#section-idm243459226017834) for more information and contact [support@productsup.com](mailto:support@productsup.com) if you need help.
. The headers or any other information required within an API request.
. The authentication method and the associated credentials:
1. If your API authenticates requests via an API key, get the needed key.
2. If your API authenticates requests via login credentials, get the needed username and password.
3. If your API can sync with Productsup via an SLS certificate, create an *SSL Certificate* authentication in **Authentication**. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems).
Set up the HTTP Post Request destination [#set-up-the-http-post-request-destination]
Setting up the *HTTP Post Request* destination is a technically advanced task. Contact [support@productsup.com](mailto:support@productsup.com) if you need help.
Go to **Exports** from your site's main menu and select an export from the list to open the export setup page. If your site doesn't have the needed export yet, select **ADD EXPORT** to find and add an export.
On the export setup page, select **Add Destination**, choose *HTTP Post Request* from the drop-down list, give it a name, and then select **Save**.
On the destination setup page, enter your API address with the data import endpoint in **URL**.
Toggle **Append filename to the URL** to *On* if your API requires the URL to feature the name of the file you want to upload.
Select the needed query in **Method**:
* `POST`
* `PUT`
In **Transfer**, choose how the platform should push data from your export file to the API:
* *binary data body* pushes your export file as is, without form fields.
* *multipart/form-data (Form Based)* pushes your export file as HTML, with form fields.
* *form field content* pushes only the contents of your export file's form fields.
In **File field name**, enter the name of the file attribute where the platform should state the export file name within the API request body. The default file attribute name is `file`.
In **Headers, key - value delimited by ":"**, provide the names of the needed API request headers and their respective values as required by the API. Follow the pattern *key1:value1* and start each new key-value pair on a new line.
In **Additional form fields, key - value delimited by ":"**, provide any other required parts of the API request and their respective values. Follow the pattern *key1:value1* and start each new key-value pair on a new line.
If you need to authenticate with the API, use one of the following options:
* Add your API key in **Headers, key - value delimited by ":"** following the pattern *Authentication:11111-11111-11111-1111-111111111*. The API documentation should specify the name of the authentication header.
* Enter your login credentials in **Username (Optional)** and **Password (Optional)**.
* Use the Authentication feature in Productsup to authenticate via an SSL certificate. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems).If your organization, project, or site already has the needed authentication added, you can choose it in the **Authentication** drop-down list. If you don't have the needed authentication in Productsup yet, you can create it by selecting **Add New Authentication**:
In **Type**, select *SSL Certificate*.
Give your authentication a desired name and select **Next**.
In the window *SSL Certificate - Type: SSL Certificate*, enter your certificate type and provide the base64-encoded certificate. Enter a password if needed and then select **Save**.
Select the newly created authentication in the **Authentication** drop-down list on the destination setup page.
Toggle **Upload response contents** to *On* to let the platform receive feedback files from the API in case of export errors. This helps to troubleshoot the setup.
You can find the uploaded feedback file at the bottom of the export setup page. The name of the feedback file is the same as your export file with `.response` at the end.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
When your data is ready for export, select **Run** in the top-right corner of your page to let the platform import, process, and send your data to the destinations of all active exports in your site.If you want to run only the export where you added your API destination, you should:
Select **Import** to let the site import and process your data.
Go to **Exports**, select the needed export, and choose **Export this export**.
Once the site finishes the export, you can check if your export channel system imported the data as expected.
Send data to a WebDAV server [#send-data-to-a-webdav-server]
You can use the *HTTP Post Request* destination to send data to a WebDAV server. Take the steps outlined in the previous section with the following details in mind:
. Toggle **Append filename to the URL** to *On*.
. Choose `PUT` in **Method** and *binary data body* in **Transfer**.
. Leave `file` in **File field name** and `Content-type: text/plain` in **Headers, key - value delimited by ":"**.
# Add the Productsup Server destination
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The *Productsup Server* export destination is available for all exports in Productsup. This destination sends your data to a server hosted by Productsup and generates a link to that location. You can use this link in your export channel system to let it import your data via URL.
The data you send to the *Productsup Server* destination isn't password-protected. It is accessible via the generated link without any login data.
The *Productsup Server* destination keeps your historical files for 12 months since they were last requested.
Your Productsup organization admin can contact [support@productsup.com](mailto:support@productsup.com) if your company needs to delete files from the Productsup Server.
Send data to the Productsup Server destination [#send-data-to-the-productsup-server-destination]
Go to **Exports** from your site's main menu and select an export from the list to open the export setup page. If your site doesn't have the needed export yet, select **ADD EXPORT** to find and add an export.
On the export setup page, select **Add Destination**, choose *Productsup Server* from the drop-down list, give it a name, and then select **Save**.This generates a link for your export data:
* When you first add the *Productsup Server* destination, you can find the generated link at the bottom of the export setup page both in the *Files* panel under **Link(s)** and in the *Filename* section.While the link remains red, it is just a placeholder, and the platform hasn't generated the actual file yet. If that is the case, you see the message: "*Red files have not yet been exported. Import & Export the Site to create the files.*"
* After the first run of the *Productsup Server* destination, you can find the generated link in the *Filename* section only. The link turns black, so it is no longer a placeholder and the file already exists at this URL.
When your data is ready for export, select **Run** in the top-right corner of your page to let the platform import, process, and send your data to the destinations of all active exports in your site.If you want to run only the export where you added the *Productsup Server* destination, you should:
Select **Import** to let the site import and process your data.
Go to **Exports**, select the needed export to open the export setup page, and choose **Export this export**.
You can also run only one export from the main page in Exports:
1. Hover over the needed export and select **Export** at the end of its row.
Once the site finishes the export, you can copy the Productsup Server link in the *Filename* section on the export setup page. Then, paste it into your desired export channel system to let it import your data.
# Add the Amazon S3 destination
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
All exports in Productsup have the option of sending data to Amazon S3 using the destination *Amazon S3*. Using this destination, you can export your data to an object storage for analysis, backup, archiving, or other purposes.
Prerequisites [#prerequisites]
To set up the destination *Amazon S3*, you need:
. The region of the Amazon S3 account where you need to send data.
. The name of the bucket where you need to send data.
. Authorization data for the needed Amazon S3 bucket, such as an access key ID and a secret access key. See [Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html).
Set up the destination Amazon S3 [#set-up-the-destination-amazon-s3]
Go to **Exports** from your site's main menu and select an export from the list to open the export setup page. If your site doesn't have the needed export yet, select **ADD EXPORT** to find and add an export.
On the export setup page, select **Add Destination**, choose *Amazon S3* from the drop-down list, give it a name, and then select **Save**.
To let Productsup authenticate in the needed Amazon S3 account, provide your authorization data in **Access Key ID** and **Secret Access Key**.
In **Region**, choose the location of your Amazon S3 account.
In **Bucket**, enter the name of the bucket where you want to send data.
If you want to send your data to a specific folder in your Amazon S3 bucket, provide the path to the desired folder in **Base Path**. By default, the platform sends your data to the root folder.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
When your data is ready for export, select **Run** in the top-right corner of your page to let the platform import, process, and send your data to the destinations of all active exports in your site.If you want to run only the export where you added your Amazon S3 destination, you should:
Select **Import** to let the site import and process your data.
Go to **Exports**, select the needed export, and choose **Export this export**.
Once the site finishes the export, you can go to your Amazon S3 bucket to check the uploaded data. If everything is as expected, you can let your export channel system start an import from the bucket.
# Export your data to an FTP, SFTP, or FTPS server
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Most exports in Productsup can send data to FTP, SFTP, and FTPS servers, via the flexible *SFTP/FTP/FTPS Server* destination:
* FTP (File Transfer Protocol) is a standard communication protocol for transferring and exchanging files between a server and a client. FTP often uses plain-text authentication via standard login data, such as username and password. If configured so, FTP can enable users to connect to servers anonymously.
* SFTP (SSH File Transfer Protocol) is a data transfer protocol for exchanging data between a server and a client that uses a secure channel, such as SSH, and is accessible to authenticated users only.
* FTPS (File Transfer Protocol Secure or File Transfer Protocol SSL) is an extension of the standard FTP that supports Transport Layer Security (TLS). When using FTPS, a client and a server establish a traditional FTP connection and then use port 21 to establish an additional SSL connection before authenticating users or transferring data.
* FTPS Implicit is an older method of securing FTP connections that uses port 990 to establish an SSL connection between a server and a client before authenticating users or transferring data.
Reference channel or third-party service documentation to determine the correct server type.
If you need additional support evaluating the correct server type and configuration of the destination, contact [support@productsup.com](mailto:support@productsup.com).
The *SFTP/FTP/FTPS Server* destination doesn't support the inclusion of basic auth within FTP, SFTP, or FTPS URLs.
For example `ftp://[user[:password]@]host[:port]/[url-path]`.
Instead, each destination contains individual fields for the **URL Host**, **Directory**, **Username**, and **Password**.
Prerequisites [#prerequisites]
Obtain the login credentials for the target server before you begin:
. If the target export channel requires uploads to a specific server, get the host and user credentials specific to that server.
. If the export channel permits the use of third-party FTP servers, you can use an FTP server provided and hosted by Productsup.
Go to **FTP Accounts** from your organization's main menu to create an FTP server and set up its credentials. See [Create an FTP server hosted by Productsup](/docs/help-center/get-started/create-and-manage-an-ftp-server/create-an-ftp-server-hosted-by-productsup) for more details.
The FTP Accounts feature is available to admin users only. You may need to contact your organization's admin to create a new FTP server or get the credentials of an existing one.
Set up the SFTP/FTP/FTPS Server destination [#set-up-the-sftpftpftps-server-destination]
Go to **Exports** from your site's main menu and select an export from the list to open the export setup page. If your site doesn't have the needed export yet, select **ADD EXPORT** to find and add an export.
On the export setup page, select **Add Destination**, choose *SFTP/FTP/FTPS Server* from the drop-down list, give it a name, and then select **Save**.
On the destination setup page, select the needed server protocol in **Protocol**. The available options are:
* FTP
* FTPS
* SFTP
* FTPS Implicit
Provide your server host in **Host**. Leave out prefixes, such as `ftp://`, `sftp://`, or `ftps://`.
In **Port**, enter the number of the port that the platform should use to establish a connection with your server. If you leave this blank, the platform uses the default port of the chosen protocol. For example, port `22` for SFTP connections and port `21` for FTP connections.
Enter your server credentials in **Username** and **Password**. Or provide your base64-encoded private SSH key in **SSH Key must be (PEM format, RSA, ECDSA, or Ed25519, blank passphrase)** instead of the password.
If you want to send your data to a specific folder on your server, provide the path to the desired folder in **Directory**. By default, the platform sends your data to the root folder.
Toggle the **Passive Mode** button to choose the desired type of server connection. If you turn this option *On*, the platform uses the passive mode for data transfer letting the client connect to the server, which is more suitable for scenarios featuring a firewall. If you leave this option *Off*, the platform uses the active mode letting the server connect to the client.
Define the platform's behavior in case of server failure or inactivity:
1. In **Timeout**, enter the number of seconds the platform should wait before considering a request failed due to server inactivity. By default, the platform waits for `300` seconds.
2. In **Max Retries on Failure**, enter the number of new attempts the platform should automatically make in case of request failure. By default, the platform retries sending data `3` times.
If you want the platform to add an empty *.fin* file to your server every time it successfully finishes uploading data to the server, toggle **Enable fin file** to *On* and provide the desired name and extension for this file in **Fin File Name** and **Fin File Extension**. If you don't want the platform to create such a file on your server, leave **Enable fin file** off. If you provide a desired name and extension for the *.fin* file, the full name of the file uses the pattern *\{provided-name}.\{provided-extension}*. When a new data upload starts, the platform automatically deletes the old *.fin* file.
The default input in **Fin File Name** is `{{ file_name }}`. The default input in **Fin File Extension** is `fin`. This makes the default full name of the file `{export-file-name-without-extension}.fin`. You can find your export file name at the bottom of the export setup page. If you enter `{{ base_file_name }}` in **Fin File Name** and keep `fin` as the extension, the full name of the file is `{export-file-name-with-extension}.fin`.
Toggle **Enable ssh dss/rsa host key algorithms** to *On* if your SFTP server uses the deprecated [SSH-RSA](https://www.openssh.com/txt/release-8.8) or [SSH-DSS](https://www.openssh.com/txt/release-7.0) host key algorithms. Use this option only if the Productsup support team suggests it.
Toggle **Enable ssh rsa pubkey algorithm** to *On* if you want to use more modern signature algorithms for public key authentication. This option defines the accepted algorithms for your public key to prove its identity to the server and replaces older, less secure options like SSH-RSA (RSA with SHA-1) with more modern algorithms, such as `ssh-ed25519` and `rsa-sha2-256` or `rsa-sha2-512`.
Toggle **Enable ssh diffie-hellman-group14-sha1 key exchange algorithm** to *On* if your SFTP server uses `diffie-hellman-group14-sha1`, an outdated key exchange method used for establishing a secure connection. Use this option only if the Productsup support team suggests it.
In **SSH cipher**, enter the encryption algorithm used for data transfer. Use this field only if your server requires you to explicitly specify the cipher algorithm.
In **Override remote file name**, provide the desired name for your export file if you want this destination to produce an export file with a name that differs from the one specified on the export setup page.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
When your data is ready for export, select **Run** in the top-right corner of your page to let the platform import, process, and send your data to the destinations of all active exports in your site. To run only the export where you added your destination:
Select **Import** to let the site import and process your data.
Go to **Exports**, select the needed export, and choose **Export this export**.
Once the site finishes the export, you can use a desktop app like [Cyberduck](https://cyberduck.io/) or [FileZilla](https://filezilla-project.org/) to log into your server and check the uploaded files. If everything is as expected, you can let your channel start an import from the server.
# Set up a bucket destination
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Productsup lets you store your export data in a bucket on the Productsup server. You can choose from a list of buckets you previously set up or establish a new bucket destination in Exports.
All data feeds set to use the same bucket must have the same structure.
Set up a bucket destination in Exports [#set-up-a-bucket-destination-in-exports]
Go to **Exports** from your site's main menu and choose your single-merchant site export.
Go to step [4](#listitem-idm11655379799814) if you have already set up your export. To add an export, select **ADD EXPORT** and search for your export.
Next, select **Add**. Select **Add** again to confirm it as an export.
Give your export a custom name if desired, then select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination** and choose *Export to Data Source* from the dropdown. Give it a name as desired, and select **Save**.
On the destination setup page, add a unique bucket name in **Bucket**.
You can't choose an already-created bucket in this field. If you want to send your data to an existing bucket, you must manually enter the existing bucket name. The field is case-sensitive.
By default, the destination doesn't export skipped items. To include skipped items in the export, toggle **Allow skipped rows** to *On*.
By default, the destination includes platform-generated attributes, for example, created by a data service, into the export and sends them to the bucket. This allows you to use these attributes in other sites without needing to apply the same data services or other features again. If you don't want to export these attributes to the bucket, toggle **Remove Passthru Columns** to *On*.
By default, the destination sends empty attributes to the bucket. To avoid sending empty attributes to the bucket, toggle **Remove Empty Columns** to *On*.
By default, the destination sends the export output file to the bucket regardless of whether it contains any data. To avoid exporting files without data, toggle **Prevent Empty Upload** to *On*.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Select **Export this export** in the top-right corner of the page to send your data to the destination. Alternatively, the platform exports the data during the next scheduled run.
*Export to Data Source* is a destination and not a file format. As a result, you can't edit file settings, such as file name, item limit, sorting actions, or item count.
# Add the Microsoft Azure Blob Storage destination
import { Step, Steps } from "fumadocs-ui/components/steps";
All exports in Productsup have the option of sending data to Microsoft Azure Blob Storage using the destination *Microsoft Azure Blob Storage*. Using this destination, you can export your data to a data lake for analysis or backup.
Prerequisites [#prerequisites]
To set up the destination *Microsoft Azure Blob Storage*, you need:
. The name of the Microsoft Azure Blob Storage account where you need to send data.
. The storage account key to let Productsup authenticate in the needed Azure storage account. See [Authorize with Shared Key](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key).
. The name of the container in the relevant storage account.
Set up the destination Microsoft Azure Blob Storage [#set-up-the-destination-microsoft-azure-blob-storage]
Go to **Exports** from your site's main menu and select an export from the list to open the export setup page. If your site doesn't have the needed export yet, select **ADD EXPORT** to find and add an export.
On the export setup page, select **Add Destination**, choose *Microsoft Azure Blob Storage* from the drop-down list, give it a name, and then select **Save**.
In **Authentication Type**, select *Access Key* or *SAS Token*:
* If you selected *Access Key*, enter your Microsoft Azure Blob Storage account information in **Storage account name** and **Access key**.
* If you selected *SAS Token*, enter your shared access signature in **SAS Token** and **SAS Blob Endpoint**.
In **Container**, enter the full URL to the hosted file.
Optionally, in **Bath Path**, define a filepath and create new subfolders.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
When your data is ready for export, select **Run** in the top-right corner of your page to let the platform import, process, and send your data to the destinations of all active exports in your site.If you want to run only the export where you added your Azure storage destination, you should:
Select **Import** to let the site import and process your data.
Go to **Exports**, select the needed export, and choose **Export this export**.
Once the site finishes the export, you can go to your Azure container to check the uploaded data. If everything is as expected, you can let your export channel system start an import from the container.
# Add a BigQuery destination
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
BigQuery is part of the Google Cloud Platform. It is a data warehouse service that Google Cloud clients can use to store, organize, and analyze data. You can send data to BigQuery from a Productsup site by adding a BigQuery destination to an export.
Prerequisites [#prerequisites]
* You have set up at least one export in your Productsup site. If you haven't already done this, see [Add export](/docs/help-center/export-data-feeds/add-export).
* You can select *GCP BigQuery Export* as a destination on the setup page of the export containing the data you want to send to BigQuery. If it doesn't appear as an option, contact [support@productsup.com](mailto:support@productsup.com) for assistance.
* Before exporting data from Productsup, go to BigQuery and set it up to ensure it accepts external tables formatted following the Productsup scheme.
Add a BigQuery destination [#add-a-bigquery-destination]
Adding a BigQuery destination to an existing export channel lets you send product data to BigQuery. You can add a BigQuery destination as follows:
Go to **Exports** from your site's main menu and select the name of the needed export to open its setup page.
On the export setup page, select **Add Destination**.
Select *GCP BigQuery Export* from the **Destination** drop-down menu.
Select **Save**.
Set up the BigQuery export destination [#set-up-the-bigquery-export-destination]
After adding a BigQuery destination, you need to set it up. For data to transfer to BigQuery successfully, set up the destination as follows:
Select **Google Cloud Platform: BigQuery** in the **Authentication** drop-down menu.
Enter your BigQuery credentials in the following input fields:
* **Project ID** - This input field refers to the unique ID associated with each BigQuery project.
* **Dataset** - In this input field, enter the specific data set you wish to target in your BigQuery project.
* **Table** - Specify the table in your BigQuery data set where you want to export your Productsup data.
Select **Save**.
Your setup is now ready. The platform sends your data to BigQuery during the following manual or scheduled site run.
# LLM.txt
import { Callout } from "fumadocs-ui/components/callout";
import { Steps, Step } from "fumadocs-ui/components/steps";
Overview [#overview]
Productsup enables you to source data from your product data feed and output two key elements required for llm.txt:
. An llm.txt file for your web development team to embed on your website.
. A JSON file hosted by Productsup, accessible only to OpenAI IP addresses.
llm.txt is a temporary method that allows LLMs to crawl or scrape data from your website. It will be replaced as the industry adopts designated agentic commerce feed formats. Until then, it is a practical way to ensure your product data is available to AI agents that search your website directly.
Steps in Productsup [#steps-in-productsup]
Add the *OpenAI* export.
Add the *OpenAI (llm.txt)* destination.
Configure the Dataflow.
There is no required or standard schema for the product data included in the file. Connect the columns that contain the data your organization wants available for AI agents.
When configuration is complete, process the site. Two events occur:
* Productsup generates the LLM.txt template, embedded in the export page.
* Productsup sends the product data to OpenAI private IP endpoints.
Steps for your web development team [#steps-for-your-web-development-team]
Retrieve the LLM.txt template from the export page and provide it to your web development team to embed on your website.
Your web development team can find more details in the [primary llm.txt documentation](https://llmstxt.org/).
# OpenAI Product Feed
import { Callout } from "fumadocs-ui/components/callout";
import { Steps, Step } from "fumadocs-ui/components/steps";
Overview [#overview]
*OpenAI Product Feed New* enables you to make products discoverable inside ChatGPT.
OpenAI has sunset the API method for main product feed onboarding until at least late 2026.
OpenAI's future plans include using the API for frequent updates, such as price and availability changes. Until OpenAI releases these updates, it supports an SFTP-based approach.
Productsup customers should migrate any pre-existing *OpenAI API - Product Feed* export to the *OpenAI Product Feed New* export.
Prerequisites in OpenAI [#prerequisites-in-openai]
[Register with OpenAI](https://developers.openai.com/commerce/guides/get-started) to obtain SFTP credentials.
Steps in Productsup [#steps-in-productsup]
Add the *OpenAI Product Feed New* export.
Add the *SFTP/FTP/FTPS Server* destination. Configure the following fields:
* **Protocol:** *SFTP*
* **Host:** *determined by your OpenAI SFTP*
* **Port:** *determined by your OpenAI SFTP* — defaults to `22` in most cases.
* **Username:** *determined by your OpenAI SFTP*
* **Password:** *determined by your OpenAI SFTP*
OpenAI accepts .csv file extension, which is Productsup's default. However, you must contact your OpenAI representative for pre-approval before submitting your feed in this format.
Configure the Dataflow. See the [OpenAI product data specification](https://developers.openai.com/commerce/specs/file-upload/products?version=currently-stable) for column requirements.
# Agentic Commerce (AI) Exports
import { Callout } from "fumadocs-ui/components/callout";
Overview [#overview]
As search behavior shifts from traditional keyword queries to AI-driven conversations, Productsup supports Answer Engine Optimisation (AEO) — ensuring product data is structured for AI agents (ChatGPT, Perplexity, Copilot, Gemini) to interpret and recommend products with high confidence.
The field of agentic commerce moves fast. If you have questions about channels and methods not covered in the current docs, contact your Productsup representative.
Supported AI exports [#supported-ai-exports]
| | Objective | Technical summary |
| :------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- | :---------------------------------------------------------------------- |
| [**Google UCP**](/docs/help-center/export-data-feeds/agentic-commerce-ai-exports/google-ucp) | Support for Native Checkout experiences | Submission of required attributes via main or supplemental Google feeds |
| [**OpenAI Product Feed**](/docs/help-center/export-data-feeds/agentic-commerce-ai-exports/openai-product-feed) | Direct high-scale catalog ingestion (new standard) | Direct delivery to OpenAI SFTP using Parquet or compressed formats |
| [**LLM.txt**](/docs/help-center/export-data-feeds/agentic-commerce-ai-exports/llm-txt) | Organic discovery and web scraping guidance | Flat file generated by Productsup and hosted on client root domain |
| [**Perplexity**](/docs/help-center/export-data-feeds/agentic-commerce-ai-exports/perplexity) | Out-of-the-box solution for North American retailers | Direct SFTP delivery using Perplexity-provided credentials |
# Google Conversational Attributes
import { Callout } from "fumadocs-ui/components/callout";
import { Steps, Step } from "fumadocs-ui/components/steps";
AI-driven shopping is changing how buyers find and evaluate products — through AI Mode in Search, conversational agents, and other AI-powered surfaces. To help these systems represent your products accurately, Google Merchant Center supports a set of **conversational attributes**.
These attributes let you submit richer, more nuanced product information than a standard feed allows: answers to the questions buyers actually ask, links to related products and accessories, and detailed variant options such as size, color, and fit. Feeding this context to Google helps AI systems and conversational agents understand your products the way a well-briefed salesperson would, so buyers find the right product faster — whether they're browsing traditional search results or asking an AI assistant a question.
This feature is built for Productsup clients who already export a product feed to Google Merchant Center and want to enrich that feed with conversational depth, without touching or risking the integrity of their core product data. Because this export complements your existing Google Merchant Center feed rather than replacing it, it's available at no additional cost.
Available conversational attributes include:
| Attribute | What it's for | Example |
| :-------------------------------------------- | :-------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- |
| **Question and answer** `question_and_answer` | Product-specific FAQs — the questions buyers actually ask, and your answers | *"Does it have a headphone jack?" → "This version doesn't have a headphone jack."* |
| **Document link** `document_link` | Links to related PDFs, such as manuals or assembly instructions | `https://example.com/manual.pdf` |
| **Related product** `related_product` | Cross-sells, accessories, or required parts, linked by identifier | `accessory:gtin:811571013579` |
| **Item group title** `item_group_title` | A shared title for a product with multiple variants | *"Google Pixel 9"* |
| **Variant option** `variant_option` | The specific properties that distinguish one variant from another | *"display:XL,memory:512GB,color:moonstone"* |
| **Popularity rank** `popularity_rank` | How a product ranks in popularity as a percentage of your inventory | `95.5` |
This data is sent to Google Merchant Center to enrich your main product feed. Before setting up conversational attributes, make sure your primary product feed is already flowing into GMC through one of the supported Productsup export options.
Prerequisites [#prerequisites]
Google recommends submitting conversational data as a supplemental data source, layered on top of your existing primary feed, rather than folding it into the primary feed itself. Keeping these attributes in a separate feed also makes the setup easier to manage and reduces the risk of formatting issues affecting your primary feed — particularly for complex attributes such as `question_and_answer`, where quotation marks can be misinterpreted during import.
Before setting up the export in Productsup, prepare a supplemental data source in Google Merchant Center:
In your [Merchant Center account](https://merchants.google.com/), go to **Settings** → **Data sources**.
Select the **Supplemental sources** tab, then **Add supplemental product data**.
The **Supplemental sources** tab only appears once the **Advanced data source management** add-on is enabled on your account.
Choose your source type (file, Google Sheets template, or API), and enter:
* **File name** — must exactly match the file you submit, including its extension.
* **Product ID** — ties your supplemental data back to the matching product in your primary feed.
* **Data source label** — a name to help you identify this data in Ads campaigns.
* **Language** — the language your product data is written in.
Link the new supplemental source to the primary data source it should enrich.
See Google's guide to [creating a supplemental data source](https://support.google.com/merchants/answer/14990942?hl=en\&ref_topic=12672304#supplementaldatasource) for full details, and the [conversational attributes reference](https://support.google.com/merchants/answer/17085370?hl=en) for how each attribute works and how to format its values.
Add the Google Merchant Center Conversational Attributes export [#add-the-google-merchant-center-conversational-attributes-export]
Go to **Exports** in your site's main menu and select **Add export**. Search for **Google Merchant Center Conversational Attributes**, hover over it, and select **Add**.
Set the recommended file settings for this export: file format `.tsv`, separator `\t` (TAB), and CSV enclosure disabled. While `.tsv` is the recommended format, CSV and XML are also supported if they better fit your existing setup.
These settings avoid formatting issues with structured attributes such as `question_and_answer`, where quotation marks combined with CSV enclosure can cause the data to be parsed incorrectly.
Select the newly added **Google Merchant Center Conversational Attributes** export, then select **Add Destination**.
Choose one of two ways to deliver conversational data to GMC, matching how your supplemental data source is configured:
* **Productsup Server** — hosts the generated file on Productsup's servers. Provide the file's URL as the source when configuring the supplemental data source in GMC, or upload it manually. See Google's guide on [uploading products to Merchant Center](https://support.google.com/merchants/answer/11586438?sjid=2884237056074078383-EU) for how GMC consumes a hosted file.
* **SFTP/FTP/FTPS** — use the credentials Google provides when you set up the supplemental feed data source in GMC.
See [Choose how you want to send data to GMC](/docs/help-center/export-data-feeds/add-export/add-google-merchant-center-export#choose-how-you-want-to-send-data-to-gmc) for the full walkthrough of both destination options.
Go to **Dataflow** to locate the conversational attributes available for Google Merchant Center, and map them from import to export.
This export provides separate fields for each supported attribute. Structured attributes — `question_and_answer`, `document_link`, `related_product`, and `variant_option` — provide multiple numbered fields, for example `variant_option[1].name` and `variant_option[2].name`. Map the raw values from your product data into the corresponding fields; the platform combines them into the structure Google requires when the export runs. If your source data is already formatted the way Google expects it, you can map that pre-formatted value directly to the attribute instead — the platform uses it ahead of any numbered fields you've also mapped. See [Map each conversational attribute](#map-each-conversational-attribute) for details on every field.
Go to **Data View** to review the mapped data before the export runs. See [Before exporting](#before-exporting) for what to check.
Map each conversational attribute [#map-each-conversational-attribute]
The numbered fields on structured attributes also let you use rules to decide which information populates each field, depending on the data available for each product.
Already have a value formatted the way Google expects? Map it directly to the attribute instead of splitting it into numbered fields — the platform prioritizes it over any numbered fields you've also mapped.
Product ID [#product-id]
The `id` field is required for this export. Map exactly the same product ID that your primary feed sends to Google Merchant Center. Google matches conversational data to existing products by ID — if the identifiers don't align, your enrichment data doesn't attach to the right products and the update has no effect.
Also map `item_group_id` when it's available, even if it's already included in your primary feed.
Question and answer [#question-and-answer]
`question_and_answer` provides product-specific questions and answers. This export supports up to 30 pairs per product, with separate fields for each pair:
* `question_and_answer[1].question` / `question_and_answer[1].answer`
* `question_and_answer[2].question` / `question_and_answer[2].answer`
* up to `question_and_answer[30]`
Map the raw question and the raw answer into the corresponding fields — for example:
| Field | Example value |
| :-------------------------------- | :------------------------------------------ |
| `question_and_answer[1].question` | Does it have a headphone jack? |
| `question_and_answer[1].answer` | This version doesn't have a headphone jack. |
There's no need to add quotation marks or build Google's final syntax manually — the platform applies the required formatting during export.
Document link [#document-link]
`document_link` provides links to product-related documents, such as manuals, user guides, or assembly instructions. This export supports up to 5 links per product:
* `document_link[1]`
* `document_link[2]`
* up to `document_link[5]`
Map each document URL into the corresponding field — for example, `document_link[1]` → `https://example.com/product-manual.pdf`. The platform builds the required output structure during export.
Item group title [#item-group-title]
`item_group_title` provides a shared title for products that belong to the same variant group. Describe the general product without variant-specific details such as size or color.
| Field | Example value |
| :----------------- | :-------------------------------------- |
| Product title | Organic Cotton T-Shirt – Black – Size M |
| `item_group_title` | Organic Cotton T-Shirt |
`item_group_title` requires an `item_group_id` on the product. Make sure the corresponding item group ID is available and mapped.
Popularity rank [#popularity-rank]
`popularity_rank` indicates a product's relative popularity, expressed as a value between `0.0` and `100.0`.
Map your calculated value directly into `popularity_rank` — no additional formatting is required. Define the ranking logic based on your own business data, and apply a consistent methodology across your assortment so values stay comparable.
Related product [#related-product]
`related_product` links the current product to related products — cross-sells, accessories, or required parts. This export supports up to 30 related products, each defined by three fields:
| Field | Description |
| :------------------------------------- | :-------------------------------------------------------------------------------- |
| `related_product[1].identifier` | The identifier of the related product, matching the type set in `identifier_type` |
| `related_product[1].identifier_type` | The type of identifier provided |
| `related_product[1].relationship_type` | How the two products are related |
`identifier_type` accepts:
| Value | Description |
| :----- | :------------------------------------------------- |
| `id` | The product ID from your product data source |
| `gtin` | The product's GTIN, such as UPC, EAN, JAN, or ISBN |
`relationship_type` accepts:
| Value | Description |
| :------------------ | :---------------------------------------------------- |
| `part_of_set` | Part of the same set or product line |
| `required_part` | Required for the product to function |
| `often_bought_with` | Commonly purchased together |
| `substitute` | An alternative to the current product |
| `different_brand` | The same or an equivalent product under another brand |
| `accessory` | An accessory for the current product |
For example:
| Field | Example value |
| :------------------------------------- | :------------ |
| `related_product[1].identifier` | CASE123 |
| `related_product[1].identifier_type` | `id` |
| `related_product[1].relationship_type` | `accessory` |
Use the next numbered fields for additional related products, up to 30, each with its own complete set of values. Map only the raw values — the platform combines them into the format Google requires during export.
Variant option [#variant-option]
`variant_option` captures the specific information that distinguishes one product variant from another within the same item group. Which attributes qualify depends on your product data and how the products sharing an `item_group_id` differ — for clothing, that might be size, color, material, or fit.
This export supports up to 30 variant options, each with a separate name and value field:
* `variant_option[1].name` / `variant_option[1].value`
* `variant_option[2].name` / `variant_option[2].value`
* up to `variant_option[30]`
Map only the raw name and value — the platform generates Google's required `variant_option` structure during export.
Example: map variant options with rules [#example-map-variant-options-with-rules]
Suppose products in the same item group vary by size and color.
For `variant_option[1].name`, create a rule: if `size` has a value, set the value to *Size*.
For `variant_option[1].value`, create a rule: if `size` has a value, take the value from the `size` attribute.
For `variant_option[2].name`, create a rule: if `color` has a value, set the value to *Color*.
For `variant_option[2].value`, create a rule: if `color` has a value, take the value from the `color` attribute.
This produces, for example:
| Field | Example value |
| :------------------------ | :------------ |
| `variant_option[1].name` | Size |
| `variant_option[1].value` | M |
| `variant_option[2].name` | Color |
| `variant_option[2].value` | Black |
Continue the same pattern for additional variant options.
Rules are also useful for excluding attributes that don't actually distinguish the variants. For example, if every product in an item group shares the same size, size isn't a distinguishing attribute for that group — create a rule to leave the corresponding variant option empty in that case.
The key is to look at the products sharing an `item_group_id` and identify which attributes genuinely distinguish them from each other.
Before exporting [#before-exporting]
Before you export the feed, review the mapped attributes in Data View and confirm:
* `id` exactly matches the ID used in your main Google Merchant Center feed.
* `item_group_id` is provided wherever relevant.
* Question and answer values are mapped without manually added formatting.
* All required fields are populated for each related product.
* For `related_product` and `variant_option`, make sure every sub-field in a numbered entry is mapped — a partially filled entry (for example, an identifier without its `identifier_type`, or a name without its value) is dropped from the export entirely.
* Variant options represent attributes that actually distinguish products within the same item group.
* Variant option names and values use matching numbered positions.
* Irrelevant variant information is left empty.
* The export uses the recommended `.tsv` file format, TAB separator, and disabled CSV enclosure.
Expected export output [#expected-export-output]
When the export runs, the platform combines the individual fields into the structure Google Merchant Center expects for the supplemental feed. For example, a product might produce the following output:
| Attribute | Example exported value |
| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | TSHIRT123-BLK-M |
| `item_group_id` | TSHIRT123 |
| `item_group_title` | Organic Cotton T-Shirt |
| `popularity_rank` | 92.5 |
| `document_link` | `https://example.com/product-guide.pdf`, `https://example.com/care-instructions.pdf` |
| `question_and_answer` | "Is this product waterproof?":"Yes, this product is waterproof.", "Does it have a headphone jack?":"No, this version doesn't have a headphone jack." |
| `related_product` | accessory:id:CASE123, often\_bought\_with:id:BAG456 |
| `variant_option` | Size:M, Color:Black |
Best practices [#best-practices]
* **Don't duplicate what you already have.** If your `description`, `product_highlight`, or `product_detail` attributes already cover a piece of information, leave it out of the conversational attributes to avoid redundant, bloated feeds.
* **Start with your best Q\&A content.** Pull from real customer questions — support tickets, live chat logs, product review comments — rather than guessing what buyers might ask. This is where conversational attributes add the most value for AI-driven surfaces.
* **Keep variant data consistent.** Use the same naming conventions for `variant_option` values (for example, always `color`, not sometimes `colour`) across your whole catalog so AI systems can reliably group and compare variants.
* **Confirm the Advanced data source management add-on is enabled** in GMC before you start. Without it, the **Supplemental sources** tab doesn't appear, and setup stalls at the first step.
* **Remember this is additive, not destructive.** Conversational attributes can't add or remove products, and submitting them doesn't affect your existing products' approval status, making this a low-risk way to enrich what's already working.
# Perplexity
import { Callout } from "fumadocs-ui/components/callout";
import { Steps, Step } from "fumadocs-ui/components/steps";
Overview [#overview]
Perplexity accepts a standard product data feed via SFTP upload. This channel is largely similar to other flat-file product feed standards. Productsup pre-populates the Dataflow with mandatory and optional columns.
Perplexity's feed documentation is currently decentralized and may be evolving. Productsup will continue to refine this documentation as Perplexity's agentic feed model solidifies. If you find any aspect unclear or out of date, contact your Productsup representative for support.
Prerequisites in Perplexity [#prerequisites-in-perplexity]
[Sign up for Perplexity](https://www.perplexity.ai/hub/legal/merchant-program-terms-of-service) and get approved. Upon approval, you receive SFTP access.
Steps in Productsup [#steps-in-productsup]
Add the *Perplexity* export.
Add the *SFTP/FTP/FTPS Server* destination. Configure the following fields:
* **Protocol:** *SFTP*
* **Host:** *determined by your Perplexity SFTP*
* **Port:** *determined by your Perplexity SFTP* — defaults to `22` in most cases.
* **Username:** *determined by your Perplexity SFTP*
* **Password:** *determined by your Perplexity SFTP*
Configure the Dataflow, connecting all mandatory columns at minimum.
* While the API method is supported by Perplexity, they do not guarantee access to all merchants.
* Productsup currently supports only the SFTP method.
* Productsup supports only the .csv file format out of the box, not .xml.
# Google UCP
import { Callout } from "fumadocs-ui/components/callout";
import { Steps, Step } from "fumadocs-ui/components/steps";
Overview [#overview]
Google UCP (Universal Commerce Protocol) enables Merchant Center account holders to use Native Checkout.
UCP is only available to merchants who fulfill from within the U.S. and have a U.S. bank account.
Apply for access via Google's [UCP Integration Interest Form](https://support.google.com/merchants/contact/ucp_integration_interest).
Google requires submission of a flat-file Supplemental feed, uploaded to your Google SFTP. While Google supports .csv and .xml, Productsup recommends .csv and does not currently support the .xml format out of the box.
See [Universal Commerce Protocol](https://support.google.com/merchants/answer/16837055?hl=en-IE\&sjid=10010394131284263347-NA) for more information.
The Google UCP feed documentation is rapidly evolving. Productsup will continue to refine this documentation as Google's agentic feed model solidifies. If you find any aspect unclear or out of date, contact your Productsup representative for support.
Prerequisites in Google [#prerequisites-in-google]
Complete the technical implementation as outlined in the UCP developer guide. This is required before you begin onboarding.
[Fill out the UCP Integration Interest Form](https://support.google.com/merchants/contact/ucp_integration_interest?sjid=10010394131284263347-NA).
When Google selects you to participate, they notify you and grant access to the onboarding experience in Merchant Center. You receive a sandbox environment to validate your integration, including your UCP profile, identity linking, and Native Checkout APIs.
[Configure your return policy in Merchant Center](https://developers.google.com/merchant/ucp/guides/merchant-center#11_return_policy).
[Configure your customer support information in Merchant Center](https://developers.google.com/merchant/ucp/guides/merchant-center#12_customer_support_info).
Steps in Productsup [#steps-in-productsup]
Add the *Google Merchant Center UCP* export.
Add an [export destination](/docs/help-center/export-data-feeds/set-up-an-export-destination). Two options are supported:
* **Productsup Server** — generates a public HTTPS URL, which you can configure for fetch in GMC.
* **SFTP/FTP/FTPS Server** — pushes the file directly to SFTP. This requires configuration to target the Google SFTP, available via Merchant Center.
If you are using the SFTP destination, configure the following fields:
* **Protocol:** *SFTP*
* **Host:** `partnerupload.google.com`
* **Port:** `19321`
* **Username:** *Your SFTP username, found in your Google Merchant Center SFTP settings*
* **Password:** *Your SFTP password, generated in your Merchant Center account. This differs from your Merchant Center password. Your SFTP password is available in the details of any file-based data source in Merchant Center.*
Configure the Dataflow.
Ensure the `ID` and `native_commerce` columns are connected at the export stage. `native_commerce` is a boolean and must contain `true` for products eligible for Native Checkout, or `false` otherwise.
The `consumer_notice` column is optional, but is required if your products must legally be accompanied by consumer warnings in your listing regions. See [Google's product warnings documentation](https://developers.google.com/merchant/ucp/guides/merchant-center#22_product_warnings) for details.
**Attention Shopify users:**
If Shopify Products is the primary data source in your site, connect the optional column `merchant_item_id` in the export dataflow.
The `merchant_item_id` data is available in the import column `admin_graphql_api_id`. Example: `admin_graphql_api_id: gid://shopify/ProductVariant/46041514213588`.
In the dataflow, connect the import column `admin_graphql_api_id` directly to the export column `merchant_item_id`.
Testing [#testing]
Process the site to generate the Supplemental feed file.
Make the final configuration in GMC:
* **Productsup Server destination:** obtain the URL from the export page, create a new Supplemental feed in GMC, and configure the source to fetch the URL.
* **SFTP/FTP/FTPS Server destination:** the file uploads automatically to the SFTP — data updates in GMC within 24 hours.
# Import CSV files - advanced settings
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
A comma-separated values (CSV) file is a plain text file containing lists of data separated or delimited by a comma. Additionally, you can separate data in a CSV file with other delimiters as well, such as a colon (`:`), semi-colon (`;`), or a tilde (`~`). You can refer to files where you separate columns by tabs as TSV files. You should treat TSV and CSV files similarly.
The following is an example of a typical CSV file:
```
id,title,price,size
1,"Red Shirt","20 EUR",Small
2,"Blue Shirt","25 EUR",Large
```
To import CSV files, you must add the *Feed URL* or *Local File Import* data source in Data Sources.
*See and for more information.*
CSV Settings [#csv-settings]
CSV files are typically not as complex to import as [JSON](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-json-files-advanced-settings) or [XML](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-xml-files-advanced-settings) files. In most cases, the auto-detect feature imports your file as desired.
For non-standard cases, you may have to modify some of the import settings.
Non-standard encoding [#non-standard-encoding]
Each saved file comes with encoding, which gives you information on how to import the file's content.
The most standard encoding for CSV files is UTF-8. Other common encodings are:
* UTF-16
* UTF-32
* ANSI
* Windows-1251
* Windows-1252
If your file differs from the standard, you must add this information to the platform. Defining the encoding ensures you import data as expected.
To define the encoding type:
Go to **Data Sources**, then select the appropriate import channel's settings cogwheel (⚙).
Next, scroll down to **Content Options** and **CSV Settings**.
From here, enter your encoding type in **Encoding**. See [Import a file from a URL](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-a-url#section-idm243298858936996) for more information.
If the delimiter is not a comma [#if-the-delimiter-is-not-a-comma]
If the delimiter in your file is not a comma, you need to add this information to the platform. Defining the delimiter helps you import the data as expected.
To define the delimiter:
Go to **Data Sources**, then select the appropriate import channel's settings cogwheel (⚙).
Next, scroll down to **Content Options** and **CSV Settings**.
Then, enter your encoding type in **Delimiter**.
Non-standard enclosure [#non-standard-enclosure]
Enclose data in CSV files containing more than one word or number, for example, using quotation marks. Enclosures prevent the platform from incorrectly parsing platform data when it encounters a delimiter.
```
id,title,price,size,description
1,"Red Shirt","20 EUR",Small,"This is a great product, I tested it myself"
```
From the previous example, the written description contains a comma (`,`):
`This is a great product, I tested it myself.`
Enclosing the description field with quotation marks tells the platform to treat the entire description as one field. If you forget the enclosure, you might import the description split into two fields:
* `This is a great product`
* `I tested it myself`
Use a quotation mark (`"`) on either side of the data as the standard enclosure method. If you want to use another enclosure, you can define it in the platform.
To define the enclosure:
Go to **Data Sources**, then select the appropriate import channel's settings cogwheel (⚙).
Next, scroll down to **Content Options** and **CSV Settings**.
Then, enter your enclosure method in **Enclosure**.
The platform automatically removes the enclosure and does not appear in your import data.
Manage non-standard headers [#manage-non-standard-headers]
A CSV file typically has a header in the first line. The header indicates the file's column names.
```
id,title,price,size
1,"Red Shirt","20 EUR",Small
```
The previous CSV example results in the following import data:
| Id | Title | Price | Size |
| -- | --------- | ------ | ----- |
| 1 | Red Shirt | 20 EUR | Small |
* You can define your header row using the **Header in Row** field.
* If you are missing a header, add it to your feed containing all the desired column names using the **Prepend Header Row**.
* If you want to rename your columns for the imported data directly, you can provide a new header by using the **Replace Header Row** field.
To edit header information:
Go to **Data Sources**, then select the appropriate import channel's settings cogwheel (⚙).
Next, scroll down to **Content Options** and **CSV Settings**.
Lastly, make changes as necessary to the following header fields.
Add a prefix to the attributes imported from your CSV file [#add-a-prefix-to-the-attributes-imported-from-your-csv-file]
If you have numerous data sources added to one site, you may need to know which attributes come from which data sources. You can distinguish between attribute sources by adding prefixes to the names of your attributes.
For example, the attribute `price` imported from a data source called *CSV1* can get the prefix `CSV1@` for the platform to display the full name of this attribute as `CSV1@price`.
To add a prefix to the names of attributes that Productsup imports from your CSV file, follow these steps:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the **Content Options** panel at the bottom of the data source setup page and select **CSV Settings**.
In **Prepend a String to the Header Columns**, enter the prefix you want to add to the names of the attributes imported from this data source.
Select **Save all settings**.
On the **Data Sources** page, open the **Settings** tab and modify the name of your unique item identifier in **ID Column** according to the new prefix of the relevant attribute name.
You can skip this step if your site doesn't have a unique item identifier or your unique item identifier comes from a different data source with no attribute name prefix.
# Import JSON files - advanced settings
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
JSON explained [#json-explained]
JSON (JavaScript Object Notation) is a human-readable format for exchanging data between systems. It consists of key-value pairs that can look similar to this: `{"id": "1111"}`. In this example, *id* is the attribute key, and *1111* is the attribute value. In a JSON file, every key is enclosed in double quotation marks. Every value can be a string, array, object, or number. If a value is a string, it is also enclosed in double quotation marks.
Here is an example of a typical JSON file that stores data for one product in one object:
```
{
"id": "1111",
"title": "Shirt",
"size": "L",
"price": "30 EUR",
"stock": "5"
}
```
If a JSON file stores data for multiple products, the file contains an array that opens and closes with a square bracket. Inside the array, each product is an object that opens and closes with a curly bracket:
```
[
{
"id": "1111",
"title": "Shirt",
"size": "L",
"price": "30 EUR",
"stock": "5"
},
{
"id": "2222",
"title": "Pants",
"size": "S",
"price": "60 EUR",
"stock": "3"
}
]
```
You can import your raw JSON files into Productsup using the following data source options:
* Feed URL. See [Import a file from a URL](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-a-url) for more information.
* Local File Import. See [Import a file from your computer](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-your-computer) for more information.
* Basic API Request with JSON Response.
* Productsup Stream API and Productsup Platform API. See [Import data via the Productsup Stream API](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-from-apis#section-idm4582691268902433399454193933) and [Import data via the Productsup Platform API](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-from-apis#section-idm232211500950421) for more information.
* Specific data sources for PIM and other systems that use atypical JSON code.
To read and interpret JSON files correctly, the platform parses them before uploading their contents to your site. To ensure that parsing goes smoothly, you can use various JSON settings while setting up your data source option.
Nested JSON files with complex structures may require custom development efforts on the Productsup side to let the platform parse them correctly. Reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com) if you need help.
Import a JSON file with a root node [#import-a-json-file-with-a-root-node]
Some JSON files have root nodes. A root node is a key that contains an array storing all your products. It serves as an entry point from which the platform should start importing products in your file.
The root node in the following example is `products`:
```
{
"products": [
{
"id": "1111",
"title": "Shirt",
"size": "L",
"price": "30 EUR",
"stock": "5"
},
{
"id": "2222",
"title": "Pants",
"size": "S",
"price": "60 EUR",
"stock": "3"
}
]
}
```
If your JSON file contains a root node and you don't specify it on the data source setup page, the import fails.
To specify a root node for your JSON file:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the *Content Options* panel at the bottom of the data source setup page and select **Json Settings**.
In **Root Node**, enter the key that serves as a root node in your JSON file. Don't include quotation marks in this field; only add the name of the key, for example, `products`.
If your relevant root node is nested deep in the file's structure, you can use either option:
1. Enter the name of the relevant key only.
2. Specify the whole path leading up to the relevant key, such as `products>garden-furniture>spring-collection`.
Select **Save all settings**.
Import a JSON file with variant keys [#import-a-json-file-with-variant-keys]
If your products are available in multiple sizes or colors, your JSON file may store this data in variant keys in each product. In the following example, the variant key `sizes-and-stock` contains different sizes and the related stock data:
```
{
"products": [
{
"id": "1111",
"title": "Shirt",
"price": "30 EUR",
"sizes-and-stock": [
{
"size": "L",
"stock": "5"
},
{
"size": "S",
"stock": "2"
}
]
},
{
"id": "2222",
"title": "Pants",
"price": "60 EUR",
"sizes-and-stock": [
{
"size": "L",
"stock": "3"
},
{
"size": "M",
"stock": "5"
}
]
}
]
}
```
When importing products with variant keys, the platform creates one row per product by default and adds new columns for all attributes and values stored within the variant key. This is why you get the following data in your site:
| id | title | price | sizesandstock\_0\_size | sizesandstock\_0\_stock | sizesandstock\_1\_size | sizesandstock\_1\_stock |
| ---- | ----- | ------ | ---------------------- | ----------------------- | ---------------------- | ----------------------- |
| 1111 | Shirt | 30 EUR | L | 5 | S | 2 |
| 2222 | Pants | 60 EUR | L | 3 | M | 5 |
However, the platform can also import variant keys as separate product rows:
| id | title | price | sizesandstock\_size | sizesandstock\_stock |
| ---- | ----- | ------ | ------------------- | -------------------- |
| 1111 | Shirt | 30 EUR | L | 5 |
| 1111 | Shirt | 30 EUR | S | 2 |
| 2222 | Pants | 60 EUR | L | 3 |
| 2222 | Pants | 60 EUR | M | 5 |
To let the platform import variant keys as separate product rows, use the **Variant Node** setting on the data source page:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the *Content Options* panel at the bottom of the data source setup page and select **Json Settings**.
In **Variant Node**, enter the variant key of your JSON file. Don't include quotation marks in this field; only add the name of the key, for example, `sizes-and-stock`.
If your file also has a root node, remember to enter it in **Root Node**. See [Import a JSON file with a root node](#N1681748301861).
Select **Save all settings**.
Bundle repeating keys into one column [#bundle-repeating-keys-into-one-column]
A JSON file may have a key with an array that stores multiple values. For example, see the `size` key:
```
{
"id": "1111",
"title": "Shirt",
"price": "30 EUR",
"size": [
"XS",
"M",
"L"
]
}
```
By default, the platform creates a new column for each value in the array and imports the data as follows:
| id | title | price | size\_0 | size\_1 | size\_2 |
| ---- | ----- | ------ | ------- | ------- | ------- |
| 1111 | Shirt | 30 EUR | XS | M | L |
However, you can bundle the repeating values into one column and let the platform import the data this way:
| id | title | price | size |
| ---- | ----- | ------ | -------- |
| 1111 | Shirt | 30 EUR | XS, M, L |
You can use any delimiter to separate values.
To bundle repeating values into one column:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the *Content Options* panel at the bottom of the data source setup page and select **Json Settings**.
Check the **Bundle** box to enable the setting.
In **Bundle Delimiter**, enter the symbol that should separate your repeating values in a column. The default separator is a comma (`,`).
If your file also has a root node, remember to enter it in **Root Node**. See [Import a JSON file with a root node](#N1681748301861).
Select **Save all settings**.
Exclude specific keys from a JSON file [#exclude-specific-keys-from-a-json-file]
You can let the platform exclude specific keys during import. For example, you may want the platform not to import the key `updatedOn` into your Productsup site:
```
{
"id": "1111",
"title": "Shirt",
"size": "L",
"updatedOn": "17.04.2023"
}
```
To let the platform skip an unneeded key:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the *Content Options* panel at the bottom of the data source setup page and select **Json Settings**.
In **Exclude Items**, enter the key you want to skip during import. Don't include quotation marks in this field; only add the name of the key, for example, `updatedOn`.
To exclude multiple keys during import, separate them with a comma.
Select **Save all settings**.
Transform a JSON file into a CSV file [#transform-a-json-file-into-a-csv-file]
Some export channels prefer uploading CSV files rather than JSON files. In these cases, you may want to transform your JSON file into a CSV file before Productsup imports it:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Select the *Advanced Settings* tab and choose **I/O Settings**.
In the **Transform JSON to CSV** option, select **Add**.
Use the fields **Product Path** and **Multiline** to provide the platform with the needed transformation details. See [Transform JSON to CSV](/docs/help-center/import-data-feeds/import-your-data-into-productsup-advanced-settings#listitem-idm243363621862244) to fill out these fields.
Select **Save**.
# Import XML files - advanced settings
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
XML explained [#xml-explained]
XML (Extensible Markup Language) is a versatile file format for storing, transmitting, and reconstructing data. An XML file typically has a tree structure with various nodes nested at different depths. Each node in the tree structure is an XML element enclosed in the opening and closing tags, for example, `XYZ`.
Here is an example of an XML file:
```
Yellow shirt
Medium
20 EUR
30 EUR
Blue shirt
Large
25 EUR
```
You can import your raw XML files into Productsup using the following data source options:
* Feed URL. See [Import a file from a URL](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-a-url) for more information.
* Local File Import. See [Import a file from your computer](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-your-computer) for more information.
The platform parses XML files before uploading their contents into your site to read and interpret the files correctly. To ensure that parsing goes smoothly, you can use various XML settings while setting up your data source option.
Root nodes in an XML file [#root-nodes-in-an-xml-file]
In XML, a root node is the parent node for all the nodes in the file. In Productsup, however, a root node is the desired point in an XML file from which the platform should start importing your products.
In the following example of an XML file, the root node, as perceived by XML, is `items`. Productsup can import products from this file with no errors if you define the root node as `items`, but it is a Productsup best practice to set the root node as `product!`. This way, the parser imports all products stored in the `` nodes.
```
Yellow shirt
Medium
20 EUR
30 EUR
Blue shirt
Large
25 EUR
```
Productsup scans XML files for a root node during every run automatically. You can check if the parser detects the correct root node in **Root nodes suggestions**. If it doesn't, you must set it up manually.
To define a root node manually:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the **Content Options** panel at the bottom of the data source setup page and select **XML Settings**.
Add the relevant root node in **Root Node**.
Use the following syntax to define root nodes:
1. Use `!` to let the platform import all nodes with the defined name as products and all their children nodes as attributes.Root node example: `product!`.
2. Use `>` as a delimiter between node levels to define a path to your root node and import a specific part of your XML file.Root node example: `items>product>title`.
3. Use root node paths to import product variants from XML files with simple structures. For example, you can have a file similar to this:
```
products UK
Red shirt
M
XL
products US
Blue shirt
S
XS
```
In such a file, product variants inherit all attributes within ``, which lets the root node `feed>product_list>products` import the following data into Productsup:
| size | product\_@attributes\_lang | product\_product\_list\_name | product\_product\_list\_title |
| ---- | -------------------------- | ---------------------------- | ----------------------------- |
| M | en | products UK | Red shirt |
| XL | en | products UK | Red shirt |
| S | en | products US | Blue shirt |
| XS | es | products US | Blue shirt |
4. Use tag attributes, such as `lang=xyz`, where *xyz* is the desired tag, to narrow down the list of imported products.From an XML file similar to the one shown previously, the root node `products lang=es` lets the platform import the following:
\| size |
\| --- |
\| XS |
5. Use `#n`, where *n* is the number of the parent node you want to import products from. The counting starts at `1`. The parent node must contain a list of products as child nodes. Use a space to separate the tag from the rest of your root node.From an XML file similar to the one shown previously, the root node `products #1` lets the platform import the following:
\| size |
\| --- |
\| M |
\| XL |
You can use both tag attributes and parent node numbers in a root node at the same time. For example, `products lang=es #2`.
Select **Save all settings**. See [Import a file from a URL](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-a-url) for more information.
Add a max depth to scan the file [#add-a-max-depth-to-scan-the-file]
Max depth defines how deep into the tree structure of your XML file the parser should go when searching for the root node and extracting your product data. The platform doesn't scan more levels of the tree structure than the maximum depth defines. Adding the max depth setting can reduce your data source processing time.
An XML file always starts at a depth of `0`.
In the following example, the node `products` is at a depth of `2`. If you set the max depth of this file to `2`, the platform identifies the root node as `product_list!` and imports data stored at a depth of `2` because the root node itself is at a depth of `1`.
```
// depth 0
// depth 1
Products UK // depth 2
Red shirt
20 GBP
// depth 3
Medium // depth 4
Extra Large
```
To specify a max depth:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the **Content Options** panel at the bottom of the data source setup page and select **XML Settings**.
Add the relevant max depth in **Max Depth** and select **Save all settings**.A digit is the expected input format. By default, the max depth is `4`.
Add or replace an XML declaration [#add-or-replace-an-xml-declaration]
An XML declaration is usually the first line of code in an XML file that identifies the file as XML and contains the XML version and the encoding used in the file. Here is a sample XML declaration:
```
```
To add a missing or replace a wrong XML declaration:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the **Content Options** panel at the bottom of the data source setup page and select **XML Settings**.
If your declaration is missing, add it in **Prepend Header Row**.If your declaration is incorrect, replace it in **Replace Xml Declaration**.
Select **Save all settings**.
Bundle repeating nodes into one column [#bundle-repeating-nodes-into-one-column]
If your XML file has products whose nodes appear multiple times, the platform imports such nodes as separate columns. If you don't want the platform to import such nodes separately, you can bundle repeating nodes into one column based on how many times they appear.
The following XML file has multiple color variants in one size of a T-shirt product:
```
T-shirt
Medium
Yellow
Red
Blue
Green
```
By default, the platform imports this file similar to this:
| title | size | color\_0 | color\_1 | color\_2 | color\_3 |
| ------- | ------ | -------- | -------- | -------- | -------- |
| T-shirt | Medium | Yellow | Red | Blue | Green |
If you bundle the four `color` nodes and use a colon (`:`) to separate the nodes' values, the platform imports the data similar to this:
| title | size | color |
| ------- | ------ | --------------------- |
| T-shirt | Medium | Yellow:Red:Blue:Green |
To bundle repeating nodes:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the **Content Options** panel at the bottom of the data source setup page and select **XML Settings**.
Enter the number of repeating nodes that the platform should bundle into one column in **Bundle repeating nodes**.A digit is the expected input format. By default, the platform bundles nodes that appear at least 11 times.
In **Bundle delimiter**, specify the character that should separate the values of the repeating nodes in your column. By default, the delimiter is a comma (`,`).
Select **Save all settings**.
Repair broken data in your XML file [#repair-broken-data-in-your-xml-file]
Sometimes XML files contain broken data. You can solve some of the broken data issues while importing your data into the Productsup platform:
. XML files may contain broken UTF-8 control characters. Although such unprinted characters can't appear in your product feed, they can cause parsing errors. For the parser to ignore broken control characters, you can use the **Repair control characters** option.
. Some XML files have a DTD (Document Type Declaration), which is a line of code that usually comes right after the XML declaration:
```
// XML declaration
// DTD
```
For the parser not to break because of the DTD, you can use the **Remove DTD** option.
. You may have a missing parent node in an XML file:
```
-
111
-
222
```
If you run an import with such an XML file, the platform can't detect a root node and parse the file, so the import fails.For the parser not to break because of a missing parent node, you can use the **Repair parent node** option. If you check the box without specifying the parent node's name, the platform automatically adds the parent node `PUP_ROOT` to your file.
. An XML file can have empty nodes. In the following example, the node `` contains no value:
```
T-shirt
Medium
Yellow
```
By default, the platform skips empty nodes and doesn't import them. To import empty nodes as columns with blank values, you can use the **Allow empty node** option.If you use the **Allow empty node** option for the previously-shown XML file, the imported data looks similar to this:
| title | size | color | rating |
| ------- | ------ | ------ | ------ |
| T-shirt | Medium | Yellow | |
To repair broken XML data:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the **Content Options** panel at the bottom of the data source setup page and select **XML Settings**.
Choose any options required to repair your XML data:
1. **Repair control characters**
2. **Remove DTD**
3. **Repair parent node**
4. **Allow empty node**
Select **Save all settings**.
Add a prefix to the attributes imported from your XML file [#add-a-prefix-to-the-attributes-imported-from-your-xml-file]
If you have numerous data sources added to one site, you may need to know which attributes come from which data sources. You can distinguish between attribute sources by adding prefixes to the names of your attributes.
For example, the attribute `price` imported from a data source called *XML1* can get the prefix `XML1@` for the platform to display the full name of this attribute as `XML1@price`.
To add a prefix to the names of attributes that Productsup imports from your XML file, follow these steps:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the **Content Options** panel at the bottom of the data source setup page and select **XML Settings**.
In **Prepend a String to the Header Columns**, enter the prefix you want to add to the names of the attributes imported from this data source.
Select **Save all settings**.
On the **Data Sources** page, open the **Settings** tab and modify the name of your unique item identifier in **ID Column** according to the new prefix of the relevant attribute name.
You can skip this step if your site doesn't have a unique item identifier or your unique item identifier comes from a different data source with no attribute name prefix.
Transform your XML with XSLT [#transform-your-xml-with-xslt]
For complex XML file structures, you may need XSLT (Extensible Stylesheet Language Transformations) to import your product data into the platform as desired. For example, XML files with nested product variants are a common XSLT use case in Productsup.
You can contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com) to have an XSLT code abstract created and implemented for you. Alternatively, you can create and implement XSLT code yourself.
To add XSLT code to your data source:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Select the **Advanced Settings** tab and then select **I/O Settings**.
Choose **Add** next to **Transform XML with XSLT** in the **Available I/O Settings** panel.
Add your XSLT code in the **XSL Template** field.
Select **Save**.
# Import a file from a URL
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
To import your data into the Productsup platform from an HTTP, HTTPS, FTP, or SFTP URL, use the Feed URL data source option. It supports multiple file formats, including the following:
* CSV and TSV - See [Import CSV files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-csv-files-advanced-settings).
* XML - See [Import XML files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-xml-files-advanced-settings).
* JSON - See [Import JSON files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-json-files-advanced-settings).
* XLSX - See [Import Excel files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-excel-files-advanced-settings).
* TXT
* RSS
* BZ2
* ZIP
* GZ
Import file via Feed URL [#import-file-via-feed-url]
Go to **Data Sources** from your site's main menu and select **Add data source**.
Search for *Feed URL* and select **Add**. Give it a custom name as desired and select **Continue**.
The custom name of a data source replaces the name of its data source option in Data Sources. For example, **Feed URL** is the name of a data source option, while **Feed URL - winter clothes CSV** can be a custom name of a data source.
In **Source URL**, add your FTP, SFTP, HTTP, or HTTPS link.
In **Description (optional)**, edit the name of the data source as needed.
If Productsup requires authentication to access data in your file, provide relevant access data in **Username (optional)** and **Password (optional)**. If you need Productsup to use basic authentication and include an encoded credentials string in the HTTP authorization header of each request to your data source, choose **Basic Authentication** in the **Password** drop-down menu.In the **Password** drop-down menu, you can also select **SSH Key (SFTP)** to access the SSH Public Key that Productsup uses to authenticate in your SFTP server.
In **Custom HTTP headers (optional)**, add your custom HTTP headers to request the needed data from the server.
An HTTP header's format is *\: \*. The header name is case-insensitive. If you need to add multiple headers, enter each header from a new line without a delimiter.
Select **Save**.
When the page reloads, you can select **Additional Data Feed** in the **Content Mode** panel to let Productsup import the data from your data source as new columns instead of new rows. See [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources) for more information.
If you require a custom setup to upload your data to Productsup via the Feed URL data source option, contact [support@productsup.com](mailto:support@productsup.com). Once the custom setup is ready, Productsup displays relevant information in **Plugin (optional)**.
Modify import data in Content Options [#modify-import-data-in-content-options]
Using Content Options, you can modify your data imported in Productsup via the Feed URL data source by adding or replacing headers, adding or removing columns, specifying custom delimiters, etc. Specific modifications available for your import depend on the type of file you are importing via the Feed URL data source option, such as a CSV, XML, or JSON.
Content Options - CSV Settings [#content-options---csv-settings]
The CSV Settings option in the Content Options panel lets you prepend or replace header rows and define the encoding, delimiter, enclosure, and the number of headers used in your CSV file. By default, Productsup detects the encoding, delimiters, and enclosures in CSV files automatically and considers the first row in your file to be the header.
See [Import CSV files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-csv-files-advanced-settings) for more information.
Select **CSV Settings** in **Content Options** to access the import modifications available for CSV files.
In **Encoding**, define the file encoding.
In **Delimiter**, specify the delimiter used in the file.
In **Enclosure**, enter the enclosure used in the file.
In **Header in Row**, set the number of the row that contains the header. A digit is the expected input format.
If your file doesn't have a header, you can add it in **Prepend Header Row**. Enter all names of your columns and separate them with the delimiter used in your file.For example, to a file using the `|` delimiter, you can prepend the following header row:`ID|title|mpn|product_type|description|url|image_url|price|sale_price|stock`
If you have numerous data sources added to one site, you may need to know which attributes come from which data sources. You can distinguish between attribute sources by adding prefixes to the names of your attributes.In **Prepend a String to the Header Columns**, enter the prefix you want to add to the names of the attributes imported from this data source. If your data source produces files other than CSV or XML files, you can still use this option.
If your data source has a unique item identifier, open the **Settings** tab on the **Data Sources** page and modify the name of your unique item identifier in **ID Column** according to the new prefix of the relevant attribute name.
If the header in your file isn't correct, you can change it in **Replace Header Row**. Enter all names of your columns and separate them with the delimiter used in your file.For example, in a file using the `;` delimiter, you can replace the header row with the following string:`ID;title;description;product_type;url;image_url;price`
The number and order of column names in **Prepend Header Row** and **Replace Header Row** must match the number and order of columns in the file.
Select **Save all settings**.
Content Options - XML Settings [#content-options---xml-settings]
The XML Settings option in the Content Options panel lets you change XML declarations, bundle repeating nodes into one column, define root nodes and maximum depths, and further modify your import data.
See [Import XML files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-xml-files-advanced-settings) for more information.
Select **XML Settings** in **Content Options** to access the import modifications available for XML files.
To specify the root node used in your file, enter it in **Root Node** in the same format used in your file. For example, in the XML code abstract given in [Step 3](#note-idm243298858973098), `` is the root node of the file.
In **Max Depth**, specify how far down into the structure of your XML file the platform should go to find the root node. A digit is the expected input format.
XML depths are layers of nodes or branches in a file. That means the XML file begins at the initial layer, which is `0`. The layer is the depth of the file.In the following example, the `` node begins at level `1`:
```
Queen II
Queen
UK
EMI
24.90
1974
```
To find the root node in this XML file, the platform should scan at least two depths. The depth value specified in **Max Depth** for this file should be at least `2`.
If your data contains an attribute name with spaces or special characters, such as **Size (mm)**, you can specify an XPath expression, such as `tagName[@attributeName]` , in **Attribute name location**. For example, `attribute[@name]`.
To add a header line to your XML file, enter it in **Prepend Header Row**.
The Productsup team doesn't recommend prepending a header row to your XML file.
If you have numerous data sources added to one site, you may need to know which attributes come from which data sources. You can distinguish between attribute sources by adding prefixes to the names of your attributes.In **Prepend a String to the Header Columns**, enter the prefix you want to add to the names of the attributes imported from this data source. If your data source produces files other than CSV or XML files, you can still use this option.
If your data source has a unique item identifier, open the **Settings** tab on the **Data Sources** page and modify the name of your unique item identifier in **ID Column** according to the new prefix of the relevant attribute name.
If the XML declaration in your file isn't correct, you can change it in **Replace Xml Declaration**. The XML declaration typically contains the XML version and the encoding used in the file. It can look similar to this:``
If your file has multiple nodes describing the same product attribute with different values, you can bundle such nodes into one column in **Bundle repeating nodes**.By default, Productsup bundles 11 repeating nodes into one column and uses the semicolon (`;`) delimiter to separate them within the column. Specify a different number of repeating nodes in **Bundle repeating nodes** and add a different delimiter in **Bundle delimiter** as needed.
If your XML file contains elements that may disrupt the parsing of your file, tick one or more of the following boxes:
1. **Repair control characters** - This helps to repair broken control characters within your XML file. Although such unprinted characters can't appear in your product feed, they can cause parsing errors.
2. **Remove DTD** - This lets you remove the Document Type Declaration (DTD) from your file. In files that use a DTD, this section comes directly after the XML declaration.
3. **Repair parent node** - This helps to change a parent node that is incomplete or has an incorrect closure.
4. **Allow empty node** - This helps to import nodes with empty values into the platform to avoid skipping them during import and disrupting your data structure.
Select **Save all settings**.
Once Productsup scans your imported XML file, it suggests which nodes in your file could be the root nodes and displays them in **Root nodes suggestions**.
To check whether Productsup has correctly interpreted your file or if there have been some parsing issues:
Run an import by selecting **Import** in the upper right corner of the Feed URL setup page.
Take a look at the suggestions in **Root nodes suggestions**.
Content Options - JSON Settings [#content-options---json-settings]
The JSON Settings option in the Content Options panel lets you define root and variant nodes, bundle repeating keys into one column, and exclude items from import.
See [Import JSON files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-json-files-advanced-settings) for more information.
Select **Json Settings** in **Content Options** to access the import modifications available for JSON files.
If your JSON file has a root node, enter it in **Root Node**.
If your JSON file has product variants nested in one root node, input the node containing the product variants in **Variant Node**.
If your file has multiple keys featuring the same product attribute with different values, you can bundle such keys into one column by ticking the **Bundle** box.By default, Productsup uses the comma (`,`) delimiter to separate bundled values within a column. Specify a different delimiter in **Bundle Delimiter** as needed.
If you don't want Productsup to import a particular key or keys from your JSON file, enter them in **Exclude Items** and separate the keys by commas if needed.
Select **Save all settings**.
Content Options - Add/Filter columns [#content-options---addfilter-columns]
The Add/Filter columns option in the Content Options panel lets you modify your import data by allowing, blocking, adding, or removing columns. This option applies to all imports regardless of the type of import files involved.
Go to **Data Sources** from your site's main menu and choose your feed URL's settings page by selecting the cogwheel icon (**⚙**). Next, under *Content Options*, select **Add/Filters Columns**.
Select **Allow Columns** or **Block Columns** and enter your column name in the *Filter Columns* field.
Select **Save all settings** and perform an import by selecting **Run**.
Go to **Dataflow** from your site's main menu and search for the column attribute you allowed or blocked. You can see an asterisk for all blocked column names while allowed column names appear as usual.
You can also use a regex to locate text. For example, if you select **Allow Columns**, entering the following regex `/^part/` admits all column names that begin with *part*.
Content Options - Encryption [#content-options---encryption]
The Encryption option in the Content Options panel helps to provide Productsup with a password to let the platform read your password-protected import file.
Select **Encryption** in **Content Options**.
Enter the password in **File password**.
Select **Save all settings**.
Edit Feed URL data source via Advanced Settings tab [#edit-feed-url-data-source-via-advanced-settings-tab]
If you want to add a label to your data source, delete your data source, or use the advanced technical settings of your data source, you can go to the Advanced Settings tab on the Feed URL setup page.
To access the Advanced Settings tab:
Go to **Data Sources** from your site's main menu.
Select the cogwheel icon (**⚙**) next to a chosen data source.
Select the **Advanced Settings** tab.
See [Import your data into Productsup - Advanced Settings](/docs/help-center/import-data-feeds/import-your-data-into-productsup-advanced-settings) for more information.
# Import data by crawling your website
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Productsup can crawl your website to import additional data. It is intended for cases where no data sources are available and when you need to establish a data source.
The Website Crawler begins from a single start domain, then crawls all website pages.
The Website Crawler feature only supports static, server-rendered sites. It doesn't work with the websites that are rendered dynamically with JavaScript.
Prerequisites [#prerequisites]
The Website Crawler feature is part of *Crawler Module*, which is available at an additional cost in all platform Ecrawditions. Contact [support@productsup.com](http://support@productsup.com) to discuss adding it to your organization.
* The Crawler Module contains the following features:
* Website Crawler
* Data Crawler
* Image Properties Crawler
* Inform your website admins about the upcoming crawler before running this feature. This notice ensures you won’t face restrictions when you start the Website Crawler.
Set up Website Crawler [#set-up-website-crawler]
Go to **Data Sources** from your site's main menu, and select **ADD DATA SOURCE**. Then choose *crawler* and select **Add**.
(Optional) Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources* page. Then, select **Continue**.
Enter the website name in **Domain**, for example, beginning with `www`. The website domain is where Productsup starts crawling data.
(Optional) Enter several URLs in **Start URLs** if product pages or categories don't link to the initial website domain.
Toggle **Crawl Subdomains** to *On* if your website has a subdomain. For example, `interdimensionallogistics` is your company name, and `shop` identifies your subdomain in your company's shop URL, `www.shop.interdimensionallogistics.com`.
Ensure you have permission from your website admin to crawl the website and check the **Permissions** checkbox.
Select **Save**.
Optional Website Crawler advanced settings [#optional-website-crawler-advanced-settings]
To limit crawling product pages only, enter a portion of the URL in **Link Contains**:
* The crawler detects URLs containing this URL portion and only crawls those pages.
* You can use wildcards (`*`). See [Use wildcards](#section-idm13231306936102).
You can include URLs containing a specific keyword(s) by adding them in **Filters (include)**.
To exclude URLs containing a specific keyword, add it in **Filters (exclude)**.
**User Agent** is the name the crawler uses to access your website. You can modify the default User Agent according to your needs, for instance, by adding a hash for increased security. See the following examples:Default: `Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4 (productsup.io/crawler)`Modified: `Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4 (productsup.io/crawler) 8jbks7698sdha123kjnsad9`
You can select the number of crawlers that crawl simultaneously in **Concurrent Crawlers**.
Define how many attempts the crawler should attempt to locate unreachable pages under **Retry on Error**.
In **Crawler timeout per page (seconds)**, set how long the crawler should wait to answer requests before aborting.
You can limit how many pages to crawl in **Max count of pages to crawl**.
Select **Save**.
Use wildcards [#use-wildcards]
You can use wildcard characters to save you from having to add precise parameters in **Link Contains**, **Filters (include)**, and **Filters (exclude)**.
* An asterisk (`*`) matches any number of characters, no matter the characters.
* An asterisk (`*`) matches any number of random characters.
* If you input `\*/p/`, your URL should end with `/p/`, for example, `http://www.test.com/p/`.
* If you input `/p/\*`, your URL should start with `/p/`, for example, `/p/123456`.
* If you input `\*/p/\*`, this means you can add `/p/` anywhere in your URL, for example, `http://www.test.com/p/123`.
* You can use as many asterisks as you wish. For example, `\*/cat/\*/p/\*` matches: `http://www.test.com/cat/123/p/456`.
* A question mark (`?`) matches one of any character, no matter the character.
* You can use single or multiple question marks to match a set number of random characters. For example, `\*/???/\*/p/\*` matches: `http://www.test.com/cat/123/p/456`.
# Import from a database
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
You can request product data directly from a database. This lets you skip creating a feed file from the database for import.
Productsup provides a selection of data sources for several types of databases:
* MySQL
* PostgreSQL
* Microsoft Azure SQL Server
* Other SQL databases based on Open Database Connectivity (ODBC)
Productsup can add needed drivers and database imports on request.
Import from MySQL database [#import-from-mysql-database]
If you work with a vast infrastructure and keep data in MySQL database, use data source *MySQL Import* to get your data into Productsup. This data source connects directly to your database. If your database firewall requires it, allowlist Productsup's IP ranges — see [Network information](/docs/help-center/get-started/productsup-fundamentals/network-information).
To import from MySQL database:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *MySQL Import* and select **Add**.
Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Add your hostname in **Hostname** to connect to your database.
In **Port**, add the port numbers you assigned to the database.
Add your credentials in the **Username** and **Password** fields to connect to the database.
Enter the database name in **Database**.
In **Query**, enter a query to select the relevant data. To import your product information from a database, you must create SQL queries to databases. See [Write SQL database queries](#section-idm4637577796841634303518904525)
In **Charset**, select your database charset from the drop-down menu or leave the default value to let the platform choose the charset.
Select **Save**.
Import from PostgreSQL database [#import-from-postgresql-database]
You can import data from PostgreSQL database using a SQL query. Productsup supports *PostgreSQL UNICODE* or *PostgreSQL ANSI ODBC* drivers.
Don't execute queries from an online transactional database. Instead do it from a database warehouse database or backup. Ensure the user assigned for the Productsup integration only has read access to the necessary tables to complete the query.
To import from PostgreSQL database:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *PostgreSQL* and select **Add**.
Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
In **Driver**, choose the relevant driver. Select **PostgreSQL UNICODE** or **Postgre ANSI** from the drop-down menu.
Add your hostname in **Hostname** to connect to your database.
In **Port**, add the port numbers you assigned to the database.
Enter the database name in **Database**.
Add your credentials in the **Username** and **Password** fields to connect to the database.
In **Query**, enter a query to select the relevant data. To import your product information from a database, you must create SQL queries to databases. See [Write SQL database queries](#section-idm4637577796841634303518904525)
Select **Save**.
Import from Microsoft Azure SQL Server database [#import-from-microsoft-azure-sql-server-database]
You can import data from Microsoft Azure SQL Server database using a SQL query. Productsup supports *ODBC Driver 17 for SQL Server*.
Don't execute queries from an online transactional database. Instead do it from a database warehouse database or backup. Ensure the user assigned for the Productsup integration only has read access to the necessary tables to complete the query.
To import from Microsoft Azure SQL Server database:
Go to **Data Sources** from your site's main menu and select **Add data source**.
Search for *Microsoft Azure SQL Server Import* and select **Add**.
Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Add your hostname in **Hostname** to connect to your database.
In **Port**, add the port numbers you assigned to the database.
Enter the database name in **Database Name**.
Add your credentials in the **Username** and **Password** fields to connect to the database.
In **Query**, enter a query to select the relevant data. To import your product information from a database, you must create SQL queries to databases. See [Write SQL database queries](#section-idm4637577796841634303518904525)
Select **Save**.
Import from an ODBC database [#import-from-an-odbc-database]
You can import your data from any other SQL database based on Open Database Connectivity (ODBC). Productsup supports *PostgreSQL UNICODE*, *PostgreSQL ANSI ODBC*, and *ODBC Driver 17 for SQL Server* drivers.
If you need support for other drivers, contact \[[support@productsup.com](mailto:support@productsup.com)]\(mailto: [support@productsup.com](mailto:support@productsup.com) ).
Don't execute queries from an online transactional database. Instead do it from a database warehouse database or backup. Ensure the user assigned for the Productsup integration only has read access to the necessary tables to complete the query.
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *ODBC database Import* and select **Add**.
Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Add your credentials in the **Username** and **Password** fields to connect to the database.
Enter the database name in **Connection String**.
* Ask you database administrator to provide this name.
* Add the name in the format such as `Driver={ODBC Driver 17 for SQL Server};Server=mssql.123testing.com;Database=tempdb;`.
In **Query**, enter a query to select the relevant data. To import your product information from a database, you must create SQL queries to databases. See [Write SQL database queries](#section-idm4637577796841634303518904525)
Select **Save**.
Write SQL database queries [#write-sql-database-queries]
This section gives some helpful tips for writing SQL database queries in Productsup. SQL queries help you access product data from databases. You need to enter your queries into the **Query** field of the configured data source.
For example, you have two tables containing different data on some products:
| id | product\_id | title | type |
| -- | ----------- | ----- | -------- |
| 1 | 222 | book | direct |
| 2 | 333 | table | dropship |
| 3 | 444 | lamp | dropship |
| id | product\_id | price |
| -- | ----------- | ----- |
| 1 | 222 | 9.99 |
| 2 | 333 | 69.99 |
| 3 | 444 | 49.99 |
You can merge the tables and extract Productsup product data by writing a query:
Select needed attributes using the `select` command followed by a list of product attribute names. You can also define the table you receive the data from using the `from` command. For example, to show that the `product_id` and `title` attributes come from the `product_data` table, write the following query:
```
SELECT product_data.product_id,
product_data.title
FROM product_data
```
Add information from another table with the `join` command. Use the `on` command to specify the *id column* of each table. The query looks for the matches to the IDs between the tables. The data of the first table merges with the data of the second in case of a match. For example, the `product_pricing` merges with the `product_data` table. In this example, the `on` command specifies that the ID attribute for both tables is `product_id`.
```
JOIN product_pricing
ON product_data.product_id = product_pricing.product_id
```
Specify conditions to fulfill for exporting data using the `where` command to define how the class `type` equals `dropship` in the `product_data` column.
```
WHERE product_data.type = 'dropship'
```
Each SQL query should include a `select` and `from` command. Use the `join` and `where` commands as necessary.
For this example, the final query may look as follows:
```
SELECT product_data.product_id,
product_data.title,
product_pricing.price
FROM product_data
JOIN product_pricing ON product_data.product_id = product_pricing.product_id
WHERE product_data.type = 'dropship'
```
The result table after merging is as follows:
| product\_id | title | price |
| ----------- | ----- | ----- |
| 333 | table | 69.99 |
| 444 | lamp | 49.99 |
See [W3 Schools SQL Tutorial](https://www.w3schools.com/sql/), to learn more about SQL.
Contact [support@productsup.com](mailto:support@productsup.com) if you have any questions.
# Import a file from your computer
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
To import your product data from a file on your computer, you can use the *Local File Import (Upload)* data source.
The maximum accepted size of a file is 30 MB.
The *Local File Import (Upload)* data source supports the following file extensions:
* XML
* CSV and TSV
* RSS
* XLSX
* TXT
* ZIP
Upload a file via Local File Import (Upload) [#upload-a-file-via-local-file-import-upload]
Go to **Data Sources** from your site's main menu.
Select **ADD DATA SOURCE**.
Search for *Local File Import (Upload)* and select **Add**.
Give it a desired name and select **Continue**.The custom name of a data source replaces the name of its data source option in Data Sources. For example, **Feed URL** is the name of a data source option, while **Feed URL - winter clothes CSV** can be a custom name of a data source.
To upload a file from your computer, drag and drop a file to the upload area or select the **click to browse** link to choose a file from your computer.
Enter a file description in **Description (optional)** as desired. The description you enter in this field serves as the data source name.
Select **Upload**.
When the platform uploads your file, it automatically sends it to an FTP server hosted by Productsup. This is why you can see your uploaded file as a URL that starts with `ftp://ftp.productsup.com/`. The platform also adds a unique number at the end of the file name to differentiate between files with the same name on the FTP server.
When you delete the *Local File Import (Upload)* data source or upload a different file in its settings, the platform automatically deletes the unneeded file from the FTP server.
Once the platform uploads the file, you can specify whether it is a main or an additional data source by selecting **Main Data Feed** or **Additional Data Feed** in the *Content Mode* panel.See [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources) to learn the difference between these data source types and the details of setting up an additional data source.
In the *Content Options* panel, you can select any option to use the advanced settings of uploading files to Productsup.The specific option you need depends on your file type and the tasks you want to perform. See [Import a file from a URL](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-a-url#section-idm4608850079425632988588525417) for more information on each option of the *Content Options* panel.
Select **Save all settings** to save your data source and its settings.
Update a previously uploaded file [#update-a-previously-uploaded-file]
To update a file that you have previously imported from your computer, you need to:
Go to **Data Sources** from your site's main menu.
Select the cogwheel icon (**⚙**) next to the *Local File Import (Upload)* data source that you want to update.
Select **Edit**.
To add an updated file, drag and drop it to the upload area or select the **click to browse** link to choose a file from your computer.
Change any settings in the *Content Options* and *Content Mode* panels as needed.
Select **Save all settings**.
# Import from APIs
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
An Application Programming Interface (API) is a method for transporting data by sending responses and receiving requests. It lets two systems talk directly with each other and, in this case, send product data.
Importing data via API is a popular choice for product data. It typically allows for dynamic and quick data handling.
Productsup has several API connections directly to external systems. See [Import data from third-party external systems](/docs/help-center/import-data-feeds/import-data-from-third-party-external-systems).
Productsup offers Stream API as a high-performance product upload or content API.
Import data via the Productsup Platform API [#import-data-via-the-productsup-platform-api]
The Platform API's product upload endpoints will sunset on *March 31, 2025*. Use Stream API to upload your product data.
To import data via the *outgoing* Productsup Platform API:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Select **Add** for the *Productsup Platform API* data source.
Optionally, give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Enter one of the following settings in **Product Update Mode**:
* *replace*: Uploads an entire file of all product information during each run.
* *update*: Only uploads fields where you modified data, known as a delta update.
Optionally, in **Import process report email address**, enter an email address to receive a report for each import run: a list of imported Batch IDs.
* Leave empty for no report.
* Use a comma for concatenating multiple email addresses.
Select **Save**.
See the Productsup [Introduction into our APIs](https://api-docs.productsup.io/#introduction) website to explore this topic more deeply.
Import data via the Productsup Stream API [#import-data-via-the-productsup-stream-api]
To import data via the Productsup Stream API:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Select **Add** for the *Productsup Stream API* data source.
Optionally, give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
In **Stream**, choose the Stream ID you want to import data from in the drop-down list.
Select **Save**.
Import from a SOAP service with Basic SOAP Request [#import-from-a-soap-service-with-basic-soap-request]
To import XML data from a SOAP Service:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Select **Add** for the *Basic SOAP Request* data source.
Optionally, give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Add your data URL in **WSDL Url**.
In **XML root node**, define your file's root node.
Add your endpoint in **SOAP Endpoint**.
Optionally, use **Request Parameters** to import the products you specified in the parameters only.
Optionally, select authentication in the **Auth Type** drop-down list. You can select **None** or **Basic** authentication. Next, add your credentials in **Auth User** and **Auth Pass**.
Select **Save**.
Import paginated with Basic API Request with JSON Response [#import-paginated-with-basic-api-request-with-json-response]
This data source is for APIs that return a JSON response and authenticate with a token. To import paginated product data in a JSON format through a basic REST API:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Select **Add** for the *Basic API Request with JSON Response* data source.
Optionally, give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Add your data URL in **Source**.
Optionally, if the URL contains any parameters, except the page parameter, add them in **Parameter (optional)**.
Optionally, if you require authentication, add your credentials in **Username (optional)** and **Password (optional)**.
Optionally, if a JSON file contains a root node, which defines the key that your product data falls under, add the node in **Root Node (optional)**. See [Import JSON files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-json-files-advanced-settings) for more information.
Optionally, enter the product variants from the JSON file you want to import in **Variant Node (optional)**.
Optionally, enter the variable that defines the page in **Page Variable**.
* For example, the page variable would be `page` located in `www.myonlineshop.com/export.json?page=1`.
Establish the first page in **Start Page (optional, default: 1)**, and set the page interval in **Next Page Interval (optional)**.
* This is necessary if the pages do not increase by one (1) each time, for example, if not `page=1, page=2,`...
Switch **Bundle Elements** to *On* if you want to activate bundle elements, and add a delimiter in **Bundle Delimeter**. See [Import JSON files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-json-files-advanced-settings) for more information.
In **Notifications**, set a notification to inform you how many products you imported. You can specify the notification interval.
In **Concurrency (how many requests at once)**, define how many requests occur simultaneously.
Select **Save**.
Import paginated with Basic API Request with JSON Response (Cursors) [#import-paginated-with-basic-api-request-with-json-response-cursors]
This data source is specifically for APIs that return a JSON response, authenticate with a token, and use cursors to page larger result sets. If you need to use cursors instead of pagination:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Select **Add** for the *Basic API Request with JSON Response (Cursors)* data source.
Optionally, give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Add your data URL in **Source**.
Optionally, if the URL contains any parameters, except the page parameter, add them in **Parameter (optional)**.
Optionally, if you require authentication, add your credentials in **Username (optional)** and **Password (optional)**.
Optionally, if a JSON file contains a root node, which defines the key that your product data falls under, add the node in **Root Node (optional)**. See [Import JSON files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-json-files-advanced-settings) for more information.
Optionally, enter the product variants from the JSON file you want to import in **Variant Node (optional)**.
Switch **Bundle Elements** to *On* if you want to activate bundle elements, and add a delimiter in **Bundle Delimeter**. See [Import JSON files - advanced settings](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-json-files-advanced-settings) for more information.
In **Notifications**, set a notification to inform you how many products you imported. You can specify the notification interval.
In **Cursor Location**, choose *None* or *Header* regarding the cursor from the drop-down list. If you've selected *Header*, enter the appropriate information in **Cursor Response Header** and the **Cursor Request Header**.
Define the columns you want to exclude in **Excluded Columns**. For example, `column_1,column_value*,column_*_name`.
Select **Save**.
# Import from Google Sheets
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
A Google Sheets file is a spreadsheet created and edited online in Google Workspace.
You can import your data from Google Sheets in two ways:
. Import from your existing Google spreadsheet. See [Import from an existing Google Sheets file via the Feed URL data source](#section-idm353526263205150).
. Create a new spreadsheet via the platform in the Producstup Google Drive or your Google account. See [Create a new Google Sheets file via Productsup](#section-idm232211452100103).
The *Google Sheets* data source can import files up to 10 MB in size. If your Google Sheets file is larger than 10 MB, you can split it into two files and set up two separate *Google Sheets* data sources. Alternatively, you can upload your large file to an FTP or SFTP server and import it into Productsup using the *Feed URL* data source. See [Import a file from a URL](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-a-url).
Import from an existing Google Sheets file [#import-from-an-existing-google-sheets-file]
You can provide access to your existing spreadsheet hosted in your company's Google Drive. It doesn't require making your sensitive, organization-owned Google Sheets public, and you stay fully aligned with your enterprise security policies.
The feature only imports data from the first sheet tab within the specified Google Sheet file. You can't import multiple sheets at a time from a single file. In future iterations, we will explore multi-sheet import capabilities.
To import your existing file via the Google Sheets data source:
Go to **Data Sources** from your site's main menu and select **Add data source**.
Search for *Google Sheets* and select **Add**.
Edit the data source name if desired and select **Continue**.
Select the **Add an existing spreadsheet source URL** option.
Scroll down to the *Authentication selection* to set up access to the Google account. In **Authentication**, choose the Google authentication you previously set up in your organization, project, or site. If you haven't set up Google authentication yet, perform the following steps:
Select **Add New Authentication**. A pop-up opens.
Select *Google Spreadsheets* in **Type**. You can optionally give your authentication a name.
Select **Next**.
Select **Connect**. Before proceeding, Productsup redirects you to Google to finalize your authentication. After completing the authentication setup, Google redirects you back to Productsup.
Close the confirmation pop-up to proceed.
If, in the future, you decide to delete the Google Sheets data source from the platform, your data source file moves into the trash bin of your Google account.You can restore it if you have set up the authentication for your Google account.
When the authentication setup is complete, add your Google spreadsheet URL to **Source URL**.
Change the URL from `…/edit` to `…/export`. For example, change *[https://docs.google.com/spreadsheets/d/123\`/edit\`?pli=1\&gid=123#gid=123](https://docs.google.com/spreadsheets/d/123`/edit`?pli=1\&gid=123#gid=123)* to *[https://docs.google.com/spreadsheets/d/123\`/export\`?pli=1\&gid=123#gid=123](https://docs.google.com/spreadsheets/d/123`/export`?pli=1\&gid=123#gid=123)*.
In **Description (optional)**, add a description for your data source. It substitutes the data source name in the *Overview* tab in Data Sources.
Select **Save** and choose **Import** in the top-right corner of the page.
Import from an existing Google Sheets file via the Feed URL data source [#import-from-an-existing-google-sheets-file-via-the-feed-url-data-source]
As an alternative to importing an existing file via the Google Sheets data source, you can import it using the *Feed URL* data source. This method may not be suitable for you if the file has private access rights and you don't want to change it to public.
This method requires you to enable the *Viewer* rights for anyone who opens the link so that the platform can access the file. See [Share files from Google Drive](https://support.google.com/docs/answer/2494822?co=GENIE.Platform%3DDesktop\&hl=en) to learn how to change the rights.
Go to **Data Sources** from your site's main menu, and select **Add data source**.
Search for *Feed URL*, select **Add**, give it a name as desired, and then select **Continue**.
Insert the link to your Google spreadsheet in **Source URL**. For example, you can copy it from the address bar of your browser: *[https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a\_A1a111aAaa1aA1Aaa1aA/edit?gid=0#gid=0](https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a_A1a111aAaa1aA1Aaa1aA/edit?gid=0#gid=0)*.
Select **Save**.
The platform detects that you want to upload a Google spreadsheet. It shows the *Google Spreadsheet Upload* pop-up, where you can see a changed format of your link, for example, \*[https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a\_A1a111aAaa1aA1Aaa1aA/export?format=csv\*.You](https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a_A1a111aAaa1aA1Aaa1aA/export?format=csv*.You) can now further set up the data source by choosing one of the following options:
1. **Upload as CSV file** is the basic option that imports your main sheet within the spreadsheet as a CSV file and ignores any other sheets. Use this option if you don't need to import a specific sheet or range of cells.
2. **Upload specific sheet** lets you import a desired sheet from your spreadsheet. If you select this option, go to the end of the link at the bottom of the pop-up and substitute `0` in the `gid` parameter with the unique ID of your desired sheet.
To find the needed value of the `gid` parameter, which is a unique ID for the sheet defined by Google, go to the desired sheet in your Google spreadsheet, locate the `gid` parameter at the end of the link, and copy its value after the equals sign `=`.
For example, to import data only from the sheet that has 111111111 in the `gid` parameter, change the link as follows:
| From: | *[https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a\_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=\`0\`](https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=`0`)* |
| ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| To: | *[https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a\_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=\`111111111\`](https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=`111111111`)* |
3. **Limit to range** lets you import a desired cell range within the main or any other desired sheet in your spreadsheet. If you select this option, go to the end of the link at the bottom of the pop-up and do the following:
4. If your desired range is in the main sheet of the spreadsheet, add the needed cell range, such as `A3:C15`.
For example, if you want to import only from cells in the range from A3 to C15, change the link as follows:
\| From: | *[https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a\_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=0\&range=\`\{range}\`](https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=0\&range=`\{range}`)* |
\| --- | --- |
\| To: | *[https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a\_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=0\&range=\`A3:C15\`](https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=0\&range=`A3:C15`)* |
5. If your desired range is in any other sheet of the spreadsheet, substitute `0` in the `gid` parameter with the unique ID of your desired sheet. Then, add the needed cell range.
To find the needed value of the `gid` parameter, which is a unique ID for the sheet defined by Google, go to the desired sheet in your Google spreadsheet, locate the `gid` parameter at the end of the link, and copy its value after the equals sign `=`.
For example, to import only from cells in the range from A3 to C15 in the sheet that has 111111111 in the `gid` parameter, change the link as follows:
| From: | *[https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a\_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=\`0\`\&range=\`\{range}\`](https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=`0`\&range=`\{range}`)* |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| To: | *[https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a\_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=\`111111111\`\&range=\`A3:C15\`](https://docs.google.com/spreadsheets/d/1aAaA11A1aaaaAa1A1aa11A1a_A1a111aAaa1aA1Aaa1aA/export?format=csv\&gid=`111111111`\&range=`A3:C15`)* |
Choose **Select**.
Create a new Google Sheets file via Productsup [#create-a-new-google-sheets-file-via-productsup]
Go to **Data Sources** from your site's main menu and select **Add data source**.
Search for *Google Sheets* and select **Add**.
Edit the data source name if desired and select **Continue**.
Select the **Generate a new spreadsheet** option.
Before generating a spreadsheet, scroll down to the Authentication selection and choose your authentication:
* Proceed with the pre-selected *Productsup Authentication* in the **Authentication selection** dropdown to let the platform create a Google Sheets file on Productsup’s own Google Drive. You will get a URL to the file where you can upload your data. If you select this option, continue with the [see the relevant section](#N1763130888372).
The platform creates a Google Sheets file on Productsup's Google Drive with public access rights, accessible via a URL. This is necessary to let the platform import your data.
* If you want the platform to create a Google Sheets file on your Google Drive, you need to provide access to your Google account. In **Authentication**, choose the Google authentication you previously set up in your organization, project, or site. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems). If you haven't set up Google authentication yet, perform the following steps:
1. Select **Add New Authentication**. A pop-up opens.
2. Select *Google Spreadsheets* in **Type**. You can optionally give your authentication a name.
3. Select **Next**.
4. Select **Connect**. Before proceeding, Productsup redirects you to Google to finalize your authentication. After completing the authentication setup, Google redirects you back to Productsup.
5. Close the confirmation pop-up to proceed.
If, in the future, you decide to delete the Google Sheets data source from the platform, your data source file moves into the trash bin of your Google account.You can restore it if you have set up the authentication for your Google account.
Select **Generate a new spreadsheet** in the *Source URL* section.
> The created spreadsheet URL appears in the Source URL field.
>
Select **Open spreadsheet** to add your data to it.
In **Description (optional)**, add a description for your data source. It substitutes the data source name in the *Overview* tab in Data Sources.
Select **Save** and choose **Import** in the top-right corner of the page.
Before you import the data, you can change the spreadsheet from which to import, if your file contains several tabs. See [Select a sheet from a spreadsheet created via Productsup](#section-idm35364968241733234).
Select a sheet from a spreadsheet created via Productsup [#select-a-sheet-from-a-spreadsheet-created-via-productsup]
If your Google Sheets file contains multiple sheets, you can specify which one you want to import.
For now, if your have a multi-sheet file, you can choose which sheet to import only when you created a file via Producuctsup. If you import from an existing Google sheets, the platform imports only the first sheet and ignores the other sheets even if you change the selection.
Go to **Data Sources** from your site's main menu, and select the cogwheel icon
next to the relevant data source.
Choose the necessary sheet from the **Worksheet** dropdown.
If the dropdown doesn't show all relevant sheets from your file, select **Save** at the bottom of the page and try again.
Select **Save** and choose **Import** in the top-right corner of the page.
Update a Google spreadsheet created via Productsup [#update-a-google-spreadsheet-created-via-productsup]
Go to **Data Sources** from your site's main menu, and select the cogwheel icon
next to the relevant data source.
Select **Open spreadsheet** and make the necessary updates.
Alternatively, you can save or bookmark the link to the file and access it directly.
If you are editing a particular attribute value in Google Sheets, ensure that you deselected the cell where you made the changes or move the selection area away from it. Google Sheets may not import your changes to Productsup from the cell where they were made if that cell is still highlighted as follows:
# Import Excel files - advanced settings
import { Step, Steps } from "fumadocs-ui/components/steps";
What is an Excel Spreadsheet and how do I import one? [#what-is-an-excel-spreadsheet-and-how-do-i-import-one]
An Excel spreadsheet is a spreadsheet file format used by Microsoft Excel. It has an XLSX format.
You can import your Excel files via URL or via a local upload.
Import an XLSX spreadsheet [#import-an-xlsx-spreadsheet]
If your file is created with the .xlsx extension, you will enable an additional setting to import it correctly.
You can import XLSX spreadsheets via the Feed URL or local upload data source using the following steps:
Go to **Data Sources** from your site's main menu.
Set up your Feed URL or local upload data source.
Select the settings wheel for your data source.
Select the **Advanced Settings** tab.
Select **I/O Settings**.
Add the transform Excel (XLSX) to CSV option found under the available I/O settings section.
Enter the name of the sheet you wish to import under the sheet name field.
Select **Save**.
# Import data from other Productsup sites
import { Step, Steps } from "fumadocs-ui/components/steps";
Productsup lets you import data from another Productsup site using several options. For example, you could import data from a workaround site or Productsup aggregated data.
Import an export file [#import-an-export-file]
You can import a file you have set up for export in various formats, such as CSV, XML, and JSON.
For information about how to export product feeds, see [Export data feeds](/docs/help-center/export-data-feeds).
Import from Export to Data Source [#import-from-export-to-data-source]
If you have chosen to create an Export to Data Source bucket, you can then import this data source using the following information:
Go to **Data Sources** from your site's main menu, and select **ADD DATA SOURCE**. Then choose *Export to Data Source* and select **Add**.
(Optional) Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Select the relevant bucket from the dropdown. If you don't see a list of existing buckets and haven't set one up in *Exports*, see [Set up a bucket destination](/docs/help-center/export-data-feeds/set-up-an-export-destination/set-up-a-bucket-destination).
To include skipped items in the import, toggle **Allow skipped rows** to *On*.
* When creating the bucket, ensure you toggled this option to *On* in the relevant export(s).
To skip importing data that came from invalid sites, toggle **Clear invalid sites** to *On*.
To remove platform-generated attributes from the import, toggle **Remove Passthru Columns** to *On*.
In **Description (optional)**, add a description for your data source. It substitutes the data source name in the *Overview* tab in *Data Sources*.
Select **Save** and select **Import** in the top-right corner of the page.
# Import data from an RSS feed
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Productsup lets you import data from an RSS feed.
Set up an RSS data source [#set-up-an-rss-data-source]
Productsup lets you import data from an RSS feed.
Go to **Data Sources** from your site's main menu, and select **ADD DATA SOURCE**. Then choose *RSS* and select **Add**.
(Optional) Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Enter your RSS feed link in **Feed URL**.
If your products are on several pages, add the following values:
1. In **Page Variable**, enter the URL parameter that determines the page value. For example,
1. `http://www.yournewsfeed.com/rss/xml?page=1` - In this example, the page value is `page`.
2. `http://www.letsfeedit.com/rss/xml?paginated=1` - In this example, the page value is `paginated`.
2. In **First Page Value**, enter the page where your RSS feed starts.
3. In **Last Page Value**, enter the page number where your RSS feed stops.
Enter a file description in **Description (optional)**. The label you enter serves as the file's name in the platform.
Select **Save**.
# Detect image metadata with the Image Properties Crawler
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The Image Properties Crawler is a Productsup data service that gathers image metadata by crawling image links. The crawled metadata includes image type, height, width, file size, etc.
A popular use case for the Image Properties Crawler is to check the availability of your image links based on the links' HTTP responses. To ensure your products don't use broken images, you can let the platform use the metadata gathered via this service to skip products with unreachable image links during export. See [Use the crawled image metadata](#section-idm455936999800483333767896903) for more information.
The Image Properties Crawler service is available for the import and intermediate stages.
When crawling the image links listed in one of your feed's columns, the Image Properties Crawler extracts image metadata from the HTML code of those pages. It creates an additional data source in your Productsup site to add and populate the following columns:
* `___service_imagecrawler_url` duplicates the crawled image link for technical purposes.
* `___service_imagecrawler_date` states the date of the last crawl in the Unix time format.
* `___service_imagecrawler_http_code` displays the HTTP status code of the crawled link.
* `___service_imagecrawler_width` contains the original image width.
* `___service_imagecrawler_height` contains the original image height.
* `___service_imagecrawler_mime` stores the image MIME type.
* `___service_imagecrawler_content_type` displays the HTTP response with the content type of the crawled link.
* `___service_imagecrawler_size_download` states the original image file size in bytes.
* `___service_imagecrawler_total_time` shows how long it took the crawler to fetch the image.
* `___service_imagecrawler_md5_url` contains the crawled URL encoded in MD5.
* `___service_imagecrawler_md5_image` stores the image encoded in MD5.
The Image Properties Crawler can slow down the performance of your Productsup site because it is a resource-intensive process.
Prerequisites [#prerequisites]
The Image Properties Crawler service is part of the *Crawler Module*, which is available at an additional cost in all platform editions. Contact your Customer Success Manager to discuss adding it to your organization.
The Crawler Module contains the following features:
* The [Data Crawler](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/crawl-product-landing-pages-with-the-data-crawler) data service
* The [Web Crawler](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-web-data-with-website-crawler) data source
* The Image Properties Crawler data service
To set up the Image Properties Crawler data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
. The rights to the domain you want to crawl. You must be the owner of the crawled website.
. A column in your feed that contains image URLs. The URLs must have no tracking parameters.
Before running the Image Properties Crawler data service, you should discuss the specifics of your website's performance with your website admin to gather the information required for setting up the service. Find answers to these questions:
. How many crawlers can access your website at a time?
. What are your website's average and maximum response times?
Add the Image Properties Crawler [#add-the-image-properties-crawler]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Image Properties Crawler*, select **Add**, and give it a desired name and column prefix.By default, `___service_imagecrawler` is the column prefix.
Choose the stage containing the column with the crawled URLs in **Service Data Level** and select **Add**.
Choose the column in your feed containing links to your landing pages in **Image URL attribute**.If you chose **Import** in [see the relevant section](#step-idm243333543151960), the drop-down list **Image URL attribute** displays the columns of your import stage. If you chose **Intermediate** in that field, the drop-down list contains your intermediate-stage columns.
If you want to crawl multiple columns containing image links, you need to create a copy of your Productsup site and set up an Image Properties Crawler service in the copied site to crawl another link column.
In **User Agent**, you can see the name the crawler uses to access your website. By default, the name is `Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4 (productsup.io/crawler)`. You can modify it as needed, for example, by adding a hash at the end of the crawler name for security reasons.
Whitelist your Productsup crawler using the name specified in this field for your website not to block the crawler.
In **Concurrent Crawlers**, choose the number of crawlers that can access your website simultaneously. By default, the number is `10`.
If you engage more crawlers than your website can handle, the crawling process can run quicker but may cause website performance issues.
In **Request Timeout (seconds)**, you can set how long the crawler should wait for a response from your website. The expected input format is a digit identifying the number of seconds.Use your website's maximum or average response time to enable the Image Properties Crawler service to run efficiently.By default, the crawler waits 10 seconds for a response before proceeding to a different link.
Enter the number of days the Image Properties Crawler service should wait before recrawling a link in **Expires After (days)**. The expected input format is a digit identifying the number of days.The Image Properties Crawler service crawls all new or changed links in your URL column every time the site runs. The **Expires After (days)** field determines when the service should recrawl the links it has already crawled.
You can enter `-1` in **Expires After (days)** to recrawl all image links every time your site runs in Productsup.
If you want the platform to run the Image Properties Crawler service during every refresh in Data View, select the checkmark icon (**✔**) in **Trigger during a refresh in Data View**.
Select **Save**.
For the platform to process a new data service, select **Import** or **Run** in the top-right corner of your site's view.
Once the Image Properties Crawler has started to run, you can't stop it.
The first run of this service crawls all image links you have selected in [see the relevant section](#step-idm245000314727939), so it may take a while. The recommended time for the first run of the service is at night or at another time with low customer traffic on your website, which would minimize website performance issues.If you need to work in Data View during a crawl, you can speed up Data View loading times by minimizing the number of displayed products per page in the upper ribbon.
If you can't see the columns the Image Properties Crawler added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___service_imagecrawler` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the Image Properties Crawler data service depends on the column prefix you chose in [see the relevant section](#step-idm241666771575981). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
Use the crawled image metadata [#use-the-crawled-image-metadata]
Once you map the new columns created by the crawler with the relevant columns of the subsequent stages in Dataflow, you can start working with the crawled data using rule boxes:
* *Use Image Designer Template (limited)* - This rule box lets you apply Image Designer templates to the images in your feed. You can create different segments in Data View for different image sizes and use this rule box to apply different Image Designer templates to different segments.
* *Skip Row If Value In* - This rule box lets you skip products with unwanted values during export. If applied to `___service_imagecrawler_http_code`, it can skip all products whose image links are unreachable. If applied to `___service_imagecrawler_height`, `___service_imagecrawler_width`, or `___service_imagecrawler_size_download`, it can skip products whose image heights, widths, or file sizes don't meet channel requirements. To skip products with unwanted images, you can:
Create a system column on the export stage of Dataflow by adding three underscores (`___`) at the beginning of the column's name.
Map a relevant column created by the Image Properties Crawler to the new export column.
Apply the *Skip Row If Value In* rule box on the export stage.
Your links may display a placeholder image for unavailable images, for example, containing the text *Image Not Found*. In this case, the crawler gets a positive HTTP status of the image link because the link works and contains an image, which means you can’t skip these placeholder images using the rule box *Skip Row If Value In* with column `___service_imagecrawler_http_code`. You also can't exclude such images based on their links because the links are most likely different each time.You can use the column `___service_imagecrawler_md5_image` to identify such cases:
Go to **Data View** and select the needed stage in the drop-down list on the left.
Find the column `___service_imagecrawler_md5_image` and select **Analyze**.
Check if any values repeat in the *Distinct Values* section.
Select a repeating value to see all products with the same image.
Once you have identified the value that belongs to the unwanted placeholder image, go to the export stage containing the attribute you mapped to `___service_imagecrawler_md5_image` and apply the *Skip Row If Value In* rule box to that attribute.
If you need help, contact [support@productsup.com](mailto:support@productsup.com).
Edit the Image Properties Crawler data service [#edit-the-image-properties-crawler-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Image Properties Crawler data service [#delete-the-image-properties-crawler-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Get weather information from the OpenWeatherMap service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The OpenWeatherMap data service is a Productsup feature that lets you access the OpenWeather API to add current weather conditions or weather forecasts to your product feed. This data can help you customize images or export weather-relevant product offers.
Using the location data in your product feed, the OpenWeatherMap data service retrieves location-relevant weather data. If you choose to retrieve a basic set of current weather details, the data service adds the following columns to your site:
* `___open_weather_map_last_updated` shows a Unix timestamp of the last run of the data service.
* `___open_weather_map_1_forecast_time` displays weather data creation time as a Unix timestamp.
* `___open_weather_map_1_temp_avg` contains the current average temperature at the location.
* `___open_weather_map_1_humidity` stores the current humidity percentage at the location.
* `___open_weather_map_1_weather_main` gives a simple weather summary, such as `Clear` or `Snow`.
* `___open_weather_map_1_clouds` provides the cloudiness percentage at the location.
The OpenWeatherMap data service is available for the import and intermediate stages.
Prerequisites [#prerequisites]
To set up the OpenWeatherMap data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier).
. A column in your feed containing location data to let the data service retrieve relevant weather data.This location data can have the following formats:
1. OpenWeatherMap city IDs.
To find the needed city IDs, you can download a JSON file with all OpenWeatherMap city IDs. See [Built-in API request by city ID](https://openweathermap.org/current#cityid) to find the file link in the *Parameters* section.
2. City names and country abbreviations.
Country abbreviations should consist of two (2) characters and follow the standard ISO 3166-1 alpha-2.
3. Postal codes and country abbreviations.
Country abbreviations should consist of two (2) characters and follow the standard ISO 3166-1 alpha-2.
4. Latitude and longitude.
. An API key to authenticate in the Weather API. You need to request or purchase it from OpenWeatherMap. See [Weather API](https://openweathermap.org/api).
Add the OpenWeatherMap data service [#add-the-openweathermap-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *OpenWeatherMap*, select **Add**, and give it a desired name and column prefix.By default, `___open_weather_map` is the column prefix.
Choose the stage containing your location data in **Service Data Level** and select **Add**.If you choose **Import**, the drop-down lists in [see the relevant section](#N1675438776477) display the columns of your import stage. If you choose **Intermediate** here, these drop-down lists display your intermediate-stage columns.
In **API key**, enter your Weather API key.
In **Forecast**, choose what type of weather data you want to import:
1. Current weather conditions.
2. A weather forecast for the next five (5) days.
3. A weather forecast for the next 16 days.
In **Location type**, choose what type of location data you have in your feed.When you choose a specific type of location data, additional fields appear on the data service setup page as follows:
| Location data type | Additional fields appear | Expected input |
| ------------------------------------- | ------------------------------------------------------ | ------------------------------------------------ |
| **OpenWeatherMap city id** | **OpenWeatherMap city ID column** | Select which column in your feed has city IDs. |
| **City name & country abbreviation** | **City name column** | Select which column in your feed has city names. |
| **Country column** | Select the column with country codes. | |
| **Postal code & country** | **Postal code column** | Select the column with your postal codes. |
| **Country column** | Choose which column contains country codes. | |
| **Latitude & Longitude** | **Latitude column** | Choose the column with latitude data. |
| **Longitude column** | Choose the column with longitude data. | |
| **Number of cities around the point** | Enter the number of cities at the identified location. | |
In **Weather data**, choose what data you want to retrieve:
1. **Basic** returns a simple weather description with temperature, humidity, and cloudiness information.
2. **All** returns all weather information available to the Weather API, such as day and night temperatures, minimum and maximum daily temperatures, morning and evening temperatures, atmospheric pressure, humidity, wind speed and direction, cloudiness, a simple weather description, and a detailed weather description.
Select the desired metric system in **System of measurement** for the platform to use for all measurable weather data retrieved via the Weather API:
* Metric
* Imperial
* International System of Units
Text-based weather descriptions are available in a selection of languages. Select the desired option in **Language**.
If you want the platform to run the data service every time there is a refresh in Data View, select the checkmark icon (**✔**) in **Trigger during a refresh of the Data View**.
Select **Save**.
For the platform to process a new data service, select **Import** or **Run** in the top-right corner of your site's view.
If you can't see the columns that the OpenWeatherMap data service added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___open_weather_map` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the OpenWeatherMap data service depends on the column prefix you chose in [see the relevant section](#step-idm243350680934672). The attribute names that the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
Edit the OpenWeatherMap data service [#edit-the-openweathermap-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the OpenWeatherMap data service [#delete-the-openweathermap-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Create unique IDs for your products with the Unique ID Generator
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The Unique ID Generator is a Productsup data service that creates unique numerical IDs for products across your organization, project, or site. It compares the values in the unique item identifier column and creates an additional data source in your site to assign a numeric ID to each product with a unique item identifier value. If two products have the same unique item identifier value, they receive the same ID.
The Unique ID Generator data service is available for the intermediate stage only.
Prerequisites [#prerequisites]
Make sure you have set a unique item identifier to use this data service. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
If one column can't determine the uniqueness of your products, you can set up a combination of columns as a unique item identifier. For example, use `title`, `color`, and `size` to establish product uniqueness instead of `title` only.
The Unique ID Generator scans the values of all unique item identifier columns. Products with the same values across all unique item identifier columns receive the same IDs.
Add the Unique ID Generator data service [#add-the-unique-id-generator-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Unique ID Generator* and select **Add**.
Give it a desired name and column prefix and select **Add**.By default, `___service_uniqueid` is the column prefix.
In **ID pool based on…**, choose the level within the platform that Productsup should scan for product uniqueness:
* **Account** - Productsup assesses the uniqueness of all products in your organization. Each unique product in this organization gets a unique ID. If multiple sites have a product with the same unique item identifier value, such a product receives unique IDs each time it appears in the organization.
* **Account (Distinct)** - Productsup assesses the uniqueness of all products in your organization. Each unique product in this organization gets a unique ID. If multiple sites have a product with the same unique item identifier value, such a product receives the same ID across all sites of the organization.
* **Project** - Productsup assesses the uniqueness of all products in the chosen project. Each unique product in this project gets a unique ID. If multiple sites have a product with the same unique item identifier value, such a product receives unique IDs each time it appears in the project.
* **Project (Distinct)** - Productsup assesses the uniqueness of all products in the chosen project. Each unique product in this project gets a unique ID. If multiple sites have a product with the same unique item identifier value, such a product receives the same ID across all sites in the project.
* **Site** - Productsup assesses the uniqueness of all products in the chosen site. Each unique product in this site gets a unique ID.
To use the options **Account**, **Account (Distinct)**, **Project**, and **Project (Distinct)**, add and set up the Unique ID Generator in all sites where you want to create unique IDs. The values selected in the drop-down menu **ID pool based on…** should be the same across all these sites.
Select **Save**.
For the platform to process a new data service, select **Import** or **Run** in the top-right corner of your site's view.
If you can't see your unique IDs attribute in the intermediate stage in Data View, ensure the platform hasn't hidden that attribute:
Go to **Data View** from your site's main menu and choose **Intermediate** in the drop-down list on your left.
Select the hamburger icon on the right and then select the eye icon.
Find the `___service_uniqueid_id` attribute in the list and select the eye icon next to it.
Close the pop-up menu.
The naming of the attributes created by the Unique ID Generator depends on the column prefix you chose in [see the relevant section](#N1659105964071). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send such attributes to your export channels.
Edit the Unique ID Generator data service [#edit-the-unique-id-generator-data-service]
Go to **Data Services** from your site's main menu.
To deactivate a data service, choose the pause icon next to the desired data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit other settings.
Once ready with new settings, select **Save**.
Delete the Unique ID Generator data service [#delete-the-unique-id-generator-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon (**⚙**) next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Convert currencies with the Currency Conversion service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Your multi-language feed may not always contain localized pricing for all covered countries with the right currencies. The Currency Conversion data service is a Productsup feature that lets you convert currencies in your feed using the latest exchange rates of [openexchangerates.org](https://openexchangerates.org/) to calculate your localized prices.
Using the prices column in your feed and the input you provide in the setup, the Currency Conversion data service adds the following columns to your site:
* `___currencyservice_updated_on` shows the date when the data service converted your prices.
* `___currencyservice_rate_XXX_YYY` stores the conversion rate used to localize your prices, where *XXX* is a three-letter code of your source currency and *YYY* is a three-letter code of your target currency.
* `___currencyservice_YYY` displays your converted price, with *YYY* being a three-letter code of your target currency.
The Currency Conversion data service is available for the import and intermediate stages.
Prerequisites [#prerequisites]
To set up the Currency Conversion data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier).
. An attribute in your site containing prices in the correct format.Your price attribute values should be in the format `10.00` or `10,00` and shouldn't contain any extra characters.
If your current price values don't have the right format, you can add the **Make Valid Price** rule box. See [Work with prices & math](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/work-with-prices-math#section-idm234398698527426).
Add the Currency Conversion data service [#add-the-currency-conversion-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Currency Conversion*, select **Add**, and give it a desired name and column prefix.By default, `___currencyservice` is the column prefix.
Choose the stage containing your product prices in **Service Data Level** and select **Add**.
In **Currency attribute**, select the attribute with the prices you want to convert.
In **Currency**, choose the currency used in your prices now.
In the **Exchange currency** selection area, choose the target currency.
Hold the *CTRL* or *CMD* key to select multiple currencies.
Define how precise the price should be by entering the number of the decimal place to the right of the decimal point in **Precision**.For example, if you enter `2` in this field, the data service imports the converted prices with two (2) digits after the decimal point, for example, 10.15 and 24.88.
Select **Save**.
For the platform to process a new data service, select **Import** or **Run** in the top-right corner of your site's view.
If you can't see the columns that the Currency Conversion data service added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___currencyservice` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the Currency Conversion data service depends on the column prefix you chose in [see the relevant section](#step-idm243357797299674). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
Edit the Currency Conversion data service [#edit-the-currency-conversion-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Currency Conversion data service [#delete-the-currency-conversion-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Create unique IDs for categories with the Category ID Generator
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The Category ID Generator data service is available for the intermediate stage only.
The Category ID Generator is a data service in Productsup that creates unique IDs for product categories and category paths across an organization, project, or site. This data service scans your category attribute, identifies the delimiter used in the attribute, and creates an additional data source in your site to add and populate five (5) new columns:
* `___service_categoryid_pathids`
* `___service_categoryid_id`
* `___service_categoryid_path`
* `___service_categoryid_last`
* `___service_categoryid_hash`
These columns let the platform:
. Assign each category a unique ID.
. Break each category down into category levels.
. Assign each category path a unique ID based on the category levels it contains.
Applying the Category ID Generator service looks similar to this:
| Category path | Category hash | Category path ID | Category ID | Last category level |
| -------------------------------------------------- | ----------------------------------------------- | ---------------- | ----------- | ------------------- |
| Clothes -> Homewear -> Home shoes -> Slippers | Clothes ->Homewear ->Home shoes ->Slippers | 1>2>3>4 | 4 | Slippers |
| Clothes -> Accessories -> Socks | Clothes ->Accessories ->Socks | 1>9>10 | 10 | Socks |
| Clothes -> Homewear -> Sleeping clothes -> Pajamas | Clothes ->Homewear ->Sleeping clothes ->Pajamas | 1>2>22>23 | 23 | Pajamas |
Your current category path is in the *Category path* column. A simplified version of it is in the *Category hash* column, which contains a technical value needed for the data service to complete its tasks. The *Category path ID* column combines IDs of different category levels into one category path ID. The *Last category level* column has the last category level of the path and usually determines the category ID shown in the *Category ID* column.
The column names in this example don't coincide with those in Productsup. These are simplified column names.
The names of your columns depend on the column prefix you choose during the data service setup.
Prerequisites [#prerequisites]
Make sure you have set a unique item identifier to use this data service. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
Add the Category ID Generator data service [#add-the-category-id-generator-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Category ID Generator*, select **Add**, give it a desired name and column prefix, and select **Add**.By default, `___service_categoryid` is the column prefix.
Select the attribute that contains your products' categories in **Category Column**.
In **ID pool based on…**, choose the level within the platform that Productsup should scan for categories:
* **Account** - Productsup assesses the uniqueness of all categories in your organization. Each unique category in this organization gets a unique ID. If multiple sites have a category with the same data, such a category receives unique IDs each time it appears in the organization.
* **Account (Distinct)** - Productsup assesses the uniqueness of all categories in your organization. Each unique category in this organization gets a unique ID. If multiple sites have a category with the same data, such a category receives the same ID across all sites of the organization.
* **Project** - Productsup assesses the uniqueness of all categories in the chosen project. Each unique category in this project gets a unique ID. If multiple sites have a category with the same data, such a category receives unique IDs each time it appears in the project.
* **Project (Distinct)** - Productsup assesses the uniqueness of all categories in the chosen project. Each unique category in this project gets a unique ID. If multiple sites have a category with the same data, such a category receives the same ID across all sites in the project.
* **Site** - Productsup assesses the uniqueness of all categories in the chosen site. Each unique category in this site gets a unique ID.
To use the options **Account**, **Account (Distinct)**, **Project**, and **Project (Distinct)**, add and set up the Category ID Generator in all sites where you want to create unique category IDs. The items selected in the drop-down menu **ID pool based on…** should be the same across all these sites.
In **Tree Separator**, enter the symbol that should separate levels within your category paths. The default separator is `>`.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
If you can't see your new category IDs in the intermediate stage in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___service_categoryid` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the Category ID Generator depends on the column prefix you choose in [see the relevant section](#step-idm241659346180691). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send such attributes to your export channels.
Edit the Category ID Generator data service [#edit-the-category-id-generator-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Category ID Generator data service [#delete-the-category-id-generator-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Enhance your import data through Data Services
import { Callout } from "fumadocs-ui/components/callout";
Introduction [#introduction]
A Productsup data service is a tool that lets you enhance and restructure your data feed using the Data Services feature. This section covers the data services that let you enhance your data feed with additional data. See [Restructure your data in Data Services](/docs/help-center/map-and-optimize-your-data/data-services) for more information on the data services that let you restructure and optimize your data.
Some data services are available at an additional cost in all platform Editions. If you are unsure whether the desired data service is free, reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com).
All Productsup data services fall into one of the following categories:
* *ID Generators* enhance your items with attributes containing unique product or category IDs.
* *Crawlers* let you crawl your item or image URLs to extract additional item data or image properties and add them to your site.
* *Merge/Split Feed* lets you manage product variants by splitting an item into multiple product variants or merging multiple product variants into one item.
* *Implode/Explode/Group Columns* lets you manage your attributes by merging and splitting them. They also help you transform your attribute values to enhance the feed with more data.
* *Exclude Rows from Import* removes duplicate products from your feed based on product IDs.
* *Travel Services* enrich your feed with geographical data and information related to weather and travel.
* *Pricing* lets you add price comparison data to your feed.
* *AI Services* use machine learning to transform or enrich your data by, for example, removing image backgrounds or predicting product categories.
Productsup data services that enhance your data feed use your website pages or third-party services, such as Google Translate, Amazon Selling Partner API, and OpenWeatherMap, to add new data to your data feed.
Prerequisites [#prerequisites]
All data services require you to:
* Add a unique item identifier in your site. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
The rest of the prerequisites are individual to each data service. You can see the relevant prerequisites in a document dedicated to the data service of your interest.
Arrange the processing order of your data services [#arrange-the-processing-order-of-your-data-services]
You can add multiple data services of different types to a site. In most cases, you can also add multiple data services of the same type to a site unless otherwise specified in a dedicated data service document.
Once you have added multiple data services to a site, you can adjust their processing order in Data Services by dragging and dropping. The platform executes data services in the order arranged by the data services list found in Data Services.
* If one of your data services uses the output data of another data service, ensure to have the dependent data service lower on the list. The platform should execute the source data service first.
* You can't change the stage where the platform executes a data service by dragging and dropping. You must edit the settings of a data service to do so.
# Fetch Google Maps information with the Google Places data service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Google Places is a Productsup data service that lets you enhance your product feed with additional details about relevant businesses. For example, your product feed contains a business's name, city, and country as follows:
| Business name | Business city | Business country |
| ------------- | ------------- | ---------------- |
| Productsup | Berlin | Germany |
Using this info and the Google Places data service, you can fetch data about this business from Google Maps and enhance your feed with new info, such as:
| Address | Phone number | Rating | Website | Geolocation |
| ------------------------------------- | ------------ | ------ | -------------------------------------------- | ------------------------------------- |
| Alex-Wedding-Straße 5-7, 10178 Berlin | 03060985355 | 4.8 | [productsup.com](http://www.productsup.com/) | 52.52512574270143, 13.414928446031048 |
The Google Places service is available for the import and intermediate stages.
After scanning your product feed and identifying the businesses mentioned in your relevant columns, the Google Places data service extends your feed with additional business information. You can control how much information the platform adds with the **Output Mode** setting:
* *Full Details* adds all available business information across 13 columns.
* *Place ID Only* adds just the business's Google Place ID. This mode is useful when you only need the identifier, and it uses fewer Google Places API calls.
In *Full Details* mode, the data service adds the following 13 columns:
* `___google_places_google_id` stores the business ID that Google Maps use to identify businesses.
* `___google_places_google_name` stores the name of the business as stated on Google Maps.
* `___google_places_place_id` contains the ID of the business's location.
* `___google_places_formatted_phone_number` shows the business's phone number in the local format.
* `___google_places_formatted_address` displays the business's full address.
* `___google_places_lat` stores the latitude data of the business's location.
* `___google_places_lng` stores the longitude data of the business's location.
* `___google_places_international_phone_number` shows the business's phone number in the international format.
* `___google_places_website` contains a link to the business's website.
* `___google_places_url` contains a link to the business's location on Google Maps.
* `___google_places_rating` displays the business's rating as stated on Google Maps.
* `___google_places_types` shows tags describing the type of this business. For example, `bar`, `restaurant`, `lodging`, etc.
* `___google_places_date` stores the date of the last data service run.
In *Place ID Only* mode, the data service adds the following two columns:
* `___google_places_place_id` contains the ID of the business's location.
* `___google_places_date` stores the date of the last data service run.
Prerequisites [#prerequisites]
To set up the Google Places data service, you need the following:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
. An API key to let you use the Google Places API. See [Use API keys with Places API](https://developers.google.com/maps/documentation/places/web-service/get-api-key?hl=en) and [Product details - Places API](https://console.cloud.google.com/marketplace/product/google/places-backend.googleapis.com).
. A column in your feed that contains the name of the business. You can optionally provide columns for the business's city and country to improve the accuracy of the results.
Add Google Places data service [#add-google-places-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Google Places*, select **Add**, and give it a desired name and column prefix.By default, `___google_places` is the column prefix.
Choose the stage containing the columns with the needed business info in **Service Data Level** and select **Add**.
In **API Key**, enter your authentication key to use the Google Places API.
Choose the column containing the business name in **Name Column**. You can optionally select columns for the business's city and country in **City Column** and **Country Column** to improve the accuracy of the results.If you chose **Import** in [see the relevant section](#step-idm243341873144006), these drop-down lists display the columns of your import stage. If you chose **Intermediate** in that field, the drop-down lists contain your intermediate-stage columns.
Choose how much information the platform adds to your feed in **Output Mode**. Select *Full Details* to add all available business information, or *Place ID Only* to add just the business's Google Place ID. By default, *Full Details* is selected.
Select the checkmark icon (**✔**) in **Use Cache** to let the data service run only for those products that had changes in their business name, city, or country columns since the last site run. By default, this option is off.
Select the checkmark icon (**✔**) in **Trigger during a refresh in Data View** to let the platform run the Google Places data service every time there is a refresh in Data View. By default, this option is off.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
If you can't see the columns the Google Places service added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___google_places` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the Google Places data service depends on the column prefix you chose in [see the relevant section](#step-idm243341873115434). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
Edit the Google Places data service [#edit-the-google-places-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Google Places data service [#delete-the-google-places-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Import prices from Amazon with the Amazon Product Pricing data service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
You can use the Amazon Product Pricing data service to import all prices offered on Amazon for each SKU or ASIN in your Productsup site and accompany the imported prices with information about the corresponding sellers, currencies, and errors. In Dataflow, you can see the prices sorted from lowest to highest.
The Amazon Product Pricing data service is available for the import and intermediate stages.
The Amazon Product Pricing data service scans your ASIN or SKU attribute and creates an additional data source in your Productsup site to add six (6) new attributes in your site:
. `___amzn_price_sku_item_type` shows whether Productsup imported prices based on your products' ASIN or SKU values.
. `___amzn_price_sku_item_code` duplicates the values of the ASIN or SKU attribute to identify products on Amazon.
. `___amzn_price_sku_currency` contains the currency of the product price imported from Amazon.
. `___amzn_price_sku_price` contains the lowest price of a product imported from Amazon.
. `___amzn_price_sku_seller_id` identifies the seller that uses the imported price to sell this product on Amazon.
. `___amzn_price_sku_errors` shows error codes in case of problems with data import.
Prerequisites [#prerequisites]
To use the Amazon Product Pricing data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
. An attribute in your site containing ASIN or SKU data to let Productsup identify your products on Amazon and fetch their prices.ASIN stands for Amazon Standard Identification Number, while SKU means Stock Keeping Unit.
Add the Amazon Product Pricing data service [#add-the-amazon-product-pricing-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Amazon Product Pricing*, select **Add**, and give it a desired name and column prefix.By default, `___amzn_price` is the column prefix.
Choose the stage where you have your ASIN or SKU values in **Service Data Level** and select **Add**.
In **Attribute type**, choose whether you want to use ASIN or SKU values to identify products on Amazon.
In **ASIN or SKU attribute**, choose the attribute in your feed that contains your ASIN or SKU values.
If you chose **Import** in [see the relevant section](#N1659978953619), the **ASIN or SKU attribute** drop-down list displays the attributes of your import stage. If you chose **Intermediate** in that field, the drop-down list contains your intermediate-stage attributes.
Select your market of interest in **Marketplace**.
In **Product condition**, choose what products you want to fetch prices for:
* *New*
* *Used*
* *Collectible*
* *Refurbished*
* *Club*
In **Select authentication**, choose the Amazon authentication you previously set up in your organization, project, or site. If you haven't set up Amazon authentication yet, perform the following steps:
1. Select **Add New Authentication**.
2. Select *Amazon Authentication (BETA version by Amazon)* in **Type**. You can optionally give your authentication a name.
3. Select **Next**.
4. If applicable, select **Region** and **Country** to choose your marketplace country and locale.
5. Select **Connect** to continue.
Before proceeding, Productsup directs you to Amazon to finalize your authentication. After completing the authentication setup, Amazon redirects you back to Productsup.
6. Close the confirmation window to proceed.
Enter the number of days the data service should wait before fetching prices again in **Expires after (days)**. The expected input format is a digit identifying the number of days.
* Enter `-1` to let the platform import prices for all products during every site run. This option can increase your site processing times.
* Enter `0` to let the platform import prices only for new products in your feed. This option has the least impact on your site processing times.
* Enter any number greater than zero (0) to let the platform import prices for all products in your feed during a site run if the entered number of days has passed since the last pricing import.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
If you can't see your new pricing data in Data View, ensure the platform hasn't hidden it:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___amzn_price` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the Amazon Product Pricing data service depends on the column prefix you choose in [see the relevant section](#step-idm241659978198632). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send such attributes to your export channels.
Edit the Amazon Product Pricing data service [#edit-the-amazon-product-pricing-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Amazon Product Pricing data service [#delete-the-amazon-product-pricing-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Crawl product landing pages with the Data Crawler
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The Data Crawler is a Productsup data service designed for crawling your products' landing pages to enhance your product feed with additional data that you don't have in any other data sources.
The Data Crawler service is available for the import and intermediate stages.
When crawling the product links listed in one of your feed's columns, the Data Crawler extracts HTML code from those product pages and creates an additional data source in your Productsup site to add and populate the following new columns:
* `___service_datacrawler_url` contains the URL of the crawled page.
* `___service_datacrawler_data` stores the source HTML code extracted from the crawled page.
* `___service_datacrawler_date` displays the date of the last crawl.
* `___service_datacrawler_http_code` shows the HTTP status of the crawled page.
* `___service_datacrawler_content_type` contains the encoding of the page, such as HTML or UTF-8.
* `___service_datacrawler_size_download` displays the size of the file with the extracted code.
* `___service_datacrawler_total_time` shows how much time it took to crawl the page.
* `___service_datacrawler_md5_url` contains the crawled URL encoded in MD5.
The Data Crawler can slow down the performance of your Productsup site because it is a resource-intensive process.
Once the platform runs the Data Crawler service and populates these columns, you should extract your product data from the crawled HTML code by applying rule boxes in Data View or Dataflow. See [Work with HTML](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/work-with-html) for more information.
Prerequisites [#prerequisites]
The Data Crawler service is part of the *Crawler Module*, which is available at an additional cost in all platform editions. Contact [support@productsup.com](mailto:support@productsup.com) to discuss adding it to your organization.
The Crawler Module contains the following features:
* The Data Crawler data service
* The [Web Crawler](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-web-data-with-website-crawler) data source
* The [Image Properties Crawler](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/detect-image-metadata-with-the-image-properties-crawler) data service
To set up the Data Crawler data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
. The rights to the domain you want to crawl. You must be the owner of the crawled website.
. A column in your feed that contains product URLs. The URLs must have no tracking parameters.
Before running the Data Crawler data service, you should discuss the specifics of your website's performance with your website admin to gather the information required for setting up the Data Crawler. Find answers to these questions:
. How many crawlers can access your website at a time?
. What are your website's average and maximum response times?
. Do the crawled pages require authentication? If yes, you need the HTTP username and password for the crawler to access the pages.
Add the Data Crawler service [#add-the-data-crawler-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Data Crawler*, select **Add**, and give it a desired name and column prefix.By default, `___service_datacrawler` is the column prefix.
Choose the stage containing the column with the crawled URLs in **Service Data Level** and select **Add**.
Choose the column in your feed that contains the links to your landing pages in **URL attribute**.If you chose **Import** in [see the relevant section](#step-idm243320457109980), the **URL attribute** drop-down list displays the columns of your import stage. If you chose **Intermediate** in that field, the drop-down list contains your intermediate-stage columns.
If you want to crawl multiple columns containing product links, you need to create a copy of your Productsup site and set up a Data Crawler service in the copied site to crawl another link column.
In **User Agent**, you can see the name the crawler uses to access your website. By default, the name is `Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4 (productsup.io/crawler)`. You can modify it as needed, for example, by adding a hash at the end of the crawler name for security reasons.
Whitelist your Productsup crawler using the name specified in this field for your website not to block the crawler.
In **Concurrent Crawlers**, choose the number of crawlers that can access your website simultaneously. By default, the number is `10`.
If you engage more crawlers than your website can handle, the crawling process can run quicker but may cause website performance issues.
In **Request Timeout (seconds)**, you can set how long the crawler should wait for a response from your website. The expected input format is a digit identifying the number of seconds.Use your website's maximum or average response time to enable the Data Crawler service to run efficiently.By default, the crawler waits 10 seconds for a response before proceeding to a different link.
Enter the number of days the Data Crawler service should wait before recrawling a link in **Expires After (days)**. The expected input format is a digit identifying the number of days.The Data Crawler service crawls all new or changed links in your URL attribute every time the site runs. The **Expires After (days)** field determines when the service should recrawl the links it has already crawled.
You can enter `-1` in **Expires After (days)** to recrawl all product links every time your site runs in Productsup. This tip is helpful for fast-changing product data, such as prices or availability.
If you want to reduce the amount of space required to store the crawled HTML code, select the checkmark icon (**✔**) in **Save data compressed (for big data/HTML sites)**.If you use this option, you need to use the rule boxes HTML getElementById, HTML getElementByTagName, or HTML getElementByXpath to extract data from the compressed code before using split string and regex rule boxes. See [Work with HTML](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/work-with-html) for more information.
If you want the platform to run the Data Crawler service during every refresh in Data View, select the checkmark icon (**✔**) in **Trigger during a refresh in Data View**.
To crawl websites protected by basic authentication, add your authentication data in **HTTP Username** and **HTTP Password**. For example, you need to fill out these fields if you want to crawl your staging environment.
In the **Permissions** panel, check the box **I hereby confirm that Productsup is permitted to crawl the aforementioned pages.** to verify that you, as the owner of the crawled website, give Productsup permission to crawl the selected links.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
Once the Data Crawler has started to run, you can't stop it.
The first run of this service crawls all product links you have selected in [see the relevant section](#N1660302872315), so it may take a while. The recommended time for the first run of the service is at night or at another time with low customer traffic on your product pages, which would minimize website performance issues.
If you can't see the columns the Data Crawler added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___service_datacrawler` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the Data Crawler data service depends on the column prefix you chose in [see the relevant section](#step-idm241660228554991). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
Edit the Data Crawler service [#edit-the-data-crawler-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Data Crawler service [#delete-the-data-crawler-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Add longitude and latitude with the Geolocation service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
If you have location information in your product feed, you can use the Geolocation data service to enhance it with latitude and longitude data.
The Geolocation data service is available for the import and intermediate stages.
The Geolocation data service scans your address column and creates an additional data source in your Productsup site to add four (4) new columns containing latitude and longitude data:
. `___geolocation_title` is a duplicate of your address column.
. `___geolocation_latitude` contains your latitude data.
. `___geolocation_longitude` contains your longitude data.
. `___geolocation_next_try_date` determines when the platform should send the next request to the Geolocation API in case an address returned an error in the previous run.
Prerequisites [#prerequisites]
To use the Geolocation data service, you need:
. An [API Key](https://developers.google.com/maps/documentation/geolocation/get-api-key?hl=en) for the Google Geolocation API.
. Location data in the correct format. Your addresses must use the same format as the national postal service of the country in question. Separate your street address elements with spaces and, if applicable, avoid providing such info as business names and floor numbers. For example, here is a German address using the German postal service format delimited by spaces: *Alex-Wedding-Straße 5 10178 Berlin*.See [Geocoding request and response](https://developers.google.com/maps/documentation/geocoding/requests-geocoding?hl=en) for more information.
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
Add the Geolocation data service [#add-the-geolocation-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Geolocation*, select **Add**, and give it a desired name and column prefix.By default, `___geolocation` is the column prefix.
Choose the stage where you have your location data in **Service Data Level** and select **Add**.
Add your authentication data for the Google Geolocation API in **API Key**.
Choose the column in your feed that contains your address data in **Address column**.
If you chose **Import** in [see the relevant section](#N1659978953619), the **Address column** drop-down list displays the columns of your import stage. If you chose **Intermediate** in that field, the drop-down list contains your intermediate-stage columns.
If you want the platform to run the Geolocation data service every time there is a refresh in Data View, select the checkmark icon (**✔**) in **Trigger during a refresh in Data View**.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
If you can't see your new geolocation data in Data View, ensure the platform hasn't hidden it:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the dropdown on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___geolocation` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up.
The naming of the attributes created by the Geolocation data service depends on the column prefix you choose in [see the relevant section](#step-idm241659978198632). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send such attributes to your export channels.
Edit the Geolocation data service [#edit-the-geolocation-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Geolocation data service [#delete-the-geolocation-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Enhance your feed with Tripadvisor ratings
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
*Trip Advisor - Ratings* is a Productsup data service that lets you add Tripadvisor rating details to your data about hotels, restaurants, and other similar business entities.
After scanning the relevant column in your product feed and locating the needed ratings on Tripadvisor, the data service *Trip Advisor - Ratings* adds the following columns to your site:
* `___trip_advisor_id` copies the values of your Tripadvisor entity IDs column for technical reasons.
* `___trip_advisor_rating` contains the output ratings information.
The data service *Trip Advisor - Ratings* is available for the import and intermediate stages.
Prerequisites [#prerequisites]
To set up the data service *Trip Advisor - Ratings*, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
. A column in your feed containing Tripadvisor entity IDs of the businesses whose rating details you want to retrieve.
. An API key to authenticate in the Tripadvisor Content API. See [Tripadvisor Content Solutions](https://www.tripadvisor.com/developers).
Add the data service Trip Advisor - Ratings [#add-the-data-service-trip-advisor---ratings]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Trip Advisor - Ratings*, select **Add**, and give it a desired name and column prefix.By default, `___trip_advisor` is the column prefix.
Choose the stage containing your Tripadvisor entity IDs in **Service Data Level** and select **Add**.
In **TripAdvisor ID Column**, select the column with your Tripadvisor entity IDs.If you chose **Import** in [see the relevant section](#step-idm243349494852100), the drop-down list **TripAdvisor ID Column** displays the columns of your import stage. If you chose **Intermediate** in that field, the drop-down list contains your intermediate-stage columns.
In **TripAdvisor API Key**, enter your Tripadvisor Content API key.
If you want the platform to run the data service *Trip Advisor - Ratings* every time there is a refresh in Data View, select the checkmark icon (**✔**) in **Trigger during a refresh in Data View**.
Select **Save**.
For the platform to process a new data service, select **Import** or **Run** in the top-right corner of your site's view.
If you can't see the columns that the data service *Trip Advisor - Ratings* added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___trip_advisor` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the data service *Trip Advisor - Ratings* depends on the column prefix you chose in [see the relevant section](#step-idm243349495709868). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
Edit the data service Trip Advisor - Ratings [#edit-the-data-service-trip-advisor---ratings]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the data service Trip Advisor - Ratings [#delete-the-data-service-trip-advisor---ratings]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Fetch competitor pricing with the Price API service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The Price API data service is a Productsup feature that lets you gain insight into your competitors' pricing using the Price API. With this data, you can make your pricing more competitive and optimize your assortment.
You can get competitors' pricing data from sources like Amazon, eBay, Google Shopping, etc. The list of available pricing sources depends on the country of your choice.
The Price API data service is available for the import and intermediate stages.
Prerequisites [#prerequisites]
To set up the Price API data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier).
. A column in your feed containing product keys to identify the needed products on your chosen pricing source, such as eBay, Amazon, Google Shopping, etc.A product key can be:
1. An ID.
2. A product title.
3. A GTIN.
. An API key to authenticate in the Price API. See [Price API subscription plans](https://www.priceapi.com/en/price/plans/) to request or purchase it.
Add the Price API data service [#add-the-price-api-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Price API*, select **Add**, and give it a desired name and column prefix.By default, `___priceapi` is the column prefix.
Choose the stage containing your product keys in **Service Data Level** and select **Add**.
In **Token**, enter your Price API key to let the data service access the API.
In **Country**, select what country's pricing data you want the data service to fetch.
In **Source**, choose the channel where you want to get your competitors' pricing data. The selection in this drop-down menu depends on what you chose in [see the relevant section](#N1678884197991).
Select the type of your product keys in **Product Key**.
Choose the column in your feed containing the product keys in **Product Key Column**.If you chose **Import** in [see the relevant section](#step-idm243357758130188), this drop-down list displays the columns of your import stage. If you chose **Intermediate** in that field, the drop-down list contains your intermediate-stage columns.
In **Max Pages**, set the number of result pages with pricing data that the data service should retrieve.
In **Max Age**, define how old the fetched pricing data can be. The expected input format is a digit or a set of digits reflecting the number of minutes a price has been live on the channel.
If you want the platform to run the data service every time there is a refresh in Data View, select the checkmark icon (**✔**) in **Trigger during a refresh of the Data View**.
Select **Save**.
For the platform to process a new data service, select **Import** or **Run** in the top-right corner of your site's view.
If you can't see the columns that the Price API data service added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the custom prefix `___priceapi` and select the eye icon next to each attribute you want Data View to display.
Close the pop-up menu.
The naming of the attributes created by the Price API data service depends on the column prefix you chose in [see the relevant section](#step-idm243357757670008). The attribute names that the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
Edit the Price API data service [#edit-the-price-api-data-service]
Go to **Data Services** from your site's main menu.
Search for your data service.
Select the cogwheel icon (**⚙**) next to the desired data service to edit settings.
Select **Save**.
Delete the Price API data service [#delete-the-price-api-data-service]
Go to **Data Services** from your site's main menu.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Rank items with the Product Marker data service
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The *Product Marker* data service is a Productsup feature that lets you rank items in your site based on a specific attribute. For example, you can use the *Product Marker* data service to identify the three most ordered items in your feed. Optionally, you can identify those most ordered items within each category if you choose a grouping attribute in the data service setup.
The *Product Marker* data service can also count the number of parts in an attribute value that is split with a delimiter and identify which items in your feed have the highest or lowest number of parts in a value.
Once the data service finishes processing, it creates a new attribute in your site containing the ranking results.
The *Product Marker* data service is available for the import and intermediate stages.
Prerequisites [#prerequisites]
To use the *Product Marker* data service, you need:
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
. A ranking attribute in your feed that contains one of these value types:
1. Numeric values. In this case, the data service compares numbers across different items and marks the item with the highest or lowest number.
2. Alphanumeric values split into parts with a delimiter. In this case, the data service counts the number of parts in each value, compares it across different items, and marks the item with the highest or lowest number of parts in a value.
Add the Product Marker data service [#add-the-product-marker-data-service]
Go to **Data Services** from your site's main menu, and select **Add data service**.
Search for *Product Marker*, select **Add**, and give it a desired name in **Name** and attribute name prefix **Column prefix**.By default, the attribute name prefix starts with three underscores (`___`), which means the new attribute won't be exported during site runs.
Choose the stage where you have the needed ranking attribute in **Service Data Level**, and select **Add**.
In **Attribute containing the values**, select the attribute that contains the data you want to use for ranking.
If your ranking attribute is split into parts with a delimiter and you want to count these parts and compare their number across different items in the feed, enter the character that splits your values into parts in **Delimiter**. For example, enter the greater-than sign *>* if you want to mark items with the longest category values, for example, *Shoes > Sneakers* and *Shoes > Sneakers > Running sneakers*.
You can't use a space character as a delimiter.
If you want to rank your items within groups, such as categories, select the attribute that groups the needed items in **Import attribute you want to group by (optional)**.
In **Method**, choose *Ascending* to mark items with the lowest values or *Descending* to mark items with the highest values.
Enter the number of items you want to mark in **Number of marked items**. For example, to mark the three highest values in an attribute, enter *3* in this field.
In **Result attribute**, enter the name of the newly-added attribute that should contain the ranking results. The platform adds the prefix defined in [see the relevant section](#N1757348667045) to the attribute name. You can later find the attribute at the same stage where you applied the data service.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
If you can't see your new ranking data in Data View, ensure the platform hasn't hidden it:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the dropdown on your left.
Select the menu icon on the right and then select the eye icon.
Find the result attribute in the list, and select the eye icon next to it.
Close the pop-up.
Ranking example [#ranking-example]
The goal is to identify the three most ordered items within each category. You can set up the *Product Marker* data service in the following way:
* **Attribute containing the values**: *orders*
* **Import attribute you want to group by (optional)**: *category*
* **Number of marked items**: *3*
* **Result attribute**: *most\_ordered*
* **Method**: *Descending*
| id | category | stock | size | color | orders |
| -- | -------- | ----- | ---- | ----- | ------ |
| 1 | Shoes | 4 | S | red | 10 |
| 2 | Shoes | 2 | S | blue | 15 |
| 3 | Shoes | 1 | L | blue | 25 |
| 4 | Shirts | 5 | 38 | black | 7 |
| 5 | Shirts | 4 | 38 | blue | 15 |
| 6 | Shirts | 7 | 38 | green | 5 |
| 7 | Shirts | 2 | 40 | green | 10 |
| 8 | Shirts | 5 | 42 | green | 17 |
| 9 | Pants | 7 | 28 | black | 26 |
As a result, you can see the rankings in the newly created attribute **\_\_\_marker\_most\_ordered**:
| id | category | stock | size | color | orders | \_\_\_marker\_most\_ordered |
| -- | -------- | ----- | ---- | ----- | ------ | --------------------------- |
| 1 | Shoes | 4 | S | red | 10 | Shoes 3 |
| 2 | Shoes | 2 | S | blue | 15 | Shoes 2 |
| 3 | Shoes | 1 | L | blue | 25 | Shoes 1 |
| 4 | Shirts | 5 | 38 | black | 7 | |
| 5 | Shirts | 4 | 38 | blue | 15 | Shirts 2 |
| 6 | Shirts | 7 | 38 | green | 5 | |
| 7 | Shirts | 2 | 40 | green | 10 | Shirts 3 |
| 8 | Shirts | 5 | 42 | green | 17 | Shirts 1 |
| 9 | Pants | 7 | 28 | black | 26 | Pants 1 |
If there are more items within the same category than you chose to mark in **Number of marked items**, the data service only marks as many items as you chose and leaves the remaining values of the result attribute empty.
Edit the Product Marker data service [#edit-the-product-marker-data-service]
Go to **Data Services** from your site's main menu.
Change the settings of the needed data service:
1. To deactivate a data service, choose the pause icon next to the desired data service.
2. Select the cogwheel icon
next to the desired data service to edit other settings and select **Save**.
Delete the Product Marker data service [#delete-the-product-marker-data-service]
Go to **Data Services** from your site's main menu.
To stop a data service from affecting your feed without deleting the data service itself, you can choose the pause icon next to the desired data service.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Set up ETIM Classes exports
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
ETIM is an international classification standard for technical products of different industries, such as electrical, HVAC, and construction. When every manufacturer uses the same classification for attributes and values to describe similar products, it makes it easier for buyers to compare and choose products.
The ETIM hierarchy looks as follows:
. *ETIM class* is the lowest level category.
. Each ETIM class consists of a list of attributes, called *ETIM features*, to describe any category product.
. Each ETIM feature should include valid *ETIM values*.
Each ETIM class, feature, and value use ETIM codes as a description. For example, to describe a brass water tap, you need the following codes:
* ETIM сlass: EC011375
* ETIM feature for material: EF020791
* ETIM value for brass: EV000149
See [ETIM Model Information](https://www.etim-international.com/classification/model-information/) for more details.
Productsup supports ETIM versions 8.0 and 9.0 and provides exports that help you transform your data to comply with the ETIM standards. Depending on your ETIM version, you need to choose a corresponding classification list and export in the platform:
| ETIM version | Classification list | Export |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------ | ---------------- |
| ETIM 8.0 | ETIM-8.0 Classes – choose this list for an already existing mappingETIM Classes – choose this list for a newly created mapping | ETIM-8.0 Classes |
| ETIM 9.0 | ETIM Classes | ETIM-9.0 Classes |
Use the ETIM Classes classification list for any new ETIM export setup. The ETIM Classes classification list is version-independent and includes code classes of ETIM versions 8.0 and 9.0. We will maintain this classification list by adding new codes for the following ETIM versions.
Migrate from ETIM 8.0 to ETIM 9.0 [#migrate-from-etim-80-to-etim-90]
If you currently use the ETIM 8.0 version and want to migrate to ETIM 9.0, you should do the same steps as for setting up the export from scratch. See [Set up ETIM Classes export](#section-idm4531557212616033783311337709).
You can either migrate to a new version from your existing ETIM 8.0 site, or you can create a new site for ETIM 9.0. See [Create or copy a site](/docs/help-center/get-started/manage-your-organization-projects-and-sites/create-or-copy-a-site).
Set up ETIM Classes export [#set-up-etim-classes-export]
To set up the ETIM Classes export in Productsup, take the following steps:
Map imported product categories to ETIM classes with lists. This step is optional and you can skip it if your data feed already has the ETIM class codes. See [Map imported product categories to ETIM Classes with Lists](#section-idm4567949553404832523618419941).
Add and set up ETIM Classes export. See [Add and set up ETIM-8.0 or ETIM-9.0 Classes export](#section-idm4594937344539232521883206077).
Map imported product attributes to ETIM features. See [Map product attributes to ETIM features](#section-idm4631450276142432523818514337).
Confirm whether the mapped ETIM features contain the correct ETIM values and make the necessary adjustments. See [Check and correct ETIM values](#section-idm4567949478054432523871796201).
Map imported product categories to ETIM Classes with Lists [#map-imported-product-categories-to-etim-classes-with-lists]
Skip this step if the ETIM class codes are already in your imported data feed.
Go to **Lists** from your site's main menu.
Select **ADD LIST**.
In **Choose a list type**, choose **Classification Mapping** and select **Continue**.
In **Configure the Classification Mapping list**, do the following:
In **Name**, give your list a desired name.
In **Classification**, choose the *ETIM Classes* classification standard.
In **Stage**, select *Import*.
In **Attribute**, select the attribute of your data feed that contains the product categories. For example, the `category` attribute.
Optionally, toggle **Share list** if you want to share the list within the organization or project.
Select **Add**.
Map your product categories by choosing the corresponding ETIM classes from the **Replace term** drop-down menu.
Add and set up ETIM-8.0 or ETIM-9.0 Classes export [#add-and-set-up-etim-80-or-etim-90-classes-export]
Depending on the ETIM version supported by your system, you can choose the needed export:
* ETIM-8.0 Classes for version 8.0
* ETIM-9.0 Classes for version 9.0
The export lets you map your product attributes to the ETIM features for all the relevant ETIM classes in your catalog and validate or correct the attribute values. The values should correspond to the ETIM values.
To add an export:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for a needed export and select **Add**.
In **Exports**, select the export's name link.
Select the pen icon at the top of the page and give your export a custom name as desired.
Select **Add Destination** and choose your destination. Give it a name as desired and select **Save**.
The platform creates an XML file and exports it to the selected destination. Later, you can use the product data that you previously mapped to ETIM for other exports, such as BMEcat or FabDis. Use the output file from the ETIM export you set up as a data source for the BMEcat or FabDis site.
Go to **Dataflow** from your site's main menu.
Select your export from the drop-down menu on the left in the top ribbon.
Map the attributes from the intermediate to export stage. For example, connect the `category` to `Class code`.
Hover over the **Class code** attribute in the export stage and select the arrow on the right.
Search for the `Classification Mapping` rule box and drag it to the blue area.
In the **List** drop-down menu, select the Classification Mapping list you set up in [Map imported product categories to ETIM Classes with Lists](#section-idm4567949553404832523618419941).
Select **Save**.
Select **Run** in the top right corner to import the ETIM class features. Wait for the run to finish and refresh your page. The **Classifications** drop-down menu appears in the top ribbon. If you open it, you can see the ETIM classes that are present in your data feed.
Map the product attributes to each class feature as described in the next section.
Map product attributes to ETIM features [#map-product-attributes-to-etim-features]
The export consists of a set of classes, such as *EC003867 - Towel Hook*. Each class has a specific list of attributes, called ETIM features, that describe any product in a specific category.
To map product attributes to ETIM features:
In **Dataflow**, select a class you want to map by opening the **Classifications** drop-down menu in the top ribbon. The platform refreshes the view and shows the class attributes in the export column.
Map the attributes for the selected class to the intermediate stage. Repeat the same steps in all ETIM classes.
Some export attributes appear twice: with their standard name and with `[details]` at the end of their name. For example:
The meaning of the repeated attributes is the following:
* The `Material` attribute contains a correct ETIM value.
* The `Material [details]` attribute lets you add product details as text. Use it if you want to offer more information about your product than ETIM requires or if an ETIM value doesn’t fit your case.
Once you finish mapping the attributes for your ETIM classes, go to **Data View** and check whether your export attributes contain valid ETIM values, as described in the following section.
Check and correct ETIM values [#check-and-correct-etim-values]
Each ETIM feature should have a valid ETIM value in the form of code, such as *Value Code: EV000149 - Brass*. To check if all the values are present in your feed:
Go to **Data View** from your ETIM site.
Select your ETIM Classes export from the channels drop-down menu in the top ribbon.
Select the ETIM class you want to check from the **Classification** drop-down menu.
Select the **Analyze** button for the attribute you want to check.
The side panel opens and shows whether your attribute contains valid ETIM values and suggests possible actions to correct them. See [Analyze your data in Data View](/docs/help-center/map-and-optimize-your-data/data-view/analyze-your-data-in-data-view#section-idm4538971827048033726544546987) for more information on the Analyzer feature.
Use rule boxes to edit the values if necessary.
# Add Google Indexing export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The Google Indexing API helps site owners request page recrawls from Google after they perform major changes to their pages. Timely page recrawls help freshly modified pages appear in new relevant Google searches and attract high-quality user traffic.
In Productsup, you can use the *Google Indexing* export to request page recrawls. This is an API- and delta-based export, which means it sends your data to Google via the Google Indexing API using delta updates instead of your entire feed.
* \*Report URL and content changes.\*After adding new pages to your website or substantially changing your existing pages, you can let Google know when to recrawl a URL for updates.
* \*Remove pages from Google's recrawl list.\*If you delete a page, you can request Google to stop recrawling it for updates.
* \*Keep updated on recrawl processes.\*You can check Google's current knowledge about the state of your pages and see the status of your recrawl requests.
* \*Request batch recrawls.\*If necessary, you can send up to 100 indexing requests as a single HTTP request to the Google Indexing API and trigger batch recrawls of your pages.
Prerequisites [#prerequisites]
To use the Google Indexing API export, you need:
. A project in the Google API Console.
. A Google service account added to your Google Search Console as a site owner.
. An OAuth token in the JSON format to authenticate with the Google Indexing API.
See [Prerequisites for the Indexing API](https://developers.google.com/search/apis/indexing-api/v3/prereqs) for more information.
Set up Google Indexing export [#set-up-google-indexing-export]
Go to **Exports** from your site's main menu, and select **Add export**.
Search for *Google Indexing*, hover over it, and select **Add**.
In Exports, select the added export *Google Indexing*.
Select **Add Destination**.
Select *Google Indexing API* from the **Destination** drop-down menu, and choose **Save**.
In **Google Service Account JSON credentials**, add the JSON private key related to your Google service account.
Determine what updates you want to send to the Google Indexing API by switching the following options on or off:
If all three options are off, Productsup sends all new, modified, unchanged, and deleted pages to the Google Indexing API.
1. Toggle **Skip new items** to *On* to notify the Google Indexing API of modified, unchanged, and deleted pages while skipping new URLs.
2. Toggle **Skip modified items** to *On* to notify the Google Indexing API of new, unchanged, and deleted pages while skipping modified URLs.
3. Toggle **Skip deleted items** to *On* to notify the Google Indexing API of new, modified, and unchanged pages while skipping deleted URLs. The platform toggles this option to *On* by default.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** from the site's main menu and choose the added export from the dropdown in the toolbar.
Map the attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.
The *Google Indexing* export has only one mandatory attribute:
* **url**
There are two optional attributes:
* **updated\_at**
* **id**
If you want Productsup to request a recrawl of a page every time you update it, make sure to map the **updated\_at** attribute.
If your data is ready, select **Run** or **Export** in the upper right corner of the page. If you don't want to run the entire site, including all active exports set up in it, you can go to **Exports**, select the added *Google Indexing* export, and then choose **Export this export**.
# Set up BMEcat 2005 and BMEcat 1.2 exports
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
BMEcat is a product data exchange format based on the Extensible Markup Language (XML) that lets you standardize and simplify product catalog exchanges between suppliers and purchasing companies. A range of product databases, procurement systems, and marketplaces, such as 2BA, EFO, and Mercateo, require submitting data in the BMEcat format.
Often, partner systems require BMEcat combined with ETIM or another classification standard.
Productsup supports the following BMEcat versions:
* BMEcat 2005 v4.0.2
* BMEcat 2005 v4.0.3
* BMEcat 2005 v5.0.1
* BMEcat 1.2
BMEcat 1.2 and BMEcat 2005 versions mainly differ in the following aspects:
| BMEcat 1.2 | BMEcat 2005 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - Supports a single language catalog per file. - Uses `ARTICLE` for attribute naming. - Has the `AGREEMENT` attribute. - Doesn't require values coded with ETIM or another classification and accepts values in plain language, such as `width`. | - Supports multiple languages in a catalog per file. - Uses `PRODUCT` for attribute naming. - Doesn't have the `AGREEMENT` attribute. - Supports customizable products, including adapted prices. |
See the [BMEcat official website](https://www.bme.de/services/bmecat/info) to learn more about the differences between versions.
In Exports, you can choose a needed export depending on the version required by the partner system to which you export your data.
The configuration of the BMEcat 2005 exports is similar regardless of the specific BMEcat version (v4.0.2, v4.0.3, v5.0.1). See [Add and set up the BMEcat 2005 export](#section-idm4558367492558433482870874434) for the BMEcat 2005 exports setup information.
The configuration of the BMEcat 1.2 export slightly differs. See [Set up BMEcat 2005 and BMEcat 1.2 exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-bmecat-2005-and-bmecat-1-2-exports#section-idm353353270521022) for the BMEcat 1.2 export setup information.
The platform still supports the legacy exports *BME 2005 - Single-feature Approach* and *BMEcat 2005 - Bundled-features Approach exports* if you started using them before the new exports became available. See [Set up BMEcat 2005 Single-feature Approach export channel](/docs/help-center/legacy-docs/legacy-functionality/set-up-bmecat-2005-single-feature-approach-export-channel) and [Set up BMEcat 2005 Bundled-features Approach export channel](/docs/help-center/legacy-docs/legacy-functionality/set-up-bmecat-2005-bundled-features-approach-export-channel) for more information on the legacy exports.
Add and set up BMEcat 2005 (v4.0.2, v4.0.3, v5.0.1) with ETIM [#add-and-set-up-bmecat-2005-v402-v403-v501-with-etim]
Usually, you need to set up the BMEcat 2005 export in combination with a classification standard. This section demonstrates how to set up BMEcat with ETIM. But you can use the same setup principle with another classification standard.
If you need to set up the BMEcat 2005 export without a classification, skip the following section and see [Add and set up the BMEcat 2005 export](#section-idm4558367492558433482870874434).
Prerequisites [#prerequisites]
To set up the BMEcat 2005 export with the ETIM classification standard, you need to:
Create and set up an ETIM-specific site. See [Create or copy a site](/docs/help-center/get-started/manage-your-organization-projects-and-sites/create-or-copy-a-site).
Add the ETIM export to your ETIM site. See [Set up ETIM Classes exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-etim-classes-exports).
Create and set up a BMEcat site. See [Create or copy a site](/docs/help-center/get-started/manage-your-organization-projects-and-sites/create-or-copy-a-site).
Set up the data source for BMEcat with ETIM. See [Set up the data source for BMEcat with ETIM](#section-idm4553890659428833515537832707).
Then, you can add and set up a necessary BMEcat 2005 export. See [Add and set up the BMEcat 2005 export](#section-idm4558367492558433482870874434).
Set up the data source for BMEcat with ETIM [#set-up-the-data-source-for-bmecat-with-etim]
Go to **Exports** from your ETIM site's menu and select the name of your ETIM export in the **Export name** column.
To fulfill this step, first, you must do steps 1 to 3 from the [Prerequisites](#section-idm4507487105398433577526356945).
Scroll down to the *Filename* section and select the file link to download the export file with the ETIM classification data for your product feed.
Go to **Data Sources** from your BMEcat site and add the main and additional data sources:
* For **Main Data Source**, select the same data source as in the ETIM site or a different one as desired.
* For **Additional Data Source**, reuse the link of the file exported with the ETIM export. See [see the relevant section](#N1674221449411).
See [Add the main data source](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-a-main-data-source-to-import-your-products#section-idm232212413817044) and [Add an additional data source](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources#section-idm232212551628982) to learn how to add data sources.
Select the cogwheel icon (**⚙**) next to the additional data source.
Go to the **Advanced Settings** tab and select **I/O Settings**.
Select **Add** next to **Transform XML with XSLT**.
Use the following XSLT code and adjust it for your setup to check if the desired output works fine. You can copy one item from the current XML and run the transformation at any online converter, such as [XSL Transformer](https://www.freeformatter.com/xsl-transformer.html). If there are any issues, you can fix the XSLT code and apply it to the remaining items. Then, enter your code in the **XSL Template** field.
```
-
-
-
```
Select **Save**.
Go to the **Overview** tab and scroll to the **Content Options** section.
Select **XML Settings** from the left-hand side menu and enter `1` in **Bundle repeating nodes**. Enter `<###>` in **Bundle delimiter** and select **Save all settings**.
Bundling lets you pass the ETIM information to BMEcat without creating an attribute in Dataflow for every feature. Now you have four (4) new columns in the import stage:
* `FNAME` is a feature name.
* `FVALUE` is a feature value.
* `FUNIT` is a feature unit of measure.
* `FVALUE_DETAILS` is feature value details.
Add and set up the BMEcat 2005 export [#add-and-set-up-the-bmecat-2005-export]
Create a BMEcat site and add a necessary version of the BMEcat export.
Go to **Exports** from your BMEcat site's main menu and select **ADD EXPORT**.
Search for a necessary BMEcat 2005 export, hover over it, and select **Add**. The platform redirects you to *Exports*.
In **Overview**, select the name of the added export in the **Export name** column.
Select the pen icon at the top of the page and give your export a custom name as desired.
Select **Add Destination** and choose *Productsup Server* from the **Destination** drop-down menu. Give it a name as desired and select **Save**.
You can also choose to send your data to MS SharePoint. In this case, select and set up the destination **MS SharePoint for XML**. See [Send your data to Microsoft SharePoint](/docs/help-center/export-data-feeds/special-export-setups/send-your-data-to-microsoft-sharepoint) to learn how to set it up.
Go to the *Settings* tab and toggle **Export as XML** to **ON**.
Enter the BMEcat header information into the fields shown in the following screenshot. These fields correspond to the `HEADER` section of your XML file.
|
|
|
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
The BMEcat header doesn't contain and send product descriptions. It only sends information about the identification and validity of the catalog, catalog creator, and receiver.The BMEcat header contains default values, such as language and currency, applied to all products.
Toggle **XSD Validation** to **yes** to activate the validation analysis that appears in the *Notification* panel during the export.
Select **Save**.
Add and set up the BMEcat 1.2 export [#add-and-set-up-the-bmecat-12-export]
If your partner system requires data in the BMEcat 1.2 format, you can add and configure the BMEcat 1.2 export in Exports. BMEcat 1.2 accepts values in plain language and doesn't require converting data to ETIM or another classification standard.
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for the BMEcat 1.2 export, hover over it, and select **Add**.
In **Overview**, select the name of the added export in the **Export name** column.
Select the pen icon at the top of the page and give your export a custom name as desired.
Select **Add Destination** and choose *Productsup Server* from the **Destination** drop-down menu. Give it a custom name as desired and select **Save**.
You can also choose to send your data to MS SharePoint. In this case, select and set up the destination **MS SharePoint for XML**. See [Send your data to Microsoft SharePoint](/docs/help-center/export-data-feeds/special-export-setups/send-your-data-to-microsoft-sharepoint) to learn how to set it up.
Go to the *Settings* tab and toggle **Export as XML** to **ON**.
Enter the BMEcat header information in the fields shown in the following screenshot.
|
|
|
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
Select **Save**.
Map the BMEcat attributes in Dataflow [#map-the-bmecat-attributes-in-dataflow]
To continue the BMEcat setup in Dataflow, you should map the attributes between import and export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.
Remember that only structural elements containing values appear in the export stage of the BMEcat 2005 exports.
As shown in the following screenshot, the export stage contains the higher-level elements that store values under the main element `PRODUCT`. The `SUPPLIER_PID` element appears in the export stage because it carries a value. In contrast, the `PRODUCT_DETAILS` element doesn't appear in the export stage because it is a structural element and stores no values. Lower-level elements under `PRODUCT_DETAILS`, such as `DESCRIPTION_SHORT` and `DESCRIPTION_LONG`, appear in the export stage because these elements also store a value.
You can see all the possible BMEcat 2005 attributes in the export stage. You mustn't create any additional attributes for the export manually, as the platform doesn't add them to the final BMEcat 2005 file. If you don't see an attribute you need, contact your Customer Success Manager or support at [support@productsup.com](mailto:support@productsup.com).
Optimize your indexed attributes in the data feed for the BMEcat 2005 export [#optimize-your-indexed-attributes-in-the-data-feed-for-the-bmecat-2005-export]
Some attributes can appear more than once in the file, for example, product descriptions in several languages for an item. You can refer to these attributes as indexed attributes. Some of the indexed attributes consist of several sub-attributes. All attributes have an index number counted by the platform that states the relationship between these sub-attributes.
For example, each FNAME value corresponds to the FVALUE value according to their position in the line: `EF001622` to `EV000138`, `EF010804` to `EV000899`, and so on.
| FNAME | FVALUE |
| -------------------------------------------------- | -------------------------------------------------- |
| EF001622\<###>EF010804\<###>EF000060\<###>EF011789 | EV000138\<###>EV000899\<###>EV000154\<###>EV004200 |
To escape creating an individual column for every indexed attribute, you can add several indexed attributes separated by the delimiter `<###>` within a field. For example, if an attribute has short descriptions in German, French, and Italian, you must populate the three (3) sub-attributes as follows:
* `DESCRIPTION_SHORT@default-lang`: *deu*
* `DESCRIPTION_SHORT@lang`: *deu\<###>fra\<###>ita*
* `DESCRIPTION_SHORT`: *Hochwertiges Werkzeug\<###>High quality tool\<###>Outil de haute qualité*
If one of the sub-attributes is missing for an indexed attribute, you must use an empty value such as *first-value\<###>\<###>third-value*. Skipping it leads to inconsistencies within the output file.
The following table lists the indexed attributes for BMEcat 2005 exports and their sub-attributes:
| Attribute name | Sub-attribute name |
| -------------------------------------------------- | -------------------------------------- |
| Description Short | `DESCRIPTION_SHORT@lang` |
| `DESCRIPTION_SHORT` | |
| `DESCRIPTION_SHORT@default-lang` | |
| Description Long | `DESCRIPTION_LONG@lang` |
| `DESCRIPTION_LONG` | |
| Product Details | `KEYWORD` |
| `KEYWORD@lang` | |
| `REMARKS` | |
| Product Feature | `FNAME` |
| `FVALUE` | |
| `FUNIT` | |
| `FVALUE_DETAILS` | |
| Price | `PRICE@price_type` |
| `PRICE_AMOUNT` | |
| `PRICE_CURRENCY` | |
| `TAX` | |
| `LOWER_BOUND` | |
| MIME | `MIME_TYPE` |
| `MIME_SOURCE` | |
| `MIME_DESCR` | |
| `MIME_PURPOSE` | |
| MIME | `UDX.EDXF.MIME_SOURCE` |
| `UDX.EDXF.MIME_CODEx` | |
| `UDX.EDXF.MIME_FILENAME` | |
| `UDX.EDXF.MIME_DESIGNATION` | |
| `UDX.EDXF.MIME_ALT` | |
| `UDX.EDXF.MIME_ISSUE_DATE` | |
| `UDX.EDXF.MIME_EXPIRY_DATE` | |
| Description Very Short | `UDX.EDXF.DESCRIPTION_VERY_SHORT@lang` |
| `UDX.EDXF.DESCRIPTION_VERY_SHORT` | |
| Packing Unit | `UDX.EDXF.GTIN` |
| `UDX.EDXF.GS1_128` | |
| `UDX.EDXF.QUANTITY_MIN` | |
| `UDX.EDXF.QUANTITY_MAX` | |
| `UDX.EDXF.PACKING_UNIT_CODE` | |
| `UDX.EDXF.PACKING_UNIT_NAME` | |
| `UDX.EDXF.PACKAGE_BREAK` | |
| `UDX.EDXF.PACKING_PARTS` | |
| `UDX.EDXF.VOLUME` | |
| `UDX.EDXF.WEIGHT` | |
| `UDX.EDXF.LENGTH` | |
| `UDX.EDXF.WIDTH` | |
| `UDX.EDXF.DEPTH` | |
| `UDX.EDXF.DIAMETER` | |
| Product Characteristic | `UDX.EDXF.PRODUCT_CHARACTERISTIC_CODE` |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_NAME` | |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_VALUE_NUMERIC` | |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_VALUE_STRING` | |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_VALUE_BOOLEAN` | |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_VALUE_RANGE_FROM` | |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_VALUE_RANGE_TO` | |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_VALUE_SET` | |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_VALUE_SELECT` | |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_VALUE_UNIT_CODE` | |
| `UDX.EDXF.PRODUCT_CHARACTERISTIC_REFERENCE_GTIN` | |
When using the ETIM export, the XSLT code from step [7](#N1674828755971) takes care of `Product Features` and requires no additional manual adjustments.
To optimize the attributes of your product catalog in Dataflow:
Go to **Dataflow** from your site's main menu.
Map all the attributes you want to add to your BMEcat from import to export.
Go to **Data View** to review the data and, if required, add rule boxes to optimize your values. See [Add a rule box](/docs/help-center/add-a-rule-box) and [Find the needed rule box category](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category) for more information.
Using multiple Article Features in BMEcat 1.2 [#using-multiple-article-features-in-bmecat-12]
BMEcat 1.2 only uses `Article Features` as an indexed attribute. `Article Feature` corresponds to `Product Feature` in BMEcat 2005.
If you have only one (1) Article Feature, you can use single Article Feature attributes and map them in Dataflow:
* `REFERENCE_FEATURE_SYSTEM_NAME`
* `REFERENCE_FEATURE_GROUP_ID`
* `FNAME`
* `FVALUE`
* `FUNIT`
* `FORDER`
* `FDESCR`
* `FVALUE_DETAILS`
To use the multiple Article Features, add custom attributes in Dataflow and connect them from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export#section-idm4605326417364832706742715884) to learn how to do it.
If you have single and multiple Article Features, disconnect single Article Features in Dataflow to prevent system conflicts.
Each Article Features attribute should have the number in the attribute name, such as `ARTICLE_FEATURES/1/{FEATURE_NAME}`. For example:
`ARTICLE_FEATURES/1/REFERENCE_FEATURE_SYSTEM_NAME`: `Name`
`ARTICLE_FEATURES/1/REFERENCE_FEATURE_GROUP_ID`: `12345`
`ARTICLE_FEATURES/1/FNAME`: `NameA<###>NameB<###>NameC`
`ARTICLE_FEATURES/1/FVALUE`: `1<###>2<###>3`
`ARTICLE_FEATURES/1/FORDER`: `1`
`ARTICLE_FEATURES/1/FDESCR`: `ArticleDetails`
`ARTICLE_FEATURES/1/FUNIT`: `mm<###>mm<###>mm`
`ARTICLE_FEATURES/2/REFERENCE_FEATURE_SYSTEM_NAME`: `Name`
`ARTICLE_FEATURES/2/REFERENCE_FEATURE_GROUP_ID`: `12345`
`ARTICLE_FEATURES/2/FNAME`: `NameD<###>NameF<###>NameG`
`ARTICLE_FEATURES/2/FVALUE`: `1<###>2<###>3`
`ARTICLE_FEATURES/2/FORDER`: `2`
`ARTICLE_FEATURES/2/FDESCR`: `ArticleDetails`
`ARTICLE_FEATURES/2/FUNIT`: `mm<###>mm<###>mm`
All Article Features under the same number belong to each other. You can add as many custom attributes as needed. You can add multiple values to the same attribute field, separating the values by the delimiter `<###>`.
Depending on your data, you can use many ways to add values to the same field in Dataflow or Data View. For example, you can use the **Append/Prepend Column** rule box in Data View. To add a delimiter, select **Text Before** in the drop-down menu and enter `<###>` in the field next to it. See [Add static or dynamic values](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/add-static-or-dynamic-values#section-idm243451110290446).
# Set up order sync for Amazon
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Amazon provides sellers with access to the vast customer base on their marketplace, which helps sellers increase online visibility and drive more sales. Productsup lets you synchronize orders between Amazon and your order management, shop, or ERP system. Productsup offers the following order-sync ecosystem to achieve this goal:
* The data source *Amazon Selling Partner API – Orders* lets Productsup import your orders from a selected Amazon Seller Central account.
* The API-based export *Amazon Marketplace Shipment Update (SP-API)* lets you update orders on Amazon using information stored in your ERP, order management, or shop system, for example, order tracking IDs and carrier information. This way, you can notify your clients about the progress of processing and shipping their orders.
The order data that Productsup imports from Amazon includes Personally Identifiable Information (PII), such as clients' surnames, addresses, phone numbers, etc. To comply with the [Amazon Data Protection Policy](https://sellercentral-europe.amazon.com/mws/static/policy?documentType=DPP\&locale=en_GB) regarding PII, Productsup has the following measures in place:
* The platform retains the order data featuring PII for 30 days.
* The platform obscures the values featuring PII and displays them in Dataflow and Data View as follows:
When you export order data with PII to your desired system, Productsup sends values without obscuring them. The PII order data is fully visible and readable in your target system.
Prerequisites [#prerequisites]
To use the Amazon order sync ecosystem in Productsup, you need to:
. Be a partner in the Amazon Merchant Fulfilled Network, which is Amazon’s terminology for Fulfilled by Merchant.The Amazon order sync ecosystem in Productsup is available only for the Amazon Merchant Fulfilled Network partners who manage storage, shipping, and customer support independently from Amazon.
. Have the Order Sync feature activated in your organization.The Amazon order sync ecosystem is an additional feature of the Productsup platform. Reach out to your Customer Success Manager to activate it.
Import order data from Amazon [#import-order-data-from-amazon]
To get your Amazon order data to your ERP, order management, or shop system, you need first to import your Amazon order data into your Productsup site:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Amazon Selling Partner API – Orders* and select **Add**. Give it a custom name as desired and select **Continue**.
Choose the market of interest in **Marketplace ID**.
Select what orders to import depending on the date of creation or last update:
* **Orders Created After** or
* **Order last updated after**.
You can't leave both fields empty and can't set both parameters at the same time. You must set either *Orders Created After* or *Order last updated after*.If you need to set both parameters to function as OR behavior, you must create two main data sources in the same site. In one data source you set *Order Create After* and in another, *Order last updated after*.
Activate **Import Address** to import address details for business orders.
To import only the orders with specific statuses, select the needed statuses in **Import Only Statuses**.
Hold the *Ctrl* or *Cmd* key to select multiple order statuses or hold *Shift* to select a range of statuses.
Optionally, activate **Import customized data** to extract JSON data from zip files linked in the **item\_BuyerInfoBuyerCustomizedInfoCustomizedURL** attribute and display it in a new **Customizable data** attribute without importing any images from the zip.
In **Authentication**, choose the Amazon authentication you previously set up in your organization, project, or site. If you haven't set up Amazon authentication yet, perform the following steps:
1. Select **Add New Authentication**.
2. Select *Amazon Authentication (BETA version by Amazon)* in **Type**. You can optionally give your authentication a name.
3. Select **Next**.
4. If applicable, select **Region** and **Country** to choose your marketplace country and locale.
5. Select **Connect**.
Before proceeding, Productsup redirects you to Amazon to finalize your authentication. After completing the authentication setup, Amazon redirects you back to Productsup.
6. Close the confirmation window to proceed.
Optionally, enter a custom description for the data source in **Description (optional)**. The new name of the data source will change in the Data Sources overview page.
Select **Save**.
Select **Run** in the top-right corner of your view to let the site import your order data from Amazon.
Once you set up the data source *Amazon Selling Partner API – Orders*, you can go to **Exports** to add and set up an export and send your order data to the target channel, such as your ERP, order management, or shop system. Before running your export, you must map the mandatory attributes in Dataflow.
Export shipment updates to Amazon [#export-shipment-updates-to-amazon]
To update your orders on Amazon with information stored in your ERP, order management, or shop system, do the following:
Take the steps to import your Amazon order data into Productsup and your desired target system. See [Import order data from Amazon](#N1692029161522).
Create a new site in your Productsup organization. This site has to be separate from the site that imports your order data from Amazon.
Go to **Data Sources** from the main menu of the newly created site and select **ADD DATA SOURCE** to add and set up your ERP, order management, or shop system as a data source. When done, select **Run** in the top-right corner of your view to run the site and let the platform import your shipment data into Productsup.
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Amazon Marketplace Shipment Update (SP-API)*, hover over it, and select **Add**.
Select **Add Destination**, choose *Amazon Selling Partner API - Shipment update* from the drop-down list, give it a name as desired, and then select **Save**.
In **Authentication**, choose the Amazon authentication method you previously set up in your organization, project, or site.
Choose the market of interest in **Marketplace ID**.
Toggle the **Feedback Import** button to *Off* if you don't want the platform to receive feedback files from Amazon.This feature is active by default to let Productsup receive a feedback file from the Amazon Selling Partner API in case of errors. This helps to troubleshoot the export setup.
If you want the platform to receive feedback files from Amazon, leave the **Feedback Import** button *On*.Optionally, you can change the connection attributes that let you add the export feedback to your site:
In **Feedback file connection column**, give a custom name to the attribute that should contain the export feedback and appear as an additional attribute in Dataflow or Data View\.By default, the attribute's name is **\_\_\_amazon\_item\_id**.
In the drop-down menu **Main feed connection column**, choose the attribute corresponding to your unique order identifier. For example, it can be `AmazonOrderID` or any other attribute containing this data if your internal system uses a different attribute name for it.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** and select **Amazon Marketplace Shipment Update (SP-API)** in the drop-down menu on the left to map all relevant attributes from import to export.
Once your data is ready for export, select **Run** in the top-right corner of your view to send shipment updates to Amazon.
The export *Amazon Marketplace Shipment Update (SP-API)* has the following attributes at the export stage in Dataflow and Data View:
| Attribute | Mandatory or not | Meaning and expected values |
| ----------------------------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **AmazonOrderID** | Mandatory | Your order ID as expected by Amazon. |
| **MerchantOrderID** | Mandatory | Your order ID as specified in your internal systems. |
| **FulfillmentData.ShippingMethod** | Mandatory | The shipment method used to deliver the order. |
| **FulfillmentDate** | Mandatory | The expected shipment date for the order. |
| **FulfillmentData.CarrierCode** | Mandatory | The code of the carrier company that delivers the order. For example, `DPD`, `DHL`, `AMZL_UK`, `AT POST`, or `ParcelOne`.See [Accepted CarrierCode values](https://images-na.ssl-images-amazon.com/images/G/01/rainier/help/xsd/release_1_9/amzn-base._TTH_.xsd) for more carrier codes. |
| **FulfillmentData.CarrierName** | Mandatory in some cases | The name of the carrier company that delivers the order. This field is mandatory only if your carrier company isn't on the list of carrier codes accepted by Amazon, so you provide the value `Other` in `FulfillmentData.CarrierCode`. |
| **MerchantFulfillmentID** | Optional | The ID of the shipment as specified in your internal systems. |
| **FulfillmentData.ShipperTrackingNumber** | Optional | The shipment tracking number that helps the buyer track the delivery progress. |
| **Item.AmazonOrderItemCode** | Optional | The code of the ordered item as assigned by Amazon. |
| **Item.MerchantOrderItemID** | Optional | The ID of the ordered item as specified in your internal systems. |
| **Item.MerchantFulfillmentItemID** | Optional | The unique identifier for the shipment of the ordered item as specified in your internal systems. |
| **Item.Quantity** | Optional | The number of shipped items if you send the ordered items as multiple separate deliveries. |
# Add the Image Exporter export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The Image Exporter lets you send the images from your data to Amazon S3, Microsoft Azure Blob Storage, or an FTP or SFTP server. You can export them as individual image files or as a *.zip* file.
The Image Exporter can send only image updates to your destination called deltas or the entire data catalog:
* Use the **Image Exporter** export to send only delta files, which means images with new and modified data. If you delete an image from your feed, the export doesn't remove it from the destination. However, if you add a new image to your feed with the same filename as the deleted image used to have, the Image Exporter overwrites the old deleted image in your destination with the new one.
* Use the **Image Exporter (no delta)** export to send the entire data catalog.
Prerequisites [#prerequisites]
To set up the *Image Exporter* or *Image Exporter (no delta)* export, you need to have the credentials of your desired destination:
* To upload your images to Amazon S3, log in or create an Amazon Web Service (AWS) account. See [AWS](https://portal.aws.amazon.com/billing/signup#/start).
* To upload your images to Azure Blob Storage, log in or create a Microsoft Azure account. See [Azure](https://azure.microsoft.com/).
* To upload images to your Microsoft SharePoint, log in or create a Microsoft Azure account. See [Sign in to SharePoint](https://support.microsoft.com/en-us/office/sign-in-to-sharepoint-324a89ec-e77b-4475-b64a-13a0c14c45ec#from_m365_homepage).
* To upload your images to an FTP or SFTP, provide FTP or SFTP credentials that allow write access.
Add Image Exporter export [#add-image-exporter-export]
In the site dedicated to sending your product images to a specific destination, add and set up the *Image Exporter* or *Image Exporter (no delta)* export:
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Image Exporter* or *Image Exporter (no delta)*, hover over it, and select **Add**. Select **Add** again to confirm your selection.
On the *Exports* page, select the name of the added export to set it up.
Select **Add Destination** and choose a needed destination from dropdown. Depending on the destination where you want to export your images, take the steps from one of the following sections.
Set up Image Exporter (AWS S3) destination [#set-up-image-exporter-aws-s3-destination]
Select **Add Destination**, choose *Image Exporter (AWS S3)*, give it a name, and then select **Save**.
Enter your AWS credentials in **Access Key ID** and **Secret Access Key**, then choose your S3 location in **Region**.
Enter the bucket name for your image uploads in **Bucket** and define the image path in **Base Path**.
In **Concurrency**, enter the number of images the export should simultaneously download and send to your server. If you have over 1,000 items, set your concurrency between 10 and 20 for the best results.
In **Download Progress Notification Interval**, enter the number of images the platform should send to the server before notifying you of the export's progress.
If you want to send your images to the server in a *.zip* file, give that file a desired name in **Zipfile (optional)**.The platform uses the input you provide in this field and adds `_0001` as a postfix and the .zip file extension. For example, the full name of your exported file can be *name-example\_0001.zip*.
If you provide a desired name for your *.zip* file in **Zipfile (optional)**, you can also use the **Zip Size Limit** field to specify your maximum file size in bytes.If the size of the *.zip* file with all your exported images exceeds this limit, the destination sends the images to the server in multiple *.zip* files. The names of each *.zip* file will get a unique postfix in the end. For example, if the platform splits all your images into three (3) files, their names can be *name-example\_0001.zip*, *name-example\_0002.zip*, and *name-example\_0003.zip*.
If you enter `0` in this field, the destination sends all images to one *.zip* file on your server without restricting its size or amending its name with a postfix.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Next, you need to map your attributes. See [Map your attributes for Image Exporter in Dataflow](#section-idm234727034457193).
Set up Image Exporter (Microsoft Azure) destination [#set-up-image-exporter-microsoft-azure-destination]
Select **Add Destination**, choose *Image Exporter (Microsoft Azure)*, give it a name, and then select **Save**.
Select the authentication type:
* If your authentication type is Access Key, enter your Microsoft Azure credentials in **Account Name** and **Access Key**.
* If your authentication type is SAS Token, enter your Microsoft Azure credentials in **SAS Token** and **SAS Blob Endpoint**.
Enter the container name for your image uploads in **Blob Container** and define the image path in **Base Path**.
In **Concurrency**, enter the number of images the export should simultaneously download and send to your server. If you have over 1,000 items, set your concurrency between 10 and 20 for the best results.
In **Download Progress Notification Interval**, enter the number of images the platform should send to the server before notifying you of the export's progress.
If you want to send your images to the server in a *.zip* file, give that file a desired name in **Zipfile (optional)**.The platform uses the input you provide in this field and adds `_0001` as a postfix and the .zip file extension. For example, the full name of your exported file can be *name-example\_0001.zip*.
If you provide a desired name for your *.zip* file in **Zipfile (optional)**, you can also use the **Zip Size Limit** field to specify your maximum file size in bytes.If the size of the *.zip* file with all your exported images exceeds this limit, the destination sends the images to the server in multiple *.zip* files. The names of each *.zip* file will get a unique postfix in the end. For example, if the platform splits all your images into three (3) files, their names can be *name-example\_0001.zip*, *name-example\_0002.zip*, and *name-example\_0003.zip*.
If you enter `0` in this field, the destination sends all images to one *.zip* file on your server without restricting its size or amending its name with a postfix.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Next, you need to map your attributes. See [Map your attributes for Image Exporter in Dataflow](#section-idm234727034457193).
Set up Image Exporter (Microsoft SharePoint) destination [#set-up-image-exporter-microsoft-sharepoint-destination]
Select **Add Destination**, choose *Image Exporter (Microsoft SharePoint)*, give it a name, and then select **Save**.
Enter your MS SharePoint credentials in **Client ID** and **Client Secret**.
Enter your MS SharePoint tenant ID in **Tenant ID**.
Add the file's location URL in **Upload File Url**. This URL should lead to the root folder of your Sharepoint, such as `https://company-name.sharepoint.com/Shared Documents`.
If you need to upload images to a subfolder inside the root folder, enter the path to the needed subfolder in **Upload Directory**. For example, `/Images/PUP`.Together with the input in [see the relevant section](#N1747318390595), it means that the platform goes to the specified root folder and then uses the path provided in this field to find the folder where it uploads your images.
In **Concurrency**, enter the number of images the export should simultaneously download and send to your SharePoint folder. For best results, set your concurrency between 10-20 if you have more than 1,000 items.
In **Download Progress Notification Interval**, enter the number of images the platform should send to SharePoint before notifying you of the export's progress.
If you want to send your images to SharePoint in a *.zip* file, give that file a desired name in **Zipfile (optional)**.The platform uses your input in this field and adds `_0001` as a postfix and the .zip file extension. For example, the full name of your exported file can be *name-example\_0001.zip*.
If you provide a desired name for your *.zip* file in **Zipfile (optional)**, you can also use the **Zip Size Limit** field to specify your maximum file size in bytes.If the size of the *.zip* file with all your exported images exceeds this limit, the destination sends the images to SharePoint in multiple *.zip* files. The names of each *.zip* file will get a unique postfix in the end. For example, if the platform splits all your images into three (3) files, their names can be *name-example\_0001.zip*, *name-example\_0002.zip*, and *name-example\_0003.zip*.
If you enter `0` in this field, the destination sends all images to one *.zip* file on your server without restricting its size or amending its name with a postfix.
Activate **Skip feature** if you want to continue downloading and uploading images even in case of a failure.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Next, you need to map your attributes. See [Map your attributes for Image Exporter in Dataflow](#section-idm234727034457193).
Set up Image Exporter (FTP or SFTP) destination [#set-up-image-exporter-ftp-or-sftp-destination]
Select **Add Destination**, choose *Image Exporter (FTP or SFTP)*, give it a name, and then select **Save**.
Enter your FTP server address in **FTP Hostname**. Then, enter the credentials in **FTP Username** and **FTP Password**.
Define the image path in **Base Path**.
In **Concurrency**, enter the number of images the export should simultaneously download and send to your server. For best results, set your concurrency between 10-20 if you have more than 1,000 items.
In **Download Progress Notification Interval**, enter the number of images the platform should send to the server before notifying you of the export's progress.
If you want to send your images to the server in a *.zip* file, give that file a desired name in **Zipfile (optional)**.The platform uses the input you provide in this field and adds `_0001` as a postfix and the .zip file extension. For example, the full name of your exported file can be *name-example\_0001.zip*.
If you provide a desired name for your *.zip* file in **Zipfile (optional)**, you can also use the **Zip Size Limit** field to specify your maximum file size in bytes.If the size of the *.zip* file with all your exported images exceeds this limit, the destination sends the images to the server in multiple *.zip* files. The names of each *.zip* file will get a unique postfix in the end. For example, if the platform splits all your images into three (3) files, their names can be *name-example\_0001.zip*, *name-example\_0002.zip*, and *name-example\_0003.zip*.
If you enter `0` in this field, the destination sends all images to one *.zip* file on your server without restricting its size or amending its name with a postfix.
Toggle **Active** to *On* to activate the destination.
Select **Save**.
Next, you need to map your attributes. See [Map your attributes for Image Exporter in Dataflow](#section-idm234727034457193).
Map your attributes for Image Exporter in Dataflow [#map-your-attributes-for-image-exporter-in-dataflow]
To proceed, you must map your attributes in Dataflow from import to export.
Go to **Dataflow** from the site's main menu and choose the added export from the dropdown in the toolbar.
Map the attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.You can export several images per product. Each image needs a URL and a filename to save on the S3 bucket. The required attributes are:
* **id**: Your unique product ID is critical for sending delta updates.
* **img\_url\_\{ascending\_number}**: The image source URL.
* **img\_name\_\{ascending\_number}**: The image file name, including the file extension. You must add an image extension to each image file. For example, add `.jpg` to the image file `short_front` to produce `short_front.jpg`.You can use the *Append/Prepend Value* rule box. See [Add static or dynamic values](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/add-static-or-dynamic-values#section-idm243451095559490).
To prevent you from overwriting your images, ensure that you don't use duplicate image names within your data.
If you want to export only one image per product, go to **Dataflow** and map the **id**, **image\_name\_1**, and **image\_url\_1** attributes from the intermediate stage to the corresponding attributes in the export stage.If you have more than one image per product, go to **Dataflow** and map the **id** attribute and as many as needed attributes **image\_name\_\{ascending\_number}** and **image\_url\_\{ascending\_number}** from the intermediate stage to the attributes with the corresponding numbers in the export stage.
As you've mapped the attributes and set up a destination, select **Run** or **Export** in the top-right corner of your view.
# Set up order sync for Wayfair Marketplace
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The order integration with Wayfair Marketplace lets you import marketplace orders in Wayfair. You can also:
* Automatically update the stock level status of your marketplace accounts. This confirms that there’s a consistent stock status across all sales channels.
* Send acceptance and shipping notifications from Wayfair via Productsup to your marketplace channels. This feature informs your clients about an upcoming delivery.
This document guides you through importing your Wayfair marketplace account in the platform using the Wayfair Orders data source.
Set up Wayfair Orders import [#set-up-wayfair-orders-import]
Add *Wayfair Orders* as the main data source to import your orders directly from Wayfair Marketplace.
Choose **Data Sources** from the site’s main menu, then select **ADD DATA SOURCE**. Next, choose *Wayfair Orders* and select **Add**. Select **Add** again to confirm.
Select **Authentication** from the drop-down menu and choose *Wayfair Authentication*. Be certain that you use credentials suitable for the environment.
Select **Environment** and choose *Production* or *Sandbox*.
Enter your **Store URL**.
Enter the number of days from today to import orders in **Created in last days**.
Choose the orders for import in **Order filter**. Select *Open*, *Accepted*, or *All*. *OPEN* describes orders that are awaiting acceptance. *ACCEPTED* describes orders the platform accepted and has shipped. ALL describe both *OPEN* and *ACCEPTED*.
In **Description (optional)**, enter a description, and the platform displays it in the list of data sources instead of the *Source URL*.
Select **Save**.
To learn more about export channel settings, see [Add export](/docs/help-center/export-data-feeds/add-export).
Set up Wayfair Orders Acceptance Notifications export [#set-up-wayfair-orders-acceptance-notifications-export]
After successfully adding your data sources, add the *Wayfair Orders - Acceptance Notifications* export channel for order acceptance export updates.
Go to **Exports** in your site’s main menu and select **ADD EXPORT**. Next, select **Add** for the *Wayfair Orders - Acceptance Notifications* export.
In the **Destinations** section, select **Add Destination** and choose *Wayfair Orders - Accept API* from the drop-down list. Now, enter a destination **Name**.
Select **Authentication** from the drop-down menu and choose *Wayfair Authentication*. Be certain that you use credentials suitable for the environment.
* If you don’t see a Wayfair authentication in the drop-down list, add it by entering your Wayfair Marketplaces shop API credentials. Select **Add New Authentication**, choose *Wayfair Authentication*, and enter your Wayfair **Client ID** and **Client Secret**.
Select **Environment** and choose *Production* or *Sandbox*.
Switch **Feedback import** to **On** if you want an error file returned to the platform once your data export finishes. Go to step [8](#N1617405844997) if **Feedback import** is set to **Off**.
Enter a feedback file to report on in **Feedback file connection column**.
Connect the feedback file column to a main feed column in **Main feed connection column**.
Select **Active** to switch the destination to **On**.
Select **Save**.
The Wayfair Orders Acceptance Notifications export channel must include the following required columns in Dataflow to send an order acceptance:
* `poNumber`: Mandatory.
* `partNumber`: Mandatory, the platform does not accept orders without line-item details. The platform also includes the order during shipped notifications.
* `quantity`: It is mandatory to provide the quantity of accepted line-item partNumber on acceptance.
* `shipSpeed`.
* `estimatedShipDate`.
* `unitPrice`.
Set up Wayfair Orders Shipment Notifications (Small Shipments) export [#set-up-wayfair-orders-shipment-notifications-small-shipments-export]
After successfully adding your data sources, add the *Wayfair Orders - Shipment Notifications (Small Shipments)* export channel for ship notification export updates.
Go to **Exports** in your site’s main menu and select **ADD EXPORT**. Next, select **Add** for the *Wayfair Orders - Shipment Notifications (Small Shipments)* export.
In the **Destinations** section, select **Add Destination** and choose *Wayfair Orders - Shipment notifications API* from the drop-down list. Now, enter a destination **Name**.
Select **Authentication** from the drop-down menu and choose *Wayfair Authentication*. Be certain that you use credentials suitable for the environment.
* If you don’t see a Wayfair authentication in the drop-down list, add it by entering your Wayfair Marketplaces shop API credentials. Select **Add New Authentication**, choose *Wayfair Authentication*, and enter your Wayfair **Client ID** and **Client Secret**.
Select **Environment** and choose *Production* or *Sandbox*.
Switch **Feedback import** to **On** if you want an error file returned to the platform once your data export finishes. Go to step [8](#N1617405844997) if **Feedback import** is set to **Off**.
Enter a feedback file to report on in **Feedback file connection column**.
Connect the feedback file column to a main feed column in **Main feed connection column**.
Select **Active** to switch the destination to **On**.
Select **Save**.
Check the export run status by selecting the **Run log** icon in the top-right corner.
# Set up FabDis 3.0 exports
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
**FAB-DIS** (Fabrication Distribution) is a standard file format used by French manufacturers in the construction, parts, and tools industries to simplify and standardize product data exchange amongst their partner or distributor networks. See [FAB-DIS](https://fabdis.fr/en/) for more information.
The FAB-DIS file format is a complex XLSX file consisting of many datasheets or tabs. Each datasheet requires a specific format for data input. Productsup exports help you organize your data feeds in different datasheets and combine them into the final FAB-DIS file.
Productsup supports the FAB-DIS versions 2.3 and 3.0. This document describes the FabDis 3.0 exports and the way to set them up to generate the final FAB-DIS Excel sheet.
For FAB-DIS 3.0, you can add and set up the following exports that correspond to the datasheet in the FAB-DIS file:
| Export | Purpose | Mandatory or not |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| **FabDis 3.0 - B00\_Cartouche** | Identifies the issuer, FAB-DIS version, and the referencing data parameters. | Mandatory |
| **FabDis 3.0 - B01\_Commerce** | Enables the commercial transaction by efficiently feeding the distributors' ERP. This is a head block for **B02\_Logistique**, **B03\_Media**, **B04\_Reglementaire**, **C01\_Extension**, **C02 - CORRESPONDANCE**, **C03\_VARIANTE**, and **C04 - ETIM**. | Mandatory |
| **FabDis 3.0 - B02\_Logistique** | Optimizes logistics management, deals with the cases of items multiple-packing, and shares net product dimensions. | Mandatory |
| **FabDis 3.0 - B03\_Media** | Enhances the offers in all multi-channel media, including web, print, ERP, and applications. | Mandatory |
| **FabDis 3.0 - B04\_Reglementaire** | Certifies that the products comply with the regulations that have an immediate impact on the company's marketing and the legal liability of the participants. | Conditional |
| **FabDis 3.0 - C01\_Extension** | The extension for **B01\_Commerce** and **B02\_Logistique** for occasionally used attributes. It provides high flexibility for adding new attributes without changing the structure in **B01\_Commerce** and **B02\_Logistique**. It also suggests a predefined structure for specific data between a manufacturer and distributor. | Conditional |
| **FabDis 3.0 - C02 - CORRESPONDANCE** | Enhances the offers on the e-commerce websites or ERP. It also generates upsells by suggesting products to customers and guiding customers through the website, finds the solution to the availability issue, offers spare parts for product repair and maintenance, and optimizes order processing and inventory management. | Conditional |
| **FabDis 3.0 - C03\_VARIANTE** | Simplifies access to the product variants on the web and facilitates a compact paper version of variants. | Conditional |
| **FabDis 3.0 - C04 - ETIM** | Enhances the product attributes with the technical information of the ETIM standard integrated into FAB-DIS. | Conditional |
| **FabDis 3.0 - C05\_ARRET** | Confirms the end date of marketing and meets the requirement for the availability of spare parts after this date. This is a stop block. | Conditional |
| **FabDis 3.0 - C06\_SUBSTITUTION** | Identifies the current or the most relevant product or offer that replaces the old one, corresponding to a substitution level or a maintenance activity. | Conditional |
| **FabDis 3.0 - F01\_PYRAMIDE** | Represents the pyramid of the manufacturer's marketing nomenclature. It organizes the offers expressions and the structure of sales statistics. | Optional |
To use the FabDis exports, you need to have the *Distribution PX Module* in your contract. Contact your Customer Success Manager to add it to your contract.
Decide how to set up the FabDis 3.0 Excel sheet file [#decide-how-to-set-up-the-fabdis-30-excel-sheet-file]
Depending on your data sources and aims, there can be different ways to set up the FabDis export. If your data needs optimization such as cleaning and formatting, you can do it in the pre-processing sites first and then set up the FabDis exports with one of the following methods:
. You can create separate sites for all the necessary FAB-DIS tabs that you need for generating the final Excel file. See [Set up FabDis 2.3 exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-fabdis-2-3-exports) to learn how to set up FAB-DIS with the method.
. You can create one site for all FAB-DIS tabs and export the pre-processed data into CSV files to use them as data sources for the final FAB-DIS export file. In this document, we describe this method.
You may also need to convert your raw data into ETIM classes and use it as a data source. See [Set up ETIM Classes exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-etim-classes-exports).
Import, optimize, and map your data for FAB-DIS [#import-optimize-and-map-your-data-for-fab-dis]
If you choose to set up all the FabDis exports, except for the final file, in one site, use the following approach.
Prerequisites [#prerequisites]
Create a separate site for all FabDis exports that correspond to the necessary FAB-DIS datasheets in the final FAB-DIS file.
Import your data feed in **Data Sources**.
Add and set up the necessary FabDis exports [#add-and-set-up-the-necessary-fabdis-exports]
Add your data in **Data Sources**.
Go to **Exports** from your site's main menu and select **ADD EXPORT**. Search for a needed FabDis export, for example, *FabDis 3.0 - B03\_Media*, and select **Add**
Optionally, give your export a custom name in **Name**. The custom name replaces the export's name on the *Overview* page. Then select **Add**.
Select **Add Destination** and choose your destination, for example, *Productsup Server*. Optionally, give this destination a custom name in **Name**. Select **Save**.
Go back to the *Exports Overview* page. Add and set up other exports one by one repeating these steps for each export.
Go to **Dataflow** from your site's main menu. Select an export from the channel selection drop-down menu in the upper ribbon and map the attributes from import to export. Repeat this for each added FabDis export.
Select **Run**.
After the export run, you can see that `pdsfeed.csv` appears in the Filename section of each export's overview. Copy the file's URL to use it as a data source for the final FabDis file.
Generate the final FAB-DIS file [#generate-the-final-fab-dis-file]
Now you can use the generated CSV files from all the exports set up in the first site as data sources for the final FAB-DIS Macro Excel File.
Prerequisites [#prerequisites-1]
Create a separate site for the final FabDis export.
Go to **Data Sources** and select **Feed URL** to upload all CSV files generated by the first site's exports as main data sources.
Add a column name for each data source:
Go to **Data Sources** from your first site’s main menu.
Select the cog wheel (**⚙**) icon next to a data source.
Scroll down to **Content Options** and select **Add/Filter columns**.
In **Column name**, enter the name of the column, for example, `sheet_name`, and, in **Value**, add the name of the data source which should be exactly the same name as your sheet name in the placeholder file, for example, `02_LOGISTIQUE`.
Repeat the procedure for each data source.
Create a placeholder template. See [Use an item setup sheet](/docs/help-center/export-data-feeds/special-export-setups/use-an-item-setup-sheet#section-idm4563031856436832998590109533) to do it manually or contact \[[support@productsup.com](mailto:support@productsup.com)]\(mailto: [support@productsup.com](mailto:support@productsup.com)) to ask for the template *Fabdis\_v3.0\_placeholderfile.xlsx*.
Upload your placeholder template to an FTP of your choice.
Select **Import**.
Add and set up the final FabDis export [#add-and-set-up-the-final-fabdis-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**. Search for *Blank Export (empty)* and select **Add**.
Optionally, give your export a custom name in **Name**. The custom name replaces the export's name on the *Overview* page. Then select **Add**.
Select **Add Destination** and choose your destination, for example, *Excel Macro Files (.xlsm)*. Optionally, give this destination a custom name in **Name**. Select **Save**.
On the destination settings page, set up the destination:
In **Template file**, enter the URL of the file.
In **Template File FTP Username** and **Template File FTP Password** enter your FTP credentials to let the platform connect to the FTP server and download the file.
Leave **Factsheet** empty.
You need to add the Factsheet only when you need to generate a sheet for each product.
Leave **Populate By Columns** button *Off* as you've prepared data in the first site.
In **Sheet Name Column**, enter `sheet_name` which will populate the corresponding column dynamically. See the [Prerequisites](#section-idm353413381997374).
Switch **Active** to *On* to turn on the destination.
Select **Save**.
Go to the **Overview** tab of your export, scroll to the **Filename** section, and select the **Setup** button. In **Filename**, change the name of your output file. The extension of your file should be `.xlsx` or `.xlsm`.
Go to **Dataflow** from your site's main menu. Select your export from the channel selection drop-down menu in the upper ribbon and map the attributes from import to export.
The attributes in the import stage are the attributes from all CSV files uploaded as data sources. You can use automatic mapping, by selecting **Map ALL Import columns to Export** in the **Automap connections** drop-down menu.
Select **Export** or **Run**.
After the export run, you can see that Excel or a Macro Excel File appears in the **Filename** section of each export's overview and you can download it.
Go to **Scheduling** and set up triggers for the sites. See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling).
# Add ARGE and IG Neue Medien exports
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
ARGE and IG Neue Medien (IGNM) are the HVAC industry data standards used in Germany and Austria, respectively. They both require receiving multiple CSV files where each file is responsible for a specific type of data.
Both ARGE and IGNM use the same data quality guideline of the HVAC industry called DQR (Datenqualitätsrichtlinie). The latest DQR version is 9.0. See [Discover leading-edge advancements in ARGE DQR 9.0 for the HVAC industry](https://www.productsup.com/blog/2023-advancements-in-arge-hvac-industry/) to learn what has changed since version 8.0.
Productsup offers ARGE and IGNM exports to let you send your product data to these data pools.
This document provides general information about ARGE and IGNM exports in Productsup and offers some suggestions for the setup. You need to use the official DQR documentation to learn more about each required attribute and its specifics. See [ARGE Downloads (en)](https://www.arge.de/en/support/downloads-en/) for the latest version of the DQR documentation in English. See [IG Neue Medien Downloads](https://www.igneuemedien.at/downloads) for the German version of the DQR documentation.
Prerequisites [#prerequisites]
To use the needed ARGE or IGNM exports, you need:
. Relevant product data in your data sources.
. A project in your organization where you can add the needed sites. You should identify how many ARGE or IGNM exports you want to set up and create a site per each needed ARGE or IGNM export type.This is a recommended project structure. It helps to simplify attribute mapping and enables setting up preprocessing sites if necessary.
. A desired export destination, such as an FTP or SFTP server, where Productsup can send the output CSV files. See [Create an FTP server hosted by Productsup](/docs/help-center/get-started/create-and-manage-an-ftp-server/create-an-ftp-server-hosted-by-productsup) if you don't have a dedicated server account yet.
. Access to the [OXOMI](https://oxomi.com/) portal to upload the output CSV files that your Productsup sites generate for ARGE or IGNM.
Decide which exports you need [#decide-which-exports-you-need]
ARGE and IGNM accept multiple types of CSV files. Every CSV file type must have a specific structure. To produce the needed CSV files, Productsup offers one export per each file type accepted by ARGE and IGNM.
Only three (3) exports are mandatory for ARGE or IGNM to receive your product data successfully:
| Mandatory ARGE exports | Mandatory IGNM exports |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **IGNM / ARGE DQR 9.0 - Kopfdaten**The Kopfdaten export contains general information about your product catalog and the data delivery, such as your catalog ID, name, and data provider ID.**ARGE DQR 9.0 - Artikel**The Artikel export contains your full product catalog and stores general data about your products, such as product type, minimum order quantity, short product description, and price. The more information you send using this export, the higher the chances that you need to use additional ARGE exports.**IGNM / ARGE DQR 9.0 - Artikelattribute**The Artikelattribute export contains an extended list of product attributes and their values. You can use this export to send ETIM classification data, keywords, battery information, disposal instructions, hazardous goods details, etc. One of the mandatory attributes in this export is `Attributsystem`, where you need to state the system each attribute refers to, for example, *ETIM 9*, *ZVSHK*, *INDIV*, or *Gebühren*. | **IGNM / ARGE DQR 9.0 - Kopfdaten**The Kopfdaten export contains general information about your product catalog and the data delivery, such as your catalog ID, name, and data provider ID.**IGNM DQR 9.0 - Artikel**The Artikel export contains your full product catalog and stores general data about your products, such as product type, minimum order quantity, short product description, and price. The more information you send using this export, the higher the chances that you need to use additional IGNM exports.**IGNM / ARGE DQR 9.0 - Artikelattribute**The Artikelattribute export contains an extended list of product attributes and their values. You can use this export to send ETIM classification data, keywords, battery information, disposal instructions, hazardous goods details, etc. One of the mandatory attributes in this export is `Attributsystem`, where you need to state the system each attribute refers to, for example, *ETIM 9*, *ZVSHK*, *INDIV*, or *Gebühren*. |
If you want to send more product data to ARGE and IGNM, you can additionally use the following exports:
* **IGNM / ARGE DQR 9.0 - Artikeldokumentenzuordnungen**The Artikeldokumentenzuordnungen export contains images and documents for each product in your catalog. One product can have multiple images and documents assigned to it.
* **IGNM / ARGE DQR 9.0 - Langtexte**The Langtexte export contains texts that describe a collection of related products, such as products within the same series. Multiple products from the Artikel export can reuse the same shared description text from the Langtexte export. End customers can later see these texts in price quotes and invoices.The Langtexte export has three (3) attributes:
* `Langtextnummer` stores the ID of the shared description text. The Artikel export also uses this attribute, which ties each product to a specific shared description text from the Langtexte export.
* `Langtextzeile` stores the shared description text in chunks. ARGE and IGNM accept shared description texts in chunks of 40 characters. You can provide 99 chunks of text with the same `Langtextnummer` and values from *1* to *99* in `Langtextzeilennummer` to send your full shared description text.
* `Langtextzeilennummer` stores the number of each text chunk. ARGE and IGNM use this number to arrange the chunks of the same shared description text in the right order.
* **IGNM / ARGE DQR 9.0 - Dimensionstexte**The Dimensionstexte export contains texts that can describe each specific product individually. You can use this export to provide additional explanations about specific product attributes if the rest of the products in the same series don't share the same characteristics.Like the Langtexte export, the Dimensionstexte export uses the logic of splitting up the full description text into chunks of 40 characters.
* **IGNM / ARGE DQR 9.0 - Zusaetzliche\_Artikeltexte**The Zusaetzliche\_Artikeltexte export contains additional texts that comprehensively describe each product across all distribution levels. You can use this export to provide a short and long product summary, a marketing text, and an application note for your products.
* **IGNM / ARGE DQR 9.0 - Artikelmasse**The Artikelmasse export contains your products' netto weights, volumes, and dimensions. This information is useful for logistics purposes.
* **IGNM / ARGE DQR 9.0 - Artikelsets**The Artikelsets export contains sets of related products within your catalog. All products mentioned in this export should be present in the Artikel export and available to order separately.
* **IGNM / ARGE DQR 9.0 - Artikelzubehoer**The Artikelzubehoer export connects your main products with their accessories. All products and their accessories mentioned in this export should be present in the Artikel export.
* **IGNM / ARGE DQR 9.0 - Gruppen**The Gruppen export contains the groups your products belong to. Your organization can define the names and descriptions of the desired product groups in `Gruppennummer` and `Gruppenbezeichnung`. All defined product groups must belong to one of these group types:
* Commodity group, which requires the value *WG* in `Gruppenart`.
* Product group, which requires the value *PG* in `Gruppenart`.
* Bonus group, which requires the value *BG* in `Gruppenart`.
* Discount group, which requires the value *RG* in `Gruppenart`.
* **IGNM / ARGE DQR 9.0 - Gruppendokumentenzuordnungen**The Gruppendokumentenzuordnungen export contains images and documents for each product group. One product group can have multiple images and documents assigned to it.
* **IGNM / ARGE DQR 9.0 - Rohstoffe**The Rohstoffe export provides information about the raw materials used to produce each product. One product can have multiple raw materials assigned to it.
* **IGNM / ARGE DQR 9.0 - Linienpreise**The Linienpreise export provides more extensive information about your products' pricing.
* **IGNM / ARGE DQR 9.0 - Ersatzteillisten**The Ersatzteillisten export provides a list of spare parts for each product in your catalog. You can assign spare parts lists to both current and historical products in your catalog.
* **IGNM / ARGE DQR 9.0 - Historische\_Produkte**The Historische\_Produkte export contains a list of products that you no longer sell but whose spare parts are still available for order within your catalog.
* **IGNM / ARGE DQR 9.0 - Hp\_Dokumentenzuordnungen**The Hp\_Dokumentenzuordnungen export contains images and documents for each product you no longer sell. One historical product can have multiple images and documents assigned to it.
Set up ARGE and IGNM exports [#set-up-arge-and-ignm-exports]
Adding and setting up ARGE and IGNM exports is a technically advanced task. Reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com) if you need help.
Go to **Exports** from your site's main menu, and select **Add export**.
Search for *DQR 9.0*, hover over the needed export, and select **Add** to add it to your site.
Add only one ARGE or IGNM export type per site, such as **IGNM DQR 9.0 - Artikel**, to simplify attribute mapping and data optimization.
Go to **Dataflow** from the site's main menu and choose the added export from the drop-down menu in the top ribbon on the left to map its attributes from import to export.
Go to **Exports** and select the name of the needed export.
Select **Add Destination**, choose the desired option, and then select **Save**:
Use any FTP or SFTP server as your export destination.
Set up the chosen destination as needed and select **Save**.
To get your data ready across all sites with ARGE and IGNM exports, you may additionally need to:
* Use the official DQR documentation to see the requirements for your data and identify which rule boxes to apply to your attributes. See [ARGE Downloads (en)](https://www.arge.de/en/support/downloads-en/) and [Optimize your data in Data View with rule boxes](/docs/help-center/map-and-optimize-your-data/data-view/optimize-your-data-in-data-view-with-rule-boxes).
* Use the Analyzer feature to see if your attribute values meet the requirements. See [Analyze your data in Data View](/docs/help-center/map-and-optimize-your-data/data-view/analyze-your-data-in-data-view).
* Set up preprocessing sites to create ETIM classification data for your product attributes and values. See [Set up ETIM Classes exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-etim-classes-exports).
* Use the Image Exporter export to export all your images to one FTP or SFTP server. See [Add the Image Exporter export](/docs/help-center/export-data-feeds/special-export-setups/add-the-image-exporter-export).
Once all your data is ready, select **Run** in the top-right corner of your view to let the site generate your output CSV file.
# Send your offers to Mirakl-based marketplaces
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Mirakl is a French SaaS e-commerce company that provides software for businesses to let them launch, manage, and grow their own online marketplaces and dropshipping operations.
In Mirakl, there are products and offers:
* Products refer to product creation or updates. A product is a catalog item you sell that contains information such as item ID, title, brand, description, category, etc.
* Offers refer to inventory data, such as price, stock, shipping details, and seller-specific terms.
Productsup lets you send offers, shipment updates, and order data to Mirakl-based marketplaces, as well as import order data from Mirakl to Productsup.
Productsup offers the following exports to send data to the marketplace:
| Export name | Description |
| --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Mirakl Offers(previously *Mirakl Product Prices and Availabilities Export*) | A general export if you don't need to send the offers to a dedicated marketplace. This is an API-based export. |
| \ - \ (Offers via Mirakl) | Custom exports for each Mirakl marketplace per country and product category, for example, *Walmart Mexico - Food (Offers via Mirakl)* or *BestBuy Canada - Electronics (Offers via Mirakl)*. It is useful for cases when you send offers across multiple marketplaces, countries, and categories.
The exports' setup and functions are the same as for the Mirakl Offers export.This is an API-based export. |
| Mirakl Orders Acceptance & Rejection | Sending confirmation or rejection information for the orders to the marketplace.This is an API-based export. |
| Mirakl Shipment Notification | Sending your shipment updates to the marketplace.This is an API-based export. |
Productsup doesn't support an out-of-the-box export for product creation in Mirakl-based marketplaces. If you need an export for product creation for a specific marketplace, you must:
Generate and download an Excel file for product export in your Mirakl account. The file should contain the needed categories and language.
Send the ready template to your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com).
To import your order data from Mirakl, use the *Mirakl Order Import*. See [Import orders from Mirakl](/docs/help-center/import-data-feeds/import-data-from-third-party-external-systems/import-orders-from-mirakl).
Prerequisites [#prerequisites]
Before setting up your Mirakl exports, you must:
. Create an account on Mirakl if you don't have one.
. Have the host URL for your marketplace, such as `marketplace.mirakl.net`, the API key, and the shop IDs.
. Import your offers to Productsup as a main data source. See [Add a main data source to import your products](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-a-main-data-source-to-import-your-products).
Send your offers to Mirakl [#send-your-offers-to-mirakl]
To add and set up the *Mirakl Offers* export or a dedicated export *\ - \ (Offers via Mirakl)*:
Go to **Exports** from your site's main menu and select **Add export**.
Search for *Mirakl Offers* or an export dedicated to a specific marketplace, hover over it, and select **Add**.
On the **Exports** page, select the name of the added export to set it up.
Select **Add Destination** and choose *Mirakl* from the dropdown. Give it a name as desired, and select **Save**.
Enter the host and API key from your Mirakl account in the **Host** and **API key**.
Select an import mode in **Import Mode**. For most of the cases, leave the default *Normal*. Here is an explanation of the modes:
* *Normal* modifies (updates, deletes, or replaces) each offer based on the value of the **updatedelete** attribute in the export file:
1. The **updatedelete** attribute is set to `update` or is blank:
* If the **sku** attribute doesn't match any existing offer in the shop, the platform creates a new offer.
* If the **sku** attribute matches an existing offer in the shop, the platform updates the offer.
* The **product-id** and **product-id-type** attributes link an offer to a product.
2. The **updatedelete** attribute is set to `delete`:
* The platform deletes the offer.
* The platform uses only the **sku** attribute and ignores the others.
* If the offer doesn't exist, you get an error.
* *Partial update* only updates attributes containing data, not blank.
The **updatedelete** attribute can exist, but must be blank. If isn't blank, you get an error.
* *Replace* removes all existing offers that aren't present in the offer file and replaces them with those defined in the export file. It also updates all existing offers in the Productsup platform or export file.
The **updatedelete** attribute can exist, but must be blank. If it isn't blank, you get an error.
In **Shop**, enter the IDs of the shops you want to import orders from. You must separate them by commas (`,`).
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** from your site's main menu and select *Mirakl Offers* in the dropdown on the top left. Connect all the mandatory attributes from import to export.
Once your data is ready, select **Run** in the top-right corner of your page to send your offers to MIrakl.
Send your order acceptance or rejection to Mirakl [#send-your-order-acceptance-or-rejection-to-mirakl]
To accept or reject an order in the Mirakl marketplace, use the *Mirakl Orders Acceptance & Rejection* export. You can accept or reject only orders with the status WAITING\_ACCEPTANCE.
Go to **Exports** from your site's main menu and select **Add export**.
Search for *Mirakl Orders Acceptance & Rejection*, hover over it, and select **Add**.
On the **Exports** page, select the name of the added export to set it up.
Select **Add Destination** and choose *Mirakl Order Accept/Reject Export* from the dropdown. Give it a name as desired, and select **Save**.
Enter the marketplace URL in the **Mirakl api url**.
Enter the API key from your Mirakl account in **Mirakl api key**.
In **Shop id**, enter the IDs of the shops you want to import orders from. You must separate them by commas (`,`).
Leave **Feedback Import** on *On* if you want to receive a response directly from Mirakl in case of any export failures. The platform will store the feedback automatically as an additional data source in the form of a downloadable CSV file.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** from your site's main menu and select *Mirakl Orders Acceptance & Rejection* in the dropdown on the top left. Connect all the mandatory attributes from import to export:
* **accepted** – the order status. To accept an order line, set to `true`. To reject, set to `false`.
* **order\_id** – the order ID on Mirakl.
* **order\_line\_id** – the order line ID on Mirakl. An order line item represents an offer and its quantity in the customer’s shopping cart, so that an order can have multiple order lines for multiple offers.
Once your data is ready, select **Run** in the top-right corner of your page to send your order acceptance or rejection updates to Mirakl.
Send your shipment notifications to Mirakl [#send-your-shipment-notifications-to-mirakl]
To send your shipment notifications to the Mirakl marketplace, use the *Mirakl Shipment Notification* export.
Go to **Exports** from your site's main menu and select **Add export**.
Search for *Mirakl Shipment Notification*, hover over it, and select **Add**.
Select **Add Destination** and choose *Mirakl Shipment Notification* from the dropdown. Give it a name as desired, and select **Save**.
On the **Exports** page, select the name of the added export to set it up.
Enter the marketplace URL in the **Mirakl api url**.
Enter the API key from your Mirakl account in **Mirakl api key**.
In **Shop id**, enter the IDs of the shops you want to import orders from. You must separate them by commas (`,`).
Select the shipment information in **Order Id Column**, **Tracking Number Column**, **Carrier Url Column**, **Carrier Name Column**, and **Carrier Code Column**.
Leave **Feedback Import** on *On* if you want to receive a response directly from Mirakl in case of any export failures. The platform will store the feedback automatically as an additional data source in the form of a downloadable CSV file.
Toggle the **Active** button to *On* to activate the destination.
Select **Save**.
Go to **Dataflow** from your site's main menu and select *Mirakl Shipment Notification* in the dropdown on the top left. Connect the needed attributes from import to export.
Once your data is ready, select **Run** in the top-right corner of your page to send your order acceptance or rejection updates to Mirakl.
# Set up order sync for Cdiscount
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Cdiscount is one of the largest e-commerce platforms in France. It offers a various products, including electronics, household appliances, and food.
Productsup has built an ecosystem that imports order data from Cdiscount to Productsup and sends shipment notification data to Cdiscount:
. *Cdiscount Orders*This data source lets you upload orders from the CDiscount account and filter them by status or date of creation or update.
. *Cdiscount Order Shipment Delta API*This export uses an API to send order shipment data to Cdiscount. It uses the delta logic, sending only changed data to Cdiscount with every export run instead of sending the entire catalog.
Prerequisites [#prerequisites]
To set up the Cdiscount orders and shipment status in Productsup, you need to:
Create an account or log in to your Cdiscount seller account supported by Octopia. See [Octopia](https://seller.octopia.com/).
White-label Productsup as integration provider. To do this, you must contact the API support in your Cdiscount seller portal and send them the message: *"I authorize $Client\_ID to act on my seller account $Seller\_ID,"* entering your Productsup account ID instead of *$Client\_ID* and your Cdiscount seller ID instead of *$Seller\_ID*.
Activate **Automatic Order Validation** in your Cdiscount account if you want to export shipment notifications. This option automatically changes each new order’s status from *WaitingAcceptance* to *Accepted*, which is necessary to ship an order.
Import your orders from Cdiscount to Productsup [#import-your-orders-from-cdiscount-to-productsup]
You can import orders from the CDiscount account to Productsup.
Orders come per order item, meaning there may be as many rows as the number of products in that order.
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Cdiscount Orders*, select **Add**, give it a name as desired, and then select **Continue**.
In **Seller ID**, add the ID of your Cdiscount seller account.
In the **Order Status**, you can filter orders by status. Choose the needed order statuses by holding the **Crtl** or **command** keys and selecting from the list:
* *All*
* *WaitingAcceptance*
* *Accepted*
* *Refused*
* *InPreparation*
* *Shipped*
* *Delivered*
* *Cancelled*
* *CancelRequest*
In **Order created from**, **Order created till**, **Order updated from**, **Order updated till**, you can filter orders by the creation or update date.
In **Description (optional)**, add a description for your data source. It substitutes the data source name on the *Overview Data Sources* page.
Select **Save**.
To import orders from Cdiscount, select **Import** in the top-right corner of your site's view.
Send your order shipment data to Cdiscount [#send-your-order-shipment-data-to-cdiscount]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for *Cdiscount Order Shipment Delta API*, hover over it, and select **Add**.
On the *Exports* page, select the name of the added export to set it up.
Select **Add Destination**, choose *CDiscount Order Shipment delta export* from the drop-down list, give it a name as desired, and select **Save**.
In **Seller ID**, enter your Cdiscount seller ID.
Leave **Feedback Import** on *On* if you want to receive a response directly from Cdiscount in case of any export failures. The platform will store the feedback automatically as an additional data source in the form of a downloadable CSV file.
Switch the **Active** button to **On** to activate the destination.
Select **Save**.
Go to **Dataflow** from the site’s main menu. Choose your *Cdiscount Order Shipment Delta API* from the drop-down menu on the left.
Connect at least the following attributes between the intermediate and export stages:
* **order\_id**
* **carrier\_name**
* **parcel\_number**
If your data is ready, select **Run** or **Export this export** in the upper right corner of the page.
# Set up ETIM xChange export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
ETIM xChange is an international format for product data exchange. The ETIM xChange format uses JSON, a popular human- and machine-friendly data format. JSON Schema lets you define the structure and rules of JSON data making a strong alternative to XML. You can use widely JSON itself for web applications, configuration, and storage and with JSON Schema you can validate that JSON data follows specific standards.
This guide covers ETIM xChange 2.0, which is compliant with the ETIM xChange V2.0 schema.
The ETIM xChange format structure includes:
* Catalogue data
* Supplier data
* Product data
* Trade item data
The format has a minimum of mandatory attributes. Only essential attributes are mandatory. For example, you must have at least one unique identifier to list a product.
Download the complete [ETIM xChange documentation](https://www.etim-international.com/downloads/?_sft_downloadcategory=xchange) from ETIM International.
ETIM xChange 2.0 sub-channels and fields [#etim-xchange-20-sub-channels-and-fields]
ETIM xChange 2.0 covers the following sub-channels and product fields.
* 15 sub-channels, including Legislation, LCA Environmental, Packaging Unit, Item Relations, Other Classifications, Product Country Specific Fields, Item Country Specific Fields, and Item Attachments.
Prerequisites [#prerequisites]
Before setting up the ETIM xChange export, you need to:
. Import your data to Productsup. See [Add a main data source to import your products](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-a-main-data-source-to-import-your-products).
. Structure your data so that one row equals one trade item, which also corresponds to one product and one supplier.
An ETIM xChange 2.0 export channel can only contain data for a single supplier.
Add and set up the ETIM xChange 2.0 export [#add-and-set-up-the-etim-xchange-20-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for **ETIM xChange 2.0** and select **Add**.
Select the export's name link.
Select **Add Destination** and choose the ETIM xChange 2.0 destination connector. Give it a name as desired and select **Save**.
In the **Upload type**, select *SFTP* or *Productsup Server.* See [Find the most suitable export destination](/docs/help-center/best-practices/find-the-most-suitable-export-destination).
Enter the FTP host, username, and password in the corresponding fields.
The platform creates a JSON file compliant with the ETIM xChange V2.0 schema and exports it to the selected destination where you can access it.
Toggle **Active** to **On** to activate the destination.
Select **Save**.
Add the data service ETIM xChange trade item multiplication [#add-the-data-service-etim-xchange-trade-item-multiplication]
After setting up your export, you need to add a data service to get all the necessary JSON nodes in your final file.
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *ETIM xChange trade item multiplication*, select **Add**, and give it a desired name and attribute prefix.
By default, `___prefix` is in the **Column prefix**, but you can change it to another name.
The platform will add this prefix at the beginning of an attribute name generated by the data service. The attribute names generated by the data service always start with three underscores (`___`), which means the platform doesn't send such attributes to your export channels.
In the **Nodes** field, enter the JSON node names using a comma (`,`) without spaces as a separator. Enter only the nodes you plan to map — each one you add creates a corresponding sub-channel. ETIM xChange 2.0 supports the following 15 nodes:
*Supplier Attachments,Product Details,Product Relations,Product Attachments,Trade Item Details,Trade Item Logistic Details,ETIM Classification,Legislation,LCA Environmental,Packaging Unit,Item Relations,Other Classifications,Product Country Specific Fields,Item Attachments,Item Country Specific Fields*
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
Because the data service creates one row per active node, the export log's record count reflects unique products, not raw rows. For example, 10 products across 15 active nodes produce 150 rows internally, but the log reports 10 records processed. The final export file merges these rows back per product, so it doesn't contain any unnecessary multiplications.
If you can't see your new data in Data View, ensure the platform hasn't hidden it:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the dropdown on your left.
Select the menu icon
on the right and then select the eye icon
.
Find the attributes in the list that use the custom prefix `___prefix` and select the eye icon
next to each attribute you want Data View to display.
Close the pop-up.
Map imported product categories to ETIM with Lists [#map-imported-product-categories-to-etim-with-lists]
Skip this step if the ETIM codes are already in your imported data feed.
Go to **Lists** from your site's main menu.
Select **ADD LIST**.
In **Choose a list type**, choose **Classification Mapping** and select **Continue**.
In **Configure the Classification Mapping list**, do the following:
In **Name**, give your list a desired name.
In **Classification**, choose the *ETIM xChange 2.0* classification standard.
In **Stage**, select **Import**.
In **Attribute**, select *\_\_additionalNodes*.
Optionally, toggle **Share list** if you want to share the list within the organization or project.
Select **Add**.
Assign the appropriate replacement term to your values by choosing from the **Replace term** dropdown.
Map your attributes and apply the Classification Mapping list [#map-your-attributes-and-apply-the-classification-mapping-list]
Map the corresponding attributes from import to export in Dataflow:
>
> The **Classification** dropdown now appears in the top toolbar of Dataflow. If you open it, you can see the ETIM xChange JSON nodes in your data feed.
>
>
>
Go to **Dataflow** from your site's main menu.
Select your ETIM xChange export from the dropdown on the left in the top toolbar.
Map the attributes from the intermediate to the export stage.
Hover over the **\_\_additionalnodes** attribute in the intermediate stage and select the arrow icon on the right.
Search for the **Classification Mapping** rule box and drag it to the green area.
In the **List** dropdown, select the Classification Mapping list you set up.
Select **Save**.
Select **Run** in the top-right corner to import the ETIM classification attributes.
Wait for the run to finish and go to **Settings** from your site's main menu and select **Advanced Settings**. Select **Reset** in the Reset Data section.
The first export run reveals the sub-channel tabs in Dataflow. It can take a few runs for all mapped data to be fully reflected.
Map JSON nodes for ETIM xChange [#map-json-nodes-for-etim-xchange]
In **Dataflow**, select a JSON node you want to map in the **Classifications** dropdown. The platform refreshes the view and shows the JSON nodes in the export stage.
Map the attributes for the selected JSON node to the intermediate stage. Repeat the same steps in all ETIM xChange JSON nodes from the drop-down menu.
Check and edit ETIM values [#check-and-edit-etim-values]
To check if all the values are present in your feed:
Go to **Data View** from your site.
Select your export from the dropdown on the left in the top toolbar.
Select the JSON node you want to check from the **Classification** dropdown.
Select the **Analyze** button for the attribute you want to check.
The side panel opens showing whether your attribute contains valid ETIM values or suggesting possible actions to correct them. See [Analyze your data in Data View](/docs/help-center/map-and-optimize-your-data/data-view/analyze-your-data-in-data-view#section-idm4538971827048033726544546987) for more information on the Analyzer feature.
Use rule boxes to edit the values if necessary.
Common pitfalls with ETIM xChange 2.0 [#common-pitfalls-with-etim-xchange-20]
| Pitfall | What to do |
| :---------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Multi-value ETIM Classification feature columns don't align | Use the `<###>` delimiter only for ETIM Classification feature columns, such as `EC.0.EtimFeatureCode` and `EC.0.EtimValueCode`. The platform splits these columns on `<###>` and matches values by position to build each ETIM feature. Every other multi-value field uses a comma (`,`) as its delimiter. |
| An export run fails with no file delivered | Check the feedback file for the specific error. The export processes all records as a single batch, so one invalid record fails the entire run. Fix the offending record and run the export again. |
# Add Google Merchant Center - Promotions (API) export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
In Google Merchant Center (GMC), you can use promotions data to let shoppers discover your products as discount deals in Google Search or Google Shopping. See [Get started with Promotions](https://support.google.com/merchants/answer/13422697) for more information on GMC promotions.
*Google Merchant Center - Promotions (API)* is an API-based export that lets you create, update, and delete promotions in Google Merchant Center automatically by running the export in your Productsup site. Having promotions data in your GMC account helps you attract more customers and receive more orders. Choose this export if you have a large promotions data feed that continually changes because it can let you save time and avoid errors compared to the manual upload option via the export *Google Merchant Promotions*. See [Add Google Merchant Promotions export](/docs/help-center/export-data-feeds/special-export-setups/add-google-merchant-promotions-export) for more information on the flat-file export option.
The export *Google Merchant Center - Promotions (API)* uses the Content API for Shopping to send your promotion data to GMC. The data you can send includes, for example, promotion IDs, offer types, coupon types, promo codes, promotion start and end times, item brands, discounts, etc.
Prerequisites [#prerequisites]
To use the *Google Merchant Center - Promotions (API)* export, you need the following:
. A Google Merchant Center account.
. GMC authentication in your Productsup organization. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) for more information.To add GMC authentication to your Productsup organization:
Go to **Authentication** from the organization's, project's, or site's menu and select **ADD AUTHENTICATION**.
In **Type**, select *Google Merchant Center*, give it a custom name as desired, and select **Next**.
Select **Connect** for Productsup to redirect you to a Google account page where you can give Productsup access to your Google Merchant Center account. Once ready, Google returns you back to Productsup. Close the confirmation window to proceed.
. Promotions data located in a third-party system or file that you can use as a data source in Productsup. See [Promotions data specification](https://support.google.com/merchants/answer/2906014) for information on all required and optional promotions attributes. Consult [Promotions policies](https://support.google.com/merchants/answer/2877565) for Google's general promotions guidelines.
. A separate site in your Productsup organization where you can add a relevant data source and import your promotions data.
. Valid promotion IDs in your product feed that GMC can use to apply promotions to your products. See [Prerequisite 4](/docs/help-center/export-data-feeds/special-export-setups/add-google-merchant-promotions-export#para-idm243487014173884) in the flat-file export document for more information on this requirement.
. Your Merchant ID that Google assigned to your payment profile. See [Find your Merchant ID](https://support.google.com/paymentscenter/answer/7163092?hl=en) for more information.
Set up the export Google Merchant Center - Promotions (API) [#set-up-the-export-google-merchant-center---promotions-api]
Go to **Exports** from your site's main menu, and select **Add export**.
Search for *Google Merchant Center - Promotions (API)*, hover over the export, and select **Add**.
On the Exports page, select the name of the added export to set it up.
Select **Add Destination**, choose *GMC Promotion API v1* from the drop-down list, give it a name as desired, and then select **Save**.
Choose your GMC authentication in **Authentication to use**. If you haven't created the authentication in the platform yet, select **Add New Authentication** and create it, as previously seen in [Prerequisites](#N1709915991135).
Toggle the **Active** button to **On** to activate the destination.
Select **Save**.
Go to **Dataflow** and select **Google Merchant Center - Promotions (API)** in the drop-down menu on the left.
Connect all mandatory attributes from import to export. The mandatory attributes are:
1. **merchant-id**
2. **target-country**
3. **language**
4. **promotion-id**
5. **product-applicability**
6. **offer-type**
7. **title**
8. **redemption-channel**
9. **coupon-type**
10. **promotion-start-time**
11. **promotion-end-time**
Go to your Google Merchant Center account to add Productsup as your API-based promotions data source.
To export the needed promotion data to Google Merchant Center, go to **Exports**, select the export *Google Merchant Center - Promotions (API)*, and then select **Export this export**.You can also select **Export** or **Run** in the top-right corner of your view on any page of the site to export the promotions data. This action, however, sends your site's data to all exports added in the site.
Before sending your promotion data to GMC, Productsup checks that it contains all mandatory attributes and that the values in those attributes match the GMC requirements. See [Promotions data specification](https://support.google.com/merchants/answer/2906014). If your promotion or merchant IDs are in the right format but aren't valid, you can't see an error in Productsup. GMC runs a promotion validation process internally, so you need to go to your GMC account to check the success of the data upload and validation.
# Add Google Merchant Promotions export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
In Google Merchant Center (GMC), you can use promotions data to let shoppers discover your products as discount deals in Google Search or Google Shopping. See [Get started with Promotions](https://support.google.com/merchants/answer/13422697) for more information on GMC promotions.
The *Google Merchant Promotions* export lets you send promotions data to supplement your product feed in Google Merchant Center. This export includes such attributes as **promotion\_id**, **promotion\_effective\_dates**, **offer\_type**, **redemption\_channel**, **product\_applicability**, etc. This is a flat-file export, which should cover most cases. If your promotions data frequently changes, you can send it to GMC via API using the export *Google Merchant Center - Promotions (API)*. See [Add Google Merchant Center - Promotions (API) export](/docs/help-center/export-data-feeds/special-export-setups/add-google-merchant-center-promotions-api-export).
If you want to add 10 or fewer promotions in Google Merchant Center, it may be worth doing so manually right in GMC. You need to use the **promotion\_id** attribute to map the created promotions to the needed products in your GMC feed.
The more promotions data you have, the more sense it makes to send it as a feed from Productsup.
Prerequisites [#prerequisites]
To send promotions data to GMC using the export *Google Merchant Promotions*, you need:
. Promotions data located in a third-party system or file that you can use as a data source in Productsup. See [Promotions data specification](https://support.google.com/merchants/answer/2906014) for information on all mandatory and optional promotions attributes. See [Promotions policies](https://support.google.com/merchants/answer/2877565) for Google's general promotions guidelines.
. A separate site in your Productsup organization where you can add a relevant data source and import your promotions data.
. A Google Merchant Center account.
. The **Promotions** add-on in your Google Merchant Center account that lets you add promotions data. See [Get started with Promotions](https://support.google.com/merchants/answer/13422697) for more information.
. The attribute **promotion\_id** both in your product and promotions feeds. If you plan to use promotions that apply to specific products instead of your entire product catalog, your promotions data and product feed must contain the attribute **promotion\_id** to let GMC upload promotions data to the needed products.Alternatively, you can use product filter attributes to tie your promotions to the needed products. See [Product filters](https://support.google.com/merchants/answer/2906014#ProductFilters) for more information.Here is an example of how your product feed and promotions data should correlate through the **promotion\_id** attribute.
These are only feed examples. See [Promotions data specification](https://support.google.com/merchants/answer/2906014) for the latest requirements for all mandatory and optional attributes.
This is a version of a product feed:
| **id** | **title** | **price** | **brand** | **description** | **availability** | **link** | **image\_link** | **promotion\_id** |
| -------------------------------------------------------------------------------- | -------------------------- | --------------- | ----------------------------------------- | ------------------------------ | --------------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | ----------------- |
| 1 | Slippers | 10.00 EUR | Gucci | These are slippers by Gucci. | in stock | [https://www.your-store.com/Slippers/1](https://www.your-store.com/Slippers/1) | [https://www.your-store.com/images/Slippers/1](https://www.your-store.com/images/Slippers/1) | *111111* |
| 2 | Socks | 5.00 EUR | Prada | These are socks by Prada. | in stock | [https://www.your-store.com/Socks/2](https://www.your-store.com/Socks/2) | [https://www.your-store.com/images/Socks/2](https://www.your-store.com/images/Socks/2) | *222222* |
| 3 | Blanket | 70.00 EUR | Givenchy | This is a blanket by Givenchy. | out of stock | [https://www.your-store.com/Blanket/3](https://www.your-store.com/Blanket/3) | [https://www.your-store.com/images/Blanket/3](https://www.your-store.com/images/Blanket/3) | *333333* |
| And this is an example of a separate promotions feed for the mentioned products: | | | | | | | | |
| **promotion\_id** | **product\_applicability** | **offer\_type** | **long\_title** | **redemption\_channel** | **promotion\_effective\_dates** | **generic\_redemption\_code** | | |
| --- | --- | --- | --- | --- | --- | --- | | |
| *111111* | SPECIFIC\_PRODUCTS | no\_code | 5% on all Gucci slippers below 20.00 EUR | online,in\_store | 2025-05-10T07:05:09/2025-05-11T07:05:09 | | | |
| *222222* | SPECIFIC\_PRODUCTS | no\_code | Buy 1 pair of Prada socks, get 1 for free | online | 2025-04-10T07:04:09/2025-04-20T07:04:09 | | | |
| *333333* | SPECIFIC\_PRODUCTS | generic\_code | 50 EUR for a Givenchy blanket | in\_store | 2025-06-10T07:04:09/2025-09-20T07:04:09 | GIVENCHY50 | | |
If you apply promotions to all products in your data feed, the value in **product\_applicability** should be *ALL\_PRODUCTS*. You also don't need to map promotion IDs to specific products in this case.
Set up Google Merchant Promotions export [#set-up-google-merchant-promotions-export]
Go to **Exports** from your site's main menu, and select **Add export**.
Search for *Google Merchant Promotions*, hover over it, and select **Add**.
In Exports, select the added export *Google Merchant Promotions*.
Select **Add Destination**.
Select *Productsup Server* from the **Destination** drop-down menu, and choose **Save**.See [Add the Productsup Server destination](/docs/help-center/export-data-feeds/set-up-an-export-destination/add-the-productsup-server-destination) to set up the destination *Productsup Server*.
Optionally, you can use other destinations to send your promotions data to GMC, such as SFTP servers or Google Cloud Storage. See [Add an FTP, SFTP, or FTPS destination](/docs/help-center/export-data-feeds/set-up-an-export-destination/add-an-ftp-sftp-or-ftps-destination) or [Export your data to Google Cloud Storage](/docs/help-center/export-data-feeds/set-up-an-export-destination/export-your-data-to-google-cloud-storage) to set up those destinations.
Go to **Dataflow** from the site's main menu and choose the added export from the dropdown in the toolbar.
Map mandatory and then optional attributes from import to export. See [Use Dataflow to map your attributes from import to export](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export) for more information.The mandatory attributes already available in the export:
* **promotion\_id**
* **product\_applicability**
* **offer\_type**
* **long\_title**
* **redemption\_channel**
* **promotion\_effective\_dates**
* **generic\_redemption\_code**
The *Google Merchant Promotions* export only contains basic mandatory and optional attributes. Based on your specific promotions data and its purpose (local promotions or sale events), you may need to send more attributes to GMC than are automatically available in the export.For example, you may need to send more mandatory attributes for your type of promotions:
* **promotion\_destination**
* **store\_applicability**
* **store\_codes\_inclusion** or **store\_codes\_exclusion**
* **promotion\_url**
You might also want to send more optional attributes than originally available in the export (promotion preconditions, promotion categories, limits, or other additional attributes).See [Promotions data specification](https://support.google.com/merchants/answer/2906014) for information on all possible promotions-related attributes you can send to GMC.If you need to send any additional attributes, you can create them in the intermediate and export stages by selecting **Drop or Click to add new attribute**. See [Create new attributes](/docs/help-center/map-and-optimize-your-data/dataflow/use-dataflow-to-map-your-attributes-from-import-to-export#section-idm4605326417364832706742715884) for more information on adding user-generated attributes.If you have created any user-generated attributes in the intermediate and export stages, connect them from import to export.
If your data is ready, select **Run** or **Export** in the upper right corner of the page. If you don't want to run the entire site, including all active exports set up in it, you can go to **Exports**, select the added *Google Merchant Promotions* export, and then choose **Export this export**.
Go to the **Promotions** add-on in Google Merchant Center, and upload the link generated by the *Productsup Server* destination once the site run finishes. You can access the link on the export setup page where you added the destination. See [Register and upload your data source](https://support.google.com/merchants/answer/13421073) for more information on uploading the generated file in GMC.If you are using other destinations, upload your data to GMC using the output of your chosen destination.
# Set up FabDis 2.3 exports
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
**FAB-DIS** (Fabrication Distribution) is a standard file format used by French manufacturers in the construction, parts, and tools industries to simplify and standardize product data exchange amongst their partner or distributor networks. See [FAB-DIS](https://fabdis.fr/en/) for more information.
The FAB-DIS file format is a complex XLSX file consisting of many datasheets or tabs. Each datasheet requires a specific format for data input. Productsup exports help you organize your data feeds in different datasheets and combine them into the final FAB-DIS file.
Productsup supports the 2.3 and 3.0 versions of FAB-DIS. This document explains the setup process for FabDis version 2.3. See [Set up FabDis 3.0 exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-fabdis-3-0-exports) if you use FAB-DIS 3.0.
To use the FabDis exports, you need to have the *Distribution PX Module* in your contract. Contact your Customer Success Manager to add it to your contract.
Decide how to set up the FabDis 2.3 Excel sheet file [#decide-how-to-set-up-the-fabdis-23-excel-sheet-file]
Depending on your data sources and aims, there can be different ways to set up the FabDis export. If your data needs optimization such as cleaning and formatting, you can do it in the pre-processing sites first and then set up the FabDis exports with one of the following methods:
. You can create separate sites for all the necessary FAB-DIS tabs that you need for generating the final Excel file using the daisy-chain approach. In this document, we describe this approach.
. You can create one site for all FAB-DIS tabs and export the pre-processed data into CSV files to use them as data sources for the final FAB-DIS export file. See [Set up FabDis 3.0 exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-fabdis-3-0-exports) to learn how to set up FAB-DIS with this approach.
You may also need to convert your raw data into ETIM classes and use it as a data source. See [Set up ETIM Classes exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-etim-classes-exports).
To create multiple FAB-DIS Excel sheets, where each datasheet may require a different data structure, separate sites process data using individual Excel sheets. Each site processes and exports data to one (1) FAB-DIS Excel sheet. The following site adds data to the Excel sheet and exports output to the next site using a daisy-chain approach. Typically, the site FabDis 2.3 - 06\_ETIM is the final site but this may vary depending on the specific use case.
All sites can import data from one or multiple external sources.
Thanks to the *Triggering* feature, each Productsup site runs one after the other. See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling#section-idm4498060010569633567718011303).
Once the last site finishes processing the final complete FAB-DIS Excel file, you can retrieve the file from the export destination, usually via FTP, and use it as you like. See the following scheme:
When to use the daisy-chain setup approach [#when-to-use-the-daisy-chain-setup-approach]
The benefits of using the daisy-chain approach are that you can export Excel files:
* If several spreadsheet tabs contain different data structures
* If your product data contains an excessive number of attributes
* If you need data from multiple product categories.
Example set up [#example-set-up]
Each export adds data to a single FAB-DIS datasheet using different FabDis 2.3 exports. In the following example, sites X1 through X5 add their data to a sheet within an export template intended for them only. Once each site enters its data, the platform prompts the following sites to enter their data, one after another as follows:
. Site X0 receives and structures the necessary data from the client. Site X0 normalizes the data for the following sites. This process ensures that the information is consistent for further sites downstream.
. Site X1 automatically adds information to the *00\_CARTOUCHE* Excel sheet from the FabDis Master Template file using the *FabDis 2.3 - 00\_Cartouche* export and sends it to site 1. This sheet has a default *line* structure, which means that each SKU repeats multiple times for each data variation.
. Site X2 uses the *FabDis 2.3 - 01\_Commerce* export to write data to the *01\_COMMERCE* Excel sheet. This sheet has a default *column* structure, which means it uses one (1) line per SKU.
. Site X3 uses the *FabDis 2.3 - 02\_Logistique* export to write data to the *02\_LOGISTIQUE* Excel sheet. This sheet has a default *line* structure, which means that each SKU repeats multiple times for each data variation. For example, the SKU would repeat based on the packaging type per product, such as boxes, crates, pallets, etc. It may be helpful to use the *Split Variants* service on import to create the required data structure in the site.
. Site X4 uses the *FabDis 2.3 - 03\_Media* export to write data to the *03\_Media* Excel sheet. This sheet has a default *line* structure, which means that each SKU repeats multiple times for each data variation. For example, the SKU would repeat based on the media files per product, such as images, PDFs, videos, etc. It may be helpful to use the *Split Variants* service on import to create the required data structure in the site.
. Site X5 uses the *FabDis 2.3 - 06\_ETIM* export to write data to the *06\_ETIM* Excel sheet. This sheet has a default *line* structure, which means that each SKU repeats multiple times for each data variation. For example, the SKU would repeat based on ETIM features per product. It may be helpful to use the *Split Variants* service on import to create the required data structure in the site. To use ETIM in the platform, see [Set up ETIM Classes exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-etim-classes-exports).
In the previous example, the platform applied the Split Variant data service to several columns to create data variations on import. To learn more about Split Variants, see [Split parent items to create product variants with the Split Variants data service](/docs/help-center/map-and-optimize-your-data/data-services/split-parent-items-to-create-product-variants-with-the-split).
Prerequisites [#prerequisites]
. Contact [support@productsup.com](http://support@productsup.com) to request the following templates:
1. *Fab-Dis Master Template Excel* for your version: `Fabdis_v2.3_placeholderfile.xlsx` for Fab-Dis 2.3
2. *FabDis - 00 Cartouche* template that serves as the information page.
The template file contains placeholders such as `PRODUCTSUP_VALUE('artclassid')` which must match the column headers. The column name and capitalization must exactly match the template placeholder value such as `artclassid` .
. Set up the ETIM Classification export. See [Set up ETIM Classes exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-etim-classes-exports).
. Set up triggers for each site to prompt the following site to begin processing after each site finishes its process. See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling).
Set up FabDis 2.3 exports [#set-up-fabdis-23-exports]
To create a FAB-DIS Excel sheets file, you can set up the following exports:
Our FabDis 2.3 template supports also optional Excel sheets for **FabDis 2.3 - 22\_Pyramide**, **FabDis 2.3 - 24\_Substitution**, and **FabDis 2.3 - 26\_Correspondance** exports.
Set up the FabDis 2.3 - 00_Cartouche export [#set-up-the-fabdis-23---00_cartouche-export]
The following procedures explain the general process to generate the final FAB-DIS Excel file. If your use case differs, contact [support@productsup.com](http://support@productsup.com) for assistance.
Go to **Exports** from your site's main menu and select **ADD EXPORT**. Search for *FabDis 2.3 - 00\_Cartouche* and select **Add**.
Optionally, give your export a custom name in **Name**. The custom name replaces the export's name on the *FabDis 2.3 - 00\_Cartouche Overview* page. Then select **Add**.
Select **Add Destination** and choose your destination. For the following example, choose *Excel Spreadsheet (Productsup Server)* from the drop-down menu. You can optionally give this destination a custom name in **Name**. Select **Save**.
On the destination settings page, enter the full import source address in **Template file**. For example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_Master_Template.xlsx`, as you receive the master template file from this FTP server address.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
Enter your FTP credentials in **Template File FTP Username** and **Template File FTP Password**.
Enter the Excel spreadsheet name that your site writes to in **Data sheet**. For example, `00_CARTOUCHE`.
The platform uses a comma (`,`) to separate data by default. Enter a separator of your choice in **Data Sheet Name Separator**.
Add this export's sheet name in **Products sheet**. For example, `00_CARTOUCHE`. This creates an individual sheet per product.
The max number of sheets is 1000. If there are more than 1000 products in your file, don't fill the Products sheet for normal work of the export.
The **Populate By Columns** option adds one (1) product to each column instead of one (1) product per line. Ensure you leave this option switched **Off**, as per default.
Enter this site's output file name in **Output File FTP URL**, for example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_00_Cartouche_output.xlsx`. The following site receives this Excel file as its source and *[Template file](#N1642880386893)*.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
Save this export file URL for later reuse. The output file name may not be the same as the master template or any other files in the FTP, otherwise, it overwrites the existing file.
Enter your FTP credentials in **Output File FTP URL** and **Output File FTP Username**.
Turn on the destination by switching **Active** to **On**.
Select **Save**.
Exit this export and go to your organization. Choose another site and repeat this process for each site. See the following sections to continue.
Set up the FabDis 2.3 - 01_Commerce export [#set-up-the-fabdis-23---01_commerce-export]
The following procedures continue the FAB-DIS export setup from [Set up the FabDis 2.3 - 00\_Cartouche export](#section-idm13285698170340).
Go to **Exports** from your site's main menu and select **ADD EXPORT**. Search for *FabDis 2.3 - 01\_Commerce* and select **Add**.
Optionally, Give your export a custom name in **Name**. The custom name replaces the export's name on the *FabDis - 01 Commerce Overview* page. Then select **Add**.
Select **Add Destination** and choose your destination. For the following example, choose *Excel Spreadsheet (Productsup Server)* from the drop-down list. You can optionally give this destination a custom name in **Name**. Select **Save**.
On the destination settings page, enter the full import source address in **Template file**. For example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_00_Cartouche_output.xlsx`.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
The full import source is the previously added output XLSX file processed from the last site.
Enter your FTP credentials in **Template File FTP Username** and **Template File FTP Password**.
Enter the Excel spreadsheet name that your site writes to in **Data sheet**. For example, `01_COMMERCE`.
The platform uses a comma (`,`) to separate data by default. Enter a separator of your choice in **Data Sheet Name Separator**.
Add this export's sheet name in **Products sheet**. For example, `01_COMMERCE`.
The **Populate By Columns** option adds one (1) product to each column instead of one (1) product per line. Ensure you leave this option switched **Off**, as per default.
Enter this site's output file name in **Output File FTP URL**, for example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_01_Commerce_output.xlsx`. The following site receives this Excel file as its source and *[Template file](#N1642880386893)*.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
Enter your FTP credentials in **Output File FTP URL** and **Output File FTP Username**.
Turn on the destination by switching **Active** to **On**.
Select **Save**.
Exit this export and go to your organization. Choose another site and repeat this process for each site. See the following sections to continue.
Set up the FabDis 2.3 - 02 Logistique export [#set-up-the-fabdis-23---02-logistique-export]
The following procedures continue the FAB-DIS export setup from [Set up the FabDis 2.3 - 01\_Commerce export](#section-idm13285769908404).
Go to **Exports** from your site's main menu and select **ADD EXPORT**. Search for *FabDis 2.3 - 02\_Logistique* and select **Add**.
Optionally, give your export a custom name in **Name**. The custom name replaces the export's name on the *FabDis 2.3 - 02\_Logistique Overview* page. Then select **Add**.
Select **Add Destination** and choose your destination. For the following example, choose *Excel Spreadsheet (Productsup Server)* from the drop-down list. You can optionally give this destination a custom name in **Name**. Select **Save**.
On the destination settings page, enter the full import source address in **Template file**. For example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_01_Commerce_output.xlsx`.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
Enter your FTP credentials in **Template File FTP Username** and **Template File FTP Password**.
Enter the Excel spreadsheet name that your site writes to in **Data sheet**. For example, `02_LOGISTIQUE`.
The platform uses a comma (`,`) to separate data by default. Enter a separator of your choice in **Data Sheet Name Separator**.
Add this export's sheet name in **Products sheet**. For example, `02_LOGISTIQUE`.
The **Populate By Columns** option adds one (1) product to each column instead of one (1) product per line. Ensure you leave this option switched **Off**, as per default.
Enter this site's output file name in **Output File FTP URL**, for example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_02_Logistique_output.xlsx`. The following site receives this Excel file as its source and *[Template file](#N1642880386893)*.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
Enter your FTP credentials in **Output File FTP URL** and **Output File FTP Username**.
Turn on the destination by switching **Active** to **On**.
Select **Save**.
Exit this export and go to your organization. Choose another site and repeat this process for each site. See the following sections to continue.
Set up the FabDis 2.3 - 03_Media export [#set-up-the-fabdis-23---03_media-export]
The following procedures continue the FAB-DIS export setup from [Set up the FabDis 2.3 - 02 Logistique export](#section-idm13285769978552).
Go to **Exports** from your site's main menu and select **ADD EXPORT**. Search for *FabDis 2.3 - 03\_Media* and select **Add**.
Optionally, give your export a custom name in **Name**. The custom name replaces the export's name on the *FabDis 2.3 - 03\_Media Overview* page. Then select **Add**.
Select **Add Destination** and choose your destination. For the following example, choose *Excel Spreadsheet (Productsup Server)* from the drop-down list. You can optionally give this destination a custom name in **Name**. Select **Save**.
On the destination settings page, enter the full import source address in **Template file**. For example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_02_Logistique_output.xlsx`.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
Enter your FTP credentials in **Template File FTP Username** and **Template File FTP Password**.
Enter the Excel spreadsheet name that your site writes to in **Data sheet**. For example, `03_MEDIA`.
The platform uses a comma (`,`) to separate data by default. Enter a separator of your choice in **Data Sheet Name Separator**.
Add this export's sheet name in **Products sheet**. For example, `03_MEDIA`.
The **Populate By Columns** option adds one (1) product to each column instead of one (1) product per line. Ensure you leave this option switched **Off**, as per default.
Enter this site's output file name in **Output File FTP URL**, for example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_03_Media_output.xlsx`. The following site receives this Excel file as its source and *[Template file](#N1642880386893)*.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
Enter your FTP credentials in **Output File FTP URL** and **Output File FTP Username**.
Turn on the destination by switching **Active** to **On**.
Select **Save**.
Exit this export and go to your organization. Choose another site and repeat this process for each site. See the following sections to continue.
Set up the FabDis 2.3 - 06_ETIM export [#set-up-the-fabdis-23---06_etim-export]
The following procedures continue the FAB-DIS export setup from [Set up the FabDis 2.3 - 03\_Media export](#section-idm13285770243624).
Go to **Exports** from your site's main menu and select **ADD EXPORT**. Search for *FabDis 2.3 - 06\_ETIM* and select **Add**.
Optionally, give your export a custom name in **Name**. The custom name replaces the export's name on the *FabDis 2.3 - 06\_ETIM Overview* page. Select **Add**.
Select **Add Destination** and choose your destination. For the following example, choose *Excel Spreadsheet (Productsup Server)* from the drop-down list. You can optionally give this destination a custom name in **Name**. Select **Save**.
On the destination settings page, enter the full import source address in **Template file**. For example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_03_Media_output.xlsx`.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
Enter your FTP credentials in **Template File FTP Username** and **Template File FTP Password**.
Enter the Excel spreadsheet name that your site writes to in **Data sheet**. For example, `06_ETIM`.
The platform uses a comma (`,`) to separate data by default. Enter a separator of your choice in **Data Sheet Name Separator**.
Add this export's sheet name in **Products sheet**. For example, `06_ETIM`.
The **Populate By Columns** option adds one (1) product to each column instead of one (1) product per line. Ensure you leave this option switched **Off**, as per default.
Enter this site's output file name in **Output File FTP URL**, for example, `ftp://transport.productsup.io/YourAccountName/FAB-DIS_Final_output.xlsx`.
`YourAccountName` in the example is the folder name from the file path in the FTP where the output file is saved.
Enter your FTP credentials in **Output File FTP URL** and **Output File FTP Username**.
Turn on the destination by switching **Active** to **On**.
Select **Save**.
You are now ready to set up ETIM for your data classifications. To continue, see [Set up ETIM Classes exports](/docs/help-center/export-data-feeds/special-export-setups/set-up-etim-classes-exports).
Once you finish with the FAB-DIS export setup, you can find your final, completed FAB-DIS file on the FTP server. FabDis 2.3 - 06\_ETIM is typically the final site in the FAB-DIS multi-site process exported to the FTP.
Preserve Excel exports cell formatting [#preserve-excel-exports-cell-formatting]
The final exported file must preserve the cell formatting of the original template document for the FAB-DIS export. You can test the formatting by comparing the original template with the final output FAB-DIS Excel file. The following screenshots show the preservation of formatting options:
*The original Master Template file formatting is on the left, and the final output file is on the right. Select the necessary image to have a large view.*
# Add Excel Export
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
You may need to export your product data in an Excel file, for example, to use it for channels that require Excel format such as FabDis export, or to use the Excel files for internal purposes. To export your data to Excel files, follow one of the following ways:
. Add and set up **Excel Export** in **Exports**. This method requires creating an Excel spreadsheet template with placeholders before setting up the export.
. Add and set up **Blank export (empty)** in **Exports** if you don't need a template and you can manually add the required attributes in Dataflow. See [Build your exports from scratch](/docs/help-center/export-data-feeds/add-export/build-your-exports-from-scratch).
. Order the creation of a custom export from Productsup as an additional service. You can then add your product data to it in **Exports**. Contact your Customer Success Manager.
This document describes the first option. In the following sections, you can find how to export your data into Excel file using Excel Export.
Prerequisites [#prerequisites]
To create a file with Excel Export, you need to:
. Create an Office Open XML (.xlsx) file in Excel 2007 or later version.
Productsup supports .xlsx and .xlsm. If your Excel template has another format, such as .xlt or .xltm, convert it into .xlsx or .xlsm.
. Prepare a template. See [Create a template](#section-idm4657019065745633954147439266).
. Upload your Excel template file to an (S)FTP location of your choice.
. Add and set up Excel Export in Exports.
Create a template [#create-a-template]
You can create either a two-dimensional data table, known as a data table sheet, or one worksheet tab per product called item setup sheet.
1. Data table sheets [#1-data-table-sheets]
A data table sheet contains a table with attributes placed horizontally and item values fill the columns. You should define placeholders in a single row. After setting up the Excel Export and running the platform, the imported feed content replaces the rows with values.
If you want to add styles to the table, the entire table adapts to your chosen style. You can also apply a style to the placeholders if you want to style the text. These changes affect the final data.
2. Item setup sheets [#2-item-setup-sheets]
The item setup sheets contain information about one item per worksheet. You need to create a template worksheet. You can freely design the template placing text and image placeholders wherever you want. After exporting, the platform reads the template sheet, creates worksheets per feed product, and removes the template itself from the final Excel file.
Create template placeholders [#create-template-placeholders]
To use the Excel Export, your template must have placeholders for the attribute headers. The placeholders are text strings that refer to the needed attributes in the data feed in the platform to populate spreadsheets with the product data. The placeholders follow the format such as **PRODUCTSUP\_VALUE('attribute\_name')**.
. Text placeholder.
. Image placeholder.
. Number placeholder.
1. Text placeholder [#1-text-placeholder]
You can use text placeholders both in data table sheets and item setup sheets.
To insert text from the data feed to the corresponding cell, use the placeholder **PRODUCTSUP\_VALUE('attribute name')**.
| Data View attibutes | Text placeholders in template |
| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
|
|
|
The placeholder can be a part of the text or a standalone value:
* Part of the text: **Title: PRODUCTSUP\_VALUE('title')**.
| Value in the attibute 'title' | Text placeholder output |
| ----------------------------- | ----------------------- |
| New sneakers | Title: New sneakers |
* Standalone: **PRODUCTSUP\_VALUE('title')**.
| Value in the attibute 'title' | Text placeholder output |
| ----------------------------- | ----------------------- |
| New sneakers | New sneakers |
In both examples, the values from the attribute **title** replaces **PRODUCTSUP\_VALUE('title')**.
2. Image placeholder [#2-image-placeholder]
You can use image placeholders only in item setup sheets.
To insert an image, enter the placeholder **PRODUCTSUP\_IMAGE('attribute')** in a cell separately from other contents. The attribute must contain an image URL. By default, the image placeholder positions the image in the upper-left cell corner. Then, it calculates the placeholder's cell size.
You can merge multiple cells vertically to expand the height of the image.
Alternatively, if you want to define the maximum image size, the placeholder takes a second argument, describing the width and height of the image. The image placeholder **PRODUCTSUP\_IMAGE('attribute',100x100)** sets the image in a 100 x 100-pixel box in the same location. The image either takes up the full width or full height of the defined box, whichever fits first.
3. Number placeholder [#3-number-placeholder]
You can use number placeholders both in data table sheets and item setup sheets.
To insert numbers in a number format instead of a string, use the placeholder **PRODUCTSUP\_NUMBER('attribute')**. This placeholder only works with content that contains digits and dots and converts any other content into an empty value.
Data table template name options [#data-table-template-name-options]
If you need multiple data tables in different worksheets, you can provide a comma-separated (CSV) list of worksheet names for the data table template. The list of worksheet names lets you write the same data on multiple sheets. Productsup offers the Excel Macro Files destination that helps determine which product to add to which sheet.
On setting up the Excel Marco Files destination, you need to specify the export column name that contains the sheet name where you add each product in **Sheet Name Column**.
If after the export, the exported file is empty, one of the possible reasons is that your attribute names contain commas (,) while commas also serve as a separator for the CSV file.
To solve the issue, check the **Settings** tab of the export. Choose **CSV Enclosure** and **,COMMA** as a CSV separator. Also, change your data feed in the following way: put the attributes name containing commas between the double quotes, such as **"PHOTO (300dpi, min.10x10)"**; otherwise, the platform can't export the data.
Add and set up Excel Export [#add-and-set-up-excel-export]
Go to **Exports** from your site's main menu and select **ADD EXPORT**. Search for *Excel Export*, hover over it, and select **Add**.
In *Overview*, select the name of the added export in the **Export name** column.
Select the pen icon at the top of the page and give your export a custom name as desired.
* The custom name replaces the export name on the *Excel Export Overview* page.
Go to **Dataflow** in your site's main menu.
Select **Excel Export** from the top ribbon menu.
Add and connect the attributes you need from the *Intermediate* column, based on your Excel spreadsheet, to the *Excel Export* column.
Go back to **Exports** and select your added Excel Export.
Select **Add Destination** and choose a necessary destination from the **Destination** drop-down list. Optionally, give it a name in **Name** and select **Save**.
Depending on your files, choose between these two (2) destinations:
1. **Excel Macro Files (xlsm)** is a recommended destination for Excel spreadsheets when you want to embed the output .xlsx as a URL hosted on the Productsup Server.
2. **Excel Spreadsheet (Productsup Server)** is the destination for the Excel spreadsheets when you want the platform to upload the output file to the FTP of your choice.
Both destinations can generate delta files for all new, changed, unchanged, and deleted products when used with delta exports. This lets you send only the modified product data to your desired export channels instead of sending your entire product catalog every time there is a change in your data.
Set up a selected destination by taking the steps in one of the following sections depending on your destination.
Set up Excel Macro Files (XLSM) destination (recommended) [#set-up-excel-macro-files-xlsm-destination-recommended]
If you select the Excel Marco Files (XLSM) destination, the setup page opens where you need to enter the following details:
In **Template file**, enter the URL of the file.
In **Template File FTP Username** and **Template File FTP Password** enter your FTP credentials to let the platform connect to the FTP server and download the file.
If your template creates a template per product, enter the name of this worksheet in **Factsheet**. Enter the name exactly as it appears on the Excel file.
Switch the **Populate By Columns** button to **On** if you want to populate data by columns instead of rows.
In **Sheet Name Column**, specify an export column name that contains the sheet name where you add each product.
Turn on the destination by switching **Active** to **On**.
Select **Save**.
Go to the *Overview* tab of your export, scroll to the **Filename** section, and select the **Setup** button. In **Filename**, change the name of your output file. The extension of your file should be .xlsx or .xlsm.
Set up Excel Spreadsheet (Productsup Server) destination [#set-up-excel-spreadsheet-productsup-server-destination]
If you select the Excel Spreadsheet (Productsup Server) destination, the setup page opens where you need to enter the following details:
In **Template file**, enter the FTP URL of the file. Example: `https://url-to-template-file`.
In **Template File FTP Username** and **Template File FTP Password** enter your FTP credentials to let the platform connect to the FTP server and download the file.
If your template creates a datasheet template per product, set the name of the worksheet in **Data sheet**. Enter the name exactly as it appears on the Excel template.
In **Data Sheet Name Separator**, enter a delimiter if desired. By default, it is a comma (`,`).
Enter the name of the sheet or tab containing the product data in **Products sheet**.
Switch the **Populate By Columns** button to **On** if you want to populate data by columns instead of rows.
In **Output File FTP URL**, enter the FTP URL where the platform should send your output file and define the name of the output file at the end of the URL. For example, `ftp://ftp.productsup.com/filename.xlsx` where `filename.xlsx` is the file name.
Enter the FTP credentials in **Output File FTP Username** and **Output File FTP Password**.
Turn on the destination by switching **Active** to **On**.
Select **Save**.
Go to the *Overview* tab of your export, scroll to the **Filename** section, and select the **Setup** button. In **Filename**, change the name to the output file name defined in [Step 7](#N1698854122545). The extension of your file should be .xlsx or .xlsm.
# Send your data to Microsoft SharePoint
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
You can export data from Productsup to Microsoft SharePoint using the *Blank Export (empty)* and *Blank Export (with ID)* with one of the following destinations:
. **MS SharePoint for CSV and XLSX** to export CSV and XLSX files.
. **MS SharePoint for XML** to export XML files.
You may need some technical expertise to set up an export to Microsoft SharePoint.
Prerequisites [#prerequisites]
To use Microsoft SharePoint in Productsup, you need to set up the integration with Productsup:
Step 1: Create an app registration and save the account data for further setup [#step-1-create-an-app-registration-and-save-the-account-data-for-further-setup]
Go to [Microsoft Azure portal](https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?redirect_uri=https%3A%2F%2Fportal.azure.com%2Fsignin%2Findex%2F\&response_type=code%20id_token\&scope=https%3A%2F%2Fmanagement.core.windows.net%2F%2Fuser_impersonation%20openid%20email%20profile\&state=OpenIdConnect.AuthenticationProperties%3Dm36YV9IFQ9iyhJSxiDUrAlJzkntJyOg2MSLhJ-9ApYSdsV3TPRl7ofJx0pwIEUstjirWSWHPyBAYVILibjPvBMUdBv0s9f-fqhdf1srNoj-lsKJiOqJ4wfFTxQJTkxQ9TJm_D7AUPzO0-v1zHZVCeKnL6v-Ur3Muw9NvJL0d-_EpJ79dUbL0ytmETYS75fN0XOyLdlFVNbAFY6ty0T0_5Ipu7Plg9-GWklhRToPZc_ZPjzkL7tinUTjSSrH9kcL6Nk3ZBN32nXGcywQgI9KTXFmmPqgQQWResmyUmKvcMhmLKjc5aueJmkDRNgEdUxLc_460TpIO_jSJljPI7BFWJ0Df4cBHeDVe7tCxzjcoKDNP229xbQGP0fQbqbWaFnL_TNW6KAJmMwTBmuN6YVWYQcrRLnMqIZx7cs3YASSzkc2i8m6sEgN4hV-yv4pr1RSEd5jsmNYKW2Afl-HUEqNB4j3zI6d49AoG-zF8RzXYwW0\&response_mode=form_post\&nonce=638653712668796478.MjhkYTBhNDUtYjA5NS00OWU5LThiY2UtYzM4ZTMxMWFhNmY3YTQyZGEzYjQtZmU2ZC00ZTNjLWI5YmMtZjU3OTE4NGEwZDY3\&client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c\&site_id=501430\&client-request-id=c19f7491-0bae-46e3-bd50-9099cb22fb28\&x-client-SKU=ID_NET472\&x-client-ver=7.5.0.0\&sso_reload=true).
Go to the Entra ID.
Go to **App registrations** and create a new registration by taking all the steps in the wizard.
Name your registration **Productsup-sharepoint-connector** and decide on the supported accounts. A single-tenant should be enough, but this depends on your organisation.
When you created the application, save separately the following details that you will need for the data source setup:
* *Application (client) id* for **Client Id**
* *Directory (tenant) id* for **Tenant Id**.
Go to **API permissions** from the menu to set the permissions:
* **User.Read**
* **Sites.Selected**.
Switch on the **Grant admin consent for \[Company]**.
Go to **Certificates & secrets** from the menu and generate a new client secret. Give it a description and set expiry date. Save it as your **Client secret** for further data source setup.
Step 2: Give the application access to the specific sites [#step-2-give-the-application-access-to-the-specific-sites]
To give an enterprise application or app registration access to a specific site or multiple sites in SharePoint, you need to execute a *SharePoint PnP PowerShell* script. You can use the script provided below as a starting point and ask your internal IT team to adjust it for you.
A CSV file mentioned in the script should contain the following:
* A list of MS SharePoint site URLs.
* Your admin account User Principal Name.
* The app ID or AppDisplayName.
You need the Administrator rights of your MS SharePoint account to execute the script.
```
# Connecting to the SPO Service and importing the SPO PNP Module
Connect-SPOService -URL
Import-Module PnP.PowerShell
##########################################################################################################################
# #
# The following part gives the respective Enterprise Application their neccessary rights. #
# It does so by using the .csv file from the previous part as input for sites to give the respective rights for. #
# #
##########################################################################################################################
$SPSitelist =
$ADMAccount =
$AppID =
$Displayname =
foreach ($SPSite in $SPSitelist)
{
write-output $SPSite
Set-SPOUser -site $SPSite -LoginName $ADMAccount -IsSiteCollectionAdmin $True -Verbose
Connect-PnPOnline [yourtenant].sharepoint.com -Interactive -ClientId
Grant-PnPAzureADAppSitePermission -AppId $AppID -DisplayName $Displayname -Site $SPSite -Permissions Write -Verbose
Set-SPOUser -site $SPSite -LoginName $ADMAccount -IsSiteCollectionAdmin $False -Verbose
}
```
You can also toggle between Write and Read permission by changing the respective permissions parameter in the foreach loop.
If you need help with providing access, you can contact [support@productsup.com](mailto:support@productsup.com).
Set up export for MS SharePoint [#set-up-export-for-ms-sharepoint]
To export your data to MS SharePoint, you can use one of the blank export templates:
* *Blank Export (empty)* lets you manually create a custom set of attributes in the export stage of Dataflow.
* *Blank Export (with ID*) is similar to *Blank Export (empty)* but has the **id** attribute pre-defined as a mandatory attribute in the export stage in Dataflow.
The process of setting up the exports *Blank Export (empty)* and *Blank Export (with ID)* is similar:
Go to **Exports** from your site's main menu.
Select **Add export**.
Select the necessary blank export in the gray banner under the search field.
Go to **Dataflow** from the site's main menu and select your blank export from the dropdown on the left of the top toolbar.
Map the needed attributes from intermediate to export by dragging a connection from an attribute in the intermediate stage to **Drop or Click to add new field** in the export stage.
For *Blank Export (with ID)*, the **id** attribute is the only mandatory attribute. You must connect it with a corresponding attribute in the intermediate stage.
Go to **Exports**, find your blank export in the list of exports, and toggle its status in the *Status* column to **Active**.
Select the name of your blank export in the *Export name* column.
Select **Add Destination**, and choose **MS SharePoint for CSV and XLSX** or **MS SharePoint for XML** from the drop-down menu. Select **Save**. See [Set up MS SharePoint for CSV and XLSX](#section-idm235080960345857) or [Set up MS SharePoint for XML](#section-idm353508096202834) for further setup steps.
Select **Export this export** in the top-right corner of the page to send your data to the destination. Alternatively, the platform exports the data during the next scheduled run.
Set up MS SharePoint for CSV and XLSX [#set-up-ms-sharepoint-for-csv-and-xlsx]
To set up the destination MS SharePoint for CSV and XLSX, enter your Microsoft SharePoint data from the [Prerequisites](#section-idm353464356572958) into the following fields:
In **Client ID**, enter your MS SharePoint client ID.
In **Client Secret**, enter our MS SharePoint client secret's value.
For an already set-up export.If, after some time, you start experiencing the export fail, it can mean that your client secret has expired, and you must update it:
Generate a new client secret in your MS SharePoint account.
Enter the new client secret's value in the **Client Secret** field. Don't use the Secret ID.
Leave **Client ID** unchanged.
In **Tenant ID**, enter your MS SharePoint tenant ID.
In **Upload File Path**, add the location path of the file.
In **File Name**, enter the name of the uploaded file.
In **File Type**, select the type of the shared file: *csv* or *xlsx*.
Check if access to the file in MS SharePoint isn't restricted.
Set **Active** to *On*, to activate the destination.
Select **Save**.
Set up MS SharePoint for XML [#set-up-ms-sharepoint-for-xml]
To set up the destination **MS SharePoint for XML**, enter your Microsoft SharePoint data from the [Prerequisites](#section-idm353464356572958) into the following fields:
In **Client ID**, enter your MS SharePoint client ID.
In **Client Secret**, enter your MS SharePoint client secret's value.
For an already set-up export.If, after some time, you start experiencing the export fail, it can mean that your client secret has expired, and you must update it:
Generate a new client secret in your MS SharePoint account.
Enter the new client secret's value in the **Client Secret** field. Don't use the Secret ID.
Leave **Client ID** unchanged.
In **Tenant ID**, enter your MS SharePoint tenant ID.
In **Upload URL**, add the location URL of the file. The URL should end with one of the following: *Shared Documents*, *Documents*, *SiteAssets*, or *Lists*. For example, `https://example.sharepoint.com/sites/examplesite/Shared Documents/`
In **Remote Directory**, enter a directory inside the Sharepoint Shared Documents, Documents, SiteAssets, or Lists, where the file should be uploaded.
Set **Active** to *On*, to activate the destination.
Select **Save**.
# Set up order sync for Walmart Marketplace
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Productsup lets you synchronize orders between Walmart Marketplace and your order management system (OMS). Walmart Marketplace order sync covers two separate flows:
* **Import orders into your OMS** — relay new orders from Walmart Marketplace to your OMS so you can fulfill them. The order line item strategy described below doesn't apply to this flow.
* **Export shipment and cancellation updates back to Walmart** — send tracking and cancellation information from your OMS back to Walmart. This flow requires you to combine your Walmart order data with your OMS data, and how you do that depends on your chosen order line item strategy.
An order on Walmart Marketplace can include one or more order line items. Each line item is identified by a `purchaseOrderId`, the overall order ID, and a `lineNumber`, which is sequential (1, 2, 3...) for each item in the order. Every shipment confirmation or cancellation you send to Walmart applies to an individual order line item, even if you ship multiple items in one package.
Prerequisites [#prerequisites]
To use Walmart Marketplace order sync in Productsup, you need:
. An approved Walmart Marketplace seller account (US) with access to Seller Center.
. To authorize Productsup to access your Walmart account. You do this when you configure the export destinations below.
Import orders into your OMS [#import-orders-into-your-oms]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for **Walmart Marketplace Orders Import** and select **Add**. Give it a name as desired and select **Continue**.
In **Authentication**, choose an existing authentication or select **Add New Authentication** to connect your Walmart account.
Selecting **Add New Authentication** redirects you to Walmart's authorization page. After you approve access, Walmart redirects you back to Productsup automatically.
Configure any filters you need, such as ship node type or date ranges, then select **Save**.
Select **Run** in the top-right corner to import your order data from Walmart.
The platform automatically acknowledges newly imported orders that are in *Created* status.
Once your order data is imported, go to **Exports** to add and set up an export that sends it to your OMS. Before running your export, map the mandatory attributes in Dataflow.
Choose an order line item strategy [#choose-an-order-line-item-strategy]
Before you set up shipment and cancellation exports back to Walmart, decide how your OMS returns tracking and cancellation information:
* **Per order line item** — Your OMS returns tracking or cancellation information for each individual order line item (`purchaseOrderId` and `lineNumber`).
* **Per order** — Your OMS returns tracking or cancellation information for the order as a whole and doesn't track individual line items. Walmart still requires every line item to be confirmed, so the same update applies to all line items in that order.
Set up your data sources for Walmart updates [#set-up-your-data-sources-for-walmart-updates]
To send shipment and cancellation updates back to Walmart, you need both your Walmart order data and your OMS data in the same site, joined together.
Take the steps in [Import orders into your OMS](#import-orders-into-your-oms) again, but in a new site separate from the one you use to relay orders to your OMS. Use **Walmart Marketplace Orders Import** as the main data source in this new site.
Add your OMS as an additional data source in the same site, and select **Run** to import your tracking and cancellation data.
Join your OMS data to your Walmart order data:
* If you're tracking per order line item, join by `purchaseOrderId` and `lineNumber`.
* If you're tracking per order, join by `purchaseOrderId` only.
See [Choose an order line item strategy](#choose-an-order-line-item-strategy).
Filter your joined data to orders with status *Acknowledged* before your shipment or cancellation export runs — either with a status filter on the data source or a rule box in Dataflow, whichever fits your setup. This prevents the export from processing orders before Walmart has confirmed them or sending the same update more than once.
Send shipment notifications to Walmart [#send-shipment-notifications-to-walmart]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for **Walmart Marketplace Shipment Notification** and select **Add**.
Select **Add Destination**, choose the matching destination from the dropdown, give it a name as desired, and select **Save**.
In **Authentication**, choose the Walmart authentication you previously set up, or select **Add New Authentication**.
Toggle **Active** to **On** and select **Save**.
Go to **Dataflow** and select **Walmart Marketplace Shipment Notification** in the dropdown on the left to map your attributes from import to export.
Select **Run** in the top-right corner to send shipment notifications to Walmart.
The export has the following attributes at the export stage:
| Attribute | Mandatory or not | Meaning and expected values |
| :-------------------------------------- | :------------------------------------ | :------------------------------------------------------------------------ |
| `purchaseOrderId` | Mandatory | The overall order ID as assigned by Walmart. |
| `lineNumber` | Mandatory if tracking per line item | The sequential number of the line item within the order. |
| `trackingInfo.carrierName.carrier` | Mandatory in most cases | The carrier delivering the order, using Walmart's accepted carrier codes. |
| `trackingInfo.carrierName.otherCarrier` | Mandatory if `carrier` isn't provided | The carrier name, when your carrier isn't in Walmart's accepted list. |
| `trackingInfo.trackingNumber` | Mandatory | The shipment tracking number. |
| `trackingURL` | Mandatory if `otherCarrier` is used | The URL where the buyer can track the shipment. |
Send cancellations to Walmart [#send-cancellations-to-walmart]
Go to **Exports** from your site's main menu and select **ADD EXPORT**.
Search for **Walmart Marketplace Order Cancellation** and select **Add**.
Select **Add Destination** and choose *Walmart Marketplace Order Cancellation export* from the dropdown. Give it a name as desired and select **Save**.
In **Authentication**, choose the Walmart authentication you previously set up, or select **Add New Authentication**.
Toggle **Active** to **On** and select **Save**.
Go to **Dataflow** and select **Walmart Marketplace Order Cancellation** in the dropdown on the left to map your attributes from import to export.
Select **Run** in the top-right corner to send cancellations to Walmart.
Common pitfalls [#common-pitfalls]
| Pitfall | What to do |
| :------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| An order line item can't be canceled or shipped individually | Confirm you joined your OMS data by `purchaseOrderId` and `lineNumber`, not `purchaseOrderId` alone. See [Choose an order line item strategy](#choose-an-order-line-item-strategy). |
| Orders are processed before they're ready, or get processed more than once | Confirm you filtered your joined data to status *Acknowledged* before running the export, either on the data source or with a rule box in Dataflow. |
| A shipment notification is rejected for a missing carrier | Provide `trackingInfo.carrierName.otherCarrier` and `trackingURL` when your carrier isn't in Walmart's accepted carrier list. |
# Use an item setup sheet
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Item setup sheets are spreadsheet files used for transmitting data in bulk to third parties. You can also refer to item setup sheets as new line forms, new line cards, product sheets, and fact sheets. These files are typically sent for sending product data to marketplaces, data pools, retailers, etc. Item setup sheets are commonly in the XLSX or macro-enabled XLSM format.
Some item setup sheets provide instructions on completing them, how you must specify your data, which attributes they require, and applicable restrictions information. Most item setup sheets contain large numbers of attributes and options, which you can mirror into the platform using a template. Productsup lets you paste your data into a preformatted spreadsheet known as the placeholder setup sheet for efficiency.
Productsup integrates your item setup sheet into the platform by creating a CSV file containing your product attribute names or headers.
Prerequisites [#prerequisites]
There are a few options to choose from before you export data using an item setup sheet in the platform.
. You first need an item setup sheet with requirements and an export.
* Productsup can create a channel template with the attributes you need as an additional service. You can then add your product data to the channel template. Productsup can also add Analyzer tests if they're available to ensure the data meets your export channel requirements.
* You can use a Blank Export and manually add your required attributes in Dataflow within the platform.
. Next, you need a placeholder setup sheet.
* Productsup can create a placeholder setup sheet as an additional service.
* You can manually create and add a placeholder in the placeholder setup sheet.
. (Optional) Map and optimize Dataflow attributes as necessary.
. Set up your export destination.
Manually create an export template and placeholder setup sheet [#manually-create-an-export-template-and-placeholder-setup-sheet]
You need an item setup sheet with requirements to use the *Blank Export* template found in Exports or before Productsup can create an export. To use an item setup sheet, you first need a placeholder setup sheet and an export.
The placeholder setup sheet is a preformatted template for pasting your item setup sheet product data. Use a placeholder sheet to add item setup sheet attributes in the Productsup platform. For example, the platform extracts the values you define from the item setup sheet, then to the placeholder file, and places those product values in your channel for export.
Your item setup sheet can include several sheets if one contains the necessary attributes for sending product data. The following is an example of how an item setup sheet can look:
In the previous example, the sheet has duplicate attribute names. It's impossible to add duplicate attribute names when creating the export and the placeholder value in the placeholder setup sheet. If you find any duplicated values, make them unique. You can use numbers to differentiate attributes of the same name, such as `Feature 1`, `Feature 2`, `Feature 3`, etc.
To add an export in the platform using the previous attribute value examples,
Go to **Exports** from your site's main menu and select **ADD EXPORT**. Search for the channel template *Blank Export* to send product data to and select **Add**. Select **Add** again to confirm it as an export.
Go to **Dataflow** from your site's main menu and select **Blank Export** in the top ribbon drop-down menu on the left.
(For admins only. Otherwise, contact your local admin) On the far right, under the *Blank Export (empty) title*, select the **Drop or Click to add new field button** and enter your attribute names in the *Column name* field. Select **Save** to continue adding attribute values.
Create a placeholder setup sheet [#create-a-placeholder-setup-sheet]
The placeholder setup sheet needs Productsup placeholders. If the contents are text strings, they use the following format:
* `PRODUCTSUP_VALUE('attribute_name')`
For numbers only, use:
* `PRODUCTSUP_NUMBER'('attribute_name')`
For images, apply the following. Including the maximum image size, for example, `100x100` is optional:
* `PRODUCTSUP_IMAGE('attribute_name',100x100)`
The value in the apostrophes must match the attribute names exactly as you created them in the channel template or export. In the current example, the placeholder item setup sheet with all products row-based in one sheet looks as follows:
Productsup also supports fact sheets, which contain one product per sheet, as follows:
Open the original item setup sheet and identify where you need to populate data. If you have any sample lines under the attribute headers, remove them. Do not remove any cells containing formulas.
Leave the row directly underneath the column headers empty, and paste your placeholders in that row for each column. This empty row lets you paste transposed data into this space correctly.
Copy the values you last pasted into the Excel Spreadsheet.In Excel:
* Right-click the first cell in the empty row, select **Paste Special**, mark the **Transpose** option, then select **OK**.
Delete the non-transposed placeholders.
When you save your file with the newly added placeholders, add the ending `_with_placeholders` to help you locate the file.
Ensure each column needing data now contains the correct Productsup placeholder.
Add the ending `“_with_placeholders”` to the placeholder setup sheet filename to identify the file containing placeholders. Save the file as a `.csv` file. You must store the file on an FTP Server and can also create a new FTP via Productsup on the organization level.
Here is an example of a placeholder file filled in:
Map and optimize Dataflow attributes [#map-and-optimize-dataflow-attributes]
It is best to confirm attribute mappings in Dataflow to ensure they are correct, using an export template produced by Productsup or a manually created template. If necessary, for example, you can optimize your data using additional rules in Data View or Lists.
You can use the Analyzer test on the export level if you use an export template produced by Productsup, given they had the requirements before creating the export. The Analyzer test supports you in ensuring your data is correctly formatted before export.
Set up item setup sheet export destination [#set-up-item-setup-sheet-export-destination]
Once you have the export and the placeholder setup sheet, you must add and configure the export destination.
Go to **Exports** from your site's main menu and select **Add export**.
Give your export a custom name if desired, then select **Add**.
* The custom name replaces the export name on the export's overview page.
Select **Add Destination** and choose *Excel Macro Files (xlsm)* from the drop-down list. You can optionally give your destination a title in **Name**. Then select **Save**.
On the destination settings page, enter the placeholder file location in Template File.
Enter your template source FTP credentials in **Template FTP Username** and **Template FTP Password**.
If your template uses a fact sheet template containing one product per sheet, set the worksheet's name in **Factsheet**.
Set **Populate By Columns** to **On** if you want to populate cells using columns instead of rows.
In Sheet Name Column, identify an export column name containing the sheet name where you write for each product.
Turn on your export by switching **Active** to **On**, and lastly, select **Save**.
# Add Google Sheets export
import { Step, Steps } from "fumadocs-ui/components/steps";
The *Google Sheets* export lets you send product data to an existing Google Sreadsheets template. You can use a two-dimensional data table, known as a data table sheet, or one worksheet tab per product, known as a single-item sheet.
For more advanced features of what you can do using a spreadsheet, see [Add Excel Export](/docs/help-center/export-data-feeds/special-export-setups/add-excel-export).
Set up the Google Sheets export [#set-up-the-google-sheets-export]
To use the Google Sheets export with an existing Google Sheets spreadsheet.
Go to **Exports** from your site's main menu and select **Add export**. Search for *Google Sheets*, hover over it, and select **Add**.
Optionally, give your export a custom name in **Name**. The custom name replaces the export's name on the *Overview* page. Then select **Add**.
On the **Exports** page, select the name of the added export to set it up.
Select **Add Destination** and choose *Google Sheets API* from the dropdown. You can optionally give your destination a title in **Name**. Then select **Save**.
In the **Authentication selection**, select your existing Google Sheets authentication or select **Add New Authentication**. Then, select *Google Spreadsheets* from the dropdown. Productsup next redirects you to Google's sign-in for authentication. After authenticating, you return to the Google Sheets API destination to continue with the setup.
In **Spreadsheet Name**, enter the spreadsheet's name where you want to export your data.
In **Sheet Prefix**, enter a sheet prefix name, for example, `Sheet 1`.
Toggle **Allow only headers** to **On**, to let the platform send only headers when there is no data to send.
Turn on your export by selecting **Active** to **On**.
Select **Save**.
# Import products from Icecat
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
[Icecat](https://icecat.com/) is a product catalog solution that syndicates product data and helps brands, retailers, manufacturers, and marketplaces to exchange product content. Icecat lets users work with multilingual and multimedia product catalogs.
Productsup lets you import product data from Icecat to help you gain additional product information and enrich your feed.
Prerequisites [#prerequisites]
To use Icecat as a data source in Productsup, you need:
. An Icecat account and its credentials.
. Icecat supplier IDs to sort the Icecat product data pool and import only the relevant data.
. A link to an Icecat index file for the platform to access the needed Icecat data pool.See [Open Catalog Interface (OCI): Manual for Open Icecat XML and Full Icecat XML](https://iceclog.com/open-catalog-interface-oci-open-icecat-xml-and-full-icecat-xml-repositories/) and [How to Import Free Product Content Into Your Webshop via Icecat](https://iceclog.com/manual-how-to-import-product-content-into-your-webshop-via-icecat/) for information on index files with links.
The Icecat data source in Productsup supports only XML index files.
Add Icecat data source [#add-icecat-data-source]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *IceСat*, select **Add**, give it a name as desired, and then choose **Continue**.
In **Username** and **Password**, provide your Icecat credentials to let Productsup access your desired product data.
In **Supplier ID**, enter the IDs of Icecat content providers to download data from. If you need to enter multiple IDs, separate them with a comma (`,`).
From the **Categories** drop-down list, choose the relevant product categories.
In **Open Icecat index file**, add a link to the Icecat index file that Productsup should use to download product data.
Choose your product data language from the **Language** drop-down list.
To download only the product data added to Icecat within a specific time, define the timeframe:
Enter the desired number of days, weeks, months, or years in **Filter products from**. The expected input format is a digit.
Choose the length of the timeframe in the drop-down list: **Day(s)**, **Week(s)**, **Month(s)**, **Year(s)**.
Specify the desired name of the data source in **Description (optional)**.
Select **Save**.
# Import your products from a shopping platform
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
You can directly import your products from a shopping platform, such as eBay or Amazon. Discover data sources linking to shopping platforms when you add a data source and by selecting the **Shopping Platforms** tab.
Productsup supports imported products from:
* Amazon
* Bhinneka
* bol.com
* Cdiscount
* eBay
* Elevenia
* Etsy
* Facebook
* Google Merchant Center
Importing your products from Amazon Marketplace [#importing-your-products-from-amazon-marketplace]
This API lets you instantly pull valuable product details, such as pricing, number of reviews, ratings, model numbers, and categories, directly from Amazon.com. It's helpful for monitoring product information and pricing; you only must enter the required Amazon ASIN.
Amazon limits the import to up to 100 products per brand. You can request products for multiple brands, however.
To import your products from Amazon Marketplace:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Select **Add** for the *Amazon Product Advertising API* data source.
(Optional) Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Add your login credentials in **AWS API key (mandatory)**, **AWS API Secret Key**, and **AWS Associate Tag (mandatory)**.
* If you do not have these credentials, see [Amazon Associates - Amazon’s affiliate marketing program](https://affiliate-program.amazon.com/).
Add the relevant country in **Country (mandatory)**.
In **Category (mandatory)**, enter search criteria under at least the **Browse Node**, **Keywords**, or **Brand** field.
* In **Brand**, list brands comma-separated without spaces, for example, *Apple,Samsung,Huawei,Oppo*.
(Optional) Filter product availability in **Availability**. Choose between **No Available** or **Available**.
In **Merchant ID**, select **Amazon** or **No Merchant ID set**.
(Optional) In **Condition**, you can select a product's condition from the following drop-down list:
* **No Condition**
* **New**
* **Used**
* **Collectible**
* **Refurbished**
* **All**
(Optional) In **Minimum Price**, enter a minimum price in cents.
(Optional) In **Maximum Price**, enter a maximum price in cents.
Add sorting criteria to inform Amazon how to filter your products if your pull returns more than 100 products in **Sort**.
* Possible options are:
* `AvgCustomerReviews`
* `Featured`
* `NewestArrivals`
* `Price:HighToLow`
* `Price:LowToHigh`
* `Relevance`
Select **Save**.
Import your products from eBay [#import-your-products-from-ebay]
If eBay is your primary online store, you can import product information into Productsup with the category import.
eBay is very restrictive in using its API. If you have multiple categories, add a data source for each category to import them.
To import your products from eBay:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Select **Add** for the *eBay Category Import* data source.
(Optional) Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
In **Environment**, select the space you want to import from eBay. You can choose **Production** or **Sandbox**.
In the **appId** and **globalID** fields, enter credentials from your eBay account.
In **categoryId**, enter the product categories you wish to import.
Select **Save**.
# Import products from xtCommerce
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
xtCommerce is an open-source eCommerce platform popular in the German-speaking market. The *xtCommerce Products* data source pulls your full product catalog from an xtCommerce shop into Productsup, including base attributes (SKU, price, stock, status, weight, image) and language-specific attributes (name, description, short description, URL) for every language you configure.
To import products from xtCommerce to Productsup, you need to add and set up the *xtCommerce Products* data source in **Data Sources**.
Prerequisites [#prerequisites]
To use xtCommerce as a data source in Productsup, you need:
. The base URL of your xtCommerce shop, for example `https://shop.example.com`.
. An API username and password configured in the shop admin under **Settings → API**. The xtCommerce API plugin must be active.
. The list of language codes you want to import, for example `de`, or `de,en,fr` for multilingual catalogs.
xtCommerce uses a function-based JSON API. Authentication credentials are passed in every request, so the credentials you enter in Productsup must remain valid for the duration of the import.
Add the data source xtCommerce Products [#add-the-data-source-xtcommerce-products]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *xtCommerce Products*, select **Add**, give it a name as desired, and then select **Continue**. The custom name replaces the data source name on the *Data Sources Overview* page.
In **Shop URL**, enter the base URL of your xtCommerce shop, without a trailing slash. For example, `https://shop.example.com`.
In **API Username**, enter the API username configured in your xtCommerce shop admin under **Settings → API**.
In **API Password**, enter the password for that API user.
In **Languages**, enter a comma-separated list of language codes to import, for example `de,en,fr`. Leave it as `de` to import only the default language.
Each language adds one extra API request per product page. For every language you list, the platform creates language-specific columns in the feed using the pattern `_` — for example, `products_name_de`, `products_description_en`.
Optionally, enter a custom name in **Description (optional)**.
Select **Save** and then **Import** at the top of the page.
Imported attributes [#imported-attributes]
The data source returns the following attributes for each product:
| Attribute | Description |
| ----------------------------------- | ----------------------------------- |
| `products_id` | Unique product ID from xtCommerce. |
| `products_model` | SKU or article number. |
| `products_price` | Product price. |
| `products_quantity` | Stock quantity. |
| `products_status` | `1` if active, `0` if inactive. |
| `products_image` | Relative path to the product image. |
| `products_weight` | Product weight. |
| `products_name_` | Product name per language. |
| `products_description_` | Product description per language. |
| `products_short_description_` | Short description per language. |
| `products_url_` | Product URL per language. |
If the import returns zero products even though credentials are accepted, check that the xtCommerce API plugin is active in your shop admin.
# Import products from a shop system
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
You can import your products directly from your shop system, such as WooCommerce or Shopify.
To find available shop systems:
Go to **Data Sources** from your site's main menu and select **Add data source**.
Select **Shop Systems** in the filters or use **Search** to find a desired shop by its name.
Productsup supports product imports from the following shop systems:
* BigCommerce
* Blibli
* Magento
* PrestaShop
* Salesforce
* Shopify
* VTEX
* WooCommerce
Most of the shop systems connect to Productsup via REST or SOAP API connections. You can test REST API credentials in a regular Internet browser. Most [API clients](https://www.postman.com/) can perform both REST and SOAP test requests.
Here are some troubleshooting recommendations if the credentials don't work in a browser or an API client:
* Add or remove `www` and similar parts of the URL
* Add or remove a slash (`/`) inside or at the end of the URL
* Try a secure protocol, HTTPS vs. HTTP
* Set up new API credentials
* Check the API version documentation
* Check the shop system forums for common errors
Import products from BigCommerce [#import-products-from-bigcommerce]
BigCommerce is the world's leading cloud-based eCommerce platform for established and rapidly growing businesses. The platform combines enterprise functionality with an open architecture and app ecosystem. It powers and boosts the performance of eCommerce websites for successful retailers worldwide.
Before importing your products from BigCommerce, you must create an account in BigCommerce. See [Creating an API Account](https://support.bigcommerce.com/s/article/Store-API-Accounts?language=en_US#creating).
Go to **Data Sources** from the site's main menu and select **Add data source**.
Search for *BigCommerce API Import OAuth* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the *Data Sources Overview* page.
In **Client ID**, enter the client ID from the BigCommerce API account.
In **Access Token**, add the access token from the BigCommerce API account.
In **Store Hash**, enter a unique store hash value in the API path from the BigCommerce API account.
Optionally, enter a custom name in **Description (optional)**.
Select **Save**.
Import products from Blibli.com [#import-products-from-bliblicom]
Blibli.com is an Indonesian online shopping mall pioneer committed to providing a convenient, safe, simple, and fun online shopping experience.
Before importing your products from Blibli, you must create an account there.
Go to **Data Sources** from the site's main menu and select **Add data source**.
Search for *Blibli* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the *Data Sources Overview* page.
In **ZIP Password**, enter the password for your Blibli zip file.
Optionally, enter a custom name in **Description (optional)**.
Select **Save**.
Import products from Magento [#import-products-from-magento]
Magento is a modern cloud commerce platform with an open-source ecosystem. Flexible for B2C, B2B, and hybrid solutions, Magento extends beyond the shopping cart for every shopping experience, including email, mobile, in-store, shipping, and marketplaces.
You can import your products from Magento by choosing a method appropriate to your version.
Import from Magento 1.x [#import-from-magento-1x]
Before importing your products from Magento, you must create your account in Magento. To configure Magento, see [Magento Developer Documentation](https://devdocs.magento.com).
Go to **Data Sources** from the site's main menu and select **Add data source**.
Search for *Magento 1.x SOAP API* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the *Data Sources Overview* page.
Add the Magento SOAP URL you previously set up in your Magento account. The link format should be such as `https://mymagentoshop247.com/api/soap/?wsdl`.
Perform a basic functionality test by selecting your link. It displays information about the web service.
Enter your credentials in **Username** and **Password**.
Define how many API calls you want the platform to make simultaneously in **API multiCall size**.
If you want to receive only a specific range of product IDs, add the first value in **Start index** and the last value in **End index**.
If you manage several stores and want to download products only from a specific store, enter the store's code in **Store view code**.
Optionally, enter a custom name in **Description (optional)**.
Select **Save**.
Import from Magento 2.x [#import-from-magento-2x]
Before importing your products from Magento, you must create an account in Magento. See [How do I get started?](https://devdocs.magento.com/guides/v2.4/get-started/bk-get-started-api.html#procedure)
Go to **Data Sources** from the site's main menu and select **Add data source**.
Search for *Magento 2.x REST API* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the *Data Sources Overview* page.
Enter your credentials in **Username** and **Password**.
Add the Magento REST URL you previously set up in your Magento account. The link format should be `https://mymagentoshop247.com/api/soap/?wsdl`.
Perform a basic functionality test by selecting your link. It displays information about the web service.
In **Page size**, define the number of products to extract with each API call, depending on your hosting server's capabilities.
Enter a filter in **Data Filter Query**.
In **Parallel Workers**, define the maximum amount of API calls to make at once to access products, stock, attributes, etc.
Set **Include product details** to **On**.
You may need to enter a **Stock Reference Code** to pull the correct stock.
* In this case, set **Include product details** to **Off**.
Select the behavior of product link information in **Product links**:
1. *Explode* splits links into separate attributes.
2. *Discard* removes the links.
3. *Bundle* groups several attributes if there are too many of them.
Optionally, enter a custom name in **Description (optional)**.
Select **Save**.
By default, the platform retrieves products from the following endpoints:
`/products` – main product catalog.
`/products/attributes` – details of the product such as color, size, gender, etc.
`/categories` – the categories for the website taxonomy and specific products.
If you need to fetch products from other endpoints, contact [support@productsup.com](mailto:support@productsup.com).
Import products from PrestaShop [#import-products-from-prestashop]
PrestaShop is an open-source eCommerce solution that powers more than 250,000 stores worldwide. It offers online shopping cart solutions with more than 300 advanced features fitting the needs of any online business.
Before importing your products from PrestaShop, you must create an access key in your PrestaShop account. See [Create an access key](https://devdocs.prestashop.com/1.7/webservice/tutorials/creating-access/#create-an-access-key).
Once you've created an access key, you're ready to set up the data source in the platform:
Go to **Data Sources** from the site's main menu and select **Add data source**.
Search for *Prestashop Import* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the *Data Sources Overview* page.
In **API Key**, enter the access key you've created in the PrestaShop account.
Add your web shop's domain in **Domain** in the format such as `https://www.yourdomain.de`.
Optionally, in **Default Language ID**, define the language ID for the products you are importing. See [Languages](https://docs.prestashop-project.org/1.7-documentation/user-guide/improving-shop/going-international/localization/languages) at PrestaShop website.
If necessary, enter credentials in the **HTTP Auth User** and **HTTP Auth Password** fields.
To import all your product variants, set **Fetch Variants** to **On**.
Optionally, enter a custom name in **Description (optional)**.
Select **Save**.
Import data from Salesforce [#import-data-from-salesforce]
You can retrieve three types of data from Salesforce Commerce Cloud:
* Your catalog with all your products and their attributes.
* Your pricing data.
* Your inventory data containing your products' stock levels.
Import your product catalog from Salesforce [#import-your-product-catalog-from-salesforce]
To import catalog data from Salesforce Commerce Cloud into Productsup, you need to export your Salesforce product data into an XML file and store it on an FTP server. You can use the Productsup Cartridge add-on or the out-of-the-box capabilities of Salesforce to create the XML file. To store it, you can use the Productsup FTP Server. See [Create an FTP server hosted by Productsup](/docs/help-center/get-started/create-and-manage-an-ftp-server/create-an-ftp-server-hosted-by-productsup) for more information.
To request Productsup Cartridge, contact your Customer Success Manager or [support@productsup.com](mailto:support@productsup.com).
If you use Salesforce Commerce Cloud as a B2B organization, you should instead consider using the out-of-the-box capabilities of Salesforce to run the export.
Once the XML file is ready and available on an FTP server, the *Salesforce Commerce Cloud (Catalog)* data source option lets you import your products into Productsup.
Go to **Data Sources** from your site's main menu and select **Add data source**.
Search for *Salesforce Commerce Cloud (Catalog)*, select **Add**, change the name of the data source as desired, and then select **Continue**.
In **Host**, enter a link to your FTP server. If you are using the Productsup FTP Server, use the link suggested in the field.
In **URI**, specify the path to your import file on the FTP server. The path is a string of characters that uniquely identifies a location in the directory structure of your FTP server.
In **Filename**, enter the name of your import file that corresponds to the name of your XML file on the FTP server.
Provide your FTP authentication data in **Username** and **Password**.
In **Locale**, choose which locales Productsup should import from the file. You can choose to import:
1. Products that belong to a specific locale only. Select the needed language or market code to import products that belong to the needed locale.
2. All products that belong to all locales in the file. Select **all** to import all products from all locales.
3. The default locale of the file only. Select **x-default** to import products of the default locale.
Edit the name of the data source in **Description (optional)** as needed.
Select **Save**.
Import price and inventory data from Salesforce [#import-price-and-inventory-data-from-salesforce]
There are two options for importing price and inventory data from Salesforce Commerce Cloud into Productsup:
* The Feed URL data source.
* The Productsup Platform API data source.
If your inventory and price data don't change frequently, you can use the Feed URL data source option to import prices and stock levels as additional data sources. See [Import a file from a URL](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-a-url) and [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources).
While setting up your new additional data source with price or inventory data, set the `attributes_product-id` attribute in **ID Column In This Feed** as the unique item identifier.
In **ID Column From Your Main Feed**, choose the unique item identifier column from the *Salesforce Commerce Cloud (Catalog)* data source. *Salesforce Commerce Cloud (Catalog)* is your main data source.
If your price and inventory data change frequently, you can use the *Productsup Platform API* data source option to import this data into the platform. Selling products on multiple marketplaces and altering prices to support recurrent promotional campaigns are common causes of frequent price and inventory data updates.
The *Productsup Platform API* data source option requires additional configurations in Salesforce. For example, you need to set up delta jobs that look for price and inventory data changes and push those changes to the Productsup Platform API. See [Import from APIs](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-from-apis#section-idm232211500950421) for more information.
It may be the case that your price data doesn't change frequently, but your inventory data does. If so, you can use the *Feed URL* data source option to import the price data and the *Productsup Platform API* data source option to import your inventory data.
Import products from Shopify [#import-products-from-shopify]
Shopify is a cloud-based, multi-channel commerce platform designed for small and medium-sized businesses. Merchants can use this platform to manage their stores across multiple sales channels, such as web, mobile, social media, marketplaces, brick-and-mortar, and pop-up shops.
You can use the *Shopify Products* data source in Productsup to import enriched product data from Shopify.
Shopify is deprecating its REST API and has released the GraphQL API. The *Shopify Products* data source imports products from Shopify using the GraphQL API.
Prerequisites [#prerequisites]
Before importing your products from Shopify, you need to get an API access token using a custom app in Shopify. See [Custom apps](https://help.shopify.com/en/manual/apps/custom-apps?shpxid=d3c32180-05F2-4F86-2737-02CF3AA823AF) for detailed instructions in the Shopify Help Center.
The Productsup Help Center doesn't bear any responsibility and accountability for the accuracy and relevance of the processes, features, UI elements, and other information mentioned in the following instructions about third-party websites and platforms. The following instructions aim to help the readers of the Productsup Help Center perform complex activities outside the Productsup platform while the official technical documentation of the website or platform in question doesn't provide easy-to-find information on the needed activities.
Go to the Shopify admin panel, and select **Settings** in the bottom-left corner. Then, select **Apps and sales channels**.
Select **Develop apps**, and choose a relevant custom app. If you don't have any custom apps yet, create one by selecting **Create a custom app**. Set up your app by choosing an app developer, assigning permissions, and defining API scopes.
The scopes `read_products` and `read_inventory` are required to import your data via the Shopify Products data source.
You must enable additional scopes to fetch additional data from Shopify, depending on your use-case: `read_locations`, `read_metaobject_definitions`, `read_metaobjects`, `read_product_feeds`, `read_product_listings`, `read_translations`.
See the [access-scopes documentation](https://shopify.dev/docs/api/usage/access-scopes) for a full list of Shopify's scopes.
Go to the *API credentials* section, select **Install app**, and confirm the action.
Select **Reveal token once**. The token is shown only once, so save it securely as you will need it to set up the *Shopify Products* data source in Productsup.
Set up the Shopify Products data source [#set-up-the-shopify-products-data-source]
Once you've created an API token, you're ready to set up the data source in the platform:
Go to **Data Sources** from the site's main menu and select **Add data source**. Search for *Shopify Products* and select **Add**.
Give your data source a custom name if needed, and select **Continue** to proceed. The custom name replaces the data source name in the *Overview* tab in Data Sources.
Add your shop's web address in **Shop URL**.
Enter the API token in **Admin API access token**. The token always starts with `shpat_`.
Toggle **Include Metaobject Data** to one of the following states:
* If set to *On*, the platform imports the Metaobject fields as data. In this case, you must enable the `read_metaobjects` scope for the applied Shopify Auth.
* If set to *Off*, the platform imports the Metaobject fields as links instead of data. This setting requires no additional scope.
You can use filters to import only specific sets of products to Productsup:
If you use one of the following filter types, avoid setting up any other filter types in the same data source.
1. To import only products with the needed states, select the desired states in **Status**. When you select a status, the platform excludes products with other statuses from the import. By default, the data source imports products of all statuses. You can select a necessary combination of statuses by holding the *cmd* or *Ctrl* key.
2. To import products created, updated, or published after a certain date and time, enter the corresponding values in **Created at minimum**, **Updated at minimum**, and **Published at minimum**. Enter the value in the format `xxD:xxH`, where `xx` is the number of days and hours the platform should subtract from the date and time of the import run. For example, `10D00H` means ten days and zero hours before the date and time of the import run.
If you enter values in more than one of these time filter fields, they use the `AND` logic, which means you import only products that meet all the filtering criteria. For example, if you enter values in all three fields, the platform imports only the products that had all three changes (creation, update, and publication) at the chosen times. To follow the `OR` logic and import data created, updated, or published at the needed times, set up a separate data source for each time filter, for example, one for **Created at minimum**, one for **Updated at minimum**, and another one for **Published at minimum**.
Use these settings if you have a large product catalog and only want to import a small number of products to speed up the import process.
3. To import only products belonging to a particular collection in your Shopify account, enter the ID of the desired collection in **Collection Id**. You can create a new collection in Shopify to group the exact products you want to import into Productsup. You can also use an already existing collection. See [Collections](https://help.shopify.com/en/manual/products/collections) for more information.
You can't combine the **Collection Id** filter with any other filters in the data source setup. Instead, use collections in Shopify to group and filter the products you need to import into Productsup.
In **Pricing context**, enter valid country codes separated by a comma. See [CountryCode](https://shopify.dev/docs/api/admin-graphql/2025-01/enums/CountryCode). If you enter `DE,FR` in this field, the platform creates the following attributes to import country-specific pricing data: `contextualPricingDE_amount`, `contextualPricingDE_currencyCode`, `contextualPricingFR_amount`, `contextualPricingFR_currencyCode`.
In **Translations locale**, you can enter the `isoCodes` of the needed locales, for example, *de, nl, en*, to import all attributes containing localized content for these locales. See [availableLocales](https://shopify.dev/docs/api/admin-graphql/2025-01/queries/availableLocales).
Using **Translations locale** requires the additional scope `read_translations`.
Optionally, enter a custom name for the data source in **Description (optional)**.
Select **Save**.
During the import, the platform adds the Shopify description attribute values in the **body\_html** attribute.
Set up the Shopify Products via Webhooks data source [#set-up-the-shopify-products-via-webhooks-data-source]
The *Shopify Products via Webhooks* data source keeps your product data close to real time. Instead of polling Shopify on a schedule like the *Shopify Products* data source, it registers a webhook that sends product create, update, and delete events to Productsup as soon as they happen on your Shopify store. Because Stream API acts as the intermediary, the platform can pick up this data on your site's next import run, independent of a fixed polling schedule. You can use it as a standalone data source, or as an additional data source that enhances your *Shopify Products* data source with faster updates. See [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources) for more information.
This data source uses the same Shopify custom app described in [Prerequisites](#section-idm234959747776748). You also need a Stream API Personal Access Token.
Go to **Data Sources** from the site's main menu and select **Add data source**. Search for *Shopify Products via Webhooks* and select **Add**.
Add your shop's web address in **Shopify Shop URL**.
Optionally, enter a signing secret in **Shopify Webhook Secret**.
If you leave this field empty, Productsup accepts unverified webhook requests. Enter your Shopify Webhook Secret so Productsup can validate that a request is signed correctly and genuinely originates from your Shopify store.
Enter your access token in **Shopify Admin Access token**. This field only applies to Shopify applications set up before January 1, 2026.
Configure the product data settings, such as **Shopify Include Metadata**, **Shopify Status**, and **Shopify Pricing Context**, the same way as for the *Shopify Products* data source. See [Set up the Shopify Products data source](#section-idm353495977730460) for details on each setting.
Enter your token in **Stream API Personal Access Token**. Stream API acts as the intermediary for this integration: it receives your Shopify data as soon as it changes, but the platform needs this token to import that data into your site. If you do not have a token, request one from [support@productsup.com](mailto:support@productsup.com).
Give your webhook a name in **Webhook Name**.
Select **Create Webhook**. The platform creates the webhook, registers it with your Shopify application for product create, update, and delete events, and fills in **Webhook upload products endpoint** with the resulting URL.
Optionally, enter a custom name in **Description (optional)**.
Select **Save**.
Update or remove a Shopify webhook data source [#update-or-remove-a-shopify-webhook-data-source]
Once you have created a webhook, **Create Webhook** turns into **Update Webhook**. Use it to rename your webhook or to rotate a credential, such as the Shopify Admin Access Token: open the data source, update the field, and select **Update Webhook**. The platform re-triggers the registration with Shopify so your subscriptions stay in sync.
The URL in this screenshot is an example and does not exist. In your own **Webhook upload products endpoint**, the ID is not surrounded by `<` and `>` characters.
To remove the data source, go to **Advanced Settings** and select **Delete this import**. The platform deregisters the webhook from Shopify automatically, so no manual clean-up is needed there.
Import products from VTEX [#import-products-from-vtex]
To import your products from VTEX, see [Import products from VTEX](/docs/help-center/import-data-feeds/import-data-from-third-party-external-systems/import-products-from-vtex).
Import products from WooCommerce [#import-products-from-woocommerce]
WooCommerce is an open-source eCommerce plugin for WordPress.
To import products from WooCommerce, you must set up API access in your WordPress store. See [WooCommerce REST API](https://docs.woocommerce.com/document/woocommerce-rest-api/#).
Once you've created the API access, you're ready to set up the data source in the platform:
Go to **Data Sources** from the site's main menu and select **Add data source**.
Search for *WooCommerce Products Importer* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the *Data Sources Overview* page.
Add your web shop's address in **Shop url**.
Enter the API credentials you've created in your WooCommerce account in the **API Key** and **API secret** fields.
Select a WooCommerce version in **API Version**.
To import all your product variants, toggle **Import variants** to *On*.
If you want to import only specific attributes, you can type only these attributes in **Import data filter**. Separate them by a comma (`,`) without spaces such as `id,name,description`.
To send auth secrets as a string for OAuth 1.0, toggle **OAuth 1.0 auth as string** to *On*.
Optionally, enter a custom name in **Description (optional)**.
Select **Save**.
# Import tracking data from Google Analytics 4
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Productsup has a new API-based data source called *Google Analytics 4 (GA4)* to let you import your tracking data from the new version of Google Analytics. An example of using Google Analytics data in Productsup involves letting the platform exclude low-performing products from export.
Prerequisites [#prerequisites]
To import data from Google Analytics 4 into Productsup, you need the following:
. A Google Analytics 4 account containing relevant tracking data.
. Google Analytics authentication in a relevant site, project, or account. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) for the setup information.
. A property ID associated with the relevant tracking data in Google Analytics. See [How to check property type](https://support.google.com/analytics/answer/11583832?hl=en#:~:text=4%20property%20already.-,Instructions,-To%20find%20your).
. A list of relevant metrics and dimensions from your Google Analytics account.
Not all Google Analytics metrics and dimensions are compatible. See [GA4 Dimensions & Metrics Explorer](https://ga-dev-tools.web.app/ga4/dimensions-metrics-explorer/) to check which metrics and dimensions you can pair up.
. A JSON request with filtering settings.This prerequisite is only relevant if you plan to use filtering because you don't need Productsup to import all data available for your selected metrics and dimensions. See [GA Query Explorer](https://ga-dev-tools.web.app/ga4/query-explorer/) to set up the needed filter and copy it as an auto-generated JSON request.
Import data via Google Analytics 4 (GA4) [#import-data-via-google-analytics-4-ga4]
To import your tracking data from Google Analytics 4, run the following steps:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Google Analytics 4 (GA4)*, select **Add**, give it a name as desired, and select **Continue**.
In **Web property ID**, enter the relevant property ID found in your Google Analytics 4 account.
In **Metrics**, enter the Google Analytics metrics containing the data you want to import. Use the comma (`,`) to separate values if you need to import data for multiple metrics.See [GA4 Dimensions & Metrics Explorer](https://ga-dev-tools.web.app/ga4/dimensions-metrics-explorer/) for a list of metrics you can use.
In **Dimensions**, enter the Google Analytics dimensions containing the data you want to import. Use the comma (`,`) to separate values if you need to import data for multiple dimensions.See [GA4 Dimensions & Metrics Explorer](https://ga-dev-tools.web.app/ga4/dimensions-metrics-explorer/) for a list of dimensions you can use with the selected metrics.
Define your tracking data period in **Start date** and **End date**. The platform doesn't import data gathered outside this period.These fields support multiple date formats:
1. Full date: `YYYY-MM-DD`.
2. Word reference: `today` or `yesterday`.
3. Phrase reference: `NdaysAgo`, where *N* is the number of days.
If you don't want to import all the data belonging to the selected metrics and dimensions, you can use a filter:
1. Go to [GA Query Explorer](https://ga-dev-tools.web.app/ga4/query-explorer/) to set up the desired filter and copy the auto-generated JSON request containing your filtering settings.
2. Go back to the data source setup page in Productsup and paste the JSON request in **Filters**.
In **Authentication selection**, choose the Google Analytics authentication you have previously created in your site, project, or organization.If you haven't created the needed Google Analytics authentication yet, select **Add New Authentication**. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems) for more information.
In **Description (optional)**, modify the name of the data source as needed.
Select **Save**.
If your site already has a main data source, and the platform uses it to import your product catalog, you can make Google Analytics 4 (GA4) an additional data source.
See [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources) for more information.
1. Go to **Data Sources** and select the cogwheel (**⚙**) icon next to your Google Analytics 4 (GA4).
2. In the **Content Mode** panel, select **Additional Data Source**.
3. Define how the platform should import data from Google Analytics by choosing the desired option in **Additional Data Source Types**.
4. Choose the column that uniquely identifies products in this data source in **ID Column In This Feed**.
5. Choose the column that uniquely identifies products in your main data source in **ID Column From Your Main Feed**.
Select **Import** in the top-right corner of your view.
# Import product offers from Amazon
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Productsup lets you import your existing offers from Amazon Seller Central account using the data source *Amazon Selling Partner API – Offers*. This data source connects to your Amazon seller account via Amazon Selling Partner API (SP-API).
See [Add Amazon Seller Central – Product Creation (US) export](/docs/help-center/export-data-feeds/add-export/add-amazon-seller-central-product-creation-us-export) to learn more about the Amazon ecosystem in Productsup.
Prerequisites [#prerequisites]
To use data source *Amazon Selling Partner API – Offers* in Productsup, you need to:
. Create an Amazon seller account. You need to provide your account data to Productsup to set up the API connection.
. Upload your product data to Amazon.
Add the data source Amazon Selling Partner API – Offers [#add-the-data-source-amazon-selling-partner-api--offers]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Amazon Selling Partner API – Offers*, select **Add**, give it a name as desired, and then select **Continue**.
In **Authentication**, choose the Amazon authentication you previously set up in your organization, project, or site. If you haven't set up Amazon authentication yet, perform the following steps:
1. Select **Add New Authentication**.
2. Select *Amazon Authentication (BETA version by Amazon)* in **Type**. You can optionally give your authentication a name.
3. Select **Next**.
4. If applicable, select **Region** and **Country** to choose your marketplace country and locale.
5. Select **Connect**.
Before proceeding, Productsup redirects you to Amazon to finalize your authentication. After completing the authentication setup, Amazon redirects you back to Productsup.
6. Close the confirmation window to proceed.
Choose the market of interest in **Marketplace ID**.
In **Description (optional)**, add a description for your data source. It substitutes the data source name on the *Overview Data Sources* page.
Select **Save**.
# Import data from Bluestone PIM
import { Step, Steps } from "fumadocs-ui/components/steps";
Bluestone PIM is a composable SaaS PIM platform that lets you connect and share your product information with other software, marketplaces, or platforms.
Productsup lets you import your data from Bluestone PIM account using the data source *Bluestone PIM*.
Prerequisites [#prerequisites]
To import data from Bluestone PIM, you need:
. Have an account in Bluestone PIM.
. Have an API key from your Bluestone PIM account.
Add the data source Bluestone PIM [#add-the-data-source-bluestone-pim]
Go to **Data Sources** from your site's main menu, and select **Add data source**.
Search for *Bluestone PIM*, select **Add**, give it a name as desired, and then select **Continue**.
In **EVN STAGE**, choose either the test or production environment.
Add your API key from Bluestone PIM in **PAPI Key**.
In **Category ID**, enter your Bluestone category ID. You can enter only one (1) category per datasource currently.
In **Import chunk size**, enter the number of products you want to import per request.
Enter the number of thread workers for concurrent API calls in **Concurrent workers**. It must be a minimum of `1`. By default, it is `5`.
For testing purposes only, in **Max product limit**, enter the maximum number of items you want to import.
In **Description (optional)**, add a description for your data source. It substitutes the data source name in the *Overview* tab in Data Sources.
Select **Save**, and choose **Import** in the top-right corner of the page.
# Find Amazon ASINs by barcode
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
If you want to co-list against products already in Amazon's catalog but only know them by barcode, this data source searches Amazon's public catalog and returns the matching ASIN for each identifier. It works for products your account does not sell yet — the existing Amazon Product Import datasources only return ASINs your account already lists.
The ASINs this data source finds are typically used as input for the [Amazon Offer Creation export](/docs/help-center/export-data-feeds/add-export/add-amazon-offer-creation-export), which needs an existing ASIN to list an offer against.
Prerequisites [#prerequisites]
To use this data source, you need:
* An active Amazon account connection in Productsup.
* A list of the product identifiers you want to look up: UPC, EAN, GTIN, ISBN, or JAN codes.
* The identifiers must all be the same type. If you have a mix, for example some UPCs and some EANs, run this data source once per type.
Add the data source [#add-the-data-source]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Amazon Catalog ASIN Search & Match*, select **Add**, give it a name, and select **Continue**.
In **Authentication**, select an existing authentication or select **Add New Authentication** to connect your Amazon account via OAuth.
In **Identifiers**, enter your barcodes separated by `#`, for example `840132647045#840132676922`.
In **Identifier type**, select the type all of your identifiers share: *UPC*, *EAN*, *GTIN*, *ISBN*, *JAN*, or *MINSAN*.
Amazon does not validate the identifier type you choose. If you select the wrong type, every identifier returns as unmatched instead of showing an error, so double-check this before your first run.
In **Marketplace ID**, select one or more marketplaces to search.
Optionally, set **Max identifiers** to cap how many barcodes this data source processes per run. The default is 10,000.
Select **Save**.
What you get back [#what-you-get-back]
Each run adds one row per identifier to your data, with the following columns:
| Column | Description |
| :------------------------- | :---------------------------------------------------------------------------- |
| Input identifier | The barcode you searched for |
| ASIN | The matching Amazon ASIN, if found |
| Title, brand, product type | Basic product details from Amazon's catalog, to help you confirm the match |
| Match count | How many candidate ASINs Amazon returned for this identifier |
| Requires review | Set to *true* when a barcode returns no match or more than one candidate ASIN |
A barcode with zero matches still produces a row, with an empty ASIN and *requires review* set to *true* — it is never silently dropped.
Use the results [#use-the-results]
Rows with a single, clean match are ready to use as the ASIN for your [Amazon Offer Creation export](/docs/help-center/export-data-feeds/add-export/add-amazon-offer-creation-export). Rows flagged *requires review* need a manual decision before you list an offer against them, since Amazon returned either no candidate or several possible matches.
Common issues [#common-issues]
| Issue | Likely cause | What to do |
| :----------------------------------------- | :--------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- |
| All identifiers come back unmatched | Wrong identifier type selected | Confirm the barcode type and run the data source again |
| An identifier has multiple candidate ASINs | The barcode is shared across several catalog listings | Review the candidates manually and choose the correct ASIN |
| An identifier has zero matches | The product isn't in Amazon's catalog under this identifier, or the marketplace is wrong | Confirm the barcode and marketplace, or check with the brand for the correct identifier |
# Import products from Akeneo PIM
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
In Productsup, you can directly import products from a product information manager (PIM), such as Akeneo.
You can use the following data sources to import your data from Akeneo:
* Akeneo Cloud API v5.0
* Akeneo File Import
Prerequisites [#prerequisites]
To use Akeneo Cloud API v5.0 as a data source in Productsup, you need:
* Have an account in the Akeneo Serenity Enterprise and Growth editions. See [What is the Serenity version](https://help.akeneo.com/pim/serenity/versions-in-detail.html#serenity).
* Create a connection in Akeneo. See [Create a connection](https://help.akeneo.com/pim/serenity/articles/manage-your-connections.html#create-a-connection).
Set up Akeneo Cloud API data source in Productsup [#set-up-akeneo-cloud-api-data-source-in-productsup]
After creating a connection to Productsup from your Akeneo account, you can use the same credentials to proceed with the Akeneo Cloud API data source in Productsup.
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**. Then choose *Akeneo Cloud API v5.0* and select **Add**.
Optionally, give your data source a custom name. This replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
In **Host**, enter the URL path to your data.
Enter the four (4) credentials you received when you previously created the Akeneo connection in **Username**, **Password**, **ClientId**, and **Client Secret**.
Choose which delimiter to use to group several products in **Bundle Delimiter**. The default is `###`.
Set the number of products that the platform can fetch at a time in **Limit**.
Optionally, add entities and assets. Productsup imports all products and describes in the logs which entity groups and assets are available in Akeneo. By default, Productsup doesn't import entities or assets. If you wish to import entities or assets from Akeneo, take the following steps:
Switch the **Import Entities** or **Import Assets** buttons to *ON*.
In **Add Entities** and **Add Assets**, enter the names of the entities and assets you wish to import. Add each entity and asset names with a new line.
You can see which entities and assets are in the Run log during the first import run. Open the Run log panel anytime in Productsup by selecting its icon in the top-right header.
Switch the **Import Category Path** to *On* to import the category path of your products.
Switch the **Import Attribute Options** to *On* to get a list of attribute options.
Enter asset filters in **Search filter Assets**. For example, *\{"updated":\[\{"operator":">","value":"2018-07-04T10:00:00Z"}]}}*.
Enter attribute filters in **Search filter Attribute**. For example, *\{"code":\[\{"operator":"IN","value":\["code1","code2"]}]}*.
Enter entity filters in **Search filter Entities**. For example, *\{"complete":\{"operator":"=","value":true,"channel":"ecommerce","locales":\["en\_US"]}}*.
Enter family filters in **Search filter Families**. For example, *\{"code":\[\{"operator":"IN","value":\["family\_code1","family\_code2"]}]}*.
Enter product filters in **Search filter Products**. For example, `{"enabled":[{"operator":"=","value":true}]}`.
Enter the product location filter for your product downloads in **Filter by Locales**.
In **Filter by Scope**, enter the filter for product values to return relevant attributes for the given channel and the non-localized or irrelevant attributes.
In **Description (optional)**, you can change this data source name, which appears in your data source list.
Select **Save** and select **Import** at the top of the page.
Continue in your Akeneo account to configure your feed export to Productsup. See [Export your data](https://help.akeneo.com/pim/serenity/articles/exports.html).
Next, import your data from Akeneo to Productsup. See the following section.
Set up Akeneo File Import in Productsup [#set-up-akeneo-file-import-in-productsup]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**. Then, choose *Akeneo File Import* and select **Add**.
Optionally, give your data source a custom name. This replaces the name of the data source on the *Data Sources Overview* page. Then select **Continue**.
In **Host (required)**, enter the URL path to your data.
Enter your Akeneo login credentials in **Username (optional)** and **Password (optional)**.
Enter the name of your product file for import in **Product Filename (required)**.
In **Product URI**, enter the Uniform Resource Identifier (URI) that identifies your specific resource.
Choose one of the following CSV delimiter types in the **Product CSV Delimiter** drop-down list:
* `, COMMA`
* `| PIPE`
* `; SEMICOLON`
* `\t TAB`
* `~ TILDE`
Optionally, you can repeat the previous three steps for the category, variant, attribute, and family files in the corresponding fields that follow.
In **Locale**, choose the product location for your product downloads.
In **Bundle Delimiter**, choose which delimiter to use to group several products. The default is a pipe `|`.
In **Channel (optional)**, enter the Akeneo channel you wish to import from. The default is set to *all*.
Switch the **Enabled** button to *On* to activate the data source.
In **Output filter**, you can choose to apply a filter to only import specific columns. To accomplish this, set a Pearl Compatible Regular Expressions (PCRE) or Regular Expression (RegEx) condition to exclude specific columns under the output filter.See [How does the Regular Expression (RegEx) filter work?](https://support.docparser.com/article/1290-how-does-the-regular-expression-regex-filter-work) to learn more.
In **Description (optional)**, you can customize this data source name, which appears in your data source list.
Select **Save** and select **Import** at the top of the page.
# Import products from Snowflake
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
[Snowflake](https://www.snowflake.com/en/) is a cloud-based data storage company offering various solutions for enterprise clients to help you optimize supply chain planning, demand forecasting, and inventory management. To import products from your Snowflake database to Productsup, add and set up the *Snowflake Import v1* data source in Data Sources.
Prerequisites [#prerequisites]
To use Snowflake as a data source in Productsup, you need:
. A Snowflake account and login information.
Add Snowflake data source [#add-snowflake-data-source]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Snowflake Import v1*, select **Add**, give it a name as desired, and then select **Continue**.
Enter your Snowflake data into the following fields:
* **Username** – Snowflake user id
* **Password** – Snowflake user account password
* **Query** – SQL query
* **Driver** – Snowflake driver name
* **Host** – Database host to connect with Snowflake
* **Port** – Database port to connect with Snowflake
* **Database** – Snowflake database name
Specify the desired name of the data source in **Description (optional)**.
Select **Save**.
To start the import, select **Import** in the top-right corner of your site's view.
# Import data from Facebook Ad Insights
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Facebook Audience Insights gives you aggregated information about three (3) groups of people who are:
. People connected to your Page
. People in your Custom Audience
. People on Facebook
With this information, you can create content that resonates and increase your current audience.
To import products from your Facebook Audience Insights to Productsup, you need to add and set up the data source *Facebook Ad Insights* in Data Sources.
Prerequisites [#prerequisites]
To use Facebook Ad Insights as a data source in Productsup, you need:
. Your Facebook account.
Add the data source Facebook Ad Insights [#add-the-data-source-facebook-ad-insights]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Facebook Ad Insights*, select **Add**, give the data source a name as desired, and then select **Continue**.
In **Account Id**, enter the account ID of your Facebook Audience Insights.
In **Campaing Id**, enter the campaign ID if you only want to import insights for a specific campaign.
In **Time Period**, select the period for which you want to import the data.
In **Authentication**, select the **Add New Authentication** button. In *Add new authentication* pop-up window, select *Facebook* in **Type** and enter the name for your authentication as desired. Select **Next**.
The Facebook login page opens. Enter your Facebook credentials.
In **Breakdowns**, select a necessary breakdown. See [Insights API Breakdowns](https://developers.facebook.com/docs/marketing-api/insights/breakdowns) for more information.
In **Description (optional)**, add a description for your data source. It substitutes the data source name on the *Overview Data Sources* page.
Select **Save**.
If your site already has a main data source, and the platform uses it to import your product catalog, you can make *Facebook Ad Insights* an additional data source.
See [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources) for more information.
1. Go to **Data Sources** and select the cogwheel (**⚙**) icon next to Facebook Ad Insights data source you've just set up.
2. In the **Content Mode** panel, select **Additional Data Source**.
3. Define how the platform should import data from Google Analytics by choosing the desired option in **Additional Data Source Types**.
4. Choose the column that uniquely identifies products in this data source in **ID Column In This Feed**.
5. Choose the column that uniquely identifies products in your main data source in **ID Column From Your Main Feed**.
To import data from *Facebook Audience Insights*, select **Import** in the top-right corner of your site's view.
# Import external tracking data
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
If you have external tracking data for your products, you can import this data into Productsup.
You can add external data sources that link to import tracking, which can be found when you add a tracking system in **Data Sources**, *Tracking Systems*.
See \[component:17633] if you don't want to use Productsup tracking. But if you want to use the [ROI Strategy](/docs/help-center/legacy-docs/legacy-functionality/roi-strategy) feature and/or see your tracking data in \[component:17350], you can integrate your own third-party tracking, for example, Marin, Google Analytics, etc.
Use external tracking data for ROI Strategy only: [#use-external-tracking-data-for-roi-strategy-only]
1. Create a feed with the tracking data [#1-create-a-feed-with-the-tracking-data]
* Tracking data can only be uploaded to the platform in the form of a data feed. The platform requires a URL in order to import the feed.
* Productsup recommends that you match the product ID in your feed with your product feed data. This lets you get tracking data on the product level.
* If you can't provide data on a product level, you can provide data at a category level instead.
* If you want to provide data for a different export channel, make sure to provide unique column names, for example, `Google_clicks`, `Nextag_costs`.
* You can choose the time range that you want for the data. Be sure to use a dynamic time range, for example, "last 30 days" instead of a static time range, such as "from 2015-09-20 to 2015-10-20". The tracking data should be updated on a daily basis.
* Tracking data must be aggregated for its applicable time ranges. Do not provide the same ID twice in the feed for two different periods. Rather, combine these.
For example, do not provide:
| product\_id | day | clicks |
| ----------- | ---------- | ------ |
| 1234 | 2015-12-15 | 5 |
| 1234 | 2015-12-16 | 12 |
Instead, provide:
| product\_id | clicks |
| ----------- | ------ |
| 1234 | 17 |
2. Upload the feed in the platform [#2-upload-the-feed-in-the-platform]
Here, you want to upload the tracking data feed as an *additional feed*.
For more information on additional feeds, see: [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources).
3. Implement ROI Management [#3-implement-roi-management]
After importing the data feed in the platform, you can now use ROI Strategy.
See [ROI Strategy](/docs/help-center/legacy-docs/legacy-functionality/roi-strategy), for more information on ROI tracking.
Use external tracking data for both ROI Strategy and Reporting: [#use-external-tracking-data-for-both-roi-strategy-and-reporting]
Data for **ROI Strategy** comes from a feed in Data Source, whether you use Productsup Tracking. In this case, your data source has or has not automatically generated the feed, and you import your own tracking data.
The Reporting tab takes the information from the Productsup database.
For this, you need to be able to:
Import tracking data into the relevant site on the platform.
Create a feed using the export channel "External Tracking" to convert your tracking data to the correct format.
Upload the feed directly into the Productsup database.
1. Create a feed with the tracking data [#1-create-a-feed-with-the-tracking-data-1]
This time, rather than providing aggregate data for a time range, you'll need to provide a feed that only contains the tracking data from yesterday. Every day the platform will import the data from the day before and upload them to the database.
Be sure, as before, that the feed does not contain the same product ID twice, but also only that it only contains the data for one day.
| product\_id | day | clicks | orders |
| ----------- | ---------- | ------ | ------ |
| 1234 | 2015-12-15 | 5 | 1 |
2. Activate the External Tracking template and create a feed [#2-activate-the-external-tracking-template-and-create-a-feed]
You have to import the data into a site that is different than the site you want, to see the tracking data in reporting.
For example, all your active export channels are on website `123456`. You then need to create a new site `123457` within the *External Tracking* template, you can provide your site `123456`. Now the tracking data will be saved for this site with your live channels.
Activate the export channel **External Tracking**
**product\_id**: The product's ID. These should match the product IDs provided in your main product feed.
**site\_id**: Enter the site ID of the site you want to track. Use the Static Value Box to create the value.
**costs\_cpo**: Costs per order for a product for yesterday. optional
**costs\_cpc**: Costs per click for a product for yesterday. optional
**site\_channel\_id**: The channel ID is the sub-ID of an export if you activate more than one data flow. See \[component:17053].
**costs**: Costs for a product for yesterday.
**profit**: Profit for a product for yesterday. optional
**revenue**: Revenue for a product for yesterday.
**click**: Clicks for a product for yesterday.
**order**: Orders for a product for yesterday.
**campaign\_id**: This is the unique ID every Productsup export template has, for example, `1` for Google Merchant Center. Contact [support@productsup.com](mailto:support@productsup.com) to receive information for your particular channel.
**date**: Yesterday's date. If you don't have this information in your feed, you can create it with a box combination:
. Using *Timestamp*, show today's day.
. Using *Math*, subtract one day.
. Convert the format into `YYYY-MM-DD`. For example, `2015-08-16`.
3. Export the tracking data in the Productsup database [#3-export-the-tracking-data-in-the-productsup-database]
As feed destination in **Exports** > **Setup**, select ***External Tracking***
Select **Export**.
A few minutes later, you can see the tracking data in the reporting tab of the other site.
What happens if I export more than once?
The last export will overwrite the previous export for this date, but only for IDs contained in the tracking feed. It won't delete any data, only overwrite them.
**Example #1**:
. I export the first 20 clicks for the product ID `12345` for the date `2015-08-15`. The reporting shows `20 clicks`.
. I export again but this time 25 clicks for the date `2015-08-15`. The reporting will now show `25 clicks`.
**Example #2**:
. I export the first 20 clicks for the product ID `ABC789` for the date `2015-08-15`. The reporting shows `20 clicks`.
. I export again for the date `2015-08-15`, but this time the product is no longer in the tracking feed. The reporting still shows `20 clicks`
This also means that you can't delete data, only overwrite them. Contact [support@productsup.com](mailto:support@productsup.com) if you want to delete tracking data.
# Import products from Pimcore
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Pimcore is an open-source enterprise PHP software platform for product information management (PIM) that lets you manage, aggregate, and distribute any digital product data.
Prerequisites [#prerequisites]
To use Pimcore as a data source in Productsup, you need:
. Your Pimcore account information.
. Prepare your data for export from Pimcore to Productsup.
. Get the API key to the Pimcore datahub.
Add the data source PIMCore Import v1 [#add-the-data-source-pimcore-import-v1]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *PIMCore Import v1*, select **Add**, give it a name as desired, and then select **Continue**.
Enter your Pimcore API data into **API URI** and **API Bearer Token**.
In **Description (optional)**, add a description for your data source. It substitutes the data source name on the *Overview Data Sources* page.
Select **Save**.
To import data from Pimcore, select **Import** in the top-right corner of your site's view.
# Import data from MS SharePoint
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Microsoft SharePoint is a cloud-based platform for data storage, collaboration, and file management.
To import products from your MS SharePoint account to Productsup, you need to add and set up the data source *Microsoft SharePoint* in Data Sources. This integration lets you import .csv and .xslx files from MS Sharepoint.
You may need some technical expertise to set up the Microsoft SharePoint data source.
Prerequisites [#prerequisites]
To use Microsoft SharePoint as a data source in Productsup, you need to follow the steps:
Step 1: Create app registration and save account data for the further data source setup. [#step-1-create-app-registration-and-save-account-data-for-the-further-data-source-setup]
Go to [Microsoft Azure portal](https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?redirect_uri=https%3A%2F%2Fportal.azure.com%2Fsignin%2Findex%2F\&response_type=code%20id_token\&scope=https%3A%2F%2Fmanagement.core.windows.net%2F%2Fuser_impersonation%20openid%20email%20profile\&state=OpenIdConnect.AuthenticationProperties%3Dm36YV9IFQ9iyhJSxiDUrAlJzkntJyOg2MSLhJ-9ApYSdsV3TPRl7ofJx0pwIEUstjirWSWHPyBAYVILibjPvBMUdBv0s9f-fqhdf1srNoj-lsKJiOqJ4wfFTxQJTkxQ9TJm_D7AUPzO0-v1zHZVCeKnL6v-Ur3Muw9NvJL0d-_EpJ79dUbL0ytmETYS75fN0XOyLdlFVNbAFY6ty0T0_5Ipu7Plg9-GWklhRToPZc_ZPjzkL7tinUTjSSrH9kcL6Nk3ZBN32nXGcywQgI9KTXFmmPqgQQWResmyUmKvcMhmLKjc5aueJmkDRNgEdUxLc_460TpIO_jSJljPI7BFWJ0Df4cBHeDVe7tCxzjcoKDNP229xbQGP0fQbqbWaFnL_TNW6KAJmMwTBmuN6YVWYQcrRLnMqIZx7cs3YASSzkc2i8m6sEgN4hV-yv4pr1RSEd5jsmNYKW2Afl-HUEqNB4j3zI6d49AoG-zF8RzXYwW0\&response_mode=form_post\&nonce=638653712668796478.MjhkYTBhNDUtYjA5NS00OWU5LThiY2UtYzM4ZTMxMWFhNmY3YTQyZGEzYjQtZmU2ZC00ZTNjLWI5YmMtZjU3OTE4NGEwZDY3\&client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c\&site_id=501430\&client-request-id=c19f7491-0bae-46e3-bd50-9099cb22fb28\&x-client-SKU=ID_NET472\&x-client-ver=7.5.0.0\&sso_reload=true).
Go to the Entra ID.
Go to **App registrations** and create a new registration by taking all the steps in the wizard.
Name your registration **Productsup-sharepoint-connector** and decide on the supported accounts. A single-tenant should be enough, but this depends on your organisation.
When you created the application, save separately the following details that you will need for the data source setup:
* *Application (client) id* for **Client Id**
* *Directory (tenant) id* for **Tenant Id**.
Go to **API permissions** from the menu to set the permissions:
* **User.Read**
* **Sites.Selected**.
Switch on the **Grant admin consent for \[Company]**.
Go to **Certificates & secrets** from the menu and generate a new client secret. Give it a description and set expiry date. Save it as your **Client secret** for further data source setup.
Step 2: Give the application access to the specific sites [#step-2-give-the-application-access-to-the-specific-sites]
To give an enterprise application or app registration access to a specific site or multiple sites in SharePoint, you need to execute a *SharePoint PnP PowerShell* script. You can use the script provided below as a starting point and ask your internal IT team to adjust it for you.
A CSV file mentioned in the script should contain the following:
* A list of MS SharePoint site URLs.
* Your admin account User Principal Name.
* The app ID or AppDisplayName.
You need the Administrator rights of your MS SharePoint account to execute the script.
```
# Connecting to the SPO Service and importing the SPO PNP Module
Connect-SPOService -URL
Import-Module PnP.PowerShell
##########################################################################################################################
# #
# The following part gives the respective Enterprise Application their neccessary rights. #
# It does so by using the .csv file from the previous part as input for sites to give the respective rights for. #
# #
##########################################################################################################################
$SPSitelist =
$ADMAccount =
$AppID =
$Displayname =
foreach ($SPSite in $SPSitelist)
{
write-output $SPSite
Set-SPOUser -site $SPSite -LoginName $ADMAccount -IsSiteCollectionAdmin $True -Verbose
Connect-PnPOnline [yourtenant].sharepoint.com -Interactive -ClientId
Grant-PnPAzureADAppSitePermission -AppId $AppID -DisplayName $Displayname -Site $SPSite -Permissions Write -Verbose
Set-SPOUser -site $SPSite -LoginName $ADMAccount -IsSiteCollectionAdmin $False -Verbose
}
```
You can also toggle between Write and Read permission by changing the respective permissions parameter in the foreach loop.
If you need help with providing access, you can contact [support@productsup.com](mailto:support@productsup.com).
Add the data source Microsoft SharePoint [#add-the-data-source-microsoft-sharepoint]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Microsoft SharePoint*, select **Add**, give it a name as desired, and then select **Continue**.
Enter your Microsoft SharePoint data from the [Prerequisites](#section-idm353459546062478) into the following fields:
* In **Client ID**, enter your MS SharePoint client ID.
* In **Client Secret**, enter our MS SharePoint client secret's value.
For an already set up data source.If, after some time, you start experiencing the import fail, it can mean that your client secret has expired, and you must update it:
Generate a new client secret in your MS SharePoint account.
Enter the new client secret's value in the **Client Secret** field. Don't use the Secret ID.
Leave **Client ID** unchanged.
* In **Tenant ID**, enter your MS SharePoint tenant ID.
* In **File Share Link**, enter the link to the file you want to share.
* In **File Type**, select the type of the shared file: *csv* or *xlsx*.
Check if access to the file in MS SharePoint isn't restricted.
In **Description (optional)**, add a description for your data source. It substitutes the data source name on the *Overview Data Sources* page.
Select **Save** and select **Import** at the top of the page.
# Import products from VTEX
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
VTEX is a B2B and B2C e-commerce platform that lets you manage multiple sales channels, orders, and inventory.
To import products from your VTEX to Productsup, you need to add and set up the data source *VTEX - API Import with Authentication v1* in Data Sources.
You can use the data source **VTEX - API Import with Authentication v1** only if your product catalog contains less than 200,000 SKUs, which is a VTEX limitation.
If your catalog is above 200,000 SKUs, reach out to your Customer Success Manager.
Prerequisites [#prerequisites]
To use VTEX as a data source in Productsup, you need:
. Your VTEX account information.
Add the data source VTEX - API Import with Authentication v1 [#add-the-data-source-vtex---api-import-with-authentication-v1]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *VTEX - API Import with Authentication v1*, select **Add**, give it a name as desired, and then select **Continue**.
Enter your VTEX account data into the following fields:
* In **Account Name**, enter your VTEX account name.
* In **Environment**, enter your VTEX environment. You can select from two (2) options:
* *vtexcommercestable* is the production version.
* *vtexcommercebeta* is the sandbox version of VTEX.
* In **App Key**, enter the application key generated in your VTEX Account Management.
* In **App Token**, enter the application token generated in your VTEX Account Management.
In **Description (optional)**, add a description for your data source. It substitutes the data source name on the *Overview Data Sources* page.
Leave the **Whitelist Columns** field empty to import all attributes. To import only specific attributes, add their names in this field. Enter each attribute from a new line.
Select **Save** and select **Import** at the top of the page..
# Import orders from eBay
Setup [#setup]
. In the *site*, choose **Data Sources** from the main menu, then select **ADD DATA SOURCE**. Next, add *eBay Orders*.
. To import your orders from eBay, you must first create an authentication token. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems).
. Once you’ve created an authentication token, select it in **Authentication** to add the eBay Orders data source.
. Choose *Production* or *Sandbox* in **Environment**.
. Next, enter the period, in days, you want to import the orders for in **Orders From Period (in days)**.
. You can optionally enter a custom description for the data source in **Description (optional)**.
. Select **Save** and the next manual or scheduled import pulls data to your site.
# Import your files hosted by cloud services
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Connect to external cloud service systems such as Amazon S3, Google Cloud Storage, or Microsoft Azure to import your hosted product files. See [Import from Google Sheets](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-from-google-sheets) to learn how to import from Google Sheets.
You can find the cloud services that link to your shopping platforms in **Data Sources** by selecting **ADD DATA SOURCE** and choosing the **Cloud Services** tab.
Import files from Amazon S3 [#import-files-from-amazon-s3]
To import files hosted by Amazon S3, take the following steps:
Go to **Data Sources** from the site's main menu and select **ADD DATA SOURCE**. Then, choose *Amazon S3* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the *Data Sources Overview* page.
Enter your Amazon AWS Access Key ID credentials in **API Key** and **API Secret**.
Enter the bucket name in **Bucket**. For example:
* `testexamplebucket1`
* `test-samples-may-2021`
* `cloud-hosted-items`
For more information on how to name a bucket, see [Bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
In **Filename**, enter the filename with the extension and path.
In **Region**, select the relevant S3 location from the drop-down menu.
Optionally, enter a custom name in **Description (optional)**.
Select **Save all settings**.
See [Import dynamic URLs](/docs/help-center/import-data-feeds/import-your-data-into-productsup-advanced-settings/import-dynamic-urls) to learn how to set up an automatic import.
Import Parquet files from Amazon S3 [#import-parquet-files-from-amazon-s3]
Apache Parquet is an open-source, columnar file format that lets you efficiently store and retrieve data. To import files in the Parquet format hosted by Amazon S3, take the following steps:
Go to **Data Sources** from the site's main menu and select **ADD DATA SOURCE**. Then, choose *Amazon S3 Parquet* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the *Data Sources Overview* page.
In **Filename**, enter the filename with the extension and path.
Enter your Amazon AWS Access Key ID and AWS Secret access key.
In **AWS Region**, enter the S3 location.
In **AWS Bucket**, enter the bucket name, for example:
* `testexamplebucket1`
* `test-samples-may-2021`
* `cloud-hosted-items`
For more information on how to name a bucket, see [Bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
Optionally, enter a custom name in **Description (optional)**.
Select **Save**.
Import files from Google Cloud Storage [#import-files-from-google-cloud-storage]
To import files hosted by Google Cloud Storage, perform the following steps:
Go to **Data Sources** from the site's main menu and select **ADD DATA SOURCE**. Then choose *Google Cloud Storage* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the main *Data Sources* page.
In **Service Account Key**, enter your service account key in JSON format. Your plain account key won't work. Here is a sample service account key in JSON that the data source expects in this field:
```
{
"type": "service_account",
"project_id": "PROJECT_ID_111",
"private_key_id": "PRIVATE_KEY_ID_111",
"private_key": "-----BEGIN PRIVATE KEY-----\n000a00aabb0a0bb0000a000000aaabbb000a0bb\n-----END PRIVATE KEY-----\n",
"client_email": "SERVICE_ACCOUNT_EMAIL",
"client_id": "CLIENT_ID_111",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}
```
Enter the target bucket name in **Bucket**. For example:
* `my-test-samples`
* `02333se-9e7b-4418-a5ba-yg2970f0b77`
* `test.sample.com` (`sample.com` requires verification of ownership)
For more information on how to name a bucket, see [Bucket naming guidelines](https://cloud.google.com/storage/docs/naming-buckets).
In **Object**, enter the item filename with or without the extension. For example:
To learn more about the object name requirements, see [Object naming guidelines](https://cloud.google.com/storage/docs/naming-objects).
Google uses flat namespace storage, meaning there are no folders.
Google Cloud Service Bucket and Object names often resemble a filepath-like convention, for example: `your-bucket-name/leaf_folder1/leaf_folder2/filename.txt`.
That string consists of the Bucket name, a forward slash character `/`, and the Object name. Enter the individual names in the **Bucket** and **Object** fields:
* The first item in that string is the Bucket name: `your-bucket-name`
* The remainder is the Object name: `leaf_folder1/leaf_folder2/filename.txt`
* The **Bucket** field must not contain forward slash characters `/`.
* Omit the forward slash character `/` between the Bucket name and Object name.
Optionally, enter a custom name in **Description (optional)**.
Select **Save all settings**.
If you merge your main data feed with additional data information via Google Cloud Storage, the import process and merging can take a long time for a large data feed. To speed this process up, you can set up a site tag that contains the information found as an object in the bucket. See [Edit site settings](/docs/help-center/get-started/manage-your-organization-projects-and-sites/edit-site-settings) to learn how to add a site tag.
This setting enables the site to look only for relevant information in the Google Cloud Storage file. For example, you want your site `US_tablet-case` to import only the tablet cases from your Google Cloud file:
In the site **Settings**, add a tag for your site such as `product_type: tablet-case`.
In the Google Cloud Storage setup, in the field **Object**, enter the object name in the bucket such as `tablet-case-product_info.csv`. The site now only imports and merges the relevant information.
If you want to set up multiple sites with a changing set of `product_types` and product information for each site, you can automate this as the data source.
You can also enable support for Twig and site tag variables by default. The Productsup Platform API lets you set up the site tags automatically and with Twig pulls in the correct data based on the site tag from Google Cloud Storage.
Import files from Microsoft Azure Blob Storage [#import-files-from-microsoft-azure-blob-storage]
To import files hosted by Microsoft Azure Blob Storage, perform the following steps:
Go to **Data Sources** from the site's main menu and select **ADD DATA SOURCE**. Then choose *Microsoft Azure Blob Storage* and select **Add**.
Give your data source a custom name if desired, then select **Continue**. The custom name replaces the data source name on the *Data Sources overview* page.
In **Authentication Type**, select *Access Key* or *SAS Token*:
* If you selected *Access Key*, enter your Microsoft Azure Blob Storage account information in **Account Name** and **Access Key**.
* If you selected *SAS Token*, enter your shared access signature in **SAS Token** and **SAS Blob Endpoint**.
In **Container**, enter the full URL to the hosted file.
Optionally, change the data source name in **Description (optional)**.
Scroll down and select **Save all settings**.
# Import your data from Google Merchant Center
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Google Merchant Center is a digital platform where retailers upload their product data to make it available in Google Shopping and other services.
If you already have a data feed in Google Merchant Center, Productsup lets you import it directly from there and create data feeds for other export channels.
Prerequisite [#prerequisite]
To use the Google Merchant Center data source, you must set up authentication to Google Merchant Center. See [Add OAuth authentication to external systems](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-oauth-authentication-to-external-systems).
Import your product feed from Google Merchant Center [#import-your-product-feed-from-google-merchant-center]
Ensure the sites importing from Google Merchant Center don't export the data back to prevent data looping.
To import product feed from Google Merchant Center in Productsup, take the following steps:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Google Merchant Center* and select **Add**.
(Optional) Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Add the Merchant ID Into the **Merchant ID (with data)** field. If you have a multi-client Merchant Center account, enter the ID of the relevant sub-account.
Select your Google Merchant Center account in **Authentication to use**.
In **Requested fields to partial import**, you can add only specific attributes you want to import. You can add multiple attributes by separating them with the comma (`,`).
For example, you can add frequently updated attributes such as `sales price` and `availability`. See the list of attribute in Google's [products.list](https://developers.google.com/shopping-content/guides/products/products-api#productslist).
(Optional) Enter or edit your data source name in **Description**.
Select **Save**.
Import product statuses from Google Merchant Center [#import-product-statuses-from-google-merchant-center]
Apart from importing the data feed from the Google Merchant Center, you can import statuses from this platform as an additional data source for your feed. This information helps improve your product data feed. See Google's [Product status definitions](https://support.google.com/merchants/answer/160491?hl=en).
To import product feed from Google Merchant Center in Productsup, take the following steps:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Google Merchant Center Statuses* and select **Add**.
(Optional) Give your data source a custom name. This custom name replaces the name of the data source on the *Data Sources Overview* page. Then, select **Continue**.
Add the Merchant ID Into the **Merchant ID (with data)** field. If you have a multi-client Merchant Center account, enter the ID of the relevant sub-account.
Select your Google Merchant Center account in **Authentication to use**.
(Optional) Enter or edit your data source name in **Description**.
Select **Save**.
The *Google Merchant Center Statuses* data source appears in the **Main Data Sources** list.
To convert the feed into an additional data feed, select the cogwheel icon (**⚙**).
In the **Content Mode** panel on the data source setup page, select **Additional Data Feed**.
Define the columns you want to use as a connection between this data source and your main feed.
Select **Save**.
# Import orders from Mirakl
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Mirakl is a SaaS e-commerce software company headquartered in Paris. They provide online marketplace software in B2B settings.
You can import your order data from your Mirakl account to Productsup with the data source Mirakl Order Import.
Set up order data import from Mirakl [#set-up-order-data-import-from-mirakl]
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *Mirakl Order Import* and select **Add**. Give it a custom name as desired and select **Continue**.
Enter the host and API key from your Mirakl account in the **Host** and **API key**.
In **Shop IDs**, enter the ID of the shops you want to import orders from. If you have more than one shop, create a separate data source for each Shop ID.
Select the period you want to import the orders for in **Orders Created After**.
Turn on **Collect Products** if you need an order per item.
Optionally, enter a custom description for the data source in **Description (optional)**. The new name of the data source will change in the Data Sources overview page.
Select **Save**.
Select **Run** or **Import** in the top-right corner of your view to let the site import your order data from Mirakl.
If the order data that Productsup imports from Mirakl includes Personally Identifiable Information (PII), such as clients' surnames, addresses, phone numbers, etc., the platform obscures the values featuring PII and displays them in Dataflow and Data View with asterisks:
When you export order data with PII to your desired system, Productsup sends values without obscuring them. The PII order data is fully visible and readable in your target system.
# Import products from SAP Commerce Cloud and SAP Commerce
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
To manage product data in SAP, you can use SAP Commerce Cloud or SAP Commerce (formerly known as Hybris).
* SAP Commerce Cloud is a cloud-based e-commerce platform that helps large businesses build connected, insightful, and adaptive commerce experiences.
* SAP Commerce is an on-premises commerce solution with product information management (PIM) functionality.
You can import product data from your SAP Commerce Cloud or SAP Commerce solution to Productsup to optimize and send it to your desired export channels. The integration between the two systems uses the Productsup Connector installed in SAP and the Productsup Stream API.
The new Productsup Connector (version 2.0.0 and up) is compatible with SAP Commerce Cloud and SAP Commerce versions 2105, 2205, and 2211, as well as all subsequent versions. If you are using an older version of SAP or an older Productsup Connector version, you may need to migrate to the newer versions.
The only possible function of the Productsup Connector is to send selected product data from your SAP Commerce Cloud or SAP Commerce solution to your Productsup site. It is impossible to use the Productsup Connector in reverse or use it in any way to gain access to your SAP solution.
The process of setting up product data import from SAP Commerce Cloud or SAP Commerce to Productsup is as follows:
. Add the Productsup Connector to your SAP solution to let it push product data to the Productsup Stream API.
. Create a stream in the Productsup Stream API.
. Add the Productsup Stream API data source in your Productsup site.
When you set up the integration between your SAP solution and your Productsup site, you may also need instructions on performing your first data export from SAP to Productsup or adding new product attributes in SAP. You can find these instructions at the bottom of this document.
SAP PCM (oData) data source [#sap-pcm-odata-data-source]
Besides the Productsup connector option, you can use the *SAP PCM (oData)* data source to import your data into Productsup from SAP. However, this integration option is no longer the preferred way of importing your product data from SAP into Productsup. We recommend using the Productsup Connector unless there is a specific reason why it doesn't work for you.
See [Use the SAP PCM (oData) data source](#section-idm4577975492676833980120765638) to set up the *SAP PCM (oData)* data source. Contact [support@productsup.com](mailto:support@productsup.com) if you need assistance.
Prerequisites [#prerequisites]
The Productsup Help Center doesn't bear any responsibility and accountability for the accuracy and relevance of the processes, features, UI elements, and other information mentioned in the following instructions about third-party websites and platforms. The following instructions aim to help the readers of the Productsup Help Center perform complex activities outside the Productsup platform while the official technical documentation of the website or platform in question doesn't provide relevant information on the needed activities.
To import your data from SAP Commerce Cloud or SAP Commerce into your Productsup site, you first need to:
. Reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com) to get a Stream API access token to push your data from SAP to Productsup through the Productsup Stream API.
. Download a *.zip* file with the Productsup Connector from this repository: [https://github.com/productsupcom/nemeses-sap-hybris-releases](https://github.com/productsupcom/nemeses-sap-hybris-releases). You can simply choose the latest version on the list if your SAP version is compatible with it.
.
This prerequisite is relevant for SAP Commerce Cloud only. You can skip this if you are setting up product data import from SAP Commerce.
Create a separate git-repository for the Productsup Connector code:
Create a private repository for the Productsup Connector in your `git` version control system. SAP doesn't allow the use of public repositories.
Create a branch in your repository.
Create a `core-customize` folder in the branch and extract the contents of the *.zip* file into this folder.
Add a `manifest.json` file to the folder or modify an alternative of that file:
* If your SAP solution doesn't use any other extensions, you can copy the `manifest.json` file from [this repository](https://github.com/productsupcom/nemeses-sap-hybris-cloud/) and add it to your private repository. You can also use this public repository as an example of the needed folder structure.
* If your SAP solution already uses other extensions, add the following values to the element `"extensions": []` in the file that your SAP solution is currently using to pick up the code of the needed extensions:
```
“productdataexport”,
“productdataexportaccelerator”,
“productdataexportacceleratorbackoffice”,
“productdataexportbackoffice”
```
The structure of the `core-customize` folder should thus be as follows:
```
¦
+---core-customize
¦ manifest.json
¦
+---productdataexport
+---productdataexportaccelerator
+---productdataexportacceleratorbackoffice
+---productdataexportbackoffice
```
Add the extension `productdataexportmigration` to the folder and the `manifest.json` file (or its alternative) if you are migrating from an older version of the Productsup Connector.
Use the Productsup Connector to import data from SAP [#use-the-productsup-connector-to-import-data-from-sap]
Add the Productsup Connector to your SAP solution [#add-the-productsup-connector-to-your-sap-solution]
This section describes what you need to do in SAP Commerce Cloud or SAP Commerce to add the Productsup Connector.
SAP Commerce Cloud [#sap-commerce-cloud]
Create and deploy a build [#create-and-deploy-a-build]
To start setting up your SAP Commerce Cloud solution and add the Productsup Connector to it, do the following:
Go to the homepage of your SAP Commerce Cloud solution.
In *Subscription Resources*, go to **Repository** and add the git-repository you created as shown in [Prerequisites](#section-idm4550359597003233917986806942).There are two (2) options to add a repository. See [Connecting a Code Repository Using SSH](https://help.sap.com/docs/SAP_COMMERCE_CLOUD_PUBLIC_CLOUD/1be46286b36a4aa48205be5a96240672/329fa9bf3fd94c7989f1a90648e9038d.html) or [Connecting a Code Repository Using HTTPS](https://help.sap.com/docs/SAP_COMMERCE_CLOUD_PUBLIC_CLOUD/1be46286b36a4aa48205be5a96240672/66532cf6c6894dfb944255050ac325cc.html) based on your desired protocol type.
Go to **Builds** in *Deployment* and select **Create**.
Enter a build name in **Name** and add the name of your repository branch in **Git Branch or Tag**.
Select **Save**.
When your build finishes running, it displays the status `Success` in the column *Last Build*. When you see this status, choose your build and then select **Deploy to Environment** in the top-right corner of your view.
In **Target Environment**, select your needed environment. Then, choose a suitable option in **Deployment Mode**.In **Platform Update Mode**, select the following:
* If you are adding the Productsup Connector for the first time, choose *Initialize database*.
* If your SAP Commerce Cloud solution has already used an older version of the Productsup Connector, choose *Migrate data*.
Select **Deploy** in the top-right corner of your view. The deployment process may take a long time to finish.
Set up the export jobs [#set-up-the-export-jobs]
When you successfully deploy your build to the needed environment, you can set up your product data export to the Productsup Stream API:
Go to your Backoffice endpoint (SAP Administration Cockpit) and scroll down in the main navigation menu on the left to find the **Productsup** extension.
Go to **Export Connection** to edit your connection to the Productsup Stream API. Choose **AccessTokenRestApiExportConnection** and add the API access token you requested from Productsup in **Access Token**. Select **Save**.The hostname should be `stream-api.productsup.com`, and the port should be `443`.
Go to **Export Configuration** to find your preconfigured product attribute sets.
There are two (2) export configurations available:
* `ideal` - This attribute set can include all the product attributes that you want to send to Productsup.
* `minimal` - This attribute set can include only a limited set of product attributes. You can use it for more frequent exports of certain attribute values to Productsup.
You can select each export configuration and add or remove attributes in **Assigned Field Configurations** as needed.
Select **API Export CronJob** and open each job on the list to review and adjust its settings as needed. For example, you can schedule the jobs or choose the needed export configurations:
* Select *ideal* in **Export Configuration** to let the job send all the desired attributes to Productsup.
* Select *minimal* in **Export Configuration** to let the job send a small set of attributes.
If you want to send all your product data to Productsup once a week and only some attributes, such as `price` and `stock`, every day, you can select the `ideal` export configuration in the job **ProductsupApiExport** and choose `minimal` in the job **ProductsupApiDeltaExport**. Then, go to **Export Configuration** and make sure `minimal` only contains the attributes `price` and `stock`.If you schedule these jobs to run weekly and daily, respectively, you can achieve the goal of sending different sets of attributes at different intervals.
The setup in your SAP solution is mostly over. See [Create a stream with the Productsup Stream API](#section-idm4550359703203233918005810732) to proceed.
SAP Commerce [#sap-commerce]
To add the Productsup Connector to your SAP Commerce solution, do the following:
Unpack the *.zip* file you downloaded as stated in [Prerequisites](#section-idm4550359597003233917986806942) and move the unpacked contents to the same local folder where you have the extensions of your SAP Commerce platform. For example, its location can be *hybris/bin*.
Go to *hybris/config*, open the file `localextensions.xml`, and add the following to the `` tag:
```
```
Add another extension line at the end of this snippet if you are migrating from an older version of the Productsup Connector.
```
```
Run the command `ant clean all` in the console.
Remove cached backoffice files by deleting the relevant backoffice folder: *hybris/data/backoffice*.
Run the command `ant updatesystem`.
Start your server.
If your SAP Commerce solution hasn't used an older version of the Productsup Connector before, continue following the steps in this list.
If your SAP Commerce solution already used an older version of the Productsup Connector, proceed with the steps in [Migrate from an older version of the Productsup Connector](#section-idm4583707600624033930453331251).
Log in to the Hybris administration console.
Remove the following outdated types:
```
Extension: productdataexportmigration
ComposedType FTPExportConnection
ComposedType FTPSExportConnection
ComposedType SFTPExportConnection
```
Log in to the Backoffice endpoint of your SAP Commerce solution and press the *F4* key to open the admin view.
Select the menu icon in the top-right corner of your view, choose **Reset Everything**, and select **Yes** to confirm.
Press the *F4* key again to return to the Backoffice homepage and continue with the setup starting with [see the relevant section](#N1696591333011) in [Set up the export jobs](#section-idm4647455340472033930131042731)..
Migrate from an older version of the Productsup Connector [#migrate-from-an-older-version-of-the-productsup-connector]
After adding the needed extensions and running commands, as shown above, do the following to migrate to a newer version of the Productsup Connector:
Go to the Backoffice homepage of your SAP Commerce solution and select **API Export CronJob**.
Copy the configurations from the jobs starting with *CSVExportCronJob* into the settings of the jobs starting with *ProductsUpApiExportCronJob*.
Delete the jobs where the names start with *CSVExportCronJob*.
Stop your server.
Go to the `localextensions.xml` file and remove the line:
```
```
Run the command `ant clean all`.
Remove cached backoffice files by deleting the relevant backoffice folder: *hybris/data/backoffice*.
Run the command `ant updatesystem`.
Remove the cached backoffice files again.
Start your server.
Log in to the Hybris administration console.
Remove the following outdated types:
```
Extension: productdataexportmigration
ComposedType FTPExportConnection
ComposedType FTPSExportConnection
ComposedType SFTPExportConnection
```
Execute IMPEX (hAC):
```
REMOVE CSVExportProtocol;code[unique=true]
;FTP;
;FTPS;
;SFTP;
```
Log in to the Backoffice endpoint of your SAP Commerce solution and press the *F4* key to open the admin view.
Select the menu icon in the top-right corner of your view, choose **Reset Everything**, and select **Yes** to confirm.
Press the *F4* key again to return to the Backoffice homepage and continue with the setup starting with [see the relevant section](#N1696591333011) in [Set up the export jobs](#section-idm4647455340472033930131042731)..
Create a stream with the Productsup Stream API [#create-a-stream-with-the-productsup-stream-api]
The Productsup Connector installed in your SAP Commerce Cloud or SAP Commerce solution uses the Productsup Stream API to push product data from SAP to your Productsup site. To use the Stream API, you need to create a chunked stream.
To create a chunked stream, run an API query similar to this:
```
curl --location --request POST 'https://stream-api.productsup.com/streams' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Accept: application/vnd.api+json' \
--data-raw '{
"data": {
"type": "stream",
"attributes": {
"name": "Stream name example",
"type": "chunked"
}
}
}'
```
Make sure to copy the stream ID you receive in the API response and paste it into the settings of both export jobs in SAP. Go back to [see the relevant section](#N1696504284838) in the Backoffice endpoint of your SAP solution to add the stream ID in the *API Configuration* section.
Later, you will also need to use your stream name and ID to choose your stream in the setup of a data source in your Productsup site.
See [Stream creation](https://api-docs.productsup.io/#stream-api-stream-management-stream-creation) for more information.
See [Add the Productsup Stream API data source to your site](#section-idm4637569251195233918006095796) to proceed.
Add the Productsup Stream API data source to your site [#add-the-productsup-stream-api-data-source-to-your-site]
To let your Productsup site import product data from your newly created stream, you need to add the Productsup Stream API data source to your site.
See [Import data via the Productsup Stream API](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-from-apis#section-idm4582691268902433399454193933) for the setup steps. In [Import from APIs](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-from-apis#step-idm15009918270912), choose the name and ID of the stream as stated in your API query and response.
Send data from SAP into Productsup for the first time [#send-data-from-sap-into-productsup-for-the-first-time]
Once you finish the Stream API data source setup, the integration between your SAP solution and Productsup should be fully functional. To import your full product catalog from SAP into Productsup, do the following:
Go to the Backoffice endpoint of your SAP solution.
Open the **Productsup** extension in the main navigation menu on the left and select **API Export CronJob**.
To send your full product catalog to Productsup, select the job **ProductsupApiExport** and choose the fast-forward icon.
Depending on the size of your product catalog, this process can take a long time.
Go to your Productsup site and select **Import** in the top-right corner of your view to let the site import product data from your stream.
Add and send new product attributes [#add-and-send-new-product-attributes]
After setting up your product data import from SAP Commerce Cloud or SAP Commerce into Productsup, you may need to add new attributes to your products in SAP and send them to your Productsup site. You can do so by following these steps:
On the Backoffice homepage of your SAP solution, scroll down in the main navigation menu on the left to find the **Productsup** extension.
Select **Field Configuration** and choose the arrow next to the plus icon to select the needed attribute type. Then, add a new attribute and set it up.
Once you add and set up all the needed attributes, go to **Export Configuration** and add the new attributes to the `ideal` and `minimal` configurations as needed.
Proceed with [see the relevant section](#N1696517655381) to export the new attributes to Productsup.
Use the SAP PCM (oData) data source [#use-the-sap-pcm-odata-data-source]
We recommend using the Productsup Connector instead of the *SAP PCM (oData)* data source unless there is a specific reason why the connector doesn't work for you. See [Use the Productsup Connector to import data from SAP](#section-idm4553580040937633980119055235) for the setup information.
Open Data Protocol (OData) is an open protocol for creating and consuming queryable and interoperable REST APIs in a standard way.
You can set up the *SAP PCM (oData)* data source in Productsup to import your data from SAP into Productsup. But use it only if you import a smaller number of products. Importing several thousands of products may take a long time as the OData connector doesn't work with delta files, and the platform imports all products every time you run an import.
Productsup supports the following versions of SAP PCM (OData):
* 19.05
* 20.05
To use classification in PCM, you must have version 20.05.
Set up OData in the SAP PCM backoffice [#set-up-odata-in-the-sap-pcm-backoffice]
To import data from the SAP PCM into Productsup with the help of the *SAP PCM (oData)* data source, you need to configure the integration in the SAP backoffice and set up a data source in Productsup.
Create a user in the SAP PCM as follows:
* Select the status **Employee** for the user.
* Add the user to **\[employeegroup]**.
* Select the password type **Plain** and set a password.
* Give the user permission to access the OData web services and relevant catalogs.
Productsup uses the base64 encoding to generate an authentication token using the *Employee User* username and password.
Create three (3) mandatory OData Integration Objects:
The entered values are case-sensitive.
1. Catalog Version – This Object lets Productsup read catalogs from the PCM system. You can select PCM catalogs for data import and export.Create the Catalog Version Integration Object by entering the following values:
* **Name**: `catalogVersion`
* **Root Type**: `CatalogVersion`
* **Integration Type**: `INBOUND`
2. Language – This Object lets Productsup work with different languages.
Productup recommends you have only one language per Productsup site. You can decide between two (2) options:
* Create individual Productsup sites for each language to import data from PCM into Productsup.
* Create separate Productsup exports for each language to export from Productsup into PCM.
Create the Language Integration Object by entering the following values:
* **Name**: `language`
* **Root Type**: `Language`
* **Integration Type**: `INBOUND`
3. Endpoint – This Object is a custom endpoint, which lets Productsup read the available Integration Objects set up in PCM oData. You can decide which configuration or data model to use to populate the data.Create the Endpoint Integration Object by entering the following values:
* **Name**: `integrationObject`
* **Root Type**: `IntegrationObject`
* **Integration Type**: `INBOUND`
Create an optional Integration Object called Productsup.This Object lets you define which data attributes Productsup can edit. You can set up only a few attributes, such as description, title, or code. To set up the Productsup Object:
Create the Productsup Integration Object by entering the following values:
* **Name**: `Productsup`
* **Root Type**: `Product`
* **Integration Type**: `INBOUND`
Define the data attributes you want to export.
Contact [support@productsup.com](mailto:support@productsup.com) if you need assistance with integration. See [Creating and Viewing a Product Integration Object](https://help.sap.com/viewer/bad9b0b66bac476f8a4a5c4a08e4ab6b/LATEST/en-US/9d622ee2ec184133a2b361be2d4af9f1.html) for more information.
Set up OData in Productsup [#set-up-odata-in-productsup]
In the Productsup platform, take the following steps to import data from your SAP PCM:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for *SAP PCM (oData)* and select **Add**. Give it a custom name as desired and select **Continue**.
Enter the host link URL in **Host** and your PCM credentials in **Authentication Token**. You must encode your `username` and `password` credentials using the following format:
* `authenticationToken = base64_encode(username:password)`
If you have IP restrictions in your SAP system, allowlist Productsup's IP ranges. See [Network information](/docs/help-center/get-started/productsup-fundamentals/network-information).
If you need help, reach out to your Customer Success Manager or contact [support@productsup.com](mailto:support@productsup.com).
Select **Check Credentials** to validate your token.
Once SAP validates your credentials, you must configure extra settings to continue the data source setup:
Select your desired catalog version from the **Catalog Versions** drop-down list.
Select the **Type Classes** and **Languages** you wish to import from your SAP system and select **Save**.
Enter the desired level of **Attribute Nesting Threshold** to limit the saved product attribute records for product variations. Level `1` is the lowest. The platform summarizes your nested values as JSON strings if your attribute records exceed the set threshold.
In **Description (optional)**, you can customize the data source name, which appears in your data source list. The customized description is the same name you entered in [see the relevant section](#N1709912070694).
Select **Save**
Select **Import** in the top-right corner of the page. The data from PCM appears at the import stage in Data View and Dataflow in Productsup.
# Import your data into Productsup - Advanced Settings
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
This section guides you through the advanced technicalities of setting up your data sources in Productsup.
While setting up a data source in Data Sources, you can use the Advanced Settings tab to modify your import data during the import process, add labels to your data sources, enable or disable parallel downloads, or delete data sources.
Such data source options as Feed URL have five (5) settings options in the Advanced Settings tab. Jump into the necessary section description with the following links:
* [Labels section](#section-idm4635028215843232976412777701)
* [Options section](#section-idm463502825692803297641337697)
* [I/O Settings section](#section-idm4598999204446432976425511239)
* [Parallel downloads section](#section-idm4561994567113633226977967384)
* [Delete this Import section](#section-idm462364827566563297642571678)
Most other data source options, including Google Sheets, Productsup Platform API, and Google Merchant Center, have four (4) settings options in the Advanced Settings tab:
* [Labels section](#section-idm4635028215843232976412777701)
* [Options section](#section-idm463502825692803297641337697)
* [Parallel downloads section](#section-idm4561994567113633226977967384)
* [Delete this Import section](#section-idm462364827566563297642571678)
Locate the Advanced Settings tab [#locate-the-advanced-settings-tab]
To access the Advanced Settings tab on the data source setup page:
Go to **Data Sources** from your site's main menu.
Select the cogwheel icon (**⚙**) next to a chosen data source.
Select **Advanced Settings**.
Set up data sources using Advanced Settings [#set-up-data-sources-using-advanced-settings]
Labels section [#labels-section]
To distinguish between different data sources better, you may want to add labels to your data sources.
To add a label to a data source:
Select **Labels** in the **Advanced Settings** tab.
Give your label a name in the input field titled **Add one or more labels separated by a comma (,)**.
To add multiple labels to a data source, separate them with a comma (**,**).
Select **Save**.
You can see your labels in the **Labels** column of the chosen data source in Data Sources.
Options section [#options-section]
To access a list of additional settings you can apply to a data source, you can use the Options section in the Advanced Settings tab.
Select **Options** in the **Advanced Settings** tab.
To activate a desired data source setting, check the box next to it and select **Save options**:
1. **Don't notify if data didn't change** - This setting only applies to the option called **Number of Imports without a change in Data Sources** that you can set up in Monitor. Checking this box deactivates notifications about imports from the chosen data source with no change in the imported data. A data source with turned-off notifications has a crossed-out bell icon in Data Sources.
2. **Website Crawler: Do not remove javascript from body** - This setting applies to the Website Crawler data source option. By default, Productsup removes JavaScript from the data it gathers while crawling a website. Checking this box disables removing JavaScript from the collected data in case the structure of the crawled website requires it. See [Import web data with Website Crawler](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-web-data-with-website-crawler) for more information.
3. **Pause Datasource** - Checking this box pauses your data source and stops any further imports from it. This is especially helpful when searching for the causes of import errors in case of faulty data sources. Alternatively, you can pause a data source by selecting the pause icon in the **State** column of the chosen data source in Data Sources.
4. **Force Active FTP mode** - This setting only applies to data sources requiring an FTP connection. By default, Productsup uses the passive mode of connecting to an FTP server. Checking this option switches the mode to active, meaning that the FTP server should assign a port for Productsup to connect to.
5. **Allow this datasource to have no products** - If you need your site to have a data source that is sometimes empty and has no data to import into Productsup, checking this box allows the data source to be empty, so the platform doesn't display its imports as failed.
I/O Settings section [#io-settings-section]
If you want to modify or backup the data imported via the Feed URL data source option, you can use the I/O Settings section in the Advanced Settings tab.
Select **I/O Settings** in the **Advanced Settings** tab.
In the **Available I/O Settings** panel, select **Add** to use one of the [data transformation](#N1651056808120) or [backup](#listitem-idm243301075492128) settings.
You can see and edit all added settings in the **Existing I/O Settings** panel.To delete an added setting, choose the bin icon in the panel you want to remove and select **Yes**.
Transform a data source [#transform-a-data-source]
To transform an XML, JSON, or XLSX file before importing its data into Productsup, use one of the following options:
. **Transform XML with XSLT** - You can modify your XML file with XSLT code if, for example, the structure of your XML file isn't compatible with the structure of your product feed. Add an XSLT code abstract containing your desired XML file structure in **XSL Template** and select **Save**.
Currently, the platform supports XSLT versions 3.0 and older.
. **Transform JSON to CSV** - You can transfer your data in a JSON file into a CSV file. If your file has a complex structure, you can help the platform transform it by defining its product path and object-nesting approach.
1. In **Multiline**, you can specify whether your file has multiple JSON objects and arrays:
One JSON object may contain multiple products inside.
1. Enter `OFF` if your file has only one JSON object that contains all your products.
2. Enter `SINGLE` if your file has one JSON object per line of code.
3. Enter `MULTI` if your file has multiple JSON objects per line of code nested in a JSON array.
2. In **Product Path**, you can enter the path to your file's product node in the following format: `xxx.product`, where `xxx` is the path to the node containing your products and `.product` is the mandatory ending of the input string.For a JSON file similar to the following, the input in the **Product Path** field should be `items.product`. If your file requires mentioning multiple nodes in the product path, separate them using a dot (`.`).
```
1{
2 "items": [
3 {
4 "id": 2744883653,
5 "title": "Test product 1",
6 "image": "https://image.com/1"
7 },
8 {
9 "id": 2744886389,
10 "title": "Test product 2",
11 "image": "https://image.com/2"
12 },
13 {
14 "id": 2744887310,
15 "title": "Test product 3",
16 "image": "https://image.com/3"
17 }
18 ]
19}
```
You can leave the **Product Path** field empty to let the platform know that your file has no JSON object or key leading up to the JSON array that contains all your products.
. **Transform Excel (XSLX) to CSV** - You can transfer the data from an XLSX file into a CSV file. Enter the name of the Excel sheet containing the data in **Sheet Name** or leave the field empty to let the platform detect the sheet automatically. Then, select **Save**.
This setting applies to Excel files having the *.xlsx* extension only.
Back up a data source [#back-up-a-data-source]
Productsup lets you back up your data sources to third-party cloud service providers to help debug data sources, access archive data, etc.
Productsup offers backups to the following cloud service providers:
. Using the **Backup Import Data (Amazon S3)** setting, you can back up your data source to Amazon S3:
Enter your S3 credentials in **S3 Bucket**, **S3 Region**, **S3 Access Key**, and **S3 Access Secret**.
Specify the prefix of your remote file's name in **Prefix Remote Filename** and choose the format of your S3 folders from the **S3 Folders Format** drop-down menu as needed.
Select **Save**.
. Using the **Backup Import Data (Google Cloud Storage)** setting, you can back up your data source to Google Cloud Storage:
Enter your Google Cloud Storage bucket in **Google Storage Bucket**.
If you already have a Google Storage authentication in your Productsup organization, choose it from the **Google Storage Authentication** drop-down menu.If not, go to **Authentication** from your site's main menu, select **ADD AUTHENTICATION**, choose *Google Storage Authentication* in **Type**, give it a custom name as desired, and select **Next**. Then, choose **Connect** to let the platform redirect you to a Google Account page, where you can give Productsup access to your Google Storage account. Once finished, Google redirects you back to Productsup. Close the confirmation window to proceed and go back to the **I/O Settings** section of the **Advanced Settings** tab in the setup of the data source you want to back up.
Specify the prefix of your remote file's name in **Prefix Remote Filename** and choose the format of your Google Cloud Storage folders from the **Google Storage Folders Format** drop-down menu as needed.
Select **Save**.
Parallel downloads section [#parallel-downloads-section]
If you have sites with multiple data sources, you can enable parallel downloads to reduce the time of data processing and speed up the import.
The Parallel downloads feature allows the platform to process multiple data sources in parallel and, as a result, increase performance.
You should enable parallel downloads for each data source individually.
Enabling this feature leads to an increase in the number of API calls to your source of data. Ensure that your data source can manage this increased number of requests from the Productsup platform.
To enable or disable parallel downloads for each data source, take the following actions:
Select **Parallel downloads** in the **Advanced Settings** tab of the required data source.
Select **Disabled** or **Enabled**.
Select **Save**.
Delete this Import section [#delete-this-import-section]
If you no longer need a data source, you can use the *Delete this Import* section in the Advanced Settings tab to remove the data source from your site and ensure the site doesn't receive imports from this data source anymore.
Select **Delete this Import** in the **Advanced Settings** tab.
Select **Delete** and then select **Yes**.
# Import dynamic URLs
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
You may have a dynamic element in the URL of your import or export file, for example, a timestamp in the filename that changes each time the platform creates a file: `http://www.yourdomain.com/feed/product/fullcatalog-20210408.txt`.
The dynamic date is necessary and is automatically included in the URL of your import file. This guarantees that the platform always imports the latest file containing the current date. It then inserts the current date in the filename when the platform updates a feed.
See [Import a file from a URL](/docs/help-center/import-data-feeds/import-data-from-internal-systems/import-a-file-from-a-url) for more information on importing data from a URL.
Make the date in the filenames dynamic using Twig [#make-the-date-in-the-filenames-dynamic-using-twig]
To import or export a file with a dynamic date element in the URL, you can use a `date` filter from Twig. Twig is a template engine based on PHP that lets you add dynamic content in the template. This forces the URL to display the current date. For more information, see the `date`[Twig filters](https://twig.symfony.com/doc/3.x/filters/date.html). See the [date formats](https://www.branchcms.com/learn/docs/developer/twig/date-formats) that you can use.
For the following example, `http://www.yourdomain.com/feed/product/fullcatalog-20210408.txt`, Twig modifies the date `20210408` to display in the following format using the `date` filter: `{{ "now" |date('Y-m-d') }}`.
The final URL is: `http://www.yourdomain.com/feed/product/fullcatalog-{{ "now" |date('Y-m-d') }}.txt`.
This means the platform always looks for a filename containing the current date and only imports this file.
You can export files with dynamic filenames using any flat-file destination, such as FTP or SFTP destination. However, we don't support exporting files with dynamic filenames to Productsup Server as it creates too many files and prevents effective work.
Set the date format in a Twig [#set-the-date-format-in-a-twig]
You should set the date format to match how it appears in your URL. If the date is `05-19-20`, the format is `M-d-y`.
For example, the date `2020-05-19` is in the format of `Y-m-d`, and Twig displays it as `{{ date|date('Y-m-d') }}`.
See [PHP DateTime](https://www.php.net/manual/de/datetime.createfromformat.php) to learn more about changing the date format.
Import a dynamic filename from Google Cloud Storage [#import-a-dynamic-filename-from-google-cloud-storage]
Importing a dynamic filename from Google Cloud Storage can be a challenge due to its naming convention of objects. In Google Cloud, an object is specified by its file path and filename. You must designate them and the date in Twig.
For example, the product file has the following parameters:
* file path: `item/full`
* filename: `target_item_full_2022-09-20.csv.gz`
Set the following Twig the **Object** field in the settings of the Google Cloud Storage data source in Productsup: `{{ [ 'item/full/target_item_full_' , "now"|date("Y-m-d"), '.csv.gz' ] | join}}`
Set the timezone in the format of your date [#set-the-timezone-in-the-format-of-your-date]
If necessary, you can also set the timezone of the date format.
To set the timezone as `Berlin/Europe`, modify your Twig as `{{ date |date("Ymd", "Europe/Berlin") }}`.
See [List of Supported Timezones](https://www.php.net/manual/en/timezones.php) for more information.
Import or export yesterday’s file [#import-or-export-yesterdays-file]
You can also specify that you want to try and import a file from the past and not today’s file.
Use the Twig `{{ date |date_modify("-1 day")|date("Ymd") }}`.
It searches for a file where the dynamic date element matches yesterday’s date.
You can adapt this time range by editing the `-1 day` element of Twig. For example, set `-7 day` to import the file where the dynamic date element matches the date from seven (7) days ago.
Avoid hours, minutes, and seconds in the URL [#avoid-hours-minutes-and-seconds-in-the-url]
You should avoid adding hours, minutes, or seconds in the URL when generating files because it can cause import failures due to timezone differences.
For example, your data source finished loading new data into your file on September 19, 2022, at 00:55:12 in the Berlin timezone, with the file name displaying this time as follows: `http://www.yourdomain.com/feed/product/fullcatalog-20220919-005512.txt`. A schedule runs your site at 1:00:00 Berlin time to import a file with the dynamic URL `http://www.yourdomain.com/feed/product/fullcatalog-{{ date |date('Ymd-his') }}.txt`. But instead of the newest updates, the platform ends up importing a file from September 18, 23:00:00 because Productsup servers use the UTC timezone to unify processes across timezones.
However, there are situations where it's impossible to avoid including hours, minutes, and seconds into the URL of your file. If so, see the following:
. You can use a Twig to define the time format used in the URL. For example, you can use the Twig `{{ date |date('Ymd-his') }}` to import a file featuring the hours, minutes, and seconds of the upload time as `20220919-005512`.
. You should refer to the timezone of your file upload timestamp within the Twig that specifies your upload time format. For example, `{{ date |date("Ymd-his", "Europe/Berlin") }}`.This means the file name you use to import data should be similar to `http://www.yourdomain.com/feed/product/fullcatalog-{{ date |date("Ymd-his", "Europe/Berlin") }}.txt`.
Import files with other dynamic aspects in the name [#import-files-with-other-dynamic-aspects-in-the-name]
If the dynamic aspect of your filename isn't a date, you can use one of the following methods. Each method is dependent on where you host your files:
* HTTP link or FTP server
* SFTP server
Import dynamic files from a link or FTP server using wildcards [#import-dynamic-files-from-a-link-or-ftp-server-using-wildcards]
To import files with dynamic aspects from an HTTP link or an FTP Server, you can use wildcards.
The wildcard symbol is an asterisk (\*), which you use to replace dynamic elements. The wildcard ignores everything that comes in its place. It has no character match limit, so you only need to add one wildcard.
For example, if you're trying to import the following file, where the end of the address, `adfc3424`, is dynamic: `ftp://my.ftpsource.io/files/datafeed-adfc3424.csv` you should use a wildcard in the following manner: `ftp://my.ftpsource.io/files/datafeed-*`.
Import dynamic files from an SFTP server [#import-dynamic-files-from-an-sftp-server]
Importing from an SFTP server doesn't support the wildcard search.
For this reason, use the **Dynamic SFTP Download** data source. When setting up the data source, make the following change:
In the **Filename** field, replace the dynamic element with `{?}`.
For example, to match the filename `datafeed-adfc3424.csv`, enter `datafeed-{?}` in **Filename**.
To add a prefix to the names of attributes that the Dynamic SFTP Download data source imports into Productsup, follow these steps:
Go to **Data Sources** from your site's main menu and select the cogwheel icon (**⚙**) next to the relevant data source.
Find the **Content Options** panel at the bottom of the data source setup page and select **CSV Settings** or **XML Settings**. If your data source produces files other than CSV or XML files, you can still select either of the tabs to use this option.
In **Prepend a String to the Header Columns**, enter the prefix you want to add to the names of the attributes imported from this data source.
Select **Save all settings**.
On the **Data Sources** page, open the **Settings** tab and modify the name of your unique item identifier in **ID Column** according to the new prefix of the relevant attribute name.
If your site has additional data sources, you should go back to the **Overview** tab on the **Data Sources** page to:
1. Select the cogwheel icon (**⚙**) next to an additional data source.
2. Add a relevant prefix to the column name stated in **ID Column In This Feed** if you added this prefix to the columns imported from this additional data source.
3. Choose the updated column name in **ID Column From Your Main Feed** if you added a prefix to the columns imported from a relevant main data source.
# Get all product data (legacy)
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get filtered product data (legacy)
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Product import methods
The four (4) major methods for importing your products as a data source into Productsup are as follows:
. File-based data sources
. API-based data sources
. Direct connections to external systems
. Website crawler
File-based data sources [#file-based-data-sources]
Most files-based formats are supported out-of-the-box within Productsup, such as:
* CSV
* TSV
* XML
* TXT
* JSON
Supported transfer protocols for these file types are HTTP(S) and FTP. These connections can also be password-protected. Importing data via other protocols (like SFTP) is also possible and needs an individual setup.
For information about how to import different types of data, see [Import data from internal systems](/docs/help-center/import-data-feeds/import-data-from-internal-systems).
API-based data sources [#api-based-data-sources]
You can also import directly through an API connection. We have several already set up:
* Productsup Stream API. See [Productsup Platform and Stream APIs](/docs/help-center/productsup-platform-and-stream-apis).
* Magento REST/SOAP API
* Amazon Product Advertising API
As well as a more non-standardized option:
* Basic API Request with JSON Response
* JSON API Import
For information about how to import different types of data, see [Import data from internal systems](/docs/help-center/import-data-feeds/import-data-from-internal-systems).
Direct connections to external systems [#direct-connections-to-external-systems]
You have the option to connect directly to external systems, such as Google Merchant Center or Shopify.
Here, there is already a standard connection setup prepared for you. This means that you will not have to worry about the technical integration, which is already configured.
More information about connecting to external systems can be found here
Use the website crawler to crawl product landing pages [#use-the-website-crawler-to-crawl-product-landing-pages]
If you have issues proving an extensive data feed, Productsup can crawl your website. For additional information, see [Work with HTML](/docs/help-center/add-a-rule-box/find-the-needed-rule-box-category/work-with-html). It is also possible to create a feed from scratch based on your website, see [Checklist - Create a Feed Step-by-Step](https://platform.productsup.com/help/3). If your data needs to be updated very often, then this is not optimal for retrieving information, such as product availability.
Custom data sources can be created for you [#custom-data-sources-can-be-created-for-you]
If you need a data source method to import your products which we don’t currently support, then you can reach out to the support team. They will be happy to check the feasibility (in connection with our IT Teams where necessary) of creating a new data source for you.
# Set up a shared data source and reuse it across sites
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Shared Data Sources is currently in beta testing. If you experience any issues, contact [support@productsup.com](mailto:support@productsup.com).
The Shared Data Sources feature lets you set up a shared data source at the organization level and then add it as an already configured data source to numerous sites if they need to import data from the same file or system. It saves time by letting you avoid repetitive configuration efforts and reduces the chance of data source setup errors.
Currently, Shared Data Sources supports most data sources normally available at the site level. But the following ones *aren't yet available* in Shared Data Sources:
* *Google Sheets*
* *Local File Import (Upload)*
* *Website Crawler*
We are working to add these data sources to the Shared Data Sources feature.
Prerequisites [#prerequisites]
Shared Data Sources is available only to admin users. To create a shared data source at the organization level, you must have an admin user account. However, you only need a regular Read-Write user account to add an already configured shared data source to any site you have access to.
Create a shared data source at the organization level [#create-a-shared-data-source-at-the-organization-level]
Only admins can add shared data sources.
Go to **Shared Data Sources** at the organization level, and select **Add shared data source**.
Search for the needed data source, hover over it, and select **Choose**.
Give it a name and a description as desired, and then select **Continue**.
Set up the shared data source as needed. The specific setup steps depend on the data source you choose.
Setting up shared data sources at the organization level requires the same information and steps as setting up regular data sources at the site level. To find guidelines for setting up your specific shared data source, you can use documents for regular data sources. Open the search in the top-right corner of this Help Center page and enter the name of the needed data source, such as *Feed URL*, to find the needed document.
Once you reach the last step of the setup, select **Add data source**.
Edit a shared data source at the organization level [#edit-a-shared-data-source-at-the-organization-level]
If you change the settings of a shared data source, it affects all sites that use it.
Only admins can edit shared data sources.
Go to **Shared Data Sources** at the organization level, select three dots
next to the shared data source you want to change, and choose **Edit**.
Configure the setup as needed:
1. To change the setup of the shared data source itself, use the tab *General Settings*. If applicable, you can also edit the setup in the tab *Advanced Settings*.
2. To see the sites that use this shared data source, go to the tab *Shared With*. You can select the name of the site to open the setup of this shared data source in **Data Sources** in this site.
Once you are ready to save the new setup, select **Save** at the bottom of the tab. If you haven't changed any settings, you can leave the page without saving.
Delete a shared data source at the organization level [#delete-a-shared-data-source-at-the-organization-level]
Only admins can delete shared data sources.
If a shared data source isn't used in any sites, take these steps to delete it:
>
> You have successfully deleted the shared data source. The platform shows a short message at the bottom of the page to confirm it.
>
Go to **Shared Data Sources** at the organization level, select three dots
next to the shared data source you want to delete, and choose **Delete**.
Select **Delete** once again to confirm the action.
If a shared data source is used in at least one site, take these steps to delete it:
>
> You have successfully deleted the shared data source. The platform shows a short message at the bottom of the page to confirm it.
>
Go to **Shared Data Sources** at the organization level, select three dots
next to the shared data source you want to delete, and choose **Edit**.
Go to the tab *Shared With* to see which sites use this shared data source.
Select the name of a site to open the setup of this shared data source in **Data Sources** in this site. Remove the shared data source in the site:
1. Go to the *Advanced Settings* tab.
2. Select **Delete this Import**, and choose **Delete**.
3. Select **Delete** once again to confirm the action.
Repeat this step for each site that uses the shared data source.
Once there are no sites that use the shared data source, go to **Shared Data Sources** at the organization level, select three dots
next to the shared data source you want to delete, and choose **Delete**.
Select **Delete** once again to confirm the action.
Add a shared data source in a site [#add-a-shared-data-source-in-a-site]
>
> You have successfully added a shared data source to a site.
>
Go to **Data Sources** from a site's main menu, select **Add**, and choose **Add shared data source**.
Hover over the needed shared data source, and select **Add**.
You can't change most settings for a shared data source at the site level. To adapt a shared data source to the needs of a specific site, you can use the *Advanced Settings* tab and the following settings available in it:
* Labels
* Options
* Parallel downloads
* Delete this Import
To change all other settings of a shared data source, you must go to **Shared Data Sources** at the organization level. See [Edit a shared data source at the organization level](#section-idm243530569713812).
# Add OAuth authentication to external systems
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Authentication verifies your identity with external systems and allows you access to them.
You can connect to external systems by adding your login credentials when setting up the data source in Productsup. However, you can also use the OAuth method over the channel authentication feature. Using the OAuth method means you don't have to add your credentials to the platform each time you wish to authenticate a data source during setup.
Set up authentication on the organization, project, and site level regardless of admin or standard user access. You can create authentication for the following:
* Site level - available for your site only.
* Project level - available for every site in the project.
* Account level - available for every site in the organization.
Add OAuth authentication [#add-oauth-authentication]
To add OAuth authentication for a data source:
On the *organization*, *project*, or *site level*, go to **Authentication** from the main menu and select **ADD AUTHENTICATION**.
Select the system you want to authenticate under **Type**. You can optionally give your authentication method a name.
Select **Next**.
If applicable, select **Region** and choose your marketplace locale.
Before proceeding, the platform directs you to an external platform to finalize your authentication. After completing the authentication setup, you receive a confirmation message.
Select **Connect** to continue.After completing the setup, your authentication appears in the following list:
You can select your newly-added OAuth authorization from the **Authentication** drop-down list in **Data Sources** for an applicable channel.
To set up a data source, see [Add a main data source to import your products](/docs/help-center/import-data-feeds/import-your-data-into-productsup/add-a-main-data-source-to-import-your-products).
# Set a unique item identifier
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
A unique item identifier is one or several attributes you choose as unique identifiers for the items in your site while setting up data sources. For example, an **SKU**, a **GTIN**, or a combination of many attributes if none of your attributes alone uniquely identifies an item. For example, you can select **title**, **color**, and **size** to create a unique combination.
Setting a unique item identifier is necessary for enabling specific features to work in Productsup, such as:
* Monitoring.
* Data Services.
* The Before/After View feature in Data View.
* Delta updates.
Prerequisites [#prerequisites]
To add a unique item identifier, you need to:
Add a data source and start an import run by selecting **Import** in the top-right corner of the page.
Add a unique item identifier [#add-a-unique-item-identifier]
Go to **Data Sources** from your site's main menu, and select the *Settings* tab.
Choose at least one attribute that contains unique values for each item and can uniquely identify them in the **Select one or more attributes** drop-down menu.
After you add a unique item identifier and run an import, the platform automatically creates a platform-generated attribute at the import stage. The name of the attribute is **\_\_\_id**, and it contains the concatenated values of the attributes you selected in the *Unique item identifier* section. The platform doesn't export this attribute unless you map it to export. It only uses this attribute for internal purposes.
Example 1: If every item has a unique ID, select the **id** attribute as a unique item identifier.
| id | title |
| -- | ----- |
| 1 | abc |
| 2 | dfe |
| 3 | ghi |
Example 2: If item IDs aren't unique, select additional attributes with values that in combination with the ID uniquely identify each item. For example, **id** and **color**.
| id | title | color |
| -- | ----- | ----- |
| 1 | abc | green |
| 1 | dfe | red |
| 2 | ghi | green |
| 2 | jkl | red |
# Enhance your data with additional data sources
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
Besides adding main data sources to Productsup and enriching your data feed with more items, you can add additional data sources to your sites.
Additional data sources contain additional information about the items that are already a part of your main data source, thus extending your data feed horizontally. Productsup links new information from an additional data source to the items in the main data source using a unique item identifier, such as an ID, an SKU, a GTIN, or a combination of different attributes.
The difference between main and additional data sources [#the-difference-between-main-and-additional-data-sources]
Main data sources add new items to a site, while additional data sources add new attributes to existing items.
In Data View, you can see items imported from your main data source:
To add more items to your site, you can modify the original main data source and trigger a new import. Alternatively, you can add another main data source to your site.
If you have a file featuring additional information about these items, for example, their pricing and shipping time, you can import it as an additional data source. The raw data in your file can look similar to this:
Once you add this file to your site as an additional data source, Productsup uses a unique item identifier to match all the items in your site with the items mentioned in the file. In this case, the **id** attribute works as the unique item identifier for both main and the additional data sources.
If there are attributes with the same names in your main and additional data sources, your site always gets the data from the additional data source that is the last in the import queue. See [Set import order for additional data sources](#section-idm232212555248579) for more information.
Add an additional data source [#add-an-additional-data-source]
Go to **Data Sources** from your site's main menu.
Select **Add data source**.
Search for the needed data source in the **Search** bar and select **Add** or find a relevant data source in the proposed options and select **Add**. Give your data source a custom name if desired, then select **Continue**.
Set up your data source. The data source option you chose defines the specific steps you should take to set it up.
1. See [Import data from internal systems](/docs/help-center/import-data-feeds/import-data-from-internal-systems) for information on importing data from internal systems and using various types of files for data import.
2. See [Import data from third-party external systems](/docs/help-center/import-data-feeds/import-data-from-third-party-external-systems) for information on importing data from external systems.
3. See [Import your data into Productsup](/docs/help-center/import-data-feeds/import-your-data-into-productsup) and [Import your data into Productsup - Advanced Settings](/docs/help-center/import-data-feeds/import-your-data-into-productsup-advanced-settings) for detailed information on the Data Sources feature within the Productsup platform.
Select **Save**.
If the platform redirects you to **Data Sources**, select the cogwheel icon (**⚙**) next to your newly added data source. If you are still on the data source setup page after saving the data source, move to the next step.
In the Content Mode panel on the data source setup page, select **Additional Data Source**.
In the **Additional Data Source Types** section, you can select how the platform should import additional attributes and values to your data source if the main and additional data sources have the same-name attributes:
* **Additional Data Source Values Always (Default)** is an option that lets you replace the main data source values with the additional data source values, even if the additional data source values are empty. The platform uses this option by default.
* **Additional Data Source Values Unless Empty** is an option that lets you replace the main data source values that aren't empty with the additional data source values. The platform skips the blank values in the additional data source and leaves the values from the main data source in your feed.
* **Main Data Source Values Unless Empty** is an option that lets you keep the values from the main data source that aren't empty. If the main data source values are empty, the additional data source values replace them.
* **Only Additional Columns** is an option that lets you only add additional attributes and their values from the additional data source. It doesn’t affect the already existing attributes and values in your data source.
In **ID Column In This Feed**, enter the attribute's name within your additional data source that Productsup should use as a unique item identifier. This field is case-sensitive.
In the **ID Column From Your Main Feed** drop-down menu, select an attribute in your main data source that Productsup should use as a unique item identifier.
The attribute in **ID Column From Your Main Feed** can't be an attribute created by a data service of this site.
Select **Save**.
Set import order for additional data sources [#set-import-order-for-additional-data-sources]
Using the same names for attributes in your main and additional data sources creates a conflict during data import.
Productsup imports data from your data sources according to the import queue you see in Data Sources and overwrites attribute values each time it finds an attribute with the same name as it progresses along the queue. At the end of an import process involving attributes with the same names, the platform always shows the data originating from the data source last in the import queue.
Setting a specific order for importing each additional data source helps solve this issue.
Main data sources are always the first to import data.
Arrange import order for your additional data sources [#arrange-import-order-for-your-additional-data-sources]
Go to **Data Sources** from your site's main menu.
Select the grip icon next to one of your additional data sources and drag and drop your data source to a position suitable for the desired import order.
If you have only one additional data source, you can't customize your import order. In this case, Productsup always imports data from your main data sources first and then proceeds to import data from your additional data source.
A notification appears in the bottom right corner of your view confirming the platform has saved the new order successfully.
# Add a main data source to import your products
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
You can import your product data into Productsup using the Data Sources feature. To add new products to your site, add a main data source. See [Add a main data source](#section-idm232212413817044).
To add more attributes to the already existing products, set up an additional data source. See [Enhance your products with additional data sources](/docs/help-center/import-data-feeds/import-your-data-into-productsup/enhance-your-products-with-additional-data-sources).
Add a main data source [#add-a-main-data-source]
To add a main data source and import your products into the site, you need to:
Go to **Data Sources** from your site's main menu and select **ADD DATA SOURCE**.
Search for your desired data source and select **Add**. Give it a custom name as desired and select **Continue**.
Set up the data source.
1. For more information on which options are available and how to import different data types, see [Import data from internal systems](/docs/help-center/import-data-feeds/import-data-from-internal-systems).
2. For more information on which options are available for importing data from external systems, see [Import data from third-party external systems](/docs/help-center/import-data-feeds/import-data-from-third-party-external-systems).
Enter any advanced settings if required and select **Save**.You have now set up your main data source and can view it in Data Sources.
Add multiple main data sources [#add-multiple-main-data-sources]
If you have product data hosted in different places, you can add more than one main data source. Adding several main data sources means you can work with all your product data in one site.
Arrange import order for main data sources [#arrange-import-order-for-main-data-sources]
If you have more than one main data source in a site, you can arrange a desired import order to let the platform import products as needed. This affects the order of products in your site and export destination unless you apply specific settings to change the product order during export.
To change the import order of the main data sources, you should:
Go to **Data Sources** from your site's main menu.
Select the grip icon next to one of your main data sources and drag and drop your data source to a position suitable for the desired import order.
A notification appears at the bottom of your view confirming the platform has saved the new order successfully.
Get an overview of your data sources [#get-an-overview-of-your-data-sources]
To see all data sources in a site, you should:
Go to **Data Sources** from your site's main menu.
View the *Main Data Sources* and *Additional Data Sources* sections to get the following details:
* *Source* - The type of the data source.
* *Name* - The name of the data source. It can be the same as the type of the data source, or it can be the name you specify on the data source setup page.
* *State* - The state of the data source that determines whether the data source imports data during site runs.
* *Filetime* - The date and time when your source file or system was last updated. This information comes from the metadata of your data source, where Productsup checks when you last added more products or edited product data in your data source file or system. The platform updates the *Filetime* column during every site run. An older date and time here may not mean that your data source is out-of-date. If it seems so, check whether this data source has run recently to determine whether the date and time in *Filetime* are up-to-date.
The *Filetime* column doesn't display the time of the last import. To check the time when a data source last imported data into the site, open the *Import History* tab.
* *Runs without an update* - The number of consecutive site runs up until the most recent site run showing how many times this data source has imported the same data.
Import your data from data sources [#import-your-data-from-data-sources]
Once you have set up your data sources, you can import their data into the platform.
If you have both main and additional data sources, the platform first imports data from main data sources and then augments it with data from your additional data.
Import via scheduling or triggers [#import-via-scheduling-or-triggers]
You can automatically enable your site to import data by setting up a trigger or a schedule.
See [Set up scheduling and triggering processes in Scheduling](/docs/help-center/dashboard-and-monitor/set-up-scheduling-and-triggering-processes-in-scheduling).
Manually import your data [#manually-import-your-data]
To manually import data from all your active data sources, you need to:
Go to **Data Sources** from your site's main menu.
Select the **Import** or **Run** button.
These buttons are available on most pages at the site level.
Manually importing multiple sites in bulk [#manually-importing-multiple-sites-in-bulk]
To manually import multiple sites at once, you can use a bulk action:
Go to the organization or project level and select **Bulk Option**.
Choose the site or sites where you wish to start an import and select **Next Step**.
Select **Import** and choose **Next Step**. If you want the sites to import, process, and export data, select the option **Import & Export All**.
Select **Execute** to begin the process.
A final confirmation screen shows whether the bulk action was successful.You can leave this screen by selecting **Return to organization page**. You can also go to one of the sites where you performed the changes by selecting the name of the needed site.
Remove a data source [#remove-a-data-source]
To delete a data source, you need to:
Go to **Data Sources** from your site's main menu and select the cog wheel icon (**⚙**) to edit a data source.
Open the *Advanced Settings* tab, choose **Delete this Import**, select **Delete**, and then confirm your action by again selecting **Delete**.
See [Import your data into Productsup - Advanced Settings](/docs/help-center/import-data-feeds/import-your-data-into-productsup-advanced-settings) for more information on the actions available in the *Advanced Settings* tab.
Pause a data source [#pause-a-data-source]
To pause a data source to make it stop importing data during site runs, you should:
Go to **Data Sources** from your site's main menu and select the pause icon (**⏸**) in the *State* column of the needed data source.
You can reactivate the data source by selecting the play icon (**▶︎**), which makes the data source import data during the next site run.
# Index endpoint
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get all product data (v2 — recommended)
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Stream to output.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Read input-stream items.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Stream from input.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List folder content on transport
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List of Category Specific Attributes (Classifications)
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Fetch the next batch from the specified file
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Add notification.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Stream content of unspecified file from run storage.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Write nested data to output data store.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Reset the cursor for specified file
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Write "update" items to output stream.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Read last committed input-stream offsets.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Close output file
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# API Reference
import { Card, Cards } from 'fumadocs-ui/components/card';
This is the API reference for the Container API. Each endpoint is documented with its parameters, request body, and response schemas.
Endpoints by Category [#endpoints-by-category]
Activity [#activity]
Buckets (Persistent Storage) [#buckets-persistent-storage]
Reading Input Data [#reading-input-data]
Writing Output Data [#writing-output-data]
File Storage & Transport [#file-storage--transport]
Run Storage [#run-storage]
Stream API [#stream-api]
Process Management [#process-management]
Category Specific Attributes [#category-specific-attributes]
Async Feedback [#async-feedback]
Misc [#misc]
# Commit consumed offsets to input-stream.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Show a process.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Fetch row count for specified file
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Stream data to a bucket key.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Write to output file
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Write "delete" items to output stream.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Check if the server is live.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Write "create" items to output stream.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Log all processes to internal log
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Platform defined column order for output file.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Collection of unspecified files in run storage
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Stream file to run storage.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Add log.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Stream data from a bucket key.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Fetch the next item from the specified file
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Save event logs.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Show pending processes
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Upload folder content to transport
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Show headers of input file.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Write "replace" items to output stream.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Save async feedback config to local filesystem.
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Connector details
import { Callout } from 'fumadocs-ui/components/callout';
The **Connector details** step is the first part of the setup wizard. You fill in these fields when creating a connector, and some can be edited afterward.
Fields [#fields]
| Field | Required | Editable after creation | Description |
| ------------------ | -------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name** | Yes | Yes | A human-readable name for the connector. Shown in the Dev Portal and in the ProductsUp platform when end-users add the connector to a site. |
| **Type** | Yes | No | The connector's role in the data pipeline. See [Connector types](/docs/connector-development/get-started/key-concepts#connector-types) for the full breakdown. |
| **Description** | No | Yes | A short description of what the connector does. Shown to end-users when they browse available connectors. |
| **Flow** | No | No | Controls how the connector integrates with the platform. Defaults to `Default` if not set. |
| **Execution mode** | No | No | How individual configurations are passed to your connector at runtime. Defaults to `Environment variable` if not set. See [how configurations reach your code](/docs/connector-development/get-started/key-concepts#how-configurations-reach-your-code). |
| **Owner** | No | No | The organization that owns this connector. Defaults to your own organization. You must be a member of the organization you assign. |
| **Readme** | No | Yes | Additional documentation for the connector. Use this to provide setup instructions or usage notes for end-users. |
| **Logo** | No | Yes | An SVG image used as the connector's icon. Uploaded separately from the other fields. |
**Type**, **Flow**, and **Execution mode** are locked after creation and cannot be changed. Choose carefully — if you need a different value, you'll have to create a new connector.
Connector type [#connector-type]
Determines what your connector does in the data pipeline. The most common types are:
| Type | Direction | Description |
| ---------------- | --------- | ------------------------------------------------------------------- |
| **Data source** | Inbound | Fetches data from an external source and imports it into ProductsUp |
| **Export** | Outbound | Sends all processed product data to a third-party channel every run |
| **Export delta** | Outbound | Sends only the data that changed since the last run |
Other types include `data-service`, `download`, `transform`, `write`, and `upload`. See [Connector types](/docs/connector-development/get-started/key-concepts#connector-types) for details on all types.
Connector flow [#connector-flow]
Controls how the connector integrates with the ProductsUp platform:
| Flow | Description |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Default** | The connector is assigned to dev and prod platform sites and can be synced to them. This is the standard flow for most connectors. |
| **Standalone** | The connector is not assigned to platform sites. Use this for connectors that run independently, without a site context. Available for all connector types. |
| **Migration** | Internal-only. Used for data migration connectors. Available for datasource, export, export-delta, and data-service types only. |
Not all flows are available for all connector types. The Dev Portal only shows flows that are valid for the selected type.
Execution mode [#execution-mode]
Determines how end-user configuration values (API keys, URLs, etc.) are passed to your connector at runtime:
| Mode | How it works |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| **Environment variable** | Values are passed as `SNAKE_CASE` environment variables. This is the recommended approach — it works with any language and framework. |
| **Command options** | Values are appended as `--flag=value` CLI arguments to your command. |
See [Execution configuration](/docs/connector-development/dev-portal/connector-setup/execution-config) for how to define which values are passed.
Logo [#logo]
The connector logo is an SVG file that serves as the connector's icon in the ProductsUp platform. It's uploaded separately from the other fields via a dedicated upload button on the details page. Only SVG format is supported.
# Type-specific config
import { Callout } from 'fumadocs-ui/components/callout';
Some connector types require additional configuration beyond the common setup steps. These steps only appear in the setup wizard when they apply to your connector's type.
Download, transform, write, and upload connectors have no type-specific configuration.
Data source configuration [#data-source-configuration]
Applies to: **Data source** connectors.
| Field | Required | Description |
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Categories** | Yes | One or more categories that describe what your datasource connects to. Used to organize connectors in the platform marketplace. |
Available categories:
| Category | Description |
| ------------------- | --------------------------------------------- |
| `Most popular` | Frequently used datasources |
| `Shopping platform` | E-commerce marketplaces (Amazon, eBay, etc.) |
| `Shop systems` | Online shop software (Shopify, Magento, etc.) |
| `Cloud services` | Cloud-based data providers |
| `PIM / PMS` | Product Information / Management Systems |
| `Tracking systems` | Analytics and tracking platforms |
| `Custom import` | Custom or file-based imports |
| `Orders` | Order data sources |
| `Miscellaneous` | Everything else (default) |
Export configuration [#export-configuration]
Applies to: **Export** and **Export delta** connectors.
| Field | Required | Description |
| -------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Channels** | Yes | The export channels this connector supports. Channels must exist on the ProductsUp platform and match the connector type. |
| **Feedback file** | No | Enable feedback files to report export results (success/failure per product) back to the platform. When enabled, you can configure source and target connection columns for matching products. |
| **Category-specific attributes** | No | Enable support for category-specific attributes if the export channel uses them. |
Feedback files [#feedback-files]
When feedback files are enabled, the connector writes export results back to the platform. This lets end-users see which products exported successfully and which failed. The feedback data is imported as an additional data source on the next site run.
| Field | Required | Description |
| ---------------------------- | -------- | ------------------------------------------------------------ |
| **Source connection column** | No | The column name in the source data used to match products. |
| **Target connection column** | No | The column name in the exported data used to match products. |
Data service configuration [#data-service-configuration]
Applies to: **Data service** connectors.
| Field | Required | Description |
| -------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Column prefix** | Yes | A prefix added to columns generated by this service. Must be unique across data services. Convention: starts with `___` followed by lowercase letters. |
| **Service type** | Yes | `Internal` — runs within the platform. `External` — file-based or external service. |
| **Stages** | Yes | Which processing stages this service runs in. At least one stage is required. |
| **Max usage** | No | Maximum number of sites that can use this data service. Leave empty for unlimited. |
| **Service category** | No | A category for grouping similar data services. |
Stages [#stages]
| Stage | Description |
| -------------- | -------------------------------------------------------------- |
| `Import` | Runs during the import phase of a site run. |
| `Intermediate` | Runs during intermediate processing between import and export. |
# Authentication and secrets
import { Callout } from 'fumadocs-ui/components/callout';
Both steps are optional. Use **authentication** when your connector needs end-user credentials (OAuth tokens, API keys for a third-party service). Use **secrets** when your connector needs developer-managed credentials stored securely in a vault.
Authentication [#authentication]
Authentication lets you declare which authentication providers your connector requires. When an end-user adds your connector to a site, they select their credentials from the platform's authentication store.
How it works [#how-it-works]
. **You (the developer)** register one or more authentication types during connector setup. These reference pre-configured authentication providers on the ProductsUp platform (e.g. Google Merchant Center, Facebook, SFTP).
. **End-users** select which of their stored credentials to use when they configure your connector on a site.
. **At runtime**, the selected credentials are passed to your connector as environment variables with the prefix `PUP_AUTH_` (in environment variable mode) or as CLI flags with the prefix `--pup-auth-` (in command options mode).
Example [#example]
If the authentication provider has a field `refresh_token`, your connector receives:
**Environment variable mode:**
```bash
PUP_AUTH_REFRESH_TOKEN=
```
**Command options mode:**
```bash
--pup-auth-refresh_token=''
```
When you add authentication registrations to a connector, the platform automatically creates an `authentication_select` field in the end-user form, letting users pick their credentials.
Secrets [#secrets]
Secrets are sensitive values (API keys, service credentials, tokens) stored securely in a vault. Unlike authentication, secrets are managed by the connector developer or platform administrator — end-users don't interact with them.
How it works [#how-it-works-1]
. **You (the developer)** define secret registrations, each referencing a path in the vault and specifying which fields to extract.
. **At runtime**, all registered secrets are passed to your connector as a JSON string — either via the `REGISTERED_SECRETS` environment variable or the `--registered-secrets` CLI flag, depending on the execution mode.
Secret registration structure [#secret-registration-structure]
Each secret registration has three parts:
| Field | Description |
| ---------------- | ----------------------------------------------------------------------------------- |
| **Vault secret** | The path to the secret in the vault. |
| **INI header** | A section name used to group the secret's fields. |
| **Fields** | The specific field names to extract from the secret (e.g. `api_key`, `api_secret`). |
When to use which [#when-to-use-which]
| | Authentication | Secrets |
| ---------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| **Who provides the values** | End-users, via the authentication store | Developers or platform admins, via the vault |
| **Use case** | Third-party service credentials that vary per user (OAuth tokens, API keys) | Internal credentials shared across all instances of the connector |
| **How values are delivered** | Individual env vars / CLI flags with `PUP_AUTH_` prefix | Single JSON string via `REGISTERED_SECRETS` |
| **End-user interaction** | Users select their credentials from a dropdown | None — users don't see secrets |
# Execution config
import { Callout } from 'fumadocs-ui/components/callout';
The **Execution configuration** step shows the execution mode selected when the connector was created. The execution mode determines how [individual configuration](/docs/connector-development/dev-portal/connector-setup/individual-config) values, [authentication](/docs/connector-development/dev-portal/connector-setup/auth-and-secrets) credentials, and [secrets](/docs/connector-development/dev-portal/connector-setup/auth-and-secrets#secrets) are passed to your connector at runtime.
The execution mode is set at creation and cannot be changed afterward. If you need a different mode, create a new connector.
Environment variable (recommended) [#environment-variable-recommended]
Individual config values are passed as uppercase environment variables. Dashes in the command option are replaced with underscores.
```bash
API_KEY=abc123 BASE_URL=https://api.example.com php ./bin/console connector:run:import
```
Authentication credentials use the `PUP_AUTH_` prefix. Secrets are passed as a JSON string in `REGISTERED_SECRETS`.
This mode works with any language and framework — just read environment variables.
Command options [#command-options]
Individual config values are appended as `--flag=value` CLI arguments.
```bash
php ./bin/console connector:run:import --api-key='abc123' --base-url='https://api.example.com'
```
Authentication credentials use the `--pup-auth-` prefix. Secrets are passed via `--registered-secrets`.
Use this mode if your CLI framework expects flags rather than environment variables.
# Application config
import { Callout } from 'fumadocs-ui/components/callout';
The **Application configuration** step tells the Dev Portal how to run your connector inside the Docker container.
Fields [#fields]
| Field | Required | Description |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Command** | Yes | The executable to run inside the container. This is the first part of what gets executed — e.g. `php`, `python`, `node`. |
| **Arguments** | No | Additional arguments appended to the command — e.g. `./bin/console connector:run:import`. |
| **Health check** | No | Arguments appended to the command during the health check phase of a build. Used to verify the container starts correctly — e.g. `--help`. |
Together, the command and arguments form the full execution command. For example:
| Command | Arguments | What gets executed |
| -------- | ------------------------------------ | ---------------------------------------- |
| `php` | `./bin/console connector:run:import` | `php ./bin/console connector:run:import` |
| `python` | `main.py` | `python main.py` |
| `node` | `dist/index.js --verbose` | `node dist/index.js --verbose` |
How the health check works [#how-the-health-check-works]
The health check runs automatically **during the build process**, after the Docker image is built and before it's pushed to the registry. It verifies that the container can start and the executable works.
When a health check is configured:
. A temporary container is created from the built image
. The container executes: `[command] [arguments] [health-check]`
. The check must complete within **5 seconds**
. Exit code `0` means the check passed — the build continues
. Any non-zero exit code or a timeout means the check failed — the build fails
For example, with command `php`, arguments `./bin/console connector:run:import`, and health check `--help`:
```
php ./bin/console connector:run:import --help
```
This verifies that the Symfony console command is registered and the application boots correctly, without actually running the connector.
The health check is optional but recommended. Without it, a broken image could be pushed to the registry and only fail at runtime. Common health check values: `--help`, `--version`.
How configurations are passed at runtime [#how-configurations-are-passed-at-runtime]
At runtime, the execution command is extended with end-user configuration values based on the [execution mode](/docs/connector-development/dev-portal/connector-setup/execution-config):
**Environment variable mode** (recommended):
```
FIRST_OPTION=value SECOND_OPTION=value [command] [arguments]
```
**Command options mode**:
```
[command] [arguments] --first-option='value' --second-option='value'
```
See [Execution configuration](/docs/connector-development/dev-portal/connector-setup/execution-config) for details.
# VCS config
import { Callout } from 'fumadocs-ui/components/callout';
The **Version Control configuration** step connects your connector to a Git repository. The Dev Portal pulls your code from this repository when you trigger a build.
Fields [#fields]
| Field | Required | Description |
| ---------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **Authorization type** | Yes | How the Dev Portal authenticates with your repository. See [authorization types](#authorization-types) below. |
| **Repository link** | Yes | The URL to your Git repository. Format depends on the authorization type — HTTPS for public and basic auth, SSH for deploy keys. |
| **Branch** | No | The branch to pull code from. Defaults to `main` if not set. |
| **Username** | Basic auth only | Your Git username or email. Required when using basic auth. |
| **Token** | Basic auth only | A personal access token or password. Required when using basic auth. Stored securely in Vault — never returned in API responses. |
Authorization types [#authorization-types]
Public repository [#public-repository]
No credentials needed. Use this for public repositories that don't require authentication.
* **Repository link format**: HTTPS — e.g. `https://github.com/productsupcom/connector-quickstart`
Basic auth [#basic-auth]
Authenticate with a username and personal access token. This is the quickest way to connect a private repository.
* **Repository link format**: HTTPS — e.g. `https://github.com/your-org/your-connector`
* **Username**: Your Git provider username or email
* **Token**: A personal access token with read access to the repository
The token is stored securely and never shown in the UI after saving. If you need to update it, provide a new token — you can't retrieve the old one.
Deploy key [#deploy-key]
Authenticate with an SSH key pair. The Dev Portal generates the key pair automatically — you add the public key to your repository as a deploy key.
* **Repository link format**: SSH — e.g. `git@github.com:your-org/your-connector.git`
When you select deploy key and save:
. The Dev Portal generates an SSH key pair
. The public key is displayed in the UI — copy it
. Add it as a deploy key in your Git provider (GitHub → Settings → Deploy keys, GitLab → Settings → Repository → Deploy keys, etc.)
. Grant **read-only** access — the Dev Portal only needs to pull code
Deploy keys are recommended for production connectors. They're scoped to a single repository and don't expire with a personal account, unlike personal access tokens.
Test connection [#test-connection]
After saving your VCS config, click **Test connection** to verify the Dev Portal can reach your repository and find the configured branch. This checks:
* The repository URL is reachable
* The credentials are valid (for basic auth and deploy key)
* The configured branch exists
If the test fails, check that:
* The repository URL is correct and uses the right format (HTTPS vs SSH)
* For basic auth: the username and token are valid and have read access
* For deploy keys: the public key has been added to the repository
* The branch name matches an existing branch in the repository
URL format reference [#url-format-reference]
| Authorization type | URL format | Example |
| ------------------ | ---------- | ------------------------------------------------------- |
| Public | HTTPS | `https://github.com/productsupcom/connector-quickstart` |
| Basic | HTTPS | `https://github.com/your-org/your-connector` |
| Deploy key | SSH | `git@github.com:your-org/your-connector.git` |
# Individual config
import { Callout } from 'fumadocs-ui/components/callout';
**Individual configuration** defines the form fields that end-users see when they add your connector to a site. Each field becomes an environment variable or CLI flag at runtime — this is how end-users customize connector behavior without touching code.
For example, if your connector imports products from an API, you might define fields for the API key, base URL, and batch size.
The fields you define here are displayed to end-users as a form on the ProductsUp platform once the connector is synced.
Field properties [#field-properties]
Each field has the following properties:
| Property | Required | Description |
| ------------------ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Command option** | Yes | The key used to pass the value to your connector at runtime. Must start with a letter and can contain letters, numbers, dashes, and underscores. |
| **Field type** | Yes | The type of form control shown to end-users. See [field types](#field-types) below. |
| **Field name** | Yes | The label displayed to end-users. |
| **Required** | No | Whether the field must be filled in. Defaults to false. |
| **Placeholder** | No | Hint text shown inside the input when empty. |
| **Description** | No | Help text displayed below the field. |
| **Default value** | No | A pre-filled value. For checkboxes, must be `0` or `1`. For selects, must match one of the defined options. |
| **Field config** | Select types only | A JSON object defining the available options. Required for `select` and `select_multiple` types. |
| **Order** | No | The position of the field in the form. Fields are displayed in ascending order. |
Field types [#field-types]
Common types (all connector types) [#common-types-all-connector-types]
| Type | Description |
| ----------------- | ------------------------------------------------------------------------------------------------ |
| `input` | Single-line text input. Use for short values like API keys, URLs, account IDs. |
| `textarea` | Multi-line text input. Use for longer content like templates or JSON payloads. |
| `password` | Masked text input. Use for sensitive values. |
| `checkbox` | A boolean toggle. Default value must be `0` (unchecked) or `1` (checked). |
| `select` | Dropdown with predefined options. Requires `field config` with a JSON object of key-label pairs. |
| `select_multiple` | Multi-select dropdown. Same config format as `select`. |
| `hidden` | A hidden field not visible to end-users. Use for internal defaults. |
Type-specific fields [#type-specific-fields]
Some field types are only available for specific connector types:
| Type | Available for | Description |
| --------------------------------- | ------------------------- | --------------------------------- |
| `date` | Data source, Data service | A date picker. |
| `integer` | Data service | Numeric input (integers only). |
| `number` | Data service | Numeric input (decimals allowed). |
| `export_headers` | Export, Export delta | Export header selection. |
| `feed_headers` | Export, Export delta | Feed header selection. |
| `stage_columns_dropdown` | Data service | Column selection dropdown. |
| `stage_columns_dropdown_multiple` | Data service | Multi-select column selection. |
Select field config [#select-field-config]
For `select` and `select_multiple` fields, the **field config** property must contain a JSON object mapping option keys to display labels:
```json
{
"us": "United States",
"de": "Germany",
"uk": "United Kingdom"
}
```
The keys are the values passed to your connector at runtime. The labels are what end-users see in the dropdown. If you set a default value, it must match one of the keys.
How values reach your connector [#how-values-reach-your-connector]
The **command option** property determines how the value is passed to your connector, based on the [execution mode](/docs/connector-development/dev-portal/connector-setup/execution-config):
Environment variable mode (recommended) [#environment-variable-mode-recommended]
The command option is converted to an uppercase environment variable. Dashes are replaced with underscores.
| Command option | Environment variable |
| -------------- | -------------------- |
| `api_key` | `API_KEY` |
| `base-url` | `BASE_URL` |
| `batchSize` | `BATCHSIZE` |
Command options mode [#command-options-mode]
The command option is used as a CLI flag prefixed with `--`.
| Command option | CLI flag |
| -------------- | -------------------- |
| `api_key` | `--api_key='value'` |
| `base-url` | `--base-url='value'` |
If you're using environment variable mode, avoid dashes in command options — use underscores instead. Dashes are converted to underscores in env var names, which can be confusing.
Accessing values in your code [#accessing-values-in-your-code]
Here's a complete example: define two fields in the Dev Portal (`api_key` and `batch_size`), then access them in a Symfony service.
**In the Dev Portal**, create two individual config fields:
| Command option | Field name | Field type | Required |
| -------------- | ---------- | ---------- | -------- |
| `api_key` | API Key | `input` | Yes |
| `batch_size` | Batch Size | `input` | No |
**In `config/services.yaml`**, bind the environment variables to service parameters:
```yaml title="config/services.yaml"
services:
_defaults:
autowire: true
autoconfigure: true
bind:
$apiKey: '%env(API_KEY)%'
$batchSize: '%env(int:BATCH_SIZE)%'
```
**In your service**, receive them as typed constructor parameters:
```php title="src/Service/ImportService.php"
readonly class ImportService
{
public function __construct(
private ContainerApiInterface $containerApi,
private string $apiKey,
private int $batchSize,
) {}
public function run(): void
{
$client = new \GuzzleHttp\Client();
$response = $client->get('https://api.example.com/products', [
'headers' => ['Authorization' => 'Bearer ' . $this->apiKey],
'query' => ['limit' => $this->batchSize],
]);
// Process response...
}
}
```
Symfony's `%env()%` syntax supports type casting: `int:`, `bool:`, `json:`, and plain strings. This keeps your configuration strongly typed and your dependencies explicit.
Ordering [#ordering]
Fields are displayed to end-users in the order you define. You can reorder fields by changing their order value in the Dev Portal. When you insert a field at a specific position, surrounding fields are automatically reordered.
# Get operation status and result
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export template revisions
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Update export template metadata
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get export template metadata
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Create export template metadata
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export categories
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get export template marketing information
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get an export category
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Update export template marketing information
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export countries
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get an export country
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export template attribute tags
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get an export template attribute tag
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Delete an export template attribute tag
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Create an export template attribute tag
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Upload an export template logo
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Update an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Commit export template changes
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Create an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get a full export template view
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export templates
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Delete an export template logo
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Create an export template attribute alias
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export template attribute aliases
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Update an export template attribute
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Create an export template attribute
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Delete an export template attribute
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Bulk update export template attributes
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export template attributes by filter
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export template attributes
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get an export template attribute
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Bulk create export template attributes
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Delete an export custom form field
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Create an export custom form field
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Update an export custom form field
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get an export custom form field
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export custom form fields
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List export template tags
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get an export template tag
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Create an export template tag
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Delete an export template tag
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Assign analyzer test templates to an attribute
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List analyzer test templates
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Unassign an analyzer test template from an attribute
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Update an analyzer test assignment
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get the JSON Schema of an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Delete an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Replace an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Create an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# List sites using an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Duplicate an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Get an export template
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
# Shorten, lengthen, or create text from attributes with AI data services
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
If you need to quickly change the text in your data feed, for example, to make product descriptions shorter or longer, or create new text using the information from other attributes, you can use the following AI-based data services:
* *Shorten Text* lets you shorten the text to fit a needed character limit while keeping its main point.
* *Lengthen Text* lets you extend the text to fit a needed character limit by adding phrases that support the main point.
* *Create Text From Attributes* lets you generate text based on the data from the selected attributes and a needed character limit. The service also lets you translate the generated text into the needed language.
These data services are available only for the import and intermediate stages.
These data services use the capabilities of OpenAI by connecting to their public API, which is why you must read and accept [OpenAI's Terms of Service](https://www.productsup.com/open-ai-terms-of-service/) before adding any of these data services to your site. You can do so during the setup.
Productsup caches the AI-generated texts for each product and doesn't send the request to Open API with each run unless you decide to clear the cache and generate new texts. Caching the data improves the platform's performance and guarantees the texts don't change with every consecutive run saving you money for the OpenAI services.
While Productsup offers integration with OpenAI for text generation at no cost, the actual text generation process is handled by OpenAI, which may involve fees for their services. Before using our AI-based data services, ensure you're familiar with OpenAI's pricing that we use in our data services. See [Pricing](https://openai.com/pricing) for more information.
Prerequisites [#prerequisites]
To use the Shorten Text, Lengthen Text, and Create Text From Attributes data services, you need:
. An OpenAI account. See [Account setup](https://platform.openai.com/docs/quickstart/account-setup).
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
Add the Shorten Text or Lengthen Text data service [#add-the-shorten-text-or-lengthen-text-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Shorten Text*, select **Add**, and give it a desired name and column prefix.By default, `___service_ai_shorten_text` for Shorten Text and `___service_ai_lengthen_text` for Lengthen Text are the column prefixes.
Choose the stage where you have the attributes that need text changes in **Service Data Level**.
Check the **Open AI terms** checkbox to confirm that you have read and accept [OpenAI's Terms of Service](https://www.productsup.com/open-ai-terms-of-service/). You can't add the data service without selecting this checkbox.
Select **Add**.
Add your OpenAI API key in **API Key**.
In **OpenAI model**, choose the AI model for your specific use case, whether you need faster responses, more advanced reasoning, or compliance with internal AI usage guidelines.
Choose the attribute in your feed that contains the text you need to change in **Attribute name**.
The list of attributes depends on the stage that you've chosen in Service Data Level.
Set the desired length of your text in **Max number of characters**. The length of the AI-suggested text can still be a bit more than specified as OpenAI isn't strict on this.
In **Max Response Tokens**, set the maximum number of tokens in the AI’s response. It configures max tokens for older models or max completion tokens for newer models. If you leave the field empty, the platform uses a default value of 2048.See [What are tokens and how to count them?](https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them) for more information.
In **Request timeout (seconds)**, define the waiting time for a response before the data service stops the attempts. Recommended time is 90 seconds. An empty value sets no timeout. This means that requests might take an indefinite time depending on the context, size of data, and OpenAI traffic spikes.
In **Request concurrency**, specify the number of parallel requests to OpenAI. This feature speeds up processing for large datasets. Maximum concurrency depends on your Open AI subscription terms.
If you want the platform to clear the cache for all products, turn on **Clear cache before the next run**. After the next run, it returns to the *Off* state, and you need to activate it again whenever you want to clear the cache and generate new texts.
If you want to stop requests to OpenAI API when a plan / billing issue occurs, turn on **Stop requests when a plan issue is detected**. When enabled, it will stop all requests to OpenAI and use cached data where available if a plan issue is detected, not allowing the data service to fail. This could be due to invalid API key, deactivated account, billing hard limit reached, insufficient quota or expired API key.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
If you can't see your new texts in Data View, ensure the platform hasn't hidden it:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the dropdown on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the data service prefix and select the eye icon next to each attribute you want Data View to display.
Close the pop-up.
The naming of the attributes created by the data service depends on the column prefix you choose in [see the relevant section](#N1709128559908). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send such attributes to your export channels.
Add the Create Text From Attributes data service [#add-the-create-text-from-attributes-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Create Text From Attributes*, select **Add**, and give it a desired name and column prefix.By default, `___service_ai_create_text_from_attributes` is the column prefix.
In **Service Data Level**, choose the stage where you have attributes with the data needed for text generation.
Check the **Open AI terms** checkbox to confirm that you have read and accept [OpenAI's Terms of Service](https://www.productsup.com/open-ai-terms-of-service/). You can't add the data service without selecting this checkbox.
Select **Add**.
Add your OpenAI API key in **API Key**.
In **OpenAI model**, choose the AI model for your specific use case, whether you need faster responses, more advanced reasoning, or compliance with internal AI usage guidelines.
Choose up to five (5) attributes in your feed that contain the text that you want to use to generate new text in the dropdowns from **Attribute name 1** to **Attribute name 5**.
The quality of the generated text depends on the content of the selected attributes. For example, if the attributes are empty, there is no content to create text.
The list of attributes depends on the stage that you've chosen in Service Data Level.
Select the language of the original text in the attributes in **Source language**.
In **Target language**, select the language in which the service should create new text or select the same language as the source one.
Set the desired length of your text in **Max number of characters**. The length of the AI-suggested text can still be a bit more than specified as OpenAI isn't strict on this.
In **Max Response Tokens**, set the maximum number of tokens in the AI’s response. It configures max tokens for older models or max completion tokens for newer models. If you leave the field empty, the platform uses a default value of 2048.See [What are tokens and how to count them?](https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them) for more information.
In **Request timeout (seconds)**, define the waiting time for a response before the data service stops the attempts. Recommended time is 90 seconds. An empty value sets no timeout. This means that requests might take an indefinite time depending on the context, size of data, and OpenAI traffic spikes.
In **Request concurrency**, specify the number of parallel requests to OpenAI. This feature speeds up processing for large datasets. Maximum concurrency depends on your Open AI subscription terms.
If you want the platform to clear the cache for all products, turn on **Clear cache before the next run**. After the next run, it returns to the *Off* state, and you need to activate it again whenever you want to clear the cache and generate new texts.
If you want to stop requests to OpenAI API when a plan / billing issue occurs, turn on **Stop requests when a plan issue is detected**. When enabled, it will stop all requests to OpenAI and use cached data where available if a plan issue is detected, not allowing the data service to fail. This could be due to invalid API key, deactivated account, billing hard limit reached, insufficient quota or expired API key.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
If you can't see your new texts in Data View, ensure the platform hasn't hidden it:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the dropdown on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the data service prefix and select the eye icon next to each attribute you want Data View to display.
Close the pop-up.
The naming of the attributes created by the data service depends on the column prefix you choose in [see the relevant section](#N1709128830871). The attribute names the data service generates always start with three underscores (`___`), which means the platform doesn't send such attributes to your export channels.
Edit a data service [#edit-a-data-service]
Go to **Data Services** from your site's main menu.
Change the settings of the needed data service:
1. To deactivate a data service, choose the pause icon next to the desired data service.
2. Select the cogwheel icon (**⚙**) next to the desired data service to edit other settings and select **Save**.
Delete a data service [#delete-a-data-service]
Go to **Data Services** from your site's main menu.
To stop a data service from affecting your feed without deleting the data service itself, you can choose the pause icon next to the desired data service.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
# Remove image background with the Image Background Removal service
import { Callout } from "fumadocs-ui/components/callout";
Introduction [#introduction]
If you want transparent backgrounds in your product images to make your product stand out, you can isolate the product using the Image Background Removal service in the platform. This service removes unwanted image backgrounds to create transparent backgrounds using the [remove.bg](http://remove.bg) API.
Productsup shares your product image URLs with [remove.bg](http://remove.bg) for removing image backgrounds. The [remove.bg](http://remove.bg) service then downloads your images, removes the backgrounds, and sends the edited images to your Amazon S3 bucket account. From there, Productsup retrieves the newly revised images from your S3 account.
After Productsup receives your newly edited images, the image URLs are publicly accessible again.
Requirements [#requirements]
You must have a paid Kaleido account to use the Image Background Removal service. See [Create a new Kaleido Account](https://accounts.kaleido.ai/users/sign_up) and [Kaleido Pricing](https://www.remove.bg/pricing). You also need to provide your [Amazon S3](https://aws.amazon.com/s3/?nc1=h_ls) credentials, so that Productsup can access the uploaded images.
Ensure you have set a [unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) to use this service.
Add the Image Background Removal service [#add-the-image-background-removal-service]
To add the Image Background Removal service:
. Go to **Data Services** from your site's main menu, and select **ADD SERVICE**.
. Search for *Image Background Removal* and select **Add**.
. (Optional) Enter a custom name for the new service in **Name**.
1. This custom name replaces the default name of the service on the *Data Services* overview page.
. (Optional) Enter a custom column prefix in **Column prefix**. When the platform creates multiple columns from one service, it adds a prefix to all new columns. You can add a custom prefix that helps you identify newly created columns using a particular service. For example, enter any text you want to prepend to your new columns, such as `hero_images`.
. Choose the attribute column level you want to apply the Image Background Service to in **Service Data Level**: **Import** or **Intermediate**. Select the attribute column level that contains the image links, as necessary.
. Select **Add**.
. Choose the column containing the image URL from the **Image URL attribute** drop-down menu.
. Enter the appropriate API key in **Remove.bg API Key**.
. Enter your object's bucket name in **S3 Bucket name**.
The URL you paste in this field shouldn't have the prefix `s3://`. If your URL has this prefix, make sure to trim it.
. Select the region for your bucket in **S3 Region**.
. Enter your Amazon S3 credentials in **S3 Access Key** and **S3 Access secret**.
. Set a trigger for the Image Background Removal service to run when you refresh Data View by selecting the **prohibition sign** or **no symbol** button icon under **Trigger during a refresh in Data View**. You can now see a **checkmark symbol** button icon indicating that it is active.
. Select **Save**.
Once you have successfully set up the Image Background Removal service, the platform creates two (2) new columns, including any custom prefixes you earlier defined. See the following:
`___service_background_remover_image_url`
`___service_background_remover_image_name`
Edit an existing Image Background Removal service [#edit-an-existing-image-background-removal-service]
To edit settings for your Image Background Removal service:
. Go to **Data Services** from your site's main menu, and in your chosen service, select the *Settings* cogwheel icon.
. Select **Save** after making edits.
Delete an existing Image Background Removal service [#delete-an-existing-image-background-removal-service]
To delete your Image Background Removal service:
. Go to **Data Services** from your site's main menu, and in your chosen service, select the *settings* cogwheel icon.
. Scroll to the bottom of the *Settings* page and select **Remove this service**.
# Translate your feed with the Google Translate and Google Translate (Advanced) data services
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
To let you translate your product information, such as titles or descriptions, into any language you need, Productsup offers two (2) data services:
. The Google Translate data service
. The Google Translate (Advanced) data service
These data services are helpful if your product catalog is available only in one language, but you use it across different countries. You can also use them to quickly translate your product information for trying out a new market.
Both data services use the Google Cloud Translation API and can detect the language of the attribute you want to translate. Using the Google Cloud Translation API isn't free, the pricing depends on the chosen API option.
Here is how the data services differ:
| Google Translate data service | Google Translate (Advanced) data service |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Uses Translation API Basic.See [Cloud Translation options](https://cloud.google.com/translate?hl=ru#all-features) for more details on the capabilities of this option.See [Cloud Translation pricing](https://cloud.google.com/translate/pricing/?gad=1\&gclid=CjwKCAiAxreqBhAxEiwAfGfndBomv1uYk1beqvPVNzwWeCuYnGw16ujyqVl0noEIK-6tfnByVi_3qRoC6z8QAvD_BwE\&gclsrc=aw.ds) for cost details. | Uses Translation API Advanced.See [Cloud Translation options](https://cloud.google.com/translate?hl=ru#all-features) for more details on the capabilities of this option.See [Cloud Translation pricing](https://cloud.google.com/translate/pricing/?gad=1\&gclid=CjwKCAiAxreqBhAxEiwAfGfndBomv1uYk1beqvPVNzwWeCuYnGw16ujyqVl0noEIK-6tfnByVi_3qRoC6z8QAvD_BwE\&gclsrc=aw.ds) for cost details. |
| Translates your product data without using any custom glossaries. | Lets you use glossaries created in your Google Cloud service account to consistently translate the needed terms and phrases. |
| Lets you translate only one (1) attribute within one data service setup. | Lets you translate one or multiple attributes within one data service setup without adding the data service multiple times. |
When fetching translations for your product data, the translation data services add two (2) new attributes to your site per each translated column if you have only one (1) target language. Each additional target language adds one (1) more attribute per each translated column.
The names of the added attributes vary per data service. The following examples use the default prefix `___service_google_translate`. If you change your prefix in the data service setup, the names of the added attributes are going to look different, but the endings of the attribute names will still be as shown below.
| The Google Translate data service adds: | The Google Translate (Advanced) data service adds: |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| - `___service_google_translate_md5`, an attribute that contains the hash value created for the already translated values, which means that the site caches those values and keeps them unchanged if the data service runs again. - `___service_google_translate_xx_yy`, where `xx` is the source language and `yy` is the target language. These attributes contain the desired translations. | - `___service_google_translate_column_md5`, where `column` is the name of the column the data service translated. This attribute contains the hash value created for the already translated values, which means that the site caches those values and keeps them unchanged if the data service runs again. - `___service_google_translate_column_xx_yy`, where `column` is the name of the column the data service translated, `xx` is the source language, and `yy` is the target language. These attributes contain the desired translations. |
Prerequisites [#prerequisites]
Each translation data service has its own set of prerequisites:
. Google Translate data service:
1. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier).
2. An API key to authenticate in Google Cloud. You need to enable and purchase it. See [Cloud Translation API Key](https://console.cloud.google.com/apis/library/translate.googleapis.com).
. Google Translate (Advanced) data service:
1. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier).
2. A Google Cloud service account with at least one project created in it. See [Setup](https://cloud.google.com/translate/docs/setup) for more information.
3. The region of your Google Cloud project. See [Regions and zones](https://cloud.google.com/compute/docs/regions-zones).
4. The configuration of your Google Cloud service account in the JSON format. It should feature the needed project ID, private key, client ID, etc. See [Create a service account key](https://cloud.google.com/iam/docs/keys-create-delete#creating).
5. The ID of a glossary associated with a relevant Google Cloud project. The platform only supports glossaries in the CSV format. See [Equivalent term sets (CSV)](https://cloud.google.com/translate/docs/advanced/glossary#equivalent_term_sets_csv).See [Creating and using glossaries (Advanced)](https://cloud.google.com/translate/docs/advanced/glossary) for more information.
This prerequisite is optional. You need a glossary ID only if you want to use a glossary for your translations.
Add the Google Translate data service [#add-the-google-translate-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Google Translate* and select **Add**.
Give it a desired name and column prefix. By default, `___service_google_translate` is the column prefix.
Choose the stage containing the columns you want to translate in **Service Data Level** and select **Add**.
Select the column you want to translate from the **Column** drop-down list.
If you choose **Import** in **Service Data Level**, the drop-down list **Column** displays the columns of your import stage. If you choose **Intermediate**, the drop-down list contains your intermediate-stage columns.
Select a source language from the **Source language** drop-down menu.
Select one or several target languages in the **Target languages** field. Hold the *CTRL* or *Cmd* key to select more than one language.
In **API key**, enter your Google Cloud Translation API key.
If you want the platform to run the data service every time there is a refresh in Data View, check the box **Trigger during a refresh in Data View**.
Select **Save**.
For the platform to process a new data service, select **Import** or **Run** in the top-right corner of your site's view.
If you can't see the columns that the Google Translate data service added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the default prefix `___service_google_translate` or a prefix that you set up in [see the relevant section](#N1679076277537) and select the eye icon next to each attribute you want Data View to display. The attribute names that the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
Close the pop-up menu.
Add the Google Translate (Advanced) data service [#add-the-google-translate-advanced-data-service]
Go to **Data Services** from your site's main menu and select **ADD SERVICE**.
Search for *Google Translate (Advanced)* and select **Add**.
Give it a desired name and column prefix. By default, `___service_google_translate` is the column prefix.
Choose the stage containing the columns you want to translate in **Service Data Level** and select **Add**.
Select the columns you want to translate in the **Column** field. Hold the *CTRL* or *Cmd* key to select multiple columns.
If you choose **Import** in **Service Data Level**, the field **Column** displays the columns of your import stage. If you choose **Intermediate**, the field contains your intermediate-stage columns.
Select a source language from the **Source language** drop-down menu.
Select one or several target languages in the **Target languages** field. Hold the *CTRL* or *Cmd* key to select more than one language.
In **Google Cloud service account configuration (JSON)**, enter the configuration of your Google Cloud service account in the JSON format. See [Prerequisites](#section-idm353358122836556) to find more details about it.
In **Location**, state the region of your Google Cloud project.
In **Glossary ID (optional)**, you can provide the ID of the glossary you created in your Google Cloud project if you want more control over the consistency of your translations.
If you want the platform to run the data service every time there is a refresh in Data View, check the box **Trigger during a refresh in Data View**.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
If you can't see the columns that the Google Translate (Advanced) data service added to your feed in Data View, ensure the platform hasn't hidden them:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the drop-down list on your left.
Select the menu icon on the right and then select the eye icon.
Find the attributes in the list that use the default prefix `___service_google_translate` or a prefix that you set up in [see the relevant section](#N1699531016354) and select the eye icon next to each attribute you want Data View to display. The attribute names that the data service generates always start with three underscores (`___`), which means the platform doesn't send those attributes to your export channels.
Close the pop-up menu.
# Generate and transform content with AI data services
import { Callout } from "fumadocs-ui/components/callout";
Productsup AI data services use AI to generate, rewrite, translate, and enrich your product data automatically as it comes into the platform. Instead of writing content by hand or maintaining it per product, you describe what you want, and Productsup sends the relevant attributes to an AI provider and imports the result back into your feed.
Common jobs you can hand to AI include generating SEO-friendly product **titles**, writing product **descriptions**, classifying products into a **product type** or Google product category, generating **SEO keywords** or **product highlights**, shortening or lengthening existing text, translating a feed into another language, and removing product-image backgrounds.
Choose the right AI data service [#choose-the-right-ai-data-service]
| I want to… | Use this data service |
| :--------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Generate a product title from existing attributes | [Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr) |
| Generate a product description | [Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr) |
| Generate a product type or Google product category | [Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr) |
| Generate SEO keywords or product highlights | [Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr) |
| Use Anthropic's Claude models for any of the above | [Use Claude with the data service Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/use-claude-with-the-custom-prompt-data-service) |
| Shorten, lengthen, or create text from existing attributes | [Shorten, lengthen, or create text from attributes with AI data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/shorten-lengthen-or-create-text-from-attributes-with-ai-data) |
| Translate a feed into another language | [Translate your feed with the Google Translate and Google Translate (Advanced) data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/translate-your-feed-with-the-google-translate-and-google-tra) |
| Remove the background from product images | [Remove image background with the Image Background Removal service](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/remove-image-background-with-the-image-background-removal-se) |
Use *Custom Prompt With Dynamic Values* whenever you want AI to write something new from your attributes. Use *Shorten, lengthen, or create text* when you already have text and only need to reshape its length or tone.
How AI data services work [#how-ai-data-services-work]
All AI data services share the same basic behavior, so the details below apply across the services listed above unless an individual article notes an exception.
**Where they run.** AI data services run at the **import** or **intermediate** stage, before your data reaches mapping and export.
**Which AI provider you use.** Depending on the service, you can connect to OpenAI, Microsoft Copilot (Azure OpenAI), or Anthropic's Claude. You provide your own provider account and API key, and you accept the provider's terms during setup.
**Where the output goes.** Each service writes its result into a new attribute whose name starts with three underscores, for example `___service_ai_custom_prompt`. Attributes starting with `___` are working attributes: the platform doesn't send them to your export channels unless you map their values to an exported attribute yourself. This lets you review AI output before it reaches any channel.
**Caching and cost.** Productsup caches the AI result per product, so identical inputs aren't re-sent to the provider on every run. This keeps output stable between runs and controls cost. The cache is tied to the exact model, context, prompt, and the values of the attributes you reference. Changing any of these — even by one character — invalidates the cache and regenerates the affected products on the next run. Productsup's integration is free; the AI provider may charge for usage based on their own pricing.
**What you need.** A provider account and API key, and a [unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) set on your site.
Best practices [#best-practices]
**Test on a small sample first.** Before running an AI service across your full catalog, confirm the output on a small set of products. Large catalogs can take a long time and consume provider tokens, so validate the prompt and output format before scaling up.
**Generate at parent level and inherit to variants.** If your feed has variant products (size, color) sharing a parent, run the AI service only for parent SKUs and propagate the result to variants by matching on Item Group ID. This cuts token cost dramatically and keeps every variant of the same product consistent, instead of generating a slightly different value per variant.
**Map AI output to export deliberately.** AI results stay in `___`-prefixed working attributes so nothing reaches a channel by accident. Review the values in Data View, then map them to the attribute you actually export.
For prompt-writing tips specific to Custom Prompt With Dynamic Values — such as writing precise instructions, keeping variant attributes consistent, and avoiding conditions that lose context after attribute substitution — see [Best practices](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr#best-practices) on the Custom Prompt article.
FAQ [#faq]
**How do I generate new product titles or descriptions with AI?**
Use the Custom Prompt With Dynamic Values data service. See [Generate or transform values with the data service Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr) for setup steps and example prompts.
**Can Productsup write SEO text or product content for me?**
Yes. The AI data services can generate SEO-friendly titles, descriptions, product types, and keywords from your existing data. Start with the Custom Prompt With Dynamic Values service.
**Which AI models can I use?**
OpenAI models, Microsoft Copilot (Azure OpenAI), and Anthropic's Claude, depending on the service. You bring your own provider account and API key.
**Does using AI data services cost extra?**
Productsup's integration with the AI providers is free. The AI provider itself may charge for usage based on your prompts and data volume. Review your provider's pricing before running at scale.
You are responsible for monitoring and controlling your own AI provider costs. Set a spending limit or usage budget directly on your API key with your provider (for example, in your OpenAI or Azure account) so usage can't exceed what you expect.
**Will my AI-generated values change on every run?**
No. Results are cached per product, so the same inputs return the same output run over run. Values regenerate only when you clear the cache or change the model, context, prompt, or a referenced attribute.
The cache is temporary storage, not a permanent record. While we do our best to preserve it, we do not guarantee it. If an AI-generated value is business-critical, export it to an external system rather than relying on the cache as your only copy.
See also [#see-also]
* [Generate or transform values with the data service Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr)
* [Use Claude with the data service Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/use-claude-with-the-custom-prompt-data-service)
* [Shorten, lengthen, or create text from attributes with AI data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/shorten-lengthen-or-create-text-from-attributes-with-ai-data)
* [Translate your feed with the Google Translate and Google Translate (Advanced) data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/translate-your-feed-with-the-google-translate-and-google-tra)
* [Remove image background with the Image Background Removal service](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/remove-image-background-with-the-image-background-removal-se)
# Generate or transform values with the data service Custom Prompt With Dynamic Values
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
Introduction [#introduction]
The *Custom Prompt With Dynamic Values* data service lets you use AI to generate new product content or transform existing values, then imports the result back into your feed. You write a prompt describing what you want, reference any attribute on your site inside it, and the platform sends the request to your chosen AI provider (OpenAI, Microsoft Copilot / Azure OpenAI, or Claude).
Common jobs you can hand to this service include:
* **Generating a product title** from attributes such as brand, product type, gender, and material.
* **Generating a product description** that is keyword-rich and channel-compliant.
* **Generating a product type or Google product category** for classification.
* **Generating SEO keywords or product highlights** based on a product's attributes.
* **Translating product content** into one or more languages, with control over tone and terminology.
* **Transforming existing values**, such as converting units, reformatting text, or normalizing capitalization.
Once the AI provider completes the task, it returns the result to your Productsup site, where the platform creates a new attribute — by default `___service_ai_custom_prompt` — containing the generated values.
The data service is available for the **import** and **intermediate** stages.
This data service uses the capabilities of OpenAI by connecting to their public API, which is why you must read and accept [OpenAI's Terms of Service](https://www.productsup.com/open-ai-terms-of-service/) before adding this data service to your site. You can do so during the setup.
The data service is also compatible with Microsoft Copilot (Azure OpenAI).
Productsup caches the AI-generated values for each product and doesn't send the request to OpenAI API with each run unless you decide to clear the cache and generate new values for all products again. Caching the data improves the platform's performance and guarantees the values don't change with every consecutive run saving you money for the OpenAI services.
The cache is tied to the exact model, context, and prompt and the values of the attributes you reference in them. Changing any of them, even by a single character, invalidates the cache, so the next run re-sends every product to the AI tool and incurs new OpenAI costs. Change these only when you intend to regenerate all values.
While Productsup offers integration with OpenAI for generating or transforming your values at no cost, the actual process is handled by OpenAI, which may involve fees for their services. Before using our AI-based data services, ensure you are familiar with OpenAI's pricing that we use in our data services. See [Pricing](https://openai.com/api/pricing/) for more information.
Prerequisites [#prerequisites]
To use the *Custom Prompt With Dynamic Values* data service, you need:
. An OpenAI account and an API key. See [Account setup](https://platform.openai.com/docs/quickstart) and [Where do I find my OpenAI API Key?](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key).
. A unique item identifier. See [Set a unique item identifier](/docs/help-center/import-data-feeds/import-your-data-into-productsup/set-a-unique-item-identifier) for more information.
. If you use Microsoft Copilot (Azure OpenAI), be ready to provide your Azure resource, deployment, and API version.
Add the data service Custom Prompt With Dynamic Values [#add-the-data-service-custom-prompt-with-dynamic-values]
Go to **Data Services** from your site's main menu, and select **Add data service**.
Search for *Custom Prompt With Dynamic Values*, select **Add**, and give it a desired name.
In **Column prefix**, you can provide a desired name for the attribute the platform creates to import your new values. By default, `___service_ai_custom_prompt` is the attribute name.
In **Service Data Level**, choose the stage where you have the attribute you want to use in your AI prompt.
Check the **Open AI terms** checkbox to confirm that you have read and accept [OpenAI's Terms of Service](https://www.productsup.com/open-ai-terms-of-service/). You can't add the data service without selecting this checkbox.
Select **Add**.
Only if you use *Microsoft Copilot (Azure OpenAI)*:
In **Base URL**, enter the base URL of your Azure OpenAI API in the format *https\://`{resource}`.openai.azure.com/openai/deployments/`{deployment}`*, substituting `{resource}` and `{deployment}` with your parameters.
In **API version**, enter your Azure OpenAI API version. The platform will append `/chat/completions?api-version={version}` automatically.
This step is only for the customers who use Microsoft Copilot (Azure OpenAI). Skip this step if you use another AI provider.
Add your authentication data for the OpenAI API in **API key**.
In **OpenAI model**, choose the AI model for your specific use case, whether you need faster responses, more advanced reasoning, or compliance with internal AI usage guidelines.
In **Context (optional)**, you can provide additional information to guide the AI tool in working with your prompt. For example, you can give examples of the expected output, describe the tone of the text you want to generate, or explain what the AI tool should and shouldn't do with your data.
In **Prompt**, enter your AI prompt. It should describe how you want AI to generate or transform your values.You can add the values of an attribute to the prompt. Enter `@` and select the needed attribute from the list, or enter `@` and start typing the name of the needed attribute to filter the list and select the needed attribute.
If you chose **Import** in [see the relevant section](#N1718102488418), the list you see after entering `@` displays the attributes of your import stage. If you chose **Intermediate** in that field, the list contains your intermediate-stage attributes.
In **Max Response Tokens**, set the maximum number of tokens in the AI’s response. It configures max tokens for older models or max completion tokens for newer models. If you leave the field empty, the platform uses a default value of 2048.
In **Request timeout (seconds)**, define the waiting time for a response before the data service stops the attempts. Recommended time is 90 seconds. An empty value sets no timeout. This means that requests might take an indefinite time depending on the context, size of data, and OpenAI traffic spikes.
In **Request concurrency**, specify the number of parallel requests to OpenAI. This feature speeds up processing for large datasets. Maximum concurrency depends on your Open AI subscription terms.
If you want the platform to clear the cache for all products, turn on **Clear cache before the next run**. After the next run, it returns to the *Off* state, and you need to activate it again whenever you want to clear the cache and generate new texts.
If you want to stop requests to OpenAI API when a plan / billing issue occurs, turn on **Stop requests when a plan issue is detected**. When enabled, it will stop all requests to OpenAI and use cached data where available if a plan issue is detected, not allowing the data service to fail. This could be due to invalid API key, deactivated account, billing hard limit reached, insufficient quota or expired API key.
Select **Save**.
For the platform to process a new data service, select **Run** in the top-right corner of your site's view.
If you can't see your new values in Data View, ensure the platform hasn't hidden it:
Go to **Data View** from your site's main menu and choose the relevant stage or export in the dropdown on your left.
Select the menu icon on the right and then select the eye icon.
Find the attribute `___service_ai_custom_prompt_` in the list and select the eye icon next to it.
Close the pop-up.
The naming of the attribute created by the *Custom Prompt With Dynamic Values* data service depends on the input you provided in [see the relevant section](#N1718102582972). The names of the attributes the data service generates always start with three underscores (`___`), which means the platform doesn't send such attributes to your export channels.
Best practices [#best-practices]
**Test on a small sample first.** Run the service on a handful of products and review the output in Data View before processing your full catalog. Large catalogs take longer and consume more provider tokens, so validate your prompt and output format before scaling up.
**Generate at parent level and inherit to variants.** If your feed has variants (size, color) that share a parent product, run the service only for parent products and propagate the result to variants by matching on Item Group ID. This reduces token cost and keeps every variant of the same product consistent, instead of generating a slightly different value per variant.
**For values that must stay identical across variants, generate a base and append the rest.** For example, to build a title that ends in size and color, generate the base title (Brand — Product — Gender — Material) once at parent level, then append the size and color attributes with Append rule boxes. This guarantees consistency across variants and avoids re-running AI per variant.
**Reference attribute values, not attribute names.** Whenever the platform sends your prompt to the AI provider, it replaces each `@attribute` placeholder with that row's actual value, not the attribute's name. This can create confusing conditions: a prompt like `If @dimming = "Yes", do X` becomes `If Yes = "Yes", do X` for any row where `dimming` equals *Yes*, since the AI provider never sees the attribute name to know what "Yes" refers to. Phrase conditions so they still make sense after the substitution, or describe the context in plain language rather than comparing a value to itself.
Edit the data service Custom Prompt With Dynamic Values [#edit-the-data-service-custom-prompt-with-dynamic-values]
Go to **Data Services** from your site's main menu.
Change the settings of the needed data service:
1. To deactivate a data service, choose the pause icon next to the desired data service.
2. Select the cogwheel icon (**⚙**) next to the desired data service to edit other settings and select **Save**.
Delete the data service Custom Prompt With Dynamic Values [#delete-the-data-service-custom-prompt-with-dynamic-values]
Go to **Data Services** from your site's main menu.
To stop a data service from affecting your feed without deleting the data service itself, you can choose the pause icon next to the desired data service.
Select the cogwheel icon
next to the desired data service.
In the **Danger Area** panel, select **Remove this service**.
Select **Yes**.
Common use cases and example prompts [#common-use-cases-and-example-prompts]
The prompts below are starting points. Adjust the attributes and guidelines to match your feed and target channel. Enter them in the **Prompt** field when you add the data service.
Generate a product title [#generate-a-product-title]
Produce a consistent, SEO-friendly title from your product attributes.
```
You are an expert in eCommerce SEO and product title optimization.
Using the product data provided, generate a concise, SEO-friendly title
under 150 characters in this order: Brand — Product — Gender — Material.
Guidelines:
- Start with the brand if available.
- Derive the product name naturally from the attributes.
- Use dash separators and Title Case.
- Include pack, volume, or size only if explicitly available.
- Avoid promotional adjectives.
- Return only the final title, with no quotes or explanation.
Product data:
Brand: @brand
Product type: @product_type
Gender: @gender
Material: @material
```
Example output: `Acme — Running Shoes — Men — Mesh`
Generate a product description [#generate-a-product-description]
Produce a short, keyword-rich description suitable for shopping channels.
```
You are an expert in eCommerce SEO and product description optimization.
Using the product data provided, write a clear, keyword-rich description
of no more than five sentences.
Guidelines:
- Use a natural, informative tone.
- Begin with the brand and product type.
- Highlight key features, materials, and use cases.
- Avoid promotional or exaggerated language.
- Exclude pricing, shipping, and return details.
- Return only the description text.
Product data:
Brand: @brand
Product type: @product_type
Material: @material
Existing description: @description
```
Generate a product type or Google product category [#generate-a-product-type-or-google-product-category]
Classify a product into a standardized category hierarchy.
```
You are an expert in product taxonomy and classification.
Using the product data provided, generate a single standardized product type.
Guidelines:
- Use a hierarchy 3–5 levels deep, separated by " > ".
- Avoid brand names, colors, and sizes.
- Choose the most specific applicable category.
- Use Title Case.
- Return only the product type.
Product data:
Product title: @title
Existing description: @description
```
Example output: `Women > Clothing > Jeans > Mom Jeans`
Generate SEO keywords [#generate-seo-keywords]
Produce a set of search keywords from a product's attributes.
```
You are an eCommerce SEO specialist.
Using the product data provided, generate 5–8 relevant search keywords
for this product.
Guidelines:
- Base keywords on the product's type, use cases, and key attributes.
- Order from most to least relevant.
- Separate keywords with commas.
- Return only the keyword list.
Product data:
Product title: @title
Product type: @product_type
```
Translate product content [#translate-product-content]
Because you can give the model context — tone, target audience, and product-specific terminology — this service can produce translations that read more naturally and stay more on-brand than generic machine translation. It's a strong option when translation quality matters or when you want to enforce a glossary or house style.
```
You are a professional eCommerce translator.
Translate the product text below into French.
Guidelines:
- Preserve meaning, tone, and product-specific terminology.
- Keep units and formatting unchanged.
- Do not add or omit information.
- Return only the translated text.
Text to translate:
@product_description
```
**Translate into several languages in one request**
If you need the same text in multiple languages, you can save processing time and tokens by asking for all of them in a single request, separated by a delimiter you choose. You then split the combined result into one attribute per language and map each to the correct localized field.
```
You are a professional eCommerce translator.
Translate the product text below into French, German, and Spanish.
Guidelines:
- Preserve meaning, tone, and product-specific terminology in each language.
- Return the three translations on a single line in this exact order:
French|||German|||Spanish
- Separate them with ||| (three pipe characters) and nothing else.
- Do not add language names, labels, or explanations.
Text to translate:
@product_description
```
The service returns one attribute containing all three translations joined by `|||`. To split them, add the [Explode Columns](/docs/help-center/map-and-optimize-your-data/data-services/split-one-column-into-multiple-columns-with-the-explode-colu) data service, choose that attribute, and split it on `|||`. This creates a separate column per language, which you can then map to the localized attribute for each market.
Choose a delimiter that won't appear in your content (for example `|||` or another uncommon token) so the split stays clean.
Transform existing values [#transform-existing-values]
The service isn't limited to generating new content — it can also reshape values you already have. Describe the transformation in your prompt and reference the attribute to transform. For example, convert dimensions from one unit to another, reformat a date, or standardize capitalization across a text attribute.
FAQ [#faq]
**How do I generate new product titles or descriptions with AI?**
Add the Custom Prompt With Dynamic Values data service, then enter a prompt describing the title or description you want and reference your attributes, such as brand, product type, gender, or material, inside it. See the example prompts above.
**Can I generate a Google product category or product type?**
Yes. Use a prompt that asks for a standardized category hierarchy and reference your title and description attributes. See the product type example above.
**Which attributes can I use in my prompt?**
Any attribute in the stage you selected in Service Data Level. Type `@` in the Prompt field and pick from the list, or type `@` followed by the attribute name to filter.
**Will my generated values change on every run?**
No. Results are cached per product, so identical inputs return the same output run over run. Values regenerate only when you clear the cache or change the model, context, prompt, or a referenced attribute.
**How do I keep titles consistent across product variants?**
Generate the value at parent level and inherit it to variants by matching on Item Group ID. See [Best practices](#best-practices) above.
**Can I translate my product content with this service?**
Yes. Giving the model context — tone, audience, and terminology — often produces more natural, on-brand translations than generic machine translation. To translate into several languages efficiently, ask for all of them in one prompt separated by a delimiter, then split the result into one column per language with the Explode Columns data service. See [Translate product content](#translate-product-content) above.
See also [#see-also]
* [Generate and transform content with AI data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services) — overview of every AI-powered data service and when to use each.
* [Use Claude with the data service Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/use-claude-with-the-custom-prompt-data-service) — use Anthropic's Claude models with this data service through their OpenAI-compatible endpoint.
* [Shorten, lengthen, or create text from attributes with AI data services](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/shorten-lengthen-or-create-text-from-attributes-with-ai-data) — reshape text you already have, rather than generating new content.
# Use Claude with the data service Custom Prompt With Dynamic Values
import { Callout } from "fumadocs-ui/components/callout";
import { Step, Steps } from "fumadocs-ui/components/steps";
The *Custom Prompt With Dynamic Values* data service connects to an OpenAI-compatible AI tool. Anthropic offers an OpenAI-compatible endpoint for its Claude models, so you can use Claude with the existing data service by changing only the connection settings — the **Base URL**, **API key**, and **OpenAI model** fields. You don't need a new data service.
This page builds on [Generate or transform values with the data service Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr). Set up the data service as described there, and apply the Claude-specific settings on this page.
You can use this setup to test and evaluate how Claude works with your prompts. Before relying on it for a production feed, contact [support@productsup.com](mailto:support@productsup.com) so we can advise on the right setup for your use case.
While Productsup offers integration with Claude for generating or transforming your values at no cost, the actual process is handled by Anthropic, which may involve fees for their services. Before using our AI-based data services, ensure you are familiar with Anthropic's pricing that we use in our data services. See [Pricing](https://platform.claude.com/docs/en/about-claude/pricing) for more information.
Prerequisites [#prerequisites]
To use Claude with the *Custom Prompt With Dynamic Values* data service, you need:
* A Claude (Anthropic) API key with access to the model you want to use.
* The *Custom Prompt With Dynamic Values* data service added to a column on your site. See [Generate or transform values with the data service Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr).
Configure the data service to use Claude [#configure-the-data-service-to-use-claude]
In the settings of your *Custom Prompt With Dynamic Values* data service, change the following fields.
In **Base URL**, enter `https://api.anthropic.com`. Don't add `/v1` to the end of the URL.
Leave **API version** empty.
Entering a value in **API version** switches the data service into Microsoft Copilot (Azure OpenAI) mode, which Claude doesn't support. Keep this field empty when you use Claude.
In **API key**, enter your Claude (Anthropic) API key.
In **OpenAI model**, enter an exact Claude model identifier, for example `claude-sonnet-4-6` or `claude-opus-4-8`. This field accepts any text and isn't validated, so an invalid identifier fails only when the data service runs. See [Anthropic's model overview](https://platform.claude.com/docs/en/about-claude/models/overview) for the available identifiers.
In **Max Response Tokens**, set the maximum number of tokens in Claude's response, or leave the field empty to use the platform default of 2048.
Select **Save**, then select **Run** in the top-right corner of your site's view to process the data service.
The context, prompt, request timeout, request concurrency, and caching settings work the same way as they do with OpenAI.
A successful run returns Claude's generated values in your column, the same as a run with OpenAI. The platform creates the `___service_ai_custom_prompt` attribute containing the generated values.
Limitations [#limitations]
The following limitations apply when you use Claude through this data service:
| Limitation | Detail |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| Reasoning effort is ignored | The **Reasoning effort** setting has no effect with Claude. |
| Temperature is capped at 1 | Claude accepts temperature values from 0 to 1. Values above 1 are silently reduced to 1. |
| No prompt caching | This setup doesn't cache prompts on Anthropic's side, which can affect cost and latency on large, high-volume feeds. |
| Model identifier isn't validated | The **OpenAI model** field accepts any text. An invalid Claude identifier fails only when the data service runs. |
Troubleshooting [#troubleshooting]
| Symptom | Likely cause | Resolution |
| ------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------ |
| Not-found error | `/v1` was added to **Base URL**, or **API version** is set | Enter `https://api.anthropic.com` exactly, and clear the **API version** field |
| Authentication error | Wrong key, or the data service is in Azure OpenAI mode | Use a Claude API key, and make sure **API version** is empty |
| Model error | Invalid or unavailable model identifier | Enter an exact Claude model identifier that your key can access |
| Output ignores reasoning effort | Expected behavior | Claude ignores the **Reasoning effort** setting |
See also [#see-also]
* [Generate or transform values with the data service Custom Prompt With Dynamic Values](/docs/help-center/import-data-feeds/enhance-your-import-data-through-data-services/generate-and-transform-content-with-ai-data-services/generate-or-transform-values-with-the-data-service-custom-pr)
* [Anthropic — model overview](https://platform.claude.com/docs/en/about-claude/models/overview)
# ManoMano's list of mandatory category-specific attributes
import { Callout } from "fumadocs-ui/components/callout";
Introduction [#introduction]
This document lists all the attributes mandatory for various product categories in the *ManoMano Product* export. See [Send your product and order data to ManoMano](/docs/help-center/export-data-feeds/special-export-setups/send-your-product-and-order-data-to-manomano) to set up the *ManoMano Product* export.
Some ManoMano attributes shown as mandatory in Dataflow are only mandatory for products of specific categories. For example, the attribute **%\_main\_material** is only mandatory for the product category *Electric fence accessories*. To check the categories where your mapped attributes are mandatory, you should use the Analyzer feature.
Go to **Data View**, choose the export *ManoMano Product* from the drop-down menu on the left, and select **Analyze** in the column of each mandatory attribute. The Analyzer feature opens to your right and shows the test *ManoMano - Category Specific Mandatory* that refers you to a help center document listing all categories where each ManoMano attribute is mandatory. See [ManoMano's list of mandatory category-specific attributes](/docs/help-center/export-data-feeds/special-export-setups/send-your-product-and-order-data-to-manomano/manomanos-list-of-mandatory-category-specific-attributes).
Find the categories relevant for each mandatory attribute and ensure that products of these categories have values in their mandatory attributes.
Use your browser's features to search this page for relevant product categories and find out which attributes you need to send to the marketplace.
Mandatory attributes and their categories [#mandatory-attributes-and-their-categories]
| Attribute names | Categories they are mandatory for |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **%\_main\_material** | Electric fence accessories |
| **Accessories\_included** | Electric fence accessories |
| **Amperage** | LED transformer, Switch mode power supplies, Bench power supplies, DIN rail power supplies, Standard power supply units, USB chargers, Energy monitors, Heat trace cable, Industrial sockets and site transformers, Switches and switch components, Plug adapters, Electric plugs, Surge protectors, Sockets and socket components, Wind and solar charge controller, Off-grid and on-grid solar kits, Contactors, Cartridge fuses, Fuses, Consumer unit timers, Consumer unit RCDs, SPDs, Distribution blocks, Shunt trips, Consumer unit transfomers, RCD blocks, MCBs, RCDs and RCCBs, Car fuses, Boiler printed circuit boards, Motorised valves, Electrode holders, Arc welders, MIG torches, TIG torches |
| **Angle,\_tilt** | Pop-up sprinklers, Motion sensors, Indoor and outdoor CCTV cameras, Oil burner nozzles, Flue flashing kits, PVC waste pipe fittings, Belt sanders, Rotarymetal cutting saws disc cutter |
| **Availability\_of\_spare\_parts** | Electric fence accessories |
| **Battery\_capacity** | Cordless lawnmowers, Other batteries, Alarm batteries, Electric gate batteries, Battery storage, Car and motorcycle batteries, Staple and nail guns, Rivet guns, Power tool batteries |
| **Battery\_life** | Robotic lawnmowers, Pool robots, Handheld vacuum cleaners, Robotic vacuum cleaners, Emergency lighting, Paraffin heaters, Walkie talkies, Shower radios and speakers