Visão geral da sub-API Promoções

Use as promoções para mostrar ofertas especiais dos produtos que você vende no Google. As promoções aparecem em diferentes Serviços do Google, incluindo a Pesquisa Google, o Shopping e o Chrome. As promoções precisam atender a determinados critérios para serem aprovadas. Para mais informações, consulte Critérios de promoção.

Quando você adiciona uma promoção aos seus produtos, os compradores veem um link de oferta especial. Por exemplo, "15% de desconto" ou "Frete grátis". Os links de oferta podem aumentar a atratividade dos seus produtos e incentivar os usuários a fazer uma compra. Todas as promoções são aplicadas na finalização da compra ou no ponto de venda.

Para mais informações, consulte Noções básicas sobre promoções.

Pré-requisitos

O Google precisa que você forneça informações específicas sobre sua empresa e seus produtos antes de exibir suas promoções. Você precisa ter o seguinte:

Além disso, é necessário inscrever sua conta do Merchant Center no programa de promoções. Se você não tiver certeza se já está inscrito, verifique o Merchant Center.

Se você não estiver inscrito, preencha o formulário de solicitação. A equipe de promoções vai informar quando você estiver pronto para começar a implementação.

Para mais informações, consulte Critérios e políticas de participação.

Criar uma fonte de dados

Use o método accounts.dataSources.create para criar uma fonte de dados de promoção. Se uma fonte de dados de promoção já estiver disponível, use o método accounts.dataSources.list para recuperar todas as fontes. Em seguida, use o campo name da fonte de dados de promoção para criar promoções.

A solicitação a seguir mostra como criar uma fonte de dados para adicionar promoções:

POST https://merchantapi.googleapis.com/datasources/v1/accounts/{ACCOUNT_ID}/dataSources

{
  "displayName": "{DISPLAY_NAME}",
  "promotionDataSource": {
    "contentLanguage": "{CONTENT_LANGUAGE}",
    "targetCountry": "{TARGET_COUNTRY}"
  }
}

Substitua:

  • {ACCOUNT_ID}: o identificador exclusivo da sua conta, conforme aparece na interface do Merchant Center.
  • {DISPLAY_NAME}: o nome de exibição da fonte de dados.
  • {CONTENT_LANGUAGE}: o código de idioma ISO 639-1 de duas letras dos produtos na fonte de dados.
  • {TARGET_COUNTRY}: o código de território CLDR do país de destino em que você quer que as promoções sejam visíveis.

Depois que a solicitação for executada, você vai ver a seguinte resposta, que contém detalhes sobre a fonte de dados de promoções recém-criada:

{
  "name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
  "dataSourceId": "{DATASOURCE_ID}",
  "displayName": "{DISPLAY_NAME}",
  "promotionDataSource": {
    "targetCountry": "{TARGET_COUNTRY}",
    "contentLanguage": "{CONTENT_LANGUAGE}"
  },
  "input": "API"
}

Crie promoções

Use o método accounts.promotions.insert para criar ou atualizar uma promoção. O método accounts.promotions.insert usa um recurso promotions e um nome de fonte de dados como entrada. Ele retorna a promoção nova ou atualizada, se a operação for bem-sucedida.

Para criar uma promoção, é necessário o nome da fonte de dados. Também é necessário fornecer valores para os seguintes campos na solicitação:

  • contentLanguage
  • redemptionChannel
  • promotionId
  • targetCountry
  • attributes.offerType
  • attributes.genericRedemptionCode
  • attributes.couponValueType
  • attributes.productApplicability
  • attributes.promotionEffectiveTimePeriod.endTime
  • attributes.promotionEffectiveTimePeriod.startTime
  • attributes.longTitle

O Google analisa e aprova as promoções antes de distribuí-las. Para mais informações, consulte Processo de aprovação de promoções.

Recomendamos que você leia as políticas de promoções para garantir que as promoções criadas agreguem valor e estejam de acordo com as políticas de anúncios do Shopping.

A solicitação a seguir demonstra como criar uma promoção on-line:

HTTP

POST https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions:insert

{
"promotion": {
  "name": "{PROMOTION_NAME}",
  "promotionId": "{PROMOTION_ID}",
  "targetCountry": "{TARGET_COUNTRY}",
  "redemptionChannel": [
    "ONLINE"
  ],
  "contentLanguage": "{CONTENT_LANGUAGE}",
  "attributes": {
    "promotionDisplayTimePeriod": {
      "endTime": "{PROMOTION_END_TIME}",
      "startTime": "{PROMOTION_START_TIME}"
    },
    "offerType": "{OFFER_TYPE}",
    "longTitle": "{LONG_TITLE}"
  }
},
"dataSource": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}"
}

cURL

  curl --request POST \
'https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions:insert?key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"dataSource":"{DATASOURCE_ID}","promotion":{"name":"accounts/{ACCOUNT_ID}/promotions/{PROMOTION_ID}y","promotionId":"abc","contentLanguage":"en","targetCountry":"US","redemptionChannel":["ONLINE"]}}' \
--compressed

Para informações sobre as regras aplicáveis à definição do ID da promoção, consulte Requisitos mínimos para o atributo ID da promoção.

Os valores válidos para o campo obrigatório offerType são NO_CODE e GENERIC_CODE. Se você não fornecer um desses valores, a solicitação de API vai falhar com a resposta HTTP 400 [offer_type] validation/missing_required: Invalid or missing required attribute: offer_type. Uma mensagem de erro semelhante será retornada se você não fornecer nenhum dos campos obrigatórios.

Se você não fornecer um valor para o campo attributes.genericRedemptionCode, a solicitação vai falhar com a resposta HTTP 400 [genericRedemptionCode] No redemption code provided.

Os valores dos campos promotion.attributes.promotionDisplayTimePeriod.startTime e promotion.attributes.promotionDisplayTimePeriod.endTime precisam estar no formato yyyy-mm-ddThh:mm:ssZ. Substitua os valores desses campos por datas futuras.

Para mais informações, consulte Especificação dos dados de promoções.

Para conferir as práticas recomendadas sobre como criar uma promoção, consulte Práticas recomendadas para promoções.

Para uma lista de atributos relacionados a promoções, consulte Adicionar atributos de dados estruturados.

Depois que a solicitação de criação de promoção for executada, pode levar alguns minutos para que ela seja recuperada usando a API ou apareça no Merchant Center.

Confira um exemplo que pode ser usado para inserir várias promoções de forma assíncrona:

Java

import com.google.api.core.ApiFuture;
import com.google.api.core.ApiFutureCallback;
import com.google.api.core.ApiFutures;
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.protobuf.Timestamp;
import com.google.shopping.merchant.promotions.v1.Attributes;
import com.google.shopping.merchant.promotions.v1.CouponValueType;
import com.google.shopping.merchant.promotions.v1.InsertPromotionRequest;
import com.google.shopping.merchant.promotions.v1.OfferType;
import com.google.shopping.merchant.promotions.v1.ProductApplicability;
import com.google.shopping.merchant.promotions.v1.Promotion;
import com.google.shopping.merchant.promotions.v1.PromotionsServiceClient;
import com.google.shopping.merchant.promotions.v1.PromotionsServiceSettings;
import com.google.shopping.merchant.promotions.v1.RedemptionChannel;
import com.google.shopping.type.CustomAttribute;
import com.google.shopping.type.Destination.DestinationEnum;
import com.google.type.Interval;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to insert multiple promotions asynchronously. */
public class InsertPromotionsAsyncSample {

  private static String generateRandomString() {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    Random random = new Random();
    StringBuilder sb = new StringBuilder(8);
    for (int i = 0; i < 8; i++) {
      sb.append(characters.charAt(random.nextInt(characters.length())));
    }
    return sb.toString();
  }

  private static Promotion createPromotion(String accountId) {
    String merchantPromotionId = generateRandomString();

    Attributes attributes =
        Attributes.newBuilder()
            .setProductApplicability(ProductApplicability.ALL_PRODUCTS)
            .setOfferType(OfferType.GENERIC_CODE)
            .setGenericRedemptionCode("ABCD1234")
            .setLongTitle("My promotion")
            .setCouponValueType(CouponValueType.PERCENT_OFF)
            .addPromotionDestinations(DestinationEnum.SHOPPING_ADS)
            .setPercentOff(10)
            // Note that promotions have a 6-month limit.
            // For more information, read here: https://support.google.com/merchants/answer/2906014
            // Also note that only promotions valid within the past 365 days are shown in the UI.
            .setPromotionEffectiveTimePeriod(
                Interval.newBuilder()
                    .setStartTime(Timestamp.newBuilder().setSeconds(1726842472))
                    .setEndTime(Timestamp.newBuilder().setSeconds(1726842473))
                    .build())
            .build();

    return Promotion.newBuilder()
        .setName(String.format("accounts/%s/merchantPromotions/%s", accountId, merchantPromotionId))
        .setPromotionId(merchantPromotionId)
        .setContentLanguage("fr")
        .setTargetCountry("CH")
        .addRedemptionChannel(RedemptionChannel.ONLINE)
        .setAttributes(attributes)
        // Custom attributes allow you to add additional information which is not available in
        // Attributes. For example, you might want to pilot experimental functionality.
        .addCustomAttributes(
            CustomAttribute.newBuilder()
                .setName("another example name")
                .setValue("another example value")
                .build())
        .build();
  }

  public static void asyncInsertPromotions(String accountId, String dataSourceId) throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();

    PromotionsServiceSettings merchantPromotionsServiceSettings =
        PromotionsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    try (PromotionsServiceClient merchantPromotionsServiceClient =
        PromotionsServiceClient.create(merchantPromotionsServiceSettings)) {

      // Arbitrarily creates five merchant promotions with random IDs.
      List<InsertPromotionRequest> requests = new ArrayList<>();
      for (int i = 0; i < 5; i++) {
        InsertPromotionRequest request =
            InsertPromotionRequest.newBuilder()
                .setParent(String.format("accounts/%s", accountId))
                .setPromotion(createPromotion(accountId))
                .setDataSource(String.format("accounts/%s/dataSources/%s", accountId, dataSourceId))
                .build();
        requests.add(request);
      }

      // Inserts the merchant promotions.
      List<ApiFuture<Promotion>> futures =
          requests.stream()
              .map(
                  request ->
                      merchantPromotionsServiceClient.insertPromotionCallable().futureCall(request))
              .collect(Collectors.toList());

      // Creates callback to handle the responses when all are ready.
      ApiFuture<List<Promotion>> responses = ApiFutures.allAsList(futures);
      ApiFutures.addCallback(
          responses,
          new ApiFutureCallback<List<Promotion>>() {
            @Override
            public void onSuccess(List<Promotion> results) {
              System.out.println("Inserted merchant promotions below:");
              System.out.println(results);
            }

            @Override
            public void onFailure(Throwable throwable) {
              System.out.println(throwable);
            }
          },
          MoreExecutors.directExecutor());
    } catch (Exception e) {
      System.out.println(e);
    }
  }


  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    asyncInsertPromotions(config.getAccountId().toString(), "<YOUR_DATA_SOURCE_ID>");
  }
}

Confira alguns exemplos de promoções que você pode usar para começar.

Uma promoção local aplicável a todos os produtos e lojas

A solicitação de amostra a seguir mostra como criar uma promoção local aplicável a todos os produtos na sua conta do Merchant Center e a todas as lojas adicionadas na conta vinculada do Perfil da Empresa.

POST https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/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/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}"
}

O campo productApplicability é obrigatório. Ele indica se a promoção é válida para todos os produtos ou apenas para alguns específicos. Os valores aceitos são ALL_PRODUCTS e SPECIFIC_PRODUCTS. Para mais informações, consulte Escolher produtos para sua promoção.

O campo couponValueType é obrigatório. Ele indica o tipo de promoção que você está veiculando. Para ver a lista de valores compatíveis, consulte Tipo de valor do cupom. Dependendo do tipo de valor do cupom selecionado, alguns atributos são obrigatórios.

O campo minimumPurchaseQuantity permite definir o valor da quantidade mínima de compra necessária para resgatar a oferta promocional. Para mais informações, consulte Quantidade mínima de compra da promoção.

Da mesma forma, você pode usar o campo minimumPurchaseAmount para definir o valor mínimo de compra necessário para resgatar a promoção. Para mais informações, consulte Valor mínimo de compra.

Para mais informações sobre os valores que você precisa fornecer para criar uma promoção local, consulte Especificações da fonte de dados para promoções locais.

Uma promoção on-line aplicada a produtos selecionados com um código de resgate

O exemplo de solicitação a seguir mostra como criar uma promoção on-line que se aplica a produtos selecionados com um código de resgate.

POST https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/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/{ACCOUNT_ID}/dataSources/1000000573361824"
}

Ver promoções

Para conferir uma promoção, use accounts.promotions.get. Esta solicitação GET é somente leitura. Ele exige seu merchantId e o ID da promoção. O método GET retorna o recurso de promoções correspondente.

Exemplo:

HTTP

GET https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions/{PROMOTION_ID}

cURL

  curl \
   'https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions/{PROMOTION_ID}?key=[YOUR_API_KEY]' \
   --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
   --header 'Accept: application/json' \
   --compressed

Substitua:

  • {ACCOUNT_ID}: o identificador exclusivo da sua conta do Merchant Center.
  • {PROMOTION_ID}: o identificador exclusivo da promoção que você quer recuperar. O formato é {CHANNEL} ~{CONTENT_LANGUAGE}~ {TARGET_COUNTRY}~{PROMOTION_ID} .

Uma promoção recém-criada leva alguns minutos para ser recuperada usando a API.

Ver uma promoção local

A solicitação de exemplo a seguir recupera uma promoção local com o ID in_store~en~US~buy_2_get_10_off.

GET https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions/in_store~en~US~buy_2_get_10_off

Depois que a solicitação for bem-sucedida, você vai ver a seguinte resposta:

{
 "name": "accounts/{ACCOUNT_ID}/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/{ACCOUNT_ID}/dataSources/1000000573361824"
}

O campo moneyOffAmount neste exemplo fornece o desconto oferecido na promoção. Para mais informações, consulte Valor do desconto monetário de uma promoção.

O campo promotionUrl neste exemplo fornece o link para o site da loja, onde os compradores podem encontrar mais informações sobre a promoção. As promoções de anúncios de inventário local retornam um erro se você não incluir o campo promotionUrl.

Ver uma promoção on-line

O exemplo de solicitação a seguir recupera uma promoção on-line com ID online~en~US~25_pct_off.

GET https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions/online~en~US~25_pct_off
{
 "name": "accounts/{ACCOUNT_ID}/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_ID}/dataSources/{dataSource}"
}

O campo itemIdInclusion usado neste exemplo menciona os produtos qualificados para a promoção. Para mais informações, consulte ID do produto para promoção.

Listar promoções

Você pode usar o método promotions.list para conferir todas as promoções criadas.

Confira um exemplo de solicitação:

HTTP

GET https://merchantapi.googleapis.com/promotions/v1/{ACCOUNT_ID}/promotions

cURL

  curl \
   'https://merchantapi.googleapis.com/promotions/v1/accounts/{ACCOUNT_ID}/promotions?key=[YOUR_API_KEY]' \
   --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
   --header 'Accept: application/json' \
   --compressed

A resposta contém a lista de todas as promoções na sua conta. Para cada promoção, é possível conferir detalhes como o promotionId, redemptionChannel, dataSource, promotionStatus e muito mais.

Ver o status de uma promoção

Para conferir o status de uma promoção, consulte o atributo promotionStatus retornado pelo método promotions.get ou promotions.list.

O campo promotionStatus pode ter os seguintes valores:

  • IN_REVIEW: a promoção ainda está em análise.
  • REJECTED: a promoção foi reprovada.
  • LIVE: a promoção foi aprovada e está ativa.
  • STOPPED: a promoção foi interrompida pela conta.
  • EXPIRED: a promoção não está mais ativa.
  • PENDING: a promoção não está interrompida, e todas as avaliações foram aprovadas, mas a data de ativação é futura.
  • STATE_UNSPECIFIED: estado de promoção desconhecido.

Para entender o processo de aprovação de uma promoção que você criou, consulte Processo de aprovação de promoções.

Exemplo de status da promoção

Os exemplos a seguir demonstram a diferença entre solicitações bem-sucedidas e com falha.

Mapeamento de produto ausente

O corpo de resposta a seguir mostra uma promoção on-line reprovada devido ao mapeamento de produtos ausente.

  "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"
        ]
      }
    ]
  }

Para resolver problemas com promoções reprovadas e evitar reprovações futuras, consulte Corrigir problemas com promoções reprovadas.

Se uma promoção criada não for aprovada, você vai receber um e-mail com o motivo da rejeição e instruções para corrigir os problemas.

Promoção em avaliação

O corpo da resposta a seguir mostra uma promoção que ainda está sendo avaliada.

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

Uma promoção aprovada e ativa

O corpo da resposta a seguir mostra uma promoção visível para os compradores.

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

Para mais informações, consulte as Perguntas frequentes sobre o status da promoção.

Excluir promoções

Não é possível excluir uma promoção usando a API. Para excluir uma promoção, acesse a interface do Merchant Center. Para mais informações, consulte Editar uma promoção ou mudar o status dela.

Para encerrar uma promoção, use o método accounts.promotions.insert para atualizar o campo attributes.promotionEffectiveTimePeriod.endTime para um horário no passado.

Saiba mais