> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abtestly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Plans & pricing

> How ABTestly billing works.

# Plans

ABTestly has four self-serve plans plus Enterprise.

## What's included in every plan

* Unlimited historical data preserved on every site (even after downgrade)
* Full targeting feature set
* Real-time results dashboard
* 99.9% snippet uptime
* Email support

## Plan structure

|                        | Free | Starter | Pro       | Business  | Enterprise |
| ---------------------- | ---- | ------- | --------- | --------- | ---------- |
| **Sites**              | 1    | 2       | 5         | 10        | Unlimited  |
| **Active experiments** | 1    | 5       | Unlimited | Unlimited | Unlimited  |
| **Team members**       | 1    | 2       | 3         | 10        | Unlimited  |
| **Annual discount**    | —    | 20%     | 20%       | 20%       | Custom     |

For current **monthly prices**, **MTU caps**, and **annual totals**, see the
pricing page — it's the single source of truth and is always up to date.

<Card title="Current plans & limits" icon="dollar-sign" href="https://abtestly.com/pricing">
  See live pricing, MTU caps per tier, and the annual discount applied.
</Card>

## What's a Monthly Tracked User (MTU)?

An MTU is a **unique visitor** (identified by a per-site hashed user ID stored in `localStorage`) who is bucketed into at least one experiment during the calendar month. The counter resets at 00:00 UTC on the 1st of each month.

* If a visitor returns multiple times in the same month, they count **once**.
* If they're in 5 experiments simultaneously, they still count **once**.
* If they have no `localStorage` (e.g., they cleared cookies, switched browser, or use private browsing), each visit is a **new MTU**.

## What happens if I hit my MTU limit?

ABTestly never auto-charges for overages. Instead, your site enters **graceful degradation**:

* **Visitors already bucketed continue to see their variant.** Their cached `localStorage` assignment is honored, exposures still flow to your dashboard, statistical validity is preserved for the active cohort.
* **New visitors are NOT bucketed.** They see the original page and don't consume an MTU.
* **No data loss.** Already-bucketed users keep generating exposures and conversions.
* **You get email warnings at 80% and 100%** so you can upgrade if needed.

When the calendar month rolls over, the counter resets and bucketing resumes automatically.

### How it works under the hood

ABTestly maintains a Durable Object per organization that tracks distinct user hashes across all sites in that month. When the count hits 100% of your plan's MTU, the snippet's served config gets a `degraded: true` flag injected at the edge. The snippet's new-visitor branch reads this flag and skips bucketing.

The change propagates within \~5 minutes of hitting the cap (cron tick interval + edge cache TTL).

## Upgrading

In your dashboard → avatar menu → **Billing & Plan** → choose a higher tier. Checkout is handled by Paddle (our Merchant of Record — they handle tax, invoicing, and global payments).

Upgrade takes effect within 5 seconds of payment. Your new limits apply immediately.

## Downgrading

Same path — choose a smaller plan. Your existing data is **preserved** (we call this "grandfathering"):

* If you have 5 sites on Pro and downgrade to Starter (2 sites), your 5 sites **continue running**. You can't add new sites until you're under 2, but existing ones are unaffected.
* Same applies to active experiments — running tests stay running.
* MTU limit drops immediately to the new tier's allowance. If that puts you over budget, graceful degradation kicks in.

We don't auto-pause or auto-delete anything on downgrade. The penalty is the new lower MTU cap; everything else stays as you left it.

## Cancellation

In your dashboard → **Billing & Plan** → **Manage subscription** → opens Paddle's customer portal → **Cancel subscription**.

Your subscription continues to bill (and you keep paid-tier access) until the end of your current period. After the period ends:

* Your account is downgraded to Free tier limits
* Your data is preserved forever (not deleted)
* You can re-subscribe anytime to get back to your previous tier

We don't pro-rate refunds for unused time on cancellation. The MoR (Paddle) treats unused subscription credit as account balance, which auto-applies to future invoices if you re-subscribe.

## Inactivity

If you're on the Free tier and your account has no activity for **90 days** (no dashboard logins, no API calls, no exposures recorded), we'll archive it. You'll get a warning email at day 83.

Archived ≠ deleted. Your data is preserved. Next time you log in, you'll see a one-click **Reactivate** page. Click it, your account is back to normal. No re-onboarding, no re-confirming email, no data loss.

Paid-tier accounts are never archived for inactivity.

## Enterprise

For >1M MTU, multi-region deployments, SOC 2 audit support, custom contracts, or dedicated support:

[Contact sales →](mailto:enterprise@abtestly.com)

We respond within 24h on business days.
