Use this checklist to verify your Lynkow integration covers every feature. Each item links to the detailed guide. Skip items marked (optional) if not needed for your project.

FOR LLMs: This is the master checklist for integrating Lynkow. Follow each step in order. Full documentation at lynkow.com/docs. Machine-readable: /llms.txt and /llms-full.txt.


SDK Integration

1. SDK Setup

  • Install the SDK: npm install lynkow

  • Create shared client in lib/lynkow.ts with createClient({ siteId })

  • Set NEXT_PUBLIC_LYNKOW_SITE_ID in .env.local

  • Configure ISR cache: fetchOptions: { next: { revalidate: 60 } } → Guide: Quick Start

2. Pages & Site Configuration

  • Fetch site config with lynkow.globals.siteConfig() for header/footer

  • Render pages with lynkow.pages.getBySlug() or getByPath()

  • Build navigation from lynkow.pages.list()

  • Handle 404 with isLynkowError() + notFound() → Guide: Pages & Site Configuration

3. Blog / Content

  • List articles with lynkow.contents.list() + pagination

  • Single article page with lynkow.contents.getBySlug()

  • Render HTML body with dangerouslySetInnerHTML

  • Display author, categories, tags

  • Featured images with featuredImageVariants (responsive) → Guide: Build a Blog with Next.js

4. Categories & Tags

  • Category pages with lynkow.categories.getBySlug()

  • Category tree with lynkow.categories.tree()

  • Tag filtering with lynkow.contents.list({ tag: 'slug' }) → Guide: Build a Blog with Next.js

5. Catch-all Routes & Path Resolution

  • Implement app/[...slug]/page.tsx with lynkow.paths.resolve()

  • Use isContentResolve() / isCategoryResolve() type guards

  • Static generation with lynkow.paths.list() in generateStaticParams()

  • Handle redirections with lynkow.paths.matchRedirect() in middleware → Guide: Catch-all Routes & Path Resolution

6. Dynamic Forms

  • Fetch form schema with lynkow.forms.getBySlug()

  • Render fields dynamically from form.schema

  • Client-side validation from field.validation

  • Submit with lynkow.forms.submit() (honeypot is automatic)

  • Handle success vs pending (double opt-in)

  • (optional) reCAPTCHA v3 integration if form.recaptchaEnabled

  • Configure Preview URL for localhost development (avoids 403) → Guide: Dynamic Forms

7. Customer Reviews

  • List reviews with lynkow.reviews.list()

  • Display star ratings and author info

  • Submit reviews with lynkow.reviews.submit()

  • Handle moderation (pending vs approved)

  • Check settings with lynkow.reviews.settings() → Guide: Customer Reviews

8. Media & Image Optimization

  • Use featuredImageVariants presets (thumbnail, card, hero, og)

  • Build responsive images with lynkow.media.srcset()

  • Single transforms with lynkow.media.transform()

  • (optional) Custom Next.js Image loader

  • (optional) Blur placeholder with tiny transform → Guide: Media & Image Optimization

9. Multi-language (optional)

  • Set default locale in client config

  • Per-request locale override: { locale: 'fr' }

  • Build locale switcher from content.structuredData.alternates

  • Generate hreflang tags

  • Static generation per locale with paths.list({ locale })

  • (optional) Next.js middleware for locale detection → Guide: Multi-language (i18n)

10. Structured Content (optional)

  • Detect structured content: content.customData !== null

  • Fetch category schema for field type info

  • Render richtext fields with dangerouslySetInnerHTML

  • Handle image, select, array, object field types → Guide: Structured Content

11. SEO — Meta Tags & Structured Data

  • generateMetadata() with metaTitle, metaDescription, keywords

  • Open Graph: ogImage, ogImageVariants

  • Canonical URLs: canonicalUrl with fallback

  • JSON-LD: inject content.structuredData.article.jsonLd

  • FAQ JSON-LD: inject content.structuredData.faq.jsonLd if present → Guide: SEO & Analytics (sections 1-4)

12. SEO — Sitemap, Robots, LLMs

  • XML Sitemap: app/sitemap.xml/route.ts with lynkow.seo.sitemap()

  • Robots.txt: app/robots.txt/route.ts with lynkow.seo.robots()

  • llms.txt: app/llms.txt/route.ts with lynkow.seo.llmsTxt()

  • llms-full.txt: app/llms-full.txt/route.ts with lynkow.seo.llmsFullTxt()

  • Per-article Markdown: .md route with lynkow.seo.getMarkdown()

  • Add <link rel="alternate" href="/llms.txt"> in layout <head> → Guides: SEO & Analytics (sections 5-7) + LLM-Ready Content

13. Analytics

  • Initialize tracker: lynkow.analytics.init()

  • Track SPA navigation: lynkow.analytics.trackPageview({ path })

  • (optional) Custom events: lynkow.analytics.trackEvent()

  • GDPR: If EU site, do NOT init without consent — see step 14 → Guide: SEO & Analytics (sections 8-9)

  • Show consent banner: lynkow.consent.show()

  • Conditional analytics: disable until consent granted

  • Listen for changes: lynkow.on('consent-changed', cb)

  • Enable/disable tracking based on categories.analytics

  • (optional) Custom consent UI with acceptAll(), rejectAll(), setCategories() → Guide: SEO & Analytics (section 10)

15. Webhooks & Cache Revalidation

  • Create webhook in admin: Settings > Webhooks

  • Implement app/api/revalidate/route.ts handler

  • Verify HMAC-SHA256 signature

  • Map events to revalidatePath() / revalidateTag()

  • Handle: content.published, content.updated, content.deleted, site_block.published → Guide: Webhooks & Cache Revalidation

16. Error Handling

  • Use isLynkowError() type guard in catch blocks

  • NOT_FOUND → notFound() in Next.js

  • RATE_LIMITED → exponential backoff retry

  • VALIDATION_ERROR → display field errors from details[]

  • (optional) React Error Boundary → Guide: Error Handling & Resilience

17. Visual Editor (optional)

  • Configure CSP headers: frame-ancestors 'self' https://app.lynkow.com

  • Add <LynkowVisualEditor cmsOrigin="..."> provider in layout

  • Mark editable fields with data-lynkow-block and data-lynkow-field

  • Use useBlockData() hook for live preview

  • Set Preview URL in admin: Settings > Site → Guide: Visual Editor

18. Draft Preview (optional)

  • Create preview entry route: app/api/preview/route.ts

  • Create exit route: app/api/preview/exit/route.ts

  • Fetch draft content via V1 API with Bearer token

  • Use draftMode().isEnabled to branch rendering → Guide: Draft Preview

19. Search (optional)

  • Server-side: lynkow.search.query('term')

  • Client-side: autocomplete component

  • Expose search endpoint for LLMs → Guide: Instant Search


Admin Configuration Checklist

These steps are done in the Lynkow admin dashboard, not in code.

Site Setup

  • Site created with correct domain

  • Preview URL set (Settings > Site) — required for forms, reviews, visual editor, and localhost development

  • API Token created (Settings > API Tokens) — for webhooks and draft preview

Content

  • At least one category created

  • Site Blocks created (header, footer, pages)

  • Blog articles published

SEO

  • Sitemap settings configured (Settings > SEO)

  • Robots.txt rules set

  • llms.txt enabled with site description

  • (optional) Sitemap sources added for multi-site setup (Settings > SEO > Sitemap > External Sitemaps)

  • (optional) Redirections configured for URL changes (Settings > SEO > Redirects)

  • Analytics enabled

  • Consent mode set: opt-in for EU sites, opt-out for non-EU

  • Cookie consent categories configured (necessary, analytics, marketing)

  • (optional) Third-party scripts assigned to consent categories

Webhooks

  • Webhook URL configured pointing to your /api/revalidate endpoint

  • Webhook secret set for HMAC-SHA256 verification

  • Events selected: content.published, content.updated, content.deleted

Visual Editor

  • Preview URL set correctly (Settings > Site)

  • Site Blocks have schemas matching your data-lynkow-block slugs