El schema de envíos (OfferShippingDetails) declara en datos cuánto cuesta y cuánto demora tu despacho por zona: Lima Metropolitana con su tarifa y plazo, provincias con los suyos. Con ese bloque, un agente de IA puede calcular el costo total de comprarte (producto más envío) y compararlo contra otras tiendas sin adivinar. Aquí tienes el código por zonas listo para adaptar, el paso a paso en WooCommerce y los errores que arruinan la declaración.
Tabla de Contenidos
¿Por qué declarar los envíos en datos?
Porque cuándo llega y cuánto me cobran por traerlo deciden más compras que el precio mismo, y son las preguntas que tu web suele responder peor: tarifas escondidas hasta el último paso del checkout, plazos en un banner que ninguna máquina lee. El comprador humano lo sufre; el agente de compra directamente te descarta, porque no recomienda lo que no puede calcular.
Declarar envíos es parte del estándar de legibilidad que venimos armando en este cluster (la visión completa está en qué es el comercio agéntico) y en nuestras tiendas virtuales se configura junto a las zonas de envío de WooCommerce: una sola matriz comercial, declarada en todos los formatos.
¿Cómo calcula un agente tu total con envío?
Sigamos el razonamiento de la máquina con un ejemplo. El usuario pide: necesito este taladro en Surco antes del viernes, presupuesto S/ 420. El agente encuentra dos tiendas. La tienda A declara: precio S/ 389, envío a Lima S/ 15, entrega en 1 a 2 días. Total calculable: S/ 404, dentro del presupuesto y del plazo: recomendable. La tienda B muestra precio S/ 379 y nada más: el envío es una incógnita que puede ser S/ 10 o S/ 40, y el plazo un misterio.
Resultado: la tienda A gana la recomendación costando S/ 25 más, porque su total es un dato y el de B es una apuesta. Esa es la matemática del comercio agéntico: la certeza vale más que el descuento. Y la certeza se declara, no se promete.
El código por zonas: Lima y provincias
Dentro de offers en tu schema Product, declara un bloque por zona. Valores de ejemplo con tarifas referenciales:
"shippingDetails": [
{
"@type": "OfferShippingDetails",
"shippingRate": { "@type": "MonetaryAmount", "value": "15.00", "currency": "PEN" },
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "PE",
"addressRegion": "Lima Metropolitana"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
"transitTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 2, "unitCode": "DAY" }
}
},
{
"@type": "OfferShippingDetails",
"shippingRate": { "@type": "MonetaryAmount", "value": "25.00", "currency": "PEN" },
"shippingDestination": { "@type": "DefinedRegion", "addressCountry": "PE" },
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
"transitTime": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 4, "unitCode": "DAY" }
}
}
]
Lectura del bloque: shippingRate es la tarifa con moneda PEN; shippingDestination define la zona (la primera acotada a Lima Metropolitana, la segunda como resto del país); y deliveryTime separa el tiempo de preparación (handlingTime: cuánto tardas en despachar) del tránsito (transitTime: cuánto viaja el paquete). Esa separación importa: un agente que ve handling de 0 a 1 día entiende que despachas rápido aunque el courier demore.
Paso a paso: envíos declarados en WooCommerce
Paso 1: Mapea tus zonas y tarifas reales
Antes de tocar código, resuelve la matriz comercial: qué cobras y cuánto demoras en Lima Metropolitana, en provincias por agencia y en recojo en tienda si lo ofreces. Usa las tarifas que ya definiste en las zonas de envío de WooCommerce. Resultado verificable: una tabla de tres filas con zona, costo y plazo que cualquiera de tu equipo confirma.
Paso 2: Publica la página de envíos en texto
Crea o actualiza la página de envíos con esa matriz en HTML real: zonas, costos, plazos, condiciones (mínimo para envío gratis, pago en destino si aplica). Enlázala desde el pie y desde las fichas. Resultado verificable: la política de envíos se lee desde cualquier producto en un clic, sin PDF ni imágenes.
Paso 3: Implementa el bloque para Lima
Agrega el shippingDetails de Lima al schema de tus productos con tarifa y plazos reales (el código de arriba es tu plantilla). Si usas un plugin de schema, completa sus campos de envío con estos valores. Resultado verificable: el bloque aparece en el código fuente de la ficha con los valores de Lima.
Paso 4: Agrega la definición de provincias
Suma el segundo bloque con la región ampliada, su tarifa y sus plazos de agencia. Si tu matriz distingue costa, sierra y selva, evalúa si la diferencia justifica más bloques o si un rango representativo honesto comunica mejor. Resultado verificable: ambas zonas declaradas sin contradecir la página de envíos.
Paso 5: Valida en la prueba de resultados enriquecidos
Pasa dos o tres fichas por el validador de Google: la advertencia de shippingDetails debe desaparecer y los valores detectados deben calcar tu página. Resultado verificable: cero errores y tarifas idénticas en markup y página.
Paso 6: Sincroniza el feed si lo usas
Completa los atributos de envío en tu feed de Merchant con los mismos valores por zona. Una sola matriz de envíos, tres salidas: página, schema y feed. Resultado verificable: el diagnóstico de Merchant no reporta conflictos de envío.
¿Y las tarifas variables por peso o por distrito?
La pregunta correcta no es cómo declaro mis 40 tarifas, sino qué dato representativo orienta sin mentir. Si tu flete varía por peso, declara la tarifa del rango más vendido y publica la tabla completa en la página de envíos. Si varía por distrito dentro de Lima, usa la tarifa que cubre a la mayoría y aclara las excepciones (zonas periféricas con recargo) en texto.
El estándar tolera la simplificación honesta; lo que castiga es el silencio y la mentira. Un agente trabaja perfectamente con envío a Lima S/ 15, zonas periféricas con recargo publicado; no puede trabajar con consultar costo de envío.
Errores comunes al declarar envíos
Tarifa del markup distinta a la del checkout: la contradicción clásica, detectada por validadores y sufrida por clientes. La fuente debe ser una: tus zonas de WooCommerce.
Declarar solo Lima y callar provincias: el agente que busca para un cliente de Arequipa te interpreta como tienda que no despacha allá.
Plazos de fantasía: prometer 24 horas que cumples a veces. Declara el rango real; el priceValidUntil de la confianza es cumplir lo dicho.
Y olvidar la actualización: subiste el flete en enero y el schema sigue en la tarifa del año pasado. Cada cambio de tarifas tiene tres paradas: página, schema y feed.
Preguntas frecuentes
¿Cómo declaro el envío gratis a partir de un monto mínimo?
Declara la tarifa base real en el schema y publica la regla del mínimo en tu página de envíos en texto claro (envío gratis desde S/ 199, por ejemplo). Los agentes leen ambas fuentes y entienden la condición. Lo que no debes hacer es declarar tarifa cero a secas cuando solo aplica con mínimo: esa media verdad se descubre en el checkout y anula la confianza.
¿Qué hago si despacho por courier con pago en destino?
Es común en provincias: el cliente paga el flete al recibir. Decláralo con el rango referencial de la agencia en tu página de envíos (de S/ 15 a S/ 30 según destino, como referencia) y aclara que el cobro es en destino. Para el schema, usa el valor representativo y deja la condición explicada en texto: dato aproximado pero honesto le gana al silencio.
¿WooCommerce genera este markup automáticamente?
Las zonas de envío de WooCommerce calculan el costo en el checkout, pero ese cálculo no se publica solo como schema en la ficha. El markup lo agrega tu plugin de SEO o de schema (y el feed lo lleva a Merchant Center por su lado). La buena noticia: las tarifas ya definidas en tus zonas de WooCommerce son la fuente exacta para completar los valores del código.
¿Declaro también el recojo en tienda?
Sí, y es de las señales locales más valiosas: costo cero, disponibilidad inmediata y una dirección física verificable que refuerza tu legitimidad ante agentes y compradores. Decláralo en la página de envíos con dirección y horario, y asegúrate de que tu Perfil de Empresa de Google diga lo mismo. Para el comprador apurado, el recojo hoy le gana al delivery de mañana.
Arma hoy tu matriz de tres filas (Lima, provincias, recojo) con costo y plazo reales: es media hora de trabajo y es la fuente de todo lo demás. ¿Quieres la declaración completa funcionando (página, schema validado y feed) sin pelearte con el código? Pide tu propuesta en el cotizador online.








