Blog
Kontakt os

Hvad er en custom code action i HubSpot?

En custom code action er et trin i et HubSpot-workflow, hvor du selv skriver koden. Den ligger i handlingspanelet side om side med de færdige trin som Sæt property og Send intern e-mail, men i stedet for at udfylde felter skriver du JavaScript eller Python, som kører på HubSpots egen infrastruktur. Adgangen kræver Data Hub Professional eller Enterprise, altså den pakke, der tidligere hed Operations Hub. Det er dét, der adskiller den fra en webhook: koden kører hos HubSpot, ikke på en server, I selv skal drifte.

En deal skifter til Closed won. Workflowet enroller den, custom code-actionen henter CVR-nummeret fra det tilknyttede company, kalder e-conomics API, opretter debitoren, hvis den ikke findes i forvejen, og returnerer debitornummeret som et output. Det næste trin i workflowet skriver nummeret tilbage på company-recorden og opretter en opgave til bogholderiet. Hele kæden skal være færdig på under 20 sekunder, for det er den tid, koden får.

For danske B2B-virksomheder er actionen typisk det, der afgør, om en integration kan bygges direkte i HubSpot eller kræver et iPaaS-værktøj ved siden af. Den erstatter små synkroniseringsjob, beregninger, som HubSpots egne properties ikke kan lave, og oprydning i data, der ellers bliver til et regneark. På denne side gennemgår vi mekanikken, syv anvendelser vi ser i praksis, og hvad det koster sammenlignet med Zapier, Make og n8n.

Læsetid 13 minOpdateret september 2026

Sådan virker custom code actions i HubSpot

Actionen findes under Automatiseringer og Workflows, i handlingspanelet i venstre side af workflow-editoren. Du kan lægge den ind i alle workflow-typer, uanset om de enroller kontakter, virksomheder, deals, tickets eller custom objects, og du kan have flere af dem i samme HubSpot workflow. Trinnet opfører sig som ethvert andet: det kører i den rækkefølge, du har placeret det, og alt efter det venter, indtil koden er færdig.

Adgangen er bundet til abonnementet og ikke til brugeren. HubSpots egen oversigt over hvilke workflow-handlinger de enkelte pakker giver adgang til nævner custom code, Send webhook og Formatér data i samme åndedrag: alle tre kræver Data Hub Professional eller Enterprise. Har I kun Marketing Hub Professional, står trinnet ikke i panelet, uanset hvor mange seats I har købt.

Sproget og køretiden. Du kan skrive JavaScript på Node eller Python, hvor Python stadig er i beta. Koden kører i en AWS Lambda-lignende sandkasse med et fast bibliotekssæt, du ikke selv kan udvide: på Node blandt andet @hubspot/api-client i version 10, axios, lodash, googleapis, mysql og redis, på Python requests, google-api-python-client, mysql-connector-python, redis og nltk. Har I brug for en pakke, der ikke står på listen, skal opgaven løses et andet sted.

Data kommer ind i koden gennem et event-objekt. Du vælger op til 50 properties fra den record, der er enrollet, og de lander i event.inputFields sammen med portalId, objectId og objectType. Vælger du ikke felterne aktivt, findes de ikke i koden, og det er en af de hyppigste årsager til, at en action pludselig arbejder på tomme værdier efter en ændring i workflowet.

Vejen ud igen går gennem outputFields. På Node kalder du callback med et objekt, på Python returnerer du en dictionary, og felterne skal defineres i UI'et med en datatype: tekst, tal, boolean, dato, datetime, enum eller telefonnummer. Værdierne kan derefter bruges i senere trin, i if/then-forgreninger og i properties. En tekstværdi må fylde 65.000 tegn, og går den over, fejler kørslen med OUTPUT_VALUES_TOO_LARGE i stedet for at blive klippet af.

Secrets. API-nøgler og tokens hører ikke hjemme i koden. HubSpot har en secrets-funktion, hvor værdierne gemmes på kontoen og eksponeres som miljøvariabler i kørslen, men den samlede længde af alle secrets i en enkelt action må ikke overstige 1.000 tegn. Det lyder rigeligt, indtil I skal bruge et længere JWT eller et certifikat, og så skal nøglen hentes fra et eksternt sted i stedet.

De to hårde grænser er tid og hukommelse. Koden har 20 sekunder og 128 MB, og begge dele er absolutte. Tyve sekunder rækker fint til ét API-kald med normal svartid, men tre kald i træk mod et system, der svarer på fire til seks sekunder, ligger farligt tæt på kanten. Løsningen er som regel at køre kaldene parallelt frem for sekventielt, eller at dele arbejdet op i to actions med et trin imellem. HubSpots dokumentation for custom code actions lister grænserne, biblioteksversionerne og fejlkoderne i deres helhed.

Actionen er statsløs. Der er ingen hukommelse mellem to kørsler, ingen fælles variabel og ingen filer, der overlever. Skal koden vide, hvad der skete sidste gang recorden blev enrollet, skal den viden ligge et sted, den kan læse: en property på recorden, en HubDB-tabel eller et eksternt system. Vi har set flere opsætninger, hvor en tæller blev holdt i en variabel i koden og derfor stod på 1 hver eneste gang.

Fejl og genforsøg. Kaster koden en fejl, markeres kørslen som fejlet, og HubSpot forsøger automatisk igen ved rate limiting, 429 og 5XX. Genforsøgene fortsætter i op til tre dage, første gang efter cirka et minut og derefter med voksende mellemrum op til otte timer. Det virker kun, hvis fejlen faktisk bliver kastet. En catch-blok, der logger og går videre, fortæller HubSpot, at alt gik godt, og så bliver der aldrig prøvet igen.

Logningen er bedre, end folk regner med. Under handlingens logfane kan I se hver enkelt kørsel med varighed, forbrugt hukommelse og det, koden har skrevet ud undervejs. Er en action begyndt at fejle efter en periode uden ændringer, er svaret næsten altid enten et eksternt API, der er blevet langsommere, eller en enrollment-volumen, der er vokset. Begge dele kan aflæses direkte i loggen, før nogen begynder at gætte.

Vi bygger custom code actions for danske B2B-virksomheder og vedligeholder dem bagefter, så koden ikke bliver til en sort boks, der kun én person tør røre. Typisk starter vi med at gennemgå de workflows, I har i drift, og vurdere, hvad der kan klares med standardhandlinger, hvad der kræver kode, og om Data Hub Professional overhovedet er den rigtige investering hos jer. Skriv til os, hvis I vil have regnestykket stillet op på jeres egen opsætning.

Hvad danske B2B-teams bruger custom code actions til

Anvendelserne falder i to grupper: opgaver, hvor HubSpot mangler en beregning, og opgaver, hvor data skal ud af eller ind i et andet system. Nedenfor er syv, vi møder oftest hos danske virksomheder, med den opsætning, der skal til.

Oprettelse af debitorer i e-conomic eller Business Central
Actionen kalder økonomisystemets API, når en deal lukkes, og skriver debitornummeret tilbage på virksomheden. Den sættes op med CVR-nummer og virksomhedsnavn som input og debitornummer som output. En rådgivningsvirksomhed med 40 lukkede aftaler om måneden sparer med den opsætning et manuelt opslag pr. aftale og undgår dubletter, fordi koden slår op på CVR, før den opretter. Vi har beskrevet de større koblinger på siden om HubSpot-integrationer til e-conomic og Business Central.

Beregninger HubSpots properties ikke kan lave
Calculation properties kan lægge sammen og gange, men ikke meget mere. En custom code action kan regne arbejdsdage mellem to datoer uden weekender og helligdage, omregne en ordre i euro til kroner med dagens kurs fra et eksternt endpoint eller lave en vægtet score på tværs af associerede records. Et softwarehus bruger den til at beregne restløbetid på abonnementer, fordi tallet skal tage højde for opsigelsesvarsel.

Normalisering af CVR-numre og telefonnumre
Data fra formularer, importer og visitkort ser sjældent ens ud. Koden strømliner CVR til otte cifre uden mellemrum og telefonnumre til +45-format, inden de skrives tilbage på recorden. Det lyder som en detalje, men det er forskellen på, at en dubletregel virker og ikke virker, og på om en liste med 12.000 kontakter kan bruges til et SMS-flow.

Berigelse fra CVR-registret
Ved oprettelse af en ny virksomhed slår actionen CVR-nummeret op mod Virks API eller en kommerciel udbyder og udfylder branchekode, antal ansatte og adresse. En B2B-virksomhed, der sælger til produktion, bruger branchekoden til at sætte lifecycle stage automatisk, så sælgerne ikke bruger tid på virksomheder uden for målgruppen.

Fordeling af leads efter geografi eller kapacitet
HubSpots indbyggede rotation fordeler jævnt, men ikke intelligent. Koden læser postnummeret, slår det op mod en distriktstabel og sætter ejeren, eventuelt med hensyn til, hvor mange åbne opgaver den enkelte sælger har i forvejen. Det er en af de hyppigste grunde til, at en virksomhed med fem sælgere i tre regioner overhovedet køber Data Hub Professional.

Sammensatte notifikationer til Slack eller Teams
Den indbyggede Slack-integration sender en besked med faste felter. Skal beskeden indeholde de tre seneste aktiviteter, summen af åbne deals på virksomheden og et link til den rigtige pipeline, skal indholdet bygges i kode først. Salgschefer får så én besked, de kan handle på, i stedet for tre notifikationer, de skal sammenstykke selv.

Oprettelse af flere associerede records på én gang
Når en aftale lukkes, skal der måske oprettes fem tickets til onboarding, hver med sin ejer og forfaldsdato. Standardhandlingen opretter én record ad gangen, mens et kald til CRM-API'et fra koden opretter alle fem og sætter associationerne i samme kørsel. Et konsulenthus bruger det til at rulle en fast onboardingplan ud, hver gang en ny kunde skriver under.

Fællesnævneren er, at actionen tager det sidste stykke, standardhandlingerne ikke rækker til. Så snart en opgave kræver en kø, tilstand mellem kørsler eller mere end tyve sekunder, hører den hjemme et andet sted.

Alternativer, priser og begrænsninger

De fleste af de opgaver, en custom code action løser, kan også løses uden for HubSpot. Pris og vedligeholdelse afgør, hvor de hører hjemme. Her er de fem reelle alternativer med priser, og derefter hvad HubSpot-vejen koster og kræver.

Zapier
Det mest udbredte integrationsværktøj, drevet af Zapier Inc. Styrken er antallet af færdige forbindelser, og at ikke-udviklere kan bygge det meste selv. Code by Zapier giver JavaScript- og Python-trin, men med kortere køretid end HubSpot: 30 sekunder på Professional og op til to minutter på Enterprise. Pr. september 2026 koster Zapiers abonnementer fra 19,99 USD om måneden på Professional, mens gratisplanen er begrænset til 100 opgaver om måneden og hverken har webhooks eller kodetrin. Ulempen er prismodellen: den tæller opgaver, og et travlt workflow bliver dyrt hurtigt.

Make
Tidligere Integromat, i dag ejet af Celonis. Make bygger scenarier visuelt med forgreninger, iteratorer og fejlhåndtering, som er kraftigere end HubSpots workflow-editor. Make Code App kører JavaScript og Python og kræver mindst Core-planen. Pr. september 2026 ligger Makes planer på 12 USD om måneden for Core med 10.000 credits, 21 USD for Pro og 38 USD for Teams, og gratisplanen giver 1.000 credits og to aktive scenarier. For en virksomhed, der kun mangler et par integrationer, er det en markant billigere indgang end Data Hub Professional.

n8n
Open source og kan hostes hos jer selv, hvilket er den vigtigste forskel i en EU-sammenhæng. Code-noden med JavaScript og Python er med på alle planer. Pr. september 2026 starter n8ns cloud-abonnementer ved årlig betaling på 20 EUR om måneden for Starter med 2.500 kørsler, 50 EUR for Pro med 10.000 kørsler og 667 EUR for Business med 40.000, mens Community Edition kan drives gratis på egen server. Prisen for den frihed er, at nogen skal drifte, opdatere og overvåge instansen.

Webhook-action og jeres egen backend
HubSpot kan sende en webhook til jeres eget endpoint, og så er der ingen grænse på tyve sekunder eller 128 MB. Til gengæld kræver den samme Data Hub Professional som custom code, så den sparer ikke licensen, og I skal selv stå for hosting, logning, autentificering og genforsøg. Modellen giver mening, når I allerede har en backend og et driftsteam, og sjældent ellers.

Formatér data-actionen og beregnede properties
Det oversete alternativ er at lade være med at kode. Formatér data kan trimme tekst, splitte navne, konvertere datoer og regne differencer uden en linje kode, og calculation properties dækker sammenlægninger og simple formler. En del af det, folk skriver kode til, kan klares her, og det kræver ingen vedligeholdelse, når den udvikler, der skrev koden, er videre.

Hvor vinder HubSpot-vejen så. Den vinder, når data allerede er i HubSpot, og opgaven skal køre som en del af et workflow, der i forvejen har enrollment-logik, forgreninger og ejerskab. Ingen data forlader platformen undervejs, der kommer ikke en leverandør mere på listen over databehandlere, og genforsøgene sker automatisk. Den taber på udviklermodenheden. Der er ingen versionsstyring, ingen mulighed for at teste lokalt mod produktionsdata, intet staging-miljø og ingen samlet oversigt over al kode på kontoen. Skal fem personer vedligeholde tredive actions, bliver det uoverskueligt, og der er Make eller n8n bedre værktøjer.

Prisen er den anden halvdel af regnestykket. Data Hub findes i fire niveauer, og pr. september 2026 oplyser HubSpots prisside for Data Hub 0 USD for gratisversionen til op til to brugere, 7 USD pr. sæde om måneden for Starter og 720 USD om måneden for Professional, begge ved årlig betaling, og 2.000 USD om måneden for Enterprise. Programmerbar automatisering, altså custom code actions, følger først med fra Professional. Springet fra Starter til Professional er dermed det, der reelt skal godkendes, og det er en beslutning på niveau med at ansætte en deltidsressource.

Sædemodellen skal regnes med. Professional inkluderer ét Core Seat, og yderligere sæder starter ifølge samme prisside på 45 USD om måneden, mens Enterprise inkluderer ét sæde med ekstra sæder fra 75 USD. Oveni følger HubSpot Credits, 5.000 med Professional og 10.000 med Enterprise, som bruges på AI-funktioner og beriget data. Selve kørslen af en custom code action bruger ikke credits, men det gør flere af de funktioner, folk sætter op i samme ombæring.

De tekniske grænser er værd at holde op mod opgaven, før pengene bruges. Tyve sekunder, 128 MB, højst 50 properties ind i koden, 65.000 tegn ud i et tekstfelt og 1.000 tegn i alt til secrets. Skal I flytte 40.000 rækker fra et ERP-system en gang om ugen, er ingen af de tal store nok, og opgaven hører hjemme i en integrationsplatform eller et batchjob. Skal I slå et CVR-nummer op og skrive tre felter tilbage, er der luft nok.

Der er også et arbejde, der ikke står på prislisten. Nogen skal skrive koden, og nogen skal kunne læse den igen om et år. Fordi der hverken er versionsstyring eller testmiljø, bør koden ligge i jeres eget Git-repository ved siden af, og hver ændring bør prøves af på en testrecord, før den slippes løs på et workflow med aktive enrollments. Vi anbefaler også at logge en identifikator i hver kørsel, så en fejl kan spores tilbage til den konkrete record uden at gætte.

Dansk og europæisk kontekst hænger sammen med, hvor koden kører. HubSpot driver ifølge deres dokumentation om cloud-infrastruktur og datahosting fem regioner på AWS, heriblandt et EU-datacenter i Tyskland, og kontoen tildeles region ud fra IP-adressen ved oprettelsen. Betalende konti kan bede om at blive flyttet. Custom code-actionen kører i HubSpots infrastruktur, så data bliver i den region, indtil koden selv sender dem videre. Kalder I e-conomic, et CVR-opslag eller en amerikansk tjeneste fra koden, er det den overførsel, der skal stå i fortegnelsen og i databehandleraftalen, og det er også dér, GDPR-vurderingen hører hjemme.

Endelig: hvornår kan det ikke betale sig. Har I under 50 medarbejdere, ingen udvikler i huset og to integrationer, I gerne vil have til at virke, er 720 USD om måneden for Data Hub Professional svært at forsvare, når Make løser det samme for en tyvendedel. Har I derimod HubSpot som eneste system, mange workflows i drift og en løbende strøm af små tilpasninger, holder actionen data samlet ét sted og sparer jer for en integrationsplatform, der skal driftes ved siden af. Er I i tvivl om, hvilken vej der er billigst i jeres opsætning, kan I se, hvordan vi arbejder med HubSpot, og tage regnestykket med os.

Ofte stillede spørgsmål om custom code actions

Hvad er forskellen på en custom code action og en webhook i HubSpot?

En custom code action kører koden på HubSpots infrastruktur, mens en webhook sender data til jeres eget endpoint og venter på svar. Custom code er hurtigst at komme i gang med, men er bundet af 20 sekunder og 128 MB. En webhook har ingen af de grænser, men kræver, at I selv drifter serveren. Begge dele kræver Data Hub Professional eller Enterprise, så valget handler om drift og ikke om licens.

Hvilket abonnement kræver custom code actions?

Data Hub Professional eller Enterprise, den pakke, der tidligere hed Operations Hub. Marketing Hub, Sales Hub og Service Hub giver ikke adgang, uanset niveau. Det samme gælder handlingerne Send webhook og Formatér data, som ligger bag samme krav. Er trinnet ikke i handlingspanelet, mangler abonnementet og ikke rettighederne.

Hvad koster det at få adgang til custom code actions?

Pr. september 2026 koster Data Hub Professional 720 USD om måneden ved årlig betaling med ét Core Seat inkluderet, og Enterprise koster 2.000 USD om måneden. Ekstra sæder starter på henholdsvis 45 og 75 USD om måneden. Data Hub Starter til 7 USD pr. sæde giver ikke adgang til programmerbar automatisering. Priserne er hentet fra HubSpots egen prisside og ændrer sig løbende.

Kan custom code actions erstatte Zapier eller Make?

Til opgaver, der starter og slutter i HubSpot, ofte ja. Har I mange integrationer mellem systemer, hvor HubSpot bare er ét af dem, er svaret typisk nej. Make koster 12 USD om måneden for Core-planen pr. september 2026 mod 720 USD for Data Hub Professional, så prisforskellen alene afgør ofte sagen. Den anden vej vejer det tungt, at custom code holder data inde i HubSpot uden en ekstra databehandler.

Hvor kører koden, og hvad betyder det for GDPR?

Koden kører i HubSpots eget miljø på AWS, i den region, kontoen er tildelt. HubSpot har fem regioner, heriblandt et EU-datacenter i Tyskland, og betalende konti kan bede om at blive flyttet dertil. Data forlader ikke regionen, før koden selv kalder et eksternt API. Det er netop dét kald, der skal stå i jeres fortegnelse over behandlingsaktiviteter.

Hvorfor fejler min custom code action med timeout?

Koden har 20 sekunder i alt, og de bliver brugt af eksterne API-kald i langt de fleste tilfælde. Tre kald i træk mod et system med fem sekunders svartid rammer loftet, selvom hvert enkelt kald er hurtigt nok. Kør kaldene parallelt, eller del arbejdet op i to actions med et workflow-trin imellem. I handlingens logfane kan I se den faktiske varighed for hver kørsel.

Kan jeg bruge Python i custom code actions?

Ja, men Python er stadig i beta, mens JavaScript på Node er den modne mulighed. Python-miljøet har blandt andet requests, google-api-python-client, mysql-connector-python, redis og nltk til rådighed, og HubSpots API-klient i version 8. Bibliotekslisten kan ikke udvides, så mangler I en pakke, skal opgaven løses uden for HubSpot.