WooCommerce-integrasjoner med ERP- og grossist-API-er
NB

WooCommerce-integrasjoner med ERP- og grossist-API-er

5.00/5 - (17 votes)
14 min lesetid
Guide
WooCommerce-ekspert
Forretningsrådgiver

Hvem: Mariusz Szatkowski og WPPoland-teamet, WooCommerce-utviklere som bygger butikkintegrasjoner med eksterne systemer via API.

Hva: Synkronisering av WooCommerce med ERP-systemer, grossister og CRM: katalog, lager og priser i sanntid, datamapping, automatisk margin.

Hvor: Eksternt for kunder i EU og ellers i verden. Vi integrerer med API-et til systemet du allerede kjører, uten å tvinge deg til å bytte ERP-leverandør.

Hvor mye: Individuelt tilbud etter at vi har kartlagt API-et til kildesystemet, antall indekser og synkroniseringsretningen. Vi starter med en kort kartleggingsanalyse.


WooCommerce-integrasjoner med ERP- og grossist-API-er

En integrasjon er ikke en butikk bygget fra bunnen av. Det er laget som kobler WooCommerce til systemet som allerede driver virksomheten din: et ERP, en grossist eller et CRM. Målet er én sammenhengende dataflyt, slik at katalog, lager og priser i butikken gjenspeiler virkeligheten uten manuelt arbeid.

Trenger du generell hjelp til å bygge og utvikle en butikk, start med siden WooCommerce-utvikler. Denne siden handler om et smalere, mer teknisk problem: datautveksling mellom WooCommerce og eksterne systemer.

Hvem du ansetter

  • Kommersiell WordPress siden 2006, før Gutenberg og REST API
  • Senior-ledet: ingeniøren fra discovery er den samme i uke seks
  • Ingen offshore-overlevering, ingen PM-kostnad fakturert
  • WordCamp Europe-arrangør, WordPress Foundation Credits-mentor

Hva en WooCommerce-integrasjon egentlig er

I de fleste butikker bor ikke sannheten om produktene i WooCommerce. Den bor i ERP-et, i lagersystemet eller i et grossist-API. WooCommerce er salgsfronten, men lager, priser og deler av produktdataene kommer fra andre steder. En integrasjon er laget som holder disse to verdenene i overensstemmelse.

I praksis besvarer en integrasjon tre spørsmål:

  • Hva vi synkroniserer - katalog, attributter, lagernivåer, priser, ordrer, kundedata.
  • Hvilken retning - enveis (kildesystemet dikterer til butikken) eller toveis (for eksempel at ordrer flyter tilbake til ERP-et).
  • Hvor ofte - fra planlagt polling hvert par minutter til hendelsesstyrte oppdateringer via webhooks.

Hva du kan integrere med WooCommerce

KildesystemHva vi vanligvis synkronisererRetning
ERP (Dynamics 365, SAP Business One, NetSuite, Odoo)Katalog, lager, priser, ordrer, fakturaerEn- eller toveis
Grossist / dropshipping (leverandør-API)Sortiment, lager, innkjøpspriser, media, beskrivelserEnveis til butikken
CRMKunder, ordrer, statuser, segmenteringVanligvis toveis
Fraktsystemer (DHL, DPD, UPS)Etiketter, sendingsstatuser, hentestederToveis
BetalingsløsningerBetalinger, refusjoner, transaksjonsstatuserToveis

Du trenger ikke å gjøre alt på én gang. Det vanligste første steget er synkronisering av lager og pris, fordi det lønner seg raskest i form av spart supporttid og unngåtte refusjoner.

Hvordan datasynkronisering fungerer

Mekanikken er lik overalt, enten kilden er et ERP eller et grossist-API. Kilden er forskjellig, ikke prinsippet.

Datamapping

Kildesystemet beskriver produkter med sin egen feltstruktur. Den første oppgaven til en integrasjon er å oversette dette til WooCommerces produkt- og attributtmodell: EAN og indeks som nøklene som knytter poster sammen, tekniske attributter til attributter og variasjoner, media og beskrivelser til produktsider. Vi holder feltkartet deklarativt, slik at det å legge til en ny parameter betyr å utvide mappingen, ikke å skrive om logikken.

Synkronisering av lager og priser

Kjernen i de fleste integrasjoner er planlagt polling av to ting: lagernivå og pris. Varer som ikke er tilgjengelige i kildesystemet, blir automatisk skjult eller merket som utilgjengelige, noe som fjerner den dyreste feilen en butikk kan gjøre - å selge noe som ikke kan leveres. En prisendring i kildesystemet forplanter seg til butikken ved neste syklus.

Marginlogikk

Priser fra et ERP eller en grossist er vanligvis kostpris, ikke salgsprisen. Over datainnhentingslaget ligger marginlogikk: systemet legger en definert margin på kildeprisen, og bare resultatet når WooCommerce. Eieren styrer lønnsomheten med regler, ikke ved å redigere priser for hånd.

En ekte integrasjon

Den samme mekanikken ligger bak prosjektet vårt for en bildelsbutikk koblet direkte til et grossist-REST-API: WooCommerce-integrasjon med grossist-API. Der holder katalogen, lageret og prisene seg oppdatert av seg selv, og marginen beskytter lønnsomheten mot en leverandørliste i stadig endring.

Hvilke ERP-systemer vi integrerer med

En viktig distinksjon: vi integrerer WooCommerce med API-et til disse systemene, vi implementerer ikke selve ERP-et. Dette er WordPress-, PHP- og datautvekslingsarbeid, ikke ERP-rådgivning.

  • Sky-ERP: Microsoft Dynamics 365 Business Central, SAP Business One, Oracle NetSuite, Odoo. Disse eksponerer REST-API-er, noe som holder butikkoblingen ryddig.
  • Norske regnskaps- og ERP-systemer: systemer som Tripletex, Visma eller PowerOffice Go, vanligvis integrert via API-et deres eller et mellomvarelag.

Er ikke systemet ditt på listen, men har et API eller en dataeksport, kan det som regel integreres.

Hvordan vi arkitekturerer integrasjoner for spesifikke ERP-er

Hvert ERP har sitt eget API, dataformat og sine egne feller. Nedenfor er hvordan vi tilnærmer oss de vanligste systemene. Dette er arkitekturmønstre, ikke en plugin kjøpt for noen få kroner.

SAP Business One - skala og wp_postmeta-problemet

Industriell distribusjon: titusenvis av aktive produkter, hyppige prisoppdateringer (flere ganger om dagen når valutakursene beveger seg), hundrevis av attributter. WordPress’ standard EAV-struktur lagrer hver attributt i wp_postmeta, som i den skalaen svulmer opp til millioner av rader; prisoppdateringer i sanntid gir da MySQL-deadlocks og 504-timeouter for kundene.

  • HPOS og egendefinerte tabeller: vi slutter å skrive attributter til wp_postmeta og bruker en dedikert flat MySQL-tabell bygget for SAP B1-spørringer.
  • Elasticsearch som søkelag: SAP oppdaterer data i Elasticsearch via API, og fronten henter resultater og filtre derfra, utenom MySQL. Dette laget kan kutte TTFB fra sekunder til rundt 150 ms.
  • Kø (RabbitMQ): SAP-oppdateringer havner i en meldingskø, og en bakgrunnsarbeider henter grupper på noen hundre produkter om gangen, slik at butikken holder seg responsiv 24/7.

Microsoft Dynamics 365 (med BaseLinker og POS)

En stor forhandler som selger gjennom WooCommerce, markedsplasser (via BaseLinker) og fysiske butikker med et POS på Dynamics 365. Uten et strengt hierarki får du synkroniseringssløyfer og race conditions (den siste enheten solgt i butikk og et sekund senere på en markedsplass), noe som gir negativt lager.

  • Én kilde til sannhet: vi håndhever et hierarki der Dynamics er den absolutte master, og WooCommerce og BaseLinker er slaver.
  • Redis-lag: i stedet for å polle det trege Dynamics-API-et konstant kjører vi Redis i minnet. Et salg i butikk utløser en webhook som oppdaterer Redis, og WooCommerce og BaseLinker sjekker tilgjengelighet i Redis (responstid på ensifret antall millisekunder) før de fullfører en handlekurv, noe som eliminerer oversalg.

Odoo (åpen kildekode) - konfiguratorer for ordreproduksjon

Produsenter konfigurerer produkter i Odoo (en stykkliste) der prisen på en komponent avhenger av andre valg. WooCommerce-variasjoner kan ikke modellere dette, og å porte produksjonslogikken over i PHP gir kode som ikke lar seg vedlikeholde.

  • Frakoblet / headless-tilnærming: WooCommerce er handlekurv- og transaksjonssystemet (betaling, e-poster), mens frontenden (Astro/Vue) snakker direkte med Odoo-API-et og spør om prising og produksjonsgjennomførbarhet i sanntid. Ved «legg i handlekurv» sendes et egendefinert produkt med en Odoo-beregnet pris og en generert spesifikasjons-PDF til WooCommerce, uten å duplisere forretningslogikken.

Comarch Optima, InsERT Subiekt, enova365 (det polske og sentraleuropeiske markedet)

  • Comarch Optima: Optima eksponerer data via en WebService/API, så vi bygger dedikert PHP-mellomvare og bruker differensiell (delta) synkronisering - en CRON-jobb spør bare etter indekser som er endret i det siste tidsvinduet, noe som kutter MySQL-belastningen med en størrelsesorden sammenlignet med en full import. B2B-priser beregnes i sanntid ut fra kundens rabattgruppe i stedet for å lagres som tusenvis av prisvariasjoner i wp_postmeta.
  • InsERT Subiekt GT / nexo: datautveksling via EPP og API; en hard reservasjon låser lager i Subiekt i noen minutter ved kassen for å hindre oversalg under topper, og et korrigeringsdokument utløser en webhook som setter WooCommerce-ordren til returnert og legger varen tilbake på lager.
  • enova365: for produkter med mange varianter (farger x størrelser, hver med sin egen EAN) bruker vi flate varianter mappet til JSON og lastet asynkront via REST, i stedet for å generere hundretusenvis av product_variation-poster.

JTL-Wawi (Tyskland) og Holded (Spania)

  • JTL-Wawi: omnikanal med flere lagre. Logisk ruting analyserer kundens postnummer og velger algoritmisk lageret med raskest frakt; One Stop Shop-håndtering beregner mva. på nytt i sanntid etter destinasjonsland, slik at fakturaen i JTL bærer riktig sats. WooCommerce kjører parallelt med BaseLinker for Amazon og eBay.
  • Holded: et sky-basert, API-first ERP - en helt filfri integrasjon på det native REST-API-et med token-autentisering og webhooks. Fakturalogikken gjenkjenner handlekurvbeløpet og signaliserer til Holded om å generere riktig dokumenttype (for eksempel en forenklet faktura for små beløp), og returnerer en PDF som skal legges ved WooCommerce-e-posten.

Når en plugin ikke lenger strekker til

Med titusenvis av indekser og prisoppdateringer flere ganger daglig vokser standardtabellen wp_postmeta til millioner av rader, og sanntidssynkronisering utløser MySQL-deadlocks og 504-feil. Det er grensen der en ferdig plugin ikke lenger strekker til, og arkitekturen nedenfor begynner.

Enterprise-arkitektur: ytelse og pålitelighet

Ved stor ERP-skala går vi forbi «installer en plugin». Dette er tung ingeniørkunst:

  • Headless / frakoblet: WordPress er admin-motoren (backend), og butikken rendres i Astro eller Next.js, som treffer et GraphQL- eller REST-API og går utenom treg SQL, noe som gjør butikken raskere og mer robust. Mer i enterprise-løsninger.
  • Asynkron prosessering (køer): å synkronisere titusenvis av produkter i et vanlig PHP-skript gir timeout. Vi baserer det på køer (RabbitMQ eller Redis) som prosesserer små biter i bakgrunnen.
  • Feilhåndtering og logging: hvis ERP-API-et ikke svarer, blokkerer vi kassen med en melding i stedet for å ta imot ordrer ut i intet; full feillogging gir rask diagnose.

Slik dimensjonerer vi løsningen

Ikke hver butikk trenger køer og Elasticsearch. Volumet setter terskelen: noen hundre produkter trenger bare godt skrevet middleware, mens titusenvis av indekser og B2B-trafikk krever et kø- og cache-lag. Vi tilpasser arkitekturen til skalaen, ikke omvendt.

Tekniske problemer vi løser

  • API rate limiting (429): skysystemer setter tak på forespørsler. Vi implementerer eksponentiell backoff (ved en 429 venter skriptet og prøver på nytt) pluss chunking, der vi pakker data i bulk-update-JSON-forespørsler i stedet for tusenvis av enkeltkall.
  • Feil datatype (avrunding): et ERP kan holde priser med fire desimaler mens WooCommerce forventer to. I mellomvaren bruker vi streng type-casting og avstemmer avrunding per fakturalinje, for å unngå ørefeil som hoper seg opp over hundrevis av ordrer.
  • Bilder, båndbredde og inode-grensen: å importere fysiske bilder inn i WordPress’ mediebibliotek (og generere flere miniatyrer av hvert) tømmer serverens filgrense. I stedet serverer vi bilder fra ekstern lagring (Amazon S3 eller Cloudflare Image Resizing) via URL-er mappet fra ERP-et, noe som sparer plass og gjør selve synkroniseringen raskere.

Kartlegging før utvikling

Før vi velger teknisk løsning, lager vi et eierskapskart for dataene. Det angir hvilket system som er master for produktnummer, lager, pris, avgift, kunde og ordrestatus. Dersom både WooCommerce og ERP-et kan overskrive samme felt uten en konfliktregel, vil en ellers stabil integrasjon før eller siden danne en sløyfe eller gjeninnføre gamle verdier.

Kartleggingen dekker API-dokumentasjon, autentisering, rate limits, webhook-støtte og tilgang til et testmiljø. Vi ber om faktiske eksempelposter, ikke bare en endpoint-liste. Det er i eksemplene vi finner avvik mellom EAN og intern SKU, tomme variantverdier, ulike måleenheter, landavhengig mva. og priser som er netto i ett system og brutto i et annet.

Leveransen fra denne fasen er en flyttabell med kilde, mål, postnøkkel, frekvens, konfliktregel og ønsket oppførsel ved feil. Lager, økonomi og nettbutikkansvarlig kan da godkjenne forretningslogikken før den blir kode. Det reduserer risikoen for å automatisere en prosess som teamene egentlig tolker forskjellig.

Feilmoduser i lager-, pris- og ordreflyten

Et lagertall kan være ferskt og likevel ikke være salgbart. ERP-et kan vise fysisk beholdning, mens nettbutikken må bruke tilgjengelig beholdning etter reservasjoner, sikkerhetsbuffer og salg i andre kanaler. Vi avklarer hvilken verdi som publiseres, hvordan negativ beholdning behandles og hvor lenge butikken kan stole på siste gyldige svar når kildesystemet er utilgjengelig.

Prisen kan endres mens kunden handler. Beslutningen er om handlekurven beholder prisen fra produktvalget, eller om den valideres igjen før betaling. B2B-rabatter, valuta, avrunding, kampanjer og avgift testes hver for seg. Synkroniseringen må verken overskrive en aktiv kampanje i stillhet eller sende en annen totalsum til ERP-et enn beløpet betalingsløsningen tok imot.

En ordre kan bli opprettet to ganger. Etter en timeout vet ikke WooCommerce nødvendigvis om ERP-et rakk å lagre ordren før forbindelsen brøt. Vi bruker derfor en idempotensnøkkel og et kontrollert retry-mønster. Ordrer som ikke kan behandles automatisk, går til en synlig feilkø med ansvarlig eier i stedet for å forsvinne i en generell serverlogg.

Akseptanse med etterprøvbare bevis

Produksjonssetting bygger på avtalte scenarioer. Testlisten kan omfatte nytt produkt, endret variant, utsolgt og tilbake på lager, prisendring, ordre med flere varelinjer, kansellering, delretur og gjenoppretting etter API-avbrudd. Hvert scenario har definerte inndata, forventet tilstand i begge systemer og et bevis, som post-ID eller et personvernfiltrert loggutdrag.

Vi tester også ugyldige data, ukjent avgiftskode, utløpt token, 429-svar og payloads som bryter kontrakten. Godkjenning betyr ikke at normalflyten fungerte i én demo. Den betyr at teamet kan oppdage avviket, se om det er trygt å prøve igjen og vite når en person må ta en beslutning. Scenarioene blir en akseptanseprotokoll som kan brukes ved senere endringer.

Operativ overlevering

Ved overlevering dokumenterer vi datamastere, tidsplaner, varsler, loggplassering og retry-prosedyre. Prosesseieren må vite hvem som reagerer når synkroniseringen stopper, hvem som godkjenner nye feltmappinger og når utsjekken bør stanses fordi lagergrunnlaget er usikkert. Hemmeligheter og API-nøkler legges i avtalt secret-lagring, ikke i driftsdokumentet.

Vi avtaler dessuten hvordan endringer skal innføres. Et nytt ERP-felt, en WooCommerce-oppdatering eller en endret statusflyt kan påvirke kontrakten selv om URL-en til API-et er uendret. Et testmiljø og en kort regresjonsliste gjør at en administrativ endring ikke uventet stanser ordrebehandlingen i produksjon.

Dette bør stå i den skriftlige briefen

Send forutsetningene på e-post: ERP-navn og versjon, lenke til API-dokumentasjon, antall aktive produkter og varianter, salgskanaler, ønsket oppdateringsfrekvens og hvilke data som skal gå i hver retning. Legg ved et anonymisert produkt, en ordre og et priseksempel. Beskriv hvilket system som er dagens datamaster, og hvilke konkrete driftsfeil integrasjonen skal fjerne.

Da kan vi svare med kartleggingsomfang, avhengigheter og en trinnvis anbefaling uten å gjette. Hvis API-dokumentasjon ikke er tilgjengelig ennå, oppgi hvem som forvalter ERP-et og hvordan data eksporteres i dag. En skriftlig brief er nok til å avklare de viktigste risikoene før et tilbud, uten at et oppstartsmøte må være første steg.

Når en integrasjon er verdt å vurdere

  • Du oppdaterer lager og priser for hånd eller via filimport, og det skalerer ikke.
  • Du får ordrer på produkter leverandøren egentlig ikke har på lager.
  • Butikkprisene glir bort fra grossistens eller ERP-ets prisliste.
  • Ordrer må tastes inn på nytt i regnskaps- eller lagersystemet for hånd.
Hva er forskjellen på en integrasjon og det å bygge en WooCommerce-butikk?#
Å bygge en butikk betyr å sette opp og utvikle selve WooCommerce, som er det siden om WooCommerce-utvikler dekker. En integrasjon er smalere arbeid: å koble en eksisterende butikk til et eksternt system (ERP, grossist, CRM) slik at data synkroniseres automatisk. Vi gjør ofte begge deler, men det er to forskjellige omfang.
Integrerer dere med mitt ERP-system?#
Vi integrerer WooCommerce med API-et til ERP-systemer, vi implementerer ikke selve ERP-et. På skysiden kobler vi oss til Dynamics 365 Business Central, SAP Business One, NetSuite og Odoo; av norske regnskaps- og ERP-systemer til Tripletex, Visma og PowerOffice Go via API-et deres. Har systemet ditt et API eller en dataeksport, kan det som regel integreres.
Kjører synkroniseringen enveis eller toveis?#
Det kommer an på behovet. Oftest flyter lager, priser og katalog enveis fra kildesystemet til butikken, mens ordrer flyter toveis, tilbake til ERP-et eller CRM-et. Vi blir enige om retningen under kartleggingen.
Hvor ofte oppdateres dataene?#
Fra planlagt polling hvert par minutter til hendelsesstyrte oppdateringer via webhooks. Vi deler vanligvis synkroniseringen i lett og hyppig (lager, priser) og tyngre og sjeldnere (full katalog, media), slik at vi ikke overbelaster leverandør-API-et eller butikken.
Hva skjer når et produkt går tomt hos leverandøren?#
Ved neste syklus merker integrasjonen den varen som utilgjengelig eller skjuler den, slik at en kunde ikke kan kjøpe et produkt som ikke kan leveres. Når tilgjengeligheten er tilbake, kommer produktet tilbake automatisk.

Trenger du FAQ tilpasset bransje og marked? Vi lager en versjon som støtter dine forretningsmål.

Ta kontakt
Relevant klynge

Utforsk andre WordPress-tjenester og kunnskapsbase

Styrk virksomheten din med profesjonell teknisk støtte innen kjerneområdene i WordPress-økosystemet.

Anbefalinger fra LinkedIn

Anbefalinger og erfaringer fra samarbeid med WPPoland

Utvalgte anbefalinger fra ledere innen WordPress, WordCamp og e-handel - med vekt på leveranse i tide, teknisk dybde og forretningsorientert tilnærming til WordPress-utvikling.

Karolina Czapla

Karolina Czapla

Markedsstrateg – Performance & Digital Strategy

“Samarbeidet med Mariusz på WordCamp har vist meg hvor sjelden det er å kombinere dyp teknisk kompetanse med ekte lederskap. Han planlegger, koordinerer og leverer med presisjon, samtidig som han gir teamet rom til å voks...”

Medarrangør, WordCamp Gdynia 2024 & 2025

Argert Boja

Argert Boja

Senior Full‑Stack‑utvikler

“Mariusz er lagkameraten alle ønsker seg: sterke full‑stack‑WordPress‑ferdigheter, klare forklaringer og en positiv holdning selv under press. Han beveger seg lett mellom plugins, ytelse og Gutenberg‑layouts uten å miste ...”

Vi jobbet sammen på WordPress‑prosjekter

Daniel Blossfeld

Daniel Blossfeld

Konsulent for prosessoptimalisering og digitalisering

“Jeg hadde gleden av å jobbe med Mariusz i nesten tre år. I løpet av den tiden viste hans WordPress-utviklingsferdigheter seg å være uvurderlige i en rekke prosjekter, fra nettstedbygging til online medlemsområder og til ...”

Mariusz var hans kunde på WordPress‑prosjekter

Jessica Di Pasquale

Jessica Di Pasquale

Leder SEO-initiativer med datadrevne vekststrategier.

“Mariusz er en veldig dyktig, tålmodig og ekspert fyr. Alltid klar til å hjelpe og fikse feil, jeg satte stor pris på å jobbe med ham. Han er en så flott kollega!”

Ledet Mariusz direkte

Belinda Koch

Belinda Koch

Web-sporingsanalytiker hos TUI

“Mariusz er en flott person å jobbe med. Han er ekstremt motivert til å lære nye ting og dele sin kunnskap, og er svært kunnskapsrik innenfor et bredt spekter av emner. Vi jobbet sammen med digitale analyse- og sporingsem...”

Jobbet med Mariusz om digital analyse og sporing

Paweł Lewczuk

Paweł Lewczuk

Front-end-utvikler, WordPress-utvikler

“Jeg samarbeidet med Mariusz på flere prosjekter, og samarbeidet vårt var alltid eksemplarisk. Jeg tror det ligger mange flere felles prosjekter foran oss. Anbefales på det sterkeste!”

Mariusz var Pawels kunde

Relaterte artikler