WooCommerce and bike shop

A bike shop on WooCommerce, where the sizes and the workshop are both invisible

Four questions carry a bike shop: what size am I, how long is the wait, does this fit, and is it covered. The store holds none of them in a readable form. Sizes are attached to a product as variation data, the workshop wait is not stored anywhere at all, and compatibility is a set of standards nobody has written down. The install is the easy half.

Why this pairing is its own job

The WooCommerce install guide covers the tag, and the bike shop guide covers what the assistant has to know. What follows is the part that belongs to neither.

  • Frame size is a variation attribute. The options and the price per option are attached to the product as data the page uses to build a selector, so what a reader of pages gets is a description and a from-price, not a list of sizes with heights beside them.
  • The workshop is a queue with its own price list, and it is usually sold as a handful of products because that is the container the store offers. A service menu built out of product pages has no relationship to the bikes, no place to put what each tier includes, and no field for how far out you are booking.
  • Turnaround is the fastest moving number in the shop and the store has nowhere to keep it, so it exists only in whatever somebody last said on the phone.
  • The hook prints the launcher on the cart and the checkout unless you exclude them, and on a bike shop that is somebody buying a frame size they have not been fitted for, at the exact moment a wrong answer becomes a return, a refit and a lost afternoon.

What changes about the install here

<script src="https://cdn.askably.xyz/w.js" data-key="pk_live_YOUR_KEY" defer></script>

The tag is the same one on the WooCommerce guide. Everything below is about where it goes on a bike shop site specifically.

Write the geometry into the page, not only into the variations

A size table in the product description, or on one sizing page linked from every bike, is text. Rider height ranges per size, and the reach and stack figures where you have them, are then readable and quotable with a citation back to the page you wrote.

Say in the same paragraph that geometry differs between models, so a rider is not one size across the range. That sentence prevents more returns than the table does, and it is the sentence the trade page says a shop should be leading with.

Leave the variation selector exactly as it is. This is an addition for the reader and for anything reading pages, not a change to how the store sells.

Give the workshop a page even though it is sold as products

The service products can stay as they are for taking money. What is missing is a page that says what a basic service covers, what a full service covers, what is extra, where parts sit on top of labour, and what a suspension or electric bike service involves.

Put this week's turnaround on that page as one sentence, and edit it. It is the most asked and most perishable fact in the shop, and there is no field anywhere in the store that will hold it for you.

That page is also the one that most justifies the widget being on the site at all, because the person asking how long the wait is at ten at night is not going to ring in the morning.

Keep it off the cart and the checkout, keep it on the sizing pages

The exclusion is one condition in the snippet. The reason it matters here rather than generally is that a bike checkout is the last moment before somebody commits to a size, and a launcher there invites a sizing question the assistant is specifically not allowed to conclude.

Keep it firmly on the product, sizing, service and warranty pages, which is where the same question can be answered properly with the chart, the caveat and an offer of a fit.

Where the answerable material lives

Source material on a WooCommerce bike shop site
Size charts as a table in the pageRider height ranges per size per model, with reach and stack where you publish them, written into a page rather than left as variation options on the product.
The service menu with what each tier includesBasic against full, what is extra, where parts sit on top of labour, and what an electric or suspension service adds. Customers compare shops on this and most shops publish only a headline price.
This week's workshop turnaroundOne sentence on the workshop page, edited weekly, plus whether you take drop-ins for small jobs and how the wait changes in spring. Nothing in the store holds this.
Warranty split between frame and componentsFrame cover, which is often long and sometimes limited to the original owner, against component cover, which comes from the component maker on a different clock. Merging them promises a decade on a rear derailleur.

The first thing to get right

Do this first
Publish this week's workshop turnaround as a sentence on the workshop page, and put a date on it.

It is the most asked question in the shop, it changes every week, and there is no field in the store that could ever hold it, so it can only be answered from something somebody wrote. It is also the question most likely to be typed outside opening hours, which is the traffic the widget exists for.

The failure that belongs to this combination

The from-price is the number that gets quoted

A bike sold in five sizes with different specifications shows a price starting at the cheapest variation. That figure is the one in the page, so it is the one that can be read, and it is the one that comes back in an answer.

The customer arrives having been told the number they saw, wanting the size and build that costs more. Nobody lied and nothing malfunctioned: the page said from, and the answer did not carry the word because the sentence it was drawn from was a price rather than a range.

Where prices differ meaningfully between variations, write the range into the description in words, with both ends of it. Anything you want quoted accurately has to exist as a sentence, not as a selector.

Before you go live

  • The origin the page is served from has to be on the allowlist for that assistant, or nothing renders and the browser console says which origin was refused. An apex domain and its www are two different origins to a browser, so list both, along with any staging or preview host you want it to work on.
  • Open the site as a visitor would, on the pages a bike shop visitor actually lands on, and ask it something only your own material could answer. A widget that renders is not the same as a widget that has read anything.

Questions

Can it tell somebody what size frame they need?
It can quote your chart for their height and say plainly that height alone gets a rider into the right region and no further, then offer the fit. A definite size from a height is the answer the trade page rules out, and it is the one that comes back as a return.
Will it know whether a part fits a customer's bike?
It can state the standards a part uses, from your compatibility reference. It cannot know what the customer's bike actually has, because that depends on the model year and on what a previous owner changed. The right ending is somebody checking the bike.
Can it book a workshop slot?
No. It does not write into the diary. It answers what comes before the booking, what each service includes, what it costs and how far out you are, and then takes a name, an email and a message that arrives with you as an enquiry.

Keep reading

Try it on your own material

Upload a document or point it at your site, paste one line of HTML, then ask it something only your business could answer.