Descripción general de la API de Promociones

Usa promociones para mostrar ofertas especiales de los productos que vendes en Google. Las promociones se muestran en diferentes Propiedades de Google, como la Búsqueda de Google, Shopping y Chrome.

Cuando agregas promociones a tus productos, los compradores ven un vínculo de oferta especial, por ejemplo, “15% de descuento” o “Envío gratis”. Los vínculos de ofertas pueden aumentar el atractivo de tus productos y alentar a los compradores a realizar compras.

Para obtener más información, consulta Conceptos básicos de las promociones.

Requisitos previos

Google requiere que proporciones información específica sobre tu empresa y tus productos antes de mostrar tus promociones. Debes tener lo siguiente:

Además, debes inscribir tu cuenta de comerciante en el programa Promociones. Si no estás seguro de si ya te inscribiste, consulta Merchant Center.

Si no estás inscrito, completa el formulario de solicitud. El equipo de promociones te avisará cuando todo esté listo para comenzar con la implementación.

Para obtener más información, consulta criterios y políticas de participación.

Cómo crear una fuente de datos

Usa la API de datasource.create para crear un feed de promociones. Si hay un feed de promociones existente disponible, usa el método accounts.dataSources.get para recuperar el nombre de la fuente de datos.

El formato de la solicitud es el siguiente:

POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{account}/dataSources

Ejemplo

En el ejemplo, se muestra una solicitud y una respuesta típicas.

Solicitud:

POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/123/dataSources {"displayName": "test api feed", "promotionDataSource":{"targetCountry":"US", "contentLanguage":"en"}}

Respuesta:

{
  "name": "accounts/123/dataSources/1000000573361824",
  "dataSourceId": "1000000573361824",
  "displayName": "test api feed",
  "promotionDataSource": {
    "targetCountry": "US",
    "contentLanguage": "en"
  },
  "input": "API"
}

Crea promociones

Puedes usar el método accounts.promotions.insert para crear o actualizar una promoción. El método accounts.promotions.insert toma un recurso promotions y un nombre de fuente de datos como entrada. Devuelve la promoción nueva o actualizada si se realiza correctamente.

Para crear una promoción, se requiere el nombre de la fuente de datos.

Google revisa y aprueba tus promociones antes de distribuirlas. Para obtener más información, consulta el proceso de aprobación de promociones.

El formato de la solicitud:

POST https://merchantapi.googleapis.com/promotions/v1beta/{parent=accounts/*/}promotions:insert

Consulta los siguientes ejemplos de promociones como referencia.

Ejemplo 1: Una promoción local aplicable a todos los productos y todas las tiendas

POST https://merchantapi.googleapis.com/promotions/v1beta/accounts/123/promotions:insert

{
  "promotion": {
    "promotionId": "buy_2_get_10_off",
    "contentLanguage": "en",
    "targetCountry": "US",
    "redemptionChannel": [
      "IN_STORE"
    ],
    "attributes": {
      "longTitle": "Buy 2 and get 10$ OFF purchase",
      "productApplicability": "ALL_PRODUCTS",
      "offerType": "NO_CODE",
      "couponValueType": "BUY_M_GET_MONEY_OFF",
      "promotionDisplayTimePeriod": {
        "startTime": "2024-2-06T00:47:44Z",
        "endTime": "2024-5-06T00:47:44Z"
      },
      "promotionEffectiveTimePeriod": {
        "startTime": "2024-2-06T00:47:44Z",
        "endTime": "2024-5-06T00:47:44Z"
      },
      "moneyOffAmount": {
        "amountMicros": "1000000",
        "currencyCode": "USD"
      },
      "minimumPurchaseQuantity": 2,
      "storeApplicability": "ALL_STORES",
      "promotionUrl": "http://promotionnew4url.com/",
      "promotionDestinations": [
        "LOCAL_INVENTORY_ADS"
      ],
    }
  },
  "dataSource": "accounts/123/dataSources/1000000573361824"
}

Ejemplo 2: Una promoción en línea que se aplica a productos seleccionados con un código de canje

POST https://merchantapi.googleapis.com/promotions/v1beta/accounts/123/promotions:insert

{
 "promotion": {
   "promotionId": "25_pct_off",
   "contentLanguage": "en",
   "targetCountry": "US",
   "redemptionChannel": [
     "ONLINE"
   ],
   "attributes": {
     "longTitle": "10% off on selected items",
     "productApplicability": "SPECIFIC_PRODUCTS",
     "offerType": "GENERIC_CODE",
     "genericRedemptionCode": "SPRINGSALE",
     "couponValueType": "PERCENT_OFF",
     "promotionDisplayTimePeriod": {
       "startTime": "2024-2-06T00:47:44Z",
       "endTime": "2024-5-06T00:47:44Z"
     },
     "promotionEffectiveTimePeriod": {
       "startTime": "2024-2-06T00:47:44Z",
       "endTime": "2024-5-06T00:47:44Z"
     },
     "percentOff": 25,
     "promotionDestinations": [
       "FREE_LISTINGS"
     ],
     "itemIdInclusion": [
       "1499860100",
       "1499860101",
       "1499860102",
       "1499860103",
       "1499860104"
     ],
   }
 },
 "dataSource": "accounts/123/dataSources/1000000573361824"
}

Notas especiales

Después de crear la promoción, esta puede tardar unos minutos en aparecer en la base de datos de Shopping.

Para obtener una lista de los atributos relacionados con las promociones, consulta Agrega atributos de datos estructurados.

Antes de crear y administrar promociones, consulta Prácticas recomendadas para promociones.

Ver promociones

Para ver una promoción, usa accounts.promotions.get. Este get es de solo lectura. Para ello, se requiere tu merchantId y el ID de la promoción. El método get muestra el recurso de promociones correspondiente.

Por ejemplo:

GET https://merchantapi.googleapis.com/promotions/v1beta/{name=accounts/*/promotions/*}

Estudia estos ejemplos.

Ejemplo 1: Una promoción local

GET https://merchantapi.googleapis.com/promotions/v1beta/accounts/123/promotions/in_store~en~US~buy_2_get_10_off

{
 "name": "accounts/123/promotions/in_store~en~US~buy_2_get_10_off",
 "promotionId": "buy_2_get_10_off",
 "contentLanguage": "en",
 "targetCountry": "US",
 "redemptionChannel": [
   "IN_STORE"
 ],
 "attributes": {
   "longTitle": "Buy 2 and get 10$ OFF purchase",
   "productApplicability": "ALL_PRODUCTS",
   "offerType": "NO_CODE",
   "couponValueType": "BUY_M_GET_MONEY_OFF",
   "promotionDisplayTimePeriod": {
     "startTime": "2024-2-06T00:47:44Z",
     "endTime": "2024-5-06T00:47:44Z"
   },
   "promotionEffectiveTimePeriod": {
     "startTime": "2024-2-06T00:47:44Z",
     "endTime": "2024-5-06T00:47:44Z"
   },
   "moneyOffAmount": {
     "amountMicros": "1000000",
     "currencyCode": "USD"
   },
   "minimumPurchaseQuantity": 2,
   "storeApplicability": "ALL_STORES",
   "promotionUrl": "http://promotionnew4url.com/",
   "promotionDestinations": [
     "LOCAL_INVENTORY_ADS"
   ],
 }
 "dataSource": "accounts/123/dataSources/1000000573361824"
}

Ejemplo 2. Una promoción en línea

GET https://merchantapi.googleapis.com/promotions/v1beta/accounts/123/promotions/online~en~US~25_pct_off
{
 "name": "accounts/123/promotions/online~en~US~25_pct_off",
 "promotionId": "25_pct_off",
 "contentLanguage": "en",
 "targetCountry": "US",
 "redemptionChannel": [
   "ONLINE"
 ],
 "attributes": {
   "longTitle": "10% off on selected items",
   "productApplicability": "SPECIFIC_PRODUCTS",
   "offerType": "GENERIC_CODE",
   "genericRedemptionCode": "WINTERGIFT",
   "couponValueType": "PERCENT_OFF",
   "promotionDisplayTimePeriod": {
     "startTime": "2024-2-06T00:47:44Z",
     "endTime": "2024-5-06T00:47:44Z"
   },
   "promotionEffectiveTimePeriod": {
     "startTime": "2024-2-06T00:47:44Z",
     "endTime": "2024-5-06T00:47:44Z"
   },
   "percentOff": 25,
   "promotionDestinations": [
     "FREE_LISTINGS"
   ],
   "itemIdInclusion": [
     "1499860100",
     "1499860101",
     "1499860102",
     "1499860103",
     "1499860104"
   ],
 }
 "dataSource": "accounts/{account}/dataSources/{dataSource}"
}

Cómo ver la lista de promociones

Puedes usar el método promotions.list para ver todas las promociones creadas.

GET https://merchantapi.googleapis.com/promotions/v1beta/{parent=accounts/*}/promotions

Estado de la promoción

Para ver el estado de una promoción, puedes consultar el atributo promotionStatus que muestran promotions.get y promotions.list.

Para comprender el proceso de aprobación, consulta el proceso de aprobación de promociones.

Ejemplo de estado de la promoción

En los siguientes ejemplos, se muestra la diferencia entre las solicitudes que se realizan correctamente y las que fallan.

Ejemplo 1: En el siguiente cuerpo de respuesta, se muestra una promoción en línea que se rechazaría debido a que falta la asignación de productos.

  "promotionStatus": {
    "destinationStatuses": [
      {
        "reportingContext": "FREE_LISTINGS",
        "status": "REJECTED"
      }
    ],
    "itemLevelIssues": [
      {
        "code": "promotion_sku_unmapped",
        "severity": "DISAPPROVED",
        "resolution": "merchant_action",
        "reportingContext": "FREE_LISTINGS",
        "description": "Unmapped",
        "detail": "This promotion couldn't be tested during review because it doesn't apply to any products that are currently in your Products feed",
        "documentation": "https://support.google.com/merchants/answer/2906014",
        "applicableCountries": [
          "US"
        ]
      },
      {
        "code": "promotion_sku_additional_requirements",
        "severity": "DISAPPROVED",
        "resolution": "merchant_action",
        "reportingContext": "FREE_LISTINGS",
        "description": "Promotion conditions not allowed",
        "detail": "This promotion has additional requirements that are not allowed such as requiring customers to verify additional details like phone number or ID before showing the promotion details",
        "documentation": "https://support.google.com/merchants/answer/2906014",
        "applicableCountries": [
          "US"
        ]
      }
    ]
  }

Ejemplo 2. En el siguiente cuerpo de respuesta, se muestra una promoción que aún se está evaluando.

  "promotionStatus": {
    "destinationStatuses": [
      {
        "reportingContext": "FREE_LISTINGS",
        "status": "PENDING"
      },
      {
        "destination": "SHOPPING_ADS",
        "status": "PENDING"
      }
    ],
    "itemLevelIssues": []
  }

Ejemplo 3. Una promoción aprobada y publicada

  "promotionStatus": {
    "destinationStatuses": [
      {
        "reportingContext": "FREE_LISTINGS",
        "status": "LIVE"
      },
      {
        "destination": "SHOPPING_ADS",
        "status": "LIVE"
 }  ],
    "itemLevelIssues": []
  }

Más información

Para obtener más detalles, consulta el Centro de ayuda de Promociones.

Para obtener información sobre cómo migrar desde Content API for Shopping, consulta Cómo migrar la administración de promociones.