Skip to content

Schedule Data Feed Uploads

Updated: Feb 3, 2026

Use this guide to upload and schedule your feed.

Upload your feed

To upload a feed, you need catalog_management permission. See Marketing API, Permissions. After you create a catalog, use catalog id to create and schedule a Product Feed:

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/v25.0/<PRODUCT_CATALOG_ID>/product_feeds

The schedule parameter enables you to schedule your feed upload. Options include interval, url, hour. The schedule parameter can also include day_of_week, minute, username, and password.

Note: For username and password, Meta supports basic auth on HTTP and FTP.

Example — Schedule Your Feed Upload

schedule: {"day_of_week":"FRIDAY","hour":17,"interval_count":1,"interval":"DAILY","minute":42,"next_scheduled_upload_time":"","password":pwd123,"status":"active","timezone":"Atlantic/Canary","url":"https://www.abc.com","username":aname}

Update an Individual Item

Update an individual item's data in real time. Include the updated fields in an HTTP POST, where retailer_id is the item ID from your feed. Base64url-encode the retailer_id.

https://graph.facebook.com/catalog:{CATALOG_ID}:{base64urlencode(retailer_id)}

See mutable fields in Products, Reference.

Do not provide item feeds with individual item updates, creation, or deletion with the API. This can disrupt any updates or deletes of items you created with the API because Meta doesn't track these with the feed.

Schedule data feed fetches

Scheduled feeds don't support uploads more frequently than once per hour. If you need to update inventory faster, use the Direct Upload API.

If you're using the Marketing API to create and manage your feeds, send an API request with details for the update schedule you want to create:

curl \
  -F 'name=Test Feed' \
  -F 'update_schedule={
    "interval": "HOURLY",
    "url": "http:\/\/www.example.com\/sample_feed_updates.tsv",
    "hour": 22
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/product_feeds

Meta fetches item feeds from your system on a schedule you define. There are two types of schedules you can define:

  • update_schedule — The uploads create new items or update existing ones with the information provided in the data feed file.
  • schedule — The uploads result in a complete refresh operation on your data feed. Meta deletes items not present in the file, updates existing ones, and creates new ones. You can use either of the schedules, or both, depending on your needs.

For example: update_schedule with frequency HOURLY and a replace schedule with frequency DAILY.

Set up an update_schedule with only changed data in the data feed file for faster processing of the feed. An update_schedule is particularly useful for holiday sales and faster price and availability updates. Mark items as "out of stock" rather than deleting them from the feed so that Meta can retarget the user with similar available items.

curl \
  -F 'name=Test Feed' \
  -F 'schedule={
    "interval": "DAILY",
    "url": "http:\/\/www.example.com\/sample_feed.tsv"
  }' \
  -F 'update_schedule={
    "interval": "HOURLY",
    "url": "http:\/\/www.example.com\/sample_feed_updates.tsv",
    "hour": 22
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/product_feeds

Response:

{ "id" : {FEED_ID} }

See Data Feed Reference, Data Feed Schedule Reference.

Learn more

Unofficial mirror for reference/search purposes. All content originates from developers.facebook.com — see the source link at the top of each page. Machine-readable indexes: llms.txt · llms-full.txt · About