POAS: når Google Ads skal byde på profit i stedet for omsætning
En ROAS på 400 % kan være et overskud eller et nul, alt efter hvad I tjener på varerne. Her er regnestykket bag POAS, tre måder at give Google Ads profit som konverteringsværdi, og hvordan I skifter uden at smadre budgivningen.
Hassan Aziz
Partner & Projektleder, Bullmade
ROAS siger intet om, hvad I tjener
ROAS er omsætning divideret med annoncekroner. Tallet er nemt at måle, fordi webshoppen alligevel sender ordreværdien til Google Ads, og det er derfor blevet standardmålet for e-handel. Problemet er, at omsætning ikke er det, I lever af. I lever af det, der er tilbage, når varen, fragten, gebyrerne og returvarerne er betalt.
POAS (profit on ad spend) bruger samme brøk, men med dækningsbidrag i tælleren i stedet for omsætning:
- ROAS = omsætning / annonceomkostning
- POAS = dækningsbidrag / annonceomkostning
Hvad der præcis tæller som dækningsbidrag, kommer vi til. Det vigtige her er, at POAS har et fast nulpunkt. Ved POAS 1,0 har annoncerne præcis betalt sig selv hjem, og alt over 1,0 er bidrag til faste omkostninger og overskud. ROAS har også et nulpunkt, men det flytter sig med marginen på hver eneste vare, og det er dér, problemerne starter.
Bemærk, at begrebet ikke er standardiseret. Nogle opgør POAS som profit efter annonceomkostninger divideret med annonceomkostninger, hvor nulpunktet så er 0. Vi bruger definitionen ovenfor, men aftal én definition internt og skriv den ned.
Break-even-ROAS: det tal, jeres mål skal holdes op imod
Break-even-ROAS er den ROAS, hvor dækningsbidraget fra salget præcis dækker annoncekronerne. Den findes ved én simpel brøk:
- Break-even-ROAS = 1 / dækningsgrad
Har en vare en dækningsgrad på 25 %, skal hver annoncekrone hente 4 kroner i omsætning, før I går i nul. Ved 60 % er grænsen 1,67.
Regneeksempel (fiktive tal): I bruger 10.000 kr. på en kampagne med tROAS 400 %, og Google rammer målet. Kampagnen henter altså 40.000 kr. i omsætning ekskl. moms.
| Dækningsgrad | Break-even-ROAS | DB ved ROAS 400 % | Resultat efter annoncer | Resultat ved ROAS 600 % |
|---|---|---|---|---|
| 25 % | 400 % | 10.000 kr. | 0 kr. | 5.000 kr. |
| 40 % | 250 % | 16.000 kr. | 6.000 kr. | 14.000 kr. |
| 60 % | 167 % | 24.000 kr. | 14.000 kr. | 26.000 kr. |
Samme ROAS, samme budget, og resultatet går fra nul til 14.000 kr. Et ROAS-mål giver kun mening, når det er sat i forhold til marginen på de varer, kampagnen faktisk sælger.
To fejl går igen her. Den første er moms. Sender shoppen ordreværdier inkl. moms, er ROAS pustet 25 % op, og en tROAS på 400 % svarer reelt til 320 % ekskl. moms. Break-even og mål skal regnes på samme grundlag. Den anden er at bruge butikkens gennemsnitlige dækningsgrad. Kampagnen sælger ikke et gennemsnit, den sælger den blanding af varer, som budgivningen skubber den hen imod.
Hvorfor omsætningsbudgivning trækker budgettet mod de dårlige varer
Smart Bidding med tROAS gør groft sagt følgende pr. auktion: den forudsiger sandsynligheden for et køb og værdien af købet, ganger dem sammen og byder op til den forventede værdi divideret med målet. Den ved intet om marginen. Den ser kun den værdi, I sender.
Regneeksempel (fiktive tal): To produkter koster begge 800 kr. ekskl. moms. Produkt A har en dækningsgrad på 20 % (160 kr. pr. ordre). Produkt B har 50 % (400 kr. pr. ordre). Klikprisen er 4 kr. for begge. A konverterer bedre, fordi det er billigere end konkurrenternes tilsvarende vare: 2 % mod 1,2 % for B.
| Produkt A | Produkt B | |
|---|---|---|
| Annoncekost pr. ordre | 200 kr. | 333 kr. |
| ROAS | 400 % | 240 % |
| DB pr. ordre | 160 kr. | 400 kr. |
| Resultat pr. ordre efter annoncer | -40 kr. | +67 kr. |
| POAS | 0,8 | 1,2 |
- Produkt A, ROAS i %400
- Produkt B, ROAS i %240
- Produkt A, POAS x 10080
- Produkt B, POAS x 100120
Med omsætning som værdi er A vinderen med god margin. Ved et mål på 400 % vil algoritmen byde op til 4,00 kr. pr. klik på A (800 × 2 % / 4) og kun 2,40 kr. på B (800 × 1,2 % / 4). Budgettet flyder mod den vare, der taber penge på hver ordre.
Med dækningsbidrag som værdi og et POAS-mål på 1,2 vender det: A får højst 2,67 kr. (160 × 2 % / 1,2), og B får 4,00 kr. (400 × 1,2 % / 1,2).
Udregningen er forenklet. Den rigtige algoritme bruger langt flere signaler. Men retningen er den samme, og den er systematisk: varer med lav margin konverterer ofte bedst, netop fordi de er billige i forhold til markedet, og en omsætningsbaseret budgivning belønner dem for det. Jo større spredning i dækningsgrad på tværs af sortimentet, jo større er fejlen.
Hvad der skal med i profitværdien
Dækningsbidrag kan opgøres på flere niveauer, og det niveau, I vælger, bestemmer, hvad algoritmen optimerer imod. Vi anbefaler at medtage alle variable omkostninger, der følger med ordren, og ikke mere.
Regneeksempel (fiktive tal) for én ordre på 1.000 kr. inkl. moms:
| Post | Beløb |
|---|---|
| Omsætning ekskl. moms | 800 kr. |
| Varekøb | -440 kr. |
| Dækningsbidrag 1 (45 %) | 360 kr. |
| Fri fragt, jeres udgift | -49 kr. |
| Betalingsgebyr, 1,5 % af 1.000 kr. | -15 kr. |
| Pluk og emballage | -20 kr. |
| Bidrag, hvis varen beholdes | 276 kr. |
Så kommer returvarerne. Sig at kategorien har en returrate på 15 %, og at en retur koster 60 kr. i returfragt og håndtering. Bliver varen sendt retur, refunderer I omsætningen og får varen tilbage, men fragt, gebyr, pluk og returhåndtering er tabt: -144 kr. Den forventede værdi af ordren er da 0,85 × 276 + 0,15 × (-144) = 213 kr.
Altså 213 kr. i stedet for 800 kr. Det svarer til 27 % af omsætningen, ikke de 45 %, som indkøbsprisen alene antyder.
Tre regler for de enkelte poster:
- Fragt: Betaler kunden fragt, er det omsætning, og jeres fragtudgift er en omkostning. Har I fri fragt over en grænse, rammer udgiften kun de ordrer, der ligger over grænsen, og det skal værdien afspejle.
- Returrater: Brug returraten pr. kategori, ikke for hele butikken. Tøj og sko kan ligge langt over hårde varer, og en fælles sats flytter budget mod de kategorier, der sendes mest retur. Vil I trække konkrete returneringer ud bagefter, kan Google Ads justere konverteringsværdien med konverteringsjusteringer, men det kræver, at ordren er sendt med transaktions-id.
- Rabatkoder: Rabatten skal trækkes fra dækningsbidraget, ikke fra omsætningen i en anden kolonne. I eksemplet ovenfor fjerner en rabat på 10 % 80 kr. af en ordre med 360 kr. i DB 1. Det er 22 % af bidraget. En rabatkode, der bruges meget i én kampagne, ændrer kampagnens reelle POAS mere, end mange regner med.
Faste omkostninger som løn, husleje og software skal ikke med. De ændrer sig ikke med den enkelte ordre, og trækker I dem fra, byder algoritmen for lavt på ordrer, der faktisk bidrager.
Metode 1: send dækningsbidraget som værdi fra serveren
Den mest præcise løsning er at beregne værdien pr. ordre i jeres egen backend, med alle posterne fra forrige afsnit, og sende den som konverteringsværdi på en købs-konverteringshandling i Google Ads.
Den nemme version er at lægge tallet i dataLayer på kvitteringssiden og lade Google Ads-tagget sende det. Gør ikke det. Alt, hvad der ligger i dataLayer, kan læses af enhver, der åbner udviklerværktøjerne i browseren. Står der en ordre på 800 kr. med værdien 213, kan en konkurrent købe et par varer og regne jeres marginer ud. Det samme gælder, hvis I sender kostprisen pr. vare. At gange værdien med en fast faktor for at skjule den hjælper kun lidt, for forholdet mellem varerne afslører stadig, hvor I tjener mest.
Der er to måder at holde tallet ude af browseren:
- Server-side tagging. Browseren sender ordre-id og omsætning til en server-container i Google Tag Manager, som I selv driver. Containeren slår marginen op i en datakilde, I styrer, og sender den beregnede værdi videre til Google Ads. Browseren ser aldrig profitværdien.
- Offline konverteringsimport. Backend sender ordren med klik-id og profitværdi direkte til Google Ads via API, typisk med kort forsinkelse. Det giver jer også mulighed for at vente, til ordren er betalt eller afsendt, før den tæller.
Hold to ting adskilt. GA4 skal fortsat have omsætning som værdi, ellers passer jeres analyser ikke med bogføringen. Og opret profitværdien som en ny konverteringshandling frem for at ændre værdien på den eksisterende. Hvorfor, gennemgår vi under overgangsplanen.
Ulempen ved metoden er, at den kræver data, der passer. Forkerte kostpriser i ERP giver forkert budgivning, og det sker uden advarsel. Lav en fast kontrol, der sammenligner den samlede værdi sendt til Google Ads med dækningsbidraget i bogholderiet hver måned. Vi hjælper med opsætning af tracking og konverteringer, hvis I vil have den del gjort ordentligt fra start.
Metode 2: cart data og kostpris i Merchant Center
Google har sin egen model for profit, og den lækker ikke marginer i browseren. Den består af to dele.
Den første er conversions with cart data. Købs-tagget sender en liste over de solgte varer med varenummer, pris pr. stk. ekskl. moms og fragt samt antal, og eventuelt en rabat på hele ordren. Varenumrene skal svare præcis til id i jeres Merchant Center-feed. Den anden er attributten cost_of_goods_sold i produktfeedet, angivet som beløb og valuta. Google kobler de to og beregner bruttofortjeneste (omsætning minus kostpris) pr. konvertering. Kostprisen vises ikke for kunderne, og Google skriver selv, at den ikke behøver at være eksakt.
Det giver jer rapportering på bruttofortjeneste og bruttomargin i Google Ads, ned på produktniveau, uden at I skal bygge noget på serveren. Feedet vedligeholdes i forvejen, og kostprisen kan hentes fra ERP sammen med resten. Har feedet huller, er det dér, I skal starte, og vi har en side om produktfeed og Merchant Center.
Ud over rapporteringen har Google et profitmål i Smart Bidding til Performance Max og standard Shopping-kampagner, der bruger netop cart data og kostpris. Google annoncerede det i maj 2024. Pr. 1. oktober 2026 beskriver Googles egen hjælpeside det stadig som at være i betatest, og det er ikke tilgængeligt i alle konti. Regn derfor ikke med det, før I har set det i jeres egen konto.
Begrænsningerne er værd at kende:
- Kostprisen dækker kun varekøb. Fragt, betalingsgebyrer og returvarer er ikke med, så bruttofortjenesten er DB 1 og ikke det tal, I faktisk lever af.
- Profitmålet gælder Performance Max og Shopping. Søgekampagner uden produkter er ikke omfattet.
- Rapporteringen virker for de varer, der står i feedet. Varer uden kostpris eller med uoverensstemmende id falder ud.
For mange webshops er det den rigtige første investering. Selv uden profitmålet får I et tal, der viser, hvilke kampagner der sælger varer med lav margin, og det er grundlaget for metode 3.
Metode 3: custom labels efter margin og separate kampagner
Den simpleste metode kræver hverken ny tracking eller beta-adgang. I giver hver vare et marginbånd i feedet med en custom label og deler kampagnerne efter båndet, så hvert bånd får sit eget ROAS-mål.
Merchant Center har fem custom labels (custom_label_0 til custom_label_4), og Google nævner selv profitmargin som et af eksemplerne på, hvad de kan bruges til. Båndene beregnes automatisk ud fra kostpris og salgspris, så en vare skifter bånd, når prisen ændres.
Regneeksempel (fiktive bånd og mål):
| Marginbånd | Dækningsgrad | Regnet med | Break-even | tROAS med buffer |
|---|---|---|---|---|
| Lav | 20 til 30 % | 25 % | 400 % | 450 % |
| Mellem | 30 til 45 % | 37,5 % | 267 % | 300 % |
| Høj | over 45 % | 55 % | 182 % | 200 % |
Bufferen dækker fragt, gebyrer og returvarer, som marginen i feedet ikke indeholder. Den skal beregnes ud fra jeres tal, ikke kopieres herfra.
Metoden har tre svagheder. Den splitter data, så hver kampagne har færre konverteringer at lære af. Den gør budgetfordelingen manuel, fordi Google ikke flytter penge mellem kampagnerne for jer. Og den behandler alle varer i et bånd ens, selvom en vare med 31 % og en med 44 % dækningsgrad er meget forskellige. Hvordan I deler Performance Max uden at sulte de enkelte kampagner, gennemgår vi i artiklen om Performance Max-struktur for webshops.
| Metode 1: profit fra serveren | Metode 2: cart data og COGS | Metode 3: custom labels | |
|---|---|---|---|
| Præcision | Høj, alle variable omkostninger | Mellem, kun varekøb | Lav, bånd |
| Risiko for at lække marginer | Ingen, hvis det sker på serveren | Ingen | Ingen |
| Påvirker budgivning | Ja, i alle kampagnetyper | Kun med profitmålet (beta) | Ja, via mål pr. kampagne |
| Krav | Backend og server-side tagging | Feed med kostpris og cart data i tagget | Feedregler |
| Passer til | Mange ordrer og stor spredning i margin | Første skridt for de fleste | Mindre konti og hurtig start |
Metoderne kan kombineres. Cart data og kostpris giver rapporteringen. Profitværdi fra serveren eller marginbånd styrer budgivningen.
Nye kunder og customer lifetime value
POAS på første ordre undervurderer de kunder, der kommer igen. En ny kunde, der handler tre gange på et år, er mere værd end en eksisterende kunde, der alligevel ville have købt, og en ren POAS-budgivning ser dem som ens.
Google Ads har et mål for nye kunder i Performance Max, Search og Demand Gen. Vælger I at byde højere for nye kunder, kan I lægge en ekstra værdi oven på hver ny kunde, og kampagnen optimerer derefter på den samlede værdi. Derudover kan konverteringsværdiregler justere værdien ud fra målgruppe, placering og enhed, fx med en kundeliste over jeres bedste kunder.
Den ekstra værdi skal regnes ud, ikke gættes. Regneeksempel (fiktive tal): af de nye kunder, I fik for et år siden, har 30 % købt igen, og de har i gennemsnit lagt 1,4 ordrer mere med 213 kr. i bidrag pr. ordre. Det giver 0,3 × 1,4 × 213 = 89 kr. i forventet ekstra bidrag pr. ny kunde over tolv måneder. Træk noget fra for usikkerhed, og fordi en del af genkøbet skyldes mails og ikke annoncen. En værdi på 50 til 60 kr. er et forsvarligt udgangspunkt.
Faldgruberne er dobbelttælling og dårlig genkendelse. Har I allerede regnet genkøb ind i POAS-målet ved at acceptere en lav POAS på første ordre, skal I ikke også lægge en værdi for nye kunder ovenpå. Og fungerer genkendelsen af eksisterende kunder dårligt, betaler I en præmie for kunder, I allerede har. Upload en kundeliste, og tjek fordelingen af nye og eksisterende kunder i rapporten, før I stoler på den.
Sådan skifter I uden at smadre læringen
Den hyppigste fejl er at ændre værdien på den eksisterende købs-konverteringshandling fra den ene dag til den anden. Kampagnen har lært, at et køb er værd omkring 800 kr. Dagen efter er det samme køb værd 213 kr., og med et uændret mål på 400 % falder den målte ROAS til omkring 107 %. Algoritmen tolker det som en markant dårligere kampagne og sænker buddene kraftigt.
Det er blevet vigtigere siden august. Fra 17. august 2026 optimerer kampagner med tROAS og tCPA, som er begrænset af budget, mere bogstaveligt mod det mål, der står i kontoen. Tidligere overpræsterede mange budgetbegrænsede kampagner i forhold til målet. Nu rammer de det. Et forkert mål koster altså mere end før.
Vores overgangsplan:
- Opret en ny konverteringshandling til profitværdien og sæt den som sekundær. Sekundære handlinger rapporteres i kolonnerne for alle konverteringer, men bruges ikke til budgivning.
- Kør parallelt i to til fire uger. Begge handlinger registrerer de samme ordrer. Tjek, at antallet matcher, og at summen af profitværdier stemmer med bogholderiet.
- Beregn omregningsfaktoren pr. kampagne: profitværdi divideret med omsætningsværdi i perioden. I eksemplet er den 0,27.
- Byt primær og sekundær, og omregn målet samtidig. Et mål på 400 % på omsætning bliver til 400 % × 0,27 = 108 % på profit. Algoritmen byder nu stort set som før, men på et grundlag, der skelner mellem varerne.
- Flyt målet gradvist mod det, I faktisk vil have, fx 10 til 15 % ad gangen med to ugers mellemrum, og vent længere, hvis jeres købsforsinkelse er lang.
- Lav ingen andre ændringer imens. Nye kreativer, ny struktur og nyt budget i samme periode gør det umuligt at se, hvad skiftet gjorde.
Start med én eller to kampagner, der har konverteringsvolumen nok, og lad resten køre videre på omsætning, til I har set resultatet. Vi hjælper med budgivning og budgetter, hvis I vil have en ekstra vurdering af målene.
Sådan rapporterer I det til ledelsen
Ledelsen skal ikke have endnu en kolonne med et nyt forkortet begreb. De skal have svar på, om annoncekronerne tjener penge, og om de næste kroner også gør.
Tre tal rækker:
- Dækningsbidrag efter markedsføring i kroner pr. måned, hentet fra bogholderiet og ikke fra Google Ads.
- POAS pr. kanal og kampagnetype, med 1,0 som tydeligt markeret nulpunkt.
- Marginal POAS: hvad de sidste kroner i budgettet gav.
Det sidste tal er det, der oftest mangler. Regneeksempel (fiktive tal): et budget hæves fra 50.000 til 60.000 kr., og dækningsbidraget stiger fra 90.000 til 96.000 kr. Den gennemsnitlige POAS er 1,6 og ser fin ud. Men de ekstra 10.000 kr. gav kun 6.000 kr. i bidrag. Marginal POAS er 0,6, og den sidste stigning kostede 4.000 kr.
Google Ads tæller sine egne konverteringer, og summen af kanalerne ender typisk højere end virkeligheden. Brug derfor platformens POAS til at styre den enkelte kanal, og bogholderiets dækningsbidrag som facit. Vi har skrevet mere om, hvordan sådan et dashboard bygges, i artiklen om KPI-tal for webshops, og vi bygger dem som KPI-dashboards.
Hvornår POAS ikke er det rigtige mål
POAS optimerer det kortsigtede bidrag fra hver ordre. Det er det rigtige mål for en etableret webshop med spredning i marginer, men ikke altid.
- Vækstfase. Skal I vinde markedsandele eller bygge en kundebase, er en POAS under 1,0 på første ordre en bevidst investering. Styr så efter nye kunder og bidrag over 12 måneder, og sæt et loft over, hvad en ny kunde må koste.
- Lagertømning. Varer, der skal ud, har en kostpris, der allerede er betalt. Det relevante tal er ikke salgspris minus kostpris, men hvad I ellers kunne få for varen, fx via outlet eller opkøber. Sender I den almindelige profitværdi, byder algoritmen for lavt på præcis de varer, I vil af med. Læg dem i en separat kampagne med eget mål.
- Få produkter eller ens marginer. Har alle varer stort set samme dækningsgrad, er POAS bare ROAS ganget med en konstant. Så får I samme effekt ved at sætte tROAS ud fra break-even og spare implementeringen.
- Lav konverteringsvolumen. Har en kampagne kun få køb om måneden, er der ikke data nok til, at forskellen på værdierne kan læres. Saml kampagnerne, før I differentierer på værdi.
- Kostpriser I ikke stoler på. POAS er aldrig bedre end kostpriserne bag. Er de forældede eller gættet, så ryd op i dem først.
Kilder
- Google Ads Help: About conversions with cart data
- Google Ads Help: Conversions with cart data parameters
- Google Ads Help: Provide cost of goods sold (COGS) feed attribute to report on profit margins
- Merchant Center Help: Cost of goods sold (cost_of_goods_sold)
- Google Ads Help: Google Marketing Live 2024, roundup of announcements
- Google Ads Help: Top tips to optimize for the holiday season and beyond with Google AI
- Merchant Center Help: Custom label attributes
- Google Ads Help: About conversion value rules
- Google Ads Help: About conversion adjustments
- Google Ads Help: About customer lifecycle goals
- Google Ads Help: Changes to target-based bid strategies
- Google Tag Manager: An introduction to server-side tagging
Status på Googles funktioner er tjekket 1. oktober 2026. Profitmålet har været i beta længe, så tjek kilderne og jeres egen konto, før I planlægger efter det.
Relaterede artikler om Paid Ads
Læs også
01 Kritisk sikkerhedshul i PHP: opdatér til 8.4.27, 8.3.36, 8.2.35 eller 8.5.12 nu 02 PrestaShop og det kritiske PHP-hul: mange shops kører på en PHP uden rettelse 03 Facebook hacket: hvad gør jeg med virksomhedens side og Instagram?
