Key takeaways:

  • Schema markup is an effective way to tell Google who you are, what you do, and where you do it.
  • As a wedding photographer, schema can help Google show your website and its webpages to the right audience.
  • But coding in JSON-LD is difficult and many automated plugins offer incomplete semantic SEO.
  • That’s why you can download my pre-fabricated JSON-LD templates made for wedding photographers and their websites.

💡 About the author: Before switching careers, I was a wedding photographer for 10 years. This makes me unique positioned to understand what wedding photographers want to convey and why having visibility in Google Search is an important part of the sales funnel.

What is a schema markup template?

A template by definition is a document that you can edit and personalise. In this context, a schema markup template is a JSON file that you can open with most text editors (e.g., Notepad, TextEdit, Google Docs).

Within the JSON file are essential attributes that let you describe important information. For example, this particular set of templates will help Google understand the relationship between you as a person, the business, the Google Business Profile that is represents the business, and the many more things that make you and your business unique.

In other words, a schema markup template is a way to implement semantic relations using JSON-LD without you having to learn how to write and understand JSON-LD.

What’s included?

The DIY schema template for wedding photographers kit includes JSON files for:

  • your homepage
  • your website’s about page
  • your website’s pricing page
  • your website’s service description page
  • a blog post that features a wedding

What does each schema markup template do?

1. Homepage schema template

The homepage template will help Google connect your overall website to your business that you have already set up with a Google Business Profile.

This is its primary goal.

Beyond this, the homepage template also connects the service you provide (i.e., wedding photography) to your GBP in addition to your business hours, map location. Most important of all, the nested schema tells Google you are the owner of the business.

2. About page schema template

💡 If you only mark up one page on your website with schema, it should be your about page.

In summary, the homepage template connects WebPage schema, WebSite schema, LocalBusiness schema and Person schema together to form a knowledge graph.

The about page template is all about you as a person. That is, your relationship as the owner of the business and website and what makes you qualified as a wedding photographer.

At the same time, the about page template describes your business in the most detail. That is, your overall rating, reviews you have gotten from past customers, its hours of operation, and the price range of your wedding photography as a service.

But ultimately, because your business is based on you, the about page schema markup is all about you and all the attributes serve to disambiguate you from another person with the same name.

3. Pricing page schema template

💡 If you do not have a pricing page or do not disclose your pricing publicly, you may ignore this template.

The pricing page template communicates one thing and one thing only – the price of your service.

You will find two pricing templates.

  • One is for those of you who have one standard starting from price.
  • The other is for those of you who have multiple packages at varying price points.

You may notice that the about page and pricing page both share the makesOffer attribute.

This is by design and the two do not cause conflict or confusion for Googlebot.

However, what’s different between these two page templates is that the about page is about Person schema whereas the main entity on the pricing page is the Offer schema.

4. Service + primary location page schema template

💡 If your homepage serves this function, you may ignore this template.

The service + primary location JSON file connects two things primarily: your business entity and the geographical region it serves.

For example, many wedding photographers will target nearby cities, each with a targeted landing page:

  • ../los-angeles-wedding-photographer/
  • ../san-diego-wedding-photographer/
  • ../san-jose-wedding-photographer/
  • ../moreno-valley-wedding-photographer/

While I do not recommend this tactic this template will help Google understand your target audience per service landing page.

5. Blog post schema template

Most wedding photographer showcase individual weddings per blog post and the blog post schema template helps align the primary target keyword with the blog post.

For example, keywords such as:

  • Evanelle Vineyards wedding
  • Springville Ranch wedding
  • Tuscan Gardens Venue wedding
  • The Pines Resort wedding

In addition to this, the blog post schema template will let you specific one feature image so that it has a better chance at showing up on Google image search.

What does the JSON file look like?

When you open a JSON file in Visual Studio Code, it may look like gibberish if you’ve never coded before.

Don’t stress. This is exactly how it should look like.

What you’re seeing are lines of code (JSON-LD).

The text in blue are attributes – think of these as ways to describe something. And since these are templates, attributes have been pre-determined for you to fill out.

This leads you to the text in orange – text in orange are values. They’re the fields that let you describe things on your website and webpage.

Again, you will find some pre-populated text in orange.

However, and this is where you come in, you will come across many empty values in orange. They’re easy to spot because they look like a pair of quotation marks.

And right next to many of these empty values, you will find green text.

The text in green are comments, hints and instructions on what you should be putting in between the orange quotation marks.

How do I use the templates?

First of all, you will need to download them from my Gumroad account.

You may nominate a price if you’re feeling generous, otherwise, you can get the entire set of schema templates for free.

Next, you’ll want to download Visual Studio Code and install it on your computer.

Once you’ve follow these 2 steps, you can open any of the 5 JSON files with VS Code.

Read this section again to familiarise yourself with what the colour coordination means.

Then start filling the empty orange files out.

For example, for the homepage template, the first thing you will be prompted to describe is the URL of the page.

{
    "@context":"https://schema.org",
    "@type":"webPage",
    "url":"",

And this is what you’d do:

{
    "@context":"https://schema.org",
    "@type":"webPage",
    "url":"https://www.danielkcheung.com",

Next, you’ll be asked to fill out the “@id” property.

{
    "@context":"https://schema.org",
    "@type":"webPage",
    "url":"https://www.danielkcheung.com",
    "@id":"#webpage",

And this is what you’ll do:

{
    "@context":"https://schema.org",
    "@type":"webPage",
    "url":"https://www.danielkcheung.com",
    "@id":"https://www.danielkcheung.com/#webpage",

The green text should give you enough information to help you understand what you should be putting into each field.

Once you have filled out a template, copy and paste the entire document into https://validator.schema.org/ and https://search.google.com/test/rich-results to make sure there are no errors in the syntax.

Now you’re ready to add the script to its corresponding page on your website.

That is:

  • the homepage template JSON-LD should be added to your homepage
  • the about page template JSON-LD should be added to your website’s about page etc.

Please note: If you have Yoast, AISEO, or Rankmath installed, you will need to remove the existing schema generation from your website or you will introduce errors.

Frequently Asked Questions

Yes, there is a Service schema type provided by Schema.org that will allow Google to understand the type of service you offer as a wedding photographer.

There is also a product ontology that you can use by adding the additionalType item property.

This is how I’ve described the service in the template:

"@type":"Service",
"@id":"#service",
"additionalType":"http://www.productontology.org/doc/Wedding_photography",
"name":"wedding photography",
"serviceType":"wedding photography"
"serviceOutput":{
   "@type":"thing",
   "name":"JPEG",
   "@id":"https://www.wikidata.org/wiki/Q2195"
}

From Googlebot’s perspective, the JSON-LD describes a service related to “wedding photography.” Googlebot recognises the service’s name, additional type, and service type. It also understands that the service produces an output in the JPEG format, with the provided URL serving as a reference or identifier for that format.

This will depend on the CMS/platform your website is built on but most website builders and platforms will give you the ability to insert code in the head of any webpage, either natively as a setting or with the addition of a plugin.

Here are some resources I found:

No. Almost all text editors can open the .json file.

However, I recommend you download and install Visual Studio Code (commonly referred to as VS Code).

It is a free app that is conveniently available on both OS X and Windows and I use it to write JSON-LD from scratch as well as to edit existing schema markup.

And this is what a JSON template file looks like when you open it with Visual Studio Code.

👉🏼 Download VS Code

No. You do not need to markup any page you don’t want to.

But if you want to get the most out of semantic SEO, completing all the relevant fields for your homepage, about page, pricing page, service page, and multiple blog posts will put you in a better position.

Not every page on your website needs to be marked up. Similarly, not every single element on your webpages must be described in full detail with structured data markup.

While your contact page is important for capturing leads, it doesn’t need structured data from a semantic search perspective. This is because your Google Business Profile and your map location and your reviews have already been incorporated as nested schema in other page templates.

For these reasons, the templates cover the most important webpages for the majority of wedding photographers.

This may seem counterintuitive but not every image is important from Google’s perspective.

The goal of these templates is to establish a strong relationship between:

  • you as a person
  • who is the owner of a business that offers a professional service called wedding photography; and
  • how this relates to the contents of your website.

While you can, in theory, mark up every single image, doing so will not improve your image SEO.

Reviews establish your credibility and reputation as a service provider.

For this reason, I have nested review schema within localBusiness and Organization schema using the makesOffer item property to connect the two.

This is not to generate review rich results, but rather, to help Google collect different information and make sense of it in the context of who you are, what your business is, what it does, and why it should promote your website and its webpages for people who are looking for a wedding photographer.

This template kit does not cover this type of content/purpose.

You can either create one yourself or reach out to me to create a bespoke template for you. But given my minimum day rate, you may as well have me build out your semantic SEO for your entire website end-to-end.

Yes!

These templates have been developed with the assumption that your wedding photography business has a Google Business Profile (previously known as Google My Business).

The templates reference the GBP so that Google can validate the claims you will be making in the schema markup.

Therefore, if you do not have a Google Business Profile, these templates will not give you the best results from a semantic search point of view. And having a GBP will let you fully leverage localBusiness schema.

"publisher":{
            "@type":["Organization","LocalBusiness"],
            "name":"",
            "@id":"#organization",
            "url":"",
            "sameAs":[
                "",
                "",
                "",
                ""
            ],
            "address":{
                "@type":"PostalAddress",
                "addressLocality":"",
                "addressRegion":"",
                "postalCode":"",
                "streetAddress":""
            },
            "hasMap":"",
            "areaServed":{
                "@type":"Country",
                "name":""
            },

PS – you should have a GBP for your wedding photography business! Even if you don’t have a physical HQ you want shared publicly.

Aha! You’re not wrong.

There is a lot of repetition of the same schema types. This is because Google will not crawl a URI referenced on a different URL (for time and money reasons).

But one thing that differentiates the JSON-LD you’ll find in these templates compared to other solutions is that the schema types are all connected with each other.

And this is why there is a lot of repetition of code so that concepts and descriptions are inter-connected with each other on each webpage.

You absolutely may.

To do this, simply delete everything between and inclusive of the “//” and “//”.