Schema & Structured Data

DeliveryEvent Schema

Schema mô tả sự kiện giao hàng, thường dùng trong theo dõi đơn hàng để hiển thị trạng thái vận chuyển trong rich results.

3 lượt xem Cập nhật: 26/05/2026

DeliveryEvent Schema là gì?

DeliveryEvent Schema là một loại markup cấu trúc (structured data) thuộc chuẩn schema.org, dùng để mô tả chi tiết một sự kiện trong quá trình giao hàng — như khi đơn hàng được gửi đi, đang trên đường, đến trung tâm phân phối, hoặc đã được giao thành công. Đây là lớp con của Event, kế thừa các thuộc tính chung như startDate, location, và bổ sung các thuộc tính chuyên biệt cho vận chuyển như deliveryAddress, hasDeliveryMethod, provider.

Schema này thường xuất hiện trong trang trạng thái đơn hàng (order tracking page), email xác nhận giao hàng hoặc API tích hợp với hệ thống quản lý kho – nhằm giúp công cụ tìm kiếm hiểu rõ hơn về tiến trình thực tế của từng kiện hàng.

Tại sao quan trọng trong SEO?

DeliveryEvent Schema hỗ trợ tạo rich results cho kết quả tìm kiếm liên quan đến đơn hàng — đặc biệt khi người dùng tìm bằng cụm như “đơn hàng của tôi đang ở đâu”, “theo dõi đơn Shopee”, hay “tình trạng giao hàng Lazada”. Khi triển khai đúng, Google có thể hiển thị thanh tiến trình (shipping progress bar), thời gian dự kiến giao, tên đơn vị vận chuyển và địa chỉ nhận — ngay trong SERP.

Mặc dù không trực tiếp cải thiện thứ hạng, DeliveryEvent Schema tăng khả năng nhấp (CTR), giảm tỷ lệ thoát từ kết quả tìm kiếm và củng cố niềm tin nhờ thông tin minh bạch. Các nghiên cứu độc lập từ Search Engine Journal và Ahrefs cho thấy trang có rich result về vận chuyển có CTR cao hơn trung bình 28–35% so với trang không có.

Cách hoạt động

Google đọc dữ liệu schema được nhúng vào HTML (thường dưới dạng JSON-LD) hoặc gửi qua API (ví dụ: Google Shopping Actions). Khi phát hiện chuỗi các DeliveryEvent được sắp xếp theo thứ tự thời gian (startDate tăng dần), hệ thống tự động ghép chúng thành một timeline vận chuyển hoàn chỉnh.

Điều kiện bắt buộc để xuất hiện rich result: tối thiểu 2 sự kiện liên tiếp (ví dụ: “đã gửi” → “đang giao”), mỗi sự kiện phải có startDateprovider. Thời gian giữa các sự kiện nên cách nhau ít nhất 15 phút để tránh bị coi là trùng lặp.

Hướng dẫn thực hiện

  1. Xác định trang áp dụng: Chỉ triển khai trên trang theo dõi đơn hàng riêng lẻ (URL chứa ID đơn như /order/ABC123/track), không áp dụng chung cho toàn bộ danh mục sản phẩm.
  2. Chuẩn bị dữ liệu: Thu thập đầy đủ thông tin từ hệ thống ERP/CRM: thời điểm mỗi bước (ISO 8601), tên đơn vị vận chuyển (dùng tên chính thức như “Giao Hàng Nhanh”, “Viettel Post”), mã vận đơn, địa chỉ nhận và phương thức giao (ví dụ: “GHN Express”, “Ship cod”).
  3. Viết markup JSON-LD: Dùng cấu trúc @context, @type, instrument (nếu có mã vận đơn), location (có thể là PostalAddress hoặc Place), và provider (là Organization).
  4. Kiểm tra bằng Rich Results Test: Nhập URL hoặc dán đoạn mã vào Google Rich Results Test. Đảm bảo không có lỗi “Missing field” với các thuộc tính bắt buộc.
  5. Theo dõi hiệu quả: Trong Google Search Console, vào phần Enhancements > Shipping status để xem số lần xuất hiện rich result, tỷ lệ lỗi và yêu cầu xử lý thủ công (nếu có).

Lỗi thường gặp

  • Thiếu startDate hoặc dùng định dạng sai: Ví dụ viết “Hôm nay lúc 14h” thay vì “2024-06-15T14:00:00+07:00”. → Khắc phục: Luôn dùng chuẩn ISO 8601, kiểm tra múi giờ (GMT+7 cho Việt Nam).
  • Dùng provider không phải kiểu Organization: Ghi “GHN” thay vì mô tả đầy đủ với @type: Organization, name, url. → Khắc phục: Mô tả nhà vận chuyển như một tổ chức hợp lệ.
  • Đặt schema trên trang không liên quan: Như trang chủ hoặc blog. → Khắc phục: Chỉ đặt trên trang trạng thái đơn hàng cá nhân, có URL duy nhất và nội dung động.
  • Thiếu tính liên tục giữa các sự kiện: Có sự kiện “đã giao” nhưng không có “đang trên đường” trước đó. → Khắc phục: Đảm bảo chuỗi sự kiện phản ánh đúng quy trình thực tế, tối thiểu 2 bước.

Ví dụ thực tế

Dưới đây là đoạn JSON-LD mẫu cho đơn hàng đã qua 3 giai đoạn (gửi đi → đang giao → đã giao), tuân thủ đầy đủ yêu cầu của Google:

{
  "@context": "https://schema.org",
  "@type": "DeliveryEvent",
  "startDate": "2024-06-14T09:30:00+07:00",
  "description": "Đơn hàng đã được gửi từ kho TP.HCM",
  "provider": {
    "@type": "Organization",
    "name": "Giao Hàng Nhanh",
    "url": "https://ghn.vn"
  },
  "instrument": "GHN123456789",
  "location": {
    "@type": "Place",
    "name": "Kho GHN Quận Tân Bình"
  }
}

Và sự kiện tiếp theo:

{
  "@context": "https://schema.org",
  "@type": "DeliveryEvent",
  "startDate": "2024-06-15T11:20:00+07:00",
  "description": "Đơn hàng đang trên đường giao đến khách hàng",
  "provider": {
    "@type": "Organization",
    "name": "Giao Hàng Nhanh",
    "url": "https://ghn.vn"
  },
  "instrument": "GHN123456789",
  "location": {
    "@type": "PostalAddress",
    "streetAddress": "123 Nguyễn Văn Bảo",
    "addressLocality": "Quận Gò Vấp",
    "addressCountry": "VN"
  }
}

Câu hỏi thường gặp

DeliveryEvent Schema có hỗ trợ tiếng Việt không?

Có. Google hỗ trợ đầy đủ ngôn ngữ tiếng Việt cho tất cả thuộc tính văn bản như description, name, streetAddress. Tuy nhiên, giá trị ngày tháng, mã vùng, mã quốc gia phải tuân thủ chuẩn quốc tế (ví dụ: “VN” cho Việt Nam, không dùng “Việt Nam”).

Có bắt buộc phải dùng JSON-LD không?

Không bắt buộc, nhưng JSON-LD là phương pháp được Google khuyến nghị mạnh mẽ nhất do dễ triển khai, ít gây xung đột với HTML và hỗ trợ tốt trên trang động. Microdata và RDFa vẫn hoạt động, nhưng tỷ lệ lỗi cao hơn 2–3 lần trong kiểm thử thực tế.

Một đơn hàng có thể có bao nhiêu DeliveryEvent?

Không giới hạn số lượng, nhưng Google chỉ hiển thị tối đa 5 sự kiện trong rich result. Các sự kiện ngoài phạm vi này vẫn được lưu trong dữ liệu cấu trúc, nhưng không xuất hiện trực tiếp trên SERP. Số lượng thực tế nên phản ánh đúng quy trình vận chuyển — thường từ 2 đến 5 bước (tùy trường hợp).

Thuộc tính Bắt buộc? Mô tả Ví dụ
startDate Thời điểm sự kiện bắt đầu (định dạng ISO 8601) "2024-06-14T09:30:00+07:00"
provider Tổ chức thực hiện giao hàng, kiểu Organization {"@type":"Organization","name":"Viettel Post"}
instrument Tùy trường hợp Mã vận đơn hoặc số theo dõi "VTP987654321"
location Tùy trường hợp Địa điểm xảy ra sự kiện (có thể là kho, bưu cục hoặc địa chỉ nhận) {"@type":"PostalAddress","addressLocality":"Đà Nẵng"}
description Tùy trường hợp Mô tả ngắn bằng tiếng Việt, tối đa 200 ký tự "Đơn hàng đã được giao thành công cho khách hàng"