POST ?action=create_trial
Requests a free trial for a customer. Runs full anti-abuse checks including VPN detection and disposable email validation. The customer's real IP must be forwarded from the frontend.
Trials belong to a service. Pass service to say which one; omit it and the only service offering trials is used. Each service has its own trial product, length, daily cap and eligibility rules, so a customer may trial each of your services once. Call get_plugins and look for trials_enabled to see which are on offer.
Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Required | Customer email address |
customer_ip | string | Required | Customer's real browser IP — collected server-side on WordPress and forwarded here |
name | string | Optional | Customer name |
user_agent | string | Optional | Customer browser user agent |
turnstile_token | string | Optional | A Cloudflare Turnstile response from your own form. Checked with Cloudflare using this store's secret when Turnstile is switched on under Settings → Trials; a failed check is refused (422). Leave it out when your site runs its own human check |
create_login | boolean | Optional | Default true: the customer gets a login for the trial line the moment it is provisioned (a setup link by email). Pass false when your site creates the login itself with the password the visitor chose — call register_customer once the trial is live. Nothing is created for a request that is refused or still waiting for approval |
service | integer | Optional | Which service to trial — a plugin_id from get_plugins. Omit it when only one service offers trials. |
bypass_abuse_checks | boolean | Optional | Admin override — skips all abuse, duplicate and rate limit checks |
Response — Auto-provisioned
{
"success": true,
"data": {
"trial_request_id": 12,
"activation_id": 45,
"status": "approved"
},
"error": null
}Response — Pending manual approval
{
"success": true,
"data": {
"trial_request_id": 12,
"work_order_id": 44,
"reference_code": "WO-2026-12347",
"status": "pending"
},
"error": null
}