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.
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.
TL;DR — OfferShippingDetails adalah sebuah kecil block dari code Anda tambahkan untuk sebuah product’s markup itu tells Google three things: what ini costs untuk ship, where ini ships untuk, dan how panjang ini takes. Google dapat lalu tampilkan itu shipping line right di search hasil. sebagai dari late 2025 ada two places untuk put shipping info — one di store tingkat (sebuah single default untuk Anda whole catalog) dan one di product tingkat (ini jenis, untuk products itu differ) — dan OfferShippingDetails adalah product-tingkat one.
What OfferShippingDetails adalah
When someone looks di sebuah product halaman, mereka dapat read shipping cost dan “arrives in 3–5 days” (terjemahan) “arrives di 3–5 days” line hanya oleh looking. sebuah mesin pencari sees plain text dan memiliki untuk guess. OfferShippingDetails adalah code Anda tambahkan — biasanya sebagai JSON-LD — itu spells ini out menggunakan shared schema.org vocabulary: “shipping costs $5,” (terjemahan) “shipping costs 5 USD” “it ships to the US,” (terjemahan) “ini ships untuk US,” “it takes 3–5 business days.” (terjemahan) “ini takes 3–5 business days.”
ini lives inside Offer pada sebuah product halaman — yang sama Offer itu sudah holds
price dan availability (see product schema).
Google reads ini dan dapat tampilkan sebuah shipping-cost atau delivery-estimate line di Anda
search listing, terutama di Shopping-style hasil.
three things ini describes
OfferShippingDetails bundles three ideas:
- How much — shipping cost (
shippingRate). - Where untuk — destination ini applies untuk, like sebuah country atau sebuah postal-code
range (
shippingDestination). - How panjang — delivery time (
deliveryTime), which adalah really two angka ditambahkan together: how panjang Anda warehouse takes untuk kirim ini out (handling time) plus how panjang carrier takes untuk deliver ini (transit time).
big perubahan di late 2025
Until recently, ini product-tingkat markup adalah main cara untuk declare shipping di
data terstruktur. di November 2025 Google ditambahkan sebuah kedua, store-tingkat option: Anda
dapat now declare one shipping policy untuk Anda whole business once (sebuah jenis called
ShippingService), alih-alih repeating ini pada setiap product. Google now recommends
doing itu sebagai Anda default, dan menggunakan OfferShippingDetails hanya untuk products whose
shipping adalah berbeda dari default.
So sederhana versi:
- One shipping policy untuk everything? Declare ini once di store tingkat dengan ShippingService.
- sebuah spesifik product ships differently? Override ini pada itu product dengan OfferShippingDetails.
Two honest cautions
- ini adalah not diperlukan, dan ini won’t lift Anda rankings. menambahkan shipping markup membuat Anda eligible untuk shipping line di search — ini doesn’t move Anda up hasil. data terstruktur tidak pernah melakukan itu.
- menambahkan ini doesn’t guarantee ini menampilkan. jika Anda juga memiliki sebuah Google Merchant Center feed atau sebuah shipping setting di Search Console, itu dapat quietly win di atas Anda markup — dengan no error untuk warn Anda. More pada itu trap di Advanced tab.
ingin full versi — setiap property, November 2025 restructure, which source wins when several disagree, silent-failure trap, dan berfungsi JSON-LD? Switch untuk Advanced tab.
TL;DR — OfferShippingDetails adalah schema.org jenis nested di bawah
Offer(viashippingDetails) itu declaresshippingRate(sebuahMonetaryAmount),shippingDestination(sebuahDefinedRegion), dandeliveryTime(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 denganShippingService(Organization.hasShippingService), dan reservingOfferShippingDetailsuntuk products itu differ — yang sama org-tingkat/offer-tingkat split ini digunakan untukMerchantReturnPolicy. 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.shippingDetailsadalah 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 underOrganizationmarkup 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 underOffer.” (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— sebuahMonetaryAmount(atauShippingRateSettings). 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 sebuahvaluedari0marks free shipping.ShippingRateSettingsadalah what 2025 restructure extended untuk mendukung percentage-dari-order-nilai dan percentage-dari-weight rates.shippingDestination— sebuahDefinedRegion. 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 severalOfferShippingDetailsentries untuk berbeda regions.shippingOrigin— juga sebuahDefinedRegion: “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— sebuahShippingDeliveryTimeobject. 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— sebuahShippingService( 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.
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
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:
- konten API untuk Shopping / Merchant API (account-tingkat settings) — strongest.
- Merchant Center atau Search Console shipping settings.
- Product-tingkat
OfferShippingDetailsmarkup. - Org-tingkat
ShippingServicemarkup — 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.
AI summary
sebuah condensed take pada Advanced versi:
- What ini adalah.
OfferShippingDetails(schema.org) adalah data terstruktur nested di bawah sebuahOfferviashippingDetails. ini declaresshippingRate(sebuahMonetaryAmount),shippingDestination(sebuahDefinedRegion), dandeliveryTime. Anda dapat list multiple instances per product (berbeda regions atau rate/speed tiers). - ** Nov 2025 two-tier sistem.** Google now recommends declaring sebuah catalog-wide
default once di org tingkat dengan
ShippingService(Organization.hasShippingService), dan menggunakanOfferShippingDetailshanya sebagai per-product override — yang sama split ini menggunakan untukMerchantReturnPolicy.OfferShippingDetailsadalah repositioned, not deprecated; hanya redundant fields diShippingRateSettingsadalah dropped. - deliveryTime = handlingTime + transitTime. Handling adalah Anda warehouse delay
sebelum shipping; transit adalah carrier delay setelah.
cutoffTimemenambahkan sebuah day untuk late orders. ini adalah not sebuah single angka. - Recommended, not diperlukan. hanya
price(>0 untuk merchant listings) danpriceCurrencyadalah diperlukan untuk sebuah merchant listing. Separately, shipping info dari beberapa form adalah diperlukan untuk free product listings di ~30 countries — sebuah berbeda requirement. - Two axes people conflate. (sebuah) Where untuk author Anda default → org tingkat. (B)
What wins di sebuah conflict → precedence adalah konten/Merchant API → Merchant
Center/Search Console settings → product-tingkat
OfferShippingDetails→ org-tingkatShippingService. So offer-tingkat override outranks org-tingkat default di sebuah fight, bahkan though default adalah what Anda’re told untuk author. - ** silent-failure trap.** Markup dapat validate di Rich hasil Test yet menjadi fully overridden oleh sebuah feed nilai atau Search Console setting dengan no error — hanya sebuah later listing rejection jika ditampilkan cost mismatches checkout. Policies edited di Merchant Center go read-hanya di Search Console untuk 30 days.
- Tie-break. dengan multiple options, Google menampilkan lowest cost (fastest speed breaks ties).
- Not sebuah peringkat factor; Bing memiliki no bespoke shipping fitur. Eligibility hanya (Mueller). Jan 2026 Search Console jenis sunset adalah unrelated — shipping schema adalah expanded, not cut.
Official documentation
Primary-source documentation dari Google dan schema.org.
schema.org
- OfferShippingDetails — jenis itself dan -nya full property table.
- shippingDetails —
Offerproperty itu nests ini. - ShippingDeliveryTime —
handlingTime,transitTime,cutoffTime,businessDays. - ShippingService — org-tingkat jenis ditambahkan di November 2025 restructure.
- Merchant listing (product) data terstruktur — diperlukan vs. recommended properties, dan “provide a global shipping policy under Organization instead” (terjemahan) “menyediakan sebuah global shipping policy di bawah Organization instead” callout.
- Shipping policy (ShippingService) data terstruktur — November 2025 org-tingkat doc, override relationship, dan
ShippingConditions. - kembalikan policy (MerchantReturnPolicy) data terstruktur — architecturally parallel sibling jenis.
- Product data terstruktur (overview) — where
OfferdanshippingDetailsfit di sebuah Product. - Free listings — country requirements (Merchant Center Help) — ~30-country shipping-info requirement.
- didukung data terstruktur attributes dan nilai (Merchant Center Help) — how feed attributes map untuk schema.
Google — blog announcements
- More cara untuk share Anda shipping dan mengembalikan policies (Nov 12, 2025) — saat ini-state announcement (Search Console settings + org-tingkat
ShippingService). - baru Schema.org mendukung untuk retailer shipping data (Sept 2020) — original
shippingDetailsannouncement.
schema.org project
- Issue #3617 — org-tingkat shipping proposal — Irina Tuduce’s proposal itu introduced
ShippingService.
developers.google.com/search/blog/* posts (including Sept
2020 dan Nov 2025 announcements) render via JavaScript dan resisted direct fetching;
claims drawn dari them adalah corroborated di seluruh dated, bylined secondary coverage
(SEJ, ppc.land, Etavrian, Pemavor) dan seharusnya menjadi confirmed terhadap live halaman
sebelum treating apa pun wording sebagai verbatim. schema.org jenis halaman dan three
/structured-data/* reference docs rendered cleanly dan adalah quoted directly. Quotes dari source
pada—record statements dari schema.org dan Google. Where sebuah halaman exposes text, tautan adalah sebuah deep tautan itu jumps untuk quoted passage.
schema.org — jenis dan -nya properties
- “OfferShippingDetails represents information about shipping destinations.” (terjemahan) “OfferShippingDetails mewakili informasi tentang shipping destinations.” Jump untuk quote
- pada
shippingDetails: “Indicates information about the shipping policies and options associated with an Offer.” (terjemahan) “Indicates informasi tentang shipping policies dan options associated dengan sebuah Offer.” Jump untuk quote - pada
deliveryTime: “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.” Jump untuk quote - pada
handlingTime: “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.” Jump untuk quote - pada
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.” Jump untuk quote
Google — org-tingkat recommendation ( 2025 repositioning)
- “We recommend you provide a global shipping policy for your business under
Organizationmarkup 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 underOffer.” (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.” — Google Search Central, merchant-listing docs. Jump untuk quote Relayed via fetch alat’s text extraction dari live halaman ini session; confirm exact#:~:text=fragment di-browser sebelum treating sebagai akhir.
Google — override relationship (dari ShippingService side)
- “If you need to override your standard shipping policy for a specific product, specify one or more instances of the
OfferShippingDetailstype.” (terjemahan) “jika Anda perlu override Anda standard shipping policy untuk sebuah spesifik product, specify one atau more instances dari undefined jenis.” — Google Search Central, shipping-policy docs. Jump untuk quote - “Many merchants have shipping policies that outline the process of shipping purchased products for customers. When you add
ShippingServicestructured data to your site, Google Search can use this information to display shipping information alongside your products.” (terjemahan) “banyak merchants memiliki shipping policies itu outline process dari shipping purchased products untuk customers. When Anda tambahkan undefined data terstruktur untuk Anda situs, Google Search dapat gunakan ini informasi untuk display shipping informasi alongside Anda products.” Jump untuk quote
John Mueller, Google — ini adalah not sebuah peringkat factor
- “Structured data won’t make your site rank better.” (terjemahan) “data terstruktur won’t membuat Anda situs peringkat better.” Read coverage
- “Exactly. Understand that markup types come and go, but a precious few you should hold on to (like title, and meta robots).” (terjemahan) “Exactly. memahami itu markup jenis come dan go, tetapi sebuah precious few Anda harus hold pada untuk (like judul, dan meta robots).” Read coverage
schema.org GitHub proposal (#3617) — restructure rationale
- “This change introduces a new type, ShippingService, that groups shipping constraints… Redundant fields from ShippingRateSettings are therefore… deprecated.” (terjemahan) “ini perubahan introduces sebuah baru jenis, ShippingService, itu groups shipping constraints… Redundant fields dari ShippingRateSettings adalah therefore… deprecated.” Read proposal
Which shipping jenis seharusnya I gunakan?
whole “OfferShippingDetails vs. ShippingService vs. do nothing” (terjemahan) “OfferShippingDetails vs. ShippingService vs. melakukan nothing” pertanyaan di one path. Remember: ini adalah authoring pertanyaan (“where do I put it” (terjemahan) “where melakukan I put ini”), which adalah separate dari precedence (“what wins in a conflict” (terjemahan) “what wins di sebuah conflict”) — see Cheat Sheet untuk itu.
Where should your shipping info live?
OfferShippingDetails — cheat sheet
Two tiers, two jobs
| Tier | jenis | Declared via | gunakan ini untuk |
|---|---|---|---|
| Organization | ShippingService | Organization.hasShippingService | Anda recommended default — one catalog-wide policy, stated once |
| Offer (product) | OfferShippingDetails | Offer.shippingDetails | override — products itu ship differently, atau fallback jika no default exists |
** core properties (inside OfferShippingDetails)**
| Property | jenis | What ini says |
|---|---|---|
shippingRate | MonetaryAmount | Cost dari shipping (value: 0 = free) |
shippingDestination | DefinedRegion | Country / region / postal-code range ini applies untuk |
shippingOrigin | DefinedRegion | Where shipment comes dari |
deliveryTime | ShippingDeliveryTime | Total delay = handlingTime + transitTime |
doesNotShip | Boolean | ini destination isn’t disajikan |
deliveryTime breakdown
| Sub-property | Meaning |
|---|---|
handlingTime | Anda warehouse delay sebelum ini ships |
transitTime | carrier delay setelah ini ships |
cutoffTime | Late orders (setelah ini time) tambahkan sebuah day |
businessDays | Days Anda actually process orders |
Precedence — what wins di sebuah conflict (strongest → weakest)
- konten API untuk Shopping / Merchant API
- Merchant Center / Search Console settings
- Product-tingkat
OfferShippingDetails - Org-tingkat
ShippingService
Two berbeda pertanyaan: where untuk author Anda default (org tingkat) vs. what wins di sebuah fight (offer tingkat outranks org tingkat). Both benar. “Stronger sources override weaker ones completely. There is no blending.” (terjemahan) “Stronger sources override weaker ones completely. tidak ada blending.”
Fast facts
shippingDetailsadalah recommended, not diperlukan — hanyaprice(>0) danpriceCurrencyadalah diperlukan untuk sebuah merchant listing.- Shipping info dari beberapa form adalah diperlukan untuk free listings di ~30 countries — sebuah separate requirement.
- Multiple entries welcome; Google menampilkan lowest cost (fastest speed breaks ties).
- Not sebuah peringkat factor — eligibility hanya.
- Silent-failure trap: validates di Rich hasil Test, masih overridden oleh sebuah feed / Search Console setting dengan no error. Policies edited di Merchant Center adalah read-hanya di Search Console untuk 30 days.
OfferShippingDetailsadalah repositioned, not deprecated, di Nov 2025.
berfungsi JSON-LD
Illustrative contoh — validate Anda own di Rich hasil Test dan schema.org validator sebelum shipping, dan pastikan nilai match Anda feed dan checkout exactly.
1. Offer-tingkat OfferShippingDetails ( per-product override)
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Merino Wool Beanie",
"offers": {
"@type": "Offer",
"price": 29.00,
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": 5.00,
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 2,
"maxValue": 5,
"unitCode": "DAY"
}
}
}
}
}itu advertises 5 USD US shipping dengan sebuah 0–1 day handling window plus 2–5 days di transit — i.e. “arrives in about 2–6 business days.” (terjemahan) “arrives di tentang 2–6 business days.”
2. Multiple shipping options (standard vs. expedited)
shippingDetails takes sebuah array — list setiap tier dan let Google apply -nya tie-break
(lowest cost, fastest speed breaks ties):
"shippingDetails": [
{
"@type": "OfferShippingDetails",
"shippingRate": { "@type": "MonetaryAmount", "value": 5.00, "currency": "USD" },
"shippingDestination": { "@type": "DefinedRegion", "addressCountry": "US" },
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"transitTime": { "@type": "QuantitativeValue", "minValue": 5, "maxValue": 7, "unitCode": "DAY" }
}
},
{
"@type": "OfferShippingDetails",
"shippingRate": { "@type": "MonetaryAmount", "value": 15.00, "currency": "USD" },
"shippingDestination": { "@type": "DefinedRegion", "addressCountry": "US" },
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"transitTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 2, "unitCode": "DAY" }
}
}
]3. Free shipping
Free shipping adalah hanya sebuah shippingRate dengan sebuah value dari 0:
"shippingRate": { "@type": "MonetaryAmount", "value": 0, "currency": "USD" }4. Doesn’t ship untuk sebuah region
{
"@type": "OfferShippingDetails",
"shippingDestination": { "@type": "DefinedRegion", "addressCountry": "AU" },
"doesNotShip": true
}org-tingkat ShippingService (declared di bawah Organization.hasShippingService) adalah
recommended default untuk author when Anda whole catalog shares one policy — reserve
offer-tingkat blocks above untuk products itu genuinely differ.
Mistakes dan myths
recurring cara OfferShippingDetails goes wrong:
- “
shippingDetailsis required for Product rich results.” (terjemahan) “undefined adalah diperlukan untuk Product rich hasil.” ini isn’t — ini adalah sebuah recommended property untuk shipping-detail enhancement. hanyaprice(>0 untuk merchant listings) danpriceCurrencyadalah diperlukan. (Separately, shipping info dari beberapa form adalah diperlukan untuk free listings di ~30 countries — sebuah berbeda thing.) - “Adding OfferShippingDetails guarantees my shipping cost shows.” (terjemahan) “menambahkan OfferShippingDetails guarantees my shipping cost menampilkan.” No. sebuah Merchant Center feed nilai atau sebuah Search Console setting sits higher di precedence stack dan dapat silently override valid markup — dengan no error until sebuah eventual listing rejection. periksa higher tiers sebelum Anda touch markup.
- “
ShippingServicereplaces / deprecatesOfferShippingDetails.” (terjemahan) “undefined replaces / deprecates undefined.” No.OfferShippingDetailsadalah ongoing override di bawahOffer. hanya certain redundant fields insideShippingRateSettingsadalah deprecated — not jenis. - Conflating two axes. “Author your default at the org level” (terjemahan) “Author Anda default di org tingkat” (authoring) dan “product-level markup outranks org-level in a conflict” (terjemahan) “product-tingkat markup outranks org-tingkat di sebuah conflict” (precedence) adalah both benar dan jawaban berbeda pertanyaan. Don’t alasan sebagai jika one contradicts lainnya.
- Collapsing
deliveryTimeke one angka. ini adalahhandlingTime(Anda processing delay) plustransitTime( carrier’s delay). Publishing sebuah single dibuat-up “shipping time” (terjemahan) “shipping time” misstates both — dan jika ini disagrees dengan checkout, risks rejection. - Markup itu disagrees dengan feed atau checkout. Because stronger sources override completely, sebuah shipping cost di Anda markup itu doesn’t match Anda feed atau actual checkout adalah sebuah rejection risk, not sebuah harmless duplicate. pertahankan them identical.
- “Schema is dying, so skip shipping markup.” (terjemahan) “Schema adalah dying, so skip shipping markup.” ini conflates January 2026 Search Console sunset dari sebuah few unrelated, underused jenis dengan shipping schema — which adalah expanded di November 2025, not cut.
- “Structured data like this will help rankings.” (terjemahan) “data terstruktur like ini akan help rankings.” No — ini earns rich-hasil eligibility, tidak pernah sebuah peringkat boost (Mueller, repeatedly).
umum shipping-markup issues
Validator accepts JSON-LD tetapi shipping data adalah wrong
Cause: valid syntax dapat masih berisi stale regions, rates, atau timing. Fix: reconcile markup dengan checkout dan feed/business-policy data.
Shipping detail appear untuk wrong destination
Cause: destination constraints adalah missing atau modeled di wrong tingkat. Fix: map setiap service dan destination explicitly dan test representative addresses.
Multiple shipping sources disagree
Cause: halaman markup, Merchant Center, dan account settings adalah maintained separately. Fix: choose sebuah operational sumber kebenaran dan synchronize setiap surface.
Validation tests
Test published shipping markup
Test untuk run — validate representative product halaman dan compare parsed destinations, rates, handling, dan transit nilai dengan checkout. Expected hasil — eligible markup matches what sebuah pengguna menerima. Failure interpretation — mapping atau source data adalah incomplete. Monitoring window — immediate. Rollback trigger — hapus rollout jika ini publishes materially wrong shipping promises.
Test source consistency
Test untuk run — compare halaman JSON-LD, feed/account shipping settings, dan checkout untuk yang sama products dan destinations. Expected hasil — no unexplained conflict. Failure interpretation — separate sistem memiliki drifted. Monitoring window — setelah setiap policy perubahan. Rollback trigger — restore last consistent configuration jika sebuah perubahan membuat mismatches.
Test yourself: OfferShippingDetails Schema
Five quick pertanyaan pada how OfferShippingDetails berfungsi dan where ini fits setelah November 2025 restructure. Pick sebuah jawaban untuk setiap, lalu periksa.
Resources worth Anda time
My related writing
- data terstruktur: What ini adalah dan cara gunakan ini — my Ahrefs guide untuk schema jenis, implementation, validation, dan
sameAsrisk; broader context ini shipping jenis sits inside. - Beginner’s Guide untuk SEO teknis — where data terstruktur fits di wider technical picture.
My speaking
- How Search berfungsi (SlideShare) — my walkthrough dari crawling, rendering, pengindeksan, dan how markup adalah consumed. (My standing disclaimer applies: “This is my understanding of systems… not going to be 100% complete or accurate.” (terjemahan) “ini adalah my understanding dari sistem… not going untuk menjadi 100% complete atau accurate.”)
Official
- Google — Merchant listing data terstruktur dan Shipping policy (ShippingService) — two reference docs itu define diperlukan/recommended properties dan org-tingkat/offer-tingkat relationship.
- Google — More cara untuk share Anda shipping dan mengembalikan policies (Nov 12, 2025) — announcement dari Search Console settings + org-tingkat
ShippingService. - schema.org — OfferShippingDetails · ShippingDeliveryTime · ShippingService — vocabulary itself.
- schema.org proposal #3617 — GitHub issue (Irina Tuduce, Google) behind restructure.
dari sekitar industry
- Google Launches data terstruktur untuk Merchant Shipping Policies (mesin pencari Journal, Matt G. Southern, Nov 12 2025) — clearest bylined write-up dari November 2025 launch dan tie-break logic.
- Google adalah Not Diminishing gunakan dari data terstruktur di 2026 (mesin pencari Journal, Roger Montti, Nov 11 2025) — disambiguates January 2026 Search Console jenis sunset dari shipping-schema expansion.
- Google Updates data terstruktur Requirements untuk kembalikan Policies (mesin pencari Journal, Mar 14 2025) — March 2025
returnPolicyCountrytightening pada sibling kembalikan-policy jenis. - Google shipping dan mengembalikan policies di Search Console atau menggunakan baru markup (mesin pencari Land) — Search Console-vs-markup options laid out.
- Google Shipping & kembalikan Settings (magstags) — strongest practitioner piece pada precedence stack (“there is no blending” (terjemahan) “tidak ada blending”) dan silent-failure trap.
- Google expands shipping policy options untuk online merchants (ppc.land) — corroborating coverage dari November 2025 perubahan.
Log perubahan
Diperbarui 18 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.