Related
I've been working on google email markup for few weeks now. I've submitted it for review. The google review team replied that the mark up is missing highlight in it. About the markup, the email is about Schedule confirmation which gets sent to the patient from hospital. The email contains schedule date, time, doctor name and hospital name. I've used Event Reservation JSON/LD. The markup testing tool shows everything is correct. There is no mention of highlight on the following link
Event Reservation Reference
Here is the JSON/LD for reference
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "12345",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "John Doe"
},
"reservationFor": {
"#type": "Event",
"name": "Schedule Appointment",
"performer": {
"#type": "Person",
"name": "Jane Doe",
"image": "www.mysite.com"
},
"startDate": "2020-08-21T10:00+05:30",
"location": {
"#type": "Place",
"name": "Viman Nagar",
"address": {
"#type": "PostalAddress",
"streetAddress": "Viman Nagar",
"addressLocality": "Viman Nagar",
"addressRegion": "Viman Nagar",
"postalCode": "Viman Nagar",
"addressCountry": "Viman Nagar"
}
}
},
"modifiedTime":"2020-08-21T10:00:00+05:30",
"modifyReservationUrl":"www.mysite.com"
}
The above JSON/LD does not show any error on mark up test tool. I've entered every mandatory and suggested data in the JSON. How to specify highlight in it? I could not find any reference to highlight in the above mentioned link.
I'm also attaching the screenshot of the email I received during testing on Google App Script.
You have invalid Date format in the your startDate property. Please find the corrected JSON below:
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "12345",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "John Doe"
},
"reservationFor": {
"#type": "Event",
"name": "Schedule Appointment",
"performer": {
"#type": "Person",
"name": "Jane Doe",
"image": "www.mysite.com"
},
"startDate": "2020-08-21T10:00:00+05:30",
"location": {
"#type": "Place",
"name": "Viman Nagar",
"address": {
"#type": "PostalAddress",
"streetAddress": "Viman Nagar",
"addressLocality": "Viman Nagar",
"addressRegion": "Viman Nagar",
"postalCode": "Viman Nagar",
"addressCountry": "Viman Nagar"
}
}
},
"modifiedTime":"2020-08-21T10:00:00+05:30",
"modifyReservationUrl":"www.mysite.com"
}
We recently implemented the Rental car Mail Markup. For this we implemented the pickup and dropoff time as ISO dates as shown in the documentation. Nevertheless it appeared to us that the timezones of our dates has been ignored and thus we removed the timezone and add the date in local time of the pickup destination. Now we still get reports that in some occasions our date is interpreted as being UTC+0 and then displayed with a wrong time. What is the right way to put in the date so that it will be correctly displayed in google mail?
Thanks in advance
Our Mail includes this snippet
{
"#context": "http://schema.org",
"#type": "RentalCarReservation",
"reservationNumber": "K0523X3368",
"reservationStatus": "http://schema.org/Pending",
"url": "...",
"underName": {
"#type": "Person",
"name": "....",
"email": "..."
},
"programMembership": {
"#type": "ProgramMembership",
"memberNumber": ...,
"program": "..."
},
"bookingAgent": {
"#type": "Organization",
"name": "...",
"url": "..."
},
"reservationFor": {
"#type": "RentalCar",
"name": "FIAT PANDA",
"model": "MBMR",
"brand": {
"#type": "Brand",
"name": "FIAT PANDA"
},
"description": "FIAT PANDA",
"rentalCompany": {
"#type": "Organization",
"name": "Hiper Rentacar"
}
},
"pickupLocation": {
"#type": "Place",
"name": "Palma de Mallorca Airport",
"address": {
"#type": "PostalAddress",
"streetAddress": "Palma de Mallorca Airport",
"addressLocality": "Palma",
"postalCode": "07611",
"addressRegion": "ES",
"addressCountry": "ES"
}
},
"pickupTime": "2019-02-13T14:00:00.000+00:00",
"dropoffLocation": {
"#type": "Place",
"name": "Palma de Mallorca Airport",
"address": {
"#type": "PostalAddress",
"streetAddress": "Palma de Mallorca Airport",
"addressLocality": "Palma",
"postalCode": "07611",
"addressRegion": "ES",
"addressCountry": "ES"
}
},
"dropoffTime": "2019-02-14T08:00:00.000+00:00",
"cancelReservationUrl": "...",
"modifyReservationUrl": "...",
"potentialAction": [
{
"#type": "EditAction",
"target": "..."
}
],
"price": 16.91,
"priceCurrency": "EUR",
"modifiedTime": "2018-05-23T09:20:32.861Z"
}
the resulting card looks like that
mail card
All dates are shown in UTC although my machine is currently located in Germany and the rentlocation is in Spain (both CEST)
I'm trying to implement the Order schema as presented on : https://developers.google.com/gmail/markup/reference/order
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Order",
"merchant": {
"#type": "Organization",
"name": "Test Ltd."
},
"orderNumber": "56d59b633427b",
"orderStatus": "http://schema.org/PaymentComplete",
"acceptedOffer": {
"#type": "Offer",
"itemOffered": {
"#type": "Product",
"name": "Test Products"
},
"price": "41.09",
"priceCurrency": "USD",
"eligibleQuantity": {
"#type": "QuantitativeValue",
"value": "1"
},
"url": "http://project1.local/account/tickets",
"potentialAction": {
"#type": "ViewAction",
"target": "http://project1.local/account/tickets"
}
}}
</script>
The issue is that the email shows like a normal email. What am I doing wrong?
Thank you!
PS: The code validates on https://developers.google.com/structured-data/testing-tool/
Try using the JSON I've posted below. PaymentComplete is not recognized, so I used OrderDelivered. You can find more info here:
https://schema.org/OrderStatus
I noticed the word "tickets" in your URL, are you intending to use the order schema for ticket confirmations? I would suggest using event reservation instead. Using this will integrate with Google Now cards and also input the event into the user's Calendar. You can still generate a action button by using url or modifyReservationurl.
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Order",
"merchant": {
"#type": "Organization",
"name": "Test Ltd."
},
"orderNumber": "56d59b633427b",
"orderStatus": "http://schema.org/OrderDelivered",
"priceCurrency": "USD",
"price": "41.00",
"acceptedOffer": {
"#type": "Offer",
"itemOffered": {
"#type": "Product",
"name": "Test Products"
},
"price": "41.00",
"priceCurrency": "USD",
"eligibleQuantity": {
"#type": "QuantitativeValue",
"value": "1"
}
},
"url": "https://project1.local/account/tickets",
"potentialAction": {
"#type": "ViewAction",
"target": "https://project1.local/account/tickets"
}
}
</script>
I want to send out an email with a schema that defines two tickets.
The documentation states:
If you want to have one ticket (i.e. barcode) per individual and have
names for each individual on the ticket, create multiple
EventReservations (one per individual) with numSeats set to 1. The
example below shows what this looks like.
Sadly this doesn't work like that. If I use this schema (no seating, numSeats set to "1"):
<script type="application/ld+json">
[
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "E123456789",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "John Smith"
},
"reservationFor": {
"#type": "Event",
"name": "Foo Fighters Concert",
"startDate": "2017-03-06T19:30:00-08:00",
"location": {
"#type": "Place",
"name": "AT&T Park",
"address": {
"#type": "PostalAddress",
"streetAddress": "24 Willie Mays Plaza",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94107",
"addressCountry": "US"
}
}
},
"numSeats": "1",
"ticketToken": "qrCode:AB34",
"ticketNumber": "abc123",
"ticketDownloadUrl": "http://..../ticket.pdf",
"ticketPrintUrl": "http://..../ticket.pdf"
},
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "E123456789",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "Eva Green"
},
"reservationFor": {
"#type": "Event",
"name": "Foo Fighters Concert",
"startDate": "2017-03-06T19:30:00-08:00",
"location": {
"#type": "Place",
"name": "AT&T Park",
"address": {
"#type": "PostalAddress",
"streetAddress": "24 Willie Mays Plaza",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94107",
"addressCountry": "US"
}
}
},
"numSeats": "1",
"ticketToken": "qrCode:AB34",
"ticketNumber": "abc456",
"ticketDownloadUrl": "http://..../ticket.pdf",
"ticketPrintUrl": "http://..../ticket.pdf"
}
]
</script>
This will result in a mail in inbox that states that this reservation only contains one Ticket.
The only way to get inbox to state that the reservation contains two tickets is by adding a venueSeat.
E.g.:
<script type="application/ld+json">
[
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "E123456789",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "John Smith"
},
"reservationFor": {
"#type": "Event",
"name": "Foo Fighters Concert",
"startDate": "2017-03-06T19:30:00-08:00",
"location": {
"#type": "Place",
"name": "AT&T Park",
"address": {
"#type": "PostalAddress",
"streetAddress": "24 Willie Mays Plaza",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94107",
"addressCountry": "US"
}
}
},
"numSeats": "1",
"venueSeat": "12",
"ticketToken": "qrCode:AB34",
"ticketNumber": "abc123",
"ticketDownloadUrl": "http://..../ticket.pdf",
"ticketPrintUrl": "http://..../ticket.pdf"
},
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "E123456789",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "Eva Green"
},
"reservationFor": {
"#type": "Event",
"name": "Foo Fighters Concert",
"startDate": "2017-03-06T19:30:00-08:00",
"location": {
"#type": "Place",
"name": "AT&T Park",
"address": {
"#type": "PostalAddress",
"streetAddress": "24 Willie Mays Plaza",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94107",
"addressCountry": "US"
}
}
},
"numSeats": "1",
"venueSeat": "13",
"ticketToken": "qrCode:AB34",
"ticketNumber": "abc456",
"ticketDownloadUrl": "http://..../ticket.pdf",
"ticketPrintUrl": "http://..../ticket.pdf"
}
]
</script>
With this script the mail in inbox will correctly state that the reservation contains two tickets and will additionally print the two seats.
But in my case we do not have reserved seats, so I can't add this parameter.
Any ideas how to solve this or any plans from google to fix this?
Bonus question:
I wasn't able to actually see the ticket. Neither the QR-Code, nor a download link to the PDF. Any ideas why that is?
Based on the documentaiton "There are two options to do multiple tickets":
The first is change numSeats. This means a single reservation will represent tickets for numSeats number of individuals. This will be the option you want since you don't have reserved seating.
I used the following schema:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "ABCD12345",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "John Smith"
},
"reservationFor": {
"#type": "MusicEvent",
"name": "Foo Fighters Concert",
"url": "http://foofighterstour.com/SFO",
"performer": {
"#type": "Person",
"name": "The Foo Fighters",
"image": "http://www.amprocktv.com/wp-content/uploads/2013/01/foo-fighters-1-680x383.jpg"
},
"startDate": "2015-05-24T12:00:00-08:00",
"endDate": "2015-05-24T16:00:00-08:00",
"doorTime": "2015-05-24T11:00:00-08:00",
"location": {
"#type": "Place",
"name": "AT&T Park",
"address": {
"#type": "PostalAddress",
"streetAddress": "AT&T Park",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94107",
"addressCountry": "US"
}
}
},
"ticketDownloadUrl": "http://www.example.pdf",
"ticketPrintUrl": "http://www.example.pdf",
"modifyreservationurl": "http://www.example.pdf",
"ticketToken": "qrCode:AB34",
"ticketNumber": "abc12345",
"numSeats": "2"
}
</script>
I was able to generate 2 tickets in Inbox, create 2 Google Now cards, generate an action button (modify reservation) in Gmail and Inbox. The modify reservation action button leads to the ticket. Note I tried just using the "URL" property, to generate the "View Ticket" action button, but noticed it disappears. I was also able to generate the QRcode as well, however, the QRcode appeared to be broken on the second Now card.
*Update - the previous card screenshots were from my iphone using Google, the cards appear different on a Android device. One of the ticket properties (ticketdownloadurl / ticketprinturl) appeared when using an Android device:
I created a quite complex schema of the EventRegistration type.
It contained two tickets, had images, contact details, etc.
But all I could get once was a Now card that only contained the title of the event, the date, the location and a action button to open the mail.
I'm wondering, if all the additional data has some error or if this is currently all that is supported. I would have loved to see Logos, contact details, a cancellation link and of course the ticket itself (=QR-Code + download link). This would have been such a nice alternative to Apple's Passbook.
What are the plans for this feature? Is this still going to be developed, is there perhaps already a rough roadmap on when to expect this?
Additionally what I was wondering about is, that the "Email Markup Tester" was complaining that the ticketToken property would be invalid for that type, even though the documentation clearly states that it is part of the EventReservation type.
FYI, here is the anonymized schema I used:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "TFXLLUS00008",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "Name 1",
"email": "...#gmail.com"
},
"bookingAgent": {
"#type": "Organization",
"name": "My company",
"description": "My company - online ticketing",
"image": "http://www.MyCompany.com/link/to/logo_1500x1500px.jpg",
"url": "http://www.MyCompany.com",
"url/googlePlus": "https://plus.google.com/+MyCompany/",
"ContactPoint": {
"#type": "ContactPoint",
"email": "support#MyCompany.com",
"telephone": "123456789"
}
},
"reservationFor": {
"#type": "Event",
"name": "Test-Event",
"startDate": "2014-04-26T20:00:00+00:00",
"endDate": "2014-04-30T18:00:00+00:00",
"description": "This is a test event for demo purposes.",
"image": "http://www.MyCompany.com/link/to/event/logo.png",
"url": "http://www.MyCompany.com/link/to/event.html",
"location": {
"#type": "Place",
"name": "Congress hall",
"address": {
"#type": "PostalAddress",
"streetAddress": "Street. 1",
"addressLocality": "City",
"addressRegion": "",
"postalCode": "12345",
"addressCountry": "DE"
}
}
},
"ticketToken": "qrCode:4641484423168988",
"ticketNumber": "1690-8587-4723",
"numSeats": "1",
"ticketDownloadUrl": "https://www.MyCompany.com/linkToTicket.pdf",
"ticketPrintUrl": "https://www.MyCompany.com/linkToTicket.pdf",
"price": "100",
"priceCurrency": "EUR",
"bookingTime": "2014-04-26T13:57:50+00:00",
"modifiedTime": "2014-04-26T13:57:50+00:00"
},
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "TFXLLUS00008",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"#type": "Person",
"name": "Name 2",
"email": "...#gmail.com"
},
"bookingAgent": {
"#type": "Organization",
"name": "My company",
"description": "My company - online ticketing",
"image": "http://www.MyCompany.com/link/to/logo_1500x1500px.jpg",
"url": "http://www.MyCompany.com",
"url/googlePlus": "https://plus.google.com/+MyCompany/",
"ContactPoint": {
"#type": "ContactPoint",
"email": "support#MyCompany.com",
"telephone": "123456789"
}
},
"reservationFor": {
"#type": "Event",
"name": "Test-Event",
"startDate": "2014-04-26T20:00:00+00:00",
"endDate": "2014-04-30T18:00:00+00:00",
"description": "This is a test event for demo purposes.",
"image": "http://www.MyCompany.com/link/to/event/logo.png",
"url": "http://www.MyCompany.com/link/to/event.html",
"location": {
"#type": "Place",
"name": "Congress hall",
"address": {
"#type": "PostalAddress",
"streetAddress": "Street. 1",
"addressLocality": "City",
"addressRegion": "",
"postalCode": "12345",
"addressCountry": "DE"
}
}
},
"ticketToken": "qrCode:4020229019819219",
"ticketNumber": "5218-3082-0382",
"numSeats": "1",
"ticketDownloadUrl": "https://www.MyCompany.com/linkToTicket.pdf",
"ticketPrintUrl": "https://www.MyCompany.com/linkToTicket.pdf",
"price": "100",
"priceCurrency": "EUR",
"bookingTime": "2014-04-26T13:57:50+00:00",
"modifiedTime": "2014-04-26T13:57:50+00:00"
}
</script>