Directory and marketplace sites have access to powerful schema types that dramatically improve Google visibility. LocalBusiness, Product, Service, AggregateRating, and ItemList schema can trigger rich results including star ratings, price ranges, and business details directly in search results. This lesson covers the complete schema strategy for Wix directory sites, including dynamic schema generation from CMS data using Velo.
Essential Schema Types for Directory Sites
- LocalBusiness (or subtypes: Restaurant, Dentist, Plumber, etc.): For each listing with a physical location
- Service: For service-based listings without a physical location
- Product with AggregateOffer: For marketplace listings with pricing from multiple vendors
- AggregateRating: For displaying review stars in search results
- Review: Individual reviews attached to listings
- ItemList: For category pages listing multiple businesses
- BreadcrumbList: For breadcrumb navigation on all pages
- WebSite with SearchAction: For your directory search functionality
Dynamic Schema Generation with Wix Velo
Each listing page needs unique schema populated from CMS data. Hardcoding schema is impossible when you have hundreds of listings. Wix Velo allows you to dynamically generate JSON-LD schema by reading CMS collection data and injecting it into the page head or a custom HTML element. This automation ensures every listing has accurate, up-to-date structured data.
Implement dynamic LocalBusiness schema on Wix directory listing pages
- 1Step 1: On your dynamic listing page, add a custom HTML embed element. Position it at the bottom of the page (it contains invisible data).
- 2Step 2: In the Velo code panel for that page, write an onReady function that reads the current item data from the dynamic dataset.
- 3Step 3: Build a JSON-LD object using the CMS fields: @type as the appropriate LocalBusiness subtype, name from Title, description from Description, address from Location fields, telephone from Phone, url as the current page URL.
- 4Step 4: Add aggregateRating using the Average Rating and Total Reviews fields from the CMS.
- 5Step 5: Add openingHoursSpecification from your Hours of Operation field if available.
- 6Step 6: Add image as an array of image URLs from the listing gallery.
- 7Step 7: Add priceRange if pricing data is available in the CMS.
- 8Step 8: Wrap the JSON-LD in a <script type="application/ld+json"> tag and inject it into the HTML embed element using $w("#htmlEmbed").postMessage() or by setting innerHTML.
- 9Step 9: Add conditional logic to only include schema properties that have data. Empty fields should be omitted, not set to null.
- 10Step 10: Test 5 different listings in Google Rich Results Test to verify schema renders correctly with the correct CMS data for each listing.
ItemList Schema for Category Pages
Category pages that list multiple businesses benefit from ItemList schema. This tells Google the page contains a curated list of items and can trigger carousel-style rich results. Each item in the list should include its position, name, and URL. Combined with individual listing schema on each listing page, this creates a comprehensive schema network across your directory.
WebSite SearchAction for Directory Search
If your directory has a search function, add WebSite schema with SearchAction to enable sitelinks search box in Google. When users search for your directory brand name, Google may show a search box that queries your directory directly from the SERP. This is especially valuable for established directories with brand recognition.
Complete How-To Guide: Full Schema Implementation for a Wix Directory
End-to-end schema implementation covering all page types
- 1Step 1: Create a schema type mapping document. For each listing category in your directory, identify the most specific LocalBusiness subtype from schema.org (e.g., Dentist, Plumber, Restaurant, LegalService).
- 2Step 2: Add a "Schema Type" field to your Listings CMS collection. Populate it with the correct schema.org type for each listing.
- 3Step 3: Implement dynamic LocalBusiness schema on listing pages following the steps above. Use the Schema Type CMS field to set @type dynamically.
- 4Step 4: Implement BreadcrumbList schema on all pages using a Velo function that reads the current page URL structure and generates breadcrumb JSON-LD.
- 5Step 5: Implement ItemList schema on category pages. Use Velo to query all listings in the current category and generate the ItemList with ListItem entries.
- 6Step 6: Implement WebSite SearchAction schema on your homepage and directory index page.
- 7Step 7: Validate every schema type using Google Rich Results Test. Test at least 3 listing pages, 2 category pages, and the homepage.
- 8Step 8: Submit representative URLs to Google Search Console URL Inspection and request indexing to trigger schema processing.
- 9Step 9: Monitor Google Search Console Enhancements section for schema status across all page types.
- 10Step 10: Create a monthly schema audit process: check that new listings have correct schema types, aggregate ratings match actual data, and no schema errors appear in GSC.

Translate