Pro Modules
Schema Pro
👉 View module on HubSpot Marketplace
The Schema Pro module allows you to add JSON-LD structured data (Schema.org markup) to any HubSpot page. It helps improve SEO by providing search engines with structured information about your content, enabling Google Rich Results like FAQ snippets, star ratings, event listings, and more.
Key Feature: No visual rendering — outputs only <script type="application/ld+json"> tags in the page head.
Quick Navigation
- Organization
- WebSite
- BreadcrumbList
- FAQPage
- LocalBusiness
- Article
- Product
- Service
- SoftwareApplication
- Review / AggregateRating
- HowTo
- VideoObject
- Event
- Person
- JobPosting
- Testing Resources
Organization
Defines your company, brand, or organization with contact info, logo, and social profiles.
Use Cases
- Homepage or "About Us" page
- Any page where you want to establish brand identity
- Company-wide schema (typically placed once per site)
Google Rich Results
Knowledge Panel — displays company info, logo, and social links in search results sidebar.
Example Output
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "FreshJuice",
"url": "https://freshjuice.dev",
"logo": "https://freshjuice.dev/img/logo.png",
"description": "Premium HubSpot themes and modules for modern marketers.",
"email": "[email protected]",
"telephone": "+1-555-123-4567",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94102",
"addressCountry": "US"
},
"sameAs": [
"https://twitter.com/freshjuicedev",
"https://linkedin.com/company/freshjuice",
"https://github.com/freshjuice-dev"
]
} WebSite
Provides site-wide information and enables the Sitelinks Searchbox in Google.
Use Cases
- Homepage only (one per website)
- Sites with internal search functionality
Google Rich Results
Sitelinks Searchbox — adds a search box directly in Google search results that queries your site.
Example Output
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "FreshJuice",
"url": "https://freshjuice.dev",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://freshjuice.dev/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
} BreadcrumbList
Represents the navigation path to a page within the site hierarchy.
Use Cases
- Any page with hierarchical navigation
- Documentation pages
- Category/subcategory pages
- Product pages within catalogs
Google Rich Results
Breadcrumb Trail — displays clickable navigation path in search results (e.g., "Home > Products > Category > Item").
Example Output
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://freshjuice.dev"
},
{
"@type": "ListItem",
"position": 2,
"name": "Docs",
"item": "https://freshjuice.dev/docs/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Modules",
"item": "https://freshjuice.dev/docs/modules/"
},
{
"@type": "ListItem",
"position": 4,
"name": "Schema Pro"
}
]
} Tip: The module can auto-generate breadcrumbs from your URL structure, or you can define them manually.
FAQPage
Structures question-and-answer content on a page.
Use Cases
- FAQ pages
- Product pages with common questions
- Support/help center pages
- Any page with Q&A sections
Google Rich Results
Expandable FAQ Snippets — displays questions with expandable answers directly in search results, significantly increasing SERP real estate.
Example Output
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is Schema Pro?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Schema Pro is a HubSpot module that adds JSON-LD structured data to your pages, helping search engines understand your content and enabling rich results."
}
},
{
"@type": "Question",
"name": "How do I install Schema Pro?",
"acceptedAnswer": {
"@type": "Answer",
"text": "You can install Schema Pro from the HubSpot Marketplace. Simply add the module to any page and configure it in the sidebar panel."
}
},
{
"@type": "Question",
"name": "Does Schema Pro affect page speed?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. Schema Pro only outputs lightweight JSON-LD scripts in the page head with no CSS or JavaScript that could impact performance."
}
}
]
} LocalBusiness
Describes a physical business location with address, hours, and contact details.
Use Cases
- Location pages
- "Contact Us" pages with physical addresses
- Store locator pages
- Multi-location businesses (one schema per location)
Google Rich Results
Local Pack — appears in Google Maps and local search results with address, hours, phone, and directions. Maps Integration — displays your business on Google Maps.
Example Output
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "FreshJuice HQ",
"image": "https://freshjuice.dev/img/office.jpg",
"url": "https://freshjuice.dev",
"telephone": "+1-555-123-4567",
"email": "[email protected]",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street, Suite 400",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94102",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 37.7749,
"longitude": -122.4194
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
}
]
} Article
Marks up news articles, blog posts, and editorial content.
Use Cases
- Blog posts
- News articles
- Magazine/editorial content
- Any long-form written content
Google Rich Results
Article Rich Results — displays headline, author, date, and thumbnail in search results. Can appear in Google News and Top Stories carousel.
Example Output
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Getting Started with HubSpot Schema Markup",
"description": "Learn how to implement structured data on your HubSpot website to improve SEO and enable rich results.",
"image": "https://freshjuice.dev/blog/schema-guide/featured.jpg",
"datePublished": "2024-01-15T09:00:00+00:00",
"dateModified": "2024-01-20T14:30:00+00:00",
"author": {
"@type": "Person",
"name": "Alex Zappa",
"url": "https://freshjuice.dev/authors/reatlat/"
},
"publisher": {
"@type": "Organization",
"name": "FreshJuice",
"logo": {
"@type": "ImageObject",
"url": "https://freshjuice.dev/img/logo.png"
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://freshjuice.dev/blog/schema-guide/"
}
} Tip: The module can auto-populate Article schema from HubSpot content fields like
content.name,content.blog_author, and publish dates.
Product
Describes a product with price, availability, reviews, and other commercial details.
Use Cases
- Product detail pages
- E-commerce listings
- Software/SaaS product pages
- Any page selling or showcasing a product
Google Rich Results
Product Snippets — displays price, availability, star rating, and review count directly in search results.
Example Output
{
"@context": "https://schema.org",
"@type": "Product",
"name": "FreshJuice Pro Theme",
"image": "https://freshjuice.dev/img/theme-preview.jpg",
"description": "A premium HubSpot CMS theme with 50+ modules, built for performance and conversion.",
"brand": {
"@type": "Brand",
"name": "FreshJuice"
},
"sku": "FJ-THEME-PRO",
"offers": {
"@type": "Offer",
"url": "https://freshjuice.dev/pricing/",
"priceCurrency": "USD",
"price": "499.00",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2024-12-31"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
} Service
Describes a service offering provided by a business.
Use Cases
- Services pages
- Professional services listings
- Consulting/agency offerings
- Any page describing services you provide
Google Rich Results
Enhanced Listings — improves how your service pages appear in search with structured service information.
Example Output
{
"@context": "https://schema.org",
"@type": "Service",
"name": "HubSpot Development",
"description": "Custom HubSpot CMS development including themes, modules, and integrations.",
"provider": {
"@type": "Organization",
"name": "FreshJuice"
},
"serviceType": "Web Development",
"areaServed": {
"@type": "Country",
"name": "United States"
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "HubSpot Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Custom Theme Development"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Module Development"
}
}
]
}
} Note: Service schema does NOT support
priceRange(only LocalBusiness does per Schema.org specification).
SoftwareApplication
Describes software products, apps, or SaaS offerings.
Use Cases
- SaaS product pages
- Mobile app landing pages
- Desktop software pages
- Browser extension pages
Google Rich Results
App Info in Search — displays app name, rating, price, and platform information in search results.
Example Output
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "FreshJuice Theme Builder",
"operatingSystem": "Web",
"applicationCategory": "BusinessApplication",
"description": "A visual theme builder for HubSpot CMS that lets you customize your website without code.",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"ratingCount": "89"
},
"screenshot": "https://freshjuice.dev/img/app-screenshot.png"
} Review / AggregateRating
Displays individual reviews or aggregate rating information.
Use Cases
- Product pages with customer reviews
- Testimonials pages
- Business review displays
- Any page showcasing ratings/reviews
Google Rich Results
Star Ratings — displays star ratings and review counts in search results, increasing click-through rates.
Example Output
{
"@context": "https://schema.org",
"@type": "Product",
"name": "FreshJuice Pro Theme",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"bestRating": "5",
"worstRating": "1",
"ratingCount": "127"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "John Smith"
},
"datePublished": "2024-01-10",
"reviewBody": "Excellent theme with great support. Made our HubSpot site look professional in no time.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
}
},
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Sarah Johnson"
},
"datePublished": "2024-01-05",
"reviewBody": "Very flexible and well-documented. The modules save us tons of development time.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
}
}
]
} HowTo
Structures step-by-step instructional content.
Use Cases
- Tutorial pages
- DIY guides
- Recipe pages
- Setup/installation guides
- Any step-by-step instructions
Google Rich Results
How-to Rich Results — displays steps, images, and estimated time directly in search results. Can appear with expandable steps.
Example Output
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Install a HubSpot Module",
"description": "Step-by-step guide to installing a module from the HubSpot Marketplace.",
"totalTime": "PT5M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "0"
},
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "Browse the Marketplace",
"text": "Go to the HubSpot Marketplace and find the module you want to install.",
"image": "https://freshjuice.dev/img/tutorial/step1.jpg"
},
{
"@type": "HowToStep",
"position": 2,
"name": "Click Install",
"text": "Click the 'Install' button and select the portal where you want to add the module.",
"image": "https://freshjuice.dev/img/tutorial/step2.jpg"
},
{
"@type": "HowToStep",
"position": 3,
"name": "Add to Page",
"text": "Open the page editor, find the module in the sidebar, and drag it onto your page.",
"image": "https://freshjuice.dev/img/tutorial/step3.jpg"
}
]
} VideoObject
Describes video content with metadata for video search.
Use Cases
- Video landing pages
- Tutorial video pages
- Webinar recordings
- Any page with embedded video content
Google Rich Results
Video Carousels — displays video thumbnails, duration, and descriptions in search results and Google Video search.
Example Output
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "Getting Started with FreshJuice Theme",
"description": "Learn how to set up and customize your FreshJuice HubSpot theme in this comprehensive tutorial.",
"thumbnailUrl": "https://freshjuice.dev/img/video-thumbnail.jpg",
"uploadDate": "2024-01-15T09:00:00+00:00",
"duration": "PT12M30S",
"contentUrl": "https://freshjuice.dev/videos/getting-started.mp4",
"embedUrl": "https://www.youtube.com/embed/dQw4w9WgXcQ",
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": "https://schema.org/WatchAction",
"userInteractionCount": 5647
}
} Event
Describes events like webinars, conferences, workshops, or concerts.
Use Cases
- Event landing pages
- Webinar registration pages
- Conference pages
- Workshop/training pages
- Concert/show listings
Google Rich Results
Event Listings — displays event date, time, location, and ticket info in search results. Appears in Google Events search.
Example Output
{
"@context": "https://schema.org",
"@type": "Event",
"name": "HubSpot CMS Masterclass",
"description": "A comprehensive workshop on building high-performance websites with HubSpot CMS.",
"startDate": "2024-03-15T10:00:00-07:00",
"endDate": "2024-03-15T16:00:00-07:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"location": [
{
"@type": "Place",
"name": "FreshJuice HQ",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94102",
"addressCountry": "US"
}
},
{
"@type": "VirtualLocation",
"url": "https://freshjuice.dev/events/masterclass/live"
}
],
"image": "https://freshjuice.dev/img/masterclass-banner.jpg",
"offers": {
"@type": "Offer",
"url": "https://freshjuice.dev/events/masterclass/",
"price": "299.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"validFrom": "2024-01-01T00:00:00-07:00"
},
"organizer": {
"@type": "Organization",
"name": "FreshJuice",
"url": "https://freshjuice.dev"
},
"performer": {
"@type": "Person",
"name": "Alex Zappa"
}
} Tip: The module supports
MixedEventAttendanceModefor hybrid events with both in-person and virtual attendance options.
Person
Describes an individual person like team members, authors, or speakers.
Use Cases
- Team/about pages
- Author bio pages
- Speaker profiles
- Expert/contributor pages
Google Rich Results
Author Info — associates content with verified authors, improving E-E-A-T signals. Can display author information in search results.
Example Output
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Alex Zappa",
"givenName": "Alex",
"familyName": "Zappa",
"jobTitle": "Founder & Lead Developer",
"url": "https://freshjuice.dev/authors/reatlat/",
"image": "https://freshjuice.dev/img/authors/alex.jpg",
"description": "HubSpot CMS developer and founder of FreshJuice, building premium themes and modules for modern marketers.",
"email": "[email protected]",
"worksFor": {
"@type": "Organization",
"name": "FreshJuice"
},
"sameAs": [
"https://twitter.com/reatlat",
"https://github.com/reatlat",
"https://linkedin.com/in/reatlat"
]
} JobPosting
Describes job openings for career pages.
Use Cases
- Individual job listing pages
- Career pages with job openings
- Recruitment landing pages
Google Rich Results
Google Jobs — displays job listings in Google's job search feature with title, salary, location, and application info.
Example Output
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior HubSpot Developer",
"description": "<p>We're looking for an experienced HubSpot developer to join our growing team. You'll be building custom themes, modules, and integrations for our clients.</p><h3>Requirements</h3><ul><li>3+ years HubSpot CMS experience</li><li>Strong HubL and JavaScript skills</li><li>Experience with modern CSS frameworks</li></ul>",
"datePosted": "2024-01-10",
"validThrough": "2024-03-10T23:59:59-07:00",
"employmentType": "FULL_TIME",
"hiringOrganization": {
"@type": "Organization",
"name": "FreshJuice",
"sameAs": "https://freshjuice.dev",
"logo": "https://freshjuice.dev/img/logo.png"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94102",
"addressCountry": "US"
}
},
"jobLocationType": "TELECOMMUTE",
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"minValue": 100000,
"maxValue": 150000,
"unitText": "YEAR"
}
},
"applicantLocationRequirements": {
"@type": "Country",
"name": "United States"
}
} Testing Resources
Before publishing, always validate your structured data:
| Tool | Description | Link |
|---|---|---|
| Google Rich Results Test | Test if your page is eligible for rich results | search.google.com/test/rich-results |
| Schema.org Validator | Validate JSON-LD syntax and structure | validator.schema.org |
| JSON-LD Playground | Debug and visualize JSON-LD markup | json-ld.org/playground |
Validation Tips
- Test before publishing — Always run your pages through the Rich Results Test after adding schema
- Check for errors — Fix any critical errors before deploying
- Monitor Search Console — Check the Enhancements reports for ongoing issues
- Keep data accurate — Ensure schema data matches visible page content
Module Settings Reference
Adding Multiple Schemas
Schema Pro uses a repeater interface — you can add multiple schema types to a single page. Each schema type has its own field prefix:
| Prefix | Schema Type |
|---|---|
org__ | Organization |
site__ | WebSite |
bread__ | BreadcrumbList |
faq__ | FAQPage |
local__ | LocalBusiness |
article__ | Article |
product__ | Product |
service__ | Service |
app__ | SoftwareApplication |
review__ | Review/Rating |
howto__ | HowTo |
video__ | VideoObject |
event__ | Event |
person__ | Person |
job__ | JobPosting |
Smart Defaults
The module automatically uses HubSpot data when available:
- Article schema — auto-populates from
content.name,content.blog_author, publish dates - BreadcrumbList — can auto-generate from URL structure
- Organization — falls back to
site_settings.company_name