GrabWP Tenancy icon

GrabWP Tenancy

GrabWP Tenancy is a WordPress plugin with the following stats:

  • #11,801 Global Rank
  • 10+ active installs
  • 5/5 3 ratings
  • Since 2025 1 years active

PF Score (About PF Scores)

PF Score is not a quality guarantee. It is a ranking based on available public signals.

Bronze54.3
Platinum
Gold
Silver
Bronze
Low

Score Breakdown

16.7
Popularity 40% 10+ active installs
65.2
Reputation 35% 5★ from 3 ratings
99.1
Freshness 25% Updated 9 days ago

No vulnerability history

Download Trends

Loading download data…

Vulnerabilities

No known vulnerabilities

This plugin has no records in the Wordfence Intelligence vulnerability database.

About GrabWP Tenancy

Multi-tenant WordPress with shared MySQL, domain and path routing, and isolated uploads.

WORDPRESS MULTISITE ALTERNATIVE – ENABLE MULTI-TENANT AT NO COST

GrabWP Tenancy provides the foundation for multi-tenant WordPress with essential isolation features. Host your tenants effortlessly on a single domain using our new Path-Based Routing (e.g., example.com/site/abcdef), or map them to full custom domains. It is the perfect, lightweight, drop-in replacement for WordPress Multisite built for simplicity and scale.

📖 Complete Documentation: grabwp.com
💻 Source Code: GitHub Repository
🐛 Report Issues: GitHub Issues

Core Features

  • Shared MySQL Database: Cost-effective tenant isolation using unique table prefixes
  • Separated Upload Directories: Each tenant gets isolated upload directories
  • Shared Themes & Plugins: All tenants share the same themes and plugins for simplicity
  • Flexible Routing Options: Choose between domain-based routing or our new path-based (subdirectory) routing for an effortless setup without DNS changes.
  • Basic Admin Interface: Simple tenant management through WordPress admin
  • Early Initialization: Plugin loads before WordPress core hooks

Need More? Upgrade to Pro

Managing multiple client sites and need enterprise-grade isolation? GrabWP Tenancy Pro adds:

  • Dedicated MySQL or SQLite database per tenant — complete data isolation, zero cross-tenant risk
  • Full wp-content separation — isolated themes, plugins & uploads per tenant
  • AJAX backup & restore — 7-step backup, 8-step restore with real-time progress UI
  • Cross-database migration — move tenants freely between shared MySQL, dedicated MySQL, and SQLite
  • Extension sync & management — sync plugins/themes with filesystem, switch between symlink and copy installs
  • Broken symlink auto-repair — one-click detection and repair
  • Custom tenant data location — store content outside wp-content/uploads using settings or wp-config.php
  • Per-tenant config files — each tenant gets its own config; new tenants inherit master defaults

From $9.99/month — all plans include every feature. Use code EARLYBIRDPRO for 20% off.

👉 Get Pro Now

Screenshots

Adding one domain per tenant

Adding one domain per tenant

Support multiple domains per tenant

Support multiple domains per tenant

Simple listing all tenants

Simple listing all tenants

Frequently Asked Questions

Does this plugin work with WordPress multisite?

No, this plugin provides multi-tenancy functionality without requiring WordPress multisite. It creates tenant isolation through domain-based or path-based routing and database prefixes.

Do I need a custom domain for every tenant?

No! With our new path-based routing feature, you can completely bypass complex domain and DNS configurations. You can host tenants dynamically on subdirectories underneath your main site (e.g., yoursite.com/site/client-a).

Can I use custom domains for tenants?

Yes, you can configure custom domains for each tenant through the admin interface or by editing the tenant mapping file.

Is this plugin compatible with other plugins?

The plugin is designed to be compatible with most WordPress plugins. However, plugins that directly access database tables may need to be configured to work with tenant prefixes.

Where can I get help?
How is this different from WordPress Multisite?

WordPress Multisite shares one database, one set of plugins, and one set of themes across all sites. GrabWP Tenancy gives each tenant true isolation — separate table prefixes, separate upload directories, and with Pro, completely dedicated databases and per-tenant plugins/themes. No network admin complexity, no shared-database risks.

Can I manage 50+ client sites with this?

Yes. GrabWP Tenancy is built for WordPress freelancers and agencies managing multiple client sites from a single installation. The admin interface handles tenant CRUD, and Pro adds backup/restore per tenant for easy management at scale.

Ratings & Reviews

Recent Reviews

Loading reviews…

View all reviews on WordPress.org (opens in a new tab)

Changelog

1.1.5

  • New: “Upgrade to Pro” admin page with a free-vs-Pro feature comparison and a call-to-action button, shown only when GrabWP Tenancy Pro is not active
  • New: Contextual Pro upsell cards across the tenant, settings, and status screens, plus an “Upgrade to Pro” link on the Plugins page and in the admin footer, all suppressed automatically once Pro is installed
  • Fix: load-helper.php is now loaded as a fallback during bootstrap when wp-config.php does not include load.php, preventing missing early-boot helpers
  • Fix: Status page no longer lists the same tenants.php, config.php, or tenant-aliases.php path twice when candidate locations resolve to the same file

1.1.4

  • New: Performance & Security settings tab applies per-tenant constants: DISABLE_WP_CRON, XML-RPC off, WP_POST_REVISIONS, EMPTY_TRASH_DAYS, and WP_HTTP_BLOCK_EXTERNAL with a WP_ACCESSIBLE_HOSTS allowlist
  • New: Path routing prefix is configurable — /site/{tenant-id} becomes /{prefix}/{tenant-id} across rewrite rules, .htaccess, admin URLs, and the status page, via GRABWP_TENANCY_PATH_PREFIX (defaults to site)
  • New: Tenant URLs resolve Pro path aliases through grabwp_tenancy_get_tenant_path_slug(), so homepage and dashboard links use the alias when one is set
  • New: Status page warns about path confusion — duplicate tenants.php, config.php, or tenant-aliases.php copies, data directories inside uploads/, and directory constants hardcoded in wp-config.php
  • Enhance: Settings support integer and text values in addition to checkboxes, sanitized per type and written correctly to the settings file
  • Enhance: Settings screen split into tabs, with the active tab remembered between visits
  • Enhance: Base directory detection honors GRABWP_WORDPRESS_CONTENT_DIR and the wp-content/grabwp-tenancy/tenants.php location
  • Enhance: .htaccess rules and status checks accept alias slugs while still recognizing the legacy 6-character rule
  • Change: The SQLite integration plugin is hidden from plugin lists — activating or deactivating it breaks every SQLite-backed site
  • Fix: Duplicate “Settings saved successfully” notice on the settings page

1.1.3

  • Enhance: Tenant detection now supports GRABWP_TENANCY_TENANT_ID env var for CLI boot without wp-config constants
  • Enhance: CLI tenant context auto-populates HTTP_HOST and HTTPS from tenant mappings when missing
  • Enhance: WP-CLI $table_prefix synchronization — file-scope global re-bind prevents stale prefix after eval
  • Enhance: CDN URL included in database export metadata when Pro storage is configured
  • Enhance: Tenant list table uses natural column widths for better extension compatibility
  • Enhance: Responsive CSS for tenant list on mobile screens
  • Fix: UPLOADS constant only defined when upload dir is inside ABSPATH, preventing path resolution errors on custom layouts
  • Fix: Server info cache can be reset via grabwp_tenancy_reset_server_info_cache() after environment changes

1.1.2

  • Security: Replaced the file-based admin access token (a secret written to tokens.php and consumed via rename) with stateless HMAC-SHA256 tokens bound to the tenant ID, signed with AUTH_KEY/AUTH_SALT and given a short TTL (default 30 minutes, configurable via GRABWP_TENANCY_TOKEN_TTL). No token secret is persisted to disk anymore.
  • New: The clone “complete” screen now shows the target tenant ID with quick links to Edit tenant, Homepage, and Dashboard.
  • Enhance: Admin UI refactor — inline styles moved into a shared stylesheet (admin/css/grabwp-admin-shared.css) with utility classes; section show/hide now toggles a hidden class.
  • Change: Clone pipeline reordered — site URL replacement now runs before copying uploads.
  • Change: Installer removes legacy tokens.php / .consumed artifacts on activation; removed the now-unused get_tokens_file_path() helper.

1.1.1

  • Security: Admin access tokens are now single-use — consumed atomically on first successful login; concurrent or replayed token requests are rejected.
  • Security: Domain hash validation is mandatory for admin token login; comparisons use timing-safe hash_equals().
  • Security: Path-based admin URLs no longer expose tenant_domain in the query string; hash validation uses internal routing context instead.
  • Enhance: Added GrabWP_Tenancy_Path_Manager::atomic_put_php_file() for atomic writes of settings, tenant mappings, and admin token files (tmp + rename, ABSPATH guard, OpCache invalidation).
  • Fix: Tenant clone file copy now skips symlinks, preventing accidental duplication of shared plugin/theme directories.
  • Fix: WordPress cron requests again run in mainsite context (tenant detection disabled during DOING_CRON).

1.1.0

  • Refactor: Split early-boot load-helper.php into focused modules (security, server detection, tenant detection, boot constants, cache) — same boot behavior, easier maintenance and extension.
  • Refactor: Extracted admin form handling, tenant CRUD, and domain validation into dedicated classes (GrabWP_Tenancy_Admin_Form_Handler, GrabWP_Tenancy_Tenant_Crud, GrabWP_Tenancy_Domain_Validator); public handle_create_tenant(), handle_update_tenant(), and handle_delete_tenant() methods remain for backward compatibility.
  • Refactor: Status page reorganized into tab partials with centralized environment checks via GrabWP_Tenancy_Status_Checker (General, Base Plugin, Pro Plugin tabs unchanged).
  • Fix: Settings page now shows the “Settings saved successfully.” notice after saving (previously redirected but notice was never displayed).
  • Developer: All existing action hooks (grabwp_tenancy_before_create_tenant, grabwp_tenancy_after_create_tenant, etc.) preserved; no migration required.

1.0.11

  • New: Cache isolation for tenant context — disables page-cache drop-ins per tenant request (WP_CACHE) and prefixes object-cache keys with the tenant ID (WP_CACHE_KEY_SALT) to prevent cross-tenant cache collisions on shared Redis/Memcached backends.
  • New: Added grabwp_tenancy_get_tenant_url() helper to resolve a tenant front-end URL by ID without loading a full tenant object.
  • Enhance: Centralized tenant URL resolution — get_site_url(), get_admin_access_url(), and static helpers (resolve_site_url(), resolve_admin_url(), build_site_url()) now handle domain-based and path-based routing in one place; tenant list and clone flows use these shared methods.
  • Enhance: Log messages are automatically prefixed with [tenant_id] or [Mainsite] for easier multi-tenant debugging.

1.0.10

  • Fix: Tenant directory cleanup now handles symlinks safely during recursive deletion, removing only the symlink itself instead of following it into the original shared plugin or theme directory.
  • Enhance: Tested up to WordPress 7.0.

1.0.9

  • Fix: Default tenant data directory moved from wp-content/uploads/grabwp-tenancy to wp-content/grabwp-tenancy (outside uploads) to prevent direct web access to tenant data. Existing installs that already use the uploads path are preserved automatically — no migration needed.
  • Fix: Corrected legacy-path migration notice in the Status page to use WP_CONTENT_DIR directly instead of wp_upload_dir(), matching the new default path.
  • Fix: Downgraded oversized “Clone to existing site” / “Clone to new site” hero buttons on the clone page to standard buttons for visual consistency.
  • Enhance: Plugin/theme admin bar nodes (plugins, themes) are now removed on tenant sites when the corresponding Hide Plugin Management / Hide Theme Management settings are enabled, closing a gap where the toolbar still exposed those links.
  • Enhance: Tenant create page UX — the first domain field is now auto-filled with a suggested domain (tenant-{6digits}.{hostname}); a new Clear button lets users wipe the field quickly; the domain input grows up to 500 px wide; and the domain section is visually indented under its radio button.
  • Enhance: GrabWP Tenancy admin menu position moved higher (position 3) so it appears near the top of the sidebar.
  • Change: Default values for Hide Plugin Management and Hide Theme Management settings changed from true to false for fresh installs, giving new tenants full access by default until explicitly restricted.

1.0.8

  • New: Tenant Cloning — clone any existing tenant (or the mainsite) to a new tenant, including database tables and uploaded files with automatic URL replacement.
  • New: Added GRABWP_MAINSITE_ID constant (__mainsite__) to allow the main site to be used as a clone source.
  • Enhance: Mainsite domain detection now supports localhost and local-network domains that have no TLD extension (e.g., mysite.local, bare localhost).
  • Fix: Resolved plugin asset URL resolution on hosts where the plugin directory is symlinked — switched to content_url() to avoid incorrect absolute paths.
  • Fix: Refactored tenant ID generation to guarantee uniqueness and avoid collisions on busy installations.
  • Quality: Normalised all PHP source files from CRLF to LF line endings.

1.0.7

  • Major: Introducing Path-Based Routing! You can now host tenants on subdirectories/paths (e.g., example.com/site/abcdef) without requiring separate domains. This completely eliminates the need for complex domain mappings and serves as a true, lightweight replacement for WordPress Multisite.
  • Enhance: Added comprehensive .htaccess diagnostic admin notices specifically tailored for path-based routing support.
  • Enhance: Centralized configuration and diagnostic tools into a transparent, read-only Status Page UI with manual fallback instructions for environment issues.
  • Refactor: Streamlined the installation, uninstallation, and environment-fixing processes into a single GrabWP_Tenancy_Installer class.
  • Security: Improved code compliance by integrating complete nonce verification on sensitive administrative handlers and securely transitioning to wp_is_writable().
  • Fix: Resolved PHP fatal errors (e.g., Class Not Found) relating to the class autoloader sequence during the initial activation process.
  • Quality: Standardized codebase formatting for consistent line endings (CRLF to LF) and file encoding across all files.

1.0.6

  • New: Dedicated Status admin page with system information, file structure, database config, content isolation, and domain routing details (moved out of Settings page)
  • New: One-click Auto Install MU-Plugin button with AJAX handler — auto-creates the must-use plugin file, or shows copy-to-clipboard fallback when the directory is not writable
  • New: One-click Auto Install to wp-config.php button with AJAX handler — injects the load.php require line before the stop-editing marker, or shows copy-to-clipboard fallback when wp-config.php is not writable
  • New: Admin notices for missing MU-plugin and missing wp-config.php loader, shown only on plugin pages, with writability-aware UI (auto-install vs. manual copy)
  • New: Pro Features section added to the plugin readme
  • Improved: Default tenant capability settings are now enabled (Disallow File Mods, Disallow File Edit, Hide Plugin Management, Hide Theme Management) for stronger security out of the box
  • Improved: Added fallback definition of grabwp_tenancy_validate_tenant_id() in Path Manager so validation works even when load-helper.php is not loaded
  • Improved: Tenant edit page title now displays the tenant ID for clarity
  • Improved: Moved AJAX nonces (muPluginNonce, loaderNonce) into localized admin script data
  • Improved: Refactored JS — extracted bindCopyButton() helper, added initMuPluginInstall() and initLoaderInstall() handlers in grabwp-admin.js
  • Improved: Streamlined load-helper.php base-dir resolution logic and added GRABWP_TENANCY_DIRS_FROM_PLUGIN constant
  • Improved: Renamed local variables in tenant views to use grabwp_tenancy_ prefix to avoid potential conflicts
  • Improved: Tested up to WordPress 6.9

1.0.5

  • New: Settings page for tenant capability controls (Disallow File Mods, Disallow File Edit, Hide Plugin Management, Hide Theme Management, Hide GrabWP Plugins)
  • Fix: Tenant ID starting with a number causes database errors on table prefix

1.0.4

  • Enhance tenant management with a new list table for admin
  • Implement logging functionality, and improve tenant deletion process with confirmation prompts.
  • Refactor path management and database handling for better organization and security.
  • Update translations and enhance admin UI elements for improved user experience.
  • Refactor tenant initialization process to streamline functionality for tenant and main site.
  • Remove deprecated asset loading class and configuration management.
  • Enhance tenant context handling and improve upload directory management.
  • Introduce hooks for pro plugin extensibility and improve code organization for better maintainability.

1.0.3

  • Major Enhancement: Added comprehensive early loading system with load-helper.php
  • Security Improvements: Enhanced input sanitization and validation functions for early loading
  • Path Management: Introduced centralized Path Manager with backward compatibility support
  • WordPress Compliance: Improved path structure with fallback to WordPress-compliant uploads directory
  • CLI Support: Added command-line interface support for tenant operations
  • Performance: Optimized tenant detection with caching and reduced file system calls
  • Backward Compatibility: Maintained support for existing wp-content/grabwp structure

1.0.2

  • Improved tenant management interface
  • Direct login button to tenant from main site admin (If plugin also activated on tenant)
  • No longer access to plugin admin page and menu from tenant’s admin dashboard

1.0.1

  • Refactored core plugin for improved tenant management and protocol handling
  • Added admin notice registration for better user feedback in the admin area
  • Defined GRABWP_TENANCY_LOADED constant for reliable plugin load detection
  • Added translation support by loading the plugin text domain on initialization
  • Added Vietnamese language support

1.0.0

  • Initial release
  • Basic multi-tenant functionality
  • Domain-based routing
  • Admin interface for tenant management
  • Shared MySQL with tenant prefixes
  • Separated upload directories

Alternatives to GrabWP Tenancy

Other WordPress plugins serving a similar purpose, ranked by relevance and PF Score.

Platinum96.4
Code Snippets icon

Code Snippets

Add custom code snippets to your site through a centralized library without editing files.

★ 4.7/5·1.0M+ installs·Updated 12 Jul 2026
Platinum92.5
User Switching icon

User Switching

Switch between user accounts instantly in WordPress and WooCommerce without logging out.

★ 4.9/5·200K+ installs·Updated 9 Jul 2026
Platinum90.0
InfiniteWP Client icon

InfiniteWP Client

Manage unlimited WordPress sites from a single central dashboard with this multi-site administration tool.

★ 4.4/5·200K+ installs·Updated 11 Aug 2026
Gold78.2
Multisite Language Switcher icon

Multisite Language Switcher

Manage multilingual content across WordPress multisite installations with language switching capabilities.

★ 4.8/5·4K+ installs·Updated 25 May 2026
Gold74.6
Intranet & Private Site – All-In-One Intranet icon

Intranet & Private Site – All-In-One Intranet

Turn WordPress into a private intranet in one click. Restrict access to logged-in members, with auto-logout and login redirect, also…

★ 5/5·4K+ installs·Updated 3 Aug 2026
Gold73.9
Domain Mapping System | Create Microsites with Multiple Alias Domains (multisite optional) icon

Domain Mapping System

Assign multiple alias domains to published content and create microsites with optional multisite support.

★ 4.5/5·2K+ installs·Updated 12 Jun 2026
Gold71.8
Plugin Report icon

Plugin Report

A WordPress plugin that provides detailed information about currently installed plugins.

★ 5/5·1K+ installs·Updated 15 Aug 2026
Gold71.3
Change Username icon

Change Username

Change WordPress usernames from the user edit screen, with validation for existing users, illegal logins, and Multisite admins.

★ 4.6/5·4K+ installs·Updated 19 Jun 2026
Silver67.4
Servebolt Optimizer icon

Servebolt Optimizer

This plugin implements Servebolt's WordPress best practices, and connects your site to the Servebolt Admin Panel.

★ 5/5·1K+ installs·Updated 23 Jun 2026
Silver66.5
Add to Home Screen & Progressive Web App icon

Add to Home Screen & Progressive Web App

Turn your WordPress site into a Web App (PWA) with a stylish 'Add to Home Screen' prompt for iOS &…

★ 3.7/5·1K+ installs·Updated 28 May 2026
Silver64.4
WP OPcache icon

WP OPcache

Manage OPcache inside your WordPress admin dashboard.

★ 4.8/5·10K+ installs·Updated 27 Feb 2025
Silver64.3
Affiliate Link Marker icon

Affiliate Link Marker

Mark your Affiliate Links with a *, add rel="nofollow sponsored noopener" to affiliate links and attach a disclosure at the…

★ 5/5·400+ installs·Updated 28 May 2026