XooCode(){

DeliveryEvent

DeliveryEvent is an Event subtype for package deliveries, order pickups, and shipping milestones. It has 4 properties of its own: accessCode (PIN or locker code), availableFrom (when the item is ready for pickup), availableThrough (last pickup date), and hasDeliveryMethod (how the item is delivered). Unlike most Event subtypes, DeliveryEvent is not a public gathering; it represents a logistics event tied to an order.

The type hierarchy is Thing → Event → DeliveryEvent. DeliveryEvent is typically embedded inside an Order or referenced from a Product purchase flow rather than listed on an events page. Google does not display a rich result for DeliveryEvent, but the structured data feeds order tracking and shipping status in Gmail and Google Shopping.

Full example of schema.org/DeliveryEvent json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/DeliveryEvent
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@id": "https://xoocode.com/orders/XOO-2026-4821/delivery#event",
  "@type": "DeliveryEvent",
  "name": "XooTee Classic order ready for pickup",
  "description": "Your XooTee Classic order is ready for in-store pickup at Xoo Code Shop Dunmore.",
  "hasDeliveryMethod": "https://schema.org/OnSitePickup",
  "accessCode": "4821-XOOTEE",
  "availableFrom": "2026-07-20T10:00:00-04:00",
  "availableThrough": "2026-07-27T18:00:00-04:00",
  "startDate": "2026-07-20T10:00:00-04:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@id": "https://xoocode.com/shop/dunmore-1290",
    "@type": "LocalBusiness",
    "name": "Xoo Code Shop Dunmore",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "355 Eagle Butte Ave",
      "addressLocality": "Dunmore",
      "addressRegion": "AB",
      "postalCode": "T1B 0K2",
      "addressCountry": "CA"
    }
  },
  "organizer": {
    "@id": "https://xoocode.com#organization",
    "@type": "Organization",
    "name": "Xoo Code Inc."
  }
}
</script>

hasDeliveryMethod

hasDeliveryMethod takes a DeliveryMethod enum value: LockerDelivery, OnSitePickup, or ParcelService. Use the full schema.org URL (https://schema.org/OnSitePickup). For specific carriers (DHL, FedEx, UPS), GoodRelations vocabulary values are commonly used but not part of the core schema.org enum.

accessCode

accessCode is a text string for the password, PIN, or locker code needed to collect the delivery. This is relevant for locker deliveries (Amazon Locker, InPost, parcel lockers) where the recipient needs a code to open the compartment. Do not include real access codes in publicly visible markup. Use this property in email confirmations or account pages, not on public product pages.

availableFrom and availableThrough

availableFrom is when the item is ready for pickup. availableThrough is the deadline after which the item will be returned to the sender or moved to a different location. Both take ISO 8601 DateTime values. For home delivery via ParcelService, these properties are less relevant since the carrier delivers to the door rather than holding the package at a pickup point.

DeliveryEvent vs Order

A DeliveryEvent is one step in the fulfillment process. An Order (schema.org/Order) describes the entire purchase. The Order's orderDelivery property links to a ParcelDelivery, which in turn can reference a DeliveryEvent for status milestones. For most ecommerce implementations, you will use Order and ParcelDelivery rather than standalone DeliveryEvent.

Minimal valid version

The smallest markup that still produces a valid DeliveryEvent entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/DeliveryEvent (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "DeliveryEvent",
  "name": "XooTee Classic order ready for pickup",
  "hasDeliveryMethod": "https://schema.org/OnSitePickup",
  "availableFrom": "2026-07-20T10:00:00-04:00",
  "availableThrough": "2026-07-27T18:00:00-04:00",
  "startDate": "2026-07-20T10:00:00-04:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": { "@type": "Place", "name": "Xoo Code Shop Dunmore", "address": { "@type": "PostalAddress", "streetAddress": "355 Eagle Butte Ave", "addressLocality": "Dunmore", "addressRegion": "AB", "addressCountry": "CA" } },
  "description": "Order ready for in-store pickup."
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

Common DeliveryEvent mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    hasDeliveryMethod as a plain string

    Wrong
    "hasDeliveryMethod": "In-store pickup"
    Right
    "hasDeliveryMethod": "https://schema.org/OnSitePickup"

    hasDeliveryMethod expects a DeliveryMethod enum value as a full schema.org URL. The three values are OnSitePickup, LockerDelivery, and ParcelService. Plain text descriptions are not machine-parseable.

  2. 02

    accessCode on a public product page

    Wrong
    DeliveryEvent with accessCode visible in publicly indexed markup
    Right
    Use accessCode only in order confirmation emails or authenticated account pages

    accessCode is a PIN or locker code. Putting it in publicly crawlable markup exposes it to anyone who views the page source. Restrict DeliveryEvent markup with accessCode to authenticated contexts (email, logged-in order pages).

  3. 03

    Missing availableThrough on a pickup

    Wrong
    DeliveryEvent with availableFrom but no availableThrough
    Right
    "availableFrom": "2026-07-20T10:00:00-04:00",
    "availableThrough": "2026-07-27T18:00:00-04:00"

    Most pickup locations hold packages for a limited time. Without availableThrough, there is no machine-readable deadline. The recipient (or an automated system reading the markup) has no way to know when the pickup window closes.

About the example data

A XooTee Classic order is ready for pickup at the Xoo Code Shop Dunmore. The customer picks up in-store with an access code.

Comments

Loading comments...

Leave a comment