Verdict
Root cause 1 — the blog content was not refreshed after the Google updates, and competitors overtook it (Dec 2025 → Apr 2026). The 700 "Baseball 101" articles produced 87% of all impressions and 47% of all clicks. Clicks halved in the December 2025 core update (positions and impressions unchanged, so the loss was CTR: AI Overviews and refreshed competitor pages began winning the click on the same queries). Informational content has to be optimized and updated on a cycle to hold those positions; the articles were not, so from 5 March 2026 impressions fell 85% in three weeks and the March 2026 spam + core updates (24 Mar – 8 Apr) locked the loss in. Semrush shows ranking keywords going from 49,400 (Feb) to 6,400 (Apr).
Root cause 2 — the blog was then taken offline (July/Aug 2026). Today every /blogs/baseball-101/… URL 301-redirects to the empty /blogs/news index; every /blogs/news/… article returns 404; the blog sitemap lists only two index URLs and both indexes contain zero articles. Articles were still live in the Wayback Machine on 8 June 2026. This is why the residual traffic is still sliding in August: the ~250 clicks/day that survived the algorithmic drop are now being sent to redirect targets with nothing on them.
What is not the cause. The redesign, the technical layer and the link profile. The store's canonicals, robots.txt, sitemap index, structured data and indexability are basically sound (details below), and Semrush's referring-domain count (1,129) shows no link loss. The store side of the site never went down: the homepage alone still earns ~12.7% CTR on brand queries.
1. What the data says
Where the traffic actually came from
| Page type | URLs in GSC | Clicks (16 mo) | Impressions | CTR | Reading |
|---|---|---|---|---|---|
| Homepage | 1 | 71,597 | 562k | 12.7% | Brand demand. "plate crate" and misspellings alone are ~72k clicks in the query report. |
| Blog articles | 700 | 112,162 | 37.7M | 0.30% | 87% of impressions, 47% of clicks, almost all informational ("what is ops in baseball", "how many innings"). Currently offline. |
| Products | 183 | 24,449 | 2.1M | 1.2% | Tee Popper family dominates. 20 URLs are Merchant Center ?variant=…&utm_… duplicates. |
| Collections | 74 | 21,212 | 2.5M | 0.86% | Tee Poppers (5.6k), Gifts (2.2k), All, Shirts, Softball, Bandit Sports. |
| Pages | 40 | 7,109 | 668k | 1.1% | Support and monthly crate guides; mostly brand. |
Two things follow. The blog was the site's only source of non-brand reach at scale (37.7M impressions), and roughly 73% of all clicks in the query report are branded. The commercial non-brand footprint (baseball subscription box, tee popper, baseball gifts, training aids) is small but converts, and it is untouched by everything that went wrong. Both layers need rebuilding: the content layer by reinstating what worked, the commercial layer by giving it content of its own.
- Geography: 85% of clicks from the US, 11% Canada. No international targeting needed; no hreflang on site and none required.
- Devices: 73% of clicks on mobile (position 5.3 vs 9.5 on desktop). Mobile page weight matters (see §3.1).
2. Rule-based audit by page type
Each rule from the audit rules file was evaluated against the raw HTML fetched on 24 Aug 2026. Sample URLs: homepage; /products/teepopper (+ its ?variant= URL and the /collections/tee-poppers/products/rac-popper-bundle nested URL); /products/baseball-crate-monthly-subscription; /collections/tee-poppers, /collections/gifts, /collections/all, /collections/shorts?page=2; /pages/about-us, /pages/customer-service-info; /blogs/baseball-101, /blogs/news.
Critical Flag Pass Note
Homepage
| Rule | Status | Finding |
|---|---|---|
| 1 Meta title | Flag | 63 chars and the brand is duplicated: Plate Crate | Plate Crate | Monthly Baseball Subscription Boxes. Theme appends the shop name to a title that already contains it (same bug on the RAC bundle product). Fix the title template once. |
| 2 Meta description | Pass | 154 chars, describes the business. |
| 3–4 Canonical & root URL | Pass | Self-referencing absolute canonical. http:// and non-www 301 to https://www. in one hop. |
| 5 Organization schema | Flag | Present but missing logo and contactPoint; sameAs contains four empty strings and uses http:// Twitter/Facebook URLs. |
| 6 WebSite schema | Pass | SearchAction targets /search?q=. |
| 7 H1 | Critical | No H1 at all. The hero heading "The most fun way to train for baseball" is an H2, preceded by two hidden H2s ("Products", "Subscribe to Newsletter") from the predictive-search and newsletter drawers. |
| 8 Heading hierarchy | Flag | Sitewide: every page starts with the two drawer H2s before its own H1; H5/H6 used for styling ("Description", "Filter By", "join the team"). |
| 9 Above-fold content in HTML | Pass | Hero copy is server-rendered. |
| 10 Body content | Pass | ~5,400 words in the DOM (much of it product-card text). |
| 11–13 Navigation, internal links, footer | Pass | 228 internal <a href> links; mega-menu is crawlable HTML (69 header links); footer has policy/contact/blog links. 62 href="#"/empty links are drawer toggles (informational). |
| 14 Images | Flag | 173 images; 13 without alt, 36 without dimensions; the first image in the DOM is lazy-loaded; hero uses generic names (Untitled_design_6.png, alt "Man img"). |
| 15 Logo | Pass | Alt "Plate Crate", linked to /. (Cannot match schema logo because it is absent, see rule 5.) |
| 16 Trust signals | Pass | "4,759+ reviews", star ratings as text. |
| 17 Language & viewport | Pass | lang="en", viewport OK, no hreflang needed. |
| 18 Indexability | Pass | No noindex, robots.txt 200 with sitemap directive, sitemap index reachable. |
| 19 Social tags | Flag | All tags present, but og:image is served as http:// (secure_url duplicates it as https). Image is 1200×628. |
| 20 Page hygiene | Critical | 1.6 MB of HTML for the homepage (800 KB–1.4 MB on every other template). 10 synchronous scripts and 6 stylesheets in <head>. Server processing 868 ms before first byte. The largest technical issue on the site. |
Product page
| Rule | Status | Finding |
|---|---|---|
| 1 Meta title | Flag | "Tee Popper Mini | Plate Crate" is 29 chars, under the 50-char floor and missing the category term ("baseball hitting trainer"). Titles are not templated across products (good). |
| 2 Meta description | Flag | 257 chars (truncates). Written for the full-size Tee Popper, reused on the Mini. |
| 3 Canonical | Pass | Variant URL and nested collection URL both canonicalize to /products/teepopper. |
| 4 URL | Note | Slugs fine. 20 GSC URLs carry Merchant Center parameters (?variant=…&utm_source=google&utm_campaign=sag_organic); canonical handles them but they still earn ~1,200 clicks under the wrong URL. |
| 5 Product schema | Flag | Two conflicting Product blocks on every product: the theme's (brand as Brand, mpn, aggregateRating 4.8/55, no sku) and Shopify's native one (brand as Thing, sku, per-variant offers). Neither has gtin. On-page price ($28.99) matches. |
| 6 Breadcrumbs | Flag | Trail is Home › Product — the parent collection is omitted in both the visible trail and BreadcrumbList. |
| 7 H1 | Critical | Two H1s ("Tee Popper Mini" twice — mobile and desktop title blocks both rendered). Subscription product page is correct with one. |
| 8 Heading hierarchy | Flag | H1 → H6 ("Description") → H5 → H3 → H2. Description/specs/reviews/FAQ should be H2. |
| 9 Product images | Flag | First image lazy-loaded; 4 missing alt; file names are descriptive. |
| 10 Description | Pass | Unique, server-rendered, over 150 words. |
| 11 Price & availability in HTML | Pass | Server-rendered; matches schema. |
| 12 Reviews | Flag | Schema says 55 ratings; the review widget renders client-side so no review count or text exists in raw HTML. Google's product-snippet report (34k clicks) proves the rich result works today, but it rests on a JS-only widget. |
| 13 FAQ block | Flag | Visible "faqs" accordion with no FAQPage schema. |
| 14 Internal links | Pass | Related products rendered server-side (9 items); 153 internal links. |
| 15 Trust & shipping | Pass | Stock status, 60-day guarantee, returns linked. |
| 16 Indexability | Pass | Indexable, in products sitemap. |
| 17 Social tags | Pass | og:type=product, price tags present. Image 1080×1080 (below the 1200×630 width guideline; minor). |
Collection page
| Rule | Status | Finding |
|---|---|---|
| 1–2 Title & description | Flag | Good on the main collections (Tee Poppers 68 chars — slightly long; Gifts 60; All 64). Page 2+ shares page 1's title exactly (/collections/shorts?page=2). |
| 3 Canonical | Pass | Page 2 self-canonical; filters use sort_by/filter parameters blocked in robots.txt. |
| 5 Schema | Pass | ItemList + BreadcrumbList present. |
| 6 Breadcrumbs | Pass | Home › Collection, visible and in schema. |
| 7 H1 | Flag | H1 is the bare collection name ("Gifts", "Shorts", "Tee Poppers") while the title carries the search term ("Baseball Gifts | Presents for Baseball Players"). Put the target term in the H1. |
| 8 Intro copy | Pass | Unique SEO copy under the grid on Tee Poppers and Gifts (server-rendered). Check the 60+ themed monthly collections — most have none. |
| 10–11 Grid & cards | Pass | Product links, prices and images in raw HTML; 4–5 images missing alt per grid. |
| 12 Pagination | Pass | Crawlable ?page=N links, indexable, self-canonical. GSC shows shirts?page=6 and under-20?page=5 earning clicks. Only the duplicated title needs a "– Page N" suffix. |
| 13 Faceted navigation | Pass | Shopify's robots.txt blocks sort_by, combined filters and + tag URLs. |
| 14–15 Sub/sibling links | Flag | No sibling-collection links in the page body; only via the mega-menu. Training-aid collections (Hitting, Fielding, Throwing, Grips) rank 12–19 with 35–190k impressions each: thin copy, no cross-links. |
| 16 Indexability | Flag | Dozens of past monthly-theme collections (Popcorn July 2025, Wild West, Yeti, Robot…) remain indexable with near-identical structure and little copy — thin, dated pages competing for "plate crate [month]" queries. |
| 17 Social tags | Pass | Present; falls back to the generic site image (1200×628) where no collection image exists. |
Ordinary pages
| Rule | Status | Finding |
|---|---|---|
| 1–2 Title & description | Flag | "About Us | Plate Crate" (22 chars); description is the first 320 chars of body copy. Customer Service description is 90 chars with emoji. |
| 3–4 Canonical & URL | Pass | Fine. |
| 5 Schema | Flag | Organization + BreadcrumbList; no WebPage. Low priority. |
| 7–8 H1 & hierarchy | Flag | About H1 is a slogan ("one thing about us - we always bring our a-game."); "Meet the Team" repeated nine times as H3. |
| 9 Body content | Pass | About ~1,900 words; Customer Service is thin (~375 words, mostly chrome). |
| 11 Links | Pass | 130+ internal links (mostly nav/footer). |
| 13–15 Indexability, social, hygiene | Pass | Same as homepage; same page-weight problem (840 KB HTML for About Us). |
Blog index and article pages
| Rule | Status | Finding |
|---|---|---|
| Index: articles | Critical | Both blog indexes are empty. /blogs/baseball-101 and /blogs/news render zero article cards. No featured post, no pagination, no search. |
| Index: H1 / description | Critical | No H1 on either index (blog name is an H2). Baseball-101 has no meta description; News uses a brand pitch. Title "The Dugout- Plate Crate | Plate Crate" duplicates the brand. |
| Index: schema | Flag | No Blog/CollectionPage schema. |
| Index: sitemap | Critical | sitemap_blogs_1.xml contains only the two index URLs. Google has been told, in effect, that the blog is gone. |
| Articles: status codes | Critical | All 16 article URLs tested: /blogs/baseball-101/* → 301 to /blogs/news (a soft-404 in Google's eyes: hundreds of unrelated URLs redirecting to one empty page); /blogs/news/* → 404. The article rules cannot be evaluated because no article exists. |
| Articles: what they looked like | Note | Wayback copy from 8 Jun 2026 shows the former template was decent: one H1, Article + FAQPage + BreadcrumbList schema, author Person, dates. The template is reusable as-is for the reinstated articles. |
3. Technical SEO Findings
3.1 Page weight and render path (critical)
Every template ships 800 KB to 1.6 MB of HTML before a single image, with 10–11 blocking scripts and 6–9 stylesheets in the head and ~870 ms of Shopify processing time. The mega-menu alone is repeated in full on every page (69 header links plus product cards for each themed collection). With 73% of clicks on mobile and Google's product snippets driving 34k clicks, this is the one technical item likely to be depressing rankings on the store pages that remain. Targets: HTML under 300 KB, no synchronous third-party scripts in the head, hero image preloaded with fetchpriority="high" and not loading="lazy".
3.2 The current redirect handling for the offline blog is costing traffic
Blanket-redirecting hundreds of distinct articles to a single empty index is treated by Google as a soft 404, and it wastes whatever equity and rankings the surviving ~60 articles had. In GSC this shows up as a continuing slide in August. Restore the articles that still earned traffic (with proper 200 responses), consolidate the rest into their strongest sibling, and 410 the ones that never earned anything so Google drops them cleanly instead of re-crawling redirects for months.
3.3 Duplicate structured data
Two Product blocks per page (theme + Shopify native) with different brand types and rating coverage. Google usually picks one, but conflicting blocks are a known cause of intermittent rich-result loss. Keep Shopify's native block (it has per-variant offers and SKU) and add aggregateRating there, or disable the theme's copy.
3.4 Merchant Center parameter URLs in organic results
Twenty product URLs with utm_source=google&utm_campaign=sag_organic appear in GSC with ~1,200 clicks. Google's free listings are sometimes indexing the feed link. Harmless for rankings (canonicals are right) but it splits reporting; set the feed's link to the clean product URL.
3.5 Index bloat from monthly theme collections
Roughly 60 collections and matching "guide" pages exist for past monthly crates (Popcorn July 2025, Summer Vibes, Wild West…). They rank only for "plate crate [month]" brand queries and collectively dilute crawl and internal-link equity. Fold expired themes into a single "Past Crates" page and noindex the archived collections once their sales window closes.
4. Recovery plan with FlyRank
Ordered by expected impact per week of effort. Phases 1 and 2 stop the bleeding and can be done inside a month; phases 3 and 4 are the growth engine and are where FlyRank's content and indexation pipeline does the work.
Phase 1 · Week 1–2 · Stop the loss: fix the blog's HTTP responses
- Pull the last 12 months of GSC page data and split the ~700 former articles into three lists: Reinstate (drove clicks in Jun–Jul 2026 or targets a commercial/youth-baseball topic), Consolidate (lukewarm performers in overlapping clusters, e.g. the six "how many innings" and five "home team dugout" articles, merged into the strongest one), Discard (no clicks in 12 months).
- Reinstate articles at their original URLs with 200 status (Shopify keeps unpublished articles; if they were deleted, republish from the Wayback copies and update). Expect ~60–100 URLs.
- Redirect Consolidate URLs 301 to the merged article on that topic, never to the blog index.
- Return 410 for Discard URLs and remove the blanket
/blogs/baseball-101/* → /blogs/newsrule. - Repopulate both blog indexes (H1, description, article cards, pagination) so the sitemap and index pages stop advertising an empty blog. Resubmit the sitemap in GSC and request indexing for the Reinstate list.
Phase 2 · Week 2–4 · Technical hygiene on the store
- Cut HTML weight: render the mega-menu once and lazily, strip product-card markup from nav, remove unused app embeds. Move third-party scripts to
defer/async. Target under 300 KB HTML; re-run Core Web Vitals for mobile. - Fix the title template that double-appends "| Plate Crate"; add "– Page N" on paginated collections.
- One H1 per page: add an H1 to the homepage (promote the hero H2) and both blog indexes; remove the duplicate H1 on product pages; remove the hidden drawer H2s or demote them to
<p>. - Structured data: single Product block with
sku,brand,aggregateRating; addFAQPageto product FAQs; complete Organization (logo,contactPoint, cleansameAs); add the parent collection to product breadcrumbs. - Images: hero not lazy-loaded, alt on the 13 homepage images that lack it, dimensions everywhere,
og:imageas https. - Noindex expired monthly-theme collections and guide pages; consolidate into Past Crates.
Phase 3 · Month 2–3 · Commercial content that matches the store
The non-brand terms the site already ranks 3–12 for, with search demand that goes to a product page rather than an AI Overview. FlyRank's content pipeline pointed at money pages.
- Collection copy and H1s for: baseball subscription box, softball subscription box, baseball gifts (ranks 10–11 with 34k impressions on "baseball gifts"), baseball training equipment (position 12.5, 22k impressions), youth baseball apparel/shorts/shirts (positions 9–17), catcher training equipment, batting grips. Each gets 300–500 words of real buying guidance, sibling links and FAQ schema.
- Comparison and consideration pages that AI answers cite rather than replace: "Plate Crate vs The Baseball Box" (already 131 clicks from a thin post), "Tee Popper vs Tee Popper Mini vs 202", "best baseball subscription boxes 2026", "gifts for baseball players by age", "baseball training aids for 8–12 year olds".
- Product-adjacent how-to content tied to the Bandit Sports line: tee popper drills, hitting drills for 10-year-olds, catcher drills. These were the only surviving "news" posts with decent CTR (1–2%) because they map to products.
- Every article links to a collection and a product in the body, carries Article + FAQPage schema, a real author page, and a visible updated date.
- Target: 40–60 commercial pages over two months, alongside the reinstated and consolidated Baseball 101 articles. Quality gate: would a youth-baseball parent or coach read it before buying?
Phase 4 · Month 2–6 · Authority, AI visibility and measurement
- Reviews to the SERP: render review count and top reviews server-side on product pages so the 4,759 reviews are visible in HTML, not only in a JS widget; keep product snippets (34k clicks) and merchant listings (2.7k clicks) stable through the changes.
- Backlinks via FlyRank's pipeline aimed at the commercial pages: youth baseball blogs, coaching sites, gift guides, Coach RAC and Bandit Sports partnership content. Authority score is 33 with 1,129 referring domains; the goal is links to collections, not the homepage.
- GEO/AEO: use FlyRank's AI visibility tool to find the prompts most relevant to Plate Crate (subscription boxes, tee poppers, baseball gifts, training aids) and track which sources ChatGPT/Perplexity/AI Overviews cite for them from month 1 as the baseline. The comparison pages, a maintained "best baseball subscription boxes" page and the reinstated Baseball 101 articles are then built and updated to be the cited source for those prompts.
- Automated indexation for every restored and new URL; monitor "Crawled – currently not indexed" and soft-404 reports weekly for the first two months.
- Measurement: report clicks and revenue on non-brand queries only, segmented into product, collection and content. Brand traffic (~73% of clicks) is the marketing team's number.
What to expect
Phase 1 should stop the August slide within two to four weeks of the redirects being fixed and put back the 100–150 clicks/day the surviving articles were still earning. Phases 2–3 target the store's non-brand footprint, which was never more than ~10% of clicks; doubling it to 300–400 clicks/day of commercial traffic in six months is a realistic ask. The reinstated and consolidated articles recover on their own timeline as Google re-crawls them and the AI-visibility prompts they are optimized for begin to cite them; a return toward the 30k-click months depends on that layer and should be tracked separately from the commercial number.
5. Method and sources
- GSC exports (Chart, Pages, Queries, Countries, Devices, Search appearance), Web search type, 23 Apr 2025 – 22 Aug 2026. Performance numbers in this report come only from GSC.
- Raw HTML fetched 24 Aug 2026 with a desktop Chrome user agent, parsed for every rule. Status codes checked for root-URL variants, 16 article URLs, sitemap index and child sitemaps, robots.txt.
- Wayback Machine snapshots used to date the blog removal: articles live 27 Feb 2026 and 8 Jun 2026; removed by 24 Aug 2026.
- Semrush (US database) used only for ranking-keyword counts, AI Overview exposure and backlink totals: 49,437 keywords on 15 Feb 2026 → 6,415 on 15 Apr 2026; authority score 33; 1,129 referring domains.
- Google update dates: December 2025 core update 11–29 Dec; March 2026 spam update 24–25 Mar; March 2026 core update 27 Mar – 8 Apr (Search Engine Journal, Search Engine Land).