Illustrative case study

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

Case study · Maplestave Hardware · Hardware co-op, 42 stores · Calgary

How a 42-store hardware co-op put its shelves into Google's search results

+58%organic store pickups

9 months · Commerce SEO · North America. Pick a tool off the board to read its tag.

Pick up a tool to read the result on its tag. Arrow keys move along the board.

01Aisle · Challenge

Full shelves, empty search results

Customers checked big-box sites for stock; Maplestave's 28,000 SKUs had no availability data in search and store pages carried no inventory signals.

A Calgary customer who needs deck screws on a Saturday morning searches before they drive. Google answered with the stores that told it what was on the shelf, and for Maplestave Hardware that was nobody: 42 co-op stores, 28,000 SKUs, and not one of them visible as “in stock nearby”.

Store pages were address cards. Product pages had a price but no availability. The result was a co-op with better depth of range than the chains, losing the walk-in before the customer ever left home.

On the shelf

28,000

SKUs across 42 stores

In search

0

SKUs with local stock data

Store pages

42

with hours + address only

Stock signals

0

on any store page

02Aisle · Audit

The stock-take: six faults on the line

  • FEEDCritical

    No local product inventory feed

    Zero of 28,000 SKUs reached Google's local surfaces. Stock lived only in the POS, so 'in stock nearby' results always went to the big-box chains.

  • STORECritical

    Store pages without inventory signals

    All 42 store pages shared one template of hours and an address. No departments, no stock, no product links: nothing for a 'near me' query to match.

  • SCHEMAHigh

    Product pages missing availability markup

    Product schema had name and price only; no Offer availability, no store-pickup data, and 4,800 Merchant listing warnings.

  • GTINHigh

    22% of SKUs without valid GTINs

    Own-label fasteners, cut lumber and co-op lines had internal codes only, so they could not be matched to product searches.

  • NAPMedium

    Store codes out of sync

    Business Profile store codes did not match POS store IDs for 11 locations, which blocks inventory from attaching to the right map pin.

  • CRAWLMedium

    Faceted URLs eating crawl budget

    Colour, size and brand filters generated 410,000 crawlable URLs; Googlebot spent 61% of its visits on them instead of products.

03Aisle · Strategy

Four parts bins, one job: put the shelf in the search result

The engagement ran on our Commerce SEO plan: feeds and markup first, so that every page we improved had live stock to show.

Local inventory ads

Bin A-1

Paid backstop for the free listings on the 600 SKUs where a big-box rival outbids organic visibility.

  • Store-level bids lifted on weekend project hours
  • 'Pickup today' badge on every eligible ad
  • Budget capped at the stock-on-hand count, so no ad runs for an empty shelf

Product feeds

Bin A-2

A nightly, then two-hourly, pipe from 42 POS systems into Merchant Center: price, quantity and pickup option per store.

  • GTINs sourced or created for 6,100 SKUs
  • Quantity floors so 'in stock' never shows below 3 units
  • Feed-health alerts when a store goes quiet

Store-level pages

Bin B-1

Each of the 42 stores became a real landing page: departments, live stock counts, an aisle map and local services.

  • Unique copy per neighbourhood (rental, key cutting, paint mixing)
  • Top-stocked products linked from the store page
  • Internal links from product pages to the nearest stores

Schema markup

Bin B-2

Machine-readable shelves: Product, Offer and Store markup tying every product page to the stores that hold it.

  • Offer availability + pickup in Product schema
  • Store schema with geo, hours and department list
  • Faceted URLs canonicalised, 410k URLs out of the crawl

The same search, before and after

Query: “deck screws near me”, Bowness, Calgary. Modelled mock-up.

Month 0deck screws near me

In stock nearby

  1. 1

    BigBox Home Centre

    In stock · 4.1 km · Pickup today

  2. 2

    Lumberyard Depot

    In stock · 6.8 km

  3. 3

    Maplestave Hardware

    Hardware store · Open until 8 pm

Month 9deck screws near me

In stock nearby

  1. 1

    Maplestave Hardware Bowness

    In stock (38) · Pickup today · 1.2 km

  2. 2

    BigBox Home Centre

    In stock · 4.1 km

  3. 3

    Maplestave Hardware Montgomery

    In stock (12) · 2.9 km

Free listing: #10 × 3″ deck screws, 5 lb · $34.99 · in stock at 6 nearby stores

04Aisle · Timeline

9 months, light to dark

Each chip on the fan is one month; the colour deepens as more of the range reaches search. Choose a chip (or use the arrow keys) to read its work order.

Chip MS-09 · Month 9 of 9

Full shelves

26,400 of 28,000 SKUs live in search with store-level stock; handover runbook and feed-health alerts in place.

SKUs in feed
26,400
94% of range
Pickups index
158
month 1 = 100
Impressions
2.3M
free listings / mo
  1. M01Stock-take. 0 SKUs live.
  2. M02Plumbing the feed. 0 SKUs live.
  3. M03First shelf live. 3,200 SKUs live.
  4. M04All stores on the feed. 9,800 SKUs live.
  5. M05Store pages rebuilt. 16,500 SKUs live.
  6. M06Product schema. 21,000 SKUs live.
  7. M07Local inventory ads. 24,100 SKUs live.
  8. M08Seasonal aisles. 25,600 SKUs live.
  9. M09Full shelves. 26,400 SKUs live.
05Aisle · Results

What went through the tills

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

SKUs in local inventory feed

0 → 26,400

Each box = 1,000 SKUs. 94% of the range now carries store-level stock.

Organic pickup orders

+58%

100125150M1M2M3M4M5M6M7M8M9

Free listing impressions

2.3M/mo

Store page CTR

+44%

Before3.2% CTR
After4.6% CTR

Store pages in Search Console, average across all 42 stores; scale to 6%.

Price list: queries that moved

Modelled keyword positions before and after the engagement, Calgary
QuerySearches/moBeforeMonth 9Stock shown
deck screws near me2,900—Local pack #1Yes, per store
cordless drill in stock calgary1,300#31#2Yes, per store
hardware store open now6,600#14#3n/a
pressure treated 2x6 calgary880—#1Yes, per store
snow shovel pick up today1,600—Free listing #1Yes, per store
maplestave hardware bowness720#4#1n/a
furnace filter 16x25x1 near me1,000—Local pack #2Yes, per store

Checkout

Get a plan like this

Multi-location retailer with stock that search can’t see? Commerce SEO starts with a feed and store-page audit.