crxpay

Free trials

A trial your users actually finish.

Card-required, card-optional, reverse trials, or gifted extensions — three to thirty days. Typed state transitions, no client-side clock-fiddling, no “wait, when did my trial end?” tickets.

Card
optional
Reverse
supported
Reminder
emails
crxpay · demo
Subscription · Pro
7-day free trial
TRIALING
Day 1 of 7$9.99 / month after
Started
Apr 14
Ends
Apr 21
Trial started · Pro unlocked
Live preview · 7 days in 8 seconds

Anatomy of a trial

Eight days. Two emails. One honest conversion.

crxpay handles the clock, the reminders, and the handoff to paid. You write zero timers. Day 8 arrives and the status flips — or it doesn’t, and a reminder email goes out instead.

Lifecycle · 7-day trial
D 0
D 3
D 6
D 7
D 8
Trial starts
Entitlements granted. SDK flips to TRIALING.
Onboarding email
Tips and a use-case nudge — not a sales pitch.
Reminder email
“Your trial ends in 24h — here is what you will keep.”
Grace period
Optional 24h buffer before status flips.
Converted to paid
First charge captured. Status flips to ACTIVE.

Configure

Length, card policy, grace — all from the dashboard.

Three controls cover every trial model we’ve seen in production. Change them without shipping a new extension build.

Trial settings
Length
Payment card

Higher activation; convert on day 7 with a one-click upgrade.

Grace period
Your users see
7-day free trial · no card needed · 1-day grace
Trial models supported
  • Standard trial
    Free access for N days, then charge the card on file.
  • Reverse trial
    Start on Pro, fall back to Free if the user doesn’t subscribe.
  • Opt-in trial
    No card collected. Convert with a one-click upgrade on day N.
  • Gifted extension
    Pre-activated trial via a redemption code. Perfect for launches.

SDK

Start a trial in one call. React to it in three more.

The SDK exposes typed events for every transition — trial_started, trial_ending, converted. No polling, no setInterval, no clock-drift bugs.

popup.ts
import { crxpay } from '@crxpay/sdk';

const trial = await crxpay.startTrial({
  plan: 'pro-monthly',
  days: 7,
  collectCard: false, // card-optional
});

if (trial.ok) {
  toast('Welcome — 7 days of Pro on us 🎉');
  enableProMode();
}

Receipts

What a well-run trial actually converts at.

Production telemetry from 9,200+ extensions running trials through crxpay, trailing 90 days.

0%
Median trial → paid
card-required, 7-day
0%
Median trial → paid
card-optional, 7-day
0.0×
Day-6 email lift
vs no reminder
0ms
Client clock logic
the server owns the clock

Ready to grow?

Our entire suite of features comes standard — and your first $2,500 in tracked revenue is free.