Service Schema for AI Booking Agents: Get Your Business Booked Autonomously
AI agents are now booking appointments on behalf of users. Service and ProfessionalService schema is how they find your business, verify your availability, and initiate bookings without a phone call.
Service Schema for AI Booking Agents: Get Your Business Booked Autonomously
> TL;DR
> - AI assistants like Siri, Google AI, and ChatGPT can now book appointments on users' behalf
> - Service and ProfessionalService schema with ReserveAction enables autonomous booking flows
> - Missing schema = the agent recommends a competitor they can book directly
> - Free schema audit for your service business ā
Updated: April 21, 2026
---
The Autonomous Booking Wave
"Book me a 60-minute deep tissue massage this Saturday afternoon in Montclair. Under $120, good reviews."
The user says this to their iPhone. Apple Intelligence checks its indexed knowledge of local massage businesses. It reads schema to verify: service type ā, price range ā, location ā, Saturday availability ā. Then ā if a booking link is present in schema ā it initiates the reservation directly.
The massage therapist with a ReserveAction in their schema gets the booking. The one without it gets mentioned as an option ā and the user has to call.
In a world where friction determines conversion, autonomous booking is the highest-leverage schema feature for service businesses. And almost nobody has implemented it.
---
The Service Schema Stack
For a service business, you need three interlocking schema types:
1. LocalBusiness (or specific subtype) ā declares who you are, where you are, and how to reach you
2. Service ā describes what you offer, at what price, for whom
3. ReserveAction ā exposes the booking path to AI agents
Together they create a complete, bookable profile an AI agent can act on.
---
Service Schema: Complete Template
{
"@context": "https://schema.org",
"@type": "Service",
"serviceType": "Deep Tissue Massage",
"name": "60-Minute Deep Tissue Massage",
"description": "Therapeutic deep tissue massage targeting muscle tension and chronic pain. Suitable for athletes, desk workers with neck/shoulder tension, and clients recovering from injury. Pressure adjusted to client preference.",
"provider": {
"@type": "LocalBusiness",
"name": "Restore Wellness Studio",
"telephone": "+1-973-555-0199",
"url": "https://restorewellness.com"
},
"areaServed": {
"@type": "City",
"name": "Montclair, NJ"
},
"audience": {
"@type": "Audience",
"audienceType": "Athletes, desk workers, chronic pain sufferers, injury recovery"
},
"offers": {
"@type": "Offer",
"price": "110",
"priceCurrency": "USD",
"description": "60-minute session. Packages and memberships available.",
"availability": "https://schema.org/InStock"
},
"availableChannel": {
"@type": "ServiceChannel",
"serviceUrl": "https://restorewellness.com/book",
"servicePhone": "+1-973-555-0199",
"availableLanguage": "English"
},
"additionalProperty": [
{ "@type": "PropertyValue", "name": "Duration", "value": "60 minutes" },
{ "@type": "PropertyValue", "name": "Best For", "value": "Muscle tension, chronic back pain, athletic recovery, desk worker neck/shoulder issues" },
{ "@type": "PropertyValue", "name": "New Client Offer", "value": "$89 intro session for first-time clients" }
]
}
---
ReserveAction: The Booking Agent Interface
This is the field that enables autonomous booking. Without it, an AI agent can recommend your service but can't initiate a booking. With it, an agent can take a user from query to confirmed appointment without leaving the conversation.
"potentialAction": {
"@type": "ReserveAction",
"name": "Book a Massage",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://restorewellness.com/book?service=deep-tissue&duration=60",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/MobileWebPlatform",
"http://schema.org/IOSPlatform",
"http://schema.org/AndroidPlatform"
]
},
"object": {
"@type": "LodgingReservation",
"description": "60-minute deep tissue massage appointment"
},
"result": {
"@type": "Reservation",
"name": "Massage Appointment Confirmation"
}
}
Add this as a potentialAction on your LocalBusiness or Service schema block.
Scheduling platform integrations:
If you use Calendly, Acuity, Square Appointments, or similar:
"urlTemplate": "https://calendly.com/yourname/60min-massage"
If you use Jane App (health practitioners):
"urlTemplate": "https://yourpractice.janeapp.com/locations/main/book"
Any bookable URL works. The agent opens it, pre-fills available information, and completes or hands off the booking to the user.
---
Service Types and Their Schema Subtypes
Different service businesses have specific Schema.org subtypes that provide more precise categorization for AI matching:
| Business Type | @type |
|---|---|
| Legal services | LegalService |
| Medical / dental | MedicalBusiness, Dentist, Physician |
| Fitness / personal training | SportsActivityLocation, ExerciseGym |
| Massage / spa | HealthAndBeautyBusiness, BeautySalon |
| Accounting / financial | FinancialService, Accountant |
| Real estate | RealEstateAgent |
| Coaching / consulting | ProfessionalService |
| Home services | HomeAndConstructionBusiness, Plumber, HVACBusiness, Electrician |
| Education / tutoring | EducationalOrganization, School |
| Automotive | AutoRepair, AutoDealer |
Using the specific subtype (e.g., Plumber) rather than just LocalBusiness puts you in the correct category in AI agent indexes ā improving match rate for category-specific queries.
---
What AI Booking Agents Look For
When an AI agent is processing a booking request, it evaluates in this order:
1. Service type match ā Does the serviceType or @type match what the user wants?
2. Location match ā Is areaServed or address in the right location?
3. Availability ā Do openingHoursSpecification days/times match the user's request?
4. Price match ā Is offers.price within the user's stated budget?
5. Quality signal ā aggregateRating.ratingValue and reviewCount
6. Bookable ā Is there a potentialAction: ReserveAction with a working URL?
Businesses that satisfy all 6 criteria get booked. Businesses that satisfy 1ā5 but lack step 6 get recommended ā and lose the booking to friction.
---
Professional Services: Lawyers, Accountants, Consultants
For professional services where the engagement is complex and can't be auto-booked, the schema goal is different: get the AI to recommend you for a consultation, then convert from there.
{
"@context": "https://schema.org",
"@type": ["LocalBusiness", "LegalService"],
"name": "Harmon DWI Defense",
"description": "DWI defense attorney in Essex County, NJ. Former prosecutor. Free consultations. 20+ years experience with first offense, refusal, CDL, and commercial vehicle cases.",
"hasOfferCatalog": {
"@type": "OfferCatalog",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Free DWI Consultation",
"description": "No-obligation case review. Discuss charges, defenses, and likely outcomes."
},
"price": "0",
"priceCurrency": "USD"
}
]
},
"potentialAction": {
"@type": "ReserveAction",
"name": "Schedule Free Consultation",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://essexdwidefense.com/contact"
}
},
"additionalProperty": [
{ "@type": "PropertyValue", "name": "Free Consultation", "value": "Yes ā call or book online, same-day availability" },
{ "@type": "PropertyValue", "name": "Emergency", "value": "24/7 for recent arrests" },
{ "@type": "PropertyValue", "name": "Best For", "value": "First offense DWI, refusal to take breathalyzer, CDL holders, multiple offenses" }
]
}
The Free Consultation in additionalProperty is the key filter. When someone says "find me a DWI lawyer with a free consultation," that field is what puts you on the shortlist.
---
Checklist: AI Booking-Ready Service Schema
@type ā specific subtype, not just LocalBusinessserviceType and descriptive description written for AI matchingareaServed with all served cities/regionsopeningHoursSpecification for all days including any emergency hoursoffers with price and availabilityadditionalProperty with: free consultation/estimate, languages, specialties, emergency availabilitypotentialAction: ReserveAction with booking URLaggregateRating with real review countā Get your injection snippet free ā
---
Related articles: