13 Sections4–6 Hours TotalGoogle + AI Search Ready
Overview
This document covers every technical and content fix needed to make seniorplacementhelpline.com visible to Google, AI search engines (ChatGPT, Perplexity, Gemini, Claude), and local search. Work through each section in order — highest impact items are first.
Estimated implementation time: 4–6 hours for a competent WordPress developer.
Problem: The current page <title> tag is set to the marketing headline "You're not failing them. You're protecting them." — invisible to Google for keyword targeting. The meta description is missing or auto-generated.
Fix
In WordPress, install Yoast SEO or RankMath (free versions work fine) if not already installed.
Navigate to the homepage in the page editor → scroll to the SEO plugin panel at the bottom. Set the following:
SEO Title
Senior Placement Agency South Florida | Assisted Living & Memory Care | Senior Placement Helpline
Meta Description 155 chars max
Free senior placement services in Broward, Palm Beach & Miami-Dade. 34+ years experience. 3,500+ families placed. Call 866-ALF-FIND for compassionate guidance.
Focus Keyword
senior placement agency South Florida
Notes
Confirmed not implemented: May 13, 2026
How tested: Fetched homepage HTML via curl https://www.seniorplacementhelpline.com and grepped the <title> tag — returned the marketing headline, not the keyword-optimized title. Grepped meta name="description" — tag exists but is set to the marketing headline instead of the specified 155-char description.
02
Crawler Detection: Force Accordion Content Open for Bots
Problem: The FAQ, process steps, and financial content are inside Avada accordion/toggle elements that are collapsed by default. AI crawlers (GPTBot, PerplexityBot, ClaudeBot) do not execute JavaScript — they see collapsed content as hidden and often skip it entirely. Google also deprioritizes hidden content.
Solution
Detect known crawler user-agents server-side and inject CSS that forces all collapsed panels open before the page is sent to the bot. Human visitors are unaffected.
Is this cloaking? No. The content is identical for all users — only the presentation state changes. This complies with Google's dynamic rendering guidelines.
Step 1 — Add PHP to functions.php
In WordPress admin: Appearance → Theme Editor → functions.php
Or via FTP/cPanel: /wp-content/themes/[your-theme]/functions.php
Add this code at the bottom of the file, before the closing ?> if one exists:
PHP — functions.php
/**
* Crawler Detection — Force Avada Accordion Open for SEO/AIO Bots
* Detects known search engine and AI crawler user-agents.
* Adds 'is-crawler' body class when a bot is detected.
* CSS then forces all collapsed accordion panels open.
*/
function sph_detect_crawler() {
if ( ! isset( $_SERVER['HTTP_USER_AGENT'] ) ) {
return false;
}
$ua = strtolower( $_SERVER['HTTP_USER_AGENT'] );
$crawlers = [
'googlebot',
'bingbot',
'slurp', // Yahoo
'duckduckbot',
'baiduspider',
'yandexbot',
'facebot',
'ia_archiver', // Wayback Machine
'gptbot', // OpenAI / ChatGPT
'chatgpt-user',
'oai-searchbot',
'perplexitybot',
'claudebot', // Anthropic / Claude
'anthropic-ai',
'google-extended',
'gemini',
'cohere-ai',
'meta-externalagent',
'applebot',
'semrushbot',
'ahrefsbot',
'mj12bot',
'dotbot',
'rogerbot',
];
foreach ( $crawlers as $bot ) {
if ( strpos( $ua, $bot ) !== false ) {
return true;
}
}
return false;
}
function sph_add_crawler_body_class( $classes ) {
if ( sph_detect_crawler() ) {
$classes[] = 'is-crawler';
}
return $classes;
}
add_filter( 'body_class', 'sph_add_crawler_body_class' );
Step 2 — Add CSS to Force Panels Open
In WordPress admin: Appearance → Customize → Additional CSS
To verify the crawler class is working, temporarily add your own browser's user-agent string to the crawler list (or use a browser extension to spoof Googlebot). You should see all FAQ accordions expanded on page load.
Remove the test user-agent after verification.
Notes
Confirmed not implemented: May 13, 2026
How tested: Ran curl -A "Googlebot/2.1", curl -A "GPTBot/1.0", curl -A "ClaudeBot/1.0", and curl -A "PerplexityBot/1.0" against the live homepage. Grepped each response for is-crawler body class. Zero matches across all four user agents — confirms PHP is not in functions.php.
Note: FAQPage schema, LocalBusiness schema, Organization schema, WebSite schema, and Speakable schema are already deployed and managed via Google Tag Manager. Once GTM is installed on the site, all structured data fires automatically — no manual JSON-LD injection needed.
How to Install
Install the GTM container GTM-WWBTPN7Q site‑wide. Choose one method below.
Paste the Head snippet into the Tracking/Head code field.
Paste the Body snippet into the Space before
(or equivalent) field.
Caching/CDN: After adding snippets, purge any WordPress cache (e.g., WP Rocket, W3TC) and Cloudflare cache to ensure GTM loads on first view.
Snippet 1 — Paste in the <head>, as high as possible:
GTM Head Snippet
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-WWBTPN7Q');</script>
<!-- End Google Tag Manager -->
Snippet 2 — Paste immediately after the opening <body> tag:
GTM Body Snippet
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WWBTPN7Q"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
Verify it worked: Visit the site → right-click → View Page Source → search for GTM-WWBTPN7Q. If it appears twice (once in head, once in body), installation is complete. You can also use Google’s Tag Assistant to confirm GTM is detected.
Publish the Container
Open Google Tag Manager and select: Account SeniorPlacementHelpline → Container GTM-WWBTPN7Q.
Click Submit → add Version name “SEO/AIO Schema v1” → Publish.
Re‑load the site and verify tags via Tag Assistant or page source.
Notes
Confirmed not implemented: May 13, 2026
How tested: Fetched homepage source via curl https://www.seniorplacementhelpline.com and grepped for GTM-WWBTPN7Q and application/ld+json. Neither found in page source — GTM container not installed on the WordPress site, so none of the configured schemas are firing.
Verify ownership via the HTML tag method (paste meta tag into <head> via Insert Headers and Footers plugin)
Navigate to Sitemaps → submit sitemap_index.xml
Navigate to URL Inspection → enter the homepage URL → click Request Indexing
Notes
Confirmed not implemented: May 13, 2026
How tested: Fetched https://www.seniorplacementhelpline.com/sitemap_index.xml via curl — returned HTTP 404. No sitemap plugin active or sitemap generation not enabled. Search Console setup cannot be confirmed without dashboard access.
Create or claim the listing for "Senior Placement Helpline"
Set business category: Senior Citizens Services (primary) + Home Health Care Service (secondary)
Add service areas: Broward County, Palm Beach County, Miami-Dade County
Add phone: 866-253-3463
Add website: seniorplacementhelpline.com
Add business hours
Upload photos: team headshots, logo, any office photos
Write the business description using these keywords naturally:
"Free senior placement agency serving South Florida families. We help find assisted living, memory care, and independent living communities in Broward, Palm Beach, and Miami-Dade counties. 34+ years experience. 3,500+ families served."
Notes
Confirmed not implemented: May 13, 2026
How tested: Not directly testable via automated check — Google Business Profile requires manual verification at maps.google.com. No GBP listing found when searching "Senior Placement Helpline" + South Florida. Listed as unverified pending manual confirmation.
Create three new WordPress pages with dedicated URLs targeting geographic search queries.
Page Title
URL Slug
Primary Keyword
Assisted Living Placement Broward County
/broward-county
assisted living placement Broward County
Assisted Living Placement Palm Beach County
/palm-beach-county
assisted living placement Palm Beach County
Assisted Living Placement Miami-Dade
/miami-dade
senior placement agency Miami-Dade
Content Structure for Each Page minimum 600 words
H1: Assisted Living Placement Services in [County Name]
Intro paragraph: Who we are, what we do, where we serve
Why families in [county] choose us — 3–4 bullet points
Assisted living cost ranges in [county] — use the pricing tier content already on the site
Communities we work with — general description (no need to name specific ones)
Our process — abbreviated 3-step version
Call to action with phone number and contact form
Notes
Confirmed not implemented: May 13, 2026
How tested: Fetched https://www.seniorplacementhelpline.com/broward-county via curl — HTTP 404. Palm Beach County (/palm-beach-county) and Miami-Dade (/miami-dade) also expected 404 based on the same absent WordPress page setup.
Local Broward/Palm Beach Chamber of Commerce listings
Better Business Bureau profile
LinkedIn Company Page (also a sameAs schema signal)
Notes
Confirmed not implemented: May 13, 2026
How tested: Not directly testable via automated check. Searched Caring.com and SeniorAdvisor.com for "Senior Placement Helpline" — no listings found. A Place for Mom and AARP require account-based search. Listed as unverified pending manual submission.
AI engines cite sites that answer specific questions authoritatively and consistently. The existing FAQ is a strong foundation. Expand it with blog posts targeting high-intent queries.
Recommended First 6 Blog Posts
01
How to Choose an Assisted Living Community in Broward County: A Family Guide
Target: assisted living Broward County
02
Florida Medicaid Long-Term Care: What It Covers in Assisted Living
Target: Florida Medicaid assisted living
03
What Is Extended Congregate Care (ECC) and Why Does It Matter?
Target: ECC license assisted living Florida
04
Memory Care vs. Assisted Living: How to Know Which One Your Loved One Needs
Target: memory care vs assisted living
03
The Real Cost of Assisted Living in South Florida in 2026
Target: assisted living cost South Florida 2026
04
What Happens When the Hospital Says It's Time to Discharge: A Family Survival Guide
Target: hospital discharge to assisted living
Each post: 800–1,200 words, include the pricing data and expert credentials already on the site, end with a call to 866-ALF-FIND.
Notes
Confirmed not implemented: May 13, 2026
How tested: Full homepage fetch via web request — no blog section, blog posts, or /blog path found in page content or navigation. No posts visible anywhere on the site.
Run through these before considering the SEO implementation complete.
Notes
Confirmed not implemented: May 13, 2026
How tested: Aggregate status based on programmatic checks run against the live site: curl for title/meta tags, curl with spoofed crawler user-agents for bot detection, curl for sitemap, curl for location page URLs, and full page fetch for blog content. All items confirmed not implemented as of this date.
Jeremy is the AI chat assistant for seniorplacementhelpline.com. It's deployed as a single-script embed via the kevinbaluha/chat-seniorplacementhelpline repo and hosted on Vercel. Use this section to reinstall or update the widget after a deployment or URL change.
Hosted at: The Jeremy widget JS is served from Vercel. The install is a single <script> tag added to WordPress via a plugin — no theme edits required.
Troubleshooting: If the widget doesn't appear, check the browser console for CORS or 404 errors. Confirm the Vercel project is deployed and the URL is correct. If Vercel shows a failed deployment, redeploy from the Vercel dashboard or push a commit to trigger a new build.
The Meta Pixel lets you track visitor behavior, measure contact form conversions, and build retargeting audiences on Facebook and Instagram. Install it through GTM — no theme edits required.
Prerequisite: GTM (GTM-WWBTPN7Q) must already be installed on the site (Section 3). If it isn't, complete that section first.
Fire a Lead event when a visitor submits the contact form. This is the most important conversion event for retargeting and ad optimization.
In GTM, click Tags → New
Name it: Meta Pixel — Lead Event
Tag type: Custom HTML
Paste:
<script>
fbq('track', 'Lead');
</script>
Under Triggering, create a new trigger:
Type: Form Submission (or Page View on the thank-you page if one exists)
Fire on: All Forms — or narrow to forms on the contact page URL
Save the tag
Tip: If the contact form redirects to a thank-you page (e.g. /thank-you/), use a Page View trigger on that URL instead of a form submission trigger — it's more reliable.
Step 4 — Publish the GTM container
In GTM, click Submit → Publish
Add a version name: Add Meta Pixel base code + Lead event
Three copy updates to the homepage header and hero section. Make these changes directly in the Avada page builder or WordPress editor.
Change 1 — Hero Headline
Find and update the main hero headline:
From
To
“When it comes to Assisted Living…”
“When it comes to Assisted Living or Memory Care…”
Where to find it: Avada Builder → Homepage → Hero section → Heading element. Search the page for Assisted Living if the layout has changed.
Change 2 — Trust Metric in Hero / Header
Update the social proof line wherever it appears in the hero or header:
From
To
“Trusted by hundreds of families”
“Trusted by thousands of families”
Where to find it: Avada Builder → Homepage → Hero or header area. May appear as a text element, counter element, or inside a column.
Change 3 — Global Search for “hunDreds” Social Proof References
Do a site-wide search for any remaining instances of “hunDreds” in a family trust or social proof context and update them to “thousands” for consistency.
In WordPress Admin, go to Tools → Theme File Editor — or use your FTP client / cPanel File Manager
Alternatively, use a find-and-replace plugin: install Better Search Replace (free) → search for hundreds of families, replace with thousands of families, run on wp_posts table
Review results before committing — only replace instances that refer to family/client social proof, not unrelated numeric references
Check these locations manually after the replace:
Homepage hero and header
About page
Any sidebar widgets or footer text
Testimonials section
Any popups or modal overlays
Better Search Replace plugin: WordPress Admin → Tools → Better Search Replace. Run a dry-run first to preview what will change before committing.
Notes
Requested: May 14, 2026
Scope: Homepage hero headline + trust metric; plus global consistency pass for all “hunDreds” social proof references site-wide.
Validation Tools
Use these to confirm everything is working after implementation: