Illustrative case study

A fictional business. The figures are a modelled scenario, not a client result.

Get Ranked On Top · Build booklet

Commerce SEO series · North America

Tinkerloft · Kids' coding course marketplace · Seattle

Building a marketplace of 900 kids' classes that search engines could actually crawl

Months
11
Classes
900
Steps
11
#1

+204%

organic class enrolments

Before you begin · check your parts

Half the box was missing.

Thousands of class listings expired weekly and filters created endless parameter URLs, so Google indexed stale or duplicate classes.

Tinkerloft lists about 900 coding, robotics and game-design classes for kids across Seattle. Each class runs as many dated sessions, and every session had its own URL. When sessions filled or ended, the pages stayed up. Filters stacked parameters on top. Google was spending its time on pages parents could never book, and the live classes were crowded out.

Where Googlebot crawled — month 1

Where Googlebot crawled — month 11

  • Parameter URLs 64% → 6%
  • Expired sessions 19% → 7%
  • Duplicates 9% → 3%
  • Live classes 8% → 84%
  1. A1

    Soft-404 class pages

    About 3,400 sessions expired every week but kept answering 200 with a 'sold out' banner.

  2. A2

    Facet URL explosion

    Age × day × topic × price × area filters produced 186,000 crawlable combinations from 900 classes.

  3. A3

    Duplicate titles

    61% of indexed listings shared their title with another session of the same course.

  4. A4

    No structured data

    Zero Course or Offer markup: no price, ages or availability in results.

  5. A5

    Thin category pages

    140 hubs with a 40-word intro and no links between age bands or neighbourhoods.

  6. A6

    Stale sitemap

    38% of sitemap URLs pointed at sessions that had already ended.

Parts list · the strategy

4 kinds of part, one sturdy build.

The build follows our Commerce SEO plan (ecommerce seo). The rule was simple: every URL Google can reach has to be a page a parent could book from. Each part below does one job toward that.

  • ×900

    Part B1

    Course feeds

    One canonical page per course, sessions streamed underneath from the booking database. Expired sessions redirect to the course; sitemaps and IndexNow update hourly.

  • ×3

    Part B2

    Faceted navigation

    Only three facets earn indexable paths: age band, topic and neighbourhood. Everything else filters without creating a URL Google can crawl.

  • ×4

    Part B3

    Product schema

    Four JSON-LD types (Course, Offer, AggregateOffer, Product for camp bundles), validated per template in CI so a deploy cannot break them.

  • ×140

    Part B4

    Category pages

    140 hubs rebuilt as genuinely useful guides: age-fit tables, FAQs, live 'starting soon' sessions and cross-links along the age ladder.

Build steps · 11 months

One brick a month, bottom up.

Foundations first: nothing else holds until crawling is under control. Step through the build to see each month's work and how much of the index was live, valid classes at that point.

Step 1 · Month 1 of 11

Inventory every URL

Crawled 214,000 URLs and joined them to the booking database to label each one live, expired, duplicate or parameter noise.

×1 Crawl map

Valid indexed listings
31%
Enrolments index
100

Finished model · results

+204% organic class enrolments.

Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.

  • Valid indexed listings

    31% → 94%

    valid at start added by month 11

  • Category pages ranking top 10

    112

  • Organic revenue

    +176%

    Before100After276

Organic class enrolments, month by month

Index: month 1 = 100

0100200300M1M2M3M4M5M6M7M8M9M10M11

Rankings, Seattle, Google desktop

KeywordVol.BeforeAfter
summer coding camp seattle3,100221
coding classes for kids seattle2,400182
python camp for teens seattle720413
scratch coding class ages 8880—4
roblox game design class kids1,000554
minecraft coding course kids1,900635
kids robotics class near me6,600276
online coding class for 10 year olds1,300—8

Modelled positions; “—” means not in the top 100.

Build your own

Get a plan like this

Marketplaces, listings that expire, filters that multiply: if your catalogue moves faster than Google can keep up, we will map the parts and write the steps.

← All case studies

#1