---
title: "Privacy Policy"
description: "Last updated October 22, 2026"
canonical: https://landtest.dev/privacy
last-updated: 2026-10-30
---

# Privacy Policy

Last updated October 22, 2026

## 1. Overview

Landtest is a GitHub-native A/B testing tool for landing pages. You connect a repository, Landtest writes test variants into it, your own host serves the traffic, and a small tracking script reports what visitors do back to your Landtest dashboard.

This policy covers two groups of people: **customers** (anyone who signs up, joins the waitlist, or uses the dashboard, API or MCP server) and **visitors** (people who view a page on which a customer is running a Landtest experiment). It explains what we collect, why, who helps us process it, how long we keep it, and what you can do about it.

## 2. Our role

For customer account data, Landtest decides how and why it is used and is responsible for it as a controller.

For visitor data, the customer running the experiment is in control: they choose to add Landtest to their site, which pages to test, and whether to wait for consent. Landtest processes visitor data only on that customer's behalf, to produce their experiment results. If you are a visitor and want to exercise a privacy right, contact the website you visited; we will help them respond.

## 3. Customer data we collect

Data

Where it comes from

What it is for

DataEmail, name, avatar

Where it comes fromSign-in via GitHub or Google, or email + password

What it is forYour account profile and login

DataWorkspace, project and team data

Where it comes fromYou and your teammates

What it is forRunning the dashboard; roles; teammate invites (invitee email)

DataWaitlist entry

Where it comes fromWaitlist form

What it is forEmail and requested workspace name, to manage early access

DataWebsite scan

Where it comes fromA URL you enter before or after signing up

What it is forPublic text from that page, summarised into your project Memory

DataStudio chat and Memory

Where it comes fromMessages you send and facts you save

What it is forContext for variant generation and Autopilot

DataFeedback and support messages

Where it comes fromFeedback form, contact form, email

What it is forResponding to you and improving the product

DataBilling status

Where it comes fromDodo Payments webhooks

What it is forPlan, subscription status, renewal date, Dodo customer ID

DataAPI, MCP and BYOK credentials

Where it comes fromKeys and tokens you create or paste

What it is forAuthenticating API/MCP calls; calling your own AI provider

DataUsage and audit logs

Where it comes fromGenerated as you use Landtest

What it is forAI call type, model, token counts and cost; activity timeline; abuse prevention

If you sign in with GitHub or Google, we receive your name, email address and avatar from that provider. If you use email and password, the password is stored by our authentication provider as a one-way hash; we never see it in plain text.

Bring-your-own-key (BYOK) API keys are encrypted with AES before they are stored and are only decrypted to make AI calls for your workspace. API and MCP tokens are stored as hashes; we show the full token once, when you create it.

We never receive your card details. Payments are handled by Dodo Payments, which sends us only the plan, status and identifiers listed above.

## 4. Repository data

When you install the Landtest GitHub App, you choose which repositories it can access. The app asks for read and write access to repository contents and pull requests, and read access to metadata. We use that access to:

- read the files needed to understand and preview the page you are testing;
- create branches, commits and pull requests that add test variants, routing middleware and the tracking script;
- publish a split, change weights, and, when a test ends, commit the winning variant and remove Landtest's test code;
- receive webhook events about pushes, pull requests and deployments so the dashboard stays in sync.

We store the variant code we generate, test configuration, and preview snapshots. We do not keep a standing copy of your repository. Live previews run in your own browser using WebContainers. You can revoke access at any time from your GitHub settings; every change Landtest made is a normal git commit you can revert.

## 5. AI processing

To generate, name and analyse variants, Landtest sends relevant source files, your Studio chat messages, your project Memory and test results to an AI model. By default these requests go through the Vercel AI Gateway to a model provider such as Anthropic or OpenAI. On the Lifetime plan with BYOK, they go to the provider whose key you supplied, under your own agreement with that provider.

When you ask us to scan a website, we fetch the public page, extract its text and send that text to Sarvam AI to produce a structured summary. Before sign-up, the result is held for up to 30 minutes against a temporary cookie.

If you turn on Autopilot, Landtest makes these AI calls and test decisions on a schedule, within the guardrails you set, without a person prompting each one.

We log each AI call's type, model, token counts, duration and cost to meter credits and keep the service reliable. We do not use your code or prompts to train AI models, and we do not let our providers do so where they give us that choice.

**Insight network (opt-in).**If a workspace admin opts in, then when a test ends we record a de-identified summary of each variant: the kind of change, the page section, your project's industry and audience labels, aggregate visitor and conversion counts, the measured lift and confidence, and the month it ended. Hypotheses are scrubbed of names, URLs, domains, emails, prices and your page copy, and records are keyed by a one-way hash rather than your project or company. We pool these summaries across customers to improve Landtest's recommendations and may use them to train Landtest's own models. Nothing pooled is shown to anyone until at least five different companies back it. It never includes visitor-level data, source code or your prompts. You can opt out at any time; your raw records are deleted immediately and drop out of pooled results within a day. We will never name your company without your written approval of the specific story.

## 6. Visitor data (during active tests)

While a test is running, the Landtest script (`lt.js`) on the customer's page sends the following to Landtest:

Data

Purpose

DataRandom visitor ID and session ID

PurposeKeep a visitor on the same variant; count unique visitors

DataTest, variant and page path

PurposeAttribute every event to the right experiment

DataReferrer and UTM source / medium / campaign

PurposeTraffic attribution

DataDevice class (mobile or desktop, from window width)

PurposePer-device breakdowns

DataPageview, scroll depth, sections viewed, time on page

PurposeEngagement analysis (sections and fine-grained scroll only on full engagement tracking)

DataClicks on links and buttons: element id or label, up to 60 characters of its text, link URL

PurposeWhich calls to action perform

DataForm submit: form id and form action URL only

PurposeConversion tracking (field values are never read)

DataGoal reached

PurposeConversion rate and statistical results

What the script does not do:

- It does not read form fields, keystrokes, or what visitors type.
- It does not record the screen or replay sessions.
- It does not fingerprint browsers or track visitors across different websites.
- It does not send the visitor's IP address or user agent with events. The user agent is checked in the browser to skip known bots, and the IP address seen by our server is used briefly in memory for rate limiting and is not stored with events.
- It does not collect names, emails or account details, unless a site places them in a button label or link, which customers should not do.

Customers can make the script wait for consent: with `data-lt-await-consent="1"` on the page, nothing is sent until their consent tool sets the `_lt_consent=1` cookie or fires the `lt:consent` event. A visitor with the `_lt_exclude=1` cookie is never tracked.

## 7. Cookies and browser storage

### On customers' tested pages

- **_lt_* assignment cookie**: set by middleware running on the customer's own domain. It holds the test ID, assigned variant, a random visitor ID and a timestamp, so a returning visitor sees the same variant. It expires after 30 days.
- **Session storage** (`_lt_sess`, `_lt_eng` and short-lived flags): a random session ID and markers that stop the same event being counted twice. Cleared when the tab closes.
- **_lt_consent / _lt_exclude**: optional cookies a site can set to signal consent or opt a browser out.

### On Landtest's own website and dashboard

- Authentication cookies from Supabase to keep you signed in.
- A preference cookie remembering your last opened project (up to one year).
- A temporary cookie linking a website scan to your sign-up (30 minutes).
- Vercel Web Analytics for aggregate page views on our own site. It does not use cookies.

We do not use advertising or cross-site tracking cookies.

## 8. How we use data

- Provide the service: sign-in, repositories, variant generation, previews, publishing, analytics and Autopilot.
- Calculate experiment results, including conversion rates, mSPRT confidence and sample-ratio checks.
- Meter AI credits, enforce plan limits and manage billing.
- Send service email, such as teammate invites and replies to your feedback.
- Secure the service: rate limiting, abuse prevention, audit logs and debugging.
- Improve Landtest using aggregate usage and the feedback you send.
- If your workspace opts in, pool de-identified test results across customers to improve recommendations and train Landtest's own models (see AI processing).
- Comply with law, including tax and accounting requirements.

Where laws such as the GDPR apply, we rely on performance of our contract with you, our legitimate interests in running and securing the service, your consent where we ask for it, and legal obligations. We do not sell or rent personal data, and we do not share it for advertising.

## 9. Service providers

We share data only with providers that help us run Landtest, only as needed for the purpose listed, and when the law requires it.

Provider

Purpose

ProviderVercel

PurposeHosting, serverless functions, cron jobs, AI Gateway, cookieless site analytics

ProviderSupabase

PurposeDatabase, authentication, realtime notifications

ProviderAI model providers (Anthropic, OpenAI) via Vercel AI Gateway

PurposeVariant generation, planning, naming and analysis

ProviderSarvam AI

PurposeSummarising the text of websites you ask us to scan

ProviderGitHub

PurposeRepository access through the Landtest GitHub App; GitHub sign-in

ProviderGoogle

PurposeGoogle sign-in (if you choose it)

ProviderDodo Payments

PurposeCheckout, payment processing, invoicing, tax, subscription management

ProviderResend

PurposeTransactional email: teammate invites, feedback notifications

ProviderStackBlitz (WebContainer API)

PurposeRuns live previews of your page inside your own browser

A small number of Landtest operators can access customer data through an internal admin console to provide support, investigate problems and keep the service running. Access is limited to named administrators, and administrative actions are recorded in an audit log.

## 10. Retention

Data

Kept for

DataAccount, workspace and project data

Kept forUntil you delete the project or ask us to delete your account

DataRaw visitor events

Kept forWhile the test exists; purged automatically 90 days after a test is archived

DataAggregated test results (counts, rates, confidence)

Kept forKept with the test so past results stay readable

DataMonthly event usage counters

Kept for13 months

DataPending website scan (before sign-up)

Kept for30 minutes, unless you sign up and it is copied to your workspace

DataWaitlist entries

Kept forUntil you ask us to remove them

DataBilling records

Kept forAs long as tax and accounting law requires

Deleting a project removes its tests, variants, events and Memory. Backups maintained by our database provider roll over on their normal schedule.

## 11. Your rights and choices

Depending on where you live, you may have the right to access, correct, export or delete your personal data, to object to or restrict certain processing, and to complain to your local data protection authority.

- Edit your profile from **Account** in the dashboard.
- Delete individual Memory items, or whole projects, from the project settings.
- Revoke repository access from GitHub, and API or MCP tokens from **Settings**.
- To delete your whole account or get a copy of your data, email [hello@zerocost.app](mailto:hello@zerocost.app) from the address on the account. We respond within 30 days.

## 12. Security

- All traffic to Landtest uses HTTPS.
- Database access is restricted by row-level security, so workspaces only see their own data.
- BYOK keys are encrypted at rest; API and MCP tokens are stored hashed.
- GitHub webhooks and payment webhooks are verified by signature.
- The ingest endpoint is rate limited, and accepts events only from the domains a project lists and, if one is set, with its write key.

No system is perfectly secure. If we learn of a breach affecting your data, we will notify you as the law requires. Report vulnerabilities to [hello@zerocost.app](mailto:hello@zerocost.app).

## 13. International transfers

Our providers may process data in the United States and other countries outside yours. Where required, we rely on the safeguards those providers offer, such as standard contractual clauses.

## 14. Children

Landtest is a business tool and is not directed at children. We do not knowingly collect personal data from anyone under 16. Contact us if you think we have.

## 15. Changes

When we update this policy we change the date at the top. For material changes we will also notify account holders by email or in the dashboard before they take effect.

## 16. Contact

Privacy questions and requests: [hello@zerocost.app](mailto:hello@zerocost.app). See also our [Terms](https://www.landtest.dev/terms) and [Refund Policy](https://www.landtest.dev/refund).
