Panduan OfferShippingDetails Schema

cara implement schema.org/OfferShippingDetails — shippingRate, shippingDestination, dan deliveryTime — setelah Google's November 2025 restructure itu dibuat ini per-product override dari sebuah org-tingkat ShippingService default. mencakup precedence stack, silent-failure trap, dan berfungsi JSON-LD.

Pertama kali diterbitkan: 2 Jul 2026 · Terakhir diperbarui: 3 Agu 2026 · Lanjutan

OfferShippingDetails (schema.org/OfferShippingDetails) adalah data terstruktur nested di dalam sebuah Offer itu tells Google apa sebuah product costs untuk ship (shippingRate, sebuah MonetaryAmount), di mana ini ships (shippingDestination, sebuah DefinedRegion), dan bagaimana panjang pengiriman takes (deliveryTime, yang adalah handlingTime + transitTime). sebagai dari November 2025 ini adalah satu half dari sebuah dua-tier sistem: Google now recommends declaring sebuah catalog-wide default setelah di organization tingkat dengan ShippingService (Organization.hasShippingService), dan menggunakan OfferShippingDetails di bawah sebuah spesifik Offer hanya sebagai per-product override — yang sama org-tingkat/offer-tingkat split ini sudah digunakan untuk MerchantReturnPolicy. Dua hal trip orang up. pertama, 'author Anda default di org tingkat' dan 'product-tingkat markup outranks org-tingkat markup di sebuah conflict' adalah keduanya benar — mereka're berbeda pertanyaan. kedua, silent-failure trap: markup dapat validate perfectly di Rich hasil Test sementara menjadi fully overridden oleh sebuah Merchant Center feed nilai atau sebuah Search Console shipping setting, dengan Tidak error until sebuah eventual listing rejection. shippingDetails adalah recommended, tidak diperlukan, untuk Product rich hasil, tetapi shipping info dari beberapa form adalah diperlukan untuk free listings di ~30 countries. dan like semua data terstruktur, ini adalah eligibility, tidak sebuah peringkat factor.

Bukti untuk klaim ini Schema.org defines OfferShippingDetails for representing shipping destinations, rates, and delivery-time information associated with an offer. Cakupan: Schema.org vocabulary semantics. Tingkat keyakinan: tinggi · Diverifikasi: Schema.org: OfferShippingDetails Bukti untuk klaim ini Google supports shipping details in Product merchant-listing structured data but does not guarantee a rich result. Cakupan: Google merchant-listing eligibility and precedence rules. Tingkat keyakinan: tinggi · Diverifikasi: Google Search Central: Merchant listing shipping

TL;DR — OfferShippingDetails adalah schema.org jenis nested di bawah Offer (melalui shippingDetails) itu declares shippingRate (sebuah MonetaryAmount), shippingDestination (sebuah DefinedRegion), dan deliveryTime (handlingTime + transitTime). sebagai dari November 2025 ini adalah offer-tingkat override half dari sebuah dua-tier sistem: Google now recommends declaring sebuah catalog-wide default setelah di organization tingkat dengan ShippingService (Organization.hasShippingService), dan reserving OfferShippingDetails untuk products itu differ — yang sama org-tingkat/offer-tingkat split ini digunakan untuk MerchantReturnPolicy. Dua hal confuse everyone. (1) “Author your default at the org level” (terjemahan) “Author Anda default di org tingkat” dan “product-level markup outranks org-level markup in a conflict” (terjemahan) “product-tingkat markup outranks org-tingkat markup di sebuah conflict” adalah keduanya benar — berbeda axes. (2) silent-failure trap: markup validates di Rich hasil Test tetapi mendapatkan fully overridden oleh sebuah Merchant Center feed nilai atau sebuah Search Console setting, dengan Tidak error until sebuah listing rejection. shippingDetails adalah recommended, tidak diperlukan; ini adalah eligibility, tidak sebuah peringkat factor.

Apa OfferShippingDetails sebenarnya adalah

schema.org’s own satu-liner adalah terse: “OfferShippingDetails represents information about shipping destinations.” (terjemahan) “OfferShippingDetails mewakili informasi tentang shipping destinations.” dalam praktik ini adalah object Anda nest di dalam sebuah Offer melalui shippingDetails property — schema.org mendeskripsikan itu property sebagai indicating “information about the shipping policies and options associated with an Offer.” (terjemahan) “informasi tentang shipping policies dan options associated dengan sebuah Offer.” ini sits right alongside price, priceCurrency, dan availability di yang sama Offer itu powers Anda product schema.

Anda dapat declare multiple OfferShippingDetails instances pada satu product — itu’s yang diharapkan, tidak sebuah error — karena sebuah product dapat ship di berbeda rates untuk berbeda places, atau di berbeda rate/speed tiers untuk yang sama place.

November 2025 restructure: OfferShippingDetails vs. ShippingService

ini adalah bagian hampir Tidak existing guide memiliki folded di, so ini adalah worth melakukan dengan hati-hati. pada November 12, 2025 Google announced dua expanded cara untuk share shipping dan mengembalikan policies (Google Search Central blog, covered yang sama day oleh mesin pencari Journal): Anda dapat now configure shipping secara langsung di Search Console settings (opened up untuk apa pun situs Google’s classifiers identify sebagai sebuah merchant, tidak hanya itu dengan sebuah ditautkan Merchant Center account), dan Anda dapat declare sebuah organization-tingkat ShippingService di data terstruktur.

«ShippingService is a new schema.org type — declared via Organization.hasShippingService — that lets you state a standard shipping policy once, on a single page describing your business’s shipping, instead of repeating it on every product. Google’s own ShippingService documentation frames the relationship from that side: “If you need to override your standard shipping policy for a specific product, specify one or more instances of the OfferShippingDetails type,” nested under Offer — and notes that product-level policies support “a more limited set of properties than those described here for shipping policies specified under Organization.” » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh tujuh, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

So authoring guidance adalah:

«- Org level (ShippingService) — the recommended default. Declare your standard policy once. Google’s merchant-listing docs say it directly: “We recommend you provide a global shipping policy for your business under Organization markup instead… Only if some of your products have specific shipping policies for which you need to override your global shipping policy, or if you don’t provide a standard shipping policy for your business, use this property under Offer.”

  • Offer level (OfferShippingDetails) — the override. Use it for the products that genuinely ship differently, or as the fallback if you never declared an org-level default. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh sembilan, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

Google dibangun ini untuk reduce per-product markup maintenance untuk besar catalogs itu semua share satu policy. jika Anda know MerchantReturnPolicy pattern — sebuah default di Organization.hasMerchantReturnPolicy, sebuah override di bawah Offer — ini adalah yang sama architecture applied untuk shipping. Google memiliki telah actively tightening ini seluruh property cluster: ini dibuat returnPolicyCountry sebuah explicitly diperlukan field pada kembalikan-policy sibling di March 2025, lalu ditambahkan entire ShippingService layer di November 2025.

schema.org proposal behind perubahan (GitHub issue #3617, initiated oleh Google Shopping engineer Irina Tuduce) adalah jelas itu ini “introduces a new type, ShippingService, that groups shipping constraints,” (terjemahan) “introduces sebuah baru jenis, ShippingService, itu groups shipping constraints,” dan itu “redundant fields from ShippingRateSettings are therefore… deprecated.” (terjemahan) “redundant fields dari ShippingRateSettings adalah karena itu… deprecated.” Note apa itu melakukan dan tidak berarti: OfferShippingDetails itself adalah tidak deprecated — ini adalah repositioned. hanya certain redundant fields di dalam related ShippingRateSettings jenis adalah dropped.

properties, satu oleh satu

Di dalam sebuah OfferShippingDetails object:

  • shippingRate — sebuah MonetaryAmount (atau ShippingRateSettings). schema.org: “The shipping rate is the cost of shipping to the specified destination.” (terjemahan) “ shipping rate adalah cost dari shipping untuk specified destination.” ini adalah di mana sebuah value dari 0 marks free shipping. ShippingRateSettings adalah apa 2025 restructure extended untuk mendukung percentage-dari-order-nilai dan percentage-dari-weight rates.
  • shippingDestination — sebuah DefinedRegion. schema.org: ini “indicates (possibly multiple) shipping destinations. These can be defined in several ways, e.g. postalCode ranges.” (terjemahan) “indicates (possibly multiple) shipping destinations. ini dapat menjadi didefinisikan di several cara, e.g. postalCode ranges.” Anda express ini sebagai sebuah country (addressCountry), sebuah region, atau sebuah postal-code range — yang adalah mengapa satu product dapat carry several OfferShippingDetails entries untuk berbeda regions.
  • shippingOrigin — juga sebuah DefinedRegion: “Indicates the origin of a shipment, i.e. where it should be coming from.” (terjemahan) “Indicates origin dari sebuah shipment, i.e. di mana ini seharusnya menjadi coming dari.”
  • deliveryTime — sebuah ShippingDeliveryTime object. schema.org panggilan ini “The total delay between the receipt of the order and the goods reaching the final customer.” (terjemahan) “ total delay antara receipt dari order dan goods reaching akhir customer.” Crucially, ini adalah tidak satu angka — ini adalah sum dari dua sub-properties (di bawah).
  • doesNotShip — sebuah Boolean: “Indicates when shipping to a particular shippingDestination is not available.” (terjemahan) “Indicates ketika shipping untuk sebuah particular shippingDestination adalah tidak tersedia.”
  • hasShippingService — sebuah ShippingService ( baru org-tingkat jenis; ini adalah tautan antara dua tiers).
  • validForMemberTier — ties sebuah shipping option untuk sebuah loyalty/membership tier (e.g. free shipping untuk members).
  • weight / height / width / depth — package dimensions digunakan untuk rate-matching.

deliveryTime = handlingTime + transitTime

single sebagian besar-missed detail. deliveryTime (sebuah ShippingDeliveryTime) adalah dibuat dari:

  • handlingTime — schema.org: “The typical delay between the receipt of the order and the goods either leaving the warehouse or being prepared for pickup.” (terjemahan) “ typical delay antara receipt dari order dan goods either leaving warehouse atau menjadi prepared untuk pickup.” ini adalah Anda processing delay sebelum apa pun ships.
  • transitTime — “The typical delay the order has been sent for delivery and the goods reach the final customer.” (terjemahan) “ typical delay order memiliki telah dikirim untuk pengiriman dan goods reach akhir customer.” ini adalah carrier’s delay setelah ini ships.
  • cutoffTime — “Order cutoff time allows merchants to describe the time after which they will no longer process orders received on that day. For orders processed after cutoff time, one day gets added to the delivery time estimate.” (terjemahan) “Order cutoff time memungkinkan merchants untuk deskripsikan time setelah yang mereka akan Tidak lebih lama proses orders diterima pada itu day. untuk orders processed setelah cutoff time, satu day mendapatkan ditambahkan untuk pengiriman time estimate.”
  • businessDays — days dari week Anda sebenarnya proses orders.

jika sebuah buyer sees “arrives in 4–7 business days,” (terjemahan) “arrives di 4–7 business days,” itu’s menangani (say 1–2 days) plus transit (3–5 days), dengan cutoffTime bumping estimate sebuah day untuk late orders. Collapsing dua ke sebuah single dibuat-up transit angka adalah sebuah umum mistake.

adalah ini diperlukan?

Tidak — dan ini adalah sebuah persistent myth. shippingDetails adalah sebuah recommended, tidak diperlukan, property untuk merchant-listing data terstruktur. satu-satunya diperlukan merchant-listing properties adalah price (yang untuk merchant listings harus menjadi “greater than zero” (terjemahan) “greater daripada zero”) dan priceCurrency (ISO 4217). Anda dapat earn sebuah valid Product rich hasil dengan Tidak shipping markup di semua.

Bukti untuk klaim ini Google supports shipping details in Product merchant-listing structured data but does not guarantee a rich result. Cakupan: Google merchant-listing eligibility and precedence rules. Tingkat keyakinan: tinggi · Diverifikasi: Google Search Central: Merchant listing shipping

ada sebuah terpisah requirement orang conflate dengan ini satu: shipping informasi dari beberapa form — markup, sebuah Merchant Center feed nilai, atau sebuah Search Console setting — adalah diperlukan untuk eligibility di Google’s free product listings di seluruh roughly 30 countries (per Google Merchant Center Help; list spans Australia, Brazil, Canada, sebagian besar dari Western Europe, India, Japan, South Korea, UK, US, dan lebih). itu’s “you must supply shipping info somehow,” (terjemahan) “Anda harus supply shipping info somehow,” tidak “itu shippingDetails schema property adalah mandatory.” (terjemahan) “ tidak terdefinisi schema property adalah mandatory.” Dua berbeda requirements.

Multiple options dan Google’s tie-break logic

Karena Anda dapat (dan sering seharusnya) list several rate/speed combos — say 5 USD untuk 5–7 days dan 15 USD untuk 1–2 days — Google perlu sebuah aturan untuk yang satu untuk surface. Per -nya ShippingService docs dan SEJ’s coverage: ketika several entries dapat apply untuk yang sama buyer dan destination, Google menampilkan lowest-cost option dan -nya associated speed, breaking cost ties oleh fastest speed. So listing sebuah cheap-tetapi-slow option berarti Google dapat tampilkan itu satu — worth knowing sebelum Anda list ini.

Precedence: apa wins ketika sources conflict

Author wajar default setelah di organization tingkat, tetapi debug conflicts dari strongest sumber downward.

Merchant API atau konten API nilai adalah strongest. Merchant Center atau Search Console shipping settings come berikutnya. Product-tingkat OfferShippingDetails overrides organization markup. Organization-tingkat ShippingService adalah recommended place untuk author default tetapi adalah weakest sumber ketika nilai conflict.

Di sini’s confusion itu trips up nearly everyone, dan ini adalah worth stating sebagai dua terpisah pertanyaan:

pertanyaan sebuah — di mana seharusnya I author my default? di org tingkat (ShippingService). itu’s authoring recommendation di atas.

pertanyaan B — ketika several sources declare shipping untuk yang sama product, yang nilai melakukan Google sebenarnya gunakan? sebuah berbeda pertanyaan dengan sebuah berbeda jawaban. Google’s own Merchant Center documentation establishes dua tautan di ini chain secara langsung: item-tingkat shipping settings dapat override account-tingkat settings, dan memperbarui pushed melalui konten API untuk Shopping atau Merchant API dapat overwrite manual Merchant Center edits. penuh four-tier stack di bawah — yang folds di data terstruktur too — adalah magstags’ practitioner synthesis, consistent dengan itu dua terdokumentasi tautan tetapi tidak itself sebuah single official Google sumber, strongest untuk weakest:

  1. konten API untuk Shopping / Merchant API (account-tingkat settings) — strongest.
  2. Merchant Center atau Search Console shipping settings.
  3. Product-tingkat OfferShippingDetails markup.
  4. Org-tingkat ShippingService markup — weakest.

«Notice the apparent inversion: ShippingService is the recommended thing to author, but in a conflict, product-level OfferShippingDetails outranks it. Both are true. “Where should my default live” and “what wins in a fight” are different axes, and conflating them is the top practitioner error here. As magstags puts it: “Stronger sources override weaker ones completely. There is no blending.” » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima puluh, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

silent-failure trap

ini adalah single sebagian besar valuable pattern untuk internalize — tetapi ini adalah worth menjadi precise tentang apa Google documents secara langsung versus apa sebuah well-corroborated practitioner observation. Google’s own docs konfirmasi underlying mechanism: item- dan account-tingkat settings dapat silently override Anda markup ( precedence stack di atas), dan Merchant Center dapat disapprove sebuah listing untuk inaccurate atau missing shipping informasi. Apa Google’s docs jangan spell out end-untuk-end adalah tepat failure sequence magstags reports: Anda OfferShippingDetails markup validates perfectly di Rich hasil Test, lalu mendapatkan completely overridden oleh sebuah Merchant Center feed nilai atau sebuah Penelusuran Console shipping setting sitting lebih tinggi di itu precedence stack — dengan Tidak error surfaced anywhere. satu-satunya symptom adalah sebuah eventual listing rejection jika displayed shipping cost tidak match apa sebuah buyer sees di checkout. Treat itu sequence sebagai sebuah strong practitioner pattern untuk periksa untuk, tidak sebuah official Google jaminan. magstags juga flags related gotcha itu shipping/mengembalikan policies edited di Merchant Center become baca-hanya di Search Console untuk 30 days. jika Anda markup “isn’t showing,” (terjemahan) “tidak menunjukkan,” periksa lebih tinggi tiers dari stack sebelum Anda touch markup.

Google vs. Bing

asymmetry adalah stark. Bing memiliki Tidak dedicated shipping-schema documentation paralleling Google’s merchant-listing / ShippingService docs, Tidak OfferShippingDetails atau ShippingService diperlukan-property tables, dan Tidak equivalent untuk Google’s free-listings shipping requirement. Bing Webmaster alat validates schema.org markup generically, tetapi tidak publish sebuah bespoke shipping fitur. ini adalah yang sama pattern commerce schema hub sudah documents untuk ProductGroup — treat Bing sebagai “generic schema.org support, no bespoke shipping feature” (terjemahan) “generic schema.org mendukung, Tidak bespoke shipping fitur” until sebuah Bing rep says jika tidak, alih-alih assuming parity dengan Google.

melakukan ini help rankings?

Tidak — sama caveat sebagai semua data terstruktur. ini buys eligibility untuk shipping line di sebuah merchant listing atau knowledge panel; ini adalah tidak sebuah sinyal peringkat. John Mueller memiliki telah blunt pada umum poin: “Structured data won’t make your site rank better,” (terjemahan) “data terstruktur tidak akan membuat Anda situs peringkat better,” dan itu menggunakan ini untuk lainnya purposes “tidak akan penyebab problems, tetapi Anda unlikely untuk see any visible ubah dari it di Google Search” (terjemahan) “tidak akan penyebab masalah, tetapi Anda’re unlikely untuk see apa pun terlihat perubahan dari ini di Google Search” (relayed melalui mesin pencari Roundtable).

”Is schema dying?” (terjemahan) “adalah schema dying?” — sebuah quick disambiguation

Anda dapat memiliki seen late-2025 coverage itu Google akan “remove dukung untuk [certain] structured data types di Search Console dan its API” (terjemahan) “hapus mendukung untuk [certain] data terstruktur jenis di Search Console dan -nya API” starting January 2026 (per SEJ). itu adalah sebuah kecil set dari unrelated, underused jenis — ini memiliki tidak ada apa pun untuk melakukan dengan shipping schema. opposite happened di sini: shipping schema adalah expanded (ShippingService ditambahkan) di November 2025, yang sama season “schema is dying” (terjemahan) “schema adalah dying” narrative adalah circulating. Mueller’s framing itu week — “markup types come and go, but a precious few you should hold on to” (terjemahan) “markup jenis come dan go, tetapi sebuah precious sedikit Anda harus hold pada untuk” (SER) — adalah right lens: jangan strip valid shipping markup pada sebuah salah alarm.

Di mana ini sits

OfferShippingDetails adalah sebuah property-tingkat jenis di data terstruktur sub-cluster, nested di bawah commerce schema hub alongside Product dan ProductGroup. -nya closest sibling adalah MerchantReturnPolicy — yang sama org-tingkat-default / offer-tingkat-override architecture applied untuk mengembalikan alih-alih shipping. untuk lebih luas vocabulary, deprecation cycles, dan cara choose sebuah jenis, see schema markup; untuk format itself, JSON-LD.

Tambahkan catatan pakar

Sematkan kutipan pakar

Orang baru? Buat profilnya yang belum diklaim di /admin/experts/ → Sematkan kutipan pakar terlebih dahulu.