Codapult includes a lightweight A/B testing framework for pricing pages, onboarding flows, messaging, and product experiments.
Capabilities
- Weighted variants, such as 50/50 or 80/20.
- Deterministic bucketing so the same user keeps the same variant.
- Target percentage rollout.
- Conversion tracking.
- Experiment lifecycle: draft, running, paused, completed.
- Admin API and admin UI hooks.
Key files
| File | Purpose |
|---|---|
src/lib/experiments/index.ts | Experiment assignment and conversion helpers |
src/app/api/admin/experiments/route.ts | Admin API for experiments |
experiment table | Experiment config and lifecycle |
experiment_assignment table | User assignment and conversion state |
Usage
import { getVariant, trackConversion } from '@/lib/experiments';
const variant = await getVariant('pricing-hero', userId);
if (variant === 'annual-first') {
// Render the annual-first UI.
}
await trackConversion('pricing-hero', userId);
Creating experiments
Use createExperiment with a key, name, variants, target percentage, and optional goal event. Variant weights should add up to 100.
Feature flag
ENABLE_EXPERIMENTS="false"
When disabled, experiment admin surfaces return 404.