Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/duppinstech/landing-page-manager/releases/download/v1.0.16/landing-page-manager.zipManage multi-client landing pages with subdomain routing, templates, and optional conversion tracking (with Pro).
Description
Landing Page Manager is a WordPress plugin for creating and managing landing pages across multiple clients. It provides:
- Landing Page post type — Dedicated content type for landing pages
- Client taxonomy — One client per brand, with its logo, colors, address, phone and website. The client's slug becomes its subdomain. A landing page's own "Page phone" overrides the client's phone on that page.
- Keyword taxonomy — Tag pages by keyword/campaign
- Templates — One site-wide template (Whiterail AI, Whiterail Recruits, QuickTow), each with its own fields, chosen in Settings → Templates
- Dashboard — Overview, quick stats, and links to Clients, Keywords, and Analytics
- Analytics (Pro) — Page views, conversions, click tracking, heatmaps, rage clicks and form analytics. Without Pro, this screen shows an upgrade prompt.
- Settings — Templates, API keys (Google Maps browser key, Google Maps server key, Brandfetch), and (with Pro) conversion-tracking toggles
API keys are stored in Settings and are never hardcoded. Google and Brandfetch bill usage to the account that owns each key, so set quotas and budget alerts. All sensitive options are saved via the plugin’s settings UI only.
Requirements
- WordPress 5.9+
- PHP 7.4+
- Composer (for development)
- Optional: Landing Page Manager Pro (analytics and conversion tracking) is coming soon. Contact Duppins Technology for early access.
Installation
- Clone or download this repository into
wp-content/plugins/landing-page-manager. - From the plugin directory, run
composer install(if you have Composer) to install Carbon Fields and other dependencies. - In WordPress admin, go to Plugins and activate Landing Page Manager.
- Go to Landing Pages → Settings to set the default template and (optionally) API keys.
If you use the Pro add-on, install and activate it in a separate plugin directory (e.g. wp-content/plugins/landing-page-manager-pro). Pro is maintained in its own repository.
Usage
- Landing Pages — Add and edit landing pages; assign Client and Keyword terms.
- Clients — Add clients; optionally set logo, colors, and domain. The landing page template is chosen globally in Settings → Templates.
- Keywords — Add keyword/campaign terms for organizing pages.
- Dashboard — View counts and quick links.
- Analytics (Pro) — View page views, conversions, engagement, heatmaps, rage clicks.
- Settings — Templates tab: choose default template. API Keys tab: Google Maps browser key (restrict it to your site and
https://*.yourdomain/*for client subdomains), Google Maps server key (restrict it by IP; it needs the original Places API), Brandfetch API key, and Additional Scripts (printed at the bottom of every landing page; only administrators can change them, and they print only after an administrator saves or approves them). Conversion Tracking tab (Pro): enable/disable tracking options. Updates tab: shows where updates come from (GitHub Releases). Uploaded templates are stored inside the plugin folder and are deleted by plugin updates; keep the .zip and upload it again after each update.
Updates from GitHub
Updates come only from this repository's GitHub Releases. The plugin header sets Update URI: https://github.com/duppinstech/landing-page-manager, so WordPress never asks WordPress.org about this plugin, and a different plugin published there under the same name can't be offered as an update. The plugin checks the GitHub releases API and caches the latest release for 6 hours (30 minutes after a failed check). It installs the landing-page-manager.zip asset attached to the release, and falls back to GitHub's source zip (with development files excluded) if the asset is missing.
Recommended release flow:
- Bump
Versioninlanding-page-manager.phpand updateCHANGELOG.md. - Commit and push to
main. - Push a tag
vX.Y.Zmatching the version (e.g.git tag v1.0.7 && git push origin v1.0.7). - The Release GitHub Action lints, checks the tag matches
Version, buildslanding-page-manager.zip(top-level folderlanding-page-manager/, dev files excluded via.distignore), and creates the GitHub Release with the zip attached. - On WordPress, open Plugins and click Check for updates under Landing Page Manager. (Dashboard → Updates → Check Again can show a result up to 6 hours old.)
To build the zip locally: bin/build-zip.sh (uses zip, or Python if zip is missing). The zip is not committed.
Uninstalling
Deleting the plugin removes its settings. Landing pages, clients and keywords are kept. To delete those too, add define( 'LPMANAGER_UNINSTALL_DELETE_CONTENT', true ); to wp-config.php before deleting.
Developer hooks
lpmanager_load_jquery(filter,bool $load, int $post_id): returntrueto load jQuery on landing pages whose template doesn't need it. It also loads automatically when Additional Scripts or a client's Header Tracking Code mention jQuery or a Google Tag Manager container. Operators can force it per client with the Tracking tags need jQuery box.lpmanager_unwanted_styles,lpmanager_unwanted_style_patterns,lpmanager_unwanted_scripts(filters): styles and scripts removed from landing pages.lpmanager_template_for_post(filter,string $slug, int $post_id): the template a landing page uses. Defaults to the site-wide template; an unknown slug falls back to it.lpmanager_iframe_src_patterns(filter,string[]): anchored PCRE patterns an iframesrcmust fully match to be kept in rich-text template fields. Defaults cover YouTube/embed/, Vimeo/video/and Google Maps/maps/embed(https only). Kept iframes are rebuilt with a fixed set of attributes.lpmanager_landing_page_footer(action): output in the landing page footer. Additional Scripts print here.lpmanager_allowed_footer_callbacks(filter,string[]): other plugins'wp_footercallbacks to keep on landing pages, which otherwise drop them. Use'function_name'or'Class_Name::method'.
Development
- Run
composer installto install dependencies. - The Pro plugin (
landing-page-manager-pro) is ignored by this repo’s.gitignore; manage it in a separate repository.
License
GPL-2.0-or-later. See LICENSE for details.
Author
Odell Duppins
Releases
6 releases. Each count is every asset in that release; expand a row for the breakdown.
Active-site estimate ≈10 comes from the v1.0.14 cohort. Method.