Shopify is uitstekend in wat het doet: verkopen. Maar het is geen ERP. Zodra je voorraad, inkoop, productie, retouren en boekhouding moet laten kloppen, en zeker als je meerdere kanalen hebt, wordt de vraag niet “hoe koppel ik Shopify aan Odoo”, maar “waar hoort de waarheid te liggen”. Dit is de diepgaande gids: de afwegingen, de keuzes en het waarom. Bedoeld voor wie een koppeling serieus wil neerzetten, en tegelijk als naslag voor onze eigen consultants.
Wanneer is Shopify alleen niet meer genoeg?
Shopify draait je webshop prima. Het knelt zodra je bedrijf groter wordt dan het verkoopkanaal. De signalen, en waarom ze optreden:
- Voorraad klopt nooit helemaal. Je verkoopt op meerdere plekken (webshop, B2B, marktplaatsen, kassa) en elk kanaal houdt zijn eigen telling bij. Zonder centrale bron loopt het onvermijdelijk uit elkaar.
- Handmatige overname naar boekhouding of voorraadsysteem. Elke handmatige stap is een bron van fouten en vertraging, en schaalt niet mee met je ordervolume.
- Inkoop, productie of assemblage die Shopify niet kent. Shopify weet niet wat een inkooporder, een stuklijst of een productieorder is. Zodra je voorraad ontstaat uit inkoop of productie, heb je een systeem nodig dat die processen kent.
- Marge niet zichtbaar. Kostprijs, inkoop en verkoop zitten in aparte systemen, dus je weet per order of product niet wat je echt verdient.
- Consument en zakelijk door elkaar. Verschillende prijzen, btw-behandeling en voorraad per doelgroep zijn in Shopify alleen lastig strikt te scheiden.
Dit zijn geen webshop-problemen. Het zijn signalen dat je een bedrijfsplatform nodig hebt achter je webshop. Precies daar zit Odoo.
De kernbeslissing: waar hoort de waarheid?
De belangrijkste keuze maak je voordat je ook maar een connector installeert: welk systeem is leidend voor je voorraad?
Is Shopify leidend, dan houd je continu twee systemen handmatig gelijk, en verlies je zodra je op meer dan een kanaal verkoopt: de webshop weet niet wat je B2B-verkoop of je kassa net heeft afgeboekt. Is Odoo leidend, dan is er een bron van waarheid. Odoo kent je echte voorraad (inkoop, ontvangst, productie, retouren, meerdere magazijnen) en pusht de beschikbare aantallen naar elk kanaal.
Voor vrijwel elk bedrijf dat meer doet dan een enkele webshop is het antwoord: Odoo is de single source of truth, Shopify is een verkoopkanaal. De rest van deze gids gaat ervan uit dat je die keuze maakt, en laat zien hoe je hem waarmaakt.
De data-architectuur: wat synchroniseert, welke kant op, en waarom
Een goede koppeling is geen “alles met alles”, maar een bewuste keuze per gegevenssoort. Elke rij hieronder is een expliciete beslissing, met een reden:
| Gegevens | Richting | Waarom deze richting |
|---|---|---|
| Producten (titel, prijs, beschrijving, media) | Een kant leidend (meestal Odoo) | Twee kanten bewerken geeft conflicten; kies de bron |
| Voorraad / beschikbaarheid | Odoo naar Shopify | Odoo kent de echte voorraad, voorkomt overselling |
| Orders | Shopify naar Odoo | Verkoop ontstaat op het kanaal, wordt verwerkt in Odoo |
| Klanten | Shopify naar Odoo | Aangemaakt of gematcht bij het binnenkomen van de order |
| Verzending / tracking | Odoo naar Shopify | Fulfilment gebeurt in Odoo, status terug naar de klant |
| Retouren / creditnota’s | Shopify naar Odoo | Terugboeken plus voorraad herstellen op de juiste locatie |
| Betaling / afletteren | Shopify naar Odoo | Automatisch geboekt en aangesloten op de bank |
De richting is belangrijker dan de connector. Wie producten in beide systemen bewerkt, creeert conflicten; wie voorraad in Shopify bijhoudt naast Odoo, krijgt afwijkingen. Twee vuistregels voor conflicten: (1) definieer per veld precies een leidend systeem, en (2) laat het niet-leidende systeem dat veld alleen tonen, niet bewerken.
Voorraadstrategie: het hart van de koppeling
Hier valt of staat het geheel. De meeste mislukte koppelingen zijn in de kern voorraadproblemen.
Beschikbaar is niet gelijk aan fysiek. Wat je naar Shopify pusht is niet je fysieke voorraad, maar je beschikbare voorraad: fysiek min gereserveerd min een eventuele buffer. Push je fysieke voorraad, dan verkoop je dingen die al gereserveerd zijn.
Reserveringen en veiligheidsbuffer. Bepaal per kanaal of je een buffer aanhoudt (bijvoorbeeld de laatste paar stuks niet online tonen) om overselling bij gelijktijdige verkoop te dempen. Dit is een bewuste marge tegen race-condities, niet een technisch detail.
Real-time versus gepland synchroniseren. Real-time voelt ideaal, maar Shopify kent API-limieten en bij hoog volume kan een continue push je tegen rate limits aan laten lopen. De afweging: real-time voor snellopers en schaarse voorraad, gepland (elke X minuten) of event-gedreven voor de rest. Kies bewust per productgroep in plaats van alles real-time te willen.
Meerdere magazijnen en locaties. Verkoop je vanuit meerdere magazijnen of dropship je deels, dan bepaalt Odoo welke locatie een order vervult en welke som van locaties je als beschikbaar naar Shopify pusht. Leg die regels vast voordat je koppelt.
B2B en B2C scheiden. Dit is waar het het vaakst misgaat. Twee patronen:
- Gescheiden voorraad: aparte magazijnen of locaties voor B2B en B2C. Strikt, voorspelbaar, maar je moet voorraad actief verdelen.
- Gedeelde pool met reservering: een voorraad, waarbij B2B-orders vroeg reserveren zodat ze niet door de B2C-webshop worden weggekocht. Flexibeler, maar vraagt discipline in het reserveringsproces. Zonder een van deze twee verkoopt je B2C-webshop de voorraad die je voor een B2B-klant had bedoeld. De keuze hangt af van hoe strikt de scheiding moet zijn en hoeveel handwerk je accepteert.
Producten en mapping: de SKU is je sleutel
Alles hangt aan een betrouwbare koppelsleutel, en dat is de SKU. Zonder consistente SKU’s tussen Shopify en Odoo krijg je geen betrouwbare mapping van voorraad en orders.
- Varianten: een Shopify-product met varianten mapt op productvarianten in Odoo. Zorg dat de variant-SKU’s aan beide kanten kloppen, anders boekt een verkochte variant de verkeerde voorraad af.
- Richting van productbeheer: kies of je producten in Odoo of in Shopify onderhoudt. Odoo-leidend geeft een schone bron voor prijs, kostprijs en voorraad; Shopify-leidend past bij teams die content-first werken. Niet allebei.
- Metafields en content: SEO-teksten en rich content leven vaak liever in Shopify. Spreek af welke velden Shopify-only zijn, zodat een sync ze niet overschrijft.
Bundles en kits: waar het stil misgaat
Shopify-bundles en Odoo-kits lijken hetzelfde, maar werken anders, en dit verschil breekt stil je voorraad.
Een bundel die in Shopify als een product verkoopt, moet in Odoo de voorraad van de onderdelen afboeken, niet van een fictief bundelproduct. Boekt de koppeling de bundel af als een enkel artikel, dan klopt je componentvoorraad na elke bundelverkoop niet meer, en zie je het pas als de tellingen uiteenlopen. Odoo lost dit op met stuklijsten of kit-producten die op componentniveau afboeken. Spreek vooraf af hoe bundels, kits en varianten worden gemapt, en test expliciet dat een bundelverkoop de juiste componenten verlaagt.
De orderflow: van kassa tot boeking
Een order doorloopt meer dan “hij komt binnen”:
- Order komt uit Shopify in Odoo, met klant, regels, kortingen en verzendmethode.
- Betaling wordt gekoppeld: Shopify Payments, iDEAL, creditcard. Voor de boekhouding wil je dat de ontvangst afgeletterd wordt tegen de order.
- Fulfilment gebeurt in Odoo: picken, inpakken, verzenden vanuit de juiste locatie.
- Tracking gaat terug naar Shopify, zodat de klant zijn status ziet.
- Retour of creditnota komt terug in Odoo: terugboeken en, cruciaal, de voorraad herstellen op de juiste locatie, inclusief het afhandelen van gedeeltelijke retouren.
Elke stap is een beslissing: automatisch of met controle, direct of gebatcht. Voor de boekhouding is afletteren van betalingen tegen orders het punt waar veel koppelingen half blijven steken.
Belasting en boekhouding: waar een lokale partner wint
Dit is waar een generieke internationale connector vaak tekortschiet en waar Nederlandse kennis het verschil maakt:
- Btw en fiscale posities: B2C met btw, B2B met verlegging of intracommunautair, dat vraagt de juiste fiscale posities in Odoo.
- EU-verkoop en OSS: verkoop je over de grens aan consumenten, dan speelt de One Stop Shop-regeling en btw per land.
- Peppol en e-facturatie: voor zakelijke facturatie in Nederland en de EU steeds relevanter.
- Afletteren en dagafsluiting: de brug tussen je verkoopkanaal en een kloppende boekhouding.
Dit is precies waarom “een connector installeren” niet hetzelfde is als “je e-commerce boekhouding klopt”.
Meerdere stores en kanalen: de allocatieregels
Meerdere stores (per land, merk of B2B/B2C) kunnen aan een Odoo-omgeving hangen, elk met eigen magazijn, prijslijst en kanaal. De valkuil is voorraadverdeling: zonder regels verkoopt de ene store de andere leeg. Bepaal vooraf hoe voorraad wordt verdeeld en gereserveerd, of je per store een eigen locatie hanteert, en hoe je met gedeelde voorraad omgaat. Dit is dezelfde vraag als de B2B/B2C-scheiding, een niveau breder.
De connector kiezen: een keuzematrix
Er zijn grofweg drie routes. Geen is universeel het beste; kies op scenario:
| Route | Sterk als | Let op |
|---|---|---|
| App-store connector (bijv. Webkul, Emipro) | Standaard scenario, snel live, beperkt budget | Minder controle over edge cases; maatwerk vaak lastig; kwaliteit verschilt per leverancier |
| Odoo eigen Shopify-connector | Je wilt binnen het Odoo-ecosysteem blijven | Dekking van scenario’s kan beperkter zijn dan een gespecialiseerde app |
| Maatwerk-koppeling (via de API) | Complexe of unieke flows, volledige controle | Vraagt Odoo.sh of on-premise en onderhoud; elk maatwerk is upgrade-risico |
De keuzecriteria: aantal stores en landen, richting en frequentie van de sync, product-mapping, bundles/kits en varianten, orderstatussen, controle over voorraadupdates, en je hostingvorm (maatwerk vraagt Odoo.sh of on-premise). Weeg ook het onderhoud: een koppeling is geen eenmalig project maar een levend onderdeel dat bij elke Shopify- en Odoo-upgrade blijft werken. Kopers zoeken vaak op connector-naam, maar de connector is het sluitstuk, niet het startpunt. We vergelijken de echte apps, hun prijzen en reviews, en de architectuurvragen die de meeste vergelijkingen overslaan, in de beste Odoo-Shopify connector kiezen.
Implementatie-aanpak: hoe je het goed neerzet
De volgorde die het verschil maakt tussen een koppeling die jaren meegaat en een die je blijft repareren:
- Fit-gap eerst. Breng je e-commerce processen, kanalen, voorraadstromen en boekhoudeisen in kaart voordat je een connector kiest.
- Datastrategie vastleggen. Per gegevenssoort: welk systeem is leidend, welke kant synchroniseert, real-time of gepland.
- Voorraadmodel ontwerpen. Magazijnen, locaties, buffers, B2B/B2C-scheiding, allocatieregels.
- Op staging bouwen en droogdraaien. Test met echte scenario’s: bundelverkoop, gedeeltelijke retour, gelijktijdige verkoop op twee kanalen, een order over meerdere magazijnen.
- Go-live met een voorraad-nulmeting. Begin met kloppende voorraad aan beide kanten, en monitor de eerste weken actief op afwijkingen.
Faalmodi en diagnose (voor consultants)
Als het misgaat, is de oorzaak bijna altijd een van deze. Herken het patroon:
- Voorraad loopt uit elkaar. Oorzaak: voorraad wordt op twee plekken bijgehouden, of fysiek in plaats van beschikbaar gepusht, of een kanaal (kassa, B2B) boekt buiten Odoo om af. Fix: een bron, beschikbaar pushen, alle kanalen door Odoo.
- Overselling. Oorzaak: sync-frequentie te laag voor snellopers, geen buffer, of geen scheiding B2B/B2C. Fix: real-time voor schaarse voorraad, buffer, scheiding.
- Voorraad klopt na bundelverkoop niet. Oorzaak: bundel boekt af als enkel artikel in plaats van componenten. Fix: kit of stuklijst op componentniveau.
- Dubbele klanten. Oorzaak: geen matching op e-mail bij het aanmaken. Fix: matchingsregel op een uniek veld.
- Orders lopen vast. Oorzaak: onbekende SKU, ontbrekende fiscale positie, of een betaalmethode zonder mapping. Fix: mapping compleet maken en foutafhandeling inregelen.
- Boekhouding sluit niet aan. Oorzaak: betalingen niet afgeletterd tegen orders, of verkeerde btw-behandeling. Fix: afletteren automatiseren, fiscale posities per doelgroep.
Kort samengevat
Shopify verkoopt, Odoo runt je bedrijf. Maak Odoo de single source of truth, bepaal per gegevenssoort welke kant de sync op gaat, push beschikbare in plaats van fysieke voorraad, scheid B2B- en B2C-voorraad bewust, map bundels op componentniveau, regel belasting en afletteren, en kies de connector pas nadat de datastrategie staat. Dan wordt de koppeling een fundament in plaats van een risico - en is 42 eindelijk in beide systemen het antwoord.
Wil je weten of jouw voorraad- of kanaalprobleem een koppeling of een platformkeuze is? Plan een vrijblijvende Quickscan en we brengen je e-commerce processen, je scope en je grootste risico’s in 20 minuten in kaart.
Meer lezen: Odoo hosting: Online, Odoo.sh of zelf hosten? · Odoo Community vs Enterprise · Wat kost een Odoo-implementatie? · Odoo ervaringen: 2.500+ reviews · Alle Odoo-vergelijkingen