Quick answer: on a store, keyword research is a mapping problem. You are not building a list of things to write — you are deciding which existing collection or product should own each commercial query, and which queries to ignore because the SERP is unwinnable. Start from Search Console and your own site search, not from a tool's suggestion list.
The mapping, not the list
The output of good ecommerce keyword research is a table like this, not a spreadsheet of 4,000 keywords:
| Query | Volume | Owner page | Status |
|---|---|---|---|
| running shoes | 5,400 | /collections/running-shoes | exists, thin copy |
| trail running shoes | 1,900 | /collections/trail-running | exists, no H1 |
| waterproof trail running shoes | 320 | — | needs a filtered collection |
| how to choose trail running shoes | 260 | — | needs a guide |
Four columns, and the fourth is the work. A keyword with no owner page is either a new page or a query you are choosing not to serve — and saying so explicitly is most of the value, because an unassigned keyword is one that quietly gets targeted by three pages at once.
Where the good queries actually come from
Search Console, first. It shows queries you already receive impressions for. Those are the highest-signal keywords available anywhere because they are measured on your own site rather than estimated. Sort by impressions with low CTR and you have a list of pages that are close and underperforming. Google Search Console for Shopify covers connecting it.
Your internal site search, second. Customers search your store using their words, which are regularly not your words. A store selling "activewear" whose visitors search "gym clothes" has found a collection name and a target keyword in the same moment. Almost nobody reads this report.
The SERP itself, third. Autocomplete, People Also Ask and "related searches" are Google telling you how the query fans out. For ecommerce, the modifiers matter most: best, cheap, near me, for [use case], vs, size, review. Each modifier is a different page type.
Suppliers and competitors, fourth. Manufacturer category names and competitor collection names are pre-validated vocabulary. Not to copy — to check whether your naming matches what the market calls the thing.
Only then reach for a keyword tool, and use it to size what you already found rather than to generate from scratch.
Intent decides the page type, before volume does
Volume without intent is a trap. Sort every candidate into one of four buckets and the page type follows:
- Transactional — "buy", "price", "discount", "[product] [size]". → Product page.
- Commercial investigation — "best", "top", "vs", "review". → Collection, comparison or buying guide.
- Informational — "how to", "what is", "why". → Blog. Converts indirectly, if at all.
- Navigational — a brand name. → Only worth targeting if it is yours, or you are a genuine alternative.
The most common ecommerce mistake is pointing a transactional query at a blog post. "Best waterproof trail running shoes" wants a page with products on it, and a 2,000-word essay with no buy button will lose to a collection page every time regardless of how well it is written.
Judging whether you can win
A difficulty score is an average across thousands of SERPs. The SERP in front of you is the specific case, and it is free to look at. Three things to count:
- How many of the top ten are Amazon, eBay, Walmart or the brand's own site? Seven of ten means the remaining three slots are the entire opportunity.
- How much of the first screen is ads, shopping carousel, People Also Ask and an AI Overview? If the first organic result is below the fold, position 1 is worth a fraction of what the volume implies.
- Are the ranking pages actually good? Sometimes they are thin, outdated, or answer a different intent. That is the gap worth taking.
On a store with little link authority, a keyword difficulty above roughly 40 is a multi-year commitment. Below 20 is achievable with one good page. How to find low-competition keywords covers the filtering in detail.
The arithmetic that should decide it
Before committing a page, run the numbers:
monthly value = volume × realistic CTR at your target position
× conversion rate × average order value × margin
Realistic CTR by position runs roughly 28% at 1, 15% at 2, 11% at 3, falling to 2-3% by 10 — then discount it for whatever sits above the organic block. The SEO ROI calculator does this, including a slider for SERP features, because the discount varies enormously by query type.
The result is regularly surprising. A 70-a-month query you can own outright, on a high-margin product, beats a 5,000-a-month query where you would sit at position 30 behind four ads.
Assigning the keyword to the page
One primary query per page, and one page per primary query. Two pages targeting the same term is not double the chance — it is split signals and Google picking one, usually not the one you wanted. Shopify duplicate content covers how this happens accidentally on a store.
Once assigned, the query should appear in the title tag (early), the H1, the URL slug where it reads naturally, the first hundred words, and the alt text of the main image where it is honest to do so. Not in every paragraph — that stopped working long before it stopped being recommended.
The keyword density checker is useful here mainly as a ceiling check: if a term is above about 3% you have written for an algorithm that no longer counts that way.
A monthly habit worth more than the annual project
Once a month, open Search Console, filter to queries with impressions but few clicks, and look for two things:
- Pages at position 5–15. These are close. A better title, a real meta description and some internal links often move them more than a new page would.
- Queries you never targeted. A page ranking at 12 for something you did not plan is Google telling you what it thinks the page is about. Sometimes that is a better keyword than the one you chose.
That habit finds more revenue than a quarterly keyword project, because it works from measured reality rather than estimates. The keyword research tool and keyword rank tracker cover doing this continuously.
