Platformen
BigCommerce koppeling met ERP, PIM, magazijn en boekhouding
Een BigCommerce koppeling stuurt orders en klanten naar je ERP en schrijft voorraad, prijzen en verzendingen terug in je winkel. De API deelt één quotum per winkel over alle apps: 150 verzoeken per 30 seconden op Standard en Plus, 450 op Pro. Met de bulk-endpoints past een volle voorraadronde van 15.000 regels in 8 verzoeken.
Wat is BigCommerce en wie gebruikt het?
BigCommerce is een webshopplatform dat als dienst draait: BigCommerce host de winkel, je beheert hem in het control panel en koppelt via de API. Er is geen eigen server en geen databank waar een koppeling rechtstreeks in kan.
Het platform heeft plannen met elk eigen limieten. De ontwikkelaarsdocumentatie gebruikt de namen Standard, Plus, Pro en Enterprise; het helpcentrum gebruikt nieuwere plannamen zonder een gepubliceerde vertaling tussen beide. Deze pagina volgt de ontwikkelaarsdocumentatie. Twee onderdelen zijn aparte producten met een eigen inrichting: Multi-Storefront, voor meerdere winkels op één catalogus, en B2B Edition, voor zakelijke klanten met meerdere inkopers.
| Plan | API-verzoeken per 30 seconden | Voorraadlocaties |
|---|---|---|
| Standard | 150 | 4 |
| Plus | 150 | 5 |
| Pro | 450 | 8 |
| Enterprise | geen gepubliceerd getal; een deel heeft geen limiet | 100 |
Wat je met BigCommerce koppelt
De webshop is leidend voor orders en nieuwe klanten. Voorraad, prijzen en productdata komen uit het ERP, het magazijnsysteem of een PIM.
| Stroom | Richting | API in BigCommerce |
|---|---|---|
| Orders | BigCommerce naar ERP | Orders v2, /v2/orders |
| Klanten | BigCommerce naar ERP | Customers v3, /v3/customers |
| Voorraad per locatie | ERP of magazijn naar BigCommerce | Inventory API, absolute aanpassingen |
| Prijzen per klantgroep | ERP naar BigCommerce | prijslijsten, price list records |
| Productdata en varianten | PIM of ERP naar BigCommerce | Catalog v3 |
| Verzendingen en track-and-trace | magazijn naar BigCommerce | /v2/orders/{id}/shipments |
| Terugbetalingen | BigCommerce naar boekhouding | Orders v3, refunds |
Orders zitten nog in versie 2 van de API, de catalogus in versie 3. De twee versies hebben andere formaten voor lijsten en fouten, dus de koppeling behandelt ze als twee aparte koppelvlakken. Welke velden per stroom meegaan staat op orders, klanten en verzending en voorraad en beschikbaarheid.
Hoe BigCommerce data vrijgeeft
Een winkel-API-account met een vast token
Een koppeling op één winkel werkt met een API-account dat de winkeleigenaar aanmaakt onder Settings, Store-level API accounts. Het account krijgt scopes: lezen of wijzigen per onderdeel, zoals orders, producten en voorraad. Het access token verloopt niet en is niet los in te trekken; wie het wil intrekken, verwijdert het account. BigCommerce raadt een apart account per toepassing aan. Elk verzoek gaat naar api.bigcommerce.com/stores/{store_hash}/ met het token in de header X-Auth-Token.
Eén quotum per winkel, gedeeld
Elk verzoek kost één eenheid van het quotum van de winkel. Het quotum wordt elke 30 seconden ververst: 150 verzoeken op Standard en Plus, 450 op Pro. Alle apps op de winkel delen het. Wie erboven komt krijgt een 429, met in X-Rate-Limit-Time-Reset-Ms het aantal milliseconden tot het volgende venster. De volledige regeling staat in de documentatie van BigCommerce over rate limits.
Het verschil tussen per artikel en in bulk schrijven, voor 15.000 voorraadregels op Standard (150 per 30 seconden is 300 per minuut):
| Aanpak | Rekensom | Verzoeken en tijd |
|---|---|---|
| Per variant via de catalogus | 15.000 x 1 | 15.000 verzoeken, 15.000 / 300 = 50 minuten |
| Producten in batches van 10 | 15.000 / 10 | 1.500 verzoeken, 5 minuten |
| Inventory API, 2.000 per verzoek | 15.000 / 2.000, naar boven afgerond | 8 verzoeken |
| Prijslijstrecords, 1.000 per verzoek | 15.000 / 1.000 | 15 verzoeken |
Per variant schrijven houdt het hele quotum van de winkel 50 minuten bezet, ook voor de andere apps. De koppeling schrijft voorraad daarom alleen via de Inventory API, en prijzen via prijslijstrecords. Twee regels uit de documentatie gelden daarbij: bulkverzoeken naar de Inventory API gaan na elkaar, en niet tegelijk met bulkwerk op de catalogus of orders, omdat de voorraadberekening anders kan afwijken.
Webhooks met alleen een id
Een webhook zoals store/order/created of store/order/statusUpdated bevat alleen het id van de order. De koppeling haalt de order daarna op, en dat verzoek telt mee voor het quotum. De ontvanger moet met een 2xx antwoorden. Bij een fout probeert BigCommerce het 11 keer opnieuw, van 60 seconden tot 86.400 seconden na de vorige poging; na 48 uur wordt de webhook uitgeschakeld. Een webhook zonder verkeer gaat na 90 dagen ook uit. Zakt het slagingspercentage van een domein binnen twee minuten onder de 90%, dan blokkeert BigCommerce dat domein drie minuten. Een ontvanger die traag antwoordt omdat hij eerst de order verwerkt, raakt zo al zijn webhooks kwijt; de koppeling zet elk bericht eerst in de wachtrij en antwoordt dan. Meer in wat is een webhook.
Waar het bij BigCommerce op vastloopt
| Wat er misgaat | Oorzaak in BigCommerce | Wat de koppeling doet |
|---|---|---|
| Webshop toont meer voorraad dan het ERP | available_to_sell is voorraad min safety_stock; ERP-getal overschrijft de buffer niet |
Afspreken welk getal leidend is, buffer op één plek |
| Voorraad klopt niet per winkel | Inventory API werkt per locatie, niet per storefront | Locaties per storefront vastleggen |
| Staffelprijs verdwenen | Met een prijslijstrecord gelden de bulkprijzen van het product niet meer voor die variant | Staffels meesturen in het record |
| Klant twee keer in het ERP | Bij Multi-Storefront is een e-mailadres uniek per kanaal, niet per winkel | Zoeken op e-mail plus channel_id |
| Product met te veel varianten | Maximaal 600 SKU's per product en 250 waarden per optie | Model splitsen voor de import |
Adressen en landen
Een verzendadres heeft street_1 en street_2, zonder apart veld voor huisnummer en toevoeging. Het land staat er twee keer in: country als naam en country_iso2 als code. De koppeling gebruikt altijd country_iso2; een landnaam kan in een andere taal staan dan het ERP verwacht. Een ERP dat straat, huisnummer en toevoeging apart wil, krijgt een splitsing; zie adresvelden mappen.
Btw en bedragen
Een order heeft bedragen inclusief en exclusief btw, zoals subtotal_ex_tax, subtotal_inc_tax en total_tax. Een ERP vraagt per regel een btw-code, geen bedrag. De koppeling bepaalt de btw-code in het ERP uit het tarief per regel en niet uit een teruggerekend percentage. Zie bedragen en btw mappen.
Orderstatussen
Een order heeft een status_id met een getal; de lijst met namen komt uit /v2/order_statuses. Een order die via de API wordt aangemaakt zonder status krijgt status 1. Het ERP kent eigen statussen, dus de koppeling legt per status vast wat hij in het ERP betekent en welke status terug moet bij verzending. Zie orderstatussen mappen.
Systemen die we aan BigCommerce koppelen
De koppeling wordt gebouwd op jouw winkel en jouw systemen. De systemen waar BigCommerce het vaakst aan hangt, staan op een eigen pagina:
- Exact Online koppeling
- AFAS webshop koppeling
- Business Central koppeling
- NetSuite koppeling
- Akeneo koppeling en Pimcore koppeling
- Picqer-koppeling
Het overzicht van alle stromen en systemen staat op koppelingen en op ERP koppeling met je webshop.
Wij bouwen de koppeling voor een vaste prijs, en hosten, draaien en bewaken hem daarna voor een vast bedrag per maand. Voor de livegang draait hij als dry run: je ziet per variant welke voorraad en prijs er in BigCommerce zou komen en per order wat er naar je ERP zou gaan, zonder dat er iets wijzigt. Vertel welk plan en welke systemen je hebt, dan hoor je wat een volledige ronde van jouw quotum vraagt.
Veelgestelde vragen
Deelt de koppeling het API-quotum met andere apps?
Ja. Alle apps en API-accounts op een winkel delen het quotum van die winkel: 150 verzoeken per 30 seconden op Standard en Plus, 450 op Pro. Een app voor reviews of marketing die veel opvraagt, haalt van hetzelfde budget. De koppeling leest de headers X-Rate-Limit-Requests-Left en X-Rate-Limit-Time-Reset-Ms en wacht bij een 429 tot het venster voorbij is.
Wat gebeurt er als de webhook-ontvanger een tijd niet bereikbaar is?
BigCommerce probeert een mislukte webhook 11 keer opnieuw, van 60 seconden tot 24 uur na de vorige poging. Na 48 uur wordt de webhook uitgeschakeld en gaat er een e-mail naar het adres van de app. Hij komt pas terug als iemand is_active weer op true zet. De koppeling controleert daarom elke ronde of haar webhooks actief zijn, en vraagt daarnaast orders op met min_date_modified.
Heb ik B2B Edition nodig voor zakelijke klanten?
Voor bedrijven met meerdere inkopers, rollen, betalingstermijnen en inkoopordernummers wel. B2B Edition heeft een eigen API, met 150 verzoeken per minuut. Klantgroepen en prijslijsten bestaan ook zonder B2B Edition, maar een klant hoort bij precies één klantgroep. Zie bestellen op rekening.
Kan de koppeling voorraad per magazijn bijwerken?
Ja, met de Inventory API per locatie. Het aantal locaties hangt af van het plan: 4 op Standard, 5 op Plus, 8 op Pro en 100 op Enterprise. Eén verzoek kan 2.000 artikelen op één locatie bijwerken, of 200 artikelen op 10 locaties. Zie meerdere magazijnen.
Wat als we het API-account van de koppeling verwijderen?
Dan verdwijnen ook de webhooks, metafields en scripts die dat account heeft aangemaakt; BigCommerce geeft ze alleen aan het account dat ze maakte. Een access token van een winkel-API-account verloopt niet en is alleen in te trekken door het account te verwijderen. Daarom krijgt de koppeling een eigen account en worden metafields voor de webshop niet onder een tijdelijk account aangemaakt.
Vertel wat je nodig hebt
Vertel welke systemen je gebruikt en wat je wilt verbeteren. Je krijgt binnen één werkdag een persoonlijk antwoord. We helpen je de werkzaamheden helder te krijgen en spreken de prijs en planning af voordat je iets toezegt.
- Je weet de prijs en de doorlooptijd voordat je iets toezegt
- Wij zoeken uit welke koppeling het werk uit handen neemt
- Wij verzorgen de bouw, hosting, bewaking en het onderhoud
- Je team krijgt minder overtypwerk en minder uitzoekwerk