Prácticas recomendadas

En esta guía, se destacan los requisitos y los ejemplos de las ofertas de pedidos de comida.

Elegibilidad y políticas

En esta sección, se destacan los criterios de elegibilidad importantes que los socios deben cumplir cuando proporcionan ofertas. Es importante que pruebes todos los tipos de ofertas que planeas lanzar durante las pruebas del feed en la zona de pruebas. Si no sabes si una oferta es apta, comunícate con tu PDC de Google.

Excluye las ofertas personalizadas y de un solo uso

Para garantizar una experiencia del usuario coherente y de alta calidad, los socios no deben incluir ofertas restringidas a subconjuntos específicos de usuarios. Las ofertas personalizadas creadas solo para usuarios específicos no son aptas. Se permiten las ofertas para toda la plataforma aptas para todos los usuarios, como los usuarios nuevos o los que realizan su primer pedido en un restaurante en particular, siempre que la oferta se muestre en la página de destino de la oferta para todos los usuarios. Las condiciones de la oferta deben indicarse claramente en el título de la oferta y en la página de destino de la URL de la oferta. Las ofertas deben ser visibles en la página de destino de la oferta para todos los usuarios, ya sea que hayan accedido a tu sitio o aplicación, o no.

Ofertas con códigos de cupón

Algunas ofertas requieren que el usuario ingrese un código de cupón, como "Aplica el código AHORRA20 para obtener un 20% de descuento en la factura total". Es importante tener en cuenta que Google no muestra los códigos de cupón de la definición de cupón. Los socios pueden incluir esta información en OfferDetails.offer_display_text para que se muestre a los usuarios. Por lo general, las ofertas basadas en cupones se dividen en dos categorías:

  • Ofertas en las que el cupón se presenta automáticamente en la confirmación de compra a cualquier usuario que llegue desde Google. Estos se permiten.
  • No se permiten las ofertas que requieren que el usuario ingrese el código del cupón en la confirmación de compra, pero no proporcionan instrucciones para aplicar el código del cupón en la página de destino de la URL de la oferta ni aplican automáticamente el cupón cuando se sigue la URL de la oferta.

Estructura y contenido de la oferta

En esta sección, se detallan los requisitos para el contenido y la estructura de las ofertas proporcionadas en el feed, incluidos ejemplos de los metadatos estructurados.

Texto de la oferta que se muestra y especificación de la oferta

OfferDetails.offer_display_text es un campo obligatorio que funciona como título conciso para la visibilidad inmediata en la sección de ofertas de la Búsqueda de Google, como "USD 10 de descuento" o "Ahorra un 15%".

OfferDetails.offer_specification es un campo obligatorio "uno de" dentro de OfferDetails. Esto significa que se debe proporcionar exactamente uno de los siguientes tres campos para especificar el acuerdo:

  • discount_value
  • discount_percent
  • other_offer_detail_text

El campo OfferDetails.other_offer_detail_text es un campo de texto de formato libre que se usa para complementar el offer_display_text cuando la oferta no se puede expresar como un valor o porcentaje de descuento fijo. Si el campo offer_display_text ya es suficiente para transmitir toda la información necesaria sobre la oferta, el campo other_offer_detail_text debe completarse con el mismo texto que el campo offer_display_text. Sin embargo, en el caso de las ofertas complejas, este campo debe proporcionar una descripción específica de la recompensa.

Campos de metadatos estructurados

Para mejorar la claridad de las ofertas y permitir una mejor clasificación y filtrado, los socios deben proporcionar metadatos de las ofertas en los campos estructurados correspondientes. Es obligatorio especificar los términos. Se recomienda configurar el campo terms.terms_and_conditions con las condiciones detalladas que se muestran a los usuarios en la página de destino de la oferta.

Ofertas totales y específicas de artículos

Las ofertas específicas para subconjuntos de artículos deben usar los campos offer_restrictions.inclusions y offer_restrictions.exclusions para definir los artículos aptos. Si la oferta es para un artículo específico, el nombre del artículo debe incluirse en offer_display_text. Cuando el nombre del elemento se incluye en offer_display_text, no es necesario configurar offer_restrictions.inclusions.

Si no se configura offer_restrictions.inclusions o si el nombre del artículo no se incluye en offer_display_text, se considera que la oferta se aplica al importe total del pedido.

Ofertas de tarifas por entrega

Las ofertas de cargos de entrega deben usar offer_category OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFER. Esto permite que la oferta se muestre solo cuando se combina con otra oferta básica para la ubicación. La oferta de tarifa de entrega no se mostrará como oferta base.

Ejemplos de JSON de ofertas

USD 20 de descuento fijo

Ejemplo: USD 20 de descuento en el pedido total los martes con una compra mínima de USD 15

{
  "offer_id": "offer-example-1-takeout",
  "offer_source": "OFFER_SOURCE_AGGREGATOR",
  "action_type": "ACTION_TYPE_FOOD_TAKEOUT",
  "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
  "offer_category": "OFFER_CATEGORY_BASE_OFFER",
  "offer_details": {
    "offer_display_text": "$20 off on Tuesdays",
    "discount_value": {
      "currency_code": "USD",
      "units": 20
    },
    "min_spend_value": {
      "currency_code": "USD",
      "units": 15
    }
  },
  "validity_periods": [
    {
      "valid_period": {
        "valid_from_time": { "seconds": 1768953600 },
        "valid_through_time": { "seconds": 1795219200 }
      },
      "time_of_day": [
        {
          "time_windows": {
            "open_time": { "hours": 9 },
            "close_time": { "hours": 20, "minutes": 59, "seconds": 59 }
          },
          "day_of_week": ["TUESDAY"]
        }
      ]
    }
  ],
  "offer_restrictions": {
    "combinable_with_other_offers": false
  },
  "terms": {
    "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders with $15 minimum spend. Single use per order. Offer may not be combined with any other offers, discounts, or promotions. Valid only on Tuesdays."
  },
  "entity_ids": ["dining-1"],
  "offer_url": "https://www.example-restaurant.com/offer/base_offer_1"
}

50% de descuento en el batido de frutos del bosque

Ejemplo: Oferta del 50% de descuento a nivel del artículo.

{
  "offer_id": "offer-example-1-takeout",
  "offer_source": "OFFER_SOURCE_AGGREGATOR",
  "action_type": "ACTION_TYPE_FOOD_TAKEOUT",
  "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
  "offer_category": "OFFER_CATEGORY_BASE_OFFER",
  "offer_details": {
    "offer_display_text": "50% off on Berry Smoothie",
    "discount_percent": 50.0
  },
  "validity_periods": [
    {
      "valid_period": {
        "valid_from_time": { "seconds": 1768953600 },
        "valid_through_time": { "seconds": 1795219200 }
      }
    }
  ],
  "offer_restrictions": {
    "combinable_with_other_offers": true,
    "inclusions": [
      {"description":"Berry Smoothie"}
    ]
  },
  "terms": {
    "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order."
  },
  "entity_ids": ["dining-1"],
  "offer_url": "https://www.example-restaurant.com/offer/base_offer_1"
}

Oferta de Compre uno y obtenga otro gratis

Ejemplo: Oferta de compra un aperitivo y obtén otro gratis, válida de lunes a jueves

{
  "offer_id": "offer-example-2-delivery",
  "offer_source": "OFFER_SOURCE_AGGREGATOR",
  "action_type": "ACTION_TYPE_FOOD_DELIVERY",
  "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
  "offer_category": "OFFER_CATEGORY_BASE_OFFER",
  "offer_details": {
    "offer_display_text": "Buy one appetizer, get one free",
    "other_offer_detail_text": "Buy one appetizer, get one free"
  },
  "validity_periods": [
    {
      "valid_period": {
        "valid_from_time": { "seconds": 1768953600 },
        "valid_through_time": { "seconds": 1795219200 }
      },
      "time_of_day": [
        {
          "time_windows": {
            "open_time": { "hours": 10 },
            "close_time": { "hours": 23, "minutes": 59, "seconds": 59 }
          },
          "day_of_week": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY"]
        }
      ]
    }
  ],
  "offer_restrictions": {
    "combinable_with_other_offers": true,
    "inclusions": [
      {
        "description": "appetizers"
      }
    ]
  },
  "terms": {
    "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order. Valid on all menu appetizers. Offer may be combined with any other offers, discounts, or promotions. Valid Monday through Thursday."
  },
  "entity_ids": ["dining-1"],
  "offer_url": "https://www.example-restaurant.com/offer/base_offer_4"
}

Oferta de entrega gratuita

Ejemplo: Envío gratis como complemento de una oferta básica. La oferta de cargos por entrega de USD 0 se mostrará con cualquier oferta base para la ubicación.

[
  {
    "offer_id": "offerId1",
    "offer_source": "OFFER_SOURCE_AGGREGATOR",
    "action_type": "ACTION_TYPE_FOOD_DELIVERY",
    "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
    "offer_category": "OFFER_CATEGORY_BASE_OFFER",
    "offer_details": {
      "offer_display_text": "10% off",
      "discount_percent": 10.0
    },
    "validity_periods": [
      {
        "valid_period": {
          "valid_from_time": { "seconds": 1768953600 },
          "valid_through_time": { "seconds": 1795219200 }
        },
        "time_of_day": [
          {
            "day_of_week": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY"]
          }
        ]
      }
    ],
    "offer_restrictions": {
      "combinable_with_other_offers": true,
      "combinable_offer_categories": ["OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER"]
    },
    "terms": {
      "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order. Offer may be combined with any other offers, discounts, or promotions."
    },
    "entity_ids": ["dining-1"],
    "offer_url": "https://www.example-restaurant.com/offer/base_offer_5"
  },
  {
    "offer_id": "offerId2",
    "offer_source": "OFFER_SOURCE_AGGREGATOR",
    "action_type": "ACTION_TYPE_FOOD_DELIVERY",
    "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
    "offer_category": "OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFER",
    "offer_details": {
      "offer_display_text": "$0 Delivery Fee",
      "other_offer_detail_text": "Free dellivery"
    },
    "validity_periods": [
      {
        "valid_period": {
          "valid_from_time": { "seconds": 1768953600 },
          "valid_through_time": { "seconds": 1795219200 }
        }
      }
    ],
    "offer_restrictions": {
      "combinable_with_other_offers": true
    },
    "terms": {
      "terms_and_conditions": "Delivery is free at the participating restaurant location on qualifying delivery or takeout orders. Single use per order. Offer may be combined with any other offers, discounts, or promotions."
    },
    "entity_ids": ["dining-1"],
    "offer_url": "https://www.example-restaurant.com/offer/addon_offer_1"
  }
]

Cumplimiento y restricciones

En esta sección, se detallan los requisitos y las prácticas recomendadas relacionados con las especificaciones de cumplimiento de la oferta y las restricciones asociadas.

Modo de preparación de pedidos (entrega y retiro)

Si una sola oferta se aplica tanto al envío como al retiro, debe tener dos ofertas en el feed. Cada entrada debe tener un ActionType dedicado:

  • ACTION_TYPE_FOOD_DELIVERY
  • ACTION_TYPE_FOOD_TAKEOUT

Esto garantiza que los usuarios que lleguen al sitio del socio vean el contexto de cumplimiento correcto.

Períodos

Se espera que las ofertas se muestren en la página de destino de la oferta para todos los usuarios, ya sea que hayan accedido o no a tu sitio o aplicación. Si la oferta es válida durante un período específico, debes incluir el campo validity_periods.valid_period para especificar el período válido. Esto evita que la oferta se muestre fuera del período. El período también se debe establecer si la oferta se muestra en la URL de la oferta durante ciertas horas del día. Por ejemplo, si la página de destino no muestra ofertas cuando el restaurante está cerrado, debes incluir los horarios de apertura y cierre de TimeOfDayWindow.

Cómo controlar los períodos que cruzan la medianoche

Las ofertas que abarcan la medianoche (p. ej., válidas desde las 10:00 p.m. del martes hasta las 2:00 a.m. del miércoles) deben segmentarse para que la canalización de transferencia las procese correctamente. Requisito: Usa el campo TimeOfDayWindow para dividir la ventana en dos segmentos distintos:

  • Segmento 1: De 10:00 p.m. a 11:59:59 p.m. del día de inicio (p. ej., martes).
  • Segmento 2: De 12:00 a.m. a 2:00 a.m. del día siguiente (p. ej., miércoles)

Esto garantiza que la validez de la oferta se refleje con precisión durante todo el período.

Especificaciones de las tarifas

Las tarifas de entrega y comida para llevar se pueden especificar con el campo OfferDetails.additional_fees. Se debe especificar una comisión por servicio con OfferDetails.convenience_fee. Usa un valor de rango de comisión para las comisiones variables, por ejemplo, si las comisiones de entrega cambian según la ubicación del usuario.