Structured data has a reputation as a checkbox exercise, mostly because it is usually implemented as one. A plugin emits fourteen node types, none of them says anything a machine did not already know, and nothing improves.
The point is the facts, not the markup
Schema is a way of stating things unambiguously. If the statement is empty, the markup is empty. An Organization node carrying a name and a logo tells a retrieval system almost nothing. The same node carrying service area, price range, the services offered and what the company knows about is a set of claims that can actually be matched against a question.
The short list
- 01Organization, or LocalBusiness where there is a physical premises. Include address, service area, contact points, founding date and the topics you actually work in.
- 02Service, one per offering, with a plain description and the provider linked back to the organization by id.
- 03FAQPage, but only where the questions and answers are visible on the page. Marking up content a human cannot see is a violation and a risk.
- 04BreadcrumbList, which is cheap and helps establish site structure.
- 05Article or BlogPosting on editorial content, with a real author and honest dates.
What to skip
Review and AggregateRating markup on your own pages invites trouble and is widely ignored where self-serving. Deeply nested product markup on a service site rarely matches reality. Anything describing content that is not on the page is a liability, not an asset.
And check it against what you say elsewhere
The value of structured data collapses if it contradicts your other sources. If schema says one service area and your business profile says another, you have not clarified anything, you have added a third opinion. Reconcile first, then mark up.