Sync Zendrop US-Only Products to Your Facebook Catalog Automatically
Pulls US-only products from Zendrop via API and pushes them directly into a Facebook Product Catalog so your ads always reflect your latest inventory. No manual CSV exports or copy-paste required.
- 1
Step 1 – Schedule the sync trigger
Add a
Schedule Triggernode. SetTrigger IntervaltoHoursandHours Between Triggersto6so the catalog refreshes four times a day. You can adjust this to daily if your product list changes slowly. - 2
Step 2 – Fetch US-only products from Zendrop
Add an
HTTP Requestnode namedGet Zendrop US Products. SetMethodtoGETandURLtohttps://api.zendrop.com/v1/products?country=US&limit=100. In theHeaderssection addAuthorizationwith valueBearer YOUR_ZENDROP_API_KEY. In the node'sNotesfield paste your API key reminder. The response returns a JSON array of product objects under thedatakey. - 3
Step 3 – Map product fields to Facebook format
Add a
Setnode namedMap to FB Format. EnableKeep Only Setand add these fields:idmapped to{{ $json.id }},titleto{{ $json.name }},descriptionto{{ $json.description }},priceto{{ $json.price }} USD,linkto{{ $json.url }},image_linkto{{ $json.image_url }},availabilitytoin stock,conditiontonew, andbrandto{{ $json.brand }}. This shapes each item to match Facebook's required product feed schema. - 4
Step 4 – Push products to Facebook Catalog
Add an
HTTP Requestnode namedPush to FB Catalog. SetMethodtoPOSTandURLtohttps://graph.facebook.com/v19.0/YOUR_CATALOG_ID/items_batch. SetBody Content TypetoJSONand paste this body:{ "access_token": "YOUR_FB_PAGE_ACCESS_TOKEN", "item_type": "PRODUCT_ITEM", "requests": [ { "method": "UPSERT", "data": { "id": "{{ $json.id }}", "title": "{{ $json.title }}", "description": "{{ $json.description }}", "price": "{{ $json.price }}", "link": "{{ $json.link }}", "image_link": "{{ $json.image_link }}", "availability": "{{ $json.availability }}", "condition": "{{ $json.condition }}", "brand": "{{ $json.brand }}" } } ] }. ReplaceYOUR_CATALOG_IDwith the numeric ID from Facebook Commerce Manager andYOUR_FB_PAGE_ACCESS_TOKENwith a long-lived System User token. Store the token in n8n Credentials for security. - 5
Step 5 – Verify response with a conditional check
Add an
IFnode namedCheck Success. SetConditiontoStringand check that{{ $json.handles[0].status }}equalsOK. Thetruebranch means all items were accepted. Wire thefalsebranch to a notification node (e.g. email or Slack) in a future iteration to alert you of failures.
Frequently asked questions
How do I find my Facebook Catalog ID?
Go to Facebook Commerce Manager at business.facebook.com/commerce, select your catalog, then click Settings. The Catalog ID is displayed at the top of the page. Copy that numeric string and replace YOUR_CATALOG_ID in the workflow URL.
What Zendrop plan gives API access and where do I get my API key?
Zendrop API access is available on paid plans (Plus and above). Log into your Zendrop dashboard, navigate to Settings > API, and generate a key. Treat it like a password and store it in n8n's built-in Credentials store rather than hard-coding it in the node.
The Facebook API only accepts batches of up to 1,000 items — what if I have more products?
Add a `Split In Batches` node between the Set node and the Push node, configured with a `Batch Size` of 1000. This automatically chunks the array and fires a separate API call per batch, staying within Facebook's limits.