How to use Prismic CMS for AB testing and website personalization
Prismic is an excellent headless CMS and page builder, but it doesn't offer native personalization or A/B testing. Compare the real options and see how to test slices without a developer for every variant.
Prismic has no native AB testing or personalization. It is a headless CMS and page builder, and recent industry analysis groups it with the platforms that expect you to bring your own assignment layer. It does content modeling and slice-based publishing well.
Prismic CMS is a popular headless content management system that allows developers and content creators to build websites and pages with a flexible content structure.
Known for its customizable content modeling and easy integration with frameworks like Next.js and Gatsby, Prismic helps teams manage content effectively while enabling engaging user experiences.
This article is for teams that use Prismic CMS and need better personalization and AB testing. Croct is one of the best alternatives because its component CMS can coexist with Prismic CMS, which lacks native support for these features.
When your goal is to build a website that gives your content team autonomy to work without relying on developers, your main requirements probably are:
- It needs to be fast to load
- It needs to be indexed on search engines
- It needs to be scalable
- It needs to provide a good experience for content managers
Prismic certainly satisfies most, if not all, of these requirements. But how about what comes next?
Marketing teams don't use websites solely to publish content. They're always looking for ways to optimize the user journey and monetize their content. One of the most obvious tactics is AB testing and personalization.
Right after launching a website, you'll learn that Prismic has limitations for businesses focused on conversion optimization. In this post, we'll explore what Prismic is good for, its core challenges, and how you can overcome them.
What Prismic is good for
Prismic helps organizations manage and deliver content across multiple platforms with ease. The CMS focuses on a powerful content modeling experience, letting teams define repeatable components, called slices, to reuse across pages.
With its headless architecture, Prismic lets developers integrate content seamlessly into custom front-end frameworks, enabling more design freedom and performance optimization. Its key strengths lie in content management, especially for teams that want to structure content flexibly without managing complex back-end infrastructure.
Prismic solved the hardest half of marketing autonomy. Slices are reusable, marketers compose pages from them, and shipping a landing page does not require a sprint.
Why Prismic isn't ideal for website personalization and AB testing
Then the obvious next question arrives: does version A convert better than version B? The answer is that someone has to build a decision layer, which puts you back in the developer queue you adopted Prismic to escape.
That is a strange place to end up. The team that can ship a page in an afternoon waits two weeks to test it.
Website personalization
Since Prismic focuses more on static content, it lacks real-time personalization capabilities. This limits its ability to serve dynamic content based on user preferences, behaviors, or demographics, which is essential for creating tailored user experiences.
If you use Prismic and need to personalize your website, the most straightforward option is to use a third-party solution like Uniform and add an external layer to your application.
AB testing
Although Prismic used to provide AB testing capabilities, this feature was deprecated a while ago, and users are now forced to use third-party tools for that. This guide provides a more detailed explanation of how to run AB tests with GrowthBook in a Next.js application.
What testing a slice actually requires
Whichever third-party route you take, six things have to exist before a result means anything:
- Identity: A stable visitor ID in a first-party, server-set cookie. Safari's ITP caps client-set cookies at seven days, which rebuckets returning visitors partway through a four-week test.
- Deterministic assignment: Hash the visitor ID with the experiment key and map it to a bucket. Randomizing per request means a reload flips the variant.
- Variant modeling: Duplicate slices, a variant field on each, or duplicate documents.
- Selection logic: Code that picks the right variant per visitor and falls back cleanly.
- Exposure tracking: Recording who saw what, sent server-side so ad blockers do not bias the denominator.
- Statistics: An engine that decides whether the difference is real.
Item 3 is the one that quietly hurts. Duplicating slices for variants means you have to make every non-experimental change in each copy. Marketers who could previously edit one thing now edit three, and the copies drift apart.
The options you'll be recommended, and how they fit
Read most comparison articles on what to use with Prismic, and you'll get Optimizely and VWO, sometimes Statsig or PostHog. These are real answers. They're just aimed at different teams than most Prismic sites have.
Optimizely is the most-cited answer and an enterprise experimentation platform priced and staffed accordingly. It sits in front of a Prismic site and does the job if you have a team to run it.
VWO is the mid-market answer, with personalization, heatmaps and recordings included as paid add-ons. Its visual editor is client-side by default, which is what causes flicker on the landing pages you're buying traffic to. The FullStack SDKs avoid that and move you back into developer territory.
GrowthBook, Statsig, and PostHog are developer-first. Assignment and statistics are excellent, while content variants are code branches. For a team that ships pages from Slice Machine without a developer, this inverts the workflow you chose Prismic for.
Uniform adds an orchestration layer over Prismic, and relies on an external CDP for visitor data.
None of these is a bad tool. They answer the question "how do I run a rigorous experimentation program," rather than "how does my marketer test this hero next week."
Alternative for personalization and AB testing
If you're looking to give your team autonomy while ensuring excellent website performance and maintaining your design system, Croct is a great alternative.
Unlike Prismic CMS, Croct simplifies personalization and experimentation. Here's why:
-
Native personalization and segmentation
Croct offers built-in tools to personalize content based on real-time behavior, location, marketing campaigns, and other user attributes. This is far more efficient than building it in Prismic, and you won't need a CDP to manage user data.
-
Bayesian AB testing
Croct includes built-in Bayesian AB testing, allowing you to experiment with content variations and optimize user experiences easily. Unlike Prismic, which requires more custom development for AB testing, Croct provides a streamlined, user-friendly approach.
-
User-friendly for non-developers
Croct is designed for developers, product managers, marketers, and non-technical users alike. Most personalization and testing tasks can be managed without needing developers, reducing your reliance on technical resources.
-
Real-time personalization analytics
Croct offers real-time analytics, enabling you to track user interactions across segments and adapt experiences on the go. The platform's dashboards provide real-time data without needing integration with external analytics tools.
-
Server-side delivery
Everything resolves before the response is sent, so there's no flicker and no Core Web Vitals penalty. This matters more on Prismic sites than most: landing pages are usually the pages you buy traffic to, so a client-side testing script that degrades LCP taxes the traffic you paid for.
-
Seamless integration
Croct integrates smoothly into your existing tech stack, handling personalization and experimentation while allowing you to use Prismic for static content management. Croct covers what Prismic isn't built for, like dynamic personalization and AB testing.
Testing a slice without duplicating it
Your slice component fetches from a slot and passes the Prismic content as the fallback:
// slices/Hero/index.jsximport {fetchContent} from '@croct/plug-next/server';
export default async function Hero({slice}) { const {content} = await fetchContent('home-hero', { fallback: { title: slice.primary.title, subtitle: slice.primary.subtitle, ctaLabel: slice.primary.cta_label, }, });
return ( <section> <h1>{content.title}</h1> <p>{content.subtitle}</p> <a href="/signup">{content.ctaLabel}</a> </section> );}One slice, one document, no duplicates. When no experiment is running, the component renders exactly what Prismic returned. Your custom types are untouched, no variant fields are added, and rolling back is deleting one call.
Developers wrap each slice they want to make testable, once. After that, variants, audiences, traffic allocation, scheduling, and results all live in the Croct interface.
Comparison
| Duplicate slices | Optimizely / VWO | Feature flags | Croct | |
|---|---|---|---|---|
| No new variant fields or duplicated slices | ❌ | ✅ | ✅ | ✅ |
| Unchanged editorial surface | ❌ (multiplies per variant) | ✅ | ✅ | ✅ |
| Variant assignment | You build it | ✅ | ✅ | ✅ |
| Cross-device stickiness | You build it | ✅ | ✅ | ✅ |
| Exposure tracking | You build it | ✅ | ✅ | ✅ |
| Statistical engine | External | ✅ | ✅ | ✅ |
| Audiences and profiles | External CDP | ✅ | External CDP | ✅ |
| New variant does not need a deploy | ❌ | ✅ | ✅ | ✅ |
| Server-side by default | Your choice | Client-side default | Your choice | ✅ |
| Entry price | Your time | Enterprise / ~$200+ | Free tiers exist | Free, then $100/mo |
But wait, I don't want to switch CMS and rebuild my entire website
The good news is, you don't have to.
Consider your website as a dynamic interface. Some elements, like headers, footers, and blog content, are meant to remain static, and your growth team likely won't experiment with these. But other components, crucial to your conversion flow, should be dynamic, and that's where Croct comes in.
Similar to Prismic, Croct lets you model and create components flexibly. This allows the growth team to experiment with different layouts, content, images, and structures without breaking the design system.
Croct's parallel to Prismic's slices is slots.
Static and dynamic content can coexist, and you can gradually transition key elements from Prismic to Croct, giving both your content and growth teams the autonomy they need. Here are some templates to show you how it works.
Resolution happens at the slice level, so only the tested region is dynamic, and the rest of the page stays prerendered and cacheable.
A reasonable first move: pick the slice with the most traffic and the clearest conversion role, usually the homepage or a primary landing page hero. One slice, one experiment, two weeks.
If your goal is to deliver dynamic, user-specific experiences and boost conversions, take the first step by creating your free account and get started within hours.