Tele-Dermatology Stack
Tele-dermatology pages with MedicalClinic + Service + WebApplication context, FAQs, and breadcrumbs.
When to use this stack
- Tele-dermatology appointment pages
- Virtual skin consult booking flows
- Clinic pages describing online dermatology services
What is included
Anchors the clinic providing dermatology services.
Describes the tele-dermatology service offering.
Defines the telehealth visit or intake application.
Answers eligibility, image upload, and follow-up questions.
Provides navigation context for the tele-derm page.
Properties across the bundle
Nested properties keep their parent path, such as offers.priceCurrency. Only publish values that match visible page content.
Required properties
- address.addressLocality
- address.addressRegion
- address.streetAddress
- applicationCategory
- areaServed.name
- itemListElement[].name
- mainEntity[].@type=Question
- mainEntity[].acceptedAnswer.text
- name
- operatingSystem
- provider.@id
- serviceType
- url
Recommended properties
- description
- image
- itemListElement[].item
- mainEntity[].acceptedAnswer.text
- mainEntity[].author.name
- mainEntity[].name
- medicalSpecialty
- offers.price
- offers.priceCurrency
- offers.url
- softwareVersion
- telephone
Combined JSON-LD
Paste this as one script tag, then replace every example value with data from the live page.
[
{
"@context": "https://schema.org",
"@type": "MedicalClinic",
"@id": "https://www.example.com/clinics/tele-derm#clinic",
"name": "Northwind Dermatology",
"url": "https://www.example.com/clinics/tele-derm",
"telephone": "+1-512-555-0179",
"image": "https://www.example.com/images/tele-derm.webp",
"address": {
"@type": "PostalAddress",
"streetAddress": "700 Medical Plaza",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
},
"medicalSpecialty": "Dermatology"
},
{
"@context": "https://schema.org",
"@type": "Service",
"@id": "https://www.example.com/clinics/tele-derm#service",
"name": "Tele-Dermatology Consultation",
"serviceType": "Telemedicine",
"description": "Virtual dermatology visits for acne, rashes, and skin concerns.",
"provider": { "@id": "https://www.example.com/clinics/tele-derm#clinic" },
"areaServed": { "@type": "AdministrativeArea", "name": "Texas" },
"offers": {
"@type": "Offer",
"price": "85.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
},
{
"@context": "https://schema.org",
"@type": "WebApplication",
"@id": "https://www.example.com/clinics/tele-derm/visit#app",
"name": "Tele-Derm Visit Portal",
"description": "Submit photos and schedule a virtual dermatology visit.",
"applicationCategory": "HealthApplication",
"operatingSystem": "Any",
"url": "https://www.example.com/clinics/tele-derm/visit"
},
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do I need to upload photos?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Clear photos help the dermatologist review your case before the visit."
}
},
{
"@type": "Question",
"name": "How soon will I get a response?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Most responses are provided within 24–48 hours after your visit."
}
},
{
"@type": "Question",
"name": "Do you accept insurance?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Insurance coverage varies; verify benefits during booking."
}
}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
{ "@type": "ListItem", "position": 2, "name": "Clinics", "item": "https://www.example.com/clinics" },
{ "@type": "ListItem", "position": 3, "name": "Tele-Dermatology", "item": "https://www.example.com/clinics/tele-derm" }
]
}
]Implement and verify
- 01
Start with the live page
Confirm titles, prices, availability, policies, and visible FAQ content before generating markup.
- 02
Add one JSON-LD script
Use the combined example as a template in the document head or before the closing body tag.
- 03
Complete regional details
Fill shipping destinations and timing for every region the page actually serves.
- 04
Link the return policy
Use a stable MerchantReturnPolicy URL and keep its terms synchronized with the page.
- 05
Match visible answers
Add only FAQs that users can read on the same page, with identical answers.
- 06
Validate after changes
Run Rich Results Test after implementation and whenever price, availability, or policy data changes.
Common errors and fixes
- Missing currency or availability
Use ISO currency codes and complete schema.org availability URLs in Offer data.
- Incomplete shipping details
Include shippingDestination.addressCountry and deliveryTime.transitTime with units.
- Return policy is not connected
Reference MerchantReturnPolicy from the Offer and provide a stable public policy URL.
- FAQ answers differ from the page
Keep structured FAQ answers identical to visible answers.
Stack FAQs
Should I include in-person options?
If you offer in-person visits, link to them on the page and keep telehealth details distinct.
How do I handle prescription follow-ups?
Explain follow-up timelines in page copy and mirror them in FAQ answers.