Présentation de la sous-API Promotions

Utilisez les promotions pour présenter des offres spéciales pour les produits que vous vendez sur Google. Ces promotions s'affichent sur plusieurs propriétés Google, dont la recherche Google, Shopping et Chrome. Pour être approuvées, les promotions doivent répondre à certains critères. Pour en savoir plus, consultez Critères de promotion.

Lorsque vous ajoutez une promotion à vos produits, un lien "offre spéciale" s'affiche. Par exemple, "15 % de remise" ou "Livraison gratuite". Ce type de lien peut accroître l'attractivité de vos produits et inciter les clients à les acheter. Toutes les promotions sont appliquées lors du règlement en ligne ou dans votre point de vente.

Pour en savoir plus, consultez Principes de base des promotions.

Prérequis

Vous devez nous fournir certaines informations concernant votre entreprise et vos produits pour que nous puissions diffuser vos promotions. Vous devez disposer des éléments suivants :

De plus, vous devez inscrire votre compte Merchant Center au programme des promotions. Si vous n'êtes pas sûr d'être déjà inscrit, consultez Merchant Center.

Si ce n'est pas le cas, remplissez le formulaire de demande. L'équipe chargée des promotions vous contactera dès que vous serez prêt à commencer l'implémentation.

Pour en savoir plus, consultez Règles et critères de participation.

Créer une source de données

Vous pouvez utiliser la méthode accounts.dataSources.create pour créer une source de données des promotions. Si une source de données des promotions existante est disponible, utilisez la méthode accounts.dataSources.list pour récupérer toutes les sources de données. Vous pouvez ensuite utiliser le champ name de la source de données des promotions pour créer des promotions.

La requête suivante montre comment créer une source de données pour ajouter des promotions :

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

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

Remplacez les éléments suivants :

  • {ACCOUNT_ID} : identifiant unique de votre compte tel qu'il apparaît dans l'interface utilisateur de Merchant Center.
  • {DISPLAY_NAME} : nom à afficher de la source de données.
  • {CONTENT_LANGUAGE} : code de langue ISO 639-1 à deux lettres des produits dans la source de données.
  • {TARGET_COUNTRY} : code CLDR du pays cible dans lequel vous souhaitez que les promotions soient visibles.

Une fois la requête exécutée, vous verrez la réponse suivante, qui contient des informations sur la source de données des promotions que vous venez de créer :

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

Créer des promotions

La méthode accounts.promotions.insert permet de créer ou de modifier une promotion. La méthode accounts.promotions.insert prend en entrée une ressource promotions et un nom de source de données. Si elle aboutit, elle renvoie la promotion (nouvelle ou modifiée).

Pour créer une promotion, vous devez indiquer le nom de la source de données. Vous devez également fournir des valeurs pour les champs suivants dans votre demande :

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

Google examine et approuve vos promotions avant de les diffuser. Pour en savoir plus, consultez Processus d'approbation des promotions.

Nous vous recommandons de consulter le Règlement sur les promotions pour vous assurer que les promotions que vous créez apportent de la valeur et respectent le règlement des annonces Shopping.

La requête suivante montre comment créer une promotion en ligne :

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

Pour en savoir plus sur les règles applicables à la définition de votre identifiant promotion, consultez Conditions minimales requises pour l'attribut identifiant promotion.

Les valeurs valides pour le champ obligatoire offerType sont NO_CODE et GENERIC_CODE. Si vous ne fournissez pas l'une de ces valeurs, la requête API échoue avec la réponse HTTP 400 [offer_type] validation/missing_required: Invalid or missing required attribute: offer_type. Un message d'erreur semblable s'affiche si vous n'indiquez aucun des champs obligatoires.

Si vous ne fournissez pas de valeur pour le champ attributes.genericRedemptionCode, la requête échoue avec la réponse HTTP 400 [genericRedemptionCode] No redemption code provided.

Les valeurs des champs promotion.attributes.promotionDisplayTimePeriod.startTime et promotion.attributes.promotionDisplayTimePeriod.endTime doivent être au format yyyy-mm-ddThh:mm:ssZ. Veillez à remplacer les valeurs de ces champs par des dates ultérieures.

Pour en savoir plus, consultez les spécifications des données de promotions.

Pour connaître les bonnes pratiques concernant la création d'une promotion, consultez Bonnes pratiques en termes de promotions.

Pour obtenir la liste des attributs liés aux promotions, consultez Ajouter des attributs pour les données structurées.

Une fois la requête de création de promotion exécutée, quelques minutes peuvent s'écouler avant que la promotion puisse être récupérée à l'aide de l'API ou qu'elle apparaisse dans Merchant Center.

Voici un exemple que vous pouvez utiliser pour insérer plusieurs promotions de manière asynchrone :

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>");
  }
}

Voici quelques exemples de promotions que vous pouvez utiliser pour commencer.

Promotion locale applicable à tous les produits et à tous les magasins

L'exemple de requête suivant montre comment créer une promotion en magasin applicable à tous les produits de votre compte Merchant Center et à tous les magasins ajoutés à votre compte Fiche d'établissement associé.

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

Le champ productApplicability est obligatoire. Il indique si la promotion s'applique à tous les produits ou seulement à certains. Les valeurs acceptées sont ALL_PRODUCTS et SPECIFIC_PRODUCTS. Pour en savoir plus, consultez Choisir les produits pour votre promotion.

Le champ couponValueType est obligatoire. Il indique le type de promotion que vous proposez. Pour obtenir la liste des valeurs acceptées, consultez Type de valeur de bon de réduction. Selon le type de valeur de bon de réduction que vous avez sélectionné, certains attributs sont obligatoires.

Le champ minimumPurchaseQuantity vous permet de définir la valeur de la quantité minimale d'achat requise pour bénéficier de l'offre promotionnelle. Pour en savoir plus, consultez Nombre minimum d'articles à acheter pour la promotion.

De même, vous pouvez utiliser le champ minimumPurchaseAmount pour définir le montant minimal d'achat requis pour bénéficier de la promotion. Pour en savoir plus, consultez Montant d'achat minimal.

Pour en savoir plus sur les valeurs à fournir pour créer une promotion locale, consultez Spécifications de la source de données pour les promotions locales.

Promotion en ligne s'appliquant à certains produits avec un code promotionnel

L'exemple de requête suivant montre comment créer une promotion en ligne qui s'applique à certains produits avec un code promotionnel.

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

Afficher les promotions

Pour afficher une promotion, utilisez accounts.promotions.get. Cette demande GET est en lecture seule. Il nécessite votre merchantId et l'ID de la promotion. La méthode GET renvoie la ressource de promotions correspondante.

Exemple :

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

Remplacez les éléments suivants :

  • {ACCOUNT_ID} : identifiant unique de votre compte Merchant Center.
  • {PROMOTION_ID} : identifiant unique de la promotion que vous souhaitez récupérer. Le format est {CHANNEL} ~{CONTENT_LANGUAGE}~{TARGET_COUNTRY}~{PROMOTION_ID} .

Notez qu'il faut quelques minutes pour qu'une promotion nouvellement créée puisse être récupérée à l'aide de l'API.

Afficher une promotion locale

L'exemple de requête suivant récupère une promotion en magasin dont l'ID de promotion est 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

Une fois la requête traitée, la réponse suivante s'affiche :

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

Le champ moneyOffAmount de cet exemple indique la remise proposée dans la promotion. Pour en savoir plus, consultez Montant de la remise monétaire d'une promotion.

Le champ promotionUrl de cet exemple fournit le lien vers le site Web du magasin où les acheteurs peuvent trouver plus d'informations sur la promotion. Les promotions pour les annonces produits en magasin renvoient une erreur si vous n'incluez pas le champ promotionUrl.

Afficher une promotion en ligne

L'exemple de requête suivant récupère une promotion en ligne dont l'ID est 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}"
}

Le champ itemIdInclusion utilisé dans cet exemple mentionne les produits éligibles à la promotion. Pour en savoir plus, consultez ID produit pour la promotion.

Lister les promotions

Vous pouvez utiliser la méthode promotions.list pour afficher toutes les promotions créées.

Voici un exemple de requête :

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

La réponse contient la liste de toutes les promotions de votre compte. Pour chaque promotion, vous pouvez consulter des informations telles que le promotionId, le redemptionChannel, le dataSource, le promotionStatus, etc.

Afficher l'état d'une promotion

Pour connaître l'état d'une promotion, consultez l'attribut promotionStatus renvoyé par la méthode promotions.get ou promotions.list.

Le champ promotionStatus peut présenter les valeurs suivantes :

  • IN_REVIEW : la promotion est toujours en cours d'examen.
  • REJECTED : la promotion est refusée.
  • LIVE : la promotion est approuvée et active.
  • STOPPED : la promotion a été arrêtée par le compte.
  • EXPIRED : la promotion n'est plus active.
  • PENDING : la promotion n'est pas arrêtée et tous les avis sont approuvés, mais la date d'activation est dans le futur.
  • STATE_UNSPECIFIED : état de la promotion inconnu.

Pour comprendre le processus d'approbation d'une promotion que vous avez créée, consultez Processus d'approbation des promotions.

Exemple d'état d'une promotion

Les exemples suivants montrent la différence entre les requêtes réussies et celles qui échouent.

Mappage de produit manquant

Le corps de réponse suivant montre une promotion en ligne refusée, car le mappage des produits est manquant.

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

Pour résoudre les problèmes liés aux promotions refusées et éviter qu'elles ne le soient à l'avenir, consultez Résoudre les problèmes liés aux promotions refusées.

Si une promotion que vous avez créée n'est pas approuvée, vous recevrez un e-mail indiquant la raison du refus et des instructions pour résoudre les problèmes.

Promotion en cours d'évaluation

Le corps de réponse suivant montre une promotion qui est toujours en cours d'évaluation.

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

Une promotion approuvée et active

Le corps de réponse suivant montre une promotion visible par les clients.

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

Pour en savoir plus, consultez les questions fréquentes sur l'état des promotions.

Supprimer des promotions

Il n'est pas possible de supprimer une promotion à l'aide de l'API. Pour supprimer une promotion, vous devez accéder à l'interface utilisateur de Merchant Center. Pour en savoir plus, consultez Modifier une promotion ou son état.

Pour mettre fin à une promotion existante, vous pouvez utiliser la méthode accounts.promotions.insert pour définir le champ attributes.promotionEffectiveTimePeriod.endTime sur une heure passée.

En savoir plus