Structured Data for AI Search: Schema Thai Firms Can Use
Structured data is a label on a page, written so a machine can read facts a person can already see. It is not a ranking switch and it does not book a citation in ChatGPT, Gemini, or Perplexity. Organization, Service, LocalBusiness, FAQ, and Product schema describe a page. The label helps only when it matches the visible text, and only when that page is one a system is willing to use.
A valid rich-result check and an AI citation are different jobs. FAQ markup can make a question eligible for a Google treatment. It does not place the firm in an assistant’s answer. A price you did not print is not a fact you should encode.
Short answer: Put Organization on the company page. Use Service where you sell a service, or LocalBusiness when the page is a real place or a service area you can name. Use FAQ only where the page already answers those questions. Use Product only for a thing you sell, with an offer only if you printed one. Do not stamp every URL with every type.
What the markup is for
JSON-LD in a script block is the usual form. Google documents that form for its rich results. Those AI products do not publish a checklist that says a given type earns a citation. Treat the markup as a statement of who you are, what you sell, where you work, and which questions this URL answers. If the page and the JSON disagree, trust the page. A hidden claim is a failure, not a shortcut.
Becoming a source is in how to get ChatGPT, Gemini, and Perplexity to cite your brand. Counting a click that arrives is in how to see AI referrals in GA4. Fitting the markup into a crawl and index pass is on our technical SEO services page. Using it beside answer-style pages is on AEO and GEO services. This article does not quote a fee, and it does not promise a place in an answer.
Match the type to the page
One URL, one main type, plus the company identity where it belongs. A clinic homepage is not five types stacked to look complete. A shop item is not a LocalBusiness. A blog post is not a Service. If a careful reader cannot point at a sentence the JSON repeats, drop the type.
Organization
Use Organization for the legal entity, once, on the home page or the about page. Worth including: name, legalName if the brand differs, url, logo, sameAs, address, and a contactPoint already on the site. sameAs is only for profiles you control: the site, a Google Business Profile you manage, Facebook, a LINE official account, LinkedIn. An unclaimed directory is not a sameAs. Skip a founding date, a headcount, or an award the page does not show. Put the brand in name and the registered name in legalName. Do not paste a keyword into the name. Each language home uses that language’s name and url.
Service
Use Service for work the page describes: technical SEO, a hotel website, an OEM run, a clinic treatment, a property desk. Include name, serviceType, description, provider, and areaServed only for places you cover. Thailand is fair if you work nationally. Worldwide is a claim. Do not list provinces the page never names. Write the description from the page. Skip a one-sentence stub.
LocalBusiness
LocalBusiness fits a hotel, clinic, showroom, factory gate, restaurant, or office clients visit. A service-area business can use areaServed without an invented walk-in address. Name, address, and phone should match the Google Business Profile and the footer. Hours only if true this season. A pin only if you would give it to a driver. Use Hotel or MedicalClinic only when the page is that thing. A page about hotel websites is a Service, not a Hotel. Keep the address as printed. A LINE-only contact is not a telephone unless the page shows a number.
FAQ
FAQPage is for questions the same URL answers in visible text. Match the page. Five real questions are enough. Do not mark a page that has no questions, and do not copy one block onto every post. Google has narrowed FAQ rich results. Treat the markup as clarity, not a guaranteed box. If the page says it depends, the markup says it depends. Do not add a ranking promise, a fee, or a review count the page does not state.
Product
Product is for a thing you sell on its own page: a SKU, a named package, a room type only if you publish it as a product. Include name, description, brand, an image already on the page, and offers. price and priceCurrency only when that figure is on the page. Thai baht is THB when the page shows baht. Do not turn a “from” range into one price. Do not add a rating unless those reviews are visible and yours to mark. A quote-only page skips the Offer. A rate that changes by date is not one frozen Offer unless the page states that rate.
What not to spam
None of this creates a citation. Several items create a contradiction a careful reader, or a rich-result check, can see.
- FAQPage on URLs that do not answer those questions, or the same block copied across the menu.
- Review and AggregateRating for testimonials you wrote, or counts you cannot show.
- HowTo stuffed with city names, or a HowTo that is a sales pitch.
- An Organization name rewritten per keyword, or two graphs with different phones.
- sameAs pointing at directories, clippings, or a competitor.
- Article on a sales page, or Speakable on text you never shaped for voice.
- A breadcrumb path the menu does not have, or a dateModified you refresh without editing the page.
- Hidden JSON that names a city the page never serves, a price from a sales deck, or a competitor’s JSON with the name swapped.
Read a warning. Do not add a second type to silence it. Leave optional fields empty. A required field you cannot fill means that type does not belong on the URL.
A working order for a Thai site
Stop when the next step would invent a fact. Order beats a plugin that emits every type it knows.
- Pick the entity URL, home or about. One Organization. A logo URL that resolves. sameAs only for profiles you control. Contact details from the footer, not an old proposal.
- Walk the service menu. Each real offer gets Service, or LocalBusiness if the page is a place. Skip thin stubs.
- Mark FAQ only where the questions are already visible. Keep English and Thai wording aligned if both exist.
- Mark Product only where a catalogue item exists and, if you claim an offer, a printed price exists on that URL.
- Validate in a rich-results test and a Schema.org validator. Fix a missing required field or a wrong type. Do not invent data to clear an optional warning.
- In Search Console, read enhancements only after the pages are indexed. An empty report is not a score.
- Recheck when the address, hours, SKU, or service name changes.
English and Thai are two documents. Each URL gets fields in its own language. hreflang is a separate setting. Do not point the Thai url at the English slug. If a plugin copies the English title onto the Thai page, turn that output off. Read any graph WordPress already prints before you add a second block. A page with no image should not invent an image URL.
How this sits next to citations
A citation is a decision that model makes from pages it can retrieve, and from other sources. Schema can make a name, a service, and a place easier to extract. It does not make a thin page trustworthy. That sequence sits in the citation article. Schema will not create a session. If a click arrives, measure it from the hostname, which is the subject of the GA4 article. Direct traffic is still not AI traffic.
Do not brief a client that schema is live, so rankings will move. The deliverable is a page that states its type without contradicting itself. A ranking, a rich result, or a citation is something you observe later, or you do not. There is no official score that turns markup into a citation share.
When this is an agency job
Do the first pass in-house if someone can compare the source with the visible page. Bring help when English and Thai disagree, when nobody knows which service URLs are real, when a plugin price and the JSON disagree, or when FAQ markup was left on the whole blog.
Digital Agency Bangkok can take the markup as part of technical SEO services, and the answer-page side as AEO and GEO services. This article is the method. It is not a promise that Google, ChatGPT, Gemini, or Perplexity will display the firm. The technical SEO FAQ and the AEO and GEO FAQ cover how those engagements differ. Look at the live page before anyone quotes a plan. If the text does not say who you are, schema cannot say it for you.
FAQ
Does schema make ChatGPT, Gemini, or Perplexity cite a Thai company?
No. Markup can make a name, a service, and a place easier to extract from a page that already states them. A citation is a separate decision. No type guarantees a mention, and a missing citation does not prove the JSON is invalid.
Should every page have FAQ schema?
No. Mark FAQ only on a URL that shows those questions and answers. Copying one block across the menu, or onto posts that never ask the questions, is spam. Five real questions on the page that answers them are enough.
Can Product schema include a price the page does not show?
No. price and priceCurrency belong in an Offer only when that figure is on the page. A number from a deck, a chat, or a “from” range that is not a single stated price stays out of the JSON. A quote-only page should not carry a fake Offer.
Organization or LocalBusiness for a Bangkok office that also serves other provinces?
Use Organization for the company. Use LocalBusiness on the page that is the place, with the address you publish, and areaServed only for provinces that page names. A service page with no public office is Service plus Organization, not a fictional storefront.
Will this raise Google rankings?
No guarantee. Structured data helps Google read a page and can make some pages eligible for rich results. It is not a ranking promise, and it does not replace a page that can be crawled and that says something specific. Eligibility is not a box on the results page, and a box is not a citation in an assistant.