How splits work
Every page can hold multiple variants (up to 8 active at once). granvl assigns each visitor a variant according to the weights you set, and the assignment is sticky for the session, so a visitor keeps seeing the same version and the split-test math stays clean. Weights are editable any time, from the funnel canvas or by your agent viaset_weights, and they have to add up to 100.
- Promote a winner: route 100% to the winning variant, or set the losers to 0.
- Pause a loser: weight 0 removes it from rotation without deleting its history. Weight 0 is the pause signal; there is no separate status.
- Archive: soft-delete, which preserves the audit trail. Worth doing only after a variant has sat at weight 0 for a couple of weeks.
- Reset stats: start a variant’s or page’s counters fresh after a major edit, so old traffic does not pollute the new test.
Reading a test
The funnel page shows per-variant visitors, conversions, and conversion rate for the selected window (24h / 7d / 14d / 1m / All). The step canvas shows where visitors drop off between pages, with question-level drop-off on quiz and form pages.When a result is safe to act on
These are granvl’s own thresholds. Your agent applies the same ones, so the dashboard and your chat will not disagree about whether a test is finished.
The mobile-and-desktop condition is not a nicety. A variant can lead overall while losing on both devices individually if the traffic mix differs, so checking each separately is what stops you promoting an artifact.
Three patterns granvl flags without acting on:
- A mobile-versus-desktop conversion gap over 2x
- A top traffic source converting under 50% of the funnel average
- One geography accounting for over 50% of conversions but under 20% of visitors, which often means bot inflation
The dashboard’s copilot cards are deliberately more conservative than the promote threshold above. A card appears once a variant clears 50 sessions and converts under half the leader’s rate, which is enough to suggest a look, not enough to act unilaterally.
Testing on a live page without junk leads
Ask your agent for a test-drive link (create_test_link) and you get your live page URLs with a signed 24-hour token attached. Opening one runs the whole flow for real, including validation, qualification, and the thank-you redirect, but nothing is delivered to your CRM, no pixels or ad-platform events fire, and every analytics row is tagged as test. Test mode survives the thank-you redirect.
Two caveats: a test submit cannot prove your CRM field mapping works (use Send test lead for that, see Forms), and the SMS verification step is skipped in test mode.
The copilot
Home and each funnel page surface copilot suggestions: promote the winner, pause the loser, and “this page has traffic but no experiment running”. Each card carries its evidence (rates, session counts) and a one-click action. Dismissing a card pulls the next suggestion into view.Autonomous optimization
Auto-optimize can be enabled per page, and it is off by default. Once on, a cron analyzes the page on a schedule (every 24 hours by default), pauses variants that are clearly losing, flags the current leader, and generates fresh variants on a slower cadence (every 48 hours), up to the page’s variant cap. Ask your agent to runlist_optimization_actions for the chronological feed of what it did: each entry names the action (paused, leader, or generated), the variant, page, and funnel, and a plain-English reason. Worth calling at the start of a session, since it is both the proof the system is working and the setup for your next move.
Research log & learnings
Every concluded test can be recorded as a learning: what was tested, what won, what to avoid. Structured fields (change type, metric, baseline and result values, hypothesis) turn a verdict into a reusable experiment record. Your agent reads this before proposing the next test.get_research_history returns learnings grouped into wins (proven patterns to lean on), avoid (known dead ends not to re-test), and inconclusive (fair to revisit), which is what stops experiments circling the same dead end.
Variant metadata
Tag variants with what they are: headline type (question, benefit, curiosity, social proof), CTA type, angle, and page style. Analytics can then break performance down by attribute across tests rather than by individual variant, which is how a result generalizes past the one page it happened on. Every variant also carries its headline, value proposition, target audience, and form factor as written. Your agent fills these in on create and updates them whenever an edit shifts the argument, which is what makesget_segmented_stats able to answer “do question headlines beat benefit headlines for this audience”.