On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

makesOffer

makesOffer · Optional

Appears in

Organization

What is it?

makesOffer links an organization directly to the products or services it sells, using schema.org's Offer type. It makes commercial intent and specific offerings machine-readable at the organization level, not just on individual product or service pages.

Where individual product pages use offers to describe pricing and availability, makesOffer on an Organization anchors those offers to the legal entity that provides them. This creates a navigable link in the schema graph from company to product to price.

Why this matters for AEO

AI answer engines answer buying intent queries by connecting organizations to what they sell. When a user asks "what does Squarespace offer?" or "which cloud providers have serverless plans?", the AI builds its answer from structured data that links organizations to named offers with pricing and availability signals.

makesOffer is the property that creates this link at the organization level. An Organization that uses makesOffer with a structured Offer node, including name, price, and eligibleRegion, gives AI systems a factual basis for responding to commercial queries without requiring the AI to scrape and infer from product pages.

For e-commerce brands, SaaS companies, and service businesses, makesOffer is one of the highest-value schema properties for AI visibility because it directly addresses queries that precede purchase decisions.

What the specs say

Schema.org:makesOffer expects an Offer value. A pointer to products or services offered by the organization or person. [Source: https://schema.org/makesOffer]

Google: Not mentioned in Google's structured data documentation for Organization. Google's rich result types for individual products use offers on the Product type, not makesOffer on Organization. [Source: https://developers.google.com/search/docs/appearance/structured-data/organization]

How to find your value

Each Offer node should include:

  • @type"Offer"
  • name — Product or service name
  • description — Brief plain-language description
  • price — Numeric price (omit for variable pricing)
  • priceCurrency — ISO 4217 currency code (e.g., "USD")
  • availabilityschema:InStock, schema:OnlineOnly, etc.
  • url — Direct URL to the offer page
  • eligibleRegion — Where the offer is available

For variable-price services, omit price and use priceSpecification or a descriptive description instead.

Format and code

Simple product offer

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Figma",
  "makesOffer": {
    "@type": "Offer",
    "name": "Figma Professional Plan",
    "description": "Unlimited Figma files, version history, and advanced prototyping for professional designers.",
    "price": "15.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://www.figma.com/pricing/"
  }
}

Multiple offers (SaaS pricing tiers)

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Notion",
  "makesOffer": [
    {
      "@type": "Offer",
      "name": "Notion Free",
      "description": "Collaborative workspace for individuals, free forever.",
      "price": "0",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "url": "https://www.notion.so/pricing"
    },
    {
      "@type": "Offer",
      "name": "Notion Plus",
      "description": "Unlimited blocks for individuals and small teams.",
      "price": "10.00",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "url": "https://www.notion.so/pricing"
    },
    {
      "@type": "Offer",
      "name": "Notion Business",
      "description": "Advanced features for teams with SAML SSO and advanced analytics.",
      "price": "15.00",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "url": "https://www.notion.so/pricing"
    }
  ]
}

Service offer with eligibleRegion

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "DoorDash",
  "makesOffer": {
    "@type": "Offer",
    "name": "DashPass Subscription",
    "description": "Unlimited free delivery on eligible orders from thousands of restaurants.",
    "price": "9.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "eligibleRegion": {
      "@type": "Country",
      "name": "United States"
    },
    "url": "https://www.doordash.com/dashpass"
  }
}

Service without fixed price

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "McKinsey & Company",
  "makesOffer": {
    "@type": "Offer",
    "name": "Strategy Consulting",
    "description": "Management consulting services for Fortune 500 companies and governments.",
    "availability": "https://schema.org/InStock",
    "url": "https://www.mckinsey.com/capabilities"
  }
}

Webflow implementation

Static pages

Add makesOffer to the Organization JSON-LD block in your homepage or about page's custom code section. For businesses with a small, stable product set, hardcode each Offer node. List the most important offers rather than every SKU.

CMS template pages

For e-commerce or SaaS sites where products are managed through Webflow CMS, create a Products or Pricing collection. On the organization page, use a custom code embed that dynamically builds the makesOffer array from CMS collection items. This approach keeps the structured data synchronized with your CMS content.

In Schema HQ

makesOffer publishes in the Organization schema editor. Add individual Offer nodes with name, description, pricing, and URL fields. Schema HQ serializes these into valid JSON-LD and publishes to your Webflow site's custom code.

Real examples

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Cloudflare",
  "url": "https://www.cloudflare.com",
  "makesOffer": [
    {
      "@type": "Offer",
      "name": "Cloudflare Free Plan",
      "description": "Basic DDoS protection, CDN, and DNS management at no cost.",
      "price": "0",
      "priceCurrency": "USD",
      "url": "https://www.cloudflare.com/plans/"
    },
    {
      "@type": "Offer",
      "name": "Cloudflare Pro",
      "description": "Enhanced performance and security features for professional websites.",
      "price": "20.00",
      "priceCurrency": "USD",
      "url": "https://www.cloudflare.com/plans/"
    }
  ]
}

Related fields

FAQ

What is the difference between makesOffer on an Organization and offers on a Product?

offers on a Product describes pricing and availability for that specific product. makesOffer on an Organization connects the company to the offers it provides, without requiring a separate Product node. Both can coexist in a complete schema graph, with makesOffer serving as the organization-level entry point and offers providing product-level detail.

Should price be included for service businesses with custom pricing?

No. For services with variable or negotiated pricing, omit the price and priceCurrency fields. Include a name, description, and URL instead. Adding a price of "0" for contact-for-pricing services is misleading and invalid.

How many offers should appear in makesOffer?

There is no limit. Focus on the offers most relevant to search and AI queries: primary product tiers, flagship services, or introductory plans. Listing every product variant adds noise. A well-structured list of three to eight key offers is more useful than an exhaustive catalog.

On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Generate schema for your site with Schema HQ

Get Early Access

Get Early Access

Need help with schema on your site?

We implement structured data for Webflow sites — from audit to deployment.

Work with us

Work with us