Media and publishing/Personalization tests

Test a personalization rule without a release.

Signals tells your experimentation tool what each reader is doing now and has done this month, so a new rule for what they see is a variant it assigns today and measures on the same behavior.

More personalization tests shipped

Ship more personalization tests by running two rules against each other today.

A personalization rule is a condition over what a reader is doing plus the action your site takes. Signals computes the condition's inputs from live reader behavior and serves them to your experimentation tool, so a new rule is a setting it can assign to half of your readers today. The same definitions run over past visits in your warehouse, so the result is measured on the attribute the rule used.

Test when the newsletter prompt appears

Someone on the team wants the newsletter prompt to appear after the second story a reader opens in one section. The current rule waits for the third. Settling it by debate means one rule ships, the other goes unmeasured, and the next change waits for the next release. Both rules read the same count of stories, so the question is a test rather than a release.

What Signals knows
section_counts_session
How many stories they opened in each section this visit
current_section
The section of the story they are reading now
What your experimentation tool does

Assigns each reader to one of the two rules, reads the same story count for both, shows the prompt at the second story for one group and the third for the other, and compares newsletter sign-ups between them.

article.tsx · 15 lines
// In the code that renders the article page
const reader = await signals.getServiceAttributes({
  name: "tests_newsletter_prompt",
  attribute_key: "domain_sessionid",
  identifier: sessionId,
});
// { section_counts_session: { politics: 2, sport: 1 }, current_section: "politics" }

const storiesInSection = reader.section_counts_session[reader.current_section] ?? 0;
const variant = experiments.variant("newsletter_prompt_timing", sessionId);
const threshold = variant === "after_second" ? 2 : 3;

if (storiesInSection >= threshold) {
  newsletter.prompt({ section: reader.current_section });
}

Try it on your own site.

Add the SDK, define one thing you want to know about a visitor, and watch it update while you click around. The free tier runs on the real engine: no card, no sales call.