Jupitr Tech

Schema Markup for AEO: The "Seller" Property Most Small Business Sites Are Missing

Ratri Jawanes
Schema Markup for AEO: The Seller Property Sites Miss - Jupitr Tech

You Probably Have Schema Markup. You Probably Also Have the Wrong Kind.

If you've worked on SEO at all these past few years, you've heard "add schema markup" so many times it stopped meaning anything. Maybe you turned on the schema toggle in your WordPress plugin and moved on. That's a start, but it is not the whole job anymore.

Now AI tools like ChatGPT and Perplexity read websites directly instead of just ranking them. Schema markup isn't only a Google thing anymore. It's becoming the language machines use to figure out what you actually do and sell. There's one property buried in schema.org's own docs that almost nobody uses, not because it's hard, but because most people learned the wrong word for it. Stick around. Once you see it, you'll be checking your own site.

What Is Schema Markup, Actually?

Schema markup is a small block of code you add to a webpage that explains, in a structured format, what the page is about. Not to your human visitors. To the computer reading the page.

Think of it like a label on a can of food. A person can look at the can, read the picture and the text, and figure out it's soup. A machine scanning a warehouse full of cans can't do that nearly as reliably. It needs the label to say, explicitly: this is soup, this brand, this flavor, this weight, this price. Schema markup is that label, written in a vocabulary called schema.org, a shared standard that search engines and AI tools both know how to read.

Without it, Google and AI engines are left guessing at your page the way a person would: reading the text, trying to infer what you are: a business, a product, a service, an event, or something else. With it, you're handing them the answer directly. You're not hoping they figure out you're a tour operator in Bali. You're telling them.

Does Schema Help With Google, AI, or Both?

Both, but not in the same way, and this is where a lot of guides get sloppy.

For traditional SEO, schema markup is what Google uses to generate rich results: the star ratings under a review, the FAQ dropdown in search results, the event date and ticket link, the breadcrumb trail instead of a raw URL. Google documents exactly which schema types it supports for which visual features in its structured data documentation. If a type isn't on that list, it won't earn you a rich result, no matter how correctly you implement it. You can check the current list yourself in Google's structured data gallery.

For AEO, answer engine optimization, the story is different. Tools like ChatGPT, Perplexity, and Google's own AI Overviews read structured data directly to understand and summarize your site. They are not limited to Google's rich-result list. A schema type can be completely absent from Google's supported features and still be exactly what an AI engine uses to understand your business.

A concrete example: TouristTrip, the schema type for a tour or travel package, has no Google rich-result support at all. It won't get you stars or a carousel in search. But it's still a fully valid schema.org type, and an AI engine reading your page will use it to understand that you're selling a specific trip, who provides it, and what it includes. Implementing TouristTrip schema is a pure AEO play. If you're only optimizing for Google's visible features, you'd skip it. If you're thinking about how AI engines actually read your site, you wouldn't dream of it.

How Do I Add Schema on WordPress?

If your site runs on WordPress, you don't need to touch code. RankMath and Yoast SEO, the two most common SEO plugins, both generate schema for you.

In RankMath, go to a page or post, open the Schema tab in the RankMath metabox, and pick a schema type from the list (Article, Product, Local Business, FAQ, and more). Fill in the fields it asks for and it outputs valid JSON-LD automatically.

In Yoast SEO, schema is handled more automatically in the background based on your site settings and content type, with more manual control available under Yoast SEO > Schema for specific page types.

The catch is that the plugin's default settings are built for the common case, not your business. A generic "Local Business" type has no idea you're a tour operator, a wellness retreat, or a software consultancy. Picking the most specific type available, and actually filling out every field instead of the bare minimum, is the difference between schema that exists and schema that tells machines something real about you.

How Do I Add Schema Without WordPress?

On a custom build, a Next.js site, or anything without a plugin ecosystem, there's no toggle to flip. You inject the schema yourself as a block of JSON-LD inside a <script> tag. That's it. No separate library required, though one can help if you're generating the data dynamically from a database or CMS.

The pattern is always the same: a <script type="application/ld+json"> tag containing your schema as plain JSON, placed anywhere in the page, most commonly in the <head>.

In a Next.js page or layout component, it looks like this:

export default function Page() {
  const schema = {
    "@context": "https://schema.org",
    "@type": "Service",
    "name": "Bali Day Trek",
    "provider": {
      "@type": "Organization",
      "name": "Your Company Name"
    }
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
      />
      {/* rest of your page */}
    </>
  );
}

That's the whole mechanism. Whether you're hand-coding one script tag for a single page or generating dozens dynamically from a products table, you're always doing the same thing: building a JSON object that matches a schema.org type, and dropping it into that script tag. The difficulty isn't the implementation. It's knowing which schema.org type and properties actually describe what you're selling, which is what the rest of this post is really about.

What Does a Basic Organization Schema Look Like?

Every business site should have Organization schema somewhere, usually on the homepage. It's the foundational block that tells search engines and AI tools who you are, separate from whatever products or services you sell. Here's a minimal, valid version:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your Company Name",
  "url": "https://yourwebsite.com",
  "logo": "https://yourwebsite.com/logo.png",
  "description": "A short, accurate description of what your business does.",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "City",
    "addressCountry": "Country"
  },
  "sameAs": [
    "https://www.instagram.com/yourhandle",
    "https://www.facebook.com/yourhandle"
  ]
}

This is the version most plugins and most guides stop at: name, logo, address, social links. It's correct, and it's also incomplete. It describes who you are. It says nothing about what you sell. That's the gap most small business schema falls into, and it's exactly what the next section fixes.

Here's the Part Almost Nobody Implements

An Organization isn't just a name and a logo. It can also be marked up as a seller, using a property called makesOffer. This single property is how you tell search engines and AI tools, in structured data, that your organization doesn't just exist, it sells specific things. Schema.org's own Organization page defines makesOffer as "a pointer to products or services offered by the organization or person."

For years, people writing about schema for e-commerce and local business used the word "merchant." It's in old blog posts, old plugin field labels, old tutorials. Schema.org has moved on from it. On the Organization page itself, schema.org says flatly that "merchant" is an out-dated term for "seller." The Order type backs this up from the other side: its seller property "supersedes merchant, vendor."

So if you or your developer are hunting for a "merchant" property to mark up who sells something, stop. It's seller now, and it lives on types like Order, not on Organization itself. The part that actually matters for you: when you want to say "this organization sells these things," the property doing that work is makesOffer, pointing to one or more Offer objects. Almost nobody adds it. Most schema setups stop at the basic Organization block from the section above and never connect it to what the business actually sells. Here's what that connection looks like in practice.

What Does This Look Like on a Real Site?

I handle content and technical SEO for Bali Trekking Exploration, a tour operator running on a custom Next.js build, not WordPress. Their trek packages needed one layer of schema, and the organization itself needed another, and the two had to connect.

Each individual trek is a product, so it gets TouristTrip schema, with a provider pointing back to the organization and offers describing the price and availability:

{
  "@context": "https://schema.org",
  "@type": "TouristTrip",
  "name": "Mount Batur Sunrise Trek",
  "description": "Guided sunrise trekking tour up Mount Batur, including local guide and breakfast.",
  "provider": {
    "@type": "Organization",
    "name": "Bali Trekking Exploration",
    "url": "https://balitrekkingexploration.com"
  },
  "offers": {
    "@type": "Offer",
    "price": "450000",
    "priceCurrency": "IDR",
    "availability": "https://schema.org/InStock"
  }
}

That covers the product level. But Bali Trekking Exploration as a business also needs its own Organization schema, and that Organization needs to say, explicitly, that it sells these treks. That's where makesOffer does the work the basic Organization block from earlier never does:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Bali Trekking Exploration",
  "url": "https://balitrekkingexploration.com",
  "description": "Local Bali trekking and adventure tour operator offering guided day and multi-day treks.",
  "makesOffer": [
    {
      "@type": "Offer",
      "itemOffered": {
        "@type": "TouristTrip",
        "name": "Mount Batur Sunrise Trek"
      }
    }
  ]
}

Two layers, two jobs. The TouristTrip block describes one specific product in detail, who provides it and what it costs. The Organization block describes the business and uses makesOffer to point at what it sells. Neither one replaces the other, and a huge number of sites only ever build the first, or only the second, and never connect them.

None of this is hard to build, by the way. During my AEO coursework I started digging into schema.org's actual type definitions instead of leaning on generic plugin settings, and the real lesson wasn't technical difficulty. It was specificity. The more precisely your schema matches your actual business, the more useful it is. On WordPress, that might just mean picking a more specific type in RankMath instead of the default. On a custom build like this one, it's injecting the JSON-LD by hand, which is just a matter of doing it, not a matter of difficulty, once you know what the two layers need to say.

Which Schema Types Should My Business Actually Use?

If you run a small service or tourism business, you don't need every schema type that exists. You need these, done properly:

  • Organization: who you are, with makesOffer connecting you to what you actually sell. The foundation everything else sits on.
  • Service or Product: one block per thing you sell, detailed enough that a search engine or AI tool understands the specific offering, not just that you're "a business."
  • Review or AggregateRating: your actual customer ratings, marked up so they're eligible to show as star ratings in search and are readable by AI engines summarizing your reputation.
  • FAQPage: your real frequently asked questions, marked up so they can appear as expandable results in Google and be pulled directly into AI-generated answers.
  • BreadcrumbList: your site's navigation path, so search results show a clean trail instead of a raw URL.

Start with Organization and makesOffer if you only fix one thing after reading this. It's the connective tissue the rest depends on.

Frequently Asked Questions

Will adding schema markup actually improve my Google ranking?

Not directly. Schema doesn't move your ranking position on its own, but it makes you eligible for rich results (stars, FAQ dropdowns, breadcrumbs) that can improve your click-through rate, and it helps AI engines understand and surface your content accurately, which matters increasingly alongside traditional ranking.

Do I need a developer to add schema to my site?

Not if you're on WordPress. RankMath or Yoast SEO handle it through their interface. If you're on a custom-built site like Next.js, you'll need someone comfortable injecting a JSON-LD script tag, which is a small, well-defined task, not a major development project.

What's the difference between SEO and AEO when it comes to schema?

SEO schema is aimed at earning Google's documented rich-result features. AEO schema is aimed at being read and understood by AI answer engines like ChatGPT and Perplexity, which read structured data directly and aren't limited to Google's supported list. Some schema types help with both, some only help with one.

Is TouristTrip schema worth implementing if it doesn't show up in Google search results?

Yes, if AI visibility matters to you. It won't earn you a star rating or carousel, but it's one of the clearest signals you can give an AI engine about what a specific trip or package includes.

What is makesOffer, in plain terms?

It's the property that connects your Organization to the specific things it sells. Without it, your Organization schema says who you are but not what you offer.

I've seen "merchant" mentioned in older schema guides. Should I still use it?

No. Schema.org itself labels "merchant" as an out-dated term for "seller." If you're marking up who sells something, use seller, and use makesOffer to connect an Organization to its offers.

Can I implement all of this myself, or should I hire someone?

The WordPress path is genuinely doable yourself through RankMath or Yoast. The JSON-LD path for custom sites needs someone who can write and test a bit of code, but it's a focused task you can hand to a developer or an agency without a long engagement.

How do I know if my schema is actually working?

Google's Rich Results Test and the Schema Markup Validator will check your JSON-LD for errors and show you which rich results you qualify for. Neither one tells you how AI engines are reading your schema, since that's a newer and less transparent area.

Next Steps

If you want to check where your own site stands, start here:

  1. Look up your Organization schema (view page source or check your plugin's schema tab) and see whether it includes makesOffer. If it doesn't, it's only telling search engines and AI tools who you are, not what you sell.
  2. If you're on WordPress, open RankMath or Yoast and check whether you've picked the most specific schema type available for your business, rather than the generic default.
  3. If you're on a custom build, confirm your product or service pages actually have their own schema block, not just the homepage Organization markup.
  4. Run our free Website Audit tool to see how your site's current schema and overall SEO and AEO positioning stack up.

If you'd rather walk through it with someone than dig through your own site's code, book a consultation and we'll go through it together.

A black and white view of a cratered lunar surface sloping upward against the black void of space.

Ready for Takeoff?

Your website shouldn't be a source of stress—it should be your hardest-working digital employee. Let's build something that makes you proud and drives real business results.

Get in touch