Table of contents
A service landing page is where customers decide whether to get in touch — but more and more users ask AI before visiting a website: "how much does logo design cost in Ho Chi Minh City?" or "reputable AEO company in Vietnam." AI synthesizes and recommends — and correct schema is the deciding factor in whether you get recommended.
Schema stack for a service landing page
Service Landing Page
├── BreadcrumbList → navigation
├── Service → service description + price + service area
│ ├── provider → Organization (@id reuse)
│ ├── offers → Offer / AggregateOffer
│ └── areaServed → City/Country
├── FAQPage → questions from people considering buying
├── HowTo (optional) → working process
└── AggregateRating (if reviews available)
Complete Service JSON-LD
{
"@context": "https://schema.org",
"@type": "Service",
"@id": "https://example.vn/vi/dich-vu/thiet-ke-website",
"name": "Dịch Vụ Thiết Kế Website Chuyên Nghiệp",
"description": "Thiết kế và phát triển website doanh nghiệp từ A đến Z — từ UI/UX design, lập trình, đến SEO cơ bản và training sử dụng. Phù hợp với SME, startup và doanh nghiệp vừa muốn có website chuyên nghiệp với chi phí hợp lý. Thời gian hoàn thành 4-8 tuần tuỳ phức tạp. Bảo hành 12 tháng kỹ thuật.",
"serviceType": "Web Design and Development",
"provider": {
"@type": "Organization",
"@id": "https://example.vn",
"name": "Studio Digital ABC",
"url": "https://example.vn",
"telephone": "+84-28-1234-5678",
"logo": "https://example.vn/logo.png"
},
"areaServed": [
{ "@type": "City", "name": "Hồ Chí Minh" },
{ "@type": "City", "name": "Hà Nội" },
{ "@type": "Country", "name": "Vietnam" }
],
"availableChannel": {
"@type": "ServiceChannel",
"serviceUrl": "https://example.vn/vi/lien-he",
"servicePhone": "+84-28-1234-5678",
"serviceType": "Online + Offline consultation"
},
"offers": {
"@type": "AggregateOffer",
"lowPrice": "8000000",
"highPrice": "80000000",
"priceCurrency": "VND",
"offerCount": 3,
"offers": [
{
"@type": "Offer",
"name": "Gói Landing Page",
"description": "1 trang landing page chuyên nghiệp, responsive, tốc độ cao, CMS đơn giản",
"price": "8000000",
"priceCurrency": "VND"
},
{
"@type": "Offer",
"name": "Gói Website Doanh Nghiệp",
"description": "5-10 trang, CMS đầy đủ, blog, form liên hệ, tích hợp Google Analytics",
"price": "25000000",
"priceCurrency": "VND"
},
{
"@type": "Offer",
"name": "Gói E-commerce",
"description": "Cửa hàng online đầy đủ: quản lý sản phẩm, giỏ hàng, thanh toán, vận chuyển",
"price": "50000000",
"priceCurrency": "VND"
}
]
},
"termsOfService": "https://example.vn/vi/dieu-khoan",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "67"
},
"review": [
{
"@type": "Review",
"reviewRating": { "@type": "Rating", "ratingValue": "5" },
"author": { "@type": "Organization", "name": "Công ty TNHH Minh Phát" },
"reviewBody": "Đội ngũ nhiệt tình, hiểu yêu cầu nhanh. Website đúng hạn, đúng ngân sách. SEO cơ bản được set up tốt.",
"datePublished": "2026-06-15"
}
]
}
HowTo schema for the working process
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Quy Trình Thiết Kế Website tại Studio Digital ABC",
"description": "4 bước từ khảo sát đến bàn giao website hoàn chỉnh",
"totalTime": "PT672H",
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "Khảo sát và lập yêu cầu",
"text": "Buổi meeting 90 phút (online hoặc offline) để hiểu business, đối tượng khách hàng, mục tiêu website. Sau meeting: document yêu cầu chi tiết và quotation chính thức trong 2 ngày làm việc."
},
{
"@type": "HowToStep",
"position": 2,
"name": "Design UI/UX",
"text": "Thiết kế wireframe và mockup trên Figma. Khách hàng review và góp ý tối đa 2 vòng. Thời gian: 1-2 tuần tuỳ số trang."
},
{
"@type": "HowToStep",
"position": 3,
"name": "Lập trình và tích hợp",
"text": "Code responsive từ design đã duyệt. Tích hợp CMS, form, analytics, tốc độ tải. Test trên Chrome, Safari, mobile. Thời gian: 2-4 tuần."
},
{
"@type": "HowToStep",
"position": 4,
"name": "Bàn giao và training",
"text": "Deploy lên hosting, training sử dụng CMS (buổi 60 phút có ghi hình). Bàn giao toàn bộ source code và credentials. Bảo hành kỹ thuật 12 tháng."
}
]
}
Common schema errors on service landing pages
| Error | Consequence | Fix |
|---|---|---|
| Only Organization, no Service | AI knows the company but not its services | Add Service schema with a full description |
| FAQ full of marketing questions | AI won't cite marketing FAQ | Write real questions from people actively considering buying |
| Price listed as "negotiable" with no declared value | AI cannot compare prices for users | Declare a starting price or a price range |
| Fabricated AggregateRating | Risk of penalty from Google | Only use reviews from real customers |
| Missing areaServed | AI cannot match geographic queries | Add city/country served |
| Service and Organization sharing the same @id | Schema conflict | Give each entity its own unique @id |
Correct schema for a service landing page not only helps AI cite your services accurately — it also makes your service information appear consistently whether users search via Google Search, Google Maps, ChatGPT, or Perplexity.
Frequently asked questions
Why do service pages need different schema from blog posts?
Blog posts are optimized for AI to cite general information and explain concepts. Service landing pages need AI to understand: this organization provides a specific service, at a specific price, serving a specific area, with customer reviews. Appropriate schema: Service (describes the service), Offer (price and terms), AggregateRating (credibility), FAQPage (questions from people considering purchasing), HowTo (working process). The right combination means AI describes your service like an expert consultant rather than making random citations.
What are the most important fields in Service schema?
Service schema has: name (service name), description (detailed description), provider (the providing Organization), areaServed (service area), serviceType (type of service), offers (pricing), termsOfService (terms), availableChannel (contact channel). Most important: (1) description must clearly state what the service does, who it's for, and what outcomes it delivers — 100+ words, (2) offers with a specific price or price range — AI uses this when answering 'how much does service X cost', (3) areaServed — AI uses this to match geographic queries like 'service X in Ho Chi Minh City'. Not every field is required — fill in what accurately reflects the real service.
How many schemas should be placed on a single landing page?
A typical service landing page has 3-4 schemas: (1) Service — describes the main service, (2) Organization — provider information (declared once, reused via @id), (3) FAQPage — questions from people considering buying, (4) BreadcrumbList — navigation structure. If testimonials or reviews are present: add AggregateRating. If there is a pricing table: add Offer or AggregateOffer. Don't stuff all schemas into one JSON-LD block — each schema in a separate script tag, or use an array in one script. Avoid schema unrelated to the actual page content.
What questions should FAQ focus on for a landing page?
Landing page FAQ is different from blog FAQ: it must answer questions from someone actively considering a purchase, not someone learning. Good questions: 'What does your service X include?', 'How long does it typically take to complete?', 'How is the service priced?', 'What guarantees are offered if I'm not satisfied?', 'What information do I need to provide to get started?', 'What size of business is this suitable for?'. Answers should be 50-100 words, specific and factual — not marketing language. AI cites this type of FAQ when users ask 'is company Y's service X reputable.'
How should an Offer schema be declared for B2B services priced on request?
Several options: (1) Declare a starting price: price: '5000000', description: 'Starting from 5 million VND, depending on project scope' — best option because AI has a concrete number, (2) Declare a range: use AggregateOffer with lowPrice: '5000000', highPrice: '50000000' — suitable when service packages have multiple tiers, (3) No price available: omit Offer and add a ContactPoint with contact type 'Sales' — AI will direct users to get in touch. Never declare price: '0' or price: 'Contact us' — these are invalid values and AI will misinterpret them.
AEO Saigon
An Answer Engine Optimization agency in Ho Chi Minh City — helping business websites get cited by AI. About AEO Saigon →
Want your website to be cited by AI like this?
Free Audit