Dữ liệu có cấu trúc loại Sự kiện (Event)

Trải nghiệm sự kiện trên Google giúp mọi người dễ dàng khám phá và tham dự các sự kiện thông qua kết quả của Google Tìm kiếm và các sản phẩm khác của Google, như Google Maps. Tính năng này mang lại nhiều lợi ích:

  • Kết quả giàu tính tương tác hơn: Sự kiện của bạn có thể đủ điều kiện xuất hiện trong trải nghiệm sự kiện trên Google kèm theo biểu trưng của bạn, phần mô tả sự kiện và nhiều nội dung khác.
  • Tăng cơ hội khám phá và chuyển đổi: Mọi người có một cách mới để tương tác với bài đăng sự kiện của bạn và nhấp vào trang web của bạn. Tìm hiểu xem Eventbrite đã làm thế nào để đạt mức tăng trường 100% về lưu lượng truy cập qua Google Tìm kiếm so với cùng kỳ năm trước.
Ví dụ về sự kiện trong kết quả tìm kiếm

Có ba cách để giúp các sự kiện của bạn đủ điều kiện xuất hiện trên Google:

  • Nếu bạn sử dụng trang web của bên thứ ba để đăng sự kiện (ví dụ: bạn đăng sự kiện lên trang web bán vé hoặc mạng xã hội), hãy kiểm tra xem trang đăng sự kiện của bạn đã tham gia trải nghiệm tìm kiếm sự kiện trên Google chưa. Nếu trang này đã tích hợp với Google từ trước, hãy tiếp tục đăng các sự kiện của bạn lên trang web của họ. Bạn có thể dừng đọc tại đây.
  • Nếu bạn sử dụng một Hệ thống quản lý nội dung (CMS) (ví dụ: WordPress) và bạn không có quyền truy cập vào HTML của mình, hãy kiểm tra với CMS của bạn để xem có trình bổ trợ nào có thể thêm dữ liệu có cấu trúc vào trang web của bạn không. Ngoài ra, bạn có thể sử dụng Công cụ đánh dấu dữ liệu để thông báo cho Google biết các sự kiện của bạn mà không cần phải chỉnh sửa HTML trên trang web của bạn.
  • Nếu bạn muốn chỉnh sửa HTML của mình, hãy dùng dữ liệu có cấu trúc để trực tiếp tích hợp với Google. Bạn sẽ phải chỉnh sửa HTML của các trang sự kiện.

Cách thêm dữ liệu có cấu trúc

Dữ liệu có cấu trúc là một định dạng chuẩn để cung cấp thông tin về một trang và phân loại nội dung trên trang. Nếu mới làm quen với dữ liệu có cấu trúc, bạn có thể tìm hiểu thêm về cách thức hoạt động của dữ liệu có cấu trúc.

Sau đây là thông tin tổng quan về cách xây dựng, kiểm tra và phát hành dữ liệu có cấu trúc. Để xem hướng dẫn từng bước về cách thêm dữ liệu có cấu trúc vào một trang web, hãy tham khảo lớp học lập trình về dữ liệu có cấu trúc.

  1. Thêm các thuộc tính bắt buộc. Tùy theo định dạng bạn đang sử dụng, hãy tìm hiểu nơi chèn dữ liệu có cấu trúc trên trang.
  2. Tuân theo các nguyên tắc.
  3. Xác thực mã của bạn bằng công cụ Kiểm tra kết quả nhiều định dạng rồi sửa mọi lỗi nghiêm trọng. Bạn cũng nên cân nhắc việc khắc phục mọi vấn đề không nghiêm trọng có thể bị gắn cờ trong công cụ này, vì những vấn đề này có thể giúp cải thiện chất lượng của dữ liệu có cấu trúc của bạn (tuy nhiên, bạn không nhất thiết thực hiện việc này để nội dung đủ điều kiện xuất hiện dưới dạng kết quả nhiều định dạng).
  4. Triển khai một vài trang có chứa dữ liệu có cấu trúc và sử dụng Công cụ kiểm tra URL để kiểm tra xem Google nhìn thấy trang đó như thế nào. Hãy đảm bảo rằng Google có thể truy cập trang của bạn và bạn không chặn trang bằng tệp robots.txt, thẻ noindex hoặc yêu cầu đăng nhập. Nếu có vẻ như trang không gặp vấn đề nào, bạn có thể yêu cầu Google thu thập lại dữ liệu các URL của mình.
  5. Để thông báo cho Google về các thay đổi sau này, bạn nên gửi một sơ đồ trang web. Bạn có thể tự động hoá quy trình này bằng Search Console Sitemap API.

Ví dụ

Sự kiện tiêu chuẩn

Sau đây là ví dụ về dữ liệu có cấu trúc Event tiêu chuẩn trong JSON-LD. Sự kiện tiêu chuẩn là các sự kiện chỉ diễn ra ở một địa điểm thực tế theo lịch. Bạn cũng có thể sử dụng cú pháp Microdata hoặc RDFa.

<html>
  <head>
    <title>The Adventures of Kira and Morrison</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "The Adventures of Kira and Morrison",
      "startDate": "2025-07-21T19:00-05:00",
      "endDate": "2025-07-21T23:00-05:00",
      "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
      "eventStatus": "https://schema.org/EventScheduled",
      "location": {
        "@type": "Place",
        "name": "Snickerpark Stadium",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "100 West Snickerpark Dr",
          "addressLocality": "Snickertown",
          "postalCode": "19019",
          "addressRegion": "PA",
          "addressCountry": "US"
        }
      },
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_202403180430",
        "price": 30,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "validFrom": "2024-05-21T12:00"
      },
      "performer": {
        "@type": "PerformingGroup",
        "name": "Kira and Morrison"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Kira and Morrison Music",
        "url": "https://kiraandmorrisonmusic.com"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Sự kiện qua mạng

Sau đây là ví dụ về một sự kiện diễn ra qua mạng.

<html>
  <head>
    <title>The Adventures of Kira and Morrison</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "The Adventures of Kira and Morrison",
      "startDate": "2025-07-21T19:00:00-05:00",
      "endDate": "2025-07-21T23:00-05:00",
      "eventStatus": "https://schema.org/EventScheduled",
      "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
      "location": {
        "@type": "VirtualLocation",
        "url": "https://operaonline.stream5.com/"
        },
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_202403180430",
        "price": 30,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "validFrom": "2024-05-21T12:00"
      },
      "performer": {
        "@type": "PerformingGroup",
        "name": "Kira and Morrison"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Kira and Morrison Music",
        "url": "https://kiraandmorrisonmusic.com"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Sự kiện kết hợp cả qua mạng và tại địa điểm thực tế

Dưới đây là ví dụ về sự kiện vừa có hoạt động diễn ra qua mạng vừa có hoạt động diễn ra tại một địa điểm thực tế.

<html>
  <head>
    <title>The Adventures of Kira and Morrison</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "The Adventures of Kira and Morrison",
      "startDate": "2025-07-21T19:00-05:00",
      "endDate": "2025-07-21T23:00-05:00",
      "eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
      "eventStatus": "https://schema.org/EventScheduled",
      "location": [{
        "@type": "VirtualLocation",
        "url": "https://operaonline.stream5.com/"
      },
      {
        "@type": "Place",
        "name": "Snickerpark Stadium",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "100 West Snickerpark Dr",
          "addressLocality": "Snickertown",
          "postalCode": "19019",
          "addressRegion": "PA",
          "addressCountry": "US"
        }
      }],
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_202403180430",
        "price": 30,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "validFrom": "2024-05-21T12:00"
      },
      "performer": {
        "@type": "PerformingGroup",
        "name": "Kira and Morrison"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Kira and Morrison Music",
        "url": "https://kiraandmorrisonmusic.com"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Sự kiện đã thay đổi trạng thái

Có nhiều cách để đặt trạng thái cho sự kiện. Dưới đây là một số ví dụ phổ biến về các sự kiện đã thay đổi trạng thái. Để biết thêm thông tin, hãy tham khảo thuộc tính eventStatus.

Đã huỷ

Dưới đây là ví dụ về một sự kiện đã bị hủy.


<html>
  <head>
    <title>The Adventures of Kira and Morrison</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "The Adventures of Kira and Morrison",
      "startDate": "2025-07-21T19:00-05:00",
      "endDate": "2025-07-21T23:00-05:00",
      "eventStatus": "https://schema.org/EventCancelled",
      "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
      "location": {
        "@type": "Place",
        "name": "Snickerpark Stadium",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "100 West Snickerpark Dr",
          "addressLocality": "Snickertown",
          "postalCode": "19019",
          "addressRegion": "PA",
          "addressCountry": "US"
        }
      },
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_202403180430",
        "price": 30,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "validFrom": "2024-05-21T12:00"
      },
      "performer": {
        "@type": "PerformingGroup",
        "name": "Kira and Morrison"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Kira and Morrison Music",
        "url": "https://kiraandmorrisonmusic.com"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Đã đổi lịch

Dưới đây là ví dụ về một sự kiện đã đổi lịch.


<html>
  <head>
    <title>The Adventures of Kira and Morrison</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "The Adventures of Kira and Morrison",
      "startDate": "2025-07-21T19:00-05:00",
      "endDate": "2025-07-21T23:00-05:00",
      "eventStatus": "https://schema.org/EventRescheduled",
      "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
      "previousStartDate": "2025-03-21T19:00-05:00",
      "location": {
        "@type": "Place",
        "name": "Snickerpark Stadium",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "100 West Snickerpark Dr",
          "addressLocality": "Snickertown",
          "postalCode": "19019",
          "addressRegion": "PA",
          "addressCountry": "US"
        }
      },
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_202403180430",
        "price": 30,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "validFrom": "2024-05-21T12:00"
      },
      "performer": {
        "@type": "PerformingGroup",
        "name": "Kira and Morrison"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Kira and Morrison Music",
        "url": "https://kiraandmorrisonmusic.com"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Đã chuyển thành sự kiện qua mạng và đổi lịch

Dưới đây là ví dụ về một sự kiện đã chuyển thành sự kiện qua mạng và đổi lịch.


<html>
  <head>
    <title>The Adventures of Kira and Morrison</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "The Adventures of Kira and Morrison",
      "startDate": "2025-07-21T19:00-05:00",
      "endDate": "2025-07-21T23:00-05:00",
      "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
      "eventStatus": [
        "https://schema.org/EventRescheduled",
        "https://schema.org/EventMovedOnline"
        ],
      "previousStartDate": "2025-03-21T19:00-05:00",
      "location": {
        "@type": "VirtualLocation",
        "url": "https://operaonline.stream5.com/"
      },
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
      "offers": {
        "@type": "Offer",
        "url": "https://www.example.com/event_offer/12345_202403180430",
        "price": 30,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "validFrom": "2024-05-21T12:00-05:00"
      },
      "performer": {
        "@type": "PerformingGroup",
        "name": "Kira and Morrison"
      },
      "organizer": {
        "@type": "Organization",
        "name": "Kira and Morrison Music",
        "url": "https://kiraandmorrisonmusic.com"
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Phạm vi cung cấp theo quốc gia và ngôn ngữ

Chúng tôi mong sẽ được cung cấp trải nghiệm tìm kiếm sự kiện trên Google cho nhiều khu vực trên thế giới hơn. Chúng tôi đang cung cấp trải nghiệm này ở những khu vực và ngôn ngữ sau:

Khu vực Ngôn ngữ hỗ trợ
Úc Tiếng Anh
Brazil Tiếng Bồ Đào Nha
Canada Tiếng Anh
Đức Tiếng Đức
Ấn Độ Tiếng Anh
Châu Mỹ La Tinh Tiếng Tây Ban Nha
Tây Ban Nha Tiếng Tây Ban Nha
Vương quốc Anh Tiếng Anh
Hoa Kỳ Tiếng Anh

Nguyên tắc

Bạn phải tuân thủ các nguyên tắc này để đủ điều kiện xuất hiện trong trải nghiệm tìm kiếm sự kiện trên Google.

Nguyên tắc kỹ thuật

  • Trang đích phải chứa các mục dữ liệu có cấu trúc trong các loại sự kiện trên schema.org.
  • Mỗi sự kiện PHẢI có một URL riêng biệt (một trang chi tiết) và mã đánh dấu trên URL đó.
  • Trải nghiệm sự kiện trên Google chỉ hỗ trợ các trang tập trung vào một sự kiện duy nhất. Bạn nên tập trung vào việc thêm thẻ đánh dấu vào các trang đăng sự kiện thay vì các trang liệt kê lịch trình hoặc nhiều sự kiện.

Nguyên tắc về nội dung

  • Mỗi sự kiện phải mô tả chính xác tên sự kiện, ngày bắt đầu và địa điểm.
  • Tránh đánh dấu sự kiện cho các mục không phải sự kiện:
    • Đừng quảng bá các sản phẩm hoặc dịch vụ không phải sự kiện, chẳng hạn như "Du lịch trọn gói: San Diego/LA, 7 đêm" dưới dạng sự kiện.
    • Đừng thêm ưu đãi giảm giá hoặc cơ hội mua hàng ngắn hạn, chẳng hạn như: "Đại nhạc hội – mua vé ngay kẻo lỡ" hoặc "Đại nhạc hội – giảm giá vé 50% cho đến thứ Bảy".
    • Đừng đánh dấu giờ làm việc là sự kiện, chẳng hạn như: "Công viên phiêu lưu mở cửa từ 8 giờ sáng đến 5 giờ chiều".
    • Đừng đánh dấu phiếu giảm giá hoặc phiếu thưởng là sự kiện, chẳng hạn như: "Giảm 5% cho đơn hàng đầu tiên".
  • Đánh dấu chính xác các sự kiện dài ngày:
    • Nếu thông tin về sự kiện hoặc vé của bạn là về một sự kiện diễn ra trong vài ngày, hãy chỉ định cả ngày bắt đầu và ngày kết thúc của sự kiện đó.
    • Nếu có một vài buổi biểu diễn khác nhau diễn ra vào các ngày khác nhau và mỗi ngày có vé riêng, hãy thêm một phần tử Event riêng cho mỗi buổi biểu diễn.

Nguyên tắc về ngày và giờ

Khi triển khai các thuộc tính startDate, endDate, va2 previousStartDate, hãy thực hiện theo những nguyên tắc về ngày và giờ sau đây.

Cách chỉ định múi giờ

Chỉ định múi giờ bằng cách nêu rõ số giờ nhanh hơn hay chậm hơn so với giờ UTC hoặc GMT. Nếu sự kiện bắt đầu lúc 7 giờ tối ngày 5 tháng 9 tại New York, thì giá trị startDate sẽ là GMT/UTC-5 theo giờ chuẩn và GMT/UTC-4 theo giờ mùa hè. Khi theo giờ chuẩn, giá trị startDate sẽ là "2019-09-05T19:00:00-05:00" hoặc "2019-09-05T19:00:00-04:00". Nếu không có thuộc tính múi giờ, Google sẽ sử dụng múi giờ của địa điểm diễn ra sự kiện như được chỉ định trong thuộc tính location. Các sự kiện qua mạng phải có thuộc tính múi giờ vì Google không thể sử dụng thông tin vị trí nào để xác định thời điểm sự kiện bắt đầu.

Các phương pháp hay nhất

  • Sự kiện diễn ra trong nhiều ngày: Nếu sự kiện diễn ra trong nhiều ngày, hãy chỉ rõ cả ngày bắt đầu và ngày kết thúc. Không chỉ rõ giờ nếu bạn không biết giờ cụ thể.

    Nên

    "startDate": "2019-07-01T10:00:00-05:00",
    "endDate": "2019-07-26T17:00:00-05:00"

    Nên

    "startDate": "2019-07-01",
    "endDate": "2019-07-26"

    Không nên

    "startDate": "2019-07-01T00:00:00+00:00",
    "endDate": "2019-07-26T23:59:59+00:00"
  • Sự kiện bắt đầu vào một giờ cụ thể: Nếu sự kiện bắt đầu vào một thời điểm cụ thể, chẳng hạn như 5 giờ chiều theo giờ địa phương, hãy sử dụng 2019-07-20T17:00:00. Nêu số giờ nhanh hơn hay chậm hơn so với giờ UTC (ví dụ: dùng 2019-07-20T17:00:00-07:00 nếu sự kiện diễn ra ở California).
  • Sự kiện kéo dài cả ngày: Nếu sự kiện diễn ra cả ngày, đừng chỉ định giờ chi tiết cho ngày bắt đầu. Ví dụ: bạn có thể sử dụng 2019-08-15 cho cả startDateendDate đối với một sự kiện kéo dài cả ngày.
  • Giờ bắt đầu sự kiện chưa xác định: Nếu không biết thời gian bắt đầu, đừng chỉ định giờ chi tiết. Ví dụ: bạn có thể sử dụng 2019-08-15 cho cả startDateendDate.

    Nên: "startDate": "2025-07-21"

    Không nên: "startDate": "2019-08-15T00:00:00+00:00"

    Không nên: "startDate": "2019-07-20T00:00:00"

Ví dụ về cách Google diễn giải ngày tháng

Sau đây là một số ví dụ về cách Google diễn giải ngày và giờ:

Diễn giải ngày và giờ
2019-08-15T00:00:00+00:00 Google diễn giải startTime2019-08-14T17:00:00-07:00 (nếu location được thiết lập thành California) hoặc 2019-08-15T09:00:00 (nếu location được thiết lập thành Hàn Quốc).
2019-08-15T23:59:59+00:00 Giá trị này không có nghĩa là cuối ngày 2019-08-15, trừ khi sự kiện xảy ra trong múi giờ GMT. Google diễn giải startTime2019-08-15T16:59:59-07:00 (nếu location được thiết lập thành California) hoặc 2019-08-16T08:59:59 (nếu location được thiết lập thành Hàn Quốc).
2019-07-10 Giá trị này chỉ ngày tháng bất kể múi giờ là gì. Khi được sử dụng trong startDate, giá trị này có nghĩa là sự kiện sẽ bắt đầu ở location vào một thời điểm nhất định trong ngày đó. Khi được sử dụng trong endDate, giá trị này có nghĩa là sự kiện sẽ kết thúc ở location vào một thời điểm nhất định trong ngày đó.
2019-07-20T00:00:00 Giá trị này chỉ mốc thời gian nửa đêm vào ngày 2019-07-20 theo múi giờ ở nơi sự kiện xảy ra. Giá trị này cũng có thể không chính xác trừ khi sự kiện này dự kiến bắt đầu lúc nửa đêm.

Định nghĩa các kiểu dữ liệu có cấu trúc

Bạn có thể xem định nghĩa đầy đủ về Event tại schema.org/Event.

Bạn phải cung cấp các thuộc tính bắt buộc để nội dung của mình đủ điều kiện xuất hiện trong phần kết quả tìm kiếm nâng cao. Bạn cũng có thể sử dụng các thuộc tính nên có để bổ sung thông tin về nội dung nhằm mang lại trải nghiệm tốt hơn cho người dùng.

Thuộc tính bắt buộc
location

Place hoặc VirtualLocation

Địa điểm diễn ra sự kiện. Các yêu cầu sẽ khác nhau tùy vào việc sự kiện diễn ra trực tuyến hay tại địa điểm thực:

  • Địa điểm thực: Nếu sự kiện dự kiến diễn ra tại một địa điểm thực, hãy đặt @type thành Place. Hãy thêm thuộc tính location.addresslocation.name.
  • Sự kiện trực tuyến: Nếu sự kiện dự kiến diễn ra qua mạng, hãy đặt @type thành VirtualLocation. Thêm thuộc tính location.url.
  • Kết hợp địa điểm thực tế và qua mạng: Nếu bạn dự định tổ chức sự kiện kết hợp cả qua mạng lẫn tại một địa điểm thực tế, hãy lồng cả thuộc tính địa điểm thực tế lẫn qua mạng vào trong mảng được lồng. Ví dụ:
    "location": [{
      "@type": "VirtualLocation",
      "url": "https://operaonline.stream5.com/"
    },
    {
      "@type": "Place",
      "name": "Snickerpark Stadium",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "100 West Snickerpark Dr",
        "addressLocality": "Snickertown",
        "postalCode": "19019",
        "addressRegion": "PA",
        "addressCountry": "US"
      }
    }]
location.address

PostalAddress

Địa chỉ chi tiết của nơi diễn ra sự kiện. Bạn chỉ phải cung cấp thuộc tính này cho các sự kiện diễn ra ở địa điểm thực tế.

Không nên: Sydney

Nên: Bennelong Point, Sydney NSW 2000, Úc

Ví dụ tại Hoa Kỳ

"location": {
  "@type": "Place",
  "name": "Snickerpark Stadium",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "100 West Snickerpark Dr",
    "addressLocality": "Snickertown",
    "postalCode": "19019",
    "addressRegion": "PA",
    "addressCountry": "US"
  }
}

Ví dụ tại Nhật Bản

Bạn có thể viết địa chỉ tại Nhật Bản theo nhiều cách và Google vẫn hiểu được địa chỉ của bạn. Sau đây là ví dụ với địa chỉ đường phố, khu vực và quốc gia trong các trường khác nhau.

"location": {
  "@type": "Place",
  "name": "ダイバーシティ東京",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "江東区青海1-10",
    "addressLocality": "東京",
    "addressCountry": "日本"
  }
}

Sau đây là ví dụ về địa chỉ đường phố và quốc gia trong các trường khác nhau.

"location": {
  "@type": "Place",
  "name": "ダイバーシティ東京",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "東京都江東区青海1-10",
    "addressCountry": "日本"
  }
}

Sau đây là ví dụ về toàn bộ địa chỉ trên một dòng.

"location": {
  "@type": "Place",
  "name": "ダイバーシティ東京",
  "address": {
    "@type": "PostalAddress",
    "name": "東京都江東区青海 1-1-10 ダイバーシティ東京プラザ"
   }
}

Các phương pháp hay nhất cho địa chỉ:

  • Nếu sự kiện diễn ra trên một số con đường, hãy xác định địa điểm bắt đầu và nêu chi tiết đầy đủ trong phần mô tả.
  • Nếu sự kiện xảy ra nhưng địa điểm chính xác là không xác định, hãy sử dụng tên thành phố hoặc địa điểm phù hợp nhất.
  • Nếu sự kiện xảy ra tại nhiều địa điểm cùng một lúc, hãy tạo các sự kiện riêng cho từng địa điểm.
location.url

URL

URL của sự kiện qua mạng để mọi người có thể tham gia. Thuộc tính này là bắt buộc nếu sự kiện của bạn diễn ra qua mạng. Nếu URL dùng để tham gia sự kiện chỉ có sau khi đăng ký sự kiện, hãy cung cấp URL đăng ký để mọi người có thể thực hiện các bước tiếp theo để tham gia sự kiện của bạn.

"location": {
  "@type": "VirtualLocation",
  "url": "https://operaonline.stream5.com/"
}
name

Text

Tiêu đề đầy đủ của sự kiện.

Không nên: Bill Graham Civic Auditorium

Không nên: **GIẢM GIÁ TRONG THỜI GIAN CÓ HẠN – Buổi biểu diễn của Kesha và Macklemore – $25**

Nên: Cuộc phiêu lưu của Kesha và Macklemore

Nên: Giao lưu và gặp gỡ Kesha và Macklemore

Các phương pháp hay nhất:

  • Không sử dụng loại sự kiện làm tên của sự kiện. Ví dụ: "Buổi hòa nhạc" không phải là tên mô tả thích hợp cho sự kiện.
  • Không bao gồm thông tin không liên quan như URL, giá hoặc người biểu diễn. Thay vào đó, hãy sử dụng các thuộc tính thích hợp cho các giá trị đó.
  • Nêu bật nét độc đáo của sự kiện trong tiêu đề. Điều này giúp người dùng quyết định nhanh hơn (ví dụ: "có phiên Hỏi đáp với nghệ sĩ ").
  • Không thêm các quảng cáo ngắn hạn (ví dụ: "mua vé ngay").
startDate

DateTime

Ngày và giờ bắt đầu của sự kiện ở định dạng ISO-8601. Thêm cả ngày và giờ để người dùng tìm được các sự kiện phù hợp với lịch trình của họ. Đối với các Sự kiện qua mạng, bạn phải chỉ định múi giờ bằng cách nêu rõ số giờ chênh lệch so với giờ UTC hoặc GMT.

"startDate": "2025-07-21T19:00"
Thuộc tính nên có
description

Text

Mô tả về sự kiện. Hãy mô tả tất cả các chi tiết của sự kiện để giúp người dùng hiểu và tham dự sự kiện dễ dàng hơn.

Các phương pháp hay nhất:

  • Thêm phần mô tả rõ ràng và ngắn gọn về sự kiện cụ thể.
  • Tập trung vào các chi tiết về sự kiện chứ không phải các tính năng trên trang web của bạn.
  • Đừng lặp lại dữ kiện khác như ngày và địa điểm. Thay vào đó, hãy thêm những thông tin đó vào các thuộc tính thích hợp.
"description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance."
endDate

DateTime

Ngày và thời gian kết thúc sự kiện sẽ ở định dạng ISO-8601. Sử dụng định dạng tương tự như startDate. Thêm cả ngày và giờ để người dùng tìm được các sự kiện phù hợp với lịch trình của họ. Đối với các Sự kiện qua mạng, bạn phải chỉ định múi giờ bằng cách nêu rõ số giờ chênh lệch so với giờ UTC hoặc GMT.

"endDate": "2025-07-21T23:00"
eventAttendanceMode

EventAttendanceModeEnumeration

Hãy nêu rõ rằng sự kiện sẽ diễn ra qua mạng, tại một địa điểm thực tế hay kết hợp cả qua mạng và tại một địa điểm thực tế. Nếu bạn không cung cấp thuộc tính này, Google sẽ hiểu rằng sự kiện có trạng thái OfflineEventAttendanceMode, nghĩa là Google sẽ cho rằng sự kiện diễn ra tại địa điểm thực tế. Hãy sử dụng một trong những giá trị sau:

Sau đây là ví dụ về một sự kiện chỉ diễn ra qua mạng:

{
"@context": "https://schema.org",
"@type": "Event",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"location": {
  "@type":"VirtualLocation",
  "url": "https://operaonline.stream5.com/"
  }
}

Sau đây là ví dụ về một sự kiện diễn ra cả qua mạng lẫn tại một địa điểm thực tế:

{
"@context": "https://schema.org",
"@type": "Event",
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"location": {
  "@type": "VirtualLocation",
  "url": "https://operaonline.stream5.com/"
},
{
  "@type": "Place",
  "name": "Snickerpark Stadium",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "100 West Snickerpark Dr",
    "addressLocality": "Snickertown",
    "postalCode": "19019",
    "addressRegion": "PA",
    "addressCountry": "US"
    }
  }
}
eventStatus EventStatusType

Trạng thái của sự kiện. Nếu bạn không sử dụng trường này, Google sẽ hiểu eventStatusEventScheduled. Sau đây là các giá trị được hỗ trợ. Bạn có thể dùng nhiều trạng thái nếu thấy hợp lý (ví dụ: nếu sự kiện vừa được chuyển thành sự kiện trực tuyến vừa được đổi lịch).

EventCancelled

Sự kiện đã bị hủy.

{
  "@context": "https://schema.org",
  "@type": "Event",
  "eventStatus": "https://schema.org/EventCancelled",
  "startDate": "2020-07-21T19:00"
}
EventMovedOnline

Sự kiện đã chuyển từ cho phép tham dự trực tiếp sang tham dự qua mạng.

{
  "@context": "https://schema.org",
  "@type": "Event",
  "eventStatus": "https://schema.org/EventMovedOnline",
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "location": {
    "@type":"VirtualLocation",
    "url": "https://operaonline.stream5.com/"
  },
  "startDate": "2020-07-21T19:00"
}
EventPostponed

Sự kiện bị hoãn sang một ngày khác, nhưng bạn vẫn chưa biết ngày nào. Giữ nguyên ngày ban đầu trong thuộc tính startDate của sự kiện cho đến khi bạn biết ngày tổ chức mới của sự kiện. Sau khi bạn biết thông tin về ngày tổ chức mới, hãy thay đổi thuộc tính eventStatus thành EventRescheduled và cập nhật thuộc tính startDateendDate thành ngày mới.

{
  "@context": "https://schema.org",
  "@type": "Event",
  "eventStatus": "https://schema.org/EventPostponed",
  "startDate": "2020-07-21T19:00"
}
EventRescheduled

Sự kiện đã đổi lịch sang một ngày khác. Hãy cập nhật ngày mới thích hợp cho thuộc tính startDateendDate. Nếu muốn, bạn cũng có thể đánh dấu trường eventStatus thành đã đổi lịch rồi thêm thuộc tính previousStartDate.

{
  "@context": "https://schema.org",
  "@type": "Event",
  "eventStatus": "https://schema.org/EventRescheduled",
  "startDate": "2020-07-21T19:00",
  "endDate": "2025-07-21T23:00",
  "previousStartDate": "2025-03-21T19:00"
}
EventScheduled

Sự kiện đã được lên lịch. Giá trị này là trạng thái mặc định cho sự kiện. Nếu bạn không đặt thuộc tính eventStatus, Google sẽ hiểu rằng sự kiện sẽ diễn ra theo lịch.

{
  "@context": "https://schema.org",
  "@type": "Event",
  "eventStatus": "https://schema.org/EventScheduled",
  "startDate": "2020-07-21T19:00"
}
image

ImageObject hoặc URL trùng lặp

URL của hình ảnh hoặc biểu trưng cho sự kiện hoặc chuỗi sự kiện. Hãy sử dụng một hình ảnh giúp người dùng hiểu và tương tác với sự kiện của bạn. Bạn nên sử dụng hình ảnh có chiều rộng 1920px (chiều rộng tối thiểu là 720px).

Nguyên tắc bổ sung về hình ảnh:

  • Mỗi trang phải chứa ít nhất một hình ảnh (cho dù bạn có đánh dấu hình ảnh đó hay không). Google sẽ chọn hình ảnh tốt nhất để hiển thị trong kết quả tìm kiếm trên Google dựa trên tỷ lệ khung hình và độ phân giải.
  • URL của hình ảnh phải cho phép Google thu thập dữ liệu và lập chỉ mục. Để kiểm tra xem Google truy cập được URL của bạn hay không, hãy dùng Công cụ kiểm tra URL.
  • Hình ảnh phải mang tính đại diện cho nội dung được đánh dấu.
  • Tệp hình ảnh phải thuộc một định dạng mà Google Hình ảnh hỗ trợ.
  • Để có kết quả tốt nhất, bạn nên cung cấp nhiều hình ảnh có độ phân giải cao (tối thiểu 50.000 pixel khi nhân chiều rộng với chiều cao) và theo tỷ lệ khung hình 16x9, 4x3 hoặc 1x1.

Ví dụ:

"image": [
  "https://example.com/photos/1x1/photo.jpg",
  "https://example.com/photos/4x3/photo.jpg",
  "https://example.com/photos/16x9/photo.jpg"
]
location.name

Text

Tên chi tiết của địa điểm tổ chức sự kiện. Bạn chỉ nên dùng thuộc tính này cho những sự kiện diễn ra ở địa điểm thực.

Không nên: San Francisco, CA

Nên: Khán phòng Bill Graham Civic Auditorium

Các phương pháp hay nhất:

  • Không bao gồm tên thành phố trừ khi đó là sự kiện diễn ra trên toàn thành phố.
  • Thuộc tính location.name phải là tên của địa điểm diễn ra sự kiện, không phải thuộc tính trùng lặp với tiêu đề của sự kiện. Nếu bạn không biết tên của địa điểm, đừng sử dụng thuộc tính này.
offers

Offer

Một mục Offer được lồng, một mục cho mỗi loại vé.
"offers": {
  "@type": "Offer"
}
offers.availability

Text

Một trong những giá trị sau:

  • InStock: Còn vé xem sự kiện.
  • SoldOut: Đã bán hết vé xem sự kiện.
  • PreOrder: Có thể đặt trước vé xem sự kiện.
"offers": {
  "@type": "Offer",
  "availability": "https://schema.org/InStock"
}
offers.price

Number

Giá thấp nhất hiện có, bao gồm cả phí dịch vụ và các loại phí khác. Đừng quên cập nhật giá trị này khi thay đổi giá hoặc đã bán hết vé.

Nếu sự kiện diễn ra mà không cần thanh toán, thu phí hay phí dịch vụ, hãy đặt price thành 0.

"offers": {
  "@type": "Offer",
  "price": "30"
}
offers.priceCurrency

Text

Mã tiền tệ ISO 4217 gồm 3 chữ cái.

"offers": {
  "@type": "Offer",
  "priceCurrency": "USD"
}
offers.validFrom

DateTime

Ngày giờ bán vé (chỉ bắt buộc khi bạn bán vé trong một khung thời gian có hạn), ở định dạng ISO-8601.

"offers": {
  "@type": "Offer",
  "validFrom": "2024-05-21T12:00"
}
offers.url

URL

URL của một trang cho phép người dùng mua vé.

"offers": {
  "@type": "Offer",
  "url": "https://www.example.com/event_offer/12345_201803180430"
}

URL này phải đáp ứng các yêu cầu sau:

  • Liên kết trực tiếp đến một trang đích rõ ràng và chủ yếu cung cấp cơ hội mua vé tham gia sự kiện cụ thể đó cho bất cứ người dùng thông thường nào.
  • Là một đường liên kết mà người dùng có thể nhấp vào trên trang web có chứa sự kiện.
  • Cho phép Googlebot thu thập dữ liệu (không bị tệp robots.txt chặn).
organizer

Organization hoặc Person

Người hoặc nhóm tổ chức sự kiện. Thuộc tính này đặc biệt quan trọng đối với các sự kiện qua mạng không có bất kỳ thông tin nào về địa điểm. Nếu dùng organizer, bạn nên thêm những thuộc tính sau:

organizer.name

Text

Tên của cá nhân hoặc nhóm tổ chức sự kiện.

organizer.url

URL

URL của miền của người hoặc nhóm tổ chức sự kiện.

performer

Person

Những người tham gia biểu diễn tại sự kiện, chẳng hạn như các nghệ sĩ và diễn viên hài. Sử dụng thuộc tính PerformingGroup hoặc Person, trong đó mỗi thuộc tính tương ứng với một nghệ sĩ tham gia biểu diễn.

"performer": {
  "@type": "PerformingGroup"
}
performer.name

Text

Tên của những người tham gia biểu diễn tại sự kiện, chẳng hạn như tên nghệ sĩ và diễn viên hài.

"performer": {
  "@type": "PerformingGroup",
  "name": "Kira and Morrison"
}
previousStartDate

DateTime

Ngày bắt đầu theo lịch trước đó nếu sự kiện này đã được lên lịch lại. Nếu thêm previousStartDate thì bạn cũng phải thêm thuộc tính eventStatus rồi đặt eventStatus thành EventRescheduled. Đừng sử dụng các trạng thái sự kiện khác.

Đối với các sự kiện trực tuyến, bạn phải chỉ định múi giờ bằng cách nêu rõ số giờ chênh lệch so với giờ UTC hoặc GMT.

Đối với các sự kiện được lên lịch lại, bạn chỉ được dùng thuộc tính startDate cho lịch mới. Trong trường hợp sự kiện bị hoãn và được lên lịch lại nhiều lần (hiếm gặp), bạn có thể sử dụng trường này nhiều lần.

{
"@context": "https://schema.org",
"@type": "Event",
"previousStartDate": ["2020-03-21T19:00-05:00", "2020-03-20T19:00-05:00", "2020-03-21T19:00-05:00"],
"eventStatus": "https://schema.org/EventRescheduled",
"startDate": "2020-07-21T19:00-05:00"
}

Theo dõi kết quả nhiều định dạng bằng Search Console

Search Console là công cụ giúp bạn theo dõi hiệu quả hoạt động của các trang web trong Google Tìm kiếm. Bạn không cần đăng ký sử dụng Search Console để đưa trang web vào Google Tìm kiếm, nhưng việc làm vậy có thể giúp bạn hiểu và cải thiện cách Google nhìn thấy trang web của bạn. Bạn nên kiểm tra Search Console trong những trường hợp sau:

  1. Sau lần đầu triển khai dữ liệu có cấu trúc
  2. Sau khi phát hành mẫu mới hoặc cập nhật mã của bạn
  3. Phân tích lưu lượng truy cập định kỳ

Sau lần đầu triển khai dữ liệu có cấu trúc

Sau khi Google lập chỉ mục các trang của bạn, hãy tìm vấn đề bằng cách sử dụng Báo cáo trạng thái kết quả nhiều định dạng có liên quan. Lý tưởng nhất là số mục hợp lệ tăng lên và số mục không hợp lệ không tăng. Nếu bạn tìm thấy vấn đề trong dữ liệu có cấu trúc:

  1. Sửa các mục không hợp lệ.
  2. Kiểm tra URL đang hoạt động để xem vấn đề còn tồn tại không.
  3. Yêu cầu xác thực bằng cách sử dụng báo cáo trạng thái.

Sau khi phát hành các mẫu mới hoặc cập nhật mã

Khi bạn thực hiện những thay đổi đáng kể trên trang web của mình, hãy theo dõi xem số lượng mục dữ liệu có cấu trúc không hợp lệ có tăng lên hay không.
  • Nếu bạn thấy số mục không hợp lệ gia tăng, thì có lẽ bạn đã triển khai một mẫu mới không hoạt động được hoặc trang web của bạn tương tác với mẫu hiện có theo cách mới và không hợp lệ.
  • Nếu bạn thấy số mục hợp lệ giảm (nhưng số mục không hợp lệ không tăng), thì có thể bạn không còn nhúng dữ liệu có cấu trúc trên các trang của mình nữa. Hãy sử dụng Công cụ kiểm tra URL để tìm hiểu nguyên nhân gây ra vấn đề.

Phân tích lưu lượng truy cập định kỳ

Phân tích lưu lượng truy cập bạn nhận được qua Google Tìm kiếm bằng cách sử dụng Báo cáo hiệu suất. Dữ liệu báo cáo sẽ cho bạn biết bạn tần suất trang web xuất hiện dưới dạng kết quả nhiều định dạng trong Tìm kiếm, tần suất người dùng nhấp vào trang và vị trí trung bình của trang trong kết quả tìm kiếm. Bạn cũng có thể tự động lấy các kết quả này bằng Search Console API.

Khắc phục sự cố

Nếu gặp sự cố khi triển khai hoặc gỡ lỗi dữ liệu có cấu trúc, thì bạn có thể tham khảo một số tài nguyên trợ giúp sau đây.

Nếu sự kiện của bạn không xuất hiện trong kết quả tìm kiếm sự kiện trên Google hoặc nếu bạn bị áp dụng biện pháp thủ công do đã dùng Mã đánh dấu có cấu trúc vi phạm trong Search Console, hãy giải quyết những vấn đề thường gặp nhất và xem lại các nguyên tắc của chúng tôi. Nếu bạn vẫn gặp vấn đề, hãy xem phần Câu hỏi thường gặp về Sự kiện hoặc đăng câu hỏi trong diễn đàn của Trung tâm Google Tìm kiếm.

Địa điểm tổ chức sự kiện bị thiếu hoặc không chính xác

Nguyên nhân: Google không hiểu được các giá trị đã cung cấp cho thuộc tính eventLocation, addressLocality hoặc addressRegion. Google cố gắng khớp thông tin địa điểm với địa điểm thực tế, và địa điểm được cung cấp bị thiếu hoặc không chính xác.

Khắc phục vấn đề

  1. Hãy đảm bảo dữ liệu có cấu trúc có chứa giá trị cho eventLocation, addressLocality hoặc addressRegion (tùy thuộc vào vị trí, vì không phải tất cả các thuộc tính vị trí đều thích hợp).
  2. Kiểm tra xem trường location.name có sử dụng tên vị trí không, hoặc để trống trường đó nếu không có tên. Một vấn đề phổ biến là vô tình đặt tên sự kiện trong trường location.name.
  3. Xác thực kết quả sửa lỗi:
    1. Mở công cụ Kiểm tra kết quả nhiều định dạng.
    2. Nhập URL của trang đăng sự kiện vào hộp Tìm nạp URL.
    3. Nhấp vào Xác thực.
    4. Nhấp vào Xem trước.

      Success (Thành công): Công cụ kiểm tra kết quả nhiều định dạng hiển thị eventLocation chính xác trong Công cụ xem trước trên Google Tìm kiếm.

      Try again (Thử lại): Công cụ kiểm tra kết quả nhiều định dạng hiển thị giá trị "false" (sai) cho địa điểm sự kiện trong Công cụ xem trước trên Google Tìm kiếm. Hãy đảm bảo rằng địa điểm bạn cung cấp là một địa điểm có thực.

Trang web của tôi không hiển thị dưới dạng một tùy chọn để mua vé

Nguyên nhân: Thuộc tính offers.url bị thiếu hoặc không đáp ứng các yêu cầu đối với URL.

Khắc phục vấn đề

  1. Đảm bảo dữ liệu có cấu trúc của bạn chứa thuộc tính offers.url.
  2. Đảm bảo URL của bạn đáp ứng các yêu cầu về URL đối với offers.url.
  3. Yêu cầu Google thu thập lại dữ liệu trên trang web của bạn.
  4. Gửi yêu cầu đánh giá (lại).

Giờ hoặc ngày không chính xác

Nguyên nhân: Ngày hoặc giờ không chính xác. Các lỗi phổ biến bao gồm không nêu số giờ nhanh hoặc chậm hơn so với múi giờ bạn sử dụng hoặc chỉ định thời gian bắt đầu không chính xác (ví dụ: thời gian bắt đầu là nửa đêm).

Khắc phục vấn đề

  1. Chỉ rõ số giờ nhanh hơn hay chậm hơn so với múi giờ chuẩn tại địa phương. Ví dụ: nếu sự kiện của bạn bắt đầu vào lúc 7 giờ tối tại New York (UTC - 5) và kết thúc vào lúc 9 giờ tối thì giá trị của startDate2019-08-15T19:00:00-05:00 và giá trị của endDate2019-08-15T21:00:00-05:00. Nếu bạn không thể điền thông tin này thì hãy bỏ qua (ví dụ: chỉ sử dụng 2019-08-15T19:00:00).
  2. Đảm bảo thời gian bắt đầu hoặc kết thúc là chính xác. Một sai lầm phổ biến là chỉ định thời gian bắt đầu cho một sự kiện là nửa đêm khi sự kiện không thực sự bắt đầu vào lúc đó. Nếu sự kiện kéo dài cả ngày hoặc giờ bắt đầu chưa được công bố thì bạn chỉ nên xác định ngày. Ví dụ:

    Nên: 2019-07-20

    Không nên: 2019-07-20T00:00:00

    Không nên: 2019-08-15T00:00:01+00:00

    Không nên2019-08-15T00:00:00+00:00