Hvad er et custom module i HubSpot?
Et custom module er en genbrugelig indholdskomponent, du selv bygger i HubSpots CMS, og som redaktører derefter kan trække ind på sider uden at røre kode. Modulet består af en feltdefinition i fields.json og en skabelon i module.html med HubL, plus valgfri CSS og JavaScript. Forskellen på et custom module og HubSpots egne standardmoduler er, at du bestemmer præcis hvilke felter redaktøren får, og hvilken HTML de felter bliver til.
Et eksempel: I vil have en referenceblok, hvor marketing selv kan skifte kundelogo, citat, navn, titel og et resultattal, men hvor typografi, spacing og responsiv opførsel ligger fast. I stedet for at lade redaktøren bygge det med en rich text-editor hver gang, bygger I ét modul med fem felter. Redaktøren udfylder felterne, og outputtet ser ens ud på alle 40 sider, hvor blokken bruges.
For danske B2B-virksomheder er det her, forskellen mellem en hjemmeside, der kan vedligeholdes internt, og en hjemmeside, der kræver et bureau hver gang der skal skiftes et komma, bliver afgjort. Vi gennemgår mekanikken bag moduler, de anvendelser vi oftest bygger for danske teams, og hvad det koster sammenlignet med WordPress, Umbraco og Webflow.
Sådan virker custom modules i HubSpot
Et modul er i praksis en lille mappe med fem filer. HubSpots udviklerdokumentation for moduler beskriver dem som fields.json med modulets felter, meta.json med metadata om modulet, module.html med HTML og HubL, module.css med styling og module.js med JavaScript. Det er fields.json, der gør arbejdet. Den fil bestemmer, hvilken redigeringsoplevelse redaktøren møder inde i sideeditoren.
Feltværdierne når ind i skabelonen som HubL-tokens under objektet module. Har du defineret et tekstfelt med navnet customer_name, skriver du module.customer_name i module.html. Et billedfelt giver dig flere underværdier, så du kan hente module.profile_pic.src til src-attributten og altText til alt-teksten. Feltyperne dækker tekst, rich text, billede, link, farve, tal, boolean, valg, dato og en række CRM-relaterede typer, og hvert felt kan få en standardværdi, så modulet ser rigtigt ud allerede første gang det trækkes ind.
Content types afgør, hvor modulet må bruges. Når du opretter modulet, vælger du om det skal være tilgængeligt på sider, landingssider, blogindlæg, blogoversigter eller e-mails. Ifølge HubSpots vejledning til at oprette og redigere moduler kræver e-mailmoduler et Marketing Hub Professional- eller Enterprise-abonnement, og e-mailmoduler indeholder hverken module.css eller module.js, fordi e-mailklienter ikke kan håndtere dem. Vælger du for få content types fra start, kan du udvide bagefter, men et modul, der er bygget med sidelayout i tankerne, opfører sig sjældent pænt i en e-mail.
Ved oprettelsen tager du også stilling til, om modulet skal være lokalt eller globalt. Et lokalt modul har sine egne feltværdier på hver eneste side, det ligger på. Et globalt modul deler indhold på tværs: retter du teksten ét sted, ændrer den sig alle steder. Det er rigtigt til en kontaktblok med adresse og telefonnummer i footeren og forkert til en overskriftsblok, som skal sige noget forskelligt på hver side. Vi ser oftere fejlen den vej rundt end omvendt.
Der er to veje ind i selve byggeriet. I Design Manager går du ind under Content, vælger Design Manager, klikker File og New file, vælger Module og sætter content types, scope og filnavn. Den vej kræver ingen lokal opsætning og er fin til små justeringer. Arbejder I med versionsstyring, bruger I i stedet HubSpot CLI, hvor kommandoen hs create module opretter modulets filer lokalt, så de kan ligge i jeres eget Git-repository sammen med resten af temaet. Vores erfaring er, at alt over to udviklere og ti moduler bør ligge i CLI-sporet.
CSS og JavaScript indlæses én gang pr. side. Ligger det samme modul fem steder på en side, hentes module.css og module.js stadig kun én gang, og det er en af grundene til, at moduler skalerer bedre end indsat kode i rich text-felter. HubSpots reference for modulfiler beskriver, at filerne som udgangspunkt indlæses synkront, at det kan ændres med css_render_options og js_render_options i meta.json, og at require_js som standard placerer scriptet i footeren. Bemærk samtidig, at module.css kun understøtter en meget begrænset delmængde af HubL, og at module.js slet ikke understøtter HubL. Skal en feltværdi styre JavaScript, sender du den typisk med som data-attribut i HTML'en.
Felter kan grupperes, så redigeringspanelet ikke bliver en endeløs kolonne. HubSpot tillader gruppering af op til fire felter ad gangen, og grupper kan gentages, hvilket er det, der gør det muligt at bygge en blok med et vilkårligt antal punkter eller kort uden at definere tyve felter på forhånd. Det lyder som en detalje. I praksis er det forskellen på et modul, redaktøren gider bruge, og et modul, der bliver omgået.
Siden 2024 kan moduler også bygges i React i stedet for HubL. HubSpots dokumentation for CMS React beskriver server-renderede React-komponenter, der indsættes i den HubL-genererede HTML, med TypeScript-definitioner og en islands-model, så kun de interaktive dele sender JavaScript til browseren. Feltyperne er de samme som i HubL-moduler. Begrænsningerne er til gengæld reelle: der er ingen online kodeeditor i Design Manager for React-moduler, du kan ikke importere JavaScript-moduler ind i partials, og enkelte HubL-tags og filtre har ingen tilsvarende JavaScript-komponent. I HubSpots udvikleropdateringer fra 29. juni 2026 blev CMS React-moduler desuden åbnet for quote-skabeloner, så linjeelementer, betalingsbetingelser og vilkår i et tilbud kan bygges som kode.
Det, der oftest går galt, er ikke koden. Det er felterne. Et modul med 30 felter og ingen gruppering bliver ikke brugt. Et modul, hvor halvdelen af teksten er hardcodet i module.html, ender som en supportsag hver gang marketing vil ændre et ord. Og et modul, der kalder HubDB eller løber gennem store lister, kan ramme HubSpots HubL-grænser, som siden 10. juni 2024 blev håndhævet for nye konti og fra 4. november 2024 også for eksisterende konti, der lå over grænserne. Byg hellere to enkle moduler end ét, der kan alt.
Modulet lever ikke alene. Det trækker typisk styling fra temaets indstillinger, henter data fra HubDB, når indholdet er tabelbaseret, og arver typografi og farver fra det theme, det ligger i. Jo mere af den slags I lader temaet styre, jo færre felter behøver modulet selv.
Vi bygger og dokumenterer custom modules som en del af vores HubSpot-implementeringer, og vi rydder også op, når et site har samlet 40 moduler, hvoraf de 30 bruges ét sted. Skal I have en vurdering af, hvad jeres nuværende opsætning koster i vedligehold, og hvilke moduler der reelt er brug for, så tag fat i os. Vi kigger på temaet, modulerne og jeres tier og siger ærligt, hvis standardmoduler kan klare det.
Hvad danske B2B-teams bruger custom modules til
De fleste af de moduler, vi bygger, findes ikke, fordi nogen ville have en ny designidé. De findes, fordi en bestemt type indhold gentager sig 20 eller 200 gange, og fordi det er dyrt at lade et menneske sætte den slags op i hånden hver gang.
Referencer og cases med tal
Et modul med felter til logo, citat, kontaktperson, branche og et resultattal. Redaktøren udfylder fem felter, og blokken ser ens ud overalt. En dansk maskinproducent med 30 referencesider slipper for at genopfinde layoutet hver gang salg leverer en ny case, og fordi feltet til resultattallet er obligatorisk, kommer der faktisk et tal med.
Produkt- og løsningskort
En gentagelig feltgruppe med ikon, overskrift, kort tekst og link, så redaktøren selv bestemmer, om der skal være tre eller syv kort i rækken. En grossist med skiftende sortiment kan opdatere forsiden uden en udvikler, og gridet knækker ikke, fordi antallet er styret af modulet og ikke af en manuelt indsat tabel.
HubDB-drevne oversigter
Modulet henter rækker fra en HubDB-tabel og renderer dem som kort eller liste, ofte med filtrering. Det er sådan integrationsoversigter, medarbejderlister, forhandlerkort og ordbøger bliver bygget. Et dansk softwarehus med 120 integrationer vedligeholder dem i en tabel frem for på 120 sider, og hver række kan samtidig blive til sin egen side.
Beregnere og konfiguratorer
Feltværdier sendes til module.js som data-attributter, og require_js indlæser logikken i footeren. Et rådgivningshus kan lægge en prisberegner på siden, hvor satserne ligger i modulets felter og ikke i koden, så økonomi selv kan rette dem, når priserne stiger ved årsskiftet.
CRM-data direkte på siden
Moduler kan læse properties fra CRM'et, og kombineret med dynamiske sider betyder det, at indhold kan variere efter den besøgende eller efter det objekt, siden er bygget over. En B2B-leverandør med kundelogin kan vise den rigtige kontaktperson og de rigtige priser uden at bygge en separat portal.
Formular- og CTA-blokke med ens måling
Et modul, der pakker en formular eller en CTA ind i en fast ramme med ensartet UTM-håndtering og tracking. Når alle sider bruger samme blok, er kilderapporteringen til at stole på, hvilket ofte er den egentlige gevinst for marketingchefen.
E-mailmoduler til nyhedsbrevet
Samme princip i indbakken, men uden CSS- og JavaScript-filer, og det kræver Marketing Hub Professional eller Enterprise. En dansk virksomhed med et månedligt kundenyhedsbrev får en fast produktblok, som marketing kan udfylde på ti minutter i stedet for at bygge tabellayout forfra.
Quote-moduler til tilbud
Efter åbningen for CMS React i quote-skabeloner i juni 2026 kan selve tilbudsdokumentet få egne kodede sektioner. For virksomheder med komplekse prisstrukturer betyder det, at et tilbud kan vise abonnement, forbrug og engangsydelser i hver sin sektion i stedet for som én lang linjeliste.
Fællesnævneren er, at modulet flytter en beslutning fra kode til felt. Hver gang I gør det, bliver en opgave, der krævede en udvikler, til en opgave, marketing kan løse selv. Det er også derfor, listen over moduler bør holdes kort: hvert modul skal vedligeholdes, dokumenteres og forklares til den næste redaktør.
Alternativer, priser og begrænsninger
Spørgsmålet om alternativer dukker sjældent op som "skal vi bruge custom modules". Det dukker op som "skal hjemmesiden overhovedet ligge i HubSpot". Derfor er sammenligningen her mellem platforme og ikke mellem byggeteknikker.
WordPress med Advanced Custom Fields
Den nærmeste parallel. ACF giver redaktøren feltbaserede blokke på samme måde som fields.json, og økosystemet er enormt. ACF Pros egen prisside oplyser pr. september 2026 licenser på 49 USD om året til ét site, 149 USD til ti sites og 249 USD til ubegrænset antal. Hertil kommer hosting, opdateringer, sikkerhed og typisk et par plugins mere. Styrken er frihed og pris. Svagheden er, at CRM-data ikke er i huset: skal siden kende kontaktens lifecycle stage, skal det integreres.
Umbraco Cloud
Dansk udviklet .NET-CMS med stærkt fodfæste i danske virksomheder og offentlige organisationer, og et oplagt valg, hvis I i forvejen har .NET-kompetencer. Umbracos prisside for Umbraco Cloud angiver pr. september 2026 Starter til 45 EUR om måneden, Standard til 280 EUR og Professional til 730 EUR, med Enterprise efter aftale. Redaktøroplevelsen kan gøres mindst lige så god som HubSpots, og datahåndteringen er tættere på hjemme. Til gengæld bygger I integrationen til marketing og salg selv.
Webflow
Visuel byggeflade, hvor komponenter og CMS-collections dækker meget af det samme behov som moduler. Webflows egen prisside viser pr. september 2026 Basic til 15 USD om måneden og Premium til 25 USD ved årlig betaling, med 20.000 CMS-elementer på Premium, mens Team ligger på 2.500 USD om måneden og en fuld arbejdsplads koster 39 USD. Designfriheden er større end i HubSpot. Formularer, e-mail og rapportering skal derimod hentes andre steder.
HubSpots egne standardmoduler
Det billigste alternativ er ofte at lade være. HubSpot leverer moduler til tekst, billede, formular, CTA, video og meget mere, og et drag and drop-område kan komme langt. Bygger I et custom module, som i praksis er et rich text-felt med en ramme om, har I betalt for vedligehold uden at få noget igen. Tommelfingerreglen: bygger I det ikke mindst fem steder, så lad være.
Hvor HubSpot vinder, er når indholdet skal kende kunden. Et modul kan læse CRM-properties, en side kan personaliseres efter lifecycle stage, og formularen skriver direkte ind i den database, salget arbejder i. Hvor HubSpot taber, er ved rene indholdssider i stor skala, ved avanceret e-commerce og ved designs, der kræver total kontrol over frontend-stakken. Skal I bygge 5.000 produktsider med komplekse filtre, er et hovedløst CMS eller en klassisk webshop-platform et bedre valg, og det siger vi også, når spørgsmålet lander hos os.
Prismæssigt hænger custom modules sammen med Content Hub. HubSpots prisside for Content Hub oplyser pr. september 2026 en gratis udgave til op til to brugere, Starter til 7 USD pr. sæde om måneden ved årlig betaling mod 20 USD ved månedlig, Professional til 450 USD om måneden med tre core seats inkluderet og Enterprise til 1.500 USD om måneden med fem. Ekstra sæder starter ved 45 USD på Professional og 75 USD på Enterprise. Priserne er i USD, og HubSpot ændrer pakketering jævnligt, så tjek tallene inden budgettet lukkes.
Selve muligheden for at bygge moduler følger med allerede fra Starter i Content Hub, og det overrasker en del. Det, der kræver højere tiers, er det, modulerne gerne vil trække på. HubDB, memberships, indholdsgodkendelser og flersproget indhold ligger på Professional og Enterprise, og serverless functions kræver Content Hub Enterprise. Skal modulet hente data fra et eksternt system serverside, er det altså den regning, der reelt skal vejes.
Sædemodellen betyder også noget for, hvem der må røre modulerne. Adgang til Design Manager kræver design tools-rettigheder, og på Professional og Enterprise koster hver ekstra core seat penge. Vi ser ofte, at tre personer har brug for at redigere indhold, mens kun én har brug for at redigere moduler. Den fordeling er værd at lave, før sæderne købes.
De hårde grænser er værd at kende på forhånd. HubSpots dokumentation for serverless functions angiver maksimalt 10 sekunders køretid pr. funktion, 600 eksekveringssekunder i alt pr. minut pr. konto, 128 MB hukommelse, 6 MB payload, 4 KB logdata, 50 secrets og højst 100 endpoints pr. konto, med svarkode 429, når loftet rammes. Dertil kommer HubLs egne grænser for loops og opslag, som HubSpot begyndte at håndhæve fra 10. juni 2024 for nye konti og fra 4. november 2024 for eksisterende. Et modul, der kalder et eksternt API ved hvert sidevisning, rammer den slags grænser før eller siden.
For danske og europæiske virksomheder er datalokation typisk det næste spørgsmål. HubSpots FAQ om cloud-infrastruktur og datahosting oplyser, at data kan hostes i EU med datacenter i Tyskland, ud over USA, Canada og Australien, og at konti med Starter, Professional eller Enterprise kan skifte datacenter. Der er dog undtagelser, hvor behandling sker uden for regionen, blandt andet ved tredjepartsintegrationer og analyser, så en databehandleraftale og en kortlægning af integrationerne hører stadig med til GDPR-arbejdet.
Sprogsiden er sjældent et problem, men den er heller ikke gratis. Redaktørfladen findes på dansk, og æ, ø og å giver ingen tekniske problemer i felter eller URL'er. Flersproget indhold, altså den funktion, der kobler en dansk og en engelsk version af samme side sammen, ligger derimod på Professional og Enterprise. Har I brug for et engelsk site ved siden af det danske, er det den linje i budgettet, der flytter sig.
Hvornår kan det så ikke betale sig? Hvis I har ti sider og ingen planer om flere, er standardmoduler og et købt tema rigeligt. Hvis I kun bruger HubSpot til e-mail og har jeres site på Umbraco eller WordPress, giver det sjældent mening at flytte alene for modulernes skyld. Og hvis ingen internt har mandat til at vedligeholde modulerne, ender de med at forfalde, uanset hvor pænt de blev bygget. Vi bygger normalt fem til femten moduler i en implementering og dokumenterer dem, så de kan overdrages. Vil du se, hvordan det hænger sammen med resten af platformen, kan du starte med vores overblik over HubSpot og de enkelte Hubs.
Relaterede begreber
Content Hub er HubSpots CMS. Se hvordan det virker, hvad Starter, Professional og Enterprise koster pr. september 2026, og hvornår Umbraco er bedre.
HubDB er HubSpots databasetabeller til dynamiske sider. Mekanik, tiers, hårde grænser, priser pr. september 2026 og alternativer.
Theme i HubSpot: sådan hænger templates, moduler og theme settings sammen, hvad Content Hub koster i 2026, og hvornår et andet CMS er bedre.
Smart content i HubSpot viser forskelligt indhold efter land, enhed, liste eller lifecycle stage. Se regler, krav, priser og danske faldgruber.
Personalization tokens henter data fra dit CRM ind i mails og sider. Se hvordan de virker, hvilke tiers der kræves, og hvad de koster.
Sådan virker sprogvarianter i HubSpot: sproggrupper, hreflang, Breeze-oversættelse, grænser pr. tier, priser og hvad danske B2B-teams bruger det til.
Quotes i HubSpot forklaret: objektet, e-signatur, godkendelser, priser pr. september 2026, dansk moms og alternativer som PandaDoc og Salesforce.
Sådan virker marketing email i HubSpot: editor, sendegrænser, marketing contacts, priser pr. august 2026, alternativer og de danske spamregler.
Ofte stillede spørgsmål om custom modules
Hvad er forskellen på et custom module og et standardmodul i HubSpot?+
Et standardmodul leveres af HubSpot med faste felter, for eksempel tekst, billede, formular eller CTA. Et custom module bygger I selv, og I bestemmer både felterne i fields.json og den HTML, felterne bliver til i module.html. Standardmoduler er hurtigere at komme i gang med, mens custom modules giver ensartet output og færre måder at gøre det forkert på. Bruger I ikke blokken mindst fem steder, er et standardmodul som regel det rigtige valg.
Hvilket tier kræver custom modules?+
Selve muligheden for at bygge moduler i Design Manager følger med fra Content Hub Starter, som pr. september 2026 koster 7 USD pr. sæde om måneden ved årlig betaling. Det, der kræver højere tiers, er de funktioner modulerne trækker på: HubDB, memberships og flersproget indhold ligger på Professional til 450 USD om måneden og Enterprise til 1.500 USD, mens serverless functions kræver Content Hub Enterprise. E-mailmoduler kræver desuden Marketing Hub Professional eller Enterprise.
Kan jeg bygge moduler i React i stedet for HubL?+
Ja. CMS React lader jer bygge server-renderede React-komponenter med samme feltyper som HubL-moduler, og med TypeScript-definitioner og en islands-model, så kun de interaktive dele sender JavaScript til browseren. Siden 29. juni 2026 kan CMS React-moduler også bruges i quote-skabeloner. Vær opmærksom på, at React-moduler ikke kan redigeres i Design Managers online editor, og at enkelte HubL-tags og filtre ikke har en tilsvarende JavaScript-komponent.
Hvad er forskellen på et lokalt og et globalt modul?+
Et lokalt modul har sine egne feltværdier på hver side, det bruges på, så samme modul kan vise forskellig tekst forskellige steder. Et globalt modul deler indhold på tværs af alle placeringer, så en rettelse slår igennem overalt. Globale moduler er rigtige til footerblokke, kontaktoplysninger og faste bannere. Valget træffes, når modulet oprettes, så tag stilling til det inden I bygger.
Kan et custom module erstatte vores WordPress-opsætning med ACF?+
Teknisk ligner de to hinanden, fordi begge giver redaktøren feltbaserede blokke. Forskellen er, hvad der ligger bagved. ACF Pro koster pr. september 2026 fra 49 USD om året, men CRM-data, formularhåndtering og rapportering skal integreres, mens et HubSpot-modul kan læse CRM-properties direkte. Har I allerede et velfungerende WordPress-site og bruger HubSpot til e-mail og CRM, er der sjældent en god forretningsgrund til at flytte alene for modulernes skyld.
Ligger vores data i EU, når vi bygger sider i HubSpot?+
HubSpot tilbyder hosting i EU med datacenter i Tyskland ud over USA, Canada og Australien, og konti med Starter, Professional eller Enterprise kan skifte datacenter. Der er dog undtagelser, hvor behandling sker uden for regionen, blandt andet ved tredjepartsintegrationer og analyser. Derfor hører en databehandleraftale og en kortlægning af, hvilke integrationer der sender data ud af EU, stadig med til GDPR-arbejdet.
Hvor mange moduler bør vi bygge?+
Vi bygger typisk mellem fem og femten moduler i en implementering. Et modul med 30 felter og ingen feltgruppering bliver som regel ikke brugt, og hvert ekstra modul er noget, nogen skal kunne forklare til den næste redaktør. HubSpot tillader gruppering af op til fire felter ad gangen, og grupper kan gentages, så et modul kan rumme et variabelt antal kort uden at have et felt for hvert. To enkle moduler slår ét, der kan alt.