When an ecommerce site indexes its categories but skips many products, the usual cause is value-and-duplication selection at the product tier: product pages are often thin, carry duplicate manufacturer copy, sit deep in the link structure, or offer little unique value, so Google indexes the higher-value, better-linked category pages and passes over the redundant products. This is selective behavior, not a blanket policy, and the distinction matters because it points to a fixable problem rather than a closed door.
The duplication piece is the most common driver. Thousands of stores sell the same items and paste in the same manufacturer description, the same specs, and the same stock photos, so a given product page can be nearly identical to dozens of others across the web and even to sibling variants on the same site. When a page adds nothing a crawler has not already seen many times over, Google has little reason to spend index space on it. Thinness compounds this: a page that is mostly a price, an add-to-cart button, and a borrowed paragraph carries scant unique content to justify inclusion.
Link structure is the other half. Category pages tend to be well linked, reachable in a click or two from the homepage and tied together by navigation, while individual products often sit several clicks deep behind filters and pagination. Those products get crawled less and inherit less equity, so they are both harder to find and weaker once found. Combine low unique value with deep, equity-starved placement and the result is exactly what the site sees: categories in the index, many products left out. Treating this as “Google doesn’t index product pages” misreads a selection as a rule.
To get the products you care about indexed, give them something to earn the spot. Replace or expand duplicate manufacturer copy with unique detail, real specifications in your own words, use cases, and genuine reviews, and tighten internal linking so those products are reachable from category pages and related-product modules rather than buried behind filters. Unique value plus a shorter, well-linked path is what moves a product from skipped to included.