Dansk hosting fra Aalborg
Servere i Europa
24/7/365 dansk support
support@hostious.io
WooCommerce fejlfinding 12 min. læsning Opdateret 13. oktober 2026

WooCommerce-kurven bliver tom mellem sider

Test cookies, domæneskift, HTTPS og cache i sikker rækkefølge – og se, hvorfor det ofte kun sker på mobilen.

WooCommerce-kurven bliver tom mellem sider

Kort svar: Læg en testvare i kurven i et privat vindue, og kontrollér at WooCommerce-sessioncookien bliver sat og sendt igen på næste side. Hvis domænet skifter mellem www og ikke-www, HTTPS og HTTP eller et andet subdomæne, mister browseren ofte sessionen. Hvis cookien er korrekt, undersøger du, om cachelaget leverer samme kurv til alle eller ignorerer WooCommerce-cookies. Ryd ikke alle kundesessioner som første forsøg.

Fagligt gennemgået: 2. oktober 2026

Kontrolgrundlag: WordPress 7.1, WooCommerce 11.0.1, PHP 8.4.23 og Chrome 151 på isoleret staging samt aktuel produktdokumentation. Cache- og samtykkeregler skal verificeres i butikkens egen kæde.

Når en WooCommerce kurv bliver tom mellem to sider, er varerne sjældent slettet. Det er forbindelsen mellem browseren og serveren, der er røget. WooCommerce gemmer nemlig ikke hele kurven i selve browsercookien: browseren får en sessionidentifikator, som peger på kundens kurvdata på serveren. Derfor kan kurven forsvinde, selv om “Accepter cookies” er valgt – browseren kan miste identifikatoren, et cachelag kan ignorere den, eller serverens sessionsdata kan være slettet eller utilgængelige.

Skel mellem en tom visning og en slettet session

Genindlæs kurven med browsercache deaktiveret, og sammenlign derefter mini-kurv, kurvside og checkout. Hvis kun ét element er tomt, mens checkout stadig kender varen, er sessionen sandsynligvis intakt; visningen eller fragmentet er gammelt. Hvis alle tre er tomme, og serveren ikke længere kan finde sessionen, er der tale om reelt sessionstab.

Denne forskel bestemmer risikoniveauet. En gammel mini-kurv løses i frontend. En mistet session kræver cookie-, cache- og serveranalyse. Brug guiden om en kurv, der ikke opdaterer, hvis data kun er visuelt forældede.

Syntetisk WooCommerce-kurv med et testprodukt før fejlsøgning af sessionen
WooCommerce 11.0.1 på isoleret staging, testet 28. august 2026. Kurven er en syntetisk udfyldt baseline; billedet dokumenterer ikke et reelt sessionstab eller en kundekurv.

Tom kurv – eller en kurv, der ikke opdaterer?

De to fejl ligner hinanden for kunden, men de har hver sin årsag og hver sin løsning. Brug tabellen til at vælge den rigtige guide, før du ændrer noget:

Det oplever kundenFejltypeHer finder du løsningen
Varen er væk både i mini-kurv, kurv og checkoutSessionen er tabtDenne guide – start med trin 1
Kurven er tom efter et skift mellem www og ikke-www eller fra HTTP til HTTPSCookien følger ikke med til det nye hostnavnDenne guide – trin 1
Kurven tømmes efter login eller efter en fast tidSessionen flettes forkert eller udløberDenne guide – trin 5
Antal eller total ændrer sig ikke, når kunden retter i kurvenVisningen bliver ikke opdateretGuiden WooCommerce kurv opdaterer ikke
Mini-kurven i sidehovedet viser 0, men checkout har varenEt gammelt fragment bliver vistSamme guide om kurv, der ikke opdaterer
Kunden ser varer, som en anden har lagt i kurvenCachen deler en personlig sideStop cachen af kurv og checkout med det samme – se trin 3

Husk reglen: er kurven tom alle tre steder, er det et sessionstab. Er den kun forkert ét sted, er det visningen.

Reproducer fejlen uden at forstyrre kunder

  1. Åbn et nyt privat vindue og start på butikkens endelige HTTPS-domæne.
  2. Tilføj én ufarlig testvare. Notér URL og tidspunkt.
  3. Se i browserens Storage/Application-visning, om WooCommerce-cookies bliver oprettet. Dokumenter kun cookienavne, domæne, path og udløb; publicer aldrig cookieværdier.
  4. Åbn en produktside, kurven og checkout i samme fane. Notér præcis hvor varen forsvinder.
  5. Gentag efter login, hvis fejlen er knyttet til kundekonti.
  6. Sammenlign responsheaders for en tom og en korrekt kurv. Se efter cache HIT/BYPASS og redirects.

Diagnoseoversigt

SymptomSandsynlig årsagKontrolNæste skridt
Kurven tømmes ved domæneskiftCookie gælder ikke nyt hostnameRedirect chain og cookie domainEnsret WordPress/site URL og redirects
Kurven tømmes ved checkoutCheckout eller session bliver cachedCacheheader og bypassregelUdeluk dynamiske sider/cookies
Kun private vinduer fejlerSamtykke eller cookieblokeringCookie oprettes før/efter samtykkeRet klassificering og nødvendig funktionalitet
Kun indloggede kunder fejlerLogin/session merge eller kontocacheFør/efter login og cacheheaderUndersøg account/session-hook
Kurven forsvinder efter fast tidSessionudløb eller oprydningCookieudløb og scheduled actionsRet kun dokumenteret levetid/jobfejl
Flere kunder deler eller mister kurvFuld sidecache ignorerer cookiesGentag med to isolerede browsereStop cache af dynamisk respons straks

Løsning i den sikreste rækkefølge

1. Ensret domæne og HTTPS

Kontrollér WordPress-adresse, webstedsadresse, canonical hostname og redirects. Hele købsflowet skal ende på samme HTTPS-host. Ret redirectkilden frem for at lægge flere regler ovenpå. Test både direkte URL, gammel www/ikke-www-variant og eventuelle links fra annonce eller mail.

2. Bekræft WooCommerce-cookies

Efter første vare skal browseren normalt have cookies, der signalerer kurvindhold og kobler gæsten til serverens session. Kontrollér woocommerce_cart_hash, woocommerce_items_in_cart og et navn, der starter med wp_woocommerce_session_. Værdierne er følsomme sessionsdata og skal ikke kopieres.

Hvis cookies ikke sættes, sammenlign før og efter samtykke, browserbeskyttelse og sikkerhedsheaders. WooCommerce-kurvens nødvendige funktion kan ikke vente på marketing-samtykke, men den konkrete juridiske cookieklassificering skal følge butikkens samtykkeløsning.

3. Test cachebypass

Kurv, checkout og Min konto skal være dynamiske. Cachelaget skal også respektere WooCommerce-session- og kurvcookies, så en kunde med varer ikke får en anonym cached side. Test med to helt adskilte private browsere. Deres kurve må aldrig krydse hinanden.

Hvis et cachelag er årsagen, ret den smalleste relevante side-/cookiebypass, purge laget og gentag testen. Slå ikke al cache permanent fra, hvis problemet kun vedrører dynamiske ruter.

4. Undersøg redirects, sprog og valuta

Flersprog, valuta-plugins og eksterne checkoutflows kan skifte subdomæne eller cookiepath. Tegn hele redirectkæden fra produkt til checkout. Sessionen skal bevares på hvert hop. Ret den komponent, der laver det uventede host-/pathskift.

5. Kontrollér sessionlagring og oprydning

Hvis browseren sender den samme sessionscookie, men serveren returnerer en tom kurv, skal sessionlageret undersøges. Se efter databasefejl, objektcache-eviction, multisite-/databaseprefix-fejl eller aggressive cleanup-jobs. Brug logs og staging; ændr ikke sessiontabeller direkte.

WooCommerce-værktøjet til at slette kundesessioner fjerner aktive kurve. Det er en driftsoperation, ikke en standardløsning. Brug det kun med backup, varsling og et klart bevis for korrupte sessionsdata.

6. Konflikttest på staging

Test standardtema og WooCommerce alene, og tilføj cache, samtykke, sprog/valuta og loginudvidelser i logiske trin. Reproducer både gæst, login og tilbagevenden efter en ny sidevisning. Gem cookie-metadata og headers for den første kombination, der bryder.

Når kurven kun bliver tom på mobilen

Virker alt på computeren, mens kunder på telefonen mister kurven, er det sjældent serveren. Det er næsten altid et skift mellem to browsere, som kunden ikke selv lægger mærke til:

  • Indbyggede browsere i sociale apps. Et link fra en annonce på Facebook eller Instagram åbner i appens egen browser. Trykker kunden “Åbn i browser”, fortsætter købet i Safari eller Chrome – med en ny session og en tom kurv.
  • Betalingsapps. Når kunden har godkendt betalingen i en app, kan telefonen sende kunden tilbage til standardbrowseren i stedet for den browser, købet begyndte i. Så ser kvitteringssiden tom ud, selv om ordren er gennemført.
  • Privat browsing. Et privat vindue glemmer sessionen, når det lukkes. Kommer kunden tilbage senere via et link i en mail, er kurven væk.
  • Checkout på et andet domæne eller i en ramme. Safari blokerer cookies fra tredjeparter. Ligger kurv eller checkout på et andet domæne end butikken, bliver sessionscookien ikke sendt med.

Test derfor på en rigtig telefon, ikke kun i computerens mobilvisning: tryk på et link til butikken fra en social app, læg en vare i kurven, og gennemfør et testkøb. Notér, hvilken browser hvert trin åbner i. Skifter browseren undervejs, har du forklaringen – og løsningen er at holde hele købet på samme domæne og lade ordrebekræftelsen virke uden en aktiv kurv.

Samtykke og nødvendige cookies

Test tre forløb: før et valg i samtykkebanneret, efter “afvis ikke-nødvendige” og efter accept. Kurvens kernefunktion skal opføre sig konsistent efter butikkens godkendte samtykkedesign. Hvis sessioncookien fejlagtigt er klassificeret som analyse eller marketing, kan den blive slettet midt i forløbet.

Ret klassificeringen i samtykkeløsningens native indstilling. Tilføj ikke et separat script, der tvinger cookies igennem uden juridisk og teknisk review.

Forvent ikke, at en anonym gæstekurv automatisk følger kunden til en anden telefon eller browser. Det er to forskellige sessionsmiljøer. Hvis kravet er en gemt kurv på tværs af enheder, skal kunden være identificeret gennem butikkens dokumenterede login- eller “gem kurv”-funktion; ellers er forskellen ikke et sessionstab.

Når flere cachelag er aktive

Tegn kæden: browsercache, optimeringsplugin, server-page-cache, reverse proxy/CDN og eventuel objektcache. En BYPASS-header fra ét lag beviser ikke, at de andre lag bypasser. Kør testen med et unikt query-free produktflow og registrer headerne på hvert trin. Slå lag fra ét ad gangen på staging, så du kan navngive ejeren.

Mikroeksempel: Kurven forsvinder først efter login

En gæst lægger en testvare i kurven, går til login og lander bagefter på Min konto med en tom mini-kurv. Før du konkluderer, at sessionen er slettet, åbner du checkout direkte. Hvis varen stadig findes dér, er gæstesessionen sandsynligvis blevet flettet korrekt, mens headerens mini-kurv viser en cached eller gammel state.

Hvis checkout også er tom, sammenlignes sessionscookiens navn, domæne og path lige før login og på den første side efter redirect. Der skal ikke kopieres værdier; det er nok at se, om den samme identifikator sendes, eller om loginflowet opretter en ny session. Kontrollér samtidig om redirecten skifter hostname, sprogsti eller protokol. Et enkelt hop til et andet hostnavn kan forklare problemet bedre end en databaseoprydning.

Når den samme cookie sendes, men serveren returnerer en ny tom kurv, flyttes diagnosen til serverens sessionlager og de hooks, som fletter gæst og kunde. Reproducer på staging med WooCommerce og standardtema, og tilføj login-, medlemskabs- og samtykkeplugins ét ad gangen.

Brug to negative kontroller

En positiv test viser, at kurven kan overleve. To negative kontroller viser, at isolationen også virker. Browser A og browser B skal kunne lægge forskellige varer i kurven uden at se hinandens data. En ny privat session uden cookie skal starte tom. Hvis en anonym browser får en anden tests kurv, skal cache af dynamiske sider standses med det samme, før almindelig fejlsøgning fortsætter.

Kontrollér også, at en afsluttet testordre rydder eller bevarer kurven efter butikkens valgte adfærd. En kurv, der aldrig tømmes efter køb, er den modsatte sessionfejl og kan få kunden til at bestille de samme varer igen.

Regn på, hvad en tom kurv koster

En kurv, der tømmes, giver ingen fejlbesked og ingen linje i loggen. Kunden opgiver bare. Derfor bliver fejlen ofte nedprioriteret. Et hurtigt regnestykke viser, hvad den er værd at løse:

Trin i regnestykketEksempel
Kunder, der lægger en vare i kurven pr. måned600
Andel, der rammes af fejlen3 % = 18 kunder
Andel af dem, der opgiver købet2 ud af 3 = 12 kunder
Gennemsnitlig ordre550 kr.
Tabt omsætning pr. måned6.600 kr.
Tabt omsætning pr. år79.200 kr.

Tallene er et eksempel. Sæt dine egne ind: antallet af kurve finder du i butikkens statistik, og andelen, der rammes, får du fra testen med de to private browsere. Selv en fejl, der kun rammer få procent, koster hurtigt mere end den tid, det tager at finde den.

Verifikation

  • En gæstekurv bevares fra produkt til kurv og checkout på det endelige domæne.
  • En indlogget testkundes kurv opfører sig som butikkens dokumenterede regel ved login.
  • To private browsere har hver sin kurv og ser aldrig hinandens varer.
  • Dynamiske sider viser BYPASS/no-store efter cachearkitekturens design.
  • Kurven overlever den dokumenterede sessionperiode og tømmes korrekt efter en gennemført ordre.

Rollback

Gendan den tidligere redirect-, cache-, samtykke- eller sessionindstilling fra backup. Purge kun de berørte cachelag, og gentag den samme browsersekvens. Hvis du har slettet kundesessioner, kan de aktive kurve normalt ikke genskabes enkeltvis; derfor skal den handling undgås som eksperiment.

Hvornår skal du eskalere?

Hosting skal have cookie-metadata uden værdi, redirect chain, cacheheaders og UTC-tidspunkt ved server-side sessiontab. Pluginudvikleren skal have en reproducerbar kombination. Se WooCommerce hosting hos Hostious ved behov for cache- og sessionsdiagnose.

Vil du have kurv og checkout på en server, der er sat op til en webshop? På WooCommerce hosting hos Hostious får butikken egen database og Redis object cache, og kurv, checkout og Min konto beregnes for hver kunde. Prisen er fra 59 kr./md. ekskl. moms med daglig backup, gratis flytning og dansk support døgnet rundt. Fra Woo StartUp til 239 kr./md. er staging og WooCommerce serviceaftale med, så checkout bliver testet efter opdateringer.

Ofte stillede spørgsmål om tom kurv

Hvorfor forsvinder varerne fra kurven?

Fordi browseren mister WooCommerce-sessionscookien – typisk ved skift mellem www og ikke-www, HTTP og HTTPS eller ved en cache, der serverer en anonym udgave af kurvsiden.

Hvordan tester jeg, om det er cookien, der fejler?

Læg en vare i kurven i et privat vindue, og se i DevTools om woocommerce_-cookies sættes og sendes igen på næste side. Skifter domænenavnet undervejs, har du fundet fejlen.

Kan mit cacheplugin tømme kunders kurve?

Ja, hvis kurv- og checkout-sider fuldside-caches eller cookies strippes. Undtag /kurv/, /checkout/ og mine-konto-sider fra cache, og purge efter ændringen.

Hvor længe gemmer WooCommerce en kurv?

Som standard udløber en gæsts session efter cirka to døgn. Er kunden logget ind, gemmes kurven på kontoen og hentes frem igen ved næste login. Forsvinder kurven efter få minutter eller timer, er det derfor ikke den normale levetid, men en fejl i cookie, cache eller sessionslager.

Hvorfor bliver kurven kun tom på mobilen?

Fordi købet skifter browser undervejs. Links fra sociale apps åbner i appens egen browser, og betalingsapps kan sende kunden tilbage til en anden browser end den, købet begyndte i. Hver browser har sin egen session, så kurven ser tom ud, selv om serveren stadig har den.

Læs også

Dokumentér et sessionstab sikkert

Tag et skærmbillede af browserens cookieoversigt med alle værdier skjult. Navn, domæne, path og udløbstid er som regel nok. Gem samtidig redirectkæden og cacheheaderne på produkt, kurv og checkout. Test med to helt separate private browserprofiler, så det kan bekræftes, at deres kurve hverken forsvinder eller blandes.

En redigeret HAR-fil kan vise Set-Cookie, redirects og cachebeslutninger, men den skal renses for cookieværdier, tokens, adresser og kundeoplysninger. Skriv den præcise browsersekvens ned, og gentag den efter rettelsen. “Kurven virker nu” er svagt bevis; samme session gennem fem sidevisninger og to fortsat adskilte testkurve er et resultat, der kan kontrolleres.

Skrevet af Marc, stifter af Hostious

Jeg hedder Marc og har stiftet Hostious. Vi hoster WordPress-hjemmesider og WooCommerce-webshops for danske virksomheder – drevet fra Aalborg-området med servere i Europa – og jeg skriver guiderne her ud fra det, vi ser i driften hver dag.

Udgivet 28. august 2026Opdateret 13. oktober 2026Fagligt gennemgået 2. oktober 2026