SystemetRådgivningUdviklingArbejdePriser
Tilbage til guides
9 min. · CMS & INDHOLD

15 ting hvert Contentful enterprise-projekt får galt i de første 6 uger

Seks uger inde i hvert Contentful enterprise-build jeg har auditeret, mangler de samme 15 ting. Ingen af dem er spændende. Alle er blokerende. Det her er checklisten du ville ønske din sidste leverandør havde læst.

På denne side
  • Linking & navigation (de stille brydere)
  • Internationalisering (antagelsen der altid brister)
  • SEO & redirects (de organiske trafik-dræbere)
  • Editor-oplevelse & cache-disciplin (tillids-dræberne)
  • Type-sikkerhed, sikkerhed & DX (den lange-hale-gæld)
Opdateret 2026-05
TL;DR
  • Vanilla Contentful giver dig et CDN og en content-model — ikke en Contentful enterprise starter. De 15 produktions-fundamentstykker nedenfor er det, der æder det første kvartal af hvert build.
  • Blast-radiussen er forudsigelig: linking og slug-refactors, locale-fallbacks, redirects, schema-drevne forms, type-sikker content-adgang, page-hierarki, Live Preview, ISR cache-invalidering, hreflang, llms.txt, CSP.
  • Hvert hul har en 1–3 dages fix isoleret. Stablet er det 5–6 måneders senior-engineer-arbejde — og det lander altid i det samme seks-ugers vindue.
  • Hvis du samler et stallet Contentful-projekt op, kør checklisten før du skriver recovery-planen. Hvis du scoper et nyt, kør den før du underskriver SOW'en.
  • Hvert hul nedenfor er løst out of the box i vores Contentful enterprise starter til Next.js 16. Starteren er den produktiserede version af checklisten — samme 15 problemer, samme 15 løsninger, leveret som kildekode til dit repo.

Sådan bruger du checklisten

Hvis du er seks uger inde i et Contentful + Next.js-build og tre eller flere af disse er åbne, ligger projektet på den standardiserede 5–6 måneders recovery-kurve. Spørgsmålene er bevidst konkrete — hvert ja/nej mapper til en målbar produktionsadfærd, ikke en mavefornemmelse.

Linking & navigation (de stille brydere)

Tre af de dyreste bugs i hvert Contentful enterprise-build er slet ikke bugs — det er manglende primitiver. De ligner content-problemer i de første seks uger, så dukker de op som 404-storme i uge syv.

  • 1. Ingen dynamiske link-referencer. Redaktører indsætter hardkodede URL'er i rich text og CTA'er. Refactor en slug, og hvert link til den dør stille. Produktionssvar: en Link-content-type der refererer target-entryen, ikke en streng. Løst i starteren med en typet linkReference-resolver på tværs af hver block.
  • 2. Intet page-hierarki. Sider lever i en flad liste. Ingen parent/child-relation, ingen breadcrumb-udledning, ingen måde at spørge "hvad ligger under /products?". Produktionssvar: et selvrefererende parent-felt på page-content-typen med dybde-bundet traversering. Løst i starteren via et enkelt getPageTree(locale)-kald wired ind i nav og breadcrumbs.
  • 3. Ingen CMS-styret navigation. Header, footer, mega-menu — alt hardkodet ind i komponenter. Marketing vil tilføje et top-level-item; engineering shipper en release. Produktionssvar: navigationMenu / navigationGroup / navigationItem-content-types med valgfrit mega-menu-medie. Løst i starteren — omstrukturér hele site-navigationen fra Contentful, ingen deploy.

Internationalisering (antagelsen der altid brister)

Hvert Contentful-projekt starter med ét locale og "vi tilføjer flere senere". Senere er altid et seks-ugers sprint, fordi fundamentet skal lande før noget reelt content kan oversættes.

  • 4. Ingen locale-fallback-kæde. En dansk entry uden dansk tekst returnerer null i stedet for at falde tilbage til engelsk. Siden renderer tom. Produktionssvar: en fallback-kæde bagt ind i hver CMS-query, hvor fallbacken erklæres pr. locale i kode, ikke pr. felt af redaktører. Løst i starteren — hvert cmsFetch påfører kæden transparent.
  • 5. Ingen lokaliserede slugs. URL'er forbliver engelske på hvert marked. SEO lider i Danmark, Frankrig og Tyskland — exact-match lokal-sproglige slugs er et målbart ranking-signal. Produktionssvar: lokaliserede parent- og child-slug-felter, joinet pr. locale ved build. Løst i starteren med en lokaliseret URL-builder delt af sitemap, hreflang og language-switcheren.
  • 6. Ingen CMS-styrede ordbøger. UI-strenge ("Read more", "Submit", "Cookies") lever i JSON-filer. Marketing vil A/B-teste "Få et tilbud" vs "Bed om priser"; engineering shipper en release. Produktionssvar: en localizedDictionary-content-type med {token}-interpolation. Løst i starteren — hver UI-streng er redigerbar i Contentful.

SEO & redirects (de organiske trafik-dræbere)

SEO-checklisten er ikke spændende. Den er også ikke til forhandling. Hvert hul her koster målbar organisk trafik, og de fleste er usynlige indtil en Search Console-regressionsrapport lander seks måneder inde.

  • 7. Ingen redirect-motor. Hver URL-ændring er en engineering-opgave. Marketing venter et sprint på at trække en kampagne-URL tilbage; SEO bløder imens. Produktionssvar: en redirect-content-type med regex/wildcard-support, evalueret på proxy-edge. Løst i starteren — redaktører shipper et redirect på 30 sekunder, ingen deploy.
  • 8. Ingen auto slug-change-redirects. Redaktør omdøber en side; den gamle URL dør stille. Produktionssvar: en webhook på entry-update der differ slug-feltet og skriver et redirect-entry automatisk. Løst i starteren — slug-refactors er sikre som default.
  • 9. Ingen JSON-LD, hreflang eller llms.txt. Rich results bliver sprunget over, locale-alternatives bliver ignoreret, AI-crawlere får intet. Produktionssvar: per-page JSON-LD, locale-aware generateMetadata med hreflang, og en /llms.txt-route med en AI-crawler-policy. Løst i starteren — discoverability på tværs af Google, Bing og LLM-crawlere kommer wired på forhånd.

Editor-oplevelse & cache-disciplin (tillids-dræberne)

Redaktører læser ikke din README. De klikker rundt i tredive sekunder, rammer noget der overrasker dem, og beslutter at CMS'et er i stykker. Tre ting bryder konsekvent de tredive sekunder.

  • 10. Ingen Live Preview. Redaktører gemmer, skifter fane, hard-refresher, bander. Produktionssvar: Contentful Live Preview wired end-to-end med preview-mode-token, draft-fetch og inspector-overlays på hver block. Løst i starteren — preview er på dag ét, ikke måned fire.
  • 11. Ingen tag-baseret ISR-invalidering. En content-ændring gør enten ingenting eller atombomber hele CDN'et. Produktionssvar: revalidateTag på et per-entry-type-tag, dispatchet fra en Contentful-webhook. Løst i starteren — webhooken bliver registreret automatisk ved pnpm setup.
  • 12. Ingen schema-drevne forms. Forms er hardkodet ind i komponenter. Marketing-kampagner venter på engineering. Produktionssvar: en form-content-type med et typet field-schema og en enkelt renderer. Løst i starteren — redaktører shipper en ny lead-capture-form på en time, ikke et sprint.

Type-sikkerhed, sikkerhed & DX (den lange-hale-gæld)

De her tre brister ikke i uge seks. De brister i måned ni, når en junior-udvikler shipper en regression ingen fanger fordi kontrakten var implicit. På det tidspunkt er overfladen for stor til at retrofitte billigt.

  • 13. Ingen type-sikre content-modeller. Strengt-typet CMS-adgang, runtime-fejl på felt-omdøbninger, nul compile-time-sikkerhed. Produktionssvar: graphql-codegen mod live CDA-skemaet, regenereret ved hvert pnpm setup-kør, med en drift-detektor der fejler CI når typer og CMS divergerer. Løst i starteren.
  • 14. Ingen hærdet CSP. En default Next.js-CSP tillader alt; security review skubber den til bunden af backloggen. Produktionssvar: en striks Content-Security-Policy-header med nonces, låst ned til Contentful, analytics-provideren og form-endpoints. Løst i starteren — passerer Mozilla Observatory A+ på dag ét.
  • 15. Ingen dokumenteret migrationssti. CMS-skemaet drifter. Seks måneder inde kan ingen spinde et nyt environment op der matcher production. Produktionssvar: cf:migrate, cf:seed, cf:reset-kommandoer med idempotente migration-scripts tjekket ind i repoet. Løst i starteren — et nyt environment er fem minutter, ikke fem dage.

Selv-score

Tæl de punkter du har shippet i dag, ikke punkter du planlægger at shippe. 13–15 betyder du er i god stand. 8–12 betyder et et-kvartals recovery-sprint. Under 8 betyder projektet ligger på den standardiserede 5–6 måneders fundament-kurve, og næste samtale bør handle om, hvorvidt I bygger videre eller adopterer en starter.
What to actually do
  • De første seks uger af hvert Contentful enterprise-build rammer de samme 15 produktions-huller.
  • Hvert hul er småt isoleret; stablet er det 5–6 måneders senior-arbejde.
  • Linking, locales, redirects, editor-tillid, type-sikkerhed — det er kategorierne hvor hvert projekt taber tid.
  • Kør checklisten før du underskriver SOW'en eller skriver recovery-planen.
  • Hvert hul er løst out of the box i vores Contentful enterprise starter til Next.js 16.

Vil du have denne slags vurdering på dit projekt?

Jeg læser hver e-mail inden for én arbejdsdag. Tag et projekt, et tilbud eller et system, du sidder fast i.

Se Enterprise Starter
Relaterede guides
  • 13 min.

    REST + GraphQL-hybrider til multi-locale CMS-drevne sites

    Hvorfor hverken kun REST eller kun GraphQL er det rigtige valg til et enterprise multi-locale CMS-site, og hvordan du splitter efter ansvar i stedet. Inkluderer cirkulære referencer på fulde REST-payloads, bundle-omkostningen ved GraphQL på klienten, beslutningsmatricen pr. kaldsted, den samlede fetcher, granulære cache-tags, blok-som-fragment-mønsteret, locale-fallback i ét round-trip, Live Preview der overlever, Server Actions til CMA-skrivninger, Algolia Sync API-undtagelsen og migrationsrækkefølgen.

  • 3 min.

    CMS-styret analyse: stop med at betale udviklere for hver tracking-ændring

    Sådan strukturerer du dit CMS, så marketing kan tilføje tracking-hændelser uden udviklerindblanding. Spar sekscifrede DKK-beløb over sitets levetid.

  • 5 min.

    Dynamiske CMS-links: hvorfor dit 'Link'-felt er en tidsbombe

    De fleste CMS-implementeringer lader forfattere indsætte rå URL'er. Den dag, nogen omdøber en slug, 404'er halvdelen af din navigation i stilhed. Modellen der gør det umuligt — med en Contentful-gennemgang.

Uafhængig teknologirådgivning og udvikling. København, Danmark.

Njalsgade 21F, 2. sal, København

CVR 45 44 13 93

nicklas@ceero.eu

WhatsApp +45 31 33 25 99

Arbejde

  • Enterprise Starter
  • Rådgivning
  • Udvikling
  • Arbejde
  • Kontakt

Ressourcer

  • Artikler
  • Guides
  • Gratis værktøjer
  • Om os

Andre steder

  • Sparro
  • Invigilo
  • e-sign
  • Privatlivspolitik

© 2026 Ceero ApS · CVR DK45441393. Alle rettigheder forbeholdes.

Bygget i København med Next.js, Contentful og nul konsulent-bullshit.