GoHighLevel (GHL)
By Camilo Aponte
By Camilo Aponte
🚀 Bulk SEO Title Updates for GHL Blogs
🗺️ Overview Updating SEO titles one by one across dozens of GoHighLevel (GHL) blog posts is time-consuming. This article walks you through the fastest workflow for bulk SEO title updates using Search Atlas, so agencies can optimize 50+ blogs in a single session without manual, post-by-post edits. ⚙️ How GHL Blog SEO Titles Work in Search Atlas Search Atlas connects to your GHL site through the OTTO SEO integration. Once your site is active inside OTTO, Search Atlas can read your GHL blog pages, surface SEO issues (including missing or weak title tags), and push optimized titles back to your site automatically. Important: OTTO must be installed and set to Active status for your GHL site before bulk title changes can be applied. If OTTO is not yet connected, follow the steps in the Installation Guide inside the OTTO SEO section of the platform. 🔍 Step 1 — Locate Your GHL Site in OTTO SEO 1. In the left sidebar, click OTTO SEO. 2. You will land on the All Sites view. Find your GHL site in the list. The status badge should read Active. 3. Click the site name to open its Overview dashboard. 📊 Step 2 — Run or Refresh a Site Audit 1. Inside the site Overview, click Scan in the top-right area to trigger a fresh crawl of your GHL blog pages. This ensures OTTO has the latest data before you make changes. 2. When the scan completes, click All Audits in the left sidebar under OTTO SEO to review the full list of detected issues. 3. Filter or search for title tag issues to isolate the blog posts that need updates. OTTO groups issues by type, so all missing or duplicate title issues appear together. ✏️ Step 3 — Apply Bulk SEO Title Updates OTTO surfaces title tag recommendations for every affected page. To update titles in bulk across your GHL blogs: 1. In the All Audits view, select the title-tag issue category. You will see a list of all affected blog posts. 2. Review OTTO's suggested SEO title for each post. OTTO generates keyword-aligned titles based on each page's content and your connected Brand Vault settings. 3. Use the Clear selection control to deselect any posts you want to skip, then select all remaining posts you want to update at once. 4. Click the bulk-apply action to push the optimized titles to all selected GHL blog pages simultaneously. OTTO writes the changes directly to your GHL site — no manual copy-paste required. Tip for agencies: Before running a bulk apply on a large set, spot-check 3–5 suggested titles to confirm OTTO's output matches your client's tone and target keywords. You can edit any individual suggestion inline before applying. 💡 Quick Workflow for 50+ Blog Posts - Scan first: Always click Scan on the Overview page before a bulk session to get fresh crawl data. - Filter by issue type: In All Audits, filter by title-tag issues so you only see the pages that need attention — no scrolling through unrelated findings. - Use Brand Vault: Open the Brand Vault (available from the Overview page) and confirm your client's brand name, primary keywords, and tone settings are up to date. OTTO uses this data to personalize every generated title. - Select all, then deselect exceptions: It is faster to select all flagged posts and deselect the few you want to review manually than to select posts one by one. - Re-scan after applying: Run a second Scan once changes are pushed to confirm all title issues are resolved and no new issues were introduced. 🛠️ Troubleshooting Common Issues - OTTO shows the site as Deep Frozen: A Deep Frozen site will not push changes to GHL. Go to All Sites, select the site, and reactivate it before proceeding. - Bulk apply button is greyed out: This usually means no posts are selected, or the site scan is still in progress. Wait for the scan to finish, then try selecting posts again. - Title changes are not appearing on the live GHL site: Allow a few minutes for GHL to propagate the updates. If titles are still missing after 10 minutes, re-scan to verify the changes were written successfully. - OTTO is not detecting GHL blog pages: Confirm the OTTO installation snippet is correctly placed on your GHL site by following the Installation Guide under OTTO SEO in the left sidebar. 💬 Need More Help? If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🔌 Fix OTTO GHL Subaccount Connection Issues
🔍 Overview Search Atlas can publish content (for example Content Genius articles) directly to your GoHighLevel (GHL) subaccount via a CMS connector — but the connection must be configured correctly before articles can go live. To connect, go to the top-right avatar menu → Settings → CMS Connectors → Add Connector → GoHighLevel. Note: this CMS connector does not install OTTO — OTTO on a GoHighLevel site still uses the OTTO pixel. If the integration is not connecting as expected, this guide explains what to check and what information to have ready when contacting our support team. ✅ Before You Begin Confirm the following before troubleshooting the connection: - You are using a GHL subaccount API token. Search Atlas requires a subaccount-specific token to publish content. - Your GHL subaccount has website/blog functionality enabled. If blogs are not active on the subaccount, publishing will fail even with a valid token. - You have at least one blog set up inside the GHL subaccount. OTTO needs an existing blog destination to publish to. - Your GHL account is on a plan that supports API access. Check your GHL subscription if you are unsure. ⚠️ Common Things to Check When the Connection Fails - Confirm your API token is from the correct subaccount level: Make sure the token was generated from inside the specific GHL subaccount you want to connect, not from the agency dashboard. - Check whether the blog feature is active on the subaccount: In GHL, blog publishing may need to be enabled at the subaccount level. Confirm the blog section is visible and accessible inside the subaccount. - Confirm at least one blog exists in the subaccount: OTTO requires an existing blog destination. If no blog has been created yet, set one up in GHL before attempting to connect. 📋 What to Have Ready When Escalating If the connection still does not work after checking the above, our support team will need the following details to investigate: - Your Search Atlas project name and the GHL subaccount you are trying to connect - A description of exactly what happens when you attempt to connect (e.g., any error message shown, word for word) - The timestamp of when the issue occurred - Confirmation of whether your GHL plan includes API access If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🔧 Fix GHL Connector Errors and Insert Blog Links
Overview This article covers two common issues you may encounter in Search Atlas: a 400 error when connecting a GoHighLevel (GHL) connector, and how to insert internal or external links into your blog posts. Follow the sections below for guidance on each issue. Part 1: GHL Connector — 'Request Failed with Status Code 400' A 400 error when adding a GHL connector means the platform rejected the request before a connection could be established. This is most commonly caused by expired, revoked, or incorrectly entered GHL credentials. How to Fix the GHL 400 Error Try the following steps to resolve the issue: 1. Go to your GoHighLevel account settings and verify that your API key or access token is still active and has not been revoked. 2. In Search Atlas, navigate to Settings > CMS Connectors (via the top-right avatar menu) and remove the existing GHL connector. 3. Re-add the GHL connector by entering your credentials fresh — do not reuse a previously copied key without confirming it is current. 4. If your GHL account uses location-level API keys, make sure you are using the key for the correct sub-account or location. 5. Save and test the connection again. If the 400 error persists after re-entering valid credentials, the issue may require investigation on the backend. When escalating, please have the following ready: - Your Search Atlas account email - The exact error message (a screenshot is helpful) - The timestamp when the error first occurred - The GHL credentials or API key details you have already tried Part 2: Inserting Links into Blog Posts You can insert internal or external links into your blog posts directly within the Search Atlas content editor. Follow these steps: 1. Open the blog post you want to edit in the Search Atlas content editor. 2. Highlight the anchor text — the word or phrase you want to turn into a link. 3. With the text highlighted, click the link icon in the editor toolbar (it looks like a chain or paperclip icon). 4. In the link dialog that appears, paste the URL you want to link to — this can be an internal page on your site or any external URL. 5. Confirm or save the link. The highlighted text will now be clickable. To remove a link, highlight the linked text and click the link icon again, then select the option to remove or unlink. If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🛠️ GHL Bulk URL Analyzer: Valid URL Formats, Validation Rules & Error Troubleshooting
The GHL Bulk URL Analyzer processes multiple URLs at once to surface SEO insights at scale. Submitting URLs in the correct format prevents validation errors and ensures every URL in your list returns accurate results. ✅ Accepted URL Formats Every URL you submit must meet the following requirements: - Full protocol required: URLs must begin with https:// or http:// — for example, https://example.com/page - Valid domain and TLD: The domain must include a recognized top-level domain (TLD) such as .com, .org, .net, or .io - One URL per line: Enter each URL on a separate line with no commas or semicolons between entries - Full paths accepted: You may include subpaths, slugs, and query parameters — for example, https://example.com/blog/post-title - Mixed URL types supported: You can submit domains, subdomains, and target page URLs together in a single list — the analyzer automatically classifies each URL by type, so no manual pre-sorting or mode selection is required - Query strings with multiple parameters: URLs containing & in query strings (such as UTM parameters like ?utm_source=newsletter&utm_medium=email) are accepted. If you encounter validation errors on a multi-parameter URL, please report it to support so we can verify the validator behavior for your case When formatted correctly, the analyzer accepts your list and queues it for processing — results will appear in your list once complete, which may take a few moments depending on the number of URLs submitted. 🆕 What's New: Automatic URL Classification The analyzer now automatically detects whether each submitted URL is a domain, subdomain, or page-level URL. The previous manual mode-selection step has been removed, so you can paste any combination of URL types into a single batch without sorting them first. Each URL is classified individually and processed according to its detected type. ❌ URL Formats That Fail Validation The following formats are invalid and will cause the analyzer to reject your submission or return an error: - Missing protocol: www.example.com — every URL must include https:// or http:// - No recognized TLD: www.hp — a domain without a valid, recognized TLD will not be accepted - Subdomain typos: https://wwww.example.com (four w's instead of three) is treated as a malformed URL - Plain text or keywords: Entering a brand name or keyword phrase instead of a full URL will fail validation Remove or correct any invalid URLs before resubmitting your list. 🧾 How Invalid URLs Are Handled in a Batch When a list contains a mix of valid and invalid URLs, the analyzer flags the invalid entries and processes the valid ones rather than rejecting the entire batch. Invalid URLs are surfaced with an error indicator in the results view so you can identify exactly which entries need to be corrected. To resubmit, copy the flagged URLs, fix the formatting issue (missing protocol, invalid TLD, typo, etc.), and submit them as a new batch — there is no need to re-run URLs that already processed successfully. ⚠️ Understanding the "Request Failed with Status Code 500" Error You may see a "Request failed with status code 500" error when both of the following conditions are true: - Your previously analyzed URLs list is empty — no prior analyses exist in the tool yet - One or more URLs in your current submission are malformed, missing a protocol, or have an unrecognized TLD A 500 error is most often triggered by invalid input rather than a system outage, but it can also occur in the following situations: - Malformed batch: A single malformed URL in the list can cause the entire submission to fail when no prior analyses exist - Server-side processing failure: Occasional backend issues during bulk processing - Network timeout: Very large batches may exceed processing limits and time out - Special characters: Unencoded special characters in URLs can break validation To resolve it: 1. Review each URL in your list and confirm it starts with https:// or http:// 2. Check that every domain includes a recognized TLD such as .com or .net 3. Remove any partial domains, plain-text entries, or URLs with misspelled subdomains 4. Reduce the batch size if you submitted a very large list, and try again in smaller groups 5. Check for and remove any unencoded special characters 6. Resubmit the corrected list After resubmitting a valid list, the analyzer processes your URLs without the 500 error. If the error persists after confirming all URLs are valid and reducing batch size, contact support with a sample of the URLs you're submitting so the team can investigate. 🔍 Don't See Your Results Yet? If you submitted URLs successfully but don't see them in the results list right away, the submission likely did go through. Newly processed URLs may appear further down the list rather than at the top. To find them: - Scroll down through the existing results list - Use the Prev / Next Page buttons at the bottom of the list to navigate through additional entries - Refresh the tab if results still aren't visible — processing may still be completing in the background Avoid resubmitting the same URLs multiple times while waiting, as this can create duplicate analyses. 💡 Tips for Preparing a Clean URL List Follow these practices before pasting URLs into the Bulk URL Analyzer: - Copy URLs directly from your browser address bar — this guarantees the protocol is included - If exporting from a spreadsheet, verify that https:// is concatenated with the domain column before pasting - Check for leading or trailing spaces around each URL — extra whitespace can cause individual entries to fail - Prefer https:// over http:// for accuracy on SSL-enabled pages A clean URL list reduces submission errors and ensures the analyzer returns results for every URL in your batch. 🎯 You now know which URL formats the GHL Bulk URL Analyzer accepts and how to correct the most common validation errors. For analyzing your full site's pages in bulk at the domain level, see the Site Audit article in this Help Center.
🔗 GHL Child Accounts and the Hidden Billing Tab
🧭 Overview If you are an Admin in Search Atlas but cannot find the Billing section inside your account settings, the most common reason is not a permissions error — it is your account type. Search Atlas accounts provisioned through GoHighLevel (GHL) as a Child account do not display the Billing tab at all, regardless of your role. This article explains why, and shows you exactly how to upgrade your plan. 🔍 What Is a GHL Child Account? Search Atlas integrates with GoHighLevel (GHL) so that GHL agency owners can provision Search Atlas access directly from their GHL dashboard. This creates two distinct account types: - Parent account: The GHL agency owner's Search Atlas account. This account holds the active subscription and has full access to Billing. - Child account: A Search Atlas account created automatically when a GHL agency provisions access for one of their clients or sub-accounts. Child accounts are linked to the Parent's subscription and therefore have no independent Billing section. Because billing is managed entirely at the Parent level, Search Atlas intentionally hides the Billing tab from all Child accounts — including users with the Admin role. This is by design, not a bug or a permission misconfiguration. ⚠️ How to Confirm You Are on a GHL Child Account Before spending time troubleshooting permissions or refreshing your browser, confirm your account type with these steps: 1. Click your avatar in the top-right corner of the platform. 2. Select Team Members. You will be taken to /settings. 3. Look for any banner, label, or note that references GoHighLevel, GHL, or Agency provisioning near the top of the settings page. 4. If you see such a label, your account is a GHL Child account and Billing will not appear here. If you are still unsure, contact the agency or team that originally set up your Search Atlas access — they will be able to confirm whether they provisioned it through GoHighLevel. 💳 How to Upgrade Your Plan as a GHL Child Account Because your subscription is controlled by the GHL Parent account (your agency owner), you have two paths to upgrade: - Option 1 — Ask your agency owner to upgrade: Reach out to the GoHighLevel agency that manages your account and ask them to upgrade the plan from their Search Atlas Parent account. All billing changes must originate there. - Option 2 — Migrate to a standalone Search Atlas account: If you want full control over your own subscription and Billing tab, you can create an independent Search Atlas account that is not linked to GHL. Our support team can guide you through migrating your data and settings without losing your work. 🚫 Troubleshooting Steps That Will Not Help If your missing Billing tab is caused by the GHL Child account structure, the following actions will not resolve it and can be skipped entirely: - Logging out and back in - Clearing your browser cache or switching browsers - Asking your agency owner to re-assign your Admin role - Removing and re-adding yourself as a Team Member These steps are valid for other UI or permissions issues, but they cannot override the structural design that hides Billing on GHL Child accounts. ✅ Quick Summary - GHL Child accounts never show the Billing tab — this is expected behaviour, not a bug. - Your Admin role does not change this; Billing is controlled at the GHL Parent (agency) level. - To upgrade, contact your agency owner or request a migration to a standalone account. If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🔗 GoHighLevel Integration: Features and Limitations Explained
🔍 Overview Search Atlas offers a GoHighLevel (GHL) integration that brings select tools directly into the GHL environment. However, the GHL integration does not include every feature available in the full Search Atlas platform. This article clarifies what is and is not available so you can plan your workflow accordingly. ✅ Features Available in the GoHighLevel Integration The GoHighLevel integration supports a subset of Search Atlas features. Not all tools from the full platform are replicated in the GHL environment. If you are unsure whether a specific feature is available in GHL, the safest approach is to log in to your full Search Atlas account and test access there. 🚫 Features NOT Available in the GoHighLevel Integration Several core Search Atlas features are not accessible through the GHL integration. Most notably: - Backlink purchasing is not available through GoHighLevel. There is no backlink package purchasing, no link-building order functionality, and no access to backlink marketplace tools within the GHL integration. Any claim that backlinks can be purchased via GHL is incorrect. - Backlink analysis tools — Tools for reviewing your backlink profile or identifying backlink gaps are not part of the GHL integration. - Authority-building tools — Various authority and campaign-related features available in the full platform are not accessible through GHL. - Agency whitelabel settings — Whitelabel configuration options are not available through the GHL integration. If any of these features are critical to your workflow, you must access them directly through your Search Atlas account at the full platform URL. 🛒 How to Purchase Backlinks in Search Atlas Backlink purchasing is only available inside the full Search Atlas platform. To access backlink tools and packages, log in to your Search Atlas account directly and navigate to the Backlinks section of the platform. From there you can review backlink options and explore available link-building packages. You cannot initiate or complete backlink purchases from within GoHighLevel. If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
GoHighLevel Integration: Image Duplication and Alphanumeric Naming
🖼️ Why Does the Featured Image Appear Twice? When you publish an article from Search Atlas to GoHighLevel, you may notice the featured image appears twice in the published blog post. This is a known behavior related to how GoHighLevel processes content received from external integrations. If you experience this, you can resolve it by editing the post directly inside GoHighLevel after publishing and removing the duplicate image from the article body. The featured image will continue to display correctly once the duplicate is deleted. ✅ How to Remove the Duplicate Image To fix the duplicate image, log in to your GoHighLevel account, navigate to your blog posts, open the affected article for editing, locate and delete the extra image from the body of the post, and then save or republish the article. 🔤 Why Is There an Alphanumeric Suffix in the Blog Name? When an article is published to GoHighLevel, the blog post slug or name may include a short alphanumeric suffix — for example, my-article-title-a1b2c3. This suffix is added by GoHighLevel and is not controlled by Search Atlas. If you need to clean up the slug, you can do so by editing the post inside GoHighLevel after publishing. Look for the slug or URL field within the post's editing options, update it to your preferred value, and save your changes. Tip: Before editing the slug, check that no other post in your GoHighLevel blog already uses the same URL, as a conflict may cause a suffix to be re-added. Archive or delete any duplicate posts first if needed. ⚙️ Can Search Atlas Prevent These Issues Automatically? These behaviors occur on the GoHighLevel side after content is published. If you continue to experience issues with image duplication or alphanumeric suffixes that cannot be resolved through post editing in GoHighLevel, please reach out to our support team with your project name and a description of the issue so we can investigate further. If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🌐 Find Your Public GHL Domain Anytime
🔍 What Is the Public GHL Domain? Every Search Atlas account built on GoHighLevel (GHL) comes with a permanent public domain assigned at the time of account creation. This domain exists regardless of whether you have connected a custom domain. It acts as a fallback URL and is always accessible, even if your custom domain expires or is disconnected. If you have always used a custom domain, your public GHL domain runs quietly in the background. You may never have seen it — but it is there. ⚠️ Why Settings > Domains Won't Show It Many users navigate to Settings > Domains expecting to see all their domains in one place. However, this section only displays domains you have manually connected to your account. Your default public GHL domain is not listed here because it is assigned at the platform level, not configured by you. 📋 How to Find Your Public GHL Domain Because the exact location of the public GHL domain within the GHL interface can vary depending on your account setup, the most reliable way to retrieve it is to contact our support team. To get help as quickly as possible, have the following ready before reaching out: - Your GHL sub-account name or ID - The custom domain currently connected to your account (if any) - A brief description of why you need the public GHL domain (e.g., fallback URL, DNS troubleshooting) A member of our team will locate your permanent public GHL domain and share it with you directly. ✅ Once You Have the Domain Once you have identified your public GHL domain, paste it into a new browser tab and press Enter to confirm it loads correctly. Copy and save it somewhere accessible for future reference, as it serves as a permanent fallback URL independent of any custom domain configuration. If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
💡 Understanding GHL Integration Pricing and Discounts
🔍 Overview Search Atlas integrates with GoHighLevel (GHL) to help agencies manage SEO services for their clients. The standard GHL integration is priced at $79/month per sub-account. This article explains how that pricing works, what discount options may be available, and how to submit a request for a custom introductory rate. 📊 Standard GHL Integration Pricing By default, each GHL sub-account connected through Search Atlas is billed at $79/month. This rate applies regardless of whether the sub-account belongs to an active client or a prospect you are onboarding. There is no automatic trial or reduced rate applied at the account level. 💰 Can I Get a Discounted Rate for Prospects? Some agency owners ask whether they can offer prospects a lower introductory rate — for example, $37/month for the first 30 days — before the price increases to the standard $79/month upon conversion. This type of tiered or introductory pricing is not available as a self-serve option in the platform at this time. However, custom pricing arrangements may be considered on a case-by-case basis. To explore this, you will need to speak directly with the Search Atlas team through the in-platform chat. Here is what to prepare before reaching out: - The number of prospects you are looking to onboard at the discounted rate - The proposed introductory period (e.g., 30 days) and the price point you are requesting - Your expected conversion rate or timeline for moving prospects to full-paying clients - Your current plan and account details so the team can review eligibility ⚙️ How GHL Sub-Account Billing Works Understanding the billing mechanics can help you plan your prospect onboarding strategy: 1. Sub-accounts are billed monthly from the date they are connected to your Search Atlas workspace. 2. Each sub-account is billed independently, so adding a prospect sub-account triggers the standard monthly charge unless a custom arrangement is in place. 3. Removing a sub-account before the billing cycle renews will stop future charges, but partial-month refunds are subject to Search Atlas refund policy. 4. Upgrades and changes to a sub-account's status (e.g., prospect to active client) do not automatically change the billing rate — pricing is set at the account configuration level. 🛠️ Steps to Request a Custom Introductory Rate 1. Log in to your Search Atlas account. 2. Open the chat widget in the bottom-right corner of the platform. 3. Type human teammate to be connected with a member of our team. 4. Explain your use case — include the number of prospects, the rate you are requesting, and the intended duration of the discount. 5. The team will review your account and respond with available options. Note: Custom pricing requests are not guaranteed and are reviewed based on account standing, volume, and business context. Submitting a request does not confirm approval. 💡 Tips for Managing Prospect Costs While waiting for a custom pricing decision, here are a few ways to manage costs when onboarding GHL prospects: - Only connect sub-accounts when ready to begin active SEO work. Avoid connecting a prospect's sub-account before you need to run campaigns or audits. - Use Search Atlas reporting tools to demonstrate value to prospects quickly, which can shorten the conversion timeline and reduce the number of months billed at prospect stage. - Track your sub-account list regularly to ensure you are not paying for inactive or stalled prospect accounts. 🤝 Need Further Help? If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
⚡ Automate SEO Audits with GoHighLevel and Make
Overview This article covers automating SEO audit workflows by connecting GoHighLevel, the Search Atlas API, Make (formerly Integromat), and Claude. Because the exact configuration steps — including API endpoints, UI navigation paths, module names, and parameter names — vary depending on your specific Search Atlas plan and the versions of each platform you are using, we are not able to provide a verified step-by-step walkthrough here. To get accurate, up-to-date guidance for your setup, we recommend the following: - Search Atlas API documentation: Log in to your Search Atlas account and locate the API or Developer section to find the correct endpoints, authentication methods, and available parameters for triggering and retrieving site audits. - Make (Integromat) help center: Refer to Make's official documentation for instructions on creating webhook triggers, HTTP request modules, and flow control modules within a scenario. - GoHighLevel support: Check GoHighLevel's documentation for how to configure forms and outbound webhooks so that form submissions can trigger external workflows. - Anthropic / Claude API documentation: Review Anthropic's developer docs for the correct endpoint and authentication approach for sending audit results to Claude for analysis. What to Prepare Before Contacting Support If you need help from our team to set up or troubleshoot this integration, please have the following ready: - Your Search Atlas plan name (API access is included on every plan, including Starter) - The exact error message or unexpected behavior you are encountering, with a timestamp - The names of the Make modules or GoHighLevel workflow steps where the issue occurs - Any request/response logs or screenshots that show what is being sent and received If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🕐 Scheduled Posts Syncing from Search Atlas to GoHighLevel
📋 Overview When you schedule a social or GBP post in Search Atlas, it is queued for publication and then synced to your connected GoHighLevel (GHL) account. This sync does not happen instantly — there is a processing window you should expect before the post appears inside GHL. ⏱️ How Long Does Syncing Take? Under normal conditions, a scheduled post created in Search Atlas will appear in GoHighLevel within a few minutes up to 1 hour after the scheduled publish time. The exact timing depends on: - Queue load: High-volume publishing periods may add a short delay to processing. - GHL API response times: Occasionally, GoHighLevel's API takes longer to acknowledge and reflect the incoming data on their end. - Post type and account configuration: Some post types or sub-account setups in GHL may surface synced content in different sections of the platform. If your post has not appeared in GHL within 2 hours of its scheduled time, this is outside the expected window and warrants further investigation. 📍 Where to Create and Schedule Posts in Search Atlas Posts are managed from Left sidebar → Local → Posts. From this screen you can create new posts, set a publish date and time, and connect your GHL integration before scheduling. 🔍 What to Check Before Contacting Support Before escalating, run through the checklist below — most delayed-sync issues are resolved at one of these steps: 1. Confirm the post status in Search Atlas: Go to Left sidebar → Local → Posts and verify the post shows a status of Scheduled or Published, not Draft or Failed. 2. Check the scheduled time and timezone: Make sure the publish time was set in the correct timezone. A mismatch between your Search Atlas account timezone and your GHL sub-account timezone is a common cause of apparent delays. 3. Verify the GHL integration is active: Confirm your GoHighLevel account is still connected and authorised. If the OAuth token has expired, posts will queue but not deliver. Reconnecting the integration and re-saving the post typically resolves this. 4. Look in the correct GHL location: Synced posts may appear under the Social Planner section of your GHL sub-account. If you are looking elsewhere in GHL, the post may already be there. 5. Wait the full 2-hour window: If the scheduled time was recent, allow the full 2 hours before treating it as a failed sync. ⚠️ Common Reasons a Post May Not Appear in GHL - The GoHighLevel integration was disconnected or the access token expired after the post was scheduled. - The post was saved as a Draft instead of being fully scheduled. - A timezone mismatch caused the post to be queued for a future time that has not yet been reached. - The GHL sub-account selected at the time of scheduling no longer matches the currently active integration. - A temporary GHL API outage delayed the handoff; these usually self-resolve within a few hours. 🔄 How to Resync or Reschedule a Post 1. Go to Left sidebar → Local → Posts. 2. Locate the affected post and open it for editing. 3. Verify all settings — GHL account, scheduled time, and timezone — are correct. 4. If the post status shows Failed, update the scheduled time to a near-future time and save it again to re-queue it for delivery. 5. Monitor the post status; it should update to Published once GHL confirms receipt. 💬 Need More Help? If you have followed all the steps above and your post still has not synced to GoHighLevel after 2 hours, our team can investigate the delivery logs directly. If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🕐 Understanding Search Atlas to GoHighLevel Scheduled Post Sync Timing
🔍 Overview When you schedule a post in Search Atlas and publish it to GoHighLevel (GHL), the post does not appear in GHL immediately after scheduling. Search Atlas sends the post to GoHighLevel at the exact date and time you set — not the moment you click Schedule. This is expected behavior, not a bug. ⏱️ How Sync Timing Actually Works Here is what happens step by step after you schedule a post in Search Atlas: 1. You set a future publish date and time in Search Atlas and confirm the schedule. 2. Search Atlas stores the post internally and queues it for the scheduled date and time. 3. At the scheduled date and time, Search Atlas initiates the sync and pushes the post to your connected GoHighLevel account. 4. GoHighLevel receives the post and it becomes visible in your GHL calendar or social planner — typically within 1 to 5 minutes of the scheduled time. If you check GoHighLevel 30 minutes — or even several hours — after scheduling, the post will not be visible yet. It will only appear once the scheduled date and time has passed. 📋 Common Reasons a Post Appears to Be Missing in GHL - The scheduled time has not arrived yet. This is the most frequent cause. The post exists in Search Atlas but will not push to GHL until the scheduled moment. - Time zone mismatch. Your Search Atlas account time zone and your GoHighLevel account time zone may differ. A post scheduled for 9:00 AM in one time zone may not appear in GHL until that time converts correctly. - The GHL integration is disconnected. If the connection between Search Atlas and GoHighLevel was interrupted after scheduling, the post cannot sync at the scheduled time. - The post was saved as a draft, not scheduled. Only posts with a confirmed scheduled date and time will sync. Draft posts remain in Search Atlas only. - A sync error occurred at publish time. Occasional API errors between Search Atlas and GoHighLevel can prevent a specific post from syncing. These are logged and can be retried. ✅ What to Check Before Contacting Support 1. Confirm the scheduled date and time has passed. Open Search Atlas, locate your post in the content calendar or post queue, and verify the scheduled timestamp. If it is still in the future, the post is working correctly — wait until that time. 2. Check your time zone settings. In Search Atlas, go to your account settings and confirm your time zone matches the time zone set in your GoHighLevel account. Mismatched time zones are the second most common cause of apparent delays. 3. Verify the GoHighLevel integration is active. Navigate to your Search Atlas integrations settings and confirm that your GoHighLevel connection shows a green or active status. If it shows an error or disconnected state, reconnect it and reschedule the post. 4. Check GHL social planner and calendar views. Sometimes posts appear in one view (such as the calendar) but not another (such as the list view). Check both to confirm the post is genuinely missing. 5. Look for a failed sync notification. Search Atlas will surface a sync error in the post status if the push to GHL failed at the scheduled time. If you see a failed status, use the retry option on that post. 🔄 How to Retry a Failed Sync 1. Open Search Atlas and locate the post that failed to sync. 2. Check the post status — it will display a failed or error indicator if the sync did not complete. 3. Select the post and choose the Retry Sync option. 4. Confirm the retry. Search Atlas will attempt to push the post to GoHighLevel again immediately. 5. Allow up to 5 minutes, then check your GoHighLevel social planner to confirm the post has appeared. ⚠️ What Not to Do While Waiting for a Scheduled Post - Do not delete and recreate the post — this resets the schedule and may create duplicate entries in GHL once the original syncs. - Do not disconnect and reconnect the GHL integration while posts are scheduled — this can interrupt queued syncs. - Do not change the scheduled time repeatedly — each change requeues the post and can add processing time. 💬 Still Need Help? If your post's scheduled time has passed, your time zones match, and the integration is active — but the post still has not appeared in GoHighLevel — our team can investigate the specific sync log for your account. If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🤖 Automating SEO & Blog Work with GHL Integration
🗺️ Overview Search Atlas gives agencies powerful tools to automate the heavy lifting of SEO, blog content, GEO (Generative Engine Optimization), and AEO (Answer Engine Optimization) — but true automation still requires some ongoing human oversight. This article explains what you can automate, what still needs your attention, how GHL (GoHighLevel) integration works, and what to expect around setup time, client capacity, and pricing. ⚙️ What You Can Automate in Search Atlas Search Atlas is built with agency workflows in mind. Here is what you can put on autopilot: - Blog content creation: Use the Content Builder to generate SEO-optimized blog posts at scale. You can schedule and publish content directly to connected WordPress sites without manual intervention for each post. - OTTO SEO automation: OTTO is Search Atlas's OTTO SEO agent. Once activated on a site, OTTO automatically identifies technical SEO issues, deploys on-page fixes, builds internal links, and handles schema markup — all without you needing to log in and action each task individually. - Rank tracking and reporting: Keyword rank tracking runs automatically in the background. You can set up white-label reports to be delivered to clients on a schedule via Left sidebar → Keywords → Rank Tracker. - GEO and AEO content: Search Atlas includes tools for optimizing content to appear in AI-generated answers and featured snippets. These optimizations can be applied in bulk across client sites. 💡 What "Not Set-and-Forget" Actually Means While Search Atlas automates the execution of many tasks, it is not a fully hands-off system. Here is what ongoing involvement looks like in practice: - Strategy and direction: OTTO and the content tools follow the SEO strategy you define. You still need to review target keywords, set content topics, and approve strategic pivots when search trends shift. - Content quality review: AI-generated blog posts should be reviewed before publishing — especially for tone, brand voice, and factual accuracy specific to each client's industry. - OTTO approvals: OTTO surfaces recommended actions and in some configurations will ask for approval before deploying significant changes. You should check in periodically to review and approve queued tasks. - Performance monitoring: Automated rank tracking gives you the data, but interpreting results and adjusting strategy based on that data still requires human judgment. - Client communication: Reporting is automated, but client conversations about strategy, results, and next steps remain your responsibility. Think of Search Atlas as a highly capable team member who executes well — you are still the account lead setting goals and reviewing outcomes. 🔗 GoHighLevel (GHL) Integration Search Atlas integrates with GoHighLevel, allowing agencies to embed Search Atlas capabilities within their GHL environment. Here is what you need to know: - White-label compatibility: Search Atlas branding is hidden within the GHL integration, so your clients see your agency's brand throughout the experience. - Local SEO restrictions: Within GHL, users can only add Local SEO data from search results — not from free-form input. This ensures data accuracy for Google Business Profile (GBP) features. - GBP Posts: Google Business Profile post management is available through the GHL integration. Links within GBP posts will direct to your configured destination, not the Search Atlas website. - OTTO SEO in GHL: OTTO SEO is accessible to GHL clients. If you encounter any pixel or tracking issues inside GHL, these are known and have been resolved — if you still see problems, contact support via the chat widget. - Plan setup for GHL clients: You will need to assign and configure plans for GHL clients separately. Make sure you have set the correct plan tier for each client before granting them access. 📝 Blog Creation at Scale For agencies managing multiple clients, Search Atlas supports bulk blog creation through the Content Builder. Here is how the workflow typically looks: 1. Connect your client's WordPress site to Search Atlas. 2. Define target keywords and content briefs using the Keyword Magic tool (Left sidebar → Keywords → Keyword Magic). 3. Use the Content Builder to generate optimized drafts in bulk. 4. Review and approve drafts, then schedule publishing directly to the connected site. 5. OTTO monitors published content and applies on-page optimizations automatically over time. 👥 Client Capacity and Pricing The number of client sites you can manage depends on your Search Atlas subscription tier. Key points to be aware of: - Site and user limits: Each plan includes a set number of connected sites and user seats. Review your current plan quotas from the top header bar → Quotas. - OTTO activations: OTTO SEO is activated per site. The number of sites where OTTO can be active simultaneously is tied to your plan. - Scaling up: If you need to add more client sites or increase capacity, you can upgrade your plan or add seats directly from your account settings. - GHL client plans: GHL clients require their own plan configuration. Pricing for GHL sub-accounts should be reviewed with the support team to ensure correct setup. 🕐 What to Expect for Setup Time Setup time varies depending on the number of clients and the complexity of your configuration. As a general guide: - Single site with OTTO: Initial connection and OTTO activation typically takes 30–60 minutes, including site audit completion. - GHL integration setup: Connecting Search Atlas to your GHL account and configuring white-label settings can take 1–3 hours depending on your GHL setup. - Bulk blog workflow: Setting up keyword research, content briefs, and the first content batch for a client usually takes 2–4 hours upfront. Subsequent batches are faster once templates and workflows are established. - Full agency onboarding (multiple clients): Plan for 1–2 days of dedicated setup time to connect all sites, activate OTTO, configure GHL, and establish your reporting cadence. 🆘 Need More Help? If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🎓 Access Search Atlas Academy via GoHighLevel
🔍 Overview Search Atlas Academy contains onboarding videos, feature tutorials, and training resources to help you get the most out of the platform. If you subscribed to Search Atlas through GoHighLevel (GHL) and your dashboard is white-labeled, the Academy link may not be visible by default. This article explains why and shows you exactly how to access it. ⚠️ Why Academy Is Not Visible in Your GHL Dashboard When Search Atlas is accessed through a GoHighLevel white-label setup, the dashboard is customized by the agency that set up your account. Some navigation items — including the link to Search Atlas Academy — may be hidden or renamed as part of that white-label configuration. This is expected behavior and does not mean your account lacks access to Academy content. 🎓 How to Access Search Atlas Academy You can reach Search Atlas Academy directly through your browser, regardless of how your dashboard is branded. Follow these steps: 1. Open a new browser tab. 2. Go to academy.searchatlas.com. 3. Sign in using the same email address and password you use to log in to your Search Atlas dashboard. 4. Once logged in, you will have full access to all onboarding courses, tutorials, and training materials. Your Academy account is linked to your Search Atlas credentials, so no separate registration is needed. 💡 Tips for GHL White-Label Users - Bookmark the Academy URL (academy.searchatlas.com) for quick access in the future. - If your login credentials do not work on Academy, confirm you are using the email address associated with your Search Atlas account — not a GoHighLevel login. - Academy access is included with your Search Atlas subscription. You do not need to purchase it separately. - If your agency has set up a custom subdomain for your white-label dashboard, Academy is still accessed at the standard academy.searchatlas.com URL — it is not affected by white-label branding. 🛠️ Troubleshooting Login Issues If you cannot log in to Search Atlas Academy, try the following: 1. Check that you are entering the email address tied to your Search Atlas account, not your GoHighLevel credentials. 2. Use the Forgot Password link on the Academy login page to reset your password. 3. Clear your browser cache and cookies, then try again. 4. Try a different browser or an incognito window to rule out browser extension conflicts. If none of these steps resolve the issue, If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🔧 Fixing the GoHighLevel CMS Connector When It Won't Sync Your Latest Article Version
📋 Overview If you've updated an article in Search Atlas but your GoHighLevel CMS Connector keeps publishing an older version, even after repeated manual syncs, this guide will help you fix it. In most cases, the problem comes from cached content, an unsaved draft, or a connection that needs to be refreshed. The steps below walk you through the most common causes and how to resolve them. 🤔 Why This Happens The CMS Connector syncs the version of your article that it last recognized as "final." When the latest version isn't pulling through, it's usually because of one of these reasons: - The newest changes were not saved or published inside Search Atlas before syncing. - Cached content on the GoHighLevel side is still serving the previous version. - The connector's authorization token has expired or the connection has drifted. - The article is mapped to the wrong page or post in GoHighLevel. - The sync completed, but the GoHighLevel page cache hasn't refreshed yet. ✅ Before You Start Confirm the following so your sync has the correct content to pull: - You are editing the same article that is mapped to the connector. - Your most recent edits are saved and published in Search Atlas, not left in draft. - You have admin access to both your Search Atlas account and your GoHighLevel sub-account. 🛠️ Step-by-Step Fix 1️⃣ Step 1: Confirm the latest version is published in Search Atlas 1. Open the article in Search Atlas. 2. Check the version history or last-edited timestamp to confirm your changes are present. 3. Click Save and then Publish. A draft that is saved but not published will not sync. 2️⃣ Step 2: Verify the connector mapping 1. Go to Avatar → Settings → CMS Connectors and open your GoHighLevel CMS Connector. 2. Confirm the article is mapped to the correct GoHighLevel page or blog post. 3. If the mapping points to a different or duplicate page, update it to the correct destination. 3️⃣ Step 3: Run a fresh manual sync 1. From the connector screen, select the article. 2. Click Sync and wait for the status to change to Completed. 3. Do not start a new sync until the current one finishes, as overlapping syncs can re-queue the older version. 4️⃣ Step 4: Clear the GoHighLevel cache Even after a successful sync, GoHighLevel may continue serving a cached page. 1. Open the page in GoHighLevel and republish it. 2. View the live page in a private or incognito browser window to bypass your local cache. 3. If you use a CDN or third-party cache, clear it as well. 5️⃣ Step 5: Reconnect the integration If the latest version still isn't appearing, the connection may need to be refreshed. 1. In Avatar → Settings → CMS Connectors, disconnect the GoHighLevel CMS Connector. 2. Reconnect and re-authorize access to your GoHighLevel sub-account. 3. Re-map the article and run the sync again. 🚨 Still Seeing the Old Version? If you've completed all the steps and the connector is still pulling an outdated article, contact our support team and include the details below to speed up resolution: - The article name and its URL in Search Atlas. - The GoHighLevel page or post URL where the old version appears. - The date and time of your most recent edit and your most recent sync attempt. - A screenshot of the connector's sync status. 💡 Quick Tips to Prevent Sync Issues - Always publish your changes in Search Atlas before syncing. - Wait for each sync to finish before starting another. - Refresh the live page in a private browser window to confirm the update. - Re-authorize the connector periodically if you change GoHighLevel passwords or permissions.
🛠️ Install OTTO SEO on GoHighLevel Without Duplicates
🔍 Overview When connecting OTTO SEO to a GoHighLevel (GHL) website, some customers encounter a duplicate pixel warning even though only one OTTO script appears visible in the page source. This article explains why this happens, how to install OTTO correctly on GHL, and how to ensure full coverage across your blog, category, and post pages. ⚙️ Why OTTO Detects a Duplicate on GoHighLevel GoHighLevel injects scripts in two separate locations during page rendering: - The GHL funnel/site builder header scripts — scripts you add manually inside the GHL platform settings. - The GHL blog engine header — a separate rendering layer that powers blog listing pages, category pages, and individual post pages. This layer loads its own script block independently. If you add the OTTO pixel to your site-wide header in GHL, the blog engine may also load it as part of its own template, resulting in two instances of the OTTO script firing on blog-related pages. The Search Atlas scanner detects both instances and flags the installation as a duplicate — even if you only see one script tag when inspecting the page manually. This is because browser dev tools often show the merged, rendered DOM rather than each injection source separately. ✅ The Supported Installation Method for GoHighLevel Follow these steps to install OTTO correctly on a GoHighLevel site and avoid duplicates: 1. In Search Atlas, go to OTTO SEO → All Sites (SEO Automation Projects) using the left sidebar (or navigate to /seo-automation-v3). 2. Select your GoHighLevel website and copy your unique OTTO pixel script. 3. Log in to your GoHighLevel account and open the Sites section. 4. Go to Settings → Custom Code (also called Header/Footer Scripts depending on your GHL version). 5. Paste the OTTO pixel script once in the Header field at the site level — do not add it again inside individual funnel steps, blog settings, or page-level script fields. 6. Save your changes and publish the site. Important: Do not add the OTTO pixel inside the GHL blog settings separately. The site-level header script will propagate to all pages including blog pages when configured correctly. Adding it in both locations is the primary cause of duplicate detection. 📄 Covering Blog, Category, and Post Pages A common concern is whether OTTO will activate on GoHighLevel blog listing pages, category pages, and individual post pages — not just the main site pages. Here is what you need to know: - Blog listing and category pages: These are covered by the site-level OTTO pixel as long as you follow the single-installation method above. No additional script is needed. - Individual blog post pages: GHL renders these through its blog engine. The site-level header script covers them provided the pixel is placed in the correct site-wide header field and not duplicated in blog-specific settings. - Funnels vs. websites: If your blog lives on a GHL website (not a funnel), use the website-level Custom Code field. If your blog is part of a funnel, use the funnel-level header script field instead — but again, only once per property. If your OTTO dashboard still shows blog pages as undetected after 24 hours, try clearing your GHL site cache and republishing. The Search Atlas crawler re-checks detection status periodically, and blog pages may take one additional crawl cycle to confirm activation. 🚫 Common Mistakes to Avoid - Adding the script in multiple places: Site header and blog settings, or site header and individual page headers — this always causes duplicates. - Using a third-party tag manager alongside a direct paste: If you are deploying OTTO through Google Tag Manager on GHL, do not also paste the pixel directly in GHL's Custom Code field. - Assuming the browser inspector shows all instances: The rendered DOM view can merge script sources. A duplicate flag from the Search Atlas scanner is reliable — trust it over a manual browser check. 🔄 After Installation — Verifying Detection 1. Return to OTTO SEO → All Sites (SEO Automation Projects) in Search Atlas (/seo-automation-v3). 2. Open your site and check the detection status. Allow up to 24 hours for the crawler to confirm the pixel is active and no duplicate is present. 3. If a duplicate warning persists after following the steps above, review every location in GHL where scripts can be injected (site header, blog settings, individual page headers, and any connected funnels) and remove any extra instances of the OTTO pixel. 💬 Need More Help? If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🔌 GHL Integration Pricing and Account Migration Guide
🧭 Overview If you access Search Atlas through a GoHighLevel (GHL) sub-account, your pricing and billing are managed differently than a direct Search Atlas subscription. This article explains what changes when you use the GHL integration, how pricing is structured, and what to expect if you ever need to migrate between the two. 💰 How GHL Integration Pricing Works When you access Search Atlas through a GHL agency account, pricing is set and managed by your GHL agency, not directly by Search Atlas. This means: - Your subscription rate, plan tier, and billing cycle are determined by the GHL agency that provisioned your account. - Search Atlas does not control what your agency charges you for GHL-integrated access. - Invoices and payment for GHL-integrated accounts go through the GHL platform, not through Search Atlas billing. If you are on a direct Search Atlas plan, your billing is managed entirely within your Search Atlas account dashboard, and pricing follows the standard Search Atlas plans published on our pricing page. 📊 GHL Integration vs. Direct Plan: Key Differences - Billing owner: GHL agency (GHL integration) vs. Search Atlas directly (direct plan). - Pricing rate: Determined by your GHL agency vs. standard Search Atlas pricing tiers. - Feature access: Both paths provide access to Search Atlas tools, but available features may vary depending on the plan tier your agency has enabled for your sub-account. - Support for billing questions: GHL-integrated users must contact their GHL agency for any pricing, invoice, or plan-change queries. Search Atlas support cannot adjust or view GHL agency billing. - OTTO pixel and other tools: Work the same way regardless of which path you use to access Search Atlas. 🔄 Migrating Between GHL Integration and a Direct Plan If you want to switch from a GHL-integrated account to a direct Search Atlas subscription (or vice versa), follow the steps below. 1. Back up your data. Export any reports, saved projects, or configurations you need before making changes. 2. Contact your GHL agency. Inform them you intend to move to a direct Search Atlas plan. They will need to deprovision or disconnect your GHL sub-account access. 3. Sign up for a direct Search Atlas plan. Go to the Search Atlas website and create or log in to a standalone account with the email address you want to use going forward. 4. Reconnect your website and tools. After your new direct account is active, reconnect your website, reinstall the OTTO pixel (see the section below), and relink any integrations such as Google Search Console or Google Analytics. 5. Verify OTTO pixel status. Once reinstalled, navigate to the OTTO SEO section (shown as “OTTO SEO” or “OTTO SEO” depending on account branding) in the left sidebar (URL: /seo-automation-v3) to confirm the OTTO pixel shows as Installed. Important: Your data and settings do not automatically transfer between a GHL sub-account and a direct Search Atlas account. You will need to reconfigure projects in your new account. 🛠️ Fixing an OTTO Pixel "Not Installed" Status If the OTTO pixel shows Not Installed after you have already added it to your site, this is usually a detection delay or a placement issue. Try the following: 1. Go to the OTTO SEO section (shown as “OTTO SEO” or “OTTO SEO” depending on account branding) in the left sidebar to open the OTTO dashboard. 2. Copy the latest version of your OTTO pixel code from the dashboard. 3. Paste the pixel code into the <head> section of every page on your website, or use your CMS or tag manager to deploy it site-wide. 4. Clear your website cache and any CDN cache. 5. Wait up to 24 hours for the pixel status to update. Refresh the OTTO SEO page to check. 6. If the status still shows Not Installed after 24 hours, use a browser inspector or a tag-checking tool to confirm the script is firing on your live site. Switching from a GHL-integrated account to a direct account requires reinstalling the pixel under your new account, because each account generates a unique pixel ID. 🙋 Who to Contact for Pricing Questions - GHL integration pricing: Contact your GHL agency directly. Search Atlas support cannot view or change agency-set pricing for GHL sub-accounts. - Direct Search Atlas plan pricing: Use the chat widget inside the Search Atlas platform. - Technical issues (pixel installation, tool access, feature questions): Search Atlas support can help regardless of whether you are on a GHL or direct plan. 💬 Need Help? If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🔗 Fix GHL Blog Integration with Content Genius
🗺️ Overview This article covers two related issues that often occur together during a Search Atlas whitelabel setup: the WordPress plugin connecting to the wrong dashboard URL after a DNS change, and blog content not rendering tables correctly when synced to a GoHighLevel (GHL) site. Follow the sections below in order to resolve both. ⚠️ Before You Start Confirm the following before troubleshooting: - You have completed the DNS record addition in Cloudflare for your whitelabel domain. - You have access to your GoHighLevel site builder and blog settings. - You have the Search Atlas WordPress plugin installed and active on your site. - Your Content Genius workspace is connected to your Search Atlas account. 🌐 Fix 1 — Correct the WordPress Plugin Dashboard URL When you add a whitelabel DNS record in Cloudflare, the Search Atlas WordPress plugin may still point to the original app.searchatlas.com dashboard URL instead of your custom domain. This causes authentication failures and connection errors inside the plugin. 1. Log in to your WordPress admin panel and go to Search Atlas → Settings. 2. Locate the Dashboard URL or API Endpoint field. 3. Replace any existing URL with your whitelabel domain (for example, seo.youragency.com). Do not include a trailing slash. 4. Save the settings and click Test Connection to verify the plugin authenticates successfully. 5. If the connection still fails, clear your Cloudflare cache: log in to Cloudflare, select your domain, go to Caching → Configuration, and click Purge Everything. 6. Wait up to 15 minutes for DNS propagation to complete, then test the connection again. If you see an SSL or certificate error after updating the URL, ensure your Cloudflare SSL/TLS mode is set to Full (Strict) under SSL/TLS → Overview in your Cloudflare dashboard. 📝 Fix 2 — Resolve Tables Not Showing on GHL Blog Content published from Content Genius to a GoHighLevel blog may display missing or broken tables. This happens because GHL's blog editor strips certain HTML table elements that Content Genius exports by default. 1. Open Content Genius in Search Atlas and navigate to the article that contains the table. 2. Switch the editor to HTML / Source view using the toolbar toggle. 3. Check that your table markup uses standard HTML tags: <table>, <thead>, <tbody>, <tr>, <th>, and <td>. Remove any inline style attributes that reference external fonts or CSS variables, as GHL does not inherit these. 4. Copy the full cleaned HTML of the article. 5. In GoHighLevel, open your Sites → Blog section and locate the post. 6. Click Edit Post and switch the GHL editor to HTML/Code view. 7. Paste the cleaned HTML directly. Do not use the visual paste option, as it may reformat the table structure. 8. Save and preview the post to confirm the table renders correctly. If the table still does not appear, check your GHL site's active Theme CSS. Some GHL themes hide table elements by default. Add the following override to your theme's custom CSS section: - Navigate in GHL to Sites → Themes → Custom CSS. - Add: table { display: table !important; width: 100%; border-collapse: collapse; } - Save and republish the page. 🔄 Fix 3 — Re-Sync Content After Making Changes After correcting either the plugin URL or the GHL HTML, re-sync the content to ensure everything is consistent. 1. In Content Genius, open the article and click Publish / Sync. 2. Select GoHighLevel as the destination when prompted. 3. Choose whether to update existing post or create a new draft. 4. Click Confirm Sync and wait for the success notification. 5. Open the live GHL blog post in a new browser tab and confirm both the content and tables display as expected. ✅ Quick Reference — Common Causes and Fixes - Plugin shows wrong URL: Update the Dashboard URL field in WordPress plugin settings to your whitelabel domain. - DNS not resolving: Purge Cloudflare cache and wait up to 15 minutes for propagation. - SSL error on whitelabel domain: Set Cloudflare SSL/TLS mode to Full (Strict). - Tables missing in GHL: Paste clean HTML directly into GHL code view; remove inline styles. - Tables hidden by theme: Add a CSS override in GHL Sites → Themes → Custom CSS. 💬 Need More Help? If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.
🔄 CMS Connector Not Syncing Latest Article Versions to GHL
🔍 Overview If your CMS Connector is publishing older versions of your articles to GoHighLevel (GHL) — omitting recently added sections such as About the Author or Contact Us — you are not alone. This issue was reported by multiple users and was escalated to the Search Atlas engineering team for investigation. This article explains what to do if you are experiencing this problem and how to get further assistance if needed. ⚙️ What Caused the Problem Users reported that the CMS Connector was sending outdated article content to GHL, with recently added sections missing from the published output. This issue was escalated to the Search Atlas engineering team. If you are still experiencing this, please reach out to support so the team can investigate your specific account and configuration. ✅ Steps to Try 1. Open the affected article in Content Genius and confirm that all sections — including any recently added ones — are present and saved. 2. Republish the article to GHL using your usual publishing workflow. 3. Check the published result in GoHighLevel to confirm all sections are now appearing correctly. If the article now appears in GHL with all sections intact, the issue has resolved for your account. 🛠️ If You Are Still Experiencing the Issue If republishing does not resolve the problem and GHL is still receiving outdated content, try the following before contacting support: - Re-save your article: Open the affected article in Content Genius, make a minor edit and save it to ensure the latest version is recorded. - Republish: Attempt to publish to GHL again after saving. - Test with a new article: Create a short test article in Content Genius and publish it to GHL to determine whether the issue is isolated to specific articles or affects all publishing. 📋 Information to Have Ready If You Contact Support If the steps above do not resolve the issue, gathering the following details in advance will help the team investigate faster: - The name or URL of the specific article(s) affected - A screen recording or screenshots showing the article content in Content Genius versus what appears in GHL after publishing - The date and time you last republished the affected article Please reach out to the Search Atlas support team and we will be happy to assist you further.
⚠️ GHL PDF Export: "Hide Empty Sections" Toggle and Known PDF Limitation
When you enable Hide Empty Sections in a GHL classical report, the web view correctly removes blank sections — but that setting does not carry over when you download the report as a PDF. A fix is actively being deployed; the workarounds below help you produce clean exports in the meantime. 📋 How the "Hide Empty Sections" Toggle Works in GHL Classical Reports The Hide Empty Sections toggle lives in the Report Builder for GHL classical reports. Enable it, and any section that contains no data — such as the Local SEO section — is removed from the web view instantly, keeping your report focused on populated data only. ⚠️ Known Issue: Empty Sections Reappear in Downloaded GHL PDF Reports When you download a GHL classical report as a PDF with Hide Empty Sections enabled, the PDF does not reflect the toggle state. Empty sections that are correctly hidden in the web view reappear in the exported file. This happens because the PDF rendering engine reads the full report structure rather than the filtered web view state — producing a PDF with blank placeholder sections, such as an empty Local SEO block, even when the toggle is on. Scope: This affects GHL classical reports only. Custom report layouts are not impacted. 🛠️ Workarounds While the Hide Empty Sections PDF Fix Is Deployed Use one of the following approaches to deliver a clean report to your client while the fix rolls out: 1. Share the live web report link. The web view correctly applies Hide Empty Sections, so recipients see only populated sections — no PDF download required. 2. Print to PDF directly from your browser: 1. Open the GHL classical report in your browser with Hide Empty Sections enabled. 2. Press Ctrl + P (Windows) or Cmd + P (Mac) to open the print dialog. 3. Set the destination to Save as PDF. 4. Click Save. The PDF captures the filtered web view and excludes empty sections. 3. Populate missing data before exporting. If a section is empty because data has not yet synced, complete the data entry first. With all sections populated, no blank sections appear in the PDF regardless of the toggle state. After exporting, review the PDF to confirm only data-filled sections are visible before sending it to your client. 🔄 Current Fix Status for the GHL PDF Hide Empty Sections Issue This issue (internal reference: RB-1278) is in In Release status — the fix is complete and actively being deployed to production. No action is required on your end; the update applies to your account automatically once the rollout is complete. After the fix is live, the Hide Empty Sections toggle will apply consistently to both the web view and all downloaded PDFs in GHL classical reports. 🎯 You now know why empty sections appear in GHL PDF exports despite the Hide Empty Sections toggle being on, and have three workarounds available until the fix reaches your account. For more on building and customizing GHL reports, explore the GHL Report Builder articles in this Help Center.