GHL WordPress Setup Procedures
Purpose
This document provides step-by-step procedures for setting up and configuring WordPress hosting on the GoHighLevel platform.
Document Relationship:
- SC WordPress Stack Standard: Defines WHAT (approved components, prohibited plugins, approval process)
- Integration Guide: Explains WHY (architecture, strategy, design patterns)
- Setup Procedures (this doc): Explains HOW (step-by-step configuration)
Prerequisites
Required Access
- Active GoHighLevel Agency account
- WordPress hosting plan purchased through GHL
- Domain ownership or ability to modify DNS settings
- Access to client sub-account (if setting up for client)
Important Notes
- WordPress hosting plans are in addition to the HighLevel plan (e.g., HighLevel Starter $97/mo + WordPress Standard $10/mo = $107/mo)
- Setup includes domain DNS configuration which can take up to 48 hours to propagate
WordPress Hosting Plans Overview
Key Features Included
- Global CDN network for fast loading times
- Automatic daily backups at 05:00 AM CST
- Manual backup capability
- WordPress debugging tools and PHP error access
- phpMyAdmin database management
- FTP access available
Procedure 1: Enabling WordPress for Sub-Accounts
Step 1: Enable WordPress Feature
WordPress is hidden from all clients by default and must be enabled:
- Navigate to Agency View > Sub-Accounts
- Select the target sub-account
- Toggle the "Offer WordPress" option to make the WordPress menu available
- The WordPress option will now appear under Sites > WordPress
Step 2: Purchase WordPress Plan
- Go to Agency View > Reselling > WordPress
- Select appropriate plan for client needs
- Configure pricing markup if reselling to clients
- Complete purchase to activate hosting
Procedure 2: Creating a New WordPress Site
Step 1: Initial Site Setup
-
Navigate to Sites > WordPress and click "+ Create Site"
-
Configure Site Details:
- Site name and description
- Administrator username and password
- Administrator email address
- Select "I want to create a new website"
-
Installation Process:
- Installation takes a few minutes to complete
- System will provision WordPress instance
- You'll receive access to WordPress dashboard
Step 2: Domain Configuration
For New Domain Setup:
- In WordPress dashboard, click "Add Domain"
- Enter desired domain name
- System will verify if domain is available and not associated with another location
DNS Configuration Required:
- For subdomain (blog.domain.com): Add CNAME record pointing to provided value
- For root domain (domain.com): Add A record pointing to provided IP address
Procedure 3: Domain Setup and DNS Configuration
Method 1: Automatic Setup (Recommended)
Supported Providers: Google Domains, GoDaddy, Cloudflare, IONOS
-
In GHL WordPress Dashboard:
- Enter domain name
- Click "Configure Domain" if available
- System detects DNS provider automatically
-
Authorization Process:
- Click "Authorize Domain" when prompted
- Login to DNS provider (in new tab)
- Follow authorization prompts
- Close provider tab after authorization
- Return to GHL to complete verification
Method 2: Manual DNS Setup
For Other Providers: Namecheap, Bluehost, etc.
-
Get DNS Records from GHL:
- WordPress dashboard will display required records
- Note the CNAME and A record values
- Copy TXT records for SSL verification
-
Add Records to DNS Provider:
For Subdomain (www.domain.com or blog.domain.com):
Type: CNAME
Name: www (or subdomain prefix)
Value: [provided value like wp1.msgsndr.com]
TTL: 600 (or lowest available)For Root Domain (domain.com):
Type: A
Name: @ (or leave blank)
Value: [provided IP address]
TTL: 600 (or lowest available)For SSL Certificate:
Type: TXT
Name: [provided name]
Value: [provided verification string]
TTL: 600 (or lowest available)
Critical DNS Settings
- For Cloudflare users: Set proxy status to "DNS Only" (gray cloud icon)
- Configure TTL to 600ms or lowest possible for optimal propagation
- Ensure no duplicate A records exist for the same domain
Verification Process
-
In WordPress Dashboard:
- Click "Verify DNS Records"
- Monitor status using 'Verified/Not Verified' tags
- Check SSL certificate status with 'SSL Issued/SSL Not Issued' tags
-
Propagation Timeline:
- Most DNS updates activate within an hour
- Global propagation can take up to 48 hours
- Use tools like https://dnschecker.org/ to verify propagation status
Procedure 4: Migrating Existing WordPress Sites
Overview
Migrating an existing WordPress site to GHL hosting requires a two-stage DNS process to verify domain ownership while keeping the current site live during migration.
Step 1: Prepare Migration
-
In Sites > WordPress:
- Select "I want to move my existing website over"
- System provides a randomly generated verification CNAME
- Note this verification subdomain and target value
-
Backup Current Site:
- Install All-in-One WP Migration plugin on existing site
- Navigate to All-in-One WP Migration > Export
- Select "Export To > File"
- Download backup file to local computer
- Keep backup file accessible for later upload
Step 2: Domain Verification (Stage 1)
Purpose: Verify domain ownership without affecting live site
-
Create Verification DNS Record:
- Log into your DNS provider
- Add new CNAME record with values from GHL:
Type: CNAME
Name: [provided verification subdomain, e.g., verify-abc123]
Value: [provided target, e.g., verify.msgsndr.com]
TTL: 600
-
Verify in GHL:
- Return to GHL WordPress setup
- Click "Verify Domain Ownership"
- Wait for verification confirmation
- Do not proceed until verification succeeds
Step 3: Site Migration
-
Access New WordPress Instance:
- After verification, GHL provisions your WordPress instance
- Access via provided temporary URL or wp-admin
- Log in with credentials created during setup
-
Install Migration Plugin:
- In new WordPress instance, install All-in-One WP Migration
- Activate the plugin
-
Import Backup:
- Navigate to All-in-One WP Migration > Import
- Click "Import From > File"
- Upload backup file from Step 1
- Confirm import and wait for completion
- Plugin will restore entire site (content, plugins, themes, settings)
-
Update URLs:
- Navigate to Settings > General
- Update "WordPress Address (URL)" to your final domain
- Update "Site Address (URL)" to your final domain
- Save changes
Step 4: DNS Cutover (Stage 2)
Purpose: Point production domain to new GHL WordPress instance
Important: Only proceed when site is fully migrated and tested on temporary URL
-
Update DNS Records:
- Log into DNS provider
- Modify or add production domain records:
For www subdomain:
Type: CNAME
Name: www
Value: [provided by GHL, e.g., wp1.msgsndr.com]
TTL: 600For root domain:
Type: A
Name: @ (or leave blank)
Value: [IP address provided by GHL]
TTL: 600For SSL certificate:
Type: TXT
Name: [provided by GHL]
Value: [verification string provided by GHL]
TTL: 600 -
Remove Old Records:
- Delete or disable old A/CNAME records pointing to previous host
- Keep only the new GHL-pointing records
- For Cloudflare: Ensure proxy is OFF (gray cloud)
-
Verify Propagation:
- Use https://dnschecker.org/ to monitor DNS propagation
- Check that domain resolves to new GHL IP
- Test site access at production URL
- Verify SSL certificate issues successfully
Step 5: Post-Migration Validation
-
Functionality Testing:
- Test all pages load correctly
- Verify forms submit properly
- Check embedded media displays
- Test mobile responsiveness
- Confirm admin panel access
-
Performance Testing:
- Check page load speeds
- Verify CDN is active
- Test from multiple geographic locations
-
SEO Validation:
- Verify site is accessible to search engines
- Check robots.txt file
- Confirm XML sitemap is accessible
- Validate structured data/schema markup
-
Integration Testing:
- Test LeadConnector plugin functionality
- Verify GHL forms work correctly
- Check chat widget loads properly
- Confirm calendar embeds function
-
Backup Verification:
- Confirm GHL automatic backups are running
- Create manual backup of successfully migrated site
- Document backup restoration process if needed
Procedure 5: Post-Setup Configuration
The standard plugin and theme stack is defined in the SC WordPress Stack Standard. This procedure covers installation and initial configuration of each component.
5.1 Install and Configure Astra Theme
-
Install Astra:
- Navigate to Appearance > Themes > Add New
- Search "Astra" and click Install, then Activate
-
Configure via WordPress Customizer:
- Open Appearance > Customize
- Site Identity: Upload client logo (recommended: SVG or transparent PNG, max 200px height) and favicon (512x512 PNG)
- Colors: Set primary brand color (links, buttons), heading color, body text color, site background
- Typography: Configure primary font (headings) and secondary font (body text). Set base font size to 16px minimum.
- Layout: Select page layout (full-width recommended for Elementor sites), set container width (1200px default)
- Header: Configure header layout, logo position, and menu style. Set transparent header if needed for hero sections.
- Footer: Configure footer layout, copyright text, and widget areas
- Click Publish to save all changes
-
Import Starter Template (optional):
- Navigate to Appearance > Starter Templates
- Select Elementor as page builder
- Browse templates by industry or style
- Import selected template, then customize for client brand
5.2 Install and Configure Elementor + Elementor Pro
-
Install Elementor Free:
- Navigate to Plugins > Add New
- Search "Elementor" and click Install, then Activate
-
Install Elementor Pro:
- Navigate to Plugins > Add New > Upload Plugin
- Upload the Elementor Pro zip file (from agency license dashboard)
- Click Install Now, then Activate
- Enter the agency license key when prompted
-
Disable Default Colors and Fonts:
- Navigate to Elementor > Settings > General
- Check "Disable Default Colors"
- Check "Disable Default Fonts"
- This forces Elementor to use the global design system instead of its own defaults
-
Configure Global Design System:
- Open any page with Elementor editor
- Click the hamburger menu (top-left) > Site Settings
- Global Colors: Define 6-8 colors matching client brand. Name functionally (e.g., "Primary", "Accent", "Text") not descriptively (e.g., "Blue").
- Global Fonts: Configure primary font (headings) and secondary font (body). Set heading hierarchy (H1: 32-48px, H2: 24-32px, H3: 20-24px, Body: 16-18px).
- Theme Style > Buttons: Set default button colors, border radius, padding (44px minimum touch target)
- Save all settings
-
Enable Performance Features:
- Navigate to Elementor > Settings > Features
- Enable Improved CSS Loading
- Enable Optimized DOM Output
5.3 Install and Configure SearchAtlas OTTO
-
Install SearchAtlas Plugin:
- Navigate to Plugins > Add New
- Search "SearchAtlas" and click Install, then Activate
-
Install OTTO Pixel:
- Log in to SearchAtlas dashboard (searchatlas.com)
- Navigate to OTTO > Pixel Installation
- Copy the OTTO pixel code (JavaScript snippet)
- In WordPress, navigate to SearchAtlas > Settings
- Paste the pixel code and save
- Verify pixel is firing: open browser console on the frontend, confirm no JavaScript errors from the pixel
-
Connect Google Search Console:
- In SearchAtlas dashboard, navigate to Settings > Integrations
- Click Connect Google Search Console
- Authorize the Google account that owns the site's GSC property
- Select the correct property and allow data import
- Verify site ownership shows as confirmed
-
Configure Automation Settings:
- In SearchAtlas dashboard, navigate to OTTO > Settings
- Set auto-implementation to ON for technical fixes (broken links, canonical tags, schema)
- Set content changes (title tags, meta descriptions) to Recommend (requires human approval)
- Configure notification settings (email alerts for critical issues)
- Review the initial SEO audit and address any critical findings
5.4 Install and Configure LeadConnector
-
Install LeadConnector Plugin:
- Navigate to Plugins > Add New
- Search "LeadConnector" and click Install, then Activate
-
Authorize GHL Sub-Account:
- Navigate to LeadConnector > Settings
- Click Authorize and log in to the GHL account
- Select the correct sub-account from the dropdown
- Verify connection shows as "Connected" with the correct location name
-
Configure Webchat Widget:
- Navigate to LeadConnector > Chat Widget
- Select the default chat widget configured in the GHL sub-account
- Set display rules: all pages (default) or specific pages as needed
- Configure widget position (bottom-right default) and style to match brand
- Test: Visit the frontend, confirm widget appears, send a test message, verify it routes to GHL Conversations inbox
-
Verify Form Integration:
- Navigate to LeadConnector > Forms
- Confirm GHL forms from the sub-account appear in the dropdown
- Test embedding a form on a page using the Elementor LeadConnector widget or shortcode
[ghl_form id="FORM_ID"] - Submit a test form entry and confirm it appears in GHL CRM with correct pipeline routing
5.5 Post-Configuration Verification
After all components are installed, run through this checklist:
- Astra theme active with client branding (logo, colors, fonts)
- Elementor Pro license activated and connected
- Global design system configured (colors, fonts, button styles)
- SearchAtlas OTTO pixel firing (check browser console)
- Google Search Console connected in SearchAtlas
- LeadConnector connected to correct GHL sub-account
- Chat widget visible on frontend and routing messages to GHL
- At least one test form submission successfully reaches GHL CRM
- Site loads in under 3 seconds (test with Google PageSpeed Insights)
- Mobile responsive -- test at 320px, 768px, and 1024px breakpoints
Procedure 6: Additional Domain Management
Adding Additional Domains
- In WordPress Dashboard:
- Navigate to domain management section
- Click "Add Domain"
- Enter additional domain name
- Follow DNS configuration process (see Procedure 3)
Changing Primary Domain
-
In WordPress Dashboard:
- Navigate to domain management
- Select new primary domain from list
- Confirm domain change
- Update WordPress URL settings if needed
-
Update Settings:
- Navigate to Settings > General
- Verify WordPress Address and Site Address match new primary domain
- Save changes
SSL Certificate Management
Automatic SSL:
- GHL automatically provisions Let's Encrypt SSL certificates
- Certificates auto-renew before expiration
- Monitor SSL status in WordPress dashboard
Manual SSL Certificate:
- Obtain SSL certificate from provider
- Contact GHL support to install custom certificate
- Provide certificate, private key, and chain files
Procedure 7: Backup and Restore
Manual Backup Creation
- In WordPress Dashboard:
- Navigate to backup section
- Click "Create Manual Backup"
- Add backup description/label
- Confirm backup creation
- Wait for backup completion
Backup Download
- Access Backup List:
- Navigate to backup management
- Locate desired backup
- Click "Download"
- Save backup file locally
Backup Restoration
- In WordPress Dashboard:
- Navigate to backup section
- Locate backup to restore
- Click "Restore"
- Confirm restoration
- Wait for process to complete
- Verify site functionality after restoration
Procedure 8: Database and FTP Access
phpMyAdmin Access
-
In GHL WordPress Dashboard:
- Navigate to advanced settings
- Click "phpMyAdmin Access"
- System opens phpMyAdmin interface
- Log in with provided credentials
-
Database Operations:
- Select WordPress database
- Execute queries carefully
- Always backup before database modifications
- Document all changes made
FTP Access Configuration
-
Request FTP Credentials:
- Contact GHL support for FTP access
- Receive FTP host, username, and password
- Note: FTP may not be available on all plans
-
Connect via FTP Client:
- Use FileZilla or similar FTP client
- Enter host, username, password
- Connect to WordPress file system
- Navigate to /wp-content/ for themes/plugins
Troubleshooting Common Issues
DNS Not Propagating
Symptoms: Domain not resolving to new site after 24+ hours
Solutions:
- Verify DNS records exactly match GHL-provided values
- Check for duplicate or conflicting records
- For Cloudflare: Ensure proxy is OFF (gray cloud)
- Clear local DNS cache:
ipconfig /flushdns(Windows) orsudo dscacheutil -flushcache(Mac) - Test with multiple DNS checker tools
SSL Certificate Not Issuing
Symptoms: Site shows "Not Secure" or certificate error
Solutions:
- Verify TXT record for SSL verification is present
- Confirm DNS records are fully propagated
- For Cloudflare: Disable "Always Use HTTPS" temporarily
- Wait 24-48 hours for certificate issuance
- Contact GHL support if issue persists beyond 48 hours
Migration Site Not Loading Correctly
Symptoms: After migration, site shows errors or missing content
Solutions:
- Verify WordPress Address and Site Address are correct in Settings > General
- Clear WordPress cache if caching plugin is active
- Regenerate permalinks: Settings > Permalinks > Save Changes
- Check file permissions are correct (755 for directories, 644 for files)
- Review PHP error logs for specific error messages
Forms Not Submitting to GHL
Symptoms: Forms appear but submissions don't reach GHL CRM
Solutions:
- Verify LeadConnector plugin is active and connected
- Check form embed code is correct
- Test form directly in GHL to isolate issue
- Review browser console for JavaScript errors
- Confirm GHL sub-account connection is valid
Support and Resources
GHL Support
- WordPress hosting support: Available 24/7
- Submit tickets through GHL support portal
- Live chat available for urgent issues
Documentation
- GHL WordPress documentation: https://help.gohighlevel.com
- WordPress codex: https://wordpress.org/support/
- Elementor documentation: https://elementor.com/help/
Internal Resources
- WordPress + GHL Developer Guide (strategic/architectural reference)
- Symphony Core documentation repository
- #wordpress-support Slack channel
Document Maintenance
Review Schedule: Quarterly or when GHL updates WordPress hosting features
Update Triggers:
- GHL WordPress hosting platform updates
- DNS configuration process changes
- New troubleshooting patterns identified
- Support ticket trend analysis
Feedback: Submit suggestions to #documentation channel
Document Status: Active
Last Updated: 2026-02-28
Version: 3.0 (Enhanced Procedure 5 with detailed Astra/Elementor/SearchAtlas/LeadConnector configuration steps)