Kort svar: WooCommerce API er den indbyggede REST-grænseflade, som lader andre systemer læse og ændre produkter, ordrer, kunder og rabatkoder i din webshop uden at logge ind i WordPress. Du opretter en API-nøgle under WooCommerce → Indstillinger → Avanceret → REST API, vælger læse- eller skriveadgang, og integrationen kalder adresser som /wp-json/wc/v3/orders over HTTPS. API’et er gratis og følger med WooCommerce – det, der koster, er den integration, der bruger det, og den server, der skal svare på kaldene.
Kontrolgrundlag: Beskrivelsen bygger på WooCommerce’ REST API version 3 (wc/v3) som den fungerer i en standardinstallation: nøgletyper, rettighedsniveauer, autentificering, endpoints, sidestørrelse og batch-grænsen på 100 objekter pr. kald. Regneeksemplet er udregnet ud fra de grænser. Priser og egenskaber på Hostious’ sider er aflæst 10. november 2026.
WooCommerce API er det, lagersystemet, regnskabsprogrammet og automatiseringsplatformen taler med, når de skal have fat i butikkens data. Ordet dukker op, når en leverandør beder om “en API-nøgle med skriveadgang”, når et plugin til bogføring skal sættes op, eller når du selv vil have ordrerne over i et regneark hver nat.
Dette opslag forklarer, hvad grænsefladen er, hvornår den er det rigtige værktøj, hvordan du opretter en nøgle sikkert, hvilke adresser der findes, og hvorfor kaldene fejler. Det handler om WooCommerce’ egen del af API’et. Den generelle del af WordPress – sider, indlæg og brugere – er dækket i guiden WordPress REST API guide.
Hvad WooCommerce API er – og hvad det ikke er
WordPress har et REST API: en samling adresser under /wp-json/, der svarer med data i JSON-format. WooCommerce lægger sit eget navnerum oven på med adressen /wp-json/wc/v3/. Alt, du kan gøre i butikkens kontrolpanel, kan en integration i princippet gøre her: oprette et produkt, ændre en pris, sætte en ordre til Gennemført eller oprette en rabatkode.
Tre begreber bliver tit blandet sammen. De løser forskellige opgaver:
| Begreb | Retning | Bruges til | Kræver nøgle? |
|---|---|---|---|
| WooCommerce REST API (wc/v3) | Systemet udenfor spørger butikken | Lager, regnskab, prisopdatering, rapporter | Ja – API-nøgle |
| Webhooks | Butikken sender besked ud, når noget sker | “Ny ordre” til fragt- eller mailsystem | Nej – URL og signatur |
| Store API (wc/store/v1) | Kundens browser taler med butikken | Kurv og kasse i blokbaseret checkout | Nej – kundens session |
Webhooks er altså ikke et alternativ til API’et, men et supplement: API’et henter og skriver, webhooken siger til, når der er noget at hente. Hvordan de bygges og signeres, står i artiklen webhooks forklaret. Store API’et er det, kurv og kasse selv bruger, og du skal normalt ikke røre det.
Hvornår giver API’et mening?
De fleste butikker møder API’et gennem et plugin eller en tjeneste, der bruger det i baggrunden. Du skal selv forholde dig til det, når du vælger integrationer, giver adgang og leder efter fejl. Typiske opgaver:
| Opgave | Sådan bruges API’et | Læs mere |
|---|---|---|
| Bogføring | Ordrer og refusioner hentes og bogføres som fakturaer eller kassesalg | WooCommerce e-conomic integration og WooCommerce Dinero integration |
| Lager og ERP | Lagertal skrives ind på produkter og varianter, ordrer hentes til pluk | Regnskabs- og lagersystemer med egen integration, fx IEX til WooCommerce |
| Priser i mængde | Hundredvis af priser ændres i ét batch-kald | opdater priser bulk WooCommerce |
| Leverandørens sortiment | Produkter oprettes og synkroniseres fra et feed | leverandør feed WooCommerce |
| Automatisering uden kode | n8n, Make eller Zapier læser ordrer og skriver til andre systemer | n8n eller Zapier |
| Rapporter | Salg pr. dag, bedst sælgende varer og lagerstatus hentes til et dashboard | Endpointet /reports |
Er opgaven en enkelt hændelse – “send en sms, når en ordre betales” – er en webhook ofte nok. Skal systemet også hente eller rette data, skal det have API-adgang.
Sådan opretter du en API-nøgle
En nøgle hører til en WordPress-bruger og får højst de rettigheder, brugeren har. Opret derfor en separat bruger til integrationer frem for at bruge din egen administratorkonto – så kan du slå adgangen fra uden at låse dig selv ude.

- Gå til WooCommerce → Indstillinger → Avanceret → REST API, og klik på Tilføj nøgle.
- Skriv en beskrivelse, der siger, hvad nøglen bruges til, fx “Regnskab – læse og skrive”. Beskrivelsen er det, du kigger efter, når du skal lukke en adgang igen.
- Vælg brugeren og rettigheden: Læs (hente data), Skriv (oprette og ændre) eller Læs/skriv. Vælg det mindste, opgaven kan klare sig med.
- Klik på Opret API-nøgle. WooCommerce viser nu en consumer key, der starter med
ck_, og en consumer secret, der starter medcs_. Secret vises aldrig igen. - Test nøglen med et kald, før du sender den videre til integrationen.
Et testkald kan sendes fra en terminal med curl. Her hentes de første fem ordrer:
curl -u ck_dinnoegle:cs_dinhemmelighed \
"https://dinbutik.dk/wp-json/wc/v3/orders?per_page=5&status=processing"
Svarer serveren med en liste i JSON, virker nøglen. Svarer den med en fejlkode, står betydningen i afsnittet om fejl længere nede.
Vigtigt: consumer secret er en adgangskode til din butik. Send den aldrig i en almindelig mail eller chat, og læg den ikke i temaets eller pluginets kode. Hvor nøgler må opbevares, og hvor tit de skal skiftes, står i artiklen API nøgler sikkerhed.
De vigtigste adresser i wc/v3
Alle adresser ligger under /wp-json/wc/v3/. De følger samme mønster: en liste på samlingen, et enkelt objekt på /samling/id, og handlingerne læse (GET), oprette (POST), ændre (PUT) og slette (DELETE).
| Adresse | Indhold | Typisk brug |
|---|---|---|
| /products | Produkter med pris, lager, kategorier og billeder | Synkronisering af sortiment og lager |
| /products/{id}/variations | Varianter af et variabelt produkt | Lager pr. størrelse og farve |
| /products/categories, /products/attributes | Kategorier og egenskaber | Opsætning af struktur fra ERP |
| /orders | Ordrer med linjer, adresser, fragt og status | Bogføring, pluk og forsendelse |
| /orders/{id}/notes og /orders/{id}/refunds | Ordrenoter og refusioner | Sporing og kreditnotaer |
| /customers | Kundekonti og adresser | CRM og nyhedsbrev |
| /coupons | Rabatkoder | Kampagner oprettet automatisk |
| /reports/sales, /reports/top_sellers | Salgstal pr. periode | Dashboard og ledelsesrapport |
| /system_status | Versioner, PHP, database og aktive plugins | Fejlsøgning og overvågning |
| /webhooks | Butikkens webhooks | Oprettelse og kontrol af abonnementer på hændelser |
To detaljer sparer mange kald. Parametret per_page giver op til 100 objekter pr. side, og page bladrer videre; svaret indeholder headerne X-WP-Total og X-WP-TotalPages, så integrationen ved, hvor meget der er. Og hver samling har et /batch-endpoint, hvor ét kald kan oprette, ændre og slette op til 100 objekter på én gang.
Regneeksempel: 2.000 produkter – så mange kald tager det
Forskellen mellem en integration, der er skrevet med omtanke, og en, der ikke er, kan måles i antal kald. Tag en butik med 2.000 produkter, der skal have nye priser:

| Fremgangsmåde | Antal kald | Kommentar |
|---|---|---|
| Ét PUT-kald pr. produkt | 2.000 | Hvert kald indlæser WordPress og WooCommerce fra bunden |
| Hent listen med per_page=100 | 20 | Læsning er let for serveren |
| Opdatér med /products/batch, 100 pr. kald | 20 | Skrivning i større bidder |
| Hent og opdatér i batch, i alt | 40 | 98 % færre kald end ét ad gangen |
| Spørg efter nye ordrer hvert minut i et døgn | 1.440 | Også når der ikke er sket noget |
| Webhook ved ny ordre | 0 | Butikken siger selv til |
Hvert kald til API’et er en fuld indlæsning af WordPress med database og plugins – det kan ikke leveres fra sidecache som en produktside. En integration, der spørger hvert minut, belaster derfor butikken mere end de kunder, der handler i den. Vælg batch til mængder, og webhooks til hændelser.
Når kaldet fejler: svarkoder og årsager
API’et svarer altid med en HTTP-statuskode og i de fleste tilfælde en fejlkode i JSON, fx woocommerce_rest_cannot_view. Sådan læser du dem:
| Svar | Fejlkode | Årsag | Løsning |
|---|---|---|---|
| 401 | woocommerce_rest_cannot_view / authentication_error | Nøglen mangler, er forkert eller sendes over http | Brug HTTPS, og tjek key og secret uden mellemrum |
| 401 | woocommerce_rest_cannot_create / cannot_edit | Nøglen har kun læseadgang, eller brugeren mangler rettigheder | Opret en ny nøgle med Læs/skriv til en bruger med adgang til WooCommerce |
| 403 | rest_forbidden | En sikkerhedsplugin eller firewall blokerer kaldet | Tillad integrationens IP-adresse eller stien /wp-json/wc/ i pluginet |
| 404 | rest_no_route | Adressen findes ikke – ofte fordi permalinks står på “Simpel” | Vælg en anden permalinkstruktur, eller kald via ?rest_route=/wc/v3/… |
| 400 | rest_invalid_param | Et felt har forkert format, fx pris som tal i stedet for tekst | Læs fejlens data.params, som peger på feltet |
| 429 eller 503 | – | Serveren eller en firewall begrænser antallet af kald | Sæt pauser ind, brug batch, og flyt hændelser til webhooks |
| 500 eller 504 | – | Et plugin fejler, eller kaldet tager for lang tid | Se fejlloggen, sænk per_page, og test på en kopi af butikken |
Statuskoderne betyder det samme her som på en almindelig side. Hvad der ligger bag en 404 not found, en 400 bad request og en 503 service unavailable i WordPress generelt, står i de respektive artikler – i API’et er det næsten altid nøglen, permalinks eller en firewall, der er årsagen.
Serveren afgør, hvor mange integrationer butikken kan bære
En webshop med regnskab, lager, fragt og en automatiseringsplatform koblet på får nemt flere API-kald i døgnet end besøg fra kunder. Hvert kald rammer PHP og databasen direkte. Det stiller tre krav til hostingen:
- Egen database: ordrer og produkter skal ikke dele database med andre kunder, når lagersystemet skriver 500 lagertal på et minut.
- Object cache: Redis holder de opslag, WooCommerce gentager i hvert kald, i hukommelsen, så databasen slipper.
- Et testmiljø: en ny integration skal køre mod en kopi af butikken, før den får skriveadgang til den rigtige. Fejl i et PUT-kald mod /products kan ændre 100 priser på én gang.
Hos Hostious får hver webshop egen database og Redis object cache på alle planer med WooCommerce hosting – fra 59 kr./md. ekskl. moms med Woo Mini. Fra Woo StartUp til 239 kr./md. følger staging til test og WooCommerce serviceaftale med, hvor vi opdaterer udvidelser og tester checkout bagefter. Har butikken brug for egen software ved siden af, fx en lagerserver eller en selvhostet n8n, dimensionerer vi en VPS hosting efter opgaven.
Tjekliste, før integrationen får adgang
- Én nøgle pr. integration, med en beskrivelse, der siger, hvem der bruger den.
- Mindste rettighed: læseadgang til rapporter og dashboards, skriveadgang kun hvor der skal skrives.
- En særskilt WordPress-bruger til integrationer, så adgangen kan lukkes uden at røre dine egne logins.
- HTTPS på hele butikken – API’et afviser Basic-autentificering over http.
- Testet på staging med de samme kald, som skal køre i drift.
- Aftalt rytme: batch om natten til mængder, webhooks til hændelser, ingen polling hvert minut.
- Kolonnen Sidste adgang i nøglelisten tjekkes hvert kvartal – nøgler, der ikke er brugt, slettes.
Har du selv bygget butikken, kan listen gennemgås på en halv time. Lader du Hostious bygge den, sætter vi integrationerne til betaling og fragt op fra start – se WooCommerce webshop.
Læs også
- Hub: Automatisering og integrationer
- Hub: WooCommerce-fejlfinding
- Webhooks forklaret: byg selv broen mellem dine systemer
- WordPress REST API i praksis: hent og opdatér data udefra
- Integrationssikkerhed: API-nøgler, tokens og mindste privilegium
- Opdater priser i bulk i WooCommerce: CSV, plugin eller API?
- Leverandør-feed til WooCommerce: import, synkronisering og faldgruber
- WooCommerce hosting hos Hostious – egen database og Redis til butikker med integrationer
Ofte stillede spørgsmål om WooCommerce API
Er WooCommerce API gratis?
Ja. REST API’et er en del af WooCommerce-pluginet og koster ikke ekstra. Udgiften ligger i den integration eller tjeneste, der bruger det, og i den server, der skal svare på kaldene.
Hvad er forskellen på WooCommerce API og WordPress REST API?
WordPress REST API dækker sider, indlæg, medier og brugere under /wp-json/wp/v2/. WooCommerce udvider det med /wp-json/wc/v3/ til produkter, ordrer, kunder og rabatkoder og bruger sine egne API-nøgler i stedet for applikationskodeord.
Kan jeg bruge API’et uden at kunne programmere?
Ja, hvis du bruger et plugin eller en automatiseringsplatform, der taler med API’et for dig. Du skal stadig kunne oprette en nøgle, vælge rettighed og læse en fejlkode, når noget går galt.
Hvorfor får jeg 401, selvom nøglen er rigtig?
De tre almindelige årsager er, at kaldet går over http i stedet for https, at nøglen kun har læseadgang til et kald, der skriver, eller at den bruger, nøglen hører til, ikke har rettigheder til WooCommerce. Opret en ny nøgle med Læs/skriv til en bruger med butiksadgang, og test igen over HTTPS.
Hvordan lukker jeg en integrations adgang?
Under WooCommerce → Indstillinger → Avanceret → REST API kan du slette nøglen eller fjerne den rettighed, den ikke længere skal have. Integrationen får 401 fra næste kald. Derfor skal hver integration have sin egen nøgle.
Hvilken hosting passer til en webshop med mange API-integrationer?
Vælg hosting med egen database til butikken, Redis object cache og et staging-miljø, så integrationer kan testes før drift. Hostious leverer det på alle WooCommerce-planer fra 59 kr./md. ekskl. moms og tager fra Woo StartUp også opdateringer og test af checkout gennem serviceaftalen.
Udgivet 10. november 2026Opdateret 10. november 2026
