Trial Management
Trials give users time to evaluate your product before they’re charged. Subscribd handles the full trial lifecycle — from starting a no-card trial to converting it to a paid subscription.Starting a trial
Trials start automatically when a plan definestrial_days. No extra code is needed in the subscription creation call:
Card-free trials
Settrial_requires_payment_method to false on the plan to start a trial without collecting payment details:
CreateSubscription makes no gateway API call. The subscription’s gateway_id is null until the trial is converted to active via ConvertTrialToActive, at which point the gateway creates the subscription and collects payment.
Converting a trial to active
UseConvertTrialToActive to end the trial immediately and collect payment:
- The gateway creates or updates the subscription and triggers the first charge.
- On payment success, the subscription transitions to
ActiveandTrialEndedis fired with$converted = true. - On payment failure, the subscription transitions to
PastDueandTrialEndedis fired with$converted = false. Dunning retries begin.
Extending a trial
Add days to a trial, or set an explicit end date:trial_ends_at column is updated.
Gateway support for trial extension:
| Gateway | Supported |
|---|---|
| Stripe | ✅ Yes |
| PayPal | ❌ No |
| Braintree | ❌ No |
| Paddle | ❌ No |
| FastSpring | ❌ No |
| Square | ❌ No |
Canceling a trial
Cancel aTrialing subscription before it converts:
CancelSubscription with immediately: true. Throws SubscriptionException if the subscription is not in Trialing status.
Trial helpers on the billable
Listening to trial events
| Event | Fired when |
|---|---|
TrialEnded | Trial converts or payment fails at conversion |
SubscriptionUpdated | Trial extended |
SubscriptionCanceled | Trial canceled |
The TrialStatus Livewire component
Drop thetrial-status component into any Livewire view to give subscribers a self-service trial management UI:
- Days remaining in the trial
- A “Convert to paid” button (triggers
ConvertTrialToActive) - An “Extend trial” button when the gateway supports it (Stripe)
- A “Cancel trial” button with inline confirmation
subscription-manager when the subscription is on trial — no extra wiring needed.
Blade static component
A read-only variant with no action buttons:Scheduled trial expiry
Add the following scheduled command to expire trials automatically. Subscribd runs this viasubscribe:expire-trials:
dispatch-trial-ending-events fires TrialEnding for each trial that ends within the next 72 hours, giving you time to send reminder emails.
Next steps
- Subscription Status — Full status reference
- Hooks and Events — All billing events
- Livewire Components — TrialStatus component reference