REQUIRED 4 critical · 6 high
The plumbing works; the site looks unfinished to Google. The technical foundation is fine — AIOSEO is installed, meta descriptions are unique, canonicals and redirects are clean, GA4 fires. But the build was never finished out: the structured data still calls the site "Just Deploy It!", a real abatement article is published at the default /hello-world/ URL, almost no page has an H1, and the page-builder's template parts are indexable. These are config-level fixes — none require new content — but together they tell search engines the site isn't ready.
Elementor template parts & a /hello-world/ post are publicly indexed.
No H1 on any page but home; ALL-CAPS title; builder leftover in schema.
Org schema has phone & logo but no address, geo, or LocalBusiness type.
Service pages run 226–283 words — the pages meant to rank & convert.
Critical
CriticalFour leftovers from an unfinished build are actively telling Google the site isn't done. None require writing new content — they're slugs, settings, and schema fields that were never cleaned up after launch.
The site calls itself "Just Deploy It!" in its structured data
JSON-LD · WebSite schema · sitewide
The WebSite schema block — which Google reads to understand the brand — is named "Just Deploy It!", a leftover from the host/starter template. Google may use this as the site name in search results and the knowledge panel instead of "Eagle Environmental Solutions."
Set the site title correctly in AIOSEO → Search Appearance (and WordPress Settings → General). One field, sitewide effect.
A real abatement article lives at the default /hello-world/ URL
/hello-world/ · 557 words
The default WordPress sample post was edited into a genuine article — "Asbestos, Lead, and Silica Abatement: Protecting Your Health" — but its URL slug was never changed. So a 557-word piece of real content is published at myeagleusa.com/hello-world/. To a searcher and to Google, that slug reads as an abandoned, never-configured site.
Rename the slug to something keyword-rich (e.g. /asbestos-lead-silica-abatement-guide/) and 301-redirect /hello-world/ to it.
No H1 heading on any page except the homepage
All service pages & blog posts
Every service page (Mold Remediation, Asbestos Abatement, Lead & Silica, Environmental Services) and every blog post renders with zero H1 tags. The H1 is the single strongest on-page signal of what a page is about — without it, Google has to guess each page's topic from body text alone.
Add one keyworded H1 per page in Elementor (e.g. "Mold Remediation in Southern Maryland"). The homepage's H1 also uses an animated-text widget that renders incompletely to crawlers — worth replacing with a plain H1.
Elementor template parts are indexable and in the sitemap
/elementor-hf/elementor-45/ · /elementor-hf/elementor-19/
The page-builder's header/footer template parts are live at public URLs, return 200, and are listed in the XML sitemap. Each one duplicates the homepage's content and metadata (their canonical correctly points home, which limits the damage — but they shouldn't be crawlable at all).
Set the elementor-hf / library post type to noindex in AIOSEO and exclude it from the sitemap.
High Impact
HighService pages are too thin to rank
/mold-remediation/ · /asbestos-abatement/ · /lead-and-silica-abatment/ · /environmental-services/
These are the money pages — the ones that should rank for "asbestos abatement Maryland" and convert visitors — yet they run just 226–283 words each. That's well below what's competitive for commercial service queries. The blog posts (550–730 words) are actually the meatiest content on the site.
Build each service page to 600–900 words: what the service covers, the process, certifications/compliance (EPA, state licensing), service area, and FAQs. The expertise clearly exists — it just isn't on the page yet.
Spelling error in a URL and the navigation
/lead-and-silica-abatment/
The Lead & Silica page URL — and its label in the main navigation — reads "Abatment," missing the second "e" in "Abatement." It's visible to every visitor in the menu and baked into the indexed URL, which undercuts the credibility of a safety-compliance company.
Correct the nav menu label now (zero risk); rename the slug to /lead-and-silica-abatement/ with a 301 from the old URL.
Homepage and service pages declare og:type = "article"
Open Graph · home + service pages
The homepage and service pages are marked up as article in their Open Graph tags. These are evergreen pages, not articles — the type should be website. Minor, but it signals the same "default settings, never configured" pattern as the other findings.
Set Open Graph object type to Website for pages in AIOSEO's Social Networks settings; reserve Article for blog posts.
Homepage title is ALL CAPS with no keywords or geography
/ · <title>EAGLE ENVIRONMENTAL SOLUTIONS</title>
The homepage title tag is just the brand name in all caps — no services, no location. Someone searching "asbestos removal Calvert County" or "mold remediation Prince Frederick" has nothing here to match. The brand name also isn't a term anyone searches for yet.
Rewrite to a keyword + geo + brand format, e.g. "Asbestos, Mold & Lead Abatement in Southern Maryland | Eagle Environmental." Drop the all-caps.
No address or LocalBusiness schema
JSON-LD · Organization
The Organization schema includes a phone number (443-975-0000) and logo, but no street address, no geo coordinates, and no LocalBusiness type. For a service business tied to Maryland jurisdictions and licensing, the full NAP is what powers local-pack rankings. A "MD 20678" reference appears in the page text but isn't structured anywhere.
Switch the schema to a LocalBusiness type with full street address, postal code, geo, hours, and service area; mirror the same NAP in the site footer and on a working Contact page. Claim/verify the Google Business Profile.
Two overlapping "services" entries in the navigation
Main nav · /service/ & /environmental-services/
The menu has both "Services" (/service/) and "Environmental Services" (/environmental-services/) as separate top-level items. Visitors can't tell which is the real services hub, and the two pages compete with each other for the same queries.
Pick one as the services hub, fold the other's content in, 301 the loser, and use a dropdown that lists the individual service pages beneath it.
Medium Priority
MediumAlmost no image alt text
/ · 14 of 15 images
14 of the 15 homepage images have empty or missing alt attributes — an accessibility gap and a missed chance to describe abatement work to image search.
Images aren't served as WebP
Performance · sitewide
Images ship as JPG/PNG with no WebP. Lazy-loading and srcset are already in place (good), so adding a WebP conversion plugin is the easy remaining win for page speed.
A security rule is blocking plain crawlers
/contact-us/ · WAF / bot rule
The site serves a 403 to requests with a generic Mozilla/5.0 user-agent (it loads fine in a real browser). A firewall rule is over-blocking — harmless for humans, but it can stop legitimate SEO crawlers, monitoring tools, and some link/preview bots from reading the site.
Loosen the WAF/bot rule (host or security plugin) so it challenges rather than hard-blocks non-browser agents, and confirm Googlebot/Bingbot are allowlisted.
Thin blog index & default category
/blog/ (153 words) · /category/our-blog/
The blog landing page is nearly empty (153 words), and posts live under a generic "our-blog" category. With only three articles published (one at the /hello-world/ slug), the blog reads as barely started despite the content being solid.
What's Already Sound
Pass- AIOSEO installed and active across the site
- Unique, well-written meta descriptions on every real page
- Correct self-referencing canonicals site-wide
- XML sitemap present and referenced in robots.txt
- http→https and www→non-www both 301 cleanly
- HSTS enabled; valid 404 handling
- GA4 installed and firing via Site Kit (GT-T5RSRRBW)
- Lazy-loading and responsive
srcsetalready in place - Organization schema with phone number and logo
- Clean robots.txt (only blocks wp-admin)
- Mobile-responsive Elementor theme
- Real, useful blog content (550–730 words per post)
Order of Attack
- Clear the "unfinished build" signalsFix the "Just Deploy It!" site name, rename /hello-world/, noindex the Elementor template parts.~1 hr · Critical
- Add an H1 to every pageOne keyworded H1 each; replace the animated-heading widget on the homepage.~1 hr · Critical
- Fix the "Abatment" typoCorrect the nav label now; rename the slug + 301 redirect.~20 min · High
- Rewrite titles & og:typeKeyword+geo homepage title, drop all-caps, set og:type to website.~45 min · High
- Complete the local schema & NAPLocalBusiness type, full address, footer NAP, working Contact page, GBP.~1.5 hrs · High
- Consolidate the services navigationOne services hub; 301 the duplicate; dropdown to individual services.~1 hr · High
- Build out the service pages600–900 words each: process, compliance, service area, FAQs.Ongoing · Growth
- HousekeepingImage alt text, WebP conversion, loosen the WAF rule.~1 hr · Medium
Page Restructure
PlanThe page count is small, but it's muddled — two competing "services" hubs, blog posts that shadow service pages, and a service they offer with no page at all. Consolidate the duplicates and fill the one gap.
+2 hidden Elementor template parts to noindex
Merge hubs, fold blog into services, fix slugs
Home · hub · 4 services · about · contact
Fire & smoke — offered, but no service page
| Action | Pages | Why |
|---|---|---|
| Merge the two service hubs | /service/ + /environmental-services/ | Two top-level "services" pages compete for the same intent; visitors can't tell which is real |
| Fold blog into its service page | …mold-remediation-restoring… → /mold-remediation/ | The post duplicates the service page's topic exactly |
| Fold + fix the default slug | /hello-world/ → /asbestos-abatement/ & lead-silica | A real article stuck at the WordPress default URL |
| Promote, don't cut | …smoke-damage… → new Fire & Smoke service page | A service they offer with no service page — a gap, not a duplicate |
Real core: 8 pages. Home (1) · one Services hub (1) · four service pages (Asbestos Abatement, Lead & Silica Abatement, Mold Remediation, Fire & Smoke Restoration) · About + Contact (2). After folding, the blog is an empty shell — either seed it with genuinely new topics or pull it from the nav until there's real volume. Three overlapping posts isn't a blog yet.
Growth play (net-new, not consolidation): Eagle has zero location pages despite serving the same Southern Maryland jurisdictions as its sister roofing company. Once the core 8 are solid, county/city pages are the biggest organic lever available.
Crawl Record
All URLs from the AIOSEO sitemaps, fetched June 16, 2026. T = title length, D = description length, W = approximate visible word count.
| URL | Status | T | D | H1 | W |
|---|---|---|---|---|---|
| / | 200 | 29 | 141 | 1* | 446 |
| /service/ | 200 | 39 | 362 | 0 | 724 |
| /environmental-services/ | 200 | 54 | 388 | 0 | 281 |
| /asbestos-abatement/ | 200 | 50 | 353 | 0 | 283 |
| /lead-and-silica-abatment/ (typo) | 200 | 56 | 342 | 0 | 226 |
| /mold-remediation/ | 200 | 48 | 304 | 0 | 233 |
| /about-us/ | 200 | 40 | 369 | 0 | 391 |
| /contact-us/ | 403* | — | — | — | — |
| /blog/ | 200 | 36 | 361 | 0 | 153 |
| /mold-remediation-restoring-your-home-and-health/ | 200 | 80 | 338 | 0 | 732 |
| /hello-world/ (default slug) | 200 | 101 | 386 | 0 | 557 |
| /smoke-damage-cleaning-and-odor-elimination…/ | 200 | 108 | 334 | 0 | 619 |
| /elementor-hf/elementor-45/ (template) | 200 | 29 | 141 | — | 446 |
| /elementor-hf/elementor-19/ (template) | 200 | 29 | 141 | — | 446 |