Send us your catalog
One endpoint, one payload shape, one credential. You send products in your own words; we resolve them to BrandsGateway IDs and tell you exactly what happened to each one.
The whole thing, in one call
This is the entire contract. Everything else on this site explains a piece of it.
curl -X PUT https://vendors.brandsgateway.com/api/v1/products/SKU12345 \
-u "$BG_USER:$BG_APP_PASSWORD" \
-H "X-Vendor-Id: $BG_VENDOR_ID" \
-H "Content-Type: application/json" \
-d '{
"values": {
"brand": "Gucci",
"gender": "Women",
"color": "Brown",
"material": "Calf Leather",
"country": "Italy",
"category": "Bags Women",
"group": "Shoulder Bags",
"condition": "New with tags"
},
"product": {
"type": "simple",
"name": "Leather Shoulder Bag",
"sku": "SKU12345",
"regular_price": "1250.00",
"sale_price": "875.00",
"stock_quantity": 3,
"manage_stock": true,
"global_unique_id": "4068849312345",
"images": [
{ "src": "https://cdn.yourshop.com/12345_1.jpg" },
{ "src": "https://cdn.yourshop.com/12345_2.jpg" }
],
"meta_data": [
{ "key": "_external_id", "value": "SKU12345" },
{ "key": "_vendor_sku", "value": "SKU12345_V" },
{ "key": "_vendor_cost", "value": "610.00" },
{ "key": "_import_source", "value": "yourshop" }
]
}
}'
Your words, not our IDs. Put brand, colour and category in
values exactly as your system writes them. You never build a mapping table.
One credential. The same BrandsGateway username and application password works on every endpoint here, monitoring included.
Start here
Three pages, in order, and you are integrated. About twenty minutes.
In a hurry? Paste a payload into the validator and it will tell you what is wrong with it before you send anything.
Four rules that will save you a day
Read these now. They are the four things that surprise people, and each one is a support ticket you will not have to open.
Every sync overwrites the stock number — it does not adjust it. Anything changed on our side is temporary and goes back on your next run. Drop a product from your feed and its stock goes to zero; it is not deleted. Sync lifecycle
It is how we recognise a product forever. Reusing one for a different item silently overwrites the first. It must also be alphanumeric — a hyphen breaks the product URL.
If another vendor already lists the same item under that EAN, yours is rejected and we name the conflicting listing. That is a commercial question, not a bug. What to do about it
Every product that does not land is recorded with a reason, the field it concerns, and the run it happened in. Your dashboard groups them by cause, so one mapping fix usually clears hundreds of rows at once.
Look it up when you hit it
Reference, not a reading list. The validator and your dashboard link straight to the right entry when something goes wrong.
Why this exists
Every vendor used to be integrated by hand: BrandsGateway built a pipeline per supplier and maintained the field mapping in code. It worked, but you could not ship a catalog change without us, and you could not see why a product never appeared.
This inverts that. Everything the old pipeline did on your behalf — resolving names to IDs, mapping sizes, checking prices — is specified here, checkable before you send, and visible after.