The URL structure you cannot change
Shopify will not let you drop /collections/ or /products/ from paths. Fighting that with redirects creates chains and breaks canonicals. The answer is to work inside it and spend the effort where it is not fixed: handles, collection names and the internal links pointing at them.
Duplicate product URLs across collections
The same product appears under every collection it belongs to, each at its own URL. Shopify canonicals these by default and themes routinely break it. This is the single most common Shopify fault and it is invisible until somebody checks.
Collection pages, where the searches actually are
The equivalent of a category page and the highest-value template in the store. Most themes give it a title and a grid. It needs copy that answers how to choose, placed so the products still lead.
Theme and app weight
Every app injects script whether the page uses it or not, and stores accumulate them. An audit of what is loading on a product page usually finds several apps nobody remembers installing, including SEO apps that made the store slower than they made it rank.
Tags, filters and the crawl budget
Shopify tag filtering generates URLs at a rate that surprises everybody. Decided per filter, the same as faceted navigation anywhere: indexed where searched, crawlable but not indexed where not, blocked where noise.
Blog content that links into collections
Shopify blogs are usually either abandoned or full of posts linking nowhere. Written properly they answer the buying question and pass their authority into the collection that sells the answer.