The FTP API allows you to manage Product data for a Catalog through simple batch processes.
Commands
API Commands for Product Feed management include:
- Product Feed Import (productfeedsave)
Data Delivery
Data can be delivered to servers using FTP. Both FTP and SFTP (also known as SSH File Transfer Protocol or Secure FTP) are supported.
- SFTP – This is the file transfer technology used in the secure shell (SSH) application. It is widely used and is supported by many popular FTP clients. All data is encrypted automatically in transit to the servers and this is the preferred delivery mechanism.
- sftp.whatcounts.com
- FTP – Plain FTP is the other way to send your files to the servers. It does not, however, offer any encryption and is therefore not the preferred method of delivery. If you wish to use this method, you must provide written notice that you understand the risks posed by not using encryption to deliver your data.
- ftpapi.whatcounts.com
Sending Data
Each data file that is pushed via FTP or SFTP requires two files, Data and Signal. They each have a particular format.
File Examples
Data File
- Accepted file formats of data files
- Tab-delimited plain text file (Recommended)
- CSV (comma-separated values) text file
- The Data File contains the Header and the Commands to run. It must be saved with a .dat extension, for example myrealm_202006_productfeed.dat
- File will need to contain header info that includes Realm Name, Password, API Command (i.e. productfeedsave), and config settings. Example:
realm=[realm_name]
password=[password]
confirm_email=[email]
cmd=productfeedsave&delimiter=\t
Signal File
-
For each data file that is sent to the server, there must be a corresponding signal file.
-
The Signal File should be empty. It must be named the same as the Data file, but be saved with the extension .sig, for example myrealm_202006_productfeed.sig:
<Empty File>
-
These files are transmitted to the server only after the corresponding data files have been fully transferred.
-
These files signify to the servers that the data files have been fully delivered and are ready to be processed.
-
Data Field Definitions
-
This is a list of fields and descriptions that are currently supported in Product files
-
Note: All fields listed below should be provided if available.
-
Required fields must be provided for the system to accept the data.
-
Any fields listed below which are not provided may limit the ability to fully utilize the service.
-
Products Data
A file can only contain products for a single Catalog. Products for other catalogs will be disregarded.
Product ID + Catalog ID is the primary key.
The Product ID from the product feed described below is matched to the event’s ‘properties’->>‘id’ field for a product. It’s critical this be considered when deciding what to provide in the respective ID fields so they will match when performing Browse and Cart Recovery marketing campaigns.
Field Name |
Required |
Field Description |
client_product_ID |
Y |
Primary Key Field Type: Text Product identifier. This may be the same as the VSKU below. |
Catalog_ID |
Y |
Primary Key Field Type: Text Store identifier |
Active |
Y |
Field Type: Text (Values: Y, N) Set to ‘Y’ if the product is active and visible on-site. Set to ‘N’ if the product is currently disabled. Products set to N will not be included in email campaigns. |
Availability |
Y |
Field Type: Text (Values: In stock, Available for order, Out of stock, Preorder) Current availability status of the product. A setting can be enabled to check the status of this field before including product in email campaign. |
VSKU |
Y |
Field Type: Text The unique SKU or VSKU for a given product record. For variants or products without a parent record, this is the complete unique SKU for a given product as it would appear in the order details. For parent records, this would be the SKU that appears in the PSKU field of each variant of that product. This should be unique for each product record. |
PSKU |
Y |
Field Type: Text Parent SKU or shared identifier across variants of a given product. This is like the item group id in the Google Product Feed specification. If no Parent SKU exists, copy VSKU here. A parent product record is required for variants with a PSKU. In other words, every parent product must have a product record separate from its variants. |
Product_Type |
Y |
Field Type: Text Category the product is assigned to. If more than one category is assigned to a given product, then the categories should be enclosed by double quotes (") (the beginning and end of the value to be inserted) and separated by commas (,). For example: "Paper > Copy Paper,Paper > Printer Paper" |
Title |
Y |
Field Type: Text Product title at the Parent SKU level |
Variant_Title |
N |
Field Type: Text Product title at the VSKU level |
Link |
Y |
Field Type: Text URL for the product at the parent SKU level including http:// or https:// prefix |
Image_Link |
Y |
Field Type: Text URL for the product image at the parent SKU level including http:// or https:// prefix |
Price |
Y |
Field Type: Float Product Price for this variant |
Currency |
Y |
Field Type: Text The currency used in the price field. This must be a valid ISO 4217 alphabetic code. |
Brand |
N |
Field Type: Text Brand of the product |
Manufacturer |
N |
Field Type: Text Manufacturer of the product |
Quantity |
N |
Field Type: Integer Current quantity in inventory |
Color |
N |
Field Type: Text Product color or colors |
Size |
N |
Field Type: Text Product size |
Gender |
N |
Field Type: Text (Values: Male, Female, Unisex) Gender for the product specified |
Feature released in v15.14.00