You must meet the following requirements to use Product Feed.
A feed is a set of items uploaded or fetched from a source at once. You can have a single feed to represent all of the items in your catalog, or you can have multiple feeds with each feed representing a single country or single division's products
The Product Feed consists of a series of items in either a Tab Separated file or XML. In XML, these should exist as an array of <item>'s. In a tab separated file, the header column is required.
| Field | Description |
|---|---|
idnumeric string | ID number of the feed |
countrystring | An ISO 3166-1 Alpha 2 country code |
created_timedatetime | The creation time of the feed |
default_currencystring | Your default currency for items in a feed. If no currency is specified for items in the feed file, this value will be used |
deletion_enabledbool | This allows items to be deleted if a feed is updated and the items are not included in the new feed file |
delimiterenum {AUTODETECT, BAR, COMMA, TAB, TILDE, SEMICOLON} | The delimiter used in feed file |
encodingenum | The character encoding used by the provided feed |
file_namestring | The file name of a feed. This will be overridden by |
ingestion_source_typeenum {primary_feed, supplementary_feed} | Indicates the type of feed. |
item_sub_typeenum | The sub type of items to be uploaded by this feed |
latest_upload | The latest upload session of a feed |
migrated_from_feed_idnumeric string | The previous product feed id where the catalog items migrated from |
namestring | The name of a feed |
override_typeenum | If it is a secondary feed, this is the type of the override (country or language) |
primary_feedslist<string> | Used in conjunction with |
product_countint32 | The total products in a product feed |
enum {AUTODETECT, ON, OFF} | This allows tabs and new lines within fields |
schedule | The configuration for fetching the full feed in a recurrent manner. The uploads as a result of this schedule would replace the entire feed. Items missing in consequent upload feed file would be deleted |
update_schedule | The configuration for fetching updates to a feed in a recurrent manner. The uploads as a result of this schedule would only update the items in the feed or create new ones with the information in the file. No items would be deleted. This is useful for sending |
| Edge | Description |
|---|---|
Edge<AutomotiveModel> | Automotive models in a feed |
Edge<Destination> | Destinations in a feed |
Edge<Flight> | Flights in a feed |
Edge<HomeListing> | Home listings in a feed |
Edge<Hotel> | Hotels in a feed |
Edge<ProductItem> | Products in a feed |
Edge<ProductFeedRule> | rules |
Edge<ProductFeedUpload> | Concrete upload attempts |
Edge<VehicleOffer> | Vehicle offers in a feed |
Edge<Vehicle> | Vehicles in a feed |
| Error | Description |
|---|---|
| 100 | Invalid parameter |
| 368 | The action attempted has been deemed abusive or is otherwise disallowed |
| 200 | Permissions error |
| 190 | Invalid OAuth 2.0 Access Token |
product_feeds edge from the following paths: POST /v24.0/{product-catalog-id}/product_feeds HTTP/1.1 Host: graph.facebook.com name=Test+Feed&schedule=%7B%22interval%22%3A%22DAILY%22%2C%22url%22%3A%22http%3A%2F%2Fwww.example.com%2Fsample_feed.tsv%22%2C%22hour%22%3A%2222%22%7D/* PHP SDK v5.0.0 */ /* make the API call */ try { // Returns a `Facebook\FacebookResponse` object $response = $fb->post( '/{product-catalog-id}/product_feeds', array ( 'name' => 'Test Feed', 'schedule' => '{"interval":"DAILY","url":"http://www.example.com/sample_feed.tsv","hour":"22"}', ), '{access-token}' ); } catch(Facebook\Exceptions\FacebookResponseException $e) { echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } $graphNode = $response->getGraphNode(); /* handle the result *//* make the API call */ FB.api( "/{product-catalog-id}/product_feeds", "POST", { "name": "Test Feed", "schedule": "{\"interval\":\"DAILY\",\"url\":\"http:\/\/www.example.com\/sample_feed.tsv\",\"hour\":\"22\"}" }, function (response) { if (response && !response.error) { /* handle the result */ } } );NSDictionary *params = @{ @"name": @"Test Feed", @"schedule": @"{\"interval\":\"DAILY\",\"url\":\"http://www.example.com/sample_feed.tsv\",\"hour\":\"22\"}", }; /* make the API call */ FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"/{product-catalog-id}/product_feeds" parameters:params HTTPMethod:@"POST"]; [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { // Handle the result }];curl -X POST \ -F 'name="Test Feed"' \ -F 'schedule={ "interval": "DAILY", "url": "http://www.example.com/sample_feed.tsv", "hour": "22" }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0/{product-catalog-id}/product_feeds| Parameter | Description |
|---|---|
countrystring | Default value: "US"Two letter country code where the products can be sold |
default_currencyISO 4217 Currency Code | Default value: USDThe default currency used by provided feed if the currency is not specified in the feed file |
deletion_enabledboolean | Default value: trueDefault value: |
delimiterenum {AUTODETECT, BAR, COMMA, TAB, TILDE, SEMICOLON} | Default value: AUTODETECTProduct feed delimiter |
encodingenum {AUTODETECT, LATIN1, UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE} | Default value: AUTODETECTThe character encoding used by provided feed |
feed_typeenum {AUTOMOTIVE_MODEL, COLLECTION, DESTINATION, FLIGHT, HOME_LISTING, HOTEL, HOTEL_ROOM, LOCAL_INVENTORY, MEDIA_TITLE, OFFER, PRODUCT_RATINGS_AND_REVIEWS, PRODUCTS, TRANSACTABLE_ITEMS, VEHICLE_OFFER, VEHICLES} | Type of the feed. Decides type of catalog item this feed will create |
file_namestring | The name of the product feed. .tsv, .xml or compressed files (zip, gzip and bz2) are supported |
ingestion_source_typeenum {PRIMARY_FEED, SUPPLEMENTARY_FEED} | ingestion_source_type to decide type of feed i.e. primary or supplementary |
item_sub_typeenum {APPLIANCES, BABY_FEEDING, BABY_TRANSPORT, BEAUTY, BEDDING, CAMERAS, CELL_PHONES_AND_SMART_WATCHES, CLEANING_SUPPLIES, CLOTHING, CLOTHING_ACCESSORIES, COMPUTERS_AND_TABLETS, DIAPERING_AND_POTTY_TRAINING, ELECTRONICS_ACCESSORIES, FURNITURE, HEALTH, HOME_GOODS, JEWELRY, NURSERY, PRINTERS_AND_SCANNERS, PROJECTORS, SHOES_AND_FOOTWEAR, SOFTWARE, TOYS, TVS_AND_MONITORS, VIDEO_GAME_CONSOLES_AND_VIDEO_GAMES, WATCHES} | The sub type of items to be uploaded by this feed |
migrated_from_feed_idnumeric string | Used to split an original feed into multiple new feeds,
Guidance on splitting feeds that exceed file size or item limit If your data feed contains more items or exceeds the file size, split it into multiple feeds and upload them separately. You can upload as many data feeds as you want, but they must all contain different items. You can split the data feed into smaller feeds using Steps:
Example of how to create a new feed using 5. Additionally, ensure that once the data feeds are split into a new, smaller feed, all item updates come from the respective new feed. |
nameUTF-8 encoded string | User specified name for the feed |
override_typeenum {LANGUAGE, COUNTRY, VERSION, CATALOG_SEGMENT_CUSTOMIZE_DEFAULT, LANGUAGE_AND_COUNTRY, BATCH_API_LANGUAGE_OR_COUNTRY, SMART_PIXEL_LANGUAGE_OR_COUNTRY, LOCAL} | If this is a secondary feed, this specifies the override type of the feed |
override_valuestring | Override value of the feed dependent on the override type (country or language). |
primary_feed_idsarray<numeric string> | primary_feed_ids to which a supplementary feed should be linked |
enum{autodetect, on, off} | Default value: autodetectWhether or not there will be quotes around each field, only for TSV feeds. If this field is provided, we use it instead of the parameter quoted_fields |
ruleslist<JSON-encoded string> | A list of rules applied to feed uploads |
scheduleJSON-encoded string | A JSON-encoded string representing a recurrent schedule for fetching the feed. Default timezone is America/Los_Angeles. Learn more about feed schedules |
selected_override_fieldsarray<string> | Selected Override Fields of the feed, written as a list of fields which should be processed from the feed file. From whiltelisted_properties |
update_scheduleJSON-encoded string | The configuration for fetching updates to a feed in a recurrent manner. The uploads would only update the items in the feed or create new ones. No items would be deleted. This is useful for sending |
id in the return type.id: numeric string, errors: List [error_subcode: string, invalid_attribute: string, error_message: string, | Error | Description |
|---|---|
| 200 | Permissions error |
| 100 | Invalid parameter |
| 190 | Invalid OAuth 2.0 Access Token |
/{product_feed_id}.| Parameter | Description |
|---|---|
default_currencyISO 4217 Currency Code | The default currency to be used for catalog items without a currency explicitly specified in their price data. |
deletion_enabledboolean | Whether the feed is allowed to delete products. |
delimiterenum {AUTODETECT, BAR, COMMA, TAB, TILDE, SEMICOLON} | Product feed delimiter |
encodingenum {AUTODETECT, LATIN1, UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE} | The character encoding used by provided feed |
migrated_from_feed_idnumeric string | The previous product feed id where the catalog items migrated from |
nameUTF-8 encoded string | User specified name for the feed |
enum{autodetect, on, off} | Whether or not there will be quotes around each field, only for TSV feeds. If this field is provided, we use it instead of the parameter quoted_fields. |
scheduleJSON-encoded string | A JSON-encoded string representing a recurrent schedule for fetching the feed. Default timezone is America/Los_Angeles. Learn more about feed schedules |
update_scheduleJSON-encoded string | The configuration for fetching updates to a feed in a recurrent manner. The uploads would only update the items in the feed or create new ones. No items would be deleted. This is useful for sending |
success: bool, | Error | Description |
|---|---|
| 200 | Permissions error |
| 100 | Invalid parameter |
| 190 | Invalid OAuth 2.0 Access Token |
Deleting a product feed effectively disables all ads using products that come from this feed.
You can create a new feed with the same product IDs to re-enable those ads.
curl -X DELETE \ -d "access_token=<ACCESS_TOKEN>" \ https://graph.facebook.com/<API_VERSION>/<PRODUCT_FEED_ID>
/{product_feed_id}.success: bool, | Error | Description |
|---|---|
| 3964 | You must be assigned as an admin of this product feed before you can delete it. |
| 100 | Invalid parameter |