The Challenge
Mixed Bag Sportsman is a California hunting and fishing magazine with an unusual second business bolted to it. When a California charter captain has unsold seats on a boat leaving in a day or two, they submit the open spots at a discount; Mixed Bag reviews every submission before it goes live; readers book straight through to the captain. Alongside that live deal feed, the magazine ships a new issue every two weeks — written by working guides, captains and anglers — with subscriptions from $4.99/mo and captain listings from $30.
Three revenue lines, all of them downstream of being found.
The old site was a WordPress build that had never really been finished, and Google's index still carried the receipts. An /author/blocksy/ archive from the theme's demo user. A /category/uncategorized/ listing. Two Latin placeholder posts with slugs like /bibendum-arcu-vitae-elementum-curabitur-vitae-nunc/. Across the nine pre-launch days in the chart above, the entire domain earned 13 Google impressions and 2 clicks — under a page-one placement's worth of visibility in a week and a half.
That is the honest starting point. This was not a site that ranked for its brand and nothing else. It was a site that did not meaningfully exist in search, while the searches that feed this business — charter pricing, licence rules, "cheap fishing charters san diego", "california delta fishing" — ran thousands of times a month without it.
What We Built
We rebuilt mixedbagsportsman.com from scratch on the same domain. 78 URLs in the sitemap today, organised around the three things a reader comes to do: find a deal, research a trip, read the magazine.
Technical Foundation
- Next.js with server-side rendering for fast mobile pages — charter research happens on a phone, often on a dock
- Core Web Vitals optimised — LCP under 2.5 seconds on mobile, zero cumulative layout shift
- Vercel deployment with a global CDN
- Legacy URL handling — the old WordPress URLs are still in Google's index months later. Rather than 404 them, the category archive, the
author/blocksyarchive and the Latin demo posts all rewrite to the blog hub with a canonical pointing there, so residual equity and crawl budget land on a real page instead of an error
SEO Architecture
- A landing page per California port — 16 under
/charters/: San Diego, Oceanside, Long Beach, Newport Beach, Channel Islands, Santa Barbara, Morro Bay, Monterey, Half Moon Bay, San Francisco, Bodega Bay, Emeryville, the CA Delta, the Sacramento River and the Feather River. Anglers search by where the boat leaves from, not by magazine name - A landing page per species and trip type — 13 under
/fishing/: tuna, yellowtail, rockfish, salmon, halibut, lingcod, sturgeon, striped bass, kokanee, trout, bass, plus a trip-types explainer - 26 guides answering the questions that come before a booking: what a charter costs in California, which licence you need, bag and size limits, what open party fishing is, what to bring, how much to tip a deckhand, whether to bring kids, private boat vs open party, guide vs charter boat, how to avoid seasickness
- JSON-LD structured data — Organization and LocalBusiness with full NAP and
areaServedcovering ten California cities plus the state,WebSitewith a SearchAction, and Article + FAQPage + BreadcrumbList markup on every guide - llms.txt and llms-full.txt so AI search systems can read the site's structure directly
- XML sitemap submitted to Google Search Console and Bing Webmaster Tools on day one
Deals & Conversion
- A tokenised captain submission flow feeding an owner review queue — nothing reaches the public deal feed unreviewed, which is the editorial promise the brand is built on
- Per-deal pages so an individual open-seat listing is a real indexable URL, not a row in a widget
- Deal-alert email capture on the homepage and a dedicated page, because the inventory is perishable and the list is the asset
- Editorial policy and affiliate disclosure pages — E-E-A-T signals and FTC compliance in one move, since deal links are monetised
The Results
The site went live on July 13, 2026. The figures below compare the nine pre-launch days captured in the chart (July 4–12) against all 83 post-launch days through October 3, 2026. Position figures are impression-weighted daily averages, calculated the same way on both sides of the launch. Every GSC number here is reproducible from the chart above.
Search Visibility
| Metric | Before (avg/day) | After — 83 days (avg/day) | Change |
|---|---|---|---|
| Google Impressions | 1.4/day | 286/day | +19,700% |
| Google Clicks | 0.2/day | 3.5/day | +1,461% |
| Average Position | 18.2 | 17.4 | 0.8 better — still page 2 |
| Google Impressions (last 28 days) | 1.4/day | 296/day | +20,400% |
| Google Clicks (last 28 days) | 0.2/day | 3.5/day | +1,491% |
| Average Position (last 28 days) | 18.2 | 17.6 | 0.6 better |
Traffic Totals
| Metric | Before | After |
|---|---|---|
| Google Impressions | 13 (9 pre-launch days) | 23,739 (83 days) |
| Google Clicks | 2 (9 pre-launch days) | 288 (83 days) |
| GA4 Sessions | 8.3/day baseline | 1,425 (July 13 – October 6, 85 days) |
At the old site's run rate, 83 days would have produced roughly 120 impressions and 18 clicks. The new site delivered 23,739 and 288.
The Climb, Month by Month
| Period | Impressions/day | Clicks/day | Avg. Position |
|---|---|---|---|
| 9 days before launch (Jul 4–12) | 1.4 | 0.2 | 18.2 |
| July 13–31 (19 days) | 131 | 1.7 | 17.9 |
| August (31 days) | 358 | 4.5 | 17.0 |
| September (30 days) | 311 | 3.5 | 17.6 |
| October 1–3 (3 days) | 276 | 3.7 | 19.0 |
This is not a compounding curve, and we are not going to draw it as one. The site went from nothing to 130 impressions a day inside three days of launch, tripled again through August, then flattened. September came in about 13% below August on impressions and 23% below on clicks. Some of that is almost certainly seasonal — California tuna and yellowtail searches peak in late summer and fall off after Labor Day, and the pages carrying the most impressions are charter pages. Some of it is that the first wave of easy indexing gains is finished and the remaining growth has to come from outranking established competitors, which is slower work. We will know which is which when next summer's data lands.
Top Search Queries (28 days, September 6 – October 4, 2026)
Pulled live from Google Search Console for this entry:
| Query | Clicks | Impressions | Position |
|---|---|---|---|
| mixed bag sportsman | 13 | 23 | 1.0 |
| fishing charter deals | 1 | 4 | 1.0 |
| average cost of a fishing charter | 1 | 1 | 1.0 |
| deep sea fishing san diego | 1 | 4 | 3.0 |
| cheap fishing charters san diego | 0 | 15 | 8.1 |
| are overnight fees common on charters? | 0 | 7 | 8.1 |
| are hourly rates higher for last-minute charters? | 0 | 14 | 8.9 |
| mexican fishing license | 1 | 25 | 9.2 |
| fishing charter prices explained | 0 | 12 | 14.0 |
| 2026 fishing boat prices | 0 | 9 | 14.3 |
| fishing charter pricing | 0 | 19 | 17.6 |
| delta fishing charters | 0 | 8 | 19.3 |
| cheap fishing charters near me | 0 | 9 | 19.8 |
| striped bass fishing california | 1 | 6 | 22.8 |
| charter special offers | 0 | 17 | 25.8 |
| san diego fishing charters | 1 | 13 | 52.6 |
| charter fishing trips san francisco | 0 | 29 | 53.6 |
| discount sports fishing | 0 | 30 | 61.1 |
Three things are visible here. The brand is locked at position 1.0 and converts at 57% — anyone looking for Mixed Bag finds it. The pricing and licence intent is where the site is genuinely strong: "average cost of a fishing charter" at 1.0, "fishing charter deals" at 1.0, "cheap fishing charters san diego" at 8.1, "mexican fishing license" at 9.2, and the question-shaped searches the FAQ markup reaches — "are overnight fees common on charters?" at 8.1, "are hourly rates higher for last-minute charters?" at 8.9. And the big-city charter terms are not there yet: "san diego fishing charters" at 52.6, "charter fishing trips san francisco" at 53.6, "discount sports fishing" at 61.1. Those are the three highest-impression rows in the table and they sit on pages five and six.
One caveat on the table itself: Search Console caps the query list and anonymises rare searches, so these rows account for 736 of the window's 8,692 impressions. The rest is spread across a tail long enough that Google truncates it. The page report below is the complete picture.
Where the Impressions Actually Live
| Page | Clicks | Impressions | Position |
|---|---|---|---|
| /guides/fishing-charter-cost-california | 12 | 1,755 | 8.1 |
| /guides/fishing-license-california-charter | 3 | 610 | 5.5 |
| /charters/san-diego | 13 | 539 | 44.1 |
| /guides/california-saltwater-bag-and-size-limits | 2 | 401 | 6.4 |
| /fishing/trip-types | 1 | 399 | 8.5 |
| /fishing/sturgeon | 1 | 272 | 22.7 |
| /charters/ca-delta | 0 | 188 | 19.5 |
| /charters/channel-islands | 1 | 185 | 8.6 |
| /charters/half-moon-bay | 2 | 180 | 17.0 |
| /guides/open-party-fishing | 1 | 159 | 5.5 |
| /guides/mexican-fishing-license-san-diego | 2 | 144 | 7.5 |
| /charters/feather-river | 8 | 135 | 9.6 |
| / (homepage) | 28 | 95 | 5.0 |
| /deals | 6 | 86 | 22.2 |
By section across that window: guides earned 4,070 impressions from 18 pages, charter port pages 2,292 from 15, species pages 1,672 from 12. The guides are 47% of all visibility on the site and they are the pages sitting on page 1 — 5.5, 6.4, 7.5, 8.1. The single best-performing page is the California charter cost guide: 1,755 impressions and 12 clicks at position 8.1.
The counter-example is /charters/san-diego: position 44.1, and still the joint-highest click earner on the site at 13. San Diego sportfishing is one of the most contested local search markets in the country, and a three-month-old page is nowhere near page 1 there — but it is appearing often enough that even page-five placements produce bookings-shaped traffic.
An Honest Note on Click-Through Rate
288 clicks on 23,739 impressions is a 1.21% click-through rate, which is low. The position data explains it: at an impression-weighted average of 17.4, most of those impressions are second-page placements that nobody scrolls to. We are not quoting a "CTR decline" against the old site, because the old site's rate was 2 clicks on 13 impressions — a sample far too small to mean anything.
The fix for a 1.2% CTR is not better titles. It is moving the high-volume charter pages from position 44 to position 8, which is what the next year of work is for.
A Note on the GA4 Numbers
Google Analytics recorded 1,425 sessions from launch through October 6, 2026 — 85 days, about 16.8 a day against a pre-launch baseline of 8.3. Visits roughly doubled; impressions went up roughly 200x. Those are not the same number and it matters which one you believe.
The channel split is the useful part: organic search 534 sessions, organic social 417, direct 406, referral 35, ChatGPT 22. Search is now the largest single channel at 37% of traffic, and it was effectively zero before the rebuild. But Facebook still delivers nearly as much as Google, and the owner built that audience, not us. The honest read is that the rebuild added a channel that keeps earning without anyone posting — not that it replaced the one already working.
Key Takeaways
- From 1.4 impressions a day to 286 — 23,739 impressions and 288 clicks banked in 83 days, against 13 and 2 in the comparable window before launch.
- Content depth is where the rankings are. 26 guides produced 47% of all search visibility and hold positions 5.5–8.1. The port pages carry the commercial intent but are still fighting for it.
- Average position is 17.4 and that is page 2. The site wins pricing, licence and question-shaped searches, and loses the broad city charter terms that generate the most impressions. Both facts are in the same average.
- The curve flattened after August. Explosive first six weeks, a peak in late August, then a mild decline through September. Partly seasonal, partly the end of the easy gains.
- Sessions roughly doubled; search became the biggest channel. 8.3/day to 16.8/day, with organic search going from nothing to 37% of all traffic.
Why It Worked
Mixed Bag Sportsman had a genuinely good product — reviewed deals, real captains, a magazine written by people who actually fish — sitting on a website Google had catalogued as a half-built WordPress demo. The rebuild did not invent an audience. It gave a real one a structure search engines could read: a page for every port, a page for every species, and a guide for every question an angler types before they ever type a brand name.
The guides are why this worked as fast as it did. A charter marketplace competing head-on for "fishing charters san diego" against boats that have been there for thirty years is going to lose for a while. A charter marketplace that owns "what does a fishing charter cost in California" gets in front of the same angler a week earlier, when they are still deciding whether to go at all — and that page is on page 1 inside three months.