Notices and error messages
Short answer: this page lists the exact notice and error texts shown by GrabWP in wp-admin, on the Status screen, and during signup or login. Match the text you see to find its cause and the troubleshooting guide that fixes it. Needs: Free
Base (GrabWP Tenancy) notices and errors
| Exact message in UI | Where it appears | Cause in code | Troubleshooting guide |
|---|---|---|---|
load.php is not included in wp-config.php. | Admin notice on every wp-admin page (with link to View Status) | GRABWP_TENANCY_LOADED is not defined because the # BEGIN GrabWP Tenancy block in wp-config.php is missing or not reached. | Notice: load.php is not included in wp-config.php |
Could not find the stop-editing marker in wp-config.php. Please add the line manually. | Installer / setup check | GrabWP could not find the stop-editing marker in wp-config.php to insert the load.php block automatically. | Notice: load.php is not included in wp-config.php |
MU-plugin is not installed. Tenant features may not work. | Admin notice on GrabWP plugin pages (with link to View Status) | mu-grabwp-tenancy.php is missing from wp-content/mu-plugins. | Notices about the MU-plugin or data directory |
Auto-install of MU-plugin will not work. Manual installation required. | Tenancy > Status > Plugin General, System Information (MU-Plugins Dir Writable row) | The wp-content/mu-plugins folder is not writable by PHP. | Notices about the MU-plugin or data directory |
Data directory is missing. | Admin notice on wp-admin pages (with link to View Status) | The base site data folder (default wp-content/grabwp-tenancy) does not exist. | Notices about the MU-plugin or data directory |
Plugin needs write access to create tenant directories and manage configuration files. | Tenancy > Status > Plugin General, System Information (Data Dir Writable row) | The base site data folder is not writable by PHP. | Notices about the MU-plugin or data directory |
Could not read tenants.php, so nothing was changed. Check the file and its permissions. | Site create, edit or delete action | tenants.php could not be read before saving changes. | Notices about the MU-plugin or data directory |
Root .htaccess needs to be updated for tenant routing. | Admin notice on GrabWP plugin pages (Apache and LiteSpeed only) | The # BEGIN GrabWP Tenancy rewrite block in root .htaccess is missing, lacks the current path prefix rules (including a block written before Base 1.1.15), or sits after # BEGIN WordPress. | Path URLs (/site/...) show 404 or a wrong page |
.htaccess files are not used by Nginx. Configure tenant routing in your server block instead. | Tenancy > Status > Plugin General, System Information (note under Web Server) | The web server is Nginx, which does not read .htaccess files. | Path URLs (/site/...) show 404 or a wrong page |
Path routing requires mod_rewrite. Query string routing (?site=id) will be used as fallback. | Tenancy > Status > Plugin General, System Information (mod_rewrite row) | Apache mod_rewrite is reported as not loaded. | Path URLs (/site/...) show 404 or a wrong page |
GrabWP Tenancy is not designed for Multisite. | Tenancy > Status > Plugin General, System Information (WordPress Multisite row shows Yes) | WordPress Multisite is active on the main site. | Hosting requirements |
This site still runs as WordPress Multisite. GrabWP needs regular WordPress. Remove every line below. | Hosting setup card (Multisite and wp-config.php row) on Tenancy > Status and in the setup wizard | Multisite constants in wp-config.php still turn Multisite on. | Settings in wp-config.php that stop GrabWP |
wp-config.php has settings that stop GrabWP. Remove every line below. | Hosting setup card (Multisite and wp-config.php row) | wp-config.php defines a Multisite, address or cookie constant, or $base, that GrabWP sets for each site. | Settings in wp-config.php that stop GrabWP |
Some of these lines are inside a condition or still used by other code, so GrabWP cannot remove them for you. | Hosting setup card, under Lines to remove by hand | At least one listed line is inside an if block or its name is still used elsewhere, so Remove these settings is not offered. | Settings in wp-config.php that stop GrabWP |
This is a Multisite network with %d sites. Do not convert it: back up or move those sites first. | Hosting setup card | The main site is a real Multisite network with more than one site. GrabWP refuses to remove its settings. | Hosting requirements |
Your proxy or CDN serves https, but WordPress is not told. | Hosting setup card (HTTPS behind a proxy row) | A proxy or CDN reports https, but wp-config.php has no HTTPS detection. Add HTTPS detection fixes it. | Hosting setup checks |
Your site works on https, but WordPress still uses http. | Hosting setup card (Secure address row) | The site answers on https, but the WordPress Address and Site Address use http. Switch to https fixes it. | Hosting setup checks |
Tenant admins can install or edit plugin and theme code. That code runs on this server and can read the secret keys every site shares. | Tenant file safety card (Unsafe) on Tenancy > Status and in the setup wizard | Disable Install Plugins & Themes or Disable Plugin & Theme File Editor is off globally, forced off in wp-config.php, or turned off for one site by a Pro override. | Tenant file safety warning |
GrabWP lost some of its own code in these files and put it back. Other edits were kept: | Notice on Tenancy > Status | The integrity guard restored a missing or changed GrabWP block in a shared file. | Install GrabWP |
GrabWP could not put back its own code in these files because they are empty, broken or not writable, so it left them as they are and kept the last good copy in the integrity snapshots folder. Check them now: | Notice on Tenancy > Status | A shared file is empty, truncated, unparseable or not writable. GrabWP never writes a broken file. | Install GrabWP |
Themes are managed by your host. You can still customize your current theme, menus and widgets from the Appearance menu. | Client site wp-admin (page title Themes unavailable) | Hide Themes Screen is on, and the site admin opened the Themes, theme install or theme editor screen. | Free settings |
You're using a legacy path structure. To comply with WordPress standards: | Tenancy > Status (all tabs) | The site data folder is at an older location (wp-content/grabwp or wp-content/uploads/grabwp-tenancy). Followed by steps to deactivate, move, and reactivate. | Where site data lives |
Multiple tenants.php files detected | Tenancy > Status path warning | More than one candidate tenants.php file exists on disk; only one is loaded at boot. | Where site data lives |
Multiple global config.php files detected | Tenancy > Status path warning | Pro config.php exists at both new (wp-content/grabwp-tenancy-pro/config.php) and legacy (wp-content/uploads/grabwp-tenancy-pro/config.php) locations. | Where site data lives |
Data directory inside uploads/ | Tenancy > Status path warning | Active base directory is wp-content/uploads/grabwp-tenancy. | Where site data lives |
Pro config directory inside uploads/ | Tenancy > Status path warning | Active Pro config directory is wp-content/uploads/grabwp-tenancy-pro. | Where site data lives |
SQLite directory inside uploads/ | Tenancy > Status path warning | Active SQLite directory is wp-content/uploads/grabwp-tenancy-sqlite. | Where site data lives |
Directory paths hardcoded in wp-config.php | Tenancy > Status info notice | GRABWP_TENANCY_DIRS_FROM_WPCONFIG is set because directory constants were defined in wp-config.php before load.php. | Where site data lives |
Multiple tenant-aliases.php files detected | Tenancy > Status path warning | More than one tenant-aliases.php file exists across candidate directories. | Where site data lives |
Invalid or expired admin access token. | Site auto-login (wp-login.php?grabwp_token_error=1) | The grabwp_token is older than 1800 seconds (30 minutes) or its HMAC-SHA256 signature does not match. | Site dashboard icon sends me to the login page |
Tenant identification failed. | Site auto-login (wp-login.php?grabwp_token_error=1) | The plugin could not resolve a valid site ID on the request. | Site dashboard icon sends me to the login page |
No admin user found for tenant access. | Site auto-login (wp-login.php?grabwp_token_error=1) | No administrator account was found in the site's database user table. | Site dashboard icon sends me to the login page |
Pro (GrabWP Tenancy Pro) notices and errors
| Exact message in UI | Where it appears | Cause in code | Troubleshooting guide |
|---|---|---|---|
Please enter a license key. | Tenancy > License | The license activation form was submitted with an empty key. | Pro license messages |
This does not look like a GrabWP Pro license key. It should start with GRABWPPRO-. | Tenancy > License | The entered key does not match the GRABWPPRO- prefix and character format. | Pro license messages |
Organization ID not configured. | Tenancy > License | Returned during license check when the organization ID constant is empty. | Pro license messages |
Invalid response from license server. | Tenancy > License | The reply from the license server could not be parsed as valid JSON. | Pro license messages |
Activation mismatch; refusing to clear license. | Tenancy > License | The activation ID passed to clear the license does not match the stored activation ID. | Pro license messages |
Failed to save Pro settings. Please check file permissions. | Tenancy > Pro Settings | GrabWP Pro could not write config.php in the Pro configuration folder. | Backup, restore or "Failed to save Pro settings" |
The Isolated MySQL password is not available any more. | Setup wizard / Pro database setup | The stored MySQL password could not be decrypted. | Database options |
Isolated sites start without themes. Install one under Tenants > Plugins & Themes after creating the site. | Tenancy > Pro Settings > Isolation and site create/edit form | Informational advice shown when new sites are configured to get their own themes. | A site cannot install or find plugins and themes |
symlink() is not available on this server. | Tenancy > Pro Settings > Symlink | The PHP symlink() function is disabled on the host. | Hosting requirements |
This backup has no WordPress site data, so nothing was restored. The site is unchanged. | Restore Tenant | The backup's database has no WordPress options table. Since Pro 1.1.18, the restore stops before any table is dropped. | Backup, restore or "Failed to save Pro settings" |
The backup database could not be restored. Nothing was changed on the site. Details: %s | Restore Tenant | The database import failed before the site's old tables were removed (for example a connection error). | Backup, restore or "Failed to save Pro settings" |
The backup database could not be restored, and the site's old database tables were already removed. Restore another backup to repair the site. Details: %s | Restore Tenant | The database import failed after the old tables were removed. | Backup, restore or "Failed to save Pro settings" |
WaaS (GrabWP Tenancy WaaS) notices and errors
| Exact message in UI | Where it appears | Cause in code | Troubleshooting guide |
|---|---|---|---|
Name is required. | Signup form / validator | Customer name field is empty on signup. | Signup problems |
Valid email is required. | Signup form / validator | Customer email field is empty or invalid. | Signup problems |
Please choose a template to get started. | Signup form / validator | No starter template was selected when required. | Signup problems |
Please choose an available template. | Signup form / validator | The chosen template does not exist or is inactive. | Signup problems |
This template is not available for the selected plan. Please choose a different template or upgrade your plan. | Signup form / validator | The chosen template is restricted from the selected plan. | Signup problems |
Please choose an available plan. | Signup form / validator | The selected plan does not exist or is inactive. | Signup problems |
This site name is reserved. Please choose another. | Signup form / validator | The chosen subdomain slug is in the reserved list (www, mail, admin, api, cdn, ftp, smtp, imap, pop, ns1, ns2, dns, cpanel, webmail, app). | Signup problems |
This site name is already taken. Please try another. | Signup form / validator | Another site already uses this site name. | Signup problems |
This site name is temporarily reserved by another checkout. Please try another. | Signup form / validator | An active provisioning intent holds the chosen site name for up to 2 hours (RESERVATION_TTL). | Signup problems |
Enter a platform domain such as example.com. | Setup wizard (storefront step) | Platform domain input did not pass domain validation. | Site addresses, domains and DNS |
The template was saved, but GrabWP could not confirm that WordPress is installed in that site. Open the site and check it before customers sign up. | Setup wizard (Storefront, Your template) | The site chosen as the template does not have WordPress installed yet. | Set up WaaS |
Custom domains are not available while sites use path URLs. | Customer dashboard Domains tab | Routing mode is set to path, which disables custom domains. | A custom domain does not work |
Custom domains are not available for your current plan. | Customer dashboard Domains tab | The site's plan does not have the allow_custom_domain benefit enabled. | A custom domain does not work |
Maximum 2 custom domains allowed. | Customer dashboard Domains tab | The site already has 2 custom domains attached. | A custom domain does not work |
Cannot remove your platform subdomain. | Customer dashboard Domains tab | The customer tried to delete the primary platform subdomain. | A custom domain does not work |
Verify this domain before setting it as primary. | Customer dashboard Domains tab | The customer tried to make an unverified custom domain primary. | A custom domain does not work |
Domain is not mapped to a tenant. | Custom domain verification | The domain is not present in the site's mapped domains list. | A custom domain does not work |
Domain is reachable but is not serving this site yet. | Custom domain verification | The HTTP probe reached a server, but the response did not match the site. | A custom domain does not work |
Domain did not respond. Point DNS and add it on the server, then try again. | Custom domain verification | The HTTP verification request to the custom domain failed or timed out. | A custom domain does not work |
Settings saved. / Signup and Dashboard pages checked. / WooCommerce anchor product is ready. | Waas > Settings > General | Success notices after saving settings or running repair tools. | WaaS settings |
New API key generated. Copy it now - it will not be shown again: | Waas > Settings > General (API Keys) | Warning notice shown once immediately after generating a REST API key. | WaaS settings |
Add-ons and companion plugins
| Exact message in UI | Plugin | Cause in code | Troubleshooting guide |
|---|---|---|---|
Stripe secret key is not configured. | GrabWP Tenancy Stripe | Stripe checkout or API call ran without Secret Key saved under Waas > Settings > Billing Providers. | Payment provider errors |
SePay is active. Add VND as primary or secondary currency in WaaS > Settings > Billing Providers before customers can pay with SePay. | GrabWP Tenancy SePay | One-time admin notice shown when SePay is active and VND is not configured. | Payment provider errors |
Sepay requires VND currency. Please set VND as primary or secondary currency in WaaS settings first. | GrabWP Tenancy WaaS / SePay | Currency validator error when SePay is enabled without VND as primary or secondary currency. | Payment provider errors |
GrabWP Tenancy Discounts needs GrabWP Tenancy WaaS %s or newer. Discounts are off until WaaS is updated. | GrabWP Tenancy Discounts | The installed WaaS version is older than the minimum required by the Discounts add-on. | Before you buy |
Discounts are off. Codes are kept, but checkouts, quotes and pages ignore them until you turn discounts on below. | GrabWP Tenancy Discounts | Shown on Waas > Discounts when discounts are disabled. | Where things are in wp-admin |
GrabWP Tenancy Custom Fields needs GrabWP Tenancy WaaS %s or newer. Custom fields are off until WaaS is updated. | GrabWP Tenancy Custom Fields | The installed WaaS is older than 1.1.25. | Custom fields at signup |
Check these fields: %s. / Fill in this field. / Enter a valid phone number, for example +84 90 123 4567. / Enter a valid email address. | GrabWP Tenancy Custom Fields (signup form) | A required custom field is empty, or a phone or email field does not match its format. | Custom fields at signup |
A field needs a label. / The default value does not fit the field type. | GrabWP Tenancy Custom Fields (Waas > Custom Fields) | The field form was saved without a Label, or the Default value does not pass the checks for that field type (for example an invalid email address). | Custom fields at signup |
Warning: Destructive Operation | GrabWP Restore | Shown on Tools > GrabWP Restore before restoring a backup archive over the current WordPress install (warns that the entire database, uploads, plugins, and themes will be replaced). | Backup, restore or "Failed to save Pro settings" |