Lab
Test it. Then ship the winner.
A/B experiments and feature flags without cookies: variants and values worked out in the page, results with uplift, intervals and the chance to beat control, and guardrails that warn you before a win costs you something else.

No cookie. No visitor ID kept.
Ask for the variant in your page. With your own user ID, the same person always gets the same variant: it is a hash of the experiment and the ID, worked out in the page, and LogSure never stores the ID.
Without an ID, the variant is picked once per page view, so pass one for anything people come back to.
In your page
const v = await logsure.variant('checkout-button', { id: user.id });
if (v === 'green') showGreenButton();
// null while the experiment isn't running: show your default
Results you can act on.
Each variant's visitors, conversions and rate, the uplift over control with its 95% interval, a p-value and the chance to beat control. LogSure says when to keep running and when a variant has won.
- A warning when the split does not match the weights
- Nothing called before every variant has enough visitors
- Results by device, country, browser, system or source
- The rates day by day

Goals and guardrails.
The goal is what should go up: a custom event, a page, or a saved funnel. Guardrails are what must not get worse, such as refunds or signups, and a harmed one is marked in red.
eventpagefunnel2 to 5 variantsweightsguardrailsFeature flags.
Ship behind a flag, then turn it on for the people you choose. Each flag has a type, a kill switch and rules, and is worked out in the page, so LogSure stays cookieless and learns nothing about the visitor to serve it.
- Typed values: on and off, text, numbers or JSON
- An enabled switch that turns a flag off for everyone at once
- Rules on the attributes you pass, tried first, in order
- Every change in the flag's history, and an experiment can measure it

A score your app chooses.
Optionally, a flag can follow a number from 0 to 100 that your app passes: engagement, a plan tier, a bucket of your own. LogSure never computes one. Ranges such as "on for scores 10 to 50" include both ends; with no score, or a score in no range, the flag serves its default.
Feature flags in the docsIn your page
<script defer data-app="example-shop" data-flags="true"
src="/_care/script.js"></script>
const on = logsure.flag('new-checkout', {
id: user.id,
score: user.engagement, // 0–100, set by your app
attrs: { plan: user.plan, version: '2.4.1' },
fallback: false,
});Every flag at a glance.
What each flag serves right now, its type, whether it uses the score, and a switch to turn it off. Back-ends read the same public config, or ask /_care/flags/evaluate with the server key.

How it works.
Make the experiment
In the console's Lab: a key, 2 to 5 variants with weights, the first being the control, and a goal. Start it.
checkout-button
control Blue button 50%
green Green button 50%
goal: purchase
Ask for the variant
The tracker sends one exposure and tags later events with the variant.
logsure.variant('checkout-button',
{ id: user.id })
.then((v) => render(v));
Read the results
In the console, the iPhone and Mac apps, the terminal, or from your AI assistant.
logsure # then :lab
# or ask over MCP
get_experiment_results
list_flags get_flag