Skip to content

Schema markup for dog trainers

Dog trainer schema markup, with an example

Use LocalBusiness with an offer catalog of your classes and one-to-one sessions, knowsAbout for what you teach and how, and your next course start dates as events. Say where training happens, whether that's a hired hall or owners' homes, with location and areaServed.

The type to use

LocalBusiness

schema.org has no trainer type, and Course or Event describe a class rather than the business running it. Use LocalBusiness for the business, with courses and dates inside or alongside it.

LocalBusiness on schema.org

What to include

The properties that matter for dog trainers

Most important first. Fill in what's true for you and leave out the rest; every value must also be on the page.

hasOfferCatalog
Puppy course, adolescent class, recall workshop and one-to-one sessions as separate offers, each with ages, length and price in its name or description.
event
Your next course starts, each an Event with its first and last session dates, the venue as location and the price. Take them out once they've finished.
knowsAbout
What you teach and how: “puppy socialisation”, “loose-lead walking”, “reward-based training”. It mirrors your page; it isn't a certificate.
areaServed
The towns you'll visit for one-to-one sessions at home, which is a different list from where classes run.
address
Your business address or, if you train from home, just the locality and postcode district. The class venue belongs in each event.
hasCredential
A dog-training qualification you hold, under its full name. Membership of an association is memberOf, not a credential.
telephone
The number owners ring when a puppy course is full and they want the next one.
sameAs
Your Facebook page, where class dates and photos of graduates go up first.

Example

Copy, then make it yours

This is the markup for a made-up business. Replace every value with your own before you use it.

  1. Change every name, address, number and link to your own, and delete lines that don't apply.
  2. Paste it into your site's header code (website builders call it “code injection” or “custom code”), or let ServiceCited add it for you.
  3. Check it with Google's Rich Results Test or the Schema Markup Validator.

LocalBusiness JSON-LD

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Roath Park Dog Training",
  "description": "Reward-based puppy courses, adolescent classes and one-to-one training in Cardiff.",
  "url": "https://www.example.com/",
  "image": "https://www.example.com/images/puppy-class.jpg",
  "telephone": "+44 1632 960473",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Cardiff",
    "postalCode": "CF23",
    "addressCountry": "GB"
  },
  "areaServed": [
    {
      "@type": "City",
      "name": "Cardiff"
    },
    {
      "@type": "Place",
      "name": "Penarth"
    },
    {
      "@type": "Place",
      "name": "Caerphilly"
    }
  ],
  "knowsAbout": [
    "Puppy socialisation",
    "Loose-lead walking",
    "Recall",
    "Reward-based training"
  ],
  "hasCredential": {
    "@type": "EducationalOccupationalCredential",
    "name": "Level 3 Certificate in Dog Training",
    "credentialCategory": "Qualification"
  },
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Classes and training",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Puppy course, ages 10 to 20 weeks, six weekly sessions"
        },
        "price": 120,
        "priceCurrency": "GBP"
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Adolescent dog class, six weeks"
        },
        "price": 120,
        "priceCurrency": "GBP"
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Recall workshop, 2 hours"
        },
        "price": 45,
        "priceCurrency": "GBP"
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "One-to-one session at your home, 1 hour"
        },
        "price": 65,
        "priceCurrency": "GBP"
      }
    ]
  },
  "event": [
    {
      "@type": "Event",
      "name": "Puppy course, six Thursday evenings",
      "startDate": "2026-11-12T18:30:00+00:00",
      "endDate": "2026-12-17T19:15:00+00:00",
      "location": {
        "@type": "Place",
        "name": "Roath Community Hall",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "Albany Road",
          "addressLocality": "Cardiff",
          "postalCode": "CF24 3RT",
          "addressCountry": "GB"
        }
      },
      "offers": {
        "@type": "Offer",
        "price": 120,
        "priceCurrency": "GBP",
        "url": "https://www.example.com/puppy-course"
      }
    }
  ],
  "sameAs": [
    "https://www.facebook.com/example"
  ]
}
</script>

Watch out

Mistakes dog trainers make with markup

  • Course as the business type

    Course describes one course: a set of sessions with a syllabus. As the type for your whole business it drops your area, phone and prices; use LocalBusiness and list the courses inside it.

  • Last spring's courses still in the code

    Events whose dates have passed tell search engines and assistants your next puppy course already happened. Replace them when a new intake opens, or remove them.

  • Promises in the description

    A description lifted from an advert (“fixes any behaviour problem”) is repeated by assistants as if it were fact. Describe what you teach and how, as your class pages do.

Also worth adding

  • Course: For an online course owners work through at home, Course markup on that course's own page can describe it and name you as the provider.

FAQ

Dog trainers: markup questions

Type to search these questions, or ask anything about getting found on Google and AI.

Classes are in a hired hall. Whose address goes in the block?

Yours, or your locality if you work from home. The hall goes in each Event's location, so owners see where the course runs without the hall looking like your business.

I'm a member of a training association. Where does that go?

In memberOf, as an Organization with the association's name and website, and only while your membership is current. Write it on the page as text too, not just as a logo.

Do puppy classes need age limits in the markup?

Put them in the offer's name or description, such as “for puppies aged 10 to 20 weeks”, matching the class page. Owners and assistants use the age range to work out whether a puppy can join yet.

Be the first name owners find.

Run the free check, then press Optimize. Then back to the dogs.