Technical SEO Site Audit

Trout Psychology

← All resources  ยท  Action Plan

Contents

How to read this audit

1. Executive Summary

Findings by severity

2. Findings

๐Ÿ”ด CRITICAL

๐ŸŸ  HIGH

๐ŸŸก MEDIUM

๐ŸŸข LOW

3. Verified Healthy โ€” and Three Corrections to the Preliminary Notes

On the 429s specifically

Confirmed working correctly

4. Requires Tool Access โ€” Not Measured, With Exact Steps to Measure

4.1 Core Web Vitals / PageSpeed

4.2 Google Search Console

4.3 Backlink profile and domain authority

4.4 Google Business Profile

4.5 Structured data validation

4.6 Rendered-DOM and mobile UX checks

4.7 Keyword rankings and search volume

5. โšก Quick Wins

6. Prioritized Action Plan

Week 1 โ€” Foundation (do these first; everything else depends on them)

Week 2 โ€” On-Page

Weeks 3โ€“4 โ€” Authority Assets

Month 2 onward โ€” Content Engine

7. Full Findings Table

8. Methodology & Evidence

Limitations

Items requiring Kristen's confirmation


Site: https://www.troutpsychology.com
Platform: Squarespace (confirmed via server: Squarespace response header)
Prepared: August 27, 2026
Engagement: Local Marketing Playbook โ€” Phase 1, Foundation
Primary business goal: Brand authority โ€” establish the Trout Psychology Method as the recognized standard in fly fishing education


How to read this audit

Findings are ranked Critical โ†’ High โ†’ Medium โ†’ Low, weighted for the stated goal of brand authority, not raw traffic volume. A technically minor issue that blocks the Method from being found, quoted, or attributed is ranked above a larger issue that only costs a few visits.

Every finding includes a specific fix. Where copy or code is required, the exact text is provided and character counts are validated.

Verification standard used here: every finding below was observed directly against the live site on August 27, 2026 via HTTP requests. Nothing in this document is estimated, modeled, or inferred from a third-party tool. Where a finding cannot be verified without a tool we do not have access to, it is listed in Section 4 โ€” Requires Tool Access, with the exact steps for Kristen to check it herself. There are no invented scores in this document.

Crawl budget note: the site was audited with deliberately spaced requests to respect the rate-limiting flagged in the client profile. Total requests: approximately 30, including redirect hops.


1. Executive Summary

The site is technically healthier than the preliminary notes suggested. Squarespace handles the fundamentals correctly: HTTPS is enforced in a single hop, canonical tags are present and correct on every page checked, the XML sitemap exists and is referenced from robots.txt, the viewport is configured properly, and HSTS is enabled. Three preliminary concerns were disproven during this audit (see Section 3).

The real problem is not that the site is broken. It is that the site does not tell search engines what Trout Psychology is.

The single structured-data record the site emits identifies the business as "SCco. " with an empty description. There is no Organization schema, no LocalBusiness schema, no Person schema for Kristen, no Service or Course schema, and no FAQPage schema anywhere. For a brand whose name collides head-on with clinical psychology practices, this is the whole ballgame: Google is being asked to disambiguate "Trout Psychology" from actual psychologists using nothing but body copy, while the one machine-readable identity signal on the site points at a different company entirely.

Layered on top of that:

The strategic read from the client profile holds up completely: the Method exists in Kristen's head and in Instagram reels, not on owned indexable pages. The technical fixes below are the prerequisite for changing that.

Findings by severity

Severity Count
๐Ÿ”ด Critical 5
๐ŸŸ  High 9
๐ŸŸก Medium 11
๐ŸŸข Low 6
Total 31

2. Findings

๐Ÿ”ด CRITICAL


C1 โ€” The only structured data on the site identifies the business as "SCco." with an empty description

Category: Structured Data / Entity Disambiguation
Observed: Every page audited emits exactly one JSON-LD block, and it is identical sitewide:

{"url":"https://www.troutpsychology.com","name":"SCco. ","description":"",
 "image":"//images.squarespace-cdn.com/content/v1/63939b2f65ca3a79ac3d2344/...Streamside+blue-02.png",
 "@context":"http://schema.org","@type":"WebSite"}

Note three separate defects in one 6-line record: the name is the legacy parent entity (with a trailing space), the description is an empty string, and the @type is only WebSite โ€” the weakest possible entity type.

Impact: This is the root cause of the brand-entity confusion flagged in the client profile. Google builds its understanding of an entity from structured data first and body copy second. Right now the only structured statement the site makes is "this website is called SCco." There is nothing asserting that Trout Psychology is an organization, that it operates in Cle Elum, Washington, that it teaches fly fishing, that Kristen Bufe is its founder, or that it is not a mental-health practice. Without an Organization node with a sameAs array, the brand cannot win a Knowledge Panel, cannot be reliably disambiguated from clinical psychology directories, and cannot be confidently cited by AI answer engines.

Fix: Add the following JSON-LD to Settings โ†’ Advanced โ†’ Code Injection โ†’ Header. This is the single highest-leverage change in this document.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://www.troutpsychology.com/#organization",
      "name": "Trout Psychology",
      "alternateName": ["Streamside Coven Co.", "SCco."],
      "url": "https://www.troutpsychology.com",
      "logo": "https://www.troutpsychology.com/s/Streamside-blue-02.png",
      "description": "Fly fishing education built on behavioral science. Trout Psychology applies behavior analysis to both the angler and the trout, teaching anglers the reasoning behind on-water strategy rather than mechanics alone.",
      "telephone": "+1-206-659-5501",
      "areaServed": [
        { "@type": "State", "name": "Washington" },
        { "@type": "Place", "name": "Yakima River" }
      ],
      "knowsAbout": [
        "Fly fishing instruction",
        "Streamer fishing",
        "Fly casting",
        "Trout behavior",
        "Applied behavior analysis"
      ],
      "founder": { "@id": "https://www.troutpsychology.com/#kristen" },
      "sameAs": [
        "https://www.instagram.com/troutpsychology/"
      ]
    },
    {
      "@type": "Person",
      "@id": "https://www.troutpsychology.com/#kristen",
      "name": "Kristen Bufe",
      "jobTitle": "Founder and Lead Instructor",
      "worksFor": { "@id": "https://www.troutpsychology.com/#organization" },
      "description": "Founder of Trout Psychology. B.S. in Behavior Analysis, 25 years angling, 20 years water-based instruction, and roughly a decade teaching students on the autism spectrum.",
      "knowsAbout": ["Streamer fishing", "Applied behavior analysis", "Fly fishing instruction"]
    },
    {
      "@type": "WebSite",
      "@id": "https://www.troutpsychology.com/#website",
      "url": "https://www.troutpsychology.com",
      "name": "Trout Psychology",
      "publisher": { "@id": "https://www.troutpsychology.com/#organization" }
    }
  ]
}
</script>

Three things to complete before deploying:
1. sameAs is the disambiguation engine. Add every profile Kristen genuinely controls โ€” Instagram, YouTube, Facebook, LinkedIn, the Fly Fish Journal author page, the Lost Meander Podcast episode page. Each verified profile is a vote that this entity is a fly fishing educator. This array is what separates Trout Psychology from clinical psychology results. Confirm the full list with Kristen. [CONFIRM]
2. logo must be a real, publicly reachable URL. Replace the placeholder above with the live logo path.
3. Do not add LocalBusiness yet โ€” it requires a street address the business does not publish. See finding H6.

Verification after deploy: run the homepage through https://search.google.com/test/rich-results and confirm the Organization and Person nodes both parse with zero errors.

โš ๏ธ Methodology caveat: JSON-LD injected client-side by JavaScript does not always appear in a raw HTTP response. The block quoted above was read from static HTML, and Squarespace's native schema output is server-rendered, so the finding that no Organization schema exists is reliable. It should still be confirmed once with the Rich Results Test above before the fix is scoped as billable work.


C2 โ€” robots.txt blocks the AI crawlers most likely to cite the Method

Category: Crawlability / Answer Engine Optimization
Observed: https://www.troutpsychology.com/robots.txt applies a Disallow to a 28-agent block that includes:

anthropic-ai, ClaudeBot, GPTBot, CCBot, Google-Extended, Applebot-Extended, Bytespider, Meta-ExternalAgent, FacebookBot, cohere-ai, DuckAssistBot, Amazonbot, YouBot, AI2Bot, Quora-Bot, omgili, img2dataset, and others โ€” plus, notably, AdsBot-Google, AdsBot-Google-Mobile and AdsBot-Google-Mobile-Apps.

This is Squarespace's default AI-crawler blocklist. It is almost certainly a platform default that was never a deliberate choice.

Impact โ€” stated precisely, because the mechanics matter:

Agent Blocked? What it actually costs
Googlebot โœ… Not blocked Google Search rankings are unaffected. Google AI Overviews draw from the standard Googlebot index, so AI Overviews are also unaffected.
PerplexityBot โœ… Not blocked Perplexity can crawl and cite normally.
OAI-SearchBot โœ… Not blocked ChatGPT search retrieval still works.
GPTBot โŒ Blocked Limits OpenAI training and some browsing retrieval.
ClaudeBot, anthropic-ai โŒ Blocked Claude cannot crawl or cite the Method.
CCBot โŒ Blocked Common Crawl feeds a large share of downstream AI datasets and SEO tools. Highest-leverage single block on this list.
Google-Extended โŒ Blocked Opts out of Gemini app grounding and model training. Does not affect Google Search or AI Overviews.
AdsBot-Google โŒ Blocked Will degrade Google Ads Quality Score if paid search is ever run.

So this is a partial block, not a blackout. But the business goal is explicitly to make the Trout Psychology Method "the recognized approach" โ€” and recognition increasingly means being quoted by answer engines. The site currently forbids exactly the crawlers that would do the quoting, for no stated reason.

Fix: This is a business decision that belongs to Kristen, not a default that should stand by accident. Present it as a choice:

  1. In Squarespace, go to Settings โ†’ Crawlers (on some accounts: Settings โ†’ Developer Tools) and locate the "Block AI crawlers" toggle. Squarespace generates robots.txt automatically and it is not directly editable, so this toggle is the control surface. (Squarespace relocates this setting periodically; if it is not in Crawlers, search Squarespace Help for "block artificial intelligence crawlers".)
  2. Recommendation: turn the block OFF. For a business whose entire strategy is authority and citation, being absent from AI training and retrieval corpora is a direct cost with no offsetting benefit. Trout Psychology is not a publisher whose revenue depends on protecting article text from summarization; it sells in-person and virtual instruction. Being quoted is pure upside.
  3. Separately confirm AdsBot-Google is unblocked before any paid search spend. This one has no defensible upside at all.
  4. If Kristen wants to block training while allowing citation, that nuance is not available through the Squarespace toggle โ€” it is all-or-nothing. Note the limitation and take the default off.

Category: Crawlability / Internal Linking
Observed: https://www.troutpsychology.com/waretreats returns HTTP 404. The URL is linked from the site navigation on every page, with empty anchor text. It does not appear in the XML sitemap (correctly โ€” it does not exist).

The 404 page's title tag renders as SCco. โ€” which incidentally confirms the legacy business-name field (see H2).

Impact: Every page on the site passes crawl equity into a dead end. Users clicking a nav element land on an error page. Because the anchor text is empty, the link also transmits zero topical signal. Given the URL slug (waretreats = "WA retreats"), this looks like a Washington retreats page that was deleted or renamed to /educational-fly-fishing-retreats without a redirect.

Fix โ€” two steps, both required:

  1. Remove the dead nav link. In Squarespace: Pages panel โ†’ locate the empty-anchor navigation item pointing to /waretreats โ†’ delete it. Also check for /private-offerings, which is linked the same way with empty anchor text and should be verified or removed.
  2. Add a 301 redirect to catch existing links and any residual index entries. Settings โ†’ Developer Tools โ†’ URL Mappings, add:
    /waretreats -> /educational-fly-fishing-retreats 301
    Confirm with Kristen that /educational-fly-fishing-retreats is genuinely the successor page before mapping it. [CONFIRM]

C4 โ€” The homepage has five <h1> tags, three of which are a decorative emoji

Category: On-Page SEO / Semantic Structure
Observed: Heading structure of https://www.troutpsychology.com/:

Level Content
<h1> ใ€ฐ๏ธ
<h1> Questions or Booking Needs?
<h1> ใ€ฐ๏ธ
<h1> Call or Text 206-659-5501
<h1> ใ€ฐ๏ธ
<h2> Meet the Founder
<h3> Catch more fish. Catch bigger fish. Get there faster with Trout Psychology.
<h3> Book private education to skyrocket your fly fishing success and independence.
<h3> Start small with Virtual Casting lessons.
<h3> $250 for four weeks of unlimited video analysis of your cast!

Impact: The homepage โ€” the page that must rank for the brand term and anchor the entire entity โ€” has no keyword-bearing <h1>. Three of five <h1> tags contain a wavy-dash emoji used as a visual divider. The genuine value proposition ("Catch more fish... with Trout Psychology") is demoted to <h3>, three levels below decoration. The hierarchy is not merely imperfect; it is inverted. Screen readers announce the page's primary heading as an emoji, which is an accessibility failure as well as an SEO one.

Fix:

  1. Convert the three ใ€ฐ๏ธ dividers to non-heading elements. In the Squarespace editor these are almost certainly Text blocks styled as Heading 1 for size. Change each block's format from Heading 1 to Paragraph, or replace them with a proper Line/Divider block, which is the correct component for this and carries no semantic weight.
  2. Demote Questions or Booking Needs? and Call or Text 206-659-5501 from Heading 1 to Heading 3. They are section-level, not page-level.
  3. Promote the value proposition to the single <h1>. Change the block currently reading "Catch more fish. Catch bigger fish. Get there faster with Trout Psychology." from Heading 3 to Heading 1.

Better still, replace it with an <h1> that carries the brand term and the category, since this is the entity-defining page:

Fly Fishing Taught by Behavioral Science

...with the existing "Catch more fish. Catch bigger fish. Get there faster with Trout Psychology." retained directly beneath as an <h2>.
4. Rule going forward: exactly one <h1> per page, and it must contain meaning, never decoration.


C5 โ€” No blog and no content engine: the Method has no indexable home

Category: Content Strategy / Authority
Observed: The XML sitemap contains 22 URLs and zero blog or article URLs. There is no /blog collection. String matches for "blog" in the page source resolve exclusively to Squarespace framework JavaScript (squarespace-blog-collection-list), not to published content. The entire documented substance of the Method lives on one page, /about-the-science, at 763 words.

Impact: This is the direct technical expression of the strategic problem identified in the client profile. The business's most defensible asset โ€” credentialed behavior-analytic pedagogy applied to fly fishing, which no competitor has โ€” is represented online by a single page shorter than a magazine sidebar. There is nothing for other sites to link to, nothing for AI engines to quote, and nothing to rank for the hundreds of informational queries that lead anglers toward instruction. Competitors named in the profile (Orvis Learning Center, Gink & Gasoline, Red's Fly Shop) each run large content libraries. Trout Psychology is competing for authority with one page.

Fix: Stand up a content engine. This is Phase 2 work, but the technical prerequisites belong here:

  1. Create the blog collection now, even before content exists. Squarespace: Pages โ†’ + โ†’ Blog. Set the URL slug to /journal โ€” it is on-brand (river journaling is a documented pillar of the Method) and avoids the generic /blog.
  2. Add it to the primary navigation so posts are never orphaned.
  3. Structure it as a hub-and-spoke around the Method, not as a chronological feed. The hub is the Method page (see H8); spokes are individual principles, each a standalone article that links back to the hub.
  4. Seed topics directly from existing IP โ€” every one of these already exists in Kristen's teaching material and requires documentation, not invention:
    - "Trout are organisms that follow the same laws of learning" โ€” the core thesis
    - Why "think like a trout" beats matching the hatch
    - Task analysis applied to the fly cast: decomposing a complex skill
    - River journaling: what to record and why it compounds
    - Positive reinforcement in adult skill instruction
    - Why a 3:1 ratio changes what can be taught
    - Teaching fly fishing to students on the autism spectrum
    - Streamer strategy as an evidence-based decision tree
  5. Publication cadence matters more than length. Two substantial posts per month sustained for six months will outperform a single 5,000-word pillar page, because it produces recurring crawl activity, recurring internal links, and a growing citation surface.

๐ŸŸ  HIGH


H1 โ€” Doubled brand name in title tags

Category: On-Page SEO
Observed: /guidedtrips renders as:

Yakima River Fly Fishing Guides | Trout Psychology โ€” Trout Psychology (75 characters)

The brand appears twice. The mechanism: Squarespace automatically appends the Site Title (Trout Psychology) to every page title using an em-dash separator. Someone then hand-typed | Trout Psychology into the page's own SEO title field, producing the duplication.

Impact: Roughly 20 characters of the SERP title โ€” the most valuable text real estate the page owns โ€” is spent repeating a word Google already displays. At 75 characters the title truncates, so the duplication actively pushes meaningful text out of view.

Fix: Squarespace's auto-append cannot be disabled, so remove the brand from the page-level field and let the platform append it once.

Settings โ†’ SEO โ†’ page-level SEO Title for /guidedtrips, change to:

Yakima River Fly Fishing Guides

which Squarespace renders as Yakima River Fly Fishing Guides โ€” Trout Psychology (49 chars). โœ…

Audit every page for the same pattern. Any page-level SEO title containing the string Trout Psychology is a candidate.


H2 โ€” Legacy "SCco." branding persists in four machine-readable locations

Category: Brand Entity / Structured Data
Observed: The site has two separate brand fields configured with two different values:

Squarespace field Current value Where it surfaces
Site Title Trout Psychology Title tag suffix โ€” โœ… correct
Business Name SCco. (trailing space) โŒ four locations below

Confirmed leakage points:
1. <meta property="og:site_name" content="SCco. "> โ€” on every page. Governs how links render when shared to Facebook, LinkedIn, iMessage and Slack.
2. JSON-LD "name":"SCco. " โ€” the entity name (see C1).
3. The 404 page title renders as SCco..
4. The /booknow meta description reads: "Book your casting lessons, retreats, and guide trips with SCco. Secure your experience today..." โ€” customer-facing copy on the booking page naming a brand no customer recognizes.

Impact: Every social share of the site is labeled with a defunct brand. The structured-data entity carries the wrong name. And the booking page โ€” the highest-intent page on the site โ€” asks visitors to transact with an unfamiliar company, which is a live conversion risk, not only an SEO one.

Fix:
1. Settings โ†’ Business Information โ†’ Business Name: change SCco. to Trout Psychology. Delete the trailing space. This resolves leak points 1, 2 and 3 simultaneously.
2. /booknow meta description โ€” replace with (130 chars, validated):
Book casting lessons, retreats and guided trips with Trout Psychology. Reserve your date and start learning to think like a trout.
3. Retain Streamside Coven Co. and SCco. in the schema alternateName array (already included in the C1 code block). This is the correct place for a legacy name: it preserves entity continuity for Google without showing customers a dead brand.
4. [CONFIRM with Kristen] which entity is the legal registrant before changing anything that appears on invoices, receipts or the e-commerce checkout. The Business Name field may feed order confirmations. If SCco. is the legal entity, it belongs in checkout and terms โ€” never in og:site_name or a meta description.


H3 โ€” A placeholder page titled "New Page" is indexed and in the sitemap

Category: Indexation / Content Quality
Observed: https://www.troutpsychology.com/new-page-2 returns HTTP 200, is listed in the XML sitemap at priority 0.75, and carries:

The title literally begins with the words "New Page." The description is generic to the point of being interchangeable with any outdoor business โ€” it names no river, no method, no instructor, and no differentiator.

Impact: An unfinished page indexed under a placeholder title is a direct quality signal to Google about the care taken with the site. It also competes with real pages for the same generic terms while offering nothing.

A second placeholder, /member-site-homepage-1-2, is also in the sitemap (see L4).

Fix: Decide, then act โ€” do not leave it:
- If the page has a purpose: give it a real slug, title and description, and link it from the navigation.
- If it does not (most likely): delete it. Squarespace Pages โ†’ New Page โ†’ Settings โ†’ Delete. Deleting removes it from the sitemap automatically. Add a 301 to the closest relevant page if it has any inbound links:
/new-page-2 -> / 301


H4 โ€” Meta descriptions run 30โ€“45% over the display limit

Category: On-Page SEO
Observed: Measured lengths against Google's ~155โ€“160 character truncation point:

Page Length Status
/guidedtrips 228 โŒ ~70 chars cut
/streamer-stomp 219 โŒ ~60 chars cut
/instructors 196 โŒ ~40 chars cut
/about-the-science 312 โŒ ~150 chars cut โ€” worst on site
/ 167 โš ๏ธ marginal
/castinglessons 164 โš ๏ธ marginal
/new-page-2 158 โœ…
/booknow 157 โœ… (but names "SCco." โ€” see H2)
/nate 131 โœ…

Impact: Truncated descriptions lose their call to action, which is nearly always at the end. /guidedtrips currently cuts off mid-sentence at "Let us pair you with a fis...". Descriptions do not influence rankings directly, but they materially affect click-through rate from the SERP, and CTR is a real competitive lever on brand and service queries.

Fix: Rewrite to 120โ€“160 characters, front-loading the differentiator. Validated replacements:

/ (150 chars)

Fly fishing education built on behavioral science. Guided Yakima River trips, private instruction, retreats and virtual casting lessons in Washington.

/about-the-science (145 chars)

The Trout Psychology Method applies behavior analysis to the angler and the trout. Learn the reasoning behind every cast, not just the mechanics.

/guidedtrips (143 chars)

Book a guided fly fishing trip on Washington's Yakima River. Private and shared trips for every skill level, with a 3:1 student-to-guide ratio.

/instructors (137 chars)

Meet the Trout Psychology instructors: Kristen Bufe on streamers and Nate Tamarack on dry flies, teaching on the Yakima River year round.

/booknow (130 chars) โ€” see H2.


H5 โ€” Title tags exceed 60 characters on most pages

Category: On-Page SEO
Observed: Measured title lengths (including the auto-appended brand suffix):

Page Current Len
/about-the-science Discover the Methods that Make Trout Psychology the Leader in Fly Fishing Education โ€” Trout Psychology 102 โŒ
/streamer-stomp Community Fly Fishing Opportunity: Streamer Stomp Yakima River โ€” Trout Psychology 87 โŒ
/nate Nate's Availability \| Discover Availability & Book Now โ€” Trout Psychology 87 โŒ
/guidedtrips Yakima River Fly Fishing Guides \| Trout Psychology โ€” Trout Psychology 75 โŒ
/instructors Instructors \| Learn, Improve, Fish - Join Today โ€” Trout Psychology 72 โŒ
/new-page-2 New Page \| Enhance Your Skills - Book Today โ€” Trout Psychology 68 โŒ
/castinglessons Casting Lessons for Everyone, Everywhere โ€” Trout Psychology 65 โš ๏ธ
/booknow BOOK NOW \| Reserve Your Spot Today โ€” Trout Psychology 59 โœ…
/ Trout Psychology 16 โš ๏ธ under-used

/about-the-science is the worst case: at 102 characters it is nearly double the limit, and it names the brand twice. /nate says "Availability" twice in one title.

Impact: Truncation costs the keyword. More importantly, the homepage title at 16 characters wastes the strongest ranking asset on the site โ€” it says nothing about fly fishing, nothing about Washington, and gives Google no help distinguishing the brand from clinical psychology.

Fix: Set these page-level SEO titles without the brand (Squarespace appends it). Rendered lengths validated:

Page Set SEO Title field to Renders as Len
/ Trout Psychology \| Fly Fishing Education, Yakima River WA (set as full title) as written 57 โœ…
/about-the-science The Trout Psychology Method: Fly Fishing Taught by Science (set as full title) as written 58 โœ…
/guidedtrips Yakima River Fly Fishing Guides ... โ€” Trout Psychology 50 โœ…
/instructors Meet Our Fly Fishing Instructors ... โ€” Trout Psychology 51 โœ…
/castinglessons Virtual Fly Casting Lessons Online ... โ€” Trout Psychology 53 โœ…
/streamer-stomp Streamer Stomp: Yakima River Event ... โ€” Trout Psychology 53 โœ…
/nate Nate Tamarack, Dry Fly Instructor ... โ€” Trout Psychology 52 โœ…
/educational-fly-fishing-retreats 3-Day Fly Fishing Retreats in Washington ... โ€” Trout Psychology 59 โœ…
/private-fly-fishing-lessons-washington Private Fly Fishing Lessons, Washington ... โ€” Trout Psychology 58 โœ…
/washington-casting-camp Washington Casting Camp ... โ€” Trout Psychology 42 โœ…
/schools Fly Fishing Schools in Washington ... โ€” Trout Psychology 52 โœ…
/aboutthemission Our Mission ... โ€” Trout Psychology 30 โœ…

For / and /about-the-science, the brand is intentionally kept inside the title because those two pages carry the entity-disambiguation load.


H6 โ€” No published street address blocks local pack eligibility

Category: Local SEO
Observed: No street address appears anywhere in the audited pages, in the structured data, or in the site footer. The only contact method published is the phone number 206-659-5501. Confirmed against the client profile: [CONFIRM โ€” none published].

Impact: Three consequences, in order of cost:
1. Google Business Profile verification requires a real address, even for a service-area business that hides it publicly. Without a GBP, the business cannot appear in the local 3-pack for "fly fishing guide Yakima," "fly fishing lessons Cle Elum," or any comparable query โ€” a category of search with high commercial intent.
2. Citation building is impossible. NAP (Name, Address, Phone) consistency across directories is the mechanism; with no A, there is nothing to make consistent.
3. LocalBusiness schema cannot be validly implemented, which is why it was deliberately omitted from C1.

Note also that the 206 area code is a Seattle prefix while the business operates in Cle Elum (509 territory) โ€” a minor additional local-relevance mismatch worth noting, though not worth changing an established number over.

Fix:
1. [CONFIRM with Kristen] whether a business address exists that can be used โ€” home address, a shop, an outfitter partner, or a registered-agent address. This is a conversation, not a technical task, and it gates the entire local track.
2. If an address exists but she does not want it public: register the GBP as a service-area business. Google accepts the address for verification and hides it from the public listing. This is the standard solution for guides and mobile businesses and resolves the objection almost every time.
3. Once verified, publish the city/region in the footer as a minimum (Cle Elum, WA + Yakima River, WA), then extend the C1 schema to LocalBusiness with areaServed and geo coordinates.
4. Until an address exists, the Organization schema in C1 with areaServed is the correct maximum. Do not fabricate an address to unblock the schema โ€” a mismatched NAP is worse than an absent one and can cost a GBP suspension.


H7 โ€” Approximately nine pages appear to be orphaned

Category: Internal Linking / Crawl Efficiency
Observed: Cross-referencing the 22 sitemap URLs against links present in the site navigation, these pages are in the sitemap but not reachable from the primary navigation:

Orphaned URL Note
/michigan-guided-trips Geographic outlier โ€” see M6
/river-school Likely a /schools child
/creek-schools Likely a /schools child
/puget-sound-schools Likely a /schools child
/nate Instructor booking page โ€” should link from /instructors
/fly-selection-free-material Lead magnet โ€” highest-value orphan
/store E-commerce
/member-site-homepage-1-2 Placeholder
/new-page-2 Placeholder โ€” delete per H3
/home Duplicate of / โ€” see M1

* The three -school(s) pages may be linked from within /schools via sub-navigation not visible in the top-level nav markup. Verify by opening /schools in a browser before treating them as true orphans.

Impact: Orphaned pages receive minimal internal PageRank and are crawled infrequently. Two cases matter commercially:
- /fly-selection-free-material is apparently a free resource โ€” exactly the kind of asset that earns links and captures email. Unlinked, it does neither.
- /nate is a bookable instructor page. If /instructors does not link to it, the site is describing an instructor without offering the path to book him.

Fix:
1. Link /nate (and Kristen's equivalent, if one exists) directly from /instructors with descriptive anchor text: Book with Nate Tamarack.
2. Link /fly-selection-free-material from the Method page and from the footer. Anchor: Free fly selection guide.
3. Confirm the three school pages are linked from /schools; if not, add a linked card for each.
4. Resolve /michigan-guided-trips per M6.
5. Delete /new-page-2 and /member-site-homepage-1-2, or link and finish them.


H8 โ€” The Method page is thin and never defines the Method as a named concept

Category: Content Quality / E-E-A-T
Observed: /about-the-science โ€” the single most strategically important page on the site โ€” measures 763 words. Term frequency:

Term Count
Method 20
Trout Psychology Method 4
autism 5
behavior analy* 1
reinforcement 1
applied behavior analysis 0
task analysis 0
neurodiver* 0

The <h1> is: "When you want to learn something well, hire a teacher." โ€” a sentence containing neither the brand, the method, nor any term a prospect would search.

Impact: The page asserts leadership ("the Leader in Fly Fishing Education," per its title) without documenting the mechanism that justifies it. The specific, defensible, genuinely unique vocabulary from the client profile โ€” applied behavior analysis, task analysis, shaping, chaining, positive reinforcement, strategy blueprints, river journaling, 3:1 ratio โ€” is almost entirely absent from the page that exists to explain it. applied behavior analysis and task analysis, the two terms that make the claim credentialed rather than metaphorical, appear zero times.

For E-E-A-T, this page should be the strongest on the site. It is currently one of the thinnest.

Fix: Rebuild /about-the-science as the authority hub. Target 1,500โ€“2,000 words.

  1. Change the <h1> to name the thing:

    The Trout Psychology Method

Keep "When you want to learn something well, hire a teacher." as the <h2> or as intro copy โ€” it is good voice, just not a heading.
2. Define the Method explicitly in the first 100 words, in a form quotable by an AI answer engine. Suggested opening:

The Trout Psychology Method applies behavior analysis โ€” the science of how organisms learn โ€” to both sides of the cast. Trout are organisms that follow the same laws of learning, so their behavior can be predicted from their environment. Anglers learn the same way, which is why every skill is broken into components, taught with positive reinforcement, and chained progressively to mastery.
3. Give each pillar its own <h2>, so the page is machine-parseable and each pillar can later become a spoke article:
- Trout Are Organisms That Follow the Same Laws of Learning
- You Learn Best When You're Laughing
- Task Analysis: Breaking the Cast Into Its Parts
- Strategy Blueprints, Not Lesson Plans
- River Journaling: Building Observational Skill
- Why We Cap Instruction at 3 Students Per Instructor
4. Add explicit credential signals โ€” B.S. in Behavior Analysis, 25 years angling, 20 years instruction, ~10 years teaching students on the autism spectrum, ~40 combined years across the team. State them as facts on the page, not only on /instructors.
5. Add third-party validation โ€” link out to The Fly Fish Journal (Side Channels) feature and The Lost Meander Podcast (July 2025) episode. External citation of the founder is a direct E-E-A-T signal.
6. Change the URL slug to /method with a 301 from /about-the-science (see M3). Sequence this with the Tranche A2 move in Site Architecture Review.md ยง7 โ€” one change, one redirect, one re-crawl.
7. Add FAQPage schema to this page once rebuilt โ€” it is the highest-probability route into AI Overviews and featured snippets for "what is the trout psychology method."


H9 โ€” No author or Person entity for Kristen anywhere in structured data

Category: E-E-A-T / Entity
Observed: No Person schema exists on any page. The founder's credentials appear in body copy on /about-the-science and /instructors but are not machine-readable, and no page carries an author attribution.

Impact: Kristen's credentials โ€” a behavior analysis degree, a decade of applied instruction with neurodivergent students, published features โ€” are the entire basis of the authority claim. Google cannot currently connect that expertise to the brand entity, and cannot connect either to her off-site footprint (podcast appearance, journal feature, Instagram following). This is the difference between a business that says it is authoritative and an entity Google recognizes as authoritative.

Fix:
1. The Person node is already included in the C1 code block โ€” deploying C1 resolves the entity itself.
2. Add author attribution to every future /journal post, pointing at the same @id:
json "author": { "@id": "https://www.troutpsychology.com/#kristen" }
Using a stable @id across the site is what merges these into one recognized entity rather than repeated unlinked mentions.
3. Build a real author bio page at /kristen-bufe โ€” currently /instructors covers both instructors on one page. A dedicated page for each gives Google a canonical URL per person and a target for sameAs.
4. Add a visible byline and bio block to the foot of each Method and journal page. Visible credentials matter to human raters as well as algorithms.


๐ŸŸก MEDIUM


M1 โ€” The sitemap declares a non-canonical URL as the site's top-priority page

Observed: The XML sitemap lists https://www.troutpsychology.com/home at priority 1.0. But /home self-canonicalizes to https://www.troutpsychology.com โ€” the canonical tag on /home reads:

<link rel="canonical" href="https://www.troutpsychology.com"/>

So the sitemap's single highest-priority entry is a URL that explicitly tells Google not to index it.

Impact: Low-grade but genuine mixed signalling. Google resolves this correctly in almost all cases (the canonical wins), so this is not an emergency โ€” but the sitemap is supposed to be a clean list of canonical, indexable URLs, and its most important line currently is not one.

Fix: This is Squarespace-generated and not directly editable. The practical remedy:
1. In Pages, confirm the homepage is set as the site's primary/index page rather than a page that merely lives at /home.
2. In Google Search Console, submit https://www.troutpsychology.com/ explicitly via URL Inspection โ†’ Request Indexing, so the canonical version is unambiguously registered.
3. Verify in GSC โ†’ Pages that /home is reported as "Alternate page with proper canonical tag" โ€” that status confirms Google has resolved it correctly and no further action is needed.


M2 โ€” Inconsistent URL slug conventions

Observed: The site uses two incompatible conventions simultaneously:

Hyphenated (correct) Concatenated (incorrect)
/about-the-science /guidedtrips
/private-fly-fishing-lessons-washington /castinglessons
/educational-fly-fishing-retreats /booknow
/streamer-stomp /aboutthemission
/washington-casting-camp /giftcertificates

Impact: Google parses hyphens as word separators; concatenated slugs are harder to tokenize, so /guidedtrips transmits weaker keyword signal than /guided-trips would. The effect is modest and should not be overstated.

Fix โ€” reconciled position (Aug 27, 2026): Staged, tranche-based renames are approved. Apply the correct convention to new pages as a matter of course (/journal/...), and rename the existing concatenated slugs on the schedule in Site Architecture Review.md ยง7, which is the authority on sequencing.

This supersedes the earlier wording in this section, which read "do not bulk-rename these." The objection was to a bulk rename โ€” every slug at once, ungated, unmonitored โ€” and that objection stands. It is not an objection to the migration actually proposed, which is deliberately staged: one risk-ordered tranche at a time, a monitoring gate and a defined rollback between each, never two high-value URLs in flight, and the revenue page (/guidedtrips) moving alone and last. Under those conditions the redirect cost is bounded and observable, and the renames also carry UX, internal-linking and hierarchy benefits that this section's narrow ranking-signal framing did not price in.

Two constraints this section does contribute to that plan, and they are binding:
- The ranking gain from a slug rename alone is small. Do not justify a tranche on keyword tokenization; justify it on hierarchy, internal linking and CTA integrity.
- Every rename costs a redirect and risks accrued signal. That is why each tranche has a gate, and why a page with real indexed history (/educational-fly-fishing-retreats, /guidedtrips) is never used as a pipeline test.

๐Ÿ“Œ Reconciled source of truth. This document is the authority on what exists on the site today (crawl of 2026-08-27). Site Architecture Review.md is the authority on what changes, in what order, and behind which gates โ€” see its ยง4.1 (verified redirect table), ยง4.5 (reconciliation) and ยง7 (tranches). Neither document should be read as contradicting the other.


M3 โ€” The Method page URL does not contain the Method's name

Observed: The Method lives at /about-the-science. The homepage links to it with the anchor text "The Trout Psychology Method" โ€” the anchor is correct, the destination slug is not.

Impact: The URL is a ranking signal and a trust signal in the SERP. For the one page that must own the query "trout psychology method," the slug says "about the science" โ€” generic, unbranded, and unmemorable. It also makes the URL harder to cite verbally or in print.

Fix โ€” the destination is /method. Decided Aug 27, 2026.

This section originally proposed /trout-psychology-method. That is superseded. /method wins for two reasons: 126 downstream references across the Phase 2 deliverables already assume it, and it is the cleaner canonical for the brand's core IP โ€” short, memorable, sayable aloud on a podcast, and unambiguous once the site's entity is established. Shipping both instructions would have created a redirect chain on the single highest-value page in the engagement.

  1. Change the page slug to method.
  2. Settings โ†’ Developer Tools โ†’ URL Mappings, add:
    /about-the-science -> /method 301
  3. Update internal links on the homepage and in the navigation to point at the new URL directly, so no internal link relies on the redirect.
  4. Sequence this with the H8 content rebuild โ€” one change, one redirect, one re-crawl.
  5. Timing is not this document's call. /method ships in Tranche A2, week of Oct 12, 2026 โ€” pulled forward specifically so the hub is live before the cornerstone journal post that depends on it. See Site Architecture Review.md ยง7.

๐Ÿ“Œ Reconciled source of truth. Site Architecture Review.md ยง4.1/ยง4.5/ยง7 is the authority on the URL map and its sequencing; this document is the authority on the crawled current state. Neither should be read as contradicting the other.


M4 โ€” Most images carry empty alt attributes

Observed:

Page Images Empty alt="" Missing width/height
/ 6 4 2
/about-the-science 7 5 โ€”

No image was missing the alt attribute entirely โ€” Squarespace emits alt="", which is valid markup for decorative images but wrong for content images.

Impact: Two costs. Image search is a live traffic channel for an outdoor business with strong photography โ€” river shots, casting instruction, netted fish. And alt text is a topical relevance signal that reinforces what a page is about. Empty alt on a photo of Kristen teaching on the Yakima forfeits both. It is also an accessibility failure.

Fix: In the Squarespace image editor, set descriptive alt text per image. Describe the content, include the subject naturally, do not stuff keywords:

Genuinely decorative images โ€” dividers, background textures โ€” should keep alt="". That is correct, not a defect.


M5 โ€” Open Graph image is served over insecure HTTP

Observed:

<meta property="og:image" content="http://static1.squarespace.com/static/.../Streamside+blue-02.png?format=1500w"/>

The og:image URL uses http:// while the page itself is served over HTTPS. Note also that the filename is Streamside+blue-02.png โ€” the legacy brand logo (see H2).

Impact: Some social platforms and messaging clients refuse to fetch insecure images from a secure page, producing a missing or broken preview thumbnail on share. For a brand whose strongest channel is social, a broken share preview is a real cost. This is not a mixed-content warning on the page itself โ€” og:image is fetched server-side by the platform, not by the browser โ€” so it does not affect the padlock.

Fix:
1. Re-upload the social sharing image via Settings โ†’ Social Sharing Image, which will emit an HTTPS URL.
2. Use the current Trout Psychology logo, not the Streamside blue asset.
3. Recommended dimensions 1200ร—630. Confirm the result at https://www.opengraph.xyz/ after deploying.


M6 โ€” A Michigan page contradicts the Washington geographic positioning

Observed: /michigan-guided-trips exists in the sitemap (lastmod 2026-08-01), is not linked from the navigation, and sits alongside a site otherwise positioned entirely around the Yakima River and central Washington. The client profile notes Kristen grew up outside Detroit, which likely explains it.

Impact: Geographic relevance is one of the strongest local ranking signals. An orphaned Michigan page on a Washington site creates a small amount of location ambiguity, and if it describes trips no longer offered, it is also a customer-experience problem โ€” someone may book or enquire against a dead offering.

Fix: [CONFIRM with Kristen] whether Michigan trips are still offered.
- Still offered: link it from the navigation, give it a proper title and description, and treat Michigan as a genuine second service area in the Organization schema areaServed.
- No longer offered: delete the page and 301 it:
/michigan-guided-trips -> /guidedtrips 301
- Seasonal or occasional: keep it, but state the terms clearly on the page and link it from /guidedtrips rather than the main nav.


M7 โ€” Homepage is thin at 538 words

Observed: The homepage body contains approximately 538 words, of which a meaningful share is navigation and footer boilerplate.

Impact: For a homepage carrying the entity-definition load against a name collision with clinical psychology, this is not enough text for Google to build a confident topical profile. It is not a penalty โ€” thin homepages rank fine when the entity is well established โ€” but this entity is not yet established, so the homepage is doing less work than it needs to.

Fix: Extend to 800โ€“1,200 words with content that serves the authority goal rather than padding:
1. A short "What is the Trout Psychology Method?" section (150 words) linking to the full Method page.
2. A credentials block โ€” degree, years, students taught, ratio.
3. A brief service overview with descriptive internal links to each offering.
4. Two or three testimonials, ideally naming the specific skill learned.
5. A "Where we teach" section naming the Yakima River, Cle Elum, and central Washington โ€” geographic terms currently under-represented.

The existing brand voice is strong and should not be flattened into generic SEO copy. Add substance in the existing voice.


M8 โ€” Uniform sitemap priority and changefreq values

Observed: Every URL except the homepage carries priority 0.75 and changefreq daily. The /giftcertificates page (lastmod 2026-02-14) is declared as changing daily despite six months without modification.

Impact: Minimal. Google has publicly stated it largely ignores priority and changefreq. Worth recording for completeness, not worth engineering effort.

Fix: No action available or warranted โ€” these values are Squarespace-generated and not configurable. Do not let a third-party audit tool flag this as urgent; it is not.


M9 โ€” 46 scripts in the document head, including two third-party trackers

Observed: 46 <script> elements before </head>. Third-party hosts referenced: chimpstatic.com (Mailchimp popup), www.facebook.com (Meta Pixel), plus Squarespace's own CDN endpoints.

Impact: Render-blocking resources in the head delay First Contentful Paint and Largest Contentful Paint. The Mailchimp popup script is a common contributor to layout shift when a modal injects after paint. Most of these are Squarespace platform scripts that cannot be removed.

Fix: Limited control on Squarespace, but three real levers:
1. Audit whether the Meta Pixel is still needed. The client profile records no evidence of active paid campaigns. If nothing is running, remove it โ€” it is a pure performance and privacy cost with zero current return. [CONFIRM]
2. Configure the Mailchimp popup to trigger on delay or exit intent rather than immediately, which removes it from the initial render path.
3. Measure before optimizing โ€” see Section 4 for how to obtain real Core Web Vitals data. Do not act on this finding without it.


M10 โ€” Homepage <h2> structure is nearly absent

Observed: The homepage has 5 <h1>, exactly 1 <h2> ("Meet the Founder"), and 4 <h3>. Beyond the H1 problem in C4, there is effectively no section hierarchy.

Impact: Heading structure is how Google segments a page into topics and how it selects passages for featured snippets. A page with one H2 offers almost no structure to parse.

Fix: After applying C4, add descriptive <h2> headings to each homepage section โ€” for example What Is the Trout Psychology Method?, Ways to Learn With Us, Where We Teach, Meet the Founder. Reserve <h3> for genuine subsections beneath them.


M11 โ€” Duplicated and low-value title copy across service pages

Observed: Several titles use generic appended CTA phrases that consume characters without adding differentiation: | Learn, Improve, Fish - Join Today, | Enhance Your Skills - Book Today, | Discover Availability & Book Now, | Reserve Your Spot Today. The /nate title contains "Availability" twice.

Impact: These phrases are interchangeable across any outdoor business and rank for nothing. They occupy the characters that should carry the service and the location.

Fix: Replace per the H5 table. The rule: a title should contain what the page offers + where + the brand, not a call to action. The CTA belongs in the meta description, where it has room.


๐ŸŸข LOW


Observed: strict-transport-security: max-age=15552000 (180 days). No includeSubDomains, no preload.
Impact: Marginal. HSTS is present and functioning, which is the security-relevant part. The 180-day window is shorter than the 1-year value required for HSTS preload-list eligibility.
Fix: Squarespace-controlled and not configurable on the customer side. No action available. Recorded for completeness only โ€” if an audit tool flags this, it is not actionable.


Observed: At least three navigation links render with empty anchor text: /waretreats (also a 404 โ€” see C3), /private-offerings, and the homepage logo link to /.
Impact: Anchor text is a relevance signal. Empty anchors pass link equity but no topical context. The logo link is a normal and accepted pattern; the other two are not.
Fix: Remove /waretreats per C3. Verify whether /private-offerings is a live page or another folder placeholder; if live, give it visible anchor text. For the logo link, add an aria-label="Trout Psychology home" for accessibility โ€” this is an accessibility improvement, not an SEO one.


L3 โ€” Squarespace folder URLs are exposed in navigation, including one named /new-dropdown

Observed: The navigation contains two folder containers: /offerings ("Offerings") and /new-dropdown ("Our Unique Method"). The second retains Squarespace's default untitled-folder slug.

Impact: Folder URLs in Squarespace are navigational containers, not real pages, and typically are not indexed โ€” so the direct SEO cost is low. But the brand cost is not zero: the navigation section presenting the company's core intellectual property is addressed as new-dropdown. If that URL is ever exposed, shared or crawled, it reads as an unfinished site.

Fix: Rename the folder slug from new-dropdown to method. Squarespace: Pages โ†’ "Our Unique Method" folder โ†’ Settings โ†’ Navigation Title / URL Slug. Verify afterwards that the child pages' URLs are unaffected โ€” in Squarespace, folder slugs do not form part of child page paths, so this should be a safe change, but confirm on a single page before assuming.


L4 โ€” A member-site placeholder page is in the sitemap

Observed: /member-site-homepage-1-2 is listed in the sitemap with 7 images and lastmod 2026-08-01. The slug is a Squarespace default from the member-areas feature.
Impact: Another unfinished page available for indexing. Minor quality signal, and potentially confusing if a customer reaches it.
Fix: If member areas are not in use, delete the page. If they are planned, set it to Unlisted (Squarespace: Page Settings โ†’ toggle off "Enable Page" or move to Not Linked and set Password Protected), which removes it from the sitemap until it is genuinely ready. [CONFIRM] whether the $250/month virtual casting subscription is intended to run through Squarespace member areas โ€” if so, this page becomes a real asset and should be finished rather than deleted.


L5 โ€” Gift certificates page is six months stale

Observed: /giftcertificates reports lastmod 2026-02-14 โ€” the only page on the site not touched in the last month. All other pages show August 2026 dates.
Impact: Negligible for ranking. Commercially relevant: gift certificates are a seasonal product and the page has not been reviewed since Valentine's Day. Pricing or terms may be out of date heading into the autumn and winter gifting season.
Fix: Review pricing and terms with Kristen. Refresh ahead of the holiday season โ€” this is a revenue task with an SEO side effect, not the reverse.


L6 โ€” Bulk lastmod dates suggest a site-wide edit rather than genuine updates

Observed: lastmod values cluster tightly: nine pages on 2026-08-01, eight on 2026-08-23. This pattern indicates template or settings changes propagating a modification date rather than substantive content updates.
Impact: None directly โ€” Google evaluates actual content change, not the declared lastmod. Recorded because it means lastmod cannot be used as a content-freshness metric for this site, which matters when measuring the Phase 2 content programme.
Fix: No action. Track content freshness through the /journal publication schedule instead.


3. Verified Healthy โ€” and Three Corrections to the Preliminary Notes

Three concerns raised in the client profile did not reproduce under direct testing. Recording these matters: they should not consume budget, and the profile should be corrected.

Preliminary concern Test performed Actual result
"Pages are aggressively rate-limiting crawlers (repeated HTTP 429) โ€” worth checking whether this also affects Googlebot." 8 consecutive requests to /about-the-science with no delay, using a Googlebot user-agent string All 8 returned HTTP 200. Response times improved across the burst (0.67s โ†’ 0.21s), indicating CDN caching, not throttling. Could not reproduce the 429. See note below.
"streamsidecovenco.com โ†’ 302 redirects to troutpsychology.com" Direct header inspection It is a 301, not a 302. HTTP/2 301 โ†’ location: https://www.troutpsychology.com/. A 301 is the correct, permanent redirect that passes link equity. This is already right โ€” no action needed.
Assumed duplicate homepage at /home Canonical tag inspection /home correctly self-canonicalizes to https://www.troutpsychology.com. Handled properly by the platform. Only the sitemap listing is imperfect (M1).

On the 429s specifically

The 429s previously observed were almost certainly not a Googlebot problem. The most likely explanation is that the earlier requests originated from a datacenter IP range or automated tool that Squarespace's edge protection throttles by default โ€” a pattern that does not apply to verified Googlebot traffic, which Squarespace allowlists.

This should still be confirmed rather than assumed, because the consequence of being wrong is severe. Exact steps:

  1. Open Google Search Console โ†’ Settings โ†’ Crawl stats.
  2. Review "By response". Look for any 429 bucket. A healthy site shows >90% 200 responses.
  3. Check the "Host status" panel for "robots.txt fetch" and "Server connectivity". Both should read green / No issues.
  4. If any 429s appear against Googlebot, escalate to Squarespace support directly โ€” this is edge configuration the customer cannot control.

Assessment: low probability of a real problem, high cost if wrong, near-zero cost to check. Verify once, then close it out.

Confirmed working correctly

Check Result
HTTPS enforcement โœ… http://troutpsychology.com โ†’ https://www.troutpsychology.com/ in a single hop. No redirect chain.
SSL certificate โœ… Valid, no errors
HSTS โœ… Present (max-age=15552000) โ€” see L1
www canonicalisation โœ… One canonical host enforced
Canonical tags โœ… Present, correct and self-referencing on every page tested
robots.txt โœ… Present, valid, correctly references the sitemap
Sitemap reference โœ… Sitemap: https://www.troutpsychology.com/sitemap.xml
XML sitemap โœ… Present, valid XML, 22 URLs, includes image entries
Accidental noindex โœ… None found on any page tested
Viewport meta tag โœ… width=device-width, initial-scale=1
Security headers โœ… X-Content-Type-Options: nosniff, X-Frame-Options: SAMEORIGIN
Server response time โœ… TTFB 0.21โ€“0.67s โ€” good
Googlebot access โœ… Not blocked in robots.txt
hreflang โœ… N/A โ€” single-language site, correctly absent
404 handling โœ… Returns a true 404 status, not a soft 404

4. Requires Tool Access โ€” Not Measured, With Exact Steps to Measure

No metric in this section has been estimated or invented. Each item below could not be measured from HTTP requests alone. Each includes the exact procedure to obtain the real number.

4.1 Core Web Vitals / PageSpeed

Status: Not measured. Requires: PageSpeed Insights (free) and/or Chrome UX Report field data.

What is known from this audit: server TTFB is good (0.21โ€“0.67s), the page ships 46 head scripts, two third-party trackers are present, and 2 of 6 homepage images lack explicit width/height (a layout-shift risk).

What is not known: actual LCP, INP or CLS values. We will not quote a performance score we did not measure.

Steps:
1. Go to https://pagespeed.web.dev/
2. Enter https://www.troutpsychology.com/, run for Mobile first (Google indexes mobile-first).
3. Record the Core Web Vitals Assessment โ€” this is field data from real users and is the only figure that affects ranking. If it reads "Not enough data," the site has insufficient traffic for field measurement; use the Lab Data section as a directional proxy only.
4. Targets: LCP < 2.5s, INP < 200ms, CLS < 0.1.
5. Repeat for /about-the-science and /guidedtrips.

4.2 Google Search Console

Status: No access. Requires: GSC property access from Kristen โ€” the single most important access request in this engagement.

Steps to grant: GSC โ†’ Settings โ†’ Users and permissions โ†’ Add user โ†’ Full permission.

Once available, pull:
- Pages report โ€” how many of the 22 sitemap URLs are actually indexed. This is the only authoritative answer.
- Crawl stats โ€” resolves the 429 question (Section 3).
- Performance โ†’ Queries โ€” whether the site receives impressions for "trout psychology" and whether users are landing on it while searching for clinical psychology. This directly measures the brand-confusion problem.
- Core Web Vitals report โ€” field data across all URLs.
- Manual Actions and Security Issues โ€” confirm both are clear.

If no GSC property exists, create one immediately at https://search.google.com/search-console โ€” Squarespace verifies via Settings โ†’ Developer Tools โ†’ Google Search Console in a few clicks. Nothing in the measurement plan works without this.

Status: Not measured. Requires: Ahrefs, Semrush, or Moz.

We will not quote a DA/DR figure we have not measured. Any such number in a competing proposal without tool access is fabricated.

Free approach: GSC โ†’ Links report gives Google's own view of top linking sites and top linked pages โ€” arguably better than third-party estimates, and free once 4.2 is done.
Paid approach: Ahrefs Site Explorer or Semrush Backlink Analytics. Also run redsflyfishing.com and the Orvis Learning Center for a realistic gap benchmark.

4.4 Google Business Profile

Status: Could not locate โ€” consistent with the client profile's [CONFIRM]. Requires: Google account access, plus resolution of H6 (address).

Steps:
1. Search Trout Psychology Cle Elum on Google Maps.
2. If a listing exists unclaimed, claim it at https://business.google.com/
3. If none exists, create one โ€” as a service-area business so no street address is displayed publicly (see H6).
4. This gates the entire local track including citation building and review generation.

4.5 Structured data validation

Status: Partially measured. Static-HTML JSON-LD was read directly (see C1); client-side-injected schema cannot be detected by HTTP request alone.

Steps: Run https://www.troutpsychology.com/ through https://search.google.com/test/rich-results โ€” before the C1 fix to confirm the baseline, and after to confirm the Organization and Person nodes parse cleanly.

4.6 Rendered-DOM and mobile UX checks

Status: Not measured. Touch-target sizing, tap-target overlap, interstitial behaviour and horizontal-scroll risk require a rendering browser.
Steps: Chrome DevTools device emulation at 375px width across the homepage, /about-the-science and /booknow. Confirm no horizontal scroll, all tap targets โ‰ฅ44ร—44px, and that the Mailchimp popup does not function as an intrusive interstitial on mobile โ€” Google treats intrusive mobile interstitials as a ranking negative.

4.7 Keyword rankings and search volume

Status: Not measured. Requires: Semrush, Ahrefs, or Google Keyword Planner.
Ranking positions and monthly search volumes for terms such as "yakima river fly fishing guide", "fly fishing lessons washington", "learn to fly fish washington" and "trout psychology method" cannot be observed from page source. Deferred to the keyword research deliverable.


5. โšก Quick Wins

The three highest-impact fixes relative to effort. All three are achievable in a single working session.

1. Deploy the Organization + Person schema.
This is the direct fix for the brand-entity confusion that is the defining SEO problem of this business. Right now the only machine-readable identity signal on the site names the wrong company and carries an empty description. โ†’ Paste the JSON-LD block from C1 into Settings โ†’ Advanced โ†’ Code Injection โ†’ Header, populate the sameAs array with every profile Kristen controls, and validate at the Rich Results Test. ~45 minutes. Highest leverage item in this document.

2. Change the Business Name field and remove the AI-crawler block.
Two settings toggles that between them fix a defunct brand appearing on every social share, in the structured data, and on the 404 page โ€” and stop the site from turning away the exact crawlers that would cite the Method. โ†’ Settings โ†’ Business Information โ†’ Business Name: SCco. becomes Trout Psychology. Then Settings โ†’ Crawlers โ†’ turn off the AI crawler block (see C2 for the decision framing, and confirm AdsBot-Google is unblocked). ~10 minutes.

3. Fix the homepage H1 and the /waretreats 404.
The homepage's primary heading is currently a decorative squiggle emoji, and every page on the site links into a dead end. Both are invisible to the eye and obvious to a crawler. โ†’ Convert the three ใ€ฐ๏ธ blocks from Heading 1 to Paragraph or Divider, promote the value proposition to a single <h1>, delete the empty-anchor /waretreats nav link, and add the 301 mapping from C3. ~30 minutes.


6. Prioritized Action Plan

Week 1 โ€” Foundation (do these first; everything else depends on them)

# Action Ref Owner Effort
1 Grant Search Console access, or create the property 4.2 Kristen 10 min
2 Deploy Organization + Person JSON-LD C1 Consultant 45 min
3 Change Business Name SCco. โ†’ Trout Psychology H2 Consultant 2 min
4 Decide and act on the AI-crawler block C2 Kristen decides 10 min
5 Remove /waretreats nav link + add 301 C3 Consultant 15 min
6 Fix homepage H1 hierarchy C4 Consultant 30 min
7 Delete /new-page-2 H3 Consultant 5 min
8 Confirm street address situation H6 Kristen decides conversation

Week 2 โ€” On-Page

# Action Ref Effort
9 Rewrite all title tags per the H5 table H5, H1, M11 90 min
10 Rewrite meta descriptions to 120โ€“160 chars H4 60 min
11 Add alt text to all content images M4 45 min
12 Fix og:image to HTTPS + current logo M5 15 min
13 Link orphaned pages (/nate, /fly-selection-free-material) H7 30 min
14 Resolve /michigan-guided-trips M6 20 min
15 Rename /new-dropdown folder โ†’ /method L3 10 min

Weeks 3โ€“4 โ€” Authority Assets

# Action Ref Effort
16 Rebuild the Method page to 1,500โ€“2,000 words H8 6โ€“8 hrs
17 Migrate /about-the-science โ†’ /method + 301 (Tranche A2 โ€” see Site Architecture Review.md ยง7) M3 20 min
18 Add FAQPage schema to the Method page H8 60 min
19 Expand the homepage to 800โ€“1,200 words M7 3 hrs
20 Create the /journal blog collection + add to nav C5 30 min
21 Build individual instructor bio pages H9 2 hrs
22 Claim / create the Google Business Profile 4.4 45 min

Month 2 onward โ€” Content Engine

# Action Ref
23 Publish 2 Method-pillar articles per month C5
24 Build hub-and-spoke internal linking to the Method page C5, H7
25 Begin citation building (blocked until H6 resolves) H6
26 Establish review generation โ€”

7. Full Findings Table

# Priority Category Issue Impact Fix
C1 ๐Ÿ”ด Critical Structured Data Only JSON-LD is a WebSite node named "SCco. " with empty description Brand entity undefined; cannot disambiguate from clinical psychology; no Knowledge Panel path Deploy Organization + Person + WebSite @graph via Code Injection
C2 ๐Ÿ”ด Critical Crawlability robots.txt blocks ClaudeBot, GPTBot, anthropic-ai, CCBot, Google-Extended, AdsBot-Google Forfeits AI citation โ€” the exact mechanism of the stated authority goal Settings โ†’ Crawlers โ†’ disable AI crawler block; confirm AdsBot unblocked
C3 ๐Ÿ”ด Critical Internal Links Sitewide nav link to /waretreats returns 404, empty anchor text Every page leaks crawl equity into a dead end; users hit an error Remove nav link; add 301 /waretreats โ†’ /educational-fly-fishing-retreats
C4 ๐Ÿ”ด Critical On-Page 5 <h1> on homepage; three are the emoji ใ€ฐ๏ธ; value prop is <h3> Primary heading of primary page carries no meaning; accessibility failure Convert ใ€ฐ๏ธ blocks to Paragraph/Divider; promote value prop to single <h1>
C5 ๐Ÿ”ด Critical Content No blog; Method documented on one 763-word page Core IP has no indexable, linkable, citable home Create /journal; publish 2 Method-pillar posts per month
H1 ๐ŸŸ  High On-Page /guidedtrips title contains "Trout Psychology" twice (75 chars) ~20 chars of SERP title wasted; title truncates Remove brand from page-level SEO title; let Squarespace append once
H2 ๐ŸŸ  High Brand Entity SCco. in og:site_name, JSON-LD, 404 title, /booknow description Every social share and the booking page show a defunct brand Settings โ†’ Business Information โ†’ Business Name โ†’ Trout Psychology
H3 ๐ŸŸ  High Indexation /new-page-2 indexed, titled "New Page", in sitemap Placeholder page signals low site quality to Google Delete the page; 301 to /
H4 ๐ŸŸ  High On-Page Meta descriptions 196โ€“312 chars on key pages CTAs truncated from SERP; CTR loss Rewrite to 120โ€“160 chars (copy provided)
H5 ๐ŸŸ  High On-Page Titles 65โ€“102 chars on most pages; homepage only 16 Keywords truncated; homepage wastes strongest ranking asset Apply validated title table
H6 ๐ŸŸ  High Local SEO No published street address Blocks GBP verification, local pack, citations, LocalBusiness schema Confirm address; register GBP as service-area business
H7 ๐ŸŸ  High Internal Links ~9 sitemap pages unreachable from nav, incl. the lead magnet Orphans get minimal crawl priority; lead magnet earns nothing Link /nate, /fly-selection-free-material; verify school pages
H8 ๐ŸŸ  High Content / E-E-A-T Method page 763 words; applied behavior analysis and task analysis appear 0 times Authority claim asserted but not evidenced on its own page Rebuild to 1,500โ€“2,000 words; <h1> = "The Trout Psychology Method"
H9 ๐ŸŸ  High E-E-A-T No Person schema; no author attribution Kristen's credentials not machine-readable or entity-linked Deploy Person node; add author @id to all future posts
M1 ๐ŸŸก Medium Indexation Sitemap lists /home at priority 1.0 but it canonicalizes to / Mixed signal on the site's most important URL Submit / via GSC URL Inspection; verify canonical status in GSC
M2 ๐ŸŸก Medium URL Structure Mixed hyphenated and concatenated slugs Concatenated slugs tokenize weakly Apply convention to new pages; rename existing slugs on the staged tranche schedule in Site Architecture Review.md ยง7
M3 ๐ŸŸก Medium URL Structure Method lives at /about-the-science The key authority URL omits the brand term Rename to /method + 301 (Tranche A2)
M4 ๐ŸŸก Medium Images 4/6 homepage and 5/7 Method images have alt="" Forfeits image search and topical relevance; accessibility gap Add descriptive alt text; keep alt="" only for decorative images
M5 ๐ŸŸก Medium Social og:image served over http://, uses legacy logo Broken share previews on the strongest channel Re-upload social sharing image (HTTPS, 1200ร—630, current logo)
M6 ๐ŸŸก Medium Local SEO Orphaned /michigan-guided-trips on a Washington site Geographic ambiguity; possible dead offering Confirm status; link properly or 301 to /guidedtrips
M7 ๐ŸŸก Medium Content Homepage ~538 words Too thin to establish a contested entity Expand to 800โ€“1,200 words in existing brand voice
M8 ๐ŸŸก Medium Sitemap Uniform priority 0.75 / changefreq daily Negligible โ€” Google largely ignores both No action available; do not spend effort here
M9 ๐ŸŸก Medium Performance 46 head scripts; Mailchimp + Meta Pixel Render-blocking; layout-shift risk Remove unused Meta Pixel; delay popup; measure first
M10 ๐ŸŸก Medium On-Page Homepage has only one <h2> No section structure for passage ranking Add descriptive <h2> per section
M11 ๐ŸŸก Medium On-Page Generic CTA phrases padding titles; /nate repeats "Availability" Characters spent on text that ranks for nothing Apply H5 table; move CTAs to descriptions
L1 ๐ŸŸข Low Security HSTS max-age 180 days, no preload Below preload-list eligibility Squarespace-controlled โ€” no action available
L2 ๐ŸŸข Low Internal Links Empty anchor text on /waretreats, /private-offerings, logo Passes equity without topical context Fix per C3; add aria-label to logo link
L3 ๐ŸŸข Low URL Structure Method nav folder addressed as /new-dropdown Brand credibility if exposed Rename folder slug to method
L4 ๐ŸŸข Low Indexation /member-site-homepage-1-2 placeholder in sitemap Unfinished page indexable Delete, or set unlisted until the member area launches
L5 ๐ŸŸข Low Content /giftcertificates unchanged since 2026-02-14 Commercial: stale pricing before gifting season Review pricing and refresh ahead of the holidays
L6 ๐ŸŸข Low Sitemap lastmod values bulk-clustered on two dates lastmod unusable as a freshness metric No action; track freshness via /journal cadence

8. Methodology & Evidence

Audited: August 27, 2026
Method: Direct HTTP requests with response-header capture and static HTML parsing. Requests were deliberately spaced (14โ€“20s intervals) to respect the rate-limiting noted in the client profile. Total requests: approximately 30, including redirect hops. No 429 responses were received at any point during this audit.

Pages retrieved in full: /, /about-the-science
Pages retrieved (head only, via HTTP range requests): /home, /instructors, /guidedtrips, /castinglessons, /new-page-2, /waretreats, /streamer-stomp, /booknow, /nate
Resources retrieved: /robots.txt, /sitemap.xml
Redirects tested: http://troutpsychology.com โ†’ HTTPS; https://streamsidecovenco.com โ†’ primary domain
Rate-limit test: 8 consecutive unspaced requests using a Googlebot user-agent string

Character counts for all recommended titles and meta descriptions were programmatically validated, not estimated.

Limitations

  1. Client-side-rendered content was not evaluated. Static HTML only; no JavaScript execution. Schema findings carry the caveat noted in C1.
  2. 9 of 22 sitemap URLs were not individually retrieved โ€” deliberately, to conserve crawl budget. Findings for those pages derive from sitemap metadata and navigation analysis. A full crawl (Screaming Frog) would confirm.
  3. No performance, ranking, backlink or index-coverage data โ€” see Section 4. None of it has been estimated.
  4. Orphan-page findings (H7) are based on primary navigation markup. In-body and sub-navigation links may exist. Verify before treating any page as definitively orphaned.

Items requiring Kristen's confirmation


Prepared for Trout Psychology โ€” Phase 1, Foundation. All findings observed directly against the live site on August 27, 2026. No metrics in this document are estimated or modeled; unmeasurable items are listed in Section 4 with steps to obtain them.

Go to
The Action PlanResource Library
On this page