General settings
Network Admin → Demo → Settings → General
The General tab controls the core behaviour of every demo: how long sandboxes live, what happens when they expire, what role demo users get, and spam protection.
Demo lifetime
By default a demo lasts 30 minutes. You set the lifetime as a duration + measure pair — for example 2 hours, 3 days, or 1 week.
| Field | Description |
|---|---|
| Expiration duration | The number, e.g. 30 |
| Expiration measure | The unit: minutes, hours, days, weeks, or months |
| Lifetime demos | When enabled, demos never expire (overrides the duration) |
Internally the duration and measure are converted to a lifespan in seconds (the default 1800 = 30 minutes). Supported measures convert as: minutes ×60, hours ×3,600, days ×86,400, weeks ×604,800, months ×2,592,000.
Individual demos can be marked as lifetime later from the Demos list, even if the global default expires.
Expiration action
Choose what the hourly purge job does when a demo expires:
| Action | Result |
|---|---|
| Delete (default) | Permanently removes the sandbox site, tables, and uploads |
| Archive | Archives the site (kept but inaccessible) |
| Deactivate | Deactivates the site |
See The demo lifecycle for the full purge behaviour.
Demo user access
| Setting | Default | Description |
|---|---|---|
| Login role | editor | The role the demo user is granted inside their sandbox. Choose administrator to give full admin access, or a lower role to limit it |
| Auto login | On | Automatically logs the visitor into their new sandbox after creation |
| Redirect | (empty) | A path appended to the sandbox URL after creation — send users to a specific landing page inside the demo (e.g. /wp-admin/) |
| Enable reset | Off | Let’s demo users reset their sandbox back to the source site’s pristine state without changing their URL, login, or expiration |
Even when the login role is
administrator, you can still restrict which admin pages are reachable — see Restrictions.
Prevent new demos
Turn on Prevent clones to temporarily stop new demo registrations. While enabled, all request forms are hidden on the front end. This is useful during maintenance or when you need to pause signups.
Developers can toggle this programmatically with the tdemo_registration_disabled filter.
reCAPTCHA {#recaptcha}
Protect your demo forms from bots by adding Google reCAPTCHA. Enter both keys to activate it:
| Field | Description |
|---|---|
| Site key | Your reCAPTCHA site key |
| Secret key | Your reCAPTCHA secret key |
| Language | Optional language code for the widget |
Once both keys are present, the reCAPTCHA script is loaded and the widget is added to every demo request form automatically. You can also force it on a specific form with the captcha shortcode attribute — see Displaying demo buttons.
Logging
Enable Log to write TryDemo debug details (site cloning steps, timings, and errors) to the plugin log. Keep it on while setting up or debugging, and turn it off in normal operation. Log output is also surfaced under Settings → System Info.
Notifications
Network Admin → Demo → Settings → Notifications
TryDemo sends two emails: a welcome/activation email to the visitor who requested the demo, and an optional notification email to your team. The Notifications tab has a sub-tab for each.
Demo User Notification
Sub-tab: Demo User Notification
This is the email the visitor receives after requesting a demo. It typically confirms their account, links them into their sandbox, and includes their login credentials.
| Field | Default | Description |
|---|---|---|
| Template | default | The letter template used to wrap the email body |
| From name | Main site name | Sender name |
| From email | Site admin email | Sender address |
| Subject | “Activate your personal demo website” | Email subject line |
| Body | (see below) | The email content; supports HTML and placeholders |
The default body welcomes the user, includes a Confirm your account button linking to {demo_url}, and shows their {login} and {password}.
Admin Notification
Sub-tab: Admin Notification
An optional email to your team whenever a new demo is created.
| Field | Default | Description |
|---|---|---|
| Disable admin notices | Off | Turn off admin notification emails entirely |
| Template | default | Letter template |
| From name / From email | Main site name / admin email | Sender identity |
| To email | Site admin email | Where the notification is sent |
| Subject | “Demo website created” | Email subject |
| Body | (see below) | The notification content |
The default body announces “One more demo created on {site_title}!” and shows who created it via {login}.
Placeholders
Use these tokens anywhere in an email body or subject — TryDemo replaces them when the email is sent.
| Placeholder | Replaced with |
|---|---|
{email} | The requester’s email address |
{login} | The demo account login |
{password} | The demo account password |
{demo_url} | The activation / sandbox URL |
{site_title} | The site title |
{demo_lifetime} | Demo lifetime in hours |
{demo_lifetime_days} | Demo lifetime in whole days |
{demo_duration_value} | The numeric lifetime (e.g. 30) |
{demo_duration_period} | The lifetime unit (e.g. minutes) |
Not every placeholder makes sense in every email — for example,
{password}belongs in the user email, not the admin notification. The admin editor lists the tokens it supports ({site_title},{email},{login}).
Example body
<h1>Welcome to your demo!</h1>
<p>Your private demo of Our Product is ready. It stays live for
{demo_duration_value} {demo_duration_period}.</p>
<p><a href="{demo_url}"><b>Enter your demo</b></a></p>
<p>Login: {login}<br>Password: {password}</p>
Deliverability tips
- Emails are only as reliable as your WordPress mail setup. If activation emails don’t arrive, install an SMTP plugin and check your sender domain’s SPF/DKIM records.
- A low activation rate in Reports is often a deliverability problem, not a copy problem — verify emails are actually landing first.
- Keep the From email on a domain you control so messages aren’t flagged as spoofed.
Toolbar
Network Admin → Demo → Settings → Toolbar
The demo toolbar is a customizable bar shown on the front end of every demo site. It’s the perfect place to remind trial users they’re in a demo, show a countdown, and point them to checkout.
Enabling the toolbar
Turn on Show toolbar to display it across your demo sites. Once enabled, you can style it and add a call-to-action button.
| Setting | Default | Description |
|---|---|---|
| Show toolbar | Off | Master switch for the front-end toolbar |
| Theme | dark-theme | Visual theme for the bar (light/dark) |
| Background | (empty) | Custom background color (color picker) |
| Logo | (empty) | An image shown on the toolbar (media picker) |
Call-to-action button
Drive trial users toward a purchase with a prominent button:
| Setting | Description |
|---|---|
| Button text | The label, e.g. “Buy Now” or “Get the plugin” |
| Button URL | Where the button links — usually your checkout or pricing page |
| Button class | Optional extra CSS class for custom styling |
Pair the button with the {demo_lifetime}-style urgency of a countdown to nudge visitors before their sandbox expires.
Hiding the toolbar on specific demos
The Unpermitted field takes a comma-separated list of blog IDs where the toolbar should not appear. Enter the IDs of any demo (or source) sites you want to exclude, and TryDemo skips the toolbar there.
Example:
5, 9, 14
Tips
- Keep the button copy action-oriented and specific — “Get TryDemo — from $29” beats “Learn more”.
- Use the Background and Theme settings so the toolbar complements your product’s branding rather than clashing with the demo content.
- Combine the toolbar with the
[trydemo_is_demo]shortcode for in-content upgrade prompts that only appear inside sandboxes.
MailChimp
Network Admin → Demo → Settings → MailChimp
Every demo request is a lead. The MailChimp integration automatically subscribes demo requesters to a MailChimp audience so you can follow up with nurture campaigns.
Connecting your account
| Setting | Default | Description |
|---|---|---|
| Subscribe | Off | Master switch — subscribe demo requesters to MailChimp |
| API key | (empty) | Your MailChimp API key (includes the datacenter suffix, e.g. …-us21) |
| Send confirmation | Off | Use double opt-in — subscribers get a confirmation email and are added as pending until they confirm |
| Subscribe list | (none) | The target audience/list, chosen per source site |
The datacenter (e.g.
us21) is read from the part of your API key after the dash. If subscriptions silently fail, an invalid or truncated API key is the most common cause.
How it works
When a visitor requests a demo and a MailChimp subscription is enabled:
- TryDemo looks up the list configured for that demo’s source site.
- It adds the requester’s email to that list via the MailChimp API.
- The subscriber status is set to subscribed (single opt-in) or pending (double opt-in, when Send confirmation is on).
Because lists are configured per source site, you can route leads from different products into different audiences.
Getting your API key and list ID
- In MailChimp, go to Account → Extras → API keys and create a key.
- Paste it into the API key field here.
- Choose the destination audience under the Subscribe list for each source site.
Privacy
Only the email address is sent to MailChimp. Make sure your demo request form and privacy policy disclose that requesting a demo subscribes the visitor to your mailing list — and prefer double opt-in where required by your jurisdiction.
Restrictions
Source site → Demo (single-site admin, not Network Admin)
Restrictions let you decide exactly which admin pages demo users can reach inside their sandbox. Unlike the other settings, restrictions are configured per source site, so each product can define its own safe demo experience.
Where to find it
Restrictions live on the individual source site’s admin menu, not the network admin:
- Switch to the source/template site’s dashboard (My Sites → [your template site] → Dashboard).
- Open the Demo menu → Demo Restrictions.
The Demo Restrictions menu is intentionally hidden inside demo sites — only the source site can define the rules.
What you can control
The restrictions screen shows the source site’s admin menu so you can allow or block pages individually:
| Concept | What it does |
|---|---|
| Parent pages | Top-level admin menu items you permit or block |
| Child pages | Submenu items you permit (allowed) |
| Disabled child pages | Submenu items you explicitly block |
| Blacklist | A freeform list of admin URIs to block (one per line) |
When a demo user tries to open a blocked page, TryDemo prevents access. This lets you hand out administrator-level demos while still keeping sensitive or destructive screens off-limits.
Always-forbidden pages
Regardless of your configuration, TryDemo always blocks its own management screens inside demos:
trydemo(the network Demo screens)trydemo-restrictions(this Restrictions screen)
And when the network hides the Plugins menu (see below), plugins.php is blocked too.
Developers can extend this list with the tdemo_forbidden_pages filter.
Hiding the Plugins menu
Whether the Plugins menu is hidden from demo users is driven by your multisite’s own setting:
Network Admin → Settings → Network Settings → Menu Settings → Plugins
If network administrators have not enabled the Plugins menu for site admins, TryDemo hides plugins.php inside demos automatically. This stops demo users from activating or deactivating plugins in their sandbox.
Blocking password & email changes
To prevent demo users from locking you (or themselves) out, block the profile pages that let them change the account password or email through the restrictions blacklist. Combined with a limited login role, this keeps sandboxes safe and disposable.
Recommended baseline
For most products, a good starting point is:
- Allow the screens that showcase your product (your plugin’s settings, the editor, relevant post types).
- Block
plugins.php,themes.php, user management, and the profile/password screens. - Keep TryDemo’s own screens blocked (automatic).
Then walk through a real demo yourself and block anything that feels risky.