1

I am testing schema.org Json-ld markup for email using self mailing as mentioned, This is the sample schema I'm using along with html content sent in mail. I'm sending mail using gmail smtp, and opened the gmail client.

 <script type="application/ld+json">
{
  "type" : "LodgingReservation",
  "checkinTime" : "2025-24-01T15:00:00Z",
  "checkoutTime" : "2025-24-05T11:00:00Z",
  "potentialAction" : {
    "type" : "ReserveAction",
    "name" : "Add to calender",
    "target" : "https://calendar.google.com"
  },
  "reservationFor" : {
    "type" : "LodgingBusiness",
    "address" : {
      "type" : "PostalAddress",
      "addressCountry" : "Sample Country",
      "addressLocality" : "Sample City",
      "addressRegion" : "Sample State",
      "postalCode" : "12345",
      "streetAddress" : "123 Sample Street"
    },
    "name" : "Sample Hotel Chain",
    "telephone" : "+1234567890"
  },
  "reservationId" : "123456789",
  "reservationStatus" : "http://schema.org/ReservationConfirmed",
  "underName" : {
    "type" : "Person",
    "name" : "John Doe"
  },
  "@context" : "http://schema.org"
}
</script>

I want this reservation to be added to my calendar, either with a pop up to add or auto addition.

I have done self-mailing, validated schema using validator, I have checked similar question but there is no solution for checking in self-mailing to test.

I have tried adding potential actions and removing them. I also tried it in microdata format too, but no result. I have tried the version of schema mentioned in Google and validated it in google schema validator, but still no result.

A similar result in node.js Nodemailer too.

2 Answers 2

1

I Assume you are sending mail via a smtp client of your language programatically, I think the problem is for the mail client to process jsonld, the would require mail with DKIM or SPF authentication even for self-testing. Normally the mail sent from even gmail to gmail would ignore those headers. I suggest you send mail from register domain, which would have those authentication or send it from google testing tool AppScript

2
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Feb 21 at 8:22
  • Your explanation about DKIM/SPF authentication is correct—self-sent Gmail emails often ignore structured data unless sent from an authenticated domain. However, for testing, Google provides an Email Markup Tester and Google Apps Script as alternatives. Including these options would make the answer more useful for users who are trying to validate schema markup in self-mails. Thanks for the response!
    – Natan Cox
    Commented Feb 21 at 8:23
1

Email Markup for Hotel Reservation

I ran your markup code through the Google schema validator and it identified a few errors:

checkinDate:missing and requiredShow

checkoutDate:missing and required

reservationNumber:missing and required

NOTE: Take note that these errors are required properties on your markup.


I updated your markup code to include the necessary properties as specified in the Hotel Reservation documentation.

Below is the corrected markup that you can use for testing:

 <script type="application/ld+json">
{
  "@context" : "https://schema.org",
  "@type" : "LodgingReservation",
  "reservationNumber" : "123456789",
  "reservationStatus" : "http://schema.org/ReservationConfirmed",
  "underName" : {
    "@type" : "Person",
    "name" : "John Doe"
  },
  "potentialAction" : {
    "@type" : "ReserveAction",
    "target" : "https://calendar.google.com",
    "name" : "Add to calendar"
    },
    
   "reservationFor" : {
    "@type" : "LodgingBusiness",
    "name" : "Sample Hotel Chain",
    "address" : {
      "@type" : "PostalAddress",
      "streetAddress" : "123 Sample Street",
      "addressLocality" : "Sample City",
      "addressRegion" : "Sample State",
      "postalCode" : "12345",
      "addressCountry" : "Sample Country"
    },
    "telephone" : "123-456-7890"
  },
  "checkinDate" : "2025-01-24T15:00:00Z",
  "checkoutDate" : "2025-05-24T11:00:00Z"
}
</script>
2
  • Feel free to add a comment if you have any questions.
    – Gyul
    Commented Jan 28 at 17:05
  • I have checked all of it. I ran through many possible combinations of schemas, even those mentioned on Google's website as samples, and I have validated one with Google Validator and another with schema.org. It is not the problem with schema validation, I have just posted one sample of it. Commented Feb 21 at 5:55

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.