Codapult
ЦеныПлагиныБлогДокументацияДемо

SaaS-бойлерплейт для разработчиков

© 2026 Codapult. Все права защищены.

Сделано на Codapult

Проект

  • Цены
  • Плагины
  • Документация
  • Сравнение SaaS-шаблонов

О нас

  • Контакты

Правовая информация

  • Политика конфиденциальности
  • Условия использования
Все статьи

Getting Started

  • Introduction
  • Quick Start
  • Project Structure
  • License and Permitted Use

Configuration

  • Environment Variables
  • App Configuration

Authentication

  • Authentication
  • OAuth Providers
  • Two-Factor & Passwordless
  • Enterprise SSO (SAML)

Database

  • Database
  • Migrations

Teams

  • Teams & Organizations
  • Permissions & RBAC
  • SCIM Provisioning

Payments

  • Payments & Billing
  • Stripe Setup
  • LemonSqueezy Setup
  • Polar Setup
  • Payment Webhooks

Api

  • API Layer
  • tRPC
  • GraphQL

Ai

  • AI Features
  • Streaming Chat
  • RAG and Semantic Search
  • Quotas and Memory

Email

  • Email
  • Email Templates

Infrastructure

  • Infrastructure
  • Self-Hosting
  • File Storage
  • Docker
  • Background Jobs
  • Terraform & Pulumi
  • Kubernetes

Ui

  • UI & Theming

I18n

  • Internationalization

Content Management

  • Content Management

Admin

  • Admin Panel

Security

  • Security

Monitoring

  • Analytics & Monitoring

Modules

  • Module Architecture
  • Waitlist
  • Audit Log
  • White-Labeling
  • Workflow Automation
  • A/B Testing
  • Welcome Page
  • Referrals
  • GDPR Export and Deletion
  • Outgoing Webhooks

Plugins

  • Plugin System
  • AI Kit Plugin
  • CRM Plugin
  • Helpdesk Plugin
  • Email Marketing Plugin

Deployment

  • Deployment
  • Troubleshooting

Upgrading

  • Upgrading Codapult

Developer Tools

  • AI Agents & IDEs
  • MCP Server
  • Testing
Modules

Welcome Page

Post-purchase landing for the one-time license flow — shows the license key and onboarding next steps.

What it is

/welcome is the landing page users are redirected to after a successful one-time license purchase. It shows:

  • A success confirmation (with the customer's name when available).
  • The license key and the email it's registered to.
  • Three onboarding "next steps": access the private GitHub repo, read the quick-start guide, and join the community.
  • Primary / secondary CTAs linking to the docs quick-start and the homepage.

The page is server-rendered, i18n-ready, and marked robots: noindex, nofollow — it is only meant to be reached via a redirect from checkout, not indexed.

Query parameters

The page reads the following search params and renders them directly — it does not hit the database:

ParamRequiredUsed for
license_keyOptionalDisplayed in a highlighted card; hidden if missing.
emailOptionalShown alongside the license key ("Registered to …").
nameOptionalPersonalizes the heading ("Welcome, !").
order_idOptionalReserved for future use (not rendered today).

Because values come from the URL, do not pass secrets beyond the license key itself, and make sure your payment provider's redirect is HTTPS.

Where it's wired in

The checkout route in src/app/api/checkout/route.ts sets redirectUrl to ${appConfig.appUrl}/welcome. Your payment provider (Stripe, LemonSqueezy, Polar, or Paddle) appends the license key + customer data as query params via its return URL / webhook. Example LemonSqueezy redirect after a successful purchase:

https://your-app.com/welcome?license_key=ABCD-1234&email=customer@example.com&name=Alex

If you use a different payment provider, configure its post-purchase redirect to the same /welcome URL and the same param names.

Files

FilePurpose
src/app/[locale]/(marketing)/welcome/page.tsxThe landing page (server component, reads search params).
messages/<locale>.json → Welcome namespaceAll copy (heading, subtitle, step titles, CTAs).
src/app/api/checkout/route.tsSets redirectUrl so the provider lands users here.

Not to be confused with…

  • Welcome email (src/lib/email/templates/WelcomeEmail.tsx) — a transactional email sent by the Auth module on signup. Different trigger, different delivery channel, different template.
  • Onboarding tours (src/lib/onboarding/) — in-app guided tours for logged-in users. The welcome page runs before login.

Customizing

  • Copy — edit the Welcome namespace in each messages/<locale>.json.
  • Steps / CTAs — edit the steps array and the two buttons in src/app/[locale]/(marketing)/welcome/page.tsx. The default steps (GitHub, docs, community) match the license-sale flow; if you're selling a managed SaaS subscription instead of source code, replace them with "Go to dashboard", "Invite your team", etc.
  • License key block — wrap the <Card> section with server-side verification (e.g. call your licensing API) if you want to validate the key before rendering it.

Removing the module

If you're not selling one-time licenses (for example, pure subscription SaaS without license keys):

  1. Delete src/app/[locale]/(marketing)/welcome/.
  2. In src/app/api/checkout/route.ts, change redirectUrl to /dashboard (or any post-checkout page that makes sense for your flow).
  3. Remove the Welcome namespace from each messages/<locale>.json.
A/B TestingReferrals