figma guide

Designing category landing pages in Figma: hero, subcategories, and PLP handoff

Design ecommerce category landing pages in Figma with hero banners, subcategory grids, featured collections, and PLP transitions—plus responsive layouts and Dev Mode specs.

Published
Updated
Jun 27, 2026
Read time
6 min
Level
Beginner

Quick answer

A category landing page (CLP) sits between homepage and product listing—it orients shoppers with a hero, subcategory tiles, and curated rows before they reach filters and sort on the PLP. Structure the page as CategoryHero → optional promo bannerSubcategoryGrid → featured product rows → SEO copy block. Each subcategory tile links to a filtered PLP or nested CLP. Reuse product cards and breadcrumbs from listing templates. Start from the Figma guides hub and templates pillar.


Who this is for

  • Product designers structuring catalog navigation for DTC and marketplace stores.
  • Design system teams defining CLP vs PLP templates so merchandising and dev share one language.
  • Engineers implementing CMS-driven heroes, category trees, and deep links to filtered PLPs.

CLP vs PLP: when to use which

Page typePrimary jobKey UI
Category landing (CLP)Orient and branchHero, subcategory grid, editorial rows
Product listing (PLP)Browse and compareFilters, sort, dense product grid
Collection landingCampaign storySingle theme hero + curated SKUs
Search resultsQuery matchSearch UI chrome

Verdict: use a CLP when a category has 3+ meaningful subcategories or merchandising story. Skip CLP for flat catalogs—link straight to PLP from navigation.


Page zones

ZonePurposeKey components
Global headerStore navNavigation, search
BreadcrumbHierarchyBreadcrumb
Category heroTitle + visualCategoryHero
Subcategory gridBranch navigationSubcategoryTile × n
Featured rowMerchandisingProductCard carousel
Editorial bandBrand storyImage + CTA
SEO / FAQ blockLong-tail contentCollapsed text, optional accordion
Footer PLP CTA”View all”Button → full PLP with filters cleared

CategoryHero anatomy

PartSpecNotes
TitleH1 category nameOne per page; matches breadcrumb leaf
Description1–2 lines optionalNot a wall of SEO text above fold
BackgroundImage, video, or color16:9 desktop; 4:5 or 1:1 crop on mobile
OverlayGradient for text contrastTest with accessibility plugins
Primary CTA (optional)“Shop all”Scroll to grid or jump to PLP
BadgeSale, new seasonReuse badge/chip tokens
CategoryHero
├── Variant: layout=text-left | text-center | split
├── Variant: media=image | video | color
├── Property: title (string)
├── Property: showDescription=true | false
└── Layers:
    ├── MediaLayer
    ├── OverlayGradient
    ├── Title + Description
    └── CTAButton (optional)

Use layout grids aligned to PLP gutters so the hero feels continuous with the product grid below.


SubcategoryGrid patterns

PatternBest forTile content
Image tiles (2×2, 3×3)Visual categories (apparel, home)Photo, label, optional count
Icon tilesUtility categoriesIcon + label
List rowsLong taxonomiesChevron + label + “124 items”
Horizontal scrollMobile many subsSnap scroll chips
Mega-menu echoConsistencySame order as nav dropdown
SubcategoryTile
├── Variant: style=photo | icon | text
├── Property: label (string)
├── Property: productCount (number, optional)
└── States: default | hover | focus | disabled (empty category)

Rule: tile tap target minimum 44×44px on mobile. Empty categories should be hidden or disabled, not dead links.


Row typePurposeLink target
Bestsellers in categorySocial proofFiltered PLP ?sort=bestselling
New arrivalsFreshnessPLP with new badge filter
Staff picksEditorialCurated collection ID
RecommendationsPersonalizationOptional logged-in row

Reuse the same product card component as PLP at consistent width. Include quick view only if PLP supports it—keep CLP rows simpler on mobile.


Responsive layout comparison

BreakpointHeroSubcategoriesProduct rows
Mobile (375)Stacked text below image2-column grid or horizontal scroll2-up card carousel
Tablet (768)Split or centered3-column grid3–4 visible cards
Desktop (1280+)Wide banner or split4–6 column gridFull-width 4–5 card row

Document constraints on hero text so titles do not collide with nav on short viewports.


CLP → PLP transition

Entry pathPLP should open with
Subcategory tilePre-filtered category + subcategory
”Shop all” CTAParent category, default sort
Featured row “View all”Same filter as row
Breadcrumb leaf on PLPN/A—user already on PLP

Handoff: pass category ID and optional facet params in URL. PLP header should show filtered title (“Men’s Running Shoes”) not generic “Products.”


Content and SEO block

Place long SEO copy below merchandising zones—not in the hero. Use a collapsed “About this category” accordion if legal or SEO requires 200+ words. Link internally to related CLPs and PDP templates where relevant.


Handoff checklist

ItemDev Mode annotation
CMS fieldshero image, title, description, tile list
Category tree depthCLP at L1/L2; max nesting rules
Tile link/category/{slug} or PLP query
Empty subcategoryHide tile vs show disabled
Hero LCP imagePriority load; export WebP srcset
Analyticsclp_view, subcategory_click, featured_row_click, shop_all_click
a11yH1 once; tiles are links or buttons with visible labels
Breadcrumb syncMatches category hierarchy API

Use Dev Mode checklist and share component props with PLP team.


Common mistakes

MistakeWhy it hurtsFix
CLP duplicates full PLP with filtersRedundant maintenanceCLP = orient; PLP = browse
12 subcategory tiles with no imagesWeak scanUse icon or text list pattern
Hero H1 differs from nav labelSEO + UX confusionSingle source of title string
No “View all products” escape hatchTrapped usersFooter CTA to PLP
Inconsistent card sizes vs PLPJarring transitionShared ProductCard component
Wall of SEO text above foldHurts conversionMove copy below rows
Broken deep links after CMS rename404sDocument slug migration

  1. Map category tree with merchandising—decide CLP vs direct PLP per branch.
  2. Build CategoryHero and SubcategoryTile with photo and icon variants.
  3. Compose desktop CLP frame with grid, featured row, and SEO block.
  4. Adapt mobile frame with horizontal subcategory scroll if needed.
  5. Link tiles to PLP frames with query annotations in Dev Mode.
  6. Align breadcrumbs across CLP and PLP.
  7. Add analytics event names to each interactive zone.
  8. Review with search and nav teams for consistent labels.

FAQ

One CLP template or per vertical?

Start with one flexible template (hero + grid + row). Add vertical variants only when photo aspect ratios or tile counts genuinely differ.

Show filters on CLP?

Avoid full filter sidebars on CLP—reserve filters for PLP. Optional quick chips (“Under $50”, “On sale”) may deep-link to pre-filtered PLP.

Marketplace with seller categories?

Seller storefronts may use a simplified CLP (banner + PLP). Document seller vs catalog CLP differences in a separate variant frame.

Seasonal campaigns?

Use collection landing frames for short campaigns; keep evergreen CLP stable and link campaign bands as optional CMS modules.


Next steps

Share on X

§ Keep reading

Related guides.