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 · Advanced
Bahasa

OfferShippingDetails (schema.org/OfferShippingDetails) adalah data terstruktur nested inside sebuah Offer itu tells Google what sebuah product costs untuk ship (shippingRate, sebuah MonetaryAmount), where ini ships (shippingDestination, sebuah DefinedRegion), dan how panjang delivery takes (deliveryTime, which adalah handlingTime + transitTime). sebagai dari November 2025 ini adalah one half dari sebuah two-tier sistem: Google now recommends declaring sebuah catalog-wide default once 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. Two things trip people up. pertama, 'author Anda default di org tingkat' dan 'product-tingkat markup outranks org-tingkat markup di sebuah conflict' adalah both benar — mereka're berbeda pertanyaan. kedua, silent-failure trap: markup dapat validate perfectly di Rich hasil Test while menjadi fully overridden oleh sebuah Merchant Center feed nilai atau sebuah Search Console shipping setting, dengan no error until sebuah eventual listing rejection. shippingDetails adalah recommended, not 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, not sebuah peringkat factor.

Evidence for this claim Schema.org defines OfferShippingDetails for representing shipping destinations, rates, and delivery-time information associated with an offer. Scope: Schema.org vocabulary semantics. Confidence: high · Verified: Schema.org: OfferShippingDetails Evidence for this claim Google supports shipping details in Product merchant-listing structured data but does not guarantee a rich result. Scope: Google merchant-listing eligibility and precedence rules. Confidence: high · Verified: Google Search Central: Merchant listing shipping

TL;DR — OfferShippingDetails adalah schema.org jenis nested di bawah Offer (via 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 two-tier sistem: Google now recommends declaring sebuah catalog-wide default once 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. Two things 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 both benar — berbeda axes. (2) silent-failure trap: markup validates di Rich hasil Test tetapi gets fully overridden oleh sebuah Merchant Center feed nilai atau sebuah Search Console setting, dengan no error until sebuah listing rejection. shippingDetails adalah recommended, not diperlukan; ini adalah eligibility, not sebuah peringkat factor.

What OfferShippingDetails actually adalah

schema.org’s own one-liner adalah terse: “OfferShippingDetails represents information about shipping destinations.” (terjemahan) “OfferShippingDetails mewakili informasi tentang shipping destinations.” dalam praktik ini adalah object Anda nest inside sebuah Offer melalui shippingDetails property — schema.org describes 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 one product — itu’s expected, not sebuah error — because 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 almost no existing guide memiliki folded di, so ini adalah worth doing carefully. pada November 12, 2025 Google announced two 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 directly di Search Console settings (opened up untuk apa pun situs Google’s classifiers identify sebagai sebuah merchant, not hanya itu dengan sebuah ditautkan Merchant Center account), dan Anda dapat declare sebuah organization-tingkat ShippingService di data terstruktur.

ShippingService adalah sebuah baru schema.org jenis — declared via Organization.hasShippingService — itu lets Anda state sebuah standard shipping policy once, pada sebuah single halaman describing Anda business’s shipping, alih-alih repeating ini pada setiap product. Google’s own ShippingService documentation frames relationship dari itu side: “If you need to override your standard shipping policy for a specific product, specify one or more instances of the OfferShippingDetails type,” (terjemahan) “jika Anda perlu override Anda standard shipping policy untuk sebuah spesifik product, specify one atau more instances dari undefined jenis,” nested di bawah Offer — dan notes itu product-tingkat policies mendukung “a more limited set of properties than those described here for shipping policies specified under Organization.” (terjemahan) “sebuah more limited set dari properties daripada itu described here untuk shipping policies specified di bawah undefined.”

So authoring guidance adalah:

  • Org tingkat (ShippingService) — recommended default. Declare Anda standard policy once. Google’s merchant-listing docs say ini 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.” (terjemahan) “kami recommend Anda menyediakan sebuah global shipping policy untuk Anda business di bawah undefined markup instead… hanya jika beberapa dari Anda products memiliki spesifik shipping policies untuk which Anda perlu override Anda global shipping policy, atau jika Anda tidak menyediakan sebuah standard shipping policy untuk Anda business, gunakan ini property di bawah undefined.”
  • Offer tingkat (OfferShippingDetails) — override. gunakan ini untuk products itu genuinely ship differently, atau sebagai fallback jika Anda tidak pernah declared sebuah org-tingkat default.

Google dibangun ini untuk reduce per-product markup maintenance untuk besar catalogs itu semua share one 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 whole 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 explicit 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 therefore… deprecated.” Note what itu melakukan dan tidak berarti: OfferShippingDetails itself adalah not deprecated — ini adalah repositioned. hanya certain redundant fields inside related ShippingRateSettings jenis adalah dropped.

properties, one oleh one

Inside 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 where sebuah value dari 0 marks free shipping. ShippingRateSettings adalah what 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 defined di several cara, e.g. postalCode ranges.” Anda express ini sebagai sebuah country (addressCountry), sebuah region, atau sebuah postal-code range — which adalah why one 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. where 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 not one angka — ini adalah sum dari two sub-properties (below).
  • doesNotShip — sebuah Boolean: “Indicates when shipping to a particular shippingDestination is not available.” (terjemahan) “Indicates when shipping untuk sebuah particular shippingDestination adalah not available.”
  • hasShippingService — sebuah ShippingService ( baru org-tingkat jenis; ini adalah tautan antara two 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 anything 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 delivery 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 allows merchants untuk describe time setelah which mereka akan no longer process orders diterima pada itu day. untuk orders processed setelah cutoff time, one day gets ditambahkan untuk delivery time estimate.”
  • businessDays — days dari week Anda actually process orders.

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

adalah ini diperlukan?

No — dan ini adalah sebuah persistent myth. shippingDetails adalah sebuah recommended, not diperlukan, property untuk merchant-listing data terstruktur. satu-satunya diperlukan merchant-listing properties adalah price (which 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 no shipping markup di semua.

Evidence for this claim Google supports shipping details in Product merchant-listing structured data but does not guarantee a rich result. Scope: Google merchant-listing eligibility and precedence rules. Confidence: high · Verified: Google Search Central: Merchant listing shipping

There’s sebuah separate requirement people conflate dengan ini one: 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 more). itu’s “you must supply shipping info somehow,” (terjemahan) “Anda harus supply shipping info somehow,” not “the shippingDetails schema property is mandatory.” (terjemahan) “ undefined schema property adalah mandatory.” Two berbeda requirements.

Multiple options dan Google’s tie-break logic

Because 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 which one untuk surface. Per -nya ShippingService docs dan SEJ’s coverage: when 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 one — worth knowing sebelum Anda list ini.

Precedence: what wins when sources conflict

Author the normal default once at the organization level, but debug conflicts from the strongest source downward.

Merchant API or Content API values are strongest. Merchant Center or Search Console shipping settings come next. Product-level OfferShippingDetails overrides organization markup. Organization-level ShippingService is the recommended place to author the default but is the weakest source when values conflict.

Here’s confusion itu trips up nearly everyone, dan ini adalah worth stating sebagai two separate pertanyaan:

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

pertanyaan B — when several sources declare shipping untuk yang sama product, which nilai melakukan Google actually gunakan? sebuah berbeda pertanyaan dengan sebuah berbeda jawaban. Google’s own Merchant Center documentation establishes two tautan di ini chain directly: item-tingkat shipping settings dapat override account-tingkat settings, dan updates pushed melalui konten API untuk Shopping atau Merchant API dapat overwrite manual Merchant Center edits. full four-tier stack below — which folds di data terstruktur too — adalah magstags’ practitioner synthesis, consistent dengan itu two documented tautan tetapi not itself sebuah single official Google source, 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 apparent inversion: ShippingService adalah recommended thing untuk author, tetapi di sebuah conflict, product-tingkat OfferShippingDetails outranks ini. Both adalah benar. “Where should my default live” (terjemahan) “Where seharusnya my default live” dan “what wins in a fight” (terjemahan) “what wins di sebuah fight” adalah berbeda axes, dan conflating them adalah top practitioner error here. sebagai magstags puts ini: “Stronger sources override weaker ones completely. There is no blending.” (terjemahan) “Stronger sources override weaker ones completely. tidak ada blending.”

silent-failure trap

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

Google vs. Bing

asymmetry adalah stark. Bing memiliki no dedicated shipping-schema documentation paralleling Google’s merchant-listing / ShippingService docs, no OfferShippingDetails atau ShippingService diperlukan-property tables, dan no equivalent untuk Google’s free-listings shipping requirement. Bing Webmaster alat validates schema.org markup generically, tetapi doesn’t 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, no bespoke shipping fitur” until sebuah Bing rep says otherwise, alih-alih assuming parity dengan Google.

melakukan ini help rankings?

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

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

Anda dapat memiliki seen late-2025 coverage itu Google akan “remove support for [certain] structured data types in Search Console and 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 nothing untuk melakukan dengan shipping schema. opposite happened here: 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 few Anda harus hold pada untuk” (SER) — adalah right lens: don’t strip valid shipping markup pada sebuah salah alarm.

Where 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 broader vocabulary, deprecation cycles, dan cara choose sebuah jenis, see schema markup; untuk format itself, JSON-LD.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.