Skip to content

Configure Trial Signup

This tutorial sets up a public trial request form that lets potential customers request a free trial subscription.


Prerequisites

  • sadeem_subscription_trial installed
  • One deployment variant installed:
  • sadeem_subscription_trial_docker — for Docker provisioning
  • sadeem_subscription_trial_dbfilter — for DBFilter provisioning
  • A Portainer environment (Docker) or DBFilter server group (DBFilter) fully configured

Trial vs Paid Subscriptions

Trial Paid
Created by Customer via public form Operator manually or via website checkout
Duration Fixed — Trial Duration Days field Until cancelled
Auto-build Optional — Auto create and run setting Manual ConfirmBuild
Grace period After expiry, grace period before termination Cancellation flow
Billing No invoice generated Linked to sale order

How It Works

  1. You create a Trial Package in Odoo with limits, duration, and deployment defaults
  2. You publish it — it becomes accessible at /saas/trial/<url-string>
  3. A visitor fills in the form (name, email, company, preferred subdomain)
  4. Sadeem creates a trial request record
  5. If Auto create and run is enabled, Sadeem confirms and builds the subscription automatically — no operator action needed
  6. If disabled, the operator reviews and manually approves each request

Step 1: Create a Trial Package

  1. Navigate to SAAS Management → Subscriptions → Trial Packages → New
  2. Fill in the Package Name — the URL String is auto-generated from the name (lowercase, hyphens only, e.g. Basic Trialbasic-trial)
  3. Set Trial Duration (Days) (default: 14) and Grace Period (Days) (default: 3)
  4. Set User Limit and Storage Limit (MB)
  5. In Subscription Packages, select the subscription package(s) this trial grants access to
  6. Toggle Published to make the form publicly accessible
  7. The computed URL field shows the full public form URL: <base_url>/saas/trial/<url_string>
  8. Save

Tip

The URL String can be edited manually at any time before publishing. It must contain only lowercase letters, numbers, and hyphens. Changing it after publishing will break any existing links.

Basic Settings Reference

Field Value
Package Name Displayed on the public form, e.g. 14-Day Free Trial
URL String URL-friendly identifier — auto-generated from the name
Description Short text shown on the form
Published Enable to make the form publicly accessible
Auto create and run Enable to provision automatically on submission

Duration & Limits

Field Value
Trial Duration (Days) How long the trial runs, e.g. 14
Grace Period (Days) Days after expiry before termination, e.g. 3
User Limit Max users allowed
Storage Limit (MB) Max storage in megabytes
Stage Count Stages allowed (usually 1 for trials)

Deployment — Docker

Field Value
Docker Image Odoo Docker image to deploy
Portainer Environment Default environment for trial stacks

Deployment — DBFilter

Field Value
DBFilter Server Shared Odoo server group for trial databases

Step 2: Publish

Enable Published on the trial package.

The form is now live at:

https://your-odoo.com/saas/trial/basic-trial

All published packages are listed at:

https://your-odoo.com/saas/trial

Auto Create and Run

When Auto create and run is enabled (auto_run_subscription = True), a subscription is automatically created and built as soon as the trial form is submitted. The customer receives access with no operator involvement.

When disabled, submitting the form creates a Trial Request record in Draft state. The operator reviews it and manually clicks Confirm to approve and provision, or Reject to decline.

Tip

Disable Auto create and run if you want to screen requests before provisioning — for example, to verify company email domains or apply manual capacity controls.


Step 3: Handle Requests

Go to SAAS Management → Subscriptions → Trial Requests.

  • Auto create and run disabled: Click Confirm to approve and provision, or Reject to decline
  • Auto create and run enabled: Requests build automatically — monitor for build failures in the chatter

Email Uniqueness

One trial request per email address per package is enforced at the database level by a SQL uniqueness constraint on (email, trial_package_id). If the same email submits the form again for the same package, the request is rejected with a validation error.

To allow a retry (for example, after a failed build), delete or archive the existing request first.


Anti-abuse considerations

The built-in duplicate email check prevents the same email from requesting the same package more than once. For additional protection consider:

  • Adding reCAPTCHA to the website trial form
  • Email domain verification at the web server level
  • Rate limiting at the Nginx level using the limit_req_zone directive to prevent brute-force trial creation