Descripción general de la API de Promociones

Usa promociones para mostrar ofertas especiales de 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 una compra.

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

Requisitos previos

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

Además, debe inscribir su cuenta de comerciante en el programa Promociones. Si no sabes si ya te inscribiste, consulta Merchant Center.

Si no te inscribiste, completa el formulario de solicitud. El equipo de promociones te avisará cuando todo esté listo para comenzar 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 promoción existente disponible, usa fuente de datos.get para recuperar el atributo datasource.get

La forma de la solicitud es la siguiente:

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

Ejemplo

El ejemplo 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 datasource.name.

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

Estudia los siguientes ejemplos de promociones como referencia.

Ejemplo 1: Una promoción local aplicable a todos los productos y 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"
      },
      "minimum_purchase_quantity": 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 crearla, es posible que tarde unos minutos en crearla.

Para obtener una lista de atributos relacionados con las promociones, consulta Cómo agregar atributos de datos estructurados.

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

Ver promociones

Para ver una promoción, usa accounts.promotions.get. Este get es de solo lectura. 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 estas muestras.

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"
   },
   "minimum_purchase_quantity": 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}"
}

Mostrar 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 consultar 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 Proceso de aprobación de promociones.

Estado de promoción de muestra

En los siguientes ejemplos, se demuestra la diferencia entre las solicitudes exitosas y las fallidas.

Ejemplo 1: En el siguiente cuerpo de respuesta, se muestra una promoción en línea que se rechazaría debido a la falta de una 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: El siguiente cuerpo de la respuesta muestra una promoción aprobada.

  "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 información, consulta el Centro de ayuda de Promociones.

Si quieres obtener más información para migrar desde Content API for Shopping, consulta Cómo migrar la administración de promociones.