Panoramica della sottoAPI Promotions

Utilizza le promozioni per mostrare offerte speciali per i prodotti che vendi su Google. Le promozioni vengono visualizzate su diverse proprietà di Google, tra cui Ricerca Google, Shopping e Chrome. Le promozioni devono soddisfare determinati criteri per essere approvate. Per saperne di più, consulta Criteri delle promozioni.

Quando aggiungi una promozione ai tuoi prodotti, gli acquirenti visualizzano un link che rimanda a un'offerta speciale. Ad esempio, "15% di sconto" o "Spedizione gratuita". I link alle offerte possono aumentare l'interesse nei confronti dei tuoi prodotti e incoraggiare gli acquirenti a fare acquisti. Tutte le promozioni vengono applicate al momento del pagamento o presso il point of sale.

Per saperne di più, consulta Nozioni di base sulle promozioni.

Prerequisiti

Google richiede che tu fornisca informazioni specifiche sulla tua attività e sui tuoi prodotti prima di mostrare le tue promozioni. Devi disporre di quanto segue:

Inoltre, devi registrare il tuo account Merchant Center nel programma Promozioni. Se non sai se hai già effettuato la registrazione, controlla Merchant Center.

Se non hai ancora effettuato la registrazione, compila il modulo di richiesta. Il team del programma Promozioni ti avviserà quando è tutto pronto per iniziare l'implementazione.

Per saperne di più, consulta Criteri e norme di partecipazione.

Creare un'origine dati

Puoi utilizzare il metodo accounts.dataSources.create per creare un'origine dati delle promozioni. Se è disponibile un'origine dati delle promozioni esistente, utilizza il metodo accounts.dataSources.list per recuperare tutte le origini dati. Puoi quindi utilizzare il campo name dell'origine dati delle promozioni per creare promozioni.

Per fare riferimento direttamente a questi ID nelle chiamate API future, ti consigliamo vivamente di archiviare accounts.dataSources.name nel tuo database locale per ogni promozione. Puoi eseguire un backfill una tantum del database locale.

La seguente richiesta mostra come creare un'origine dati per l'aggiunta di promozioni:

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

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

Sostituisci quanto segue:

  • {ACCOUNT_ID}: l'identificatore univoco del tuo account come visualizzato nell'interfaccia utente di Merchant Center.
  • {DISPLAY_NAME}: il nome visualizzato dell'origine dati.
  • {CONTENT_LANGUAGE}: il codice lingua ISO 639-1 di due lettere dei prodotti nell'origine dati.
  • {TARGET_COUNTRY}: il codice di territorio CLDR del paese di destinazione in cui vuoi che le promozioni siano visibili.

Dopo l'esecuzione della richiesta, viene visualizzata la seguente risposta che contiene i dettagli dell'origine dati delle promozioni appena creata:

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

Crea promozioni

Puoi utilizzare il metodo accounts.promotions.insert per creare o aggiornare una promozione. Il metodo accounts.promotions.insert accetta come input una risorsa promotions e un nome dell'origine dati. In caso di esito positivo, restituisce la promozione nuova o aggiornata.

Per creare una promozione è necessario il nome dell'origine dati. Nella richiesta devi anche fornire i valori per i seguenti campi:

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

Google esamina e approva le promozioni prima di distribuirle. Per saperne di più, consulta la procedura di approvazione delle promozioni.

Ti consigliamo di consultare le norme sulle promozioni per assicurarti che le promozioni che crei offrano un valore aggiunto e rispettino le norme relative agli annunci Shopping.

La seguente richiesta mostra come creare una promozione online:

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

Per informazioni sulle regole applicabili all'impostazione dell'ID promozione, consulta Requisiti minimi per l'attributo ID promozione.

I valori validi per il campo obbligatorio offerType sono NO_CODE e GENERIC_CODE. Se non fornisci uno di questi valori, la richiesta API non va a buon fine con la risposta HTTP 400 [offer_type] validation/missing_required: Invalid or missing required attribute: offer_type. Se non fornisci uno dei campi obbligatori, viene restituito un messaggio di errore simile.

Se non fornisci un valore per il campo attributes.genericRedemptionCode, la richiesta non va a buon fine con la risposta HTTP 400 [genericRedemptionCode] No redemption code provided.

I valori dei campi promotion.attributes.promotionDisplayTimePeriod.startTime e promotion.attributes.promotionDisplayTimePeriod.endTime devono essere nel formato yyyy-mm-ddThh:mm:ssZ. Assicurati di sostituire i valori di questi campi con date future.

Per saperne di più, consulta la specifica dei dati delle promozioni.

Per le best practice sulla creazione di una promozione, consulta Best practice per le promozioni.

Per un elenco degli attributi relativi alle promozioni, consulta Aggiungi gli attributi dei dati strutturati.

Dopo che la richiesta di creazione della promozione è stata eseguita correttamente, potrebbero essere necessari alcuni minuti prima che la promozione possa essere recuperata utilizzando l'API o visualizzata in Merchant Center.

Ecco un esempio che puoi utilizzare per inserire più promozioni in modo asincrono:

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.api.gax.grpc.ChannelPoolSettings;
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
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();

    // Creates a channel provider. This provider manages a pool of gRPC channels
    // to enhance throughput for bulk operations. Each individual channel in the pool
    // can handle up to approximately 100 concurrent requests.
    //
    // Channel: A single connection pathway to the service.
    // Pool: A collection of multiple channels managed by this provider.
    //   Requests are distributed across the channels in the pool.
    //
    // We recommend estimating the number of concurrent requests you'll make, divide by 50 (50%
    // utilization of channel capacity), and set the pool size to that number.
    InstantiatingGrpcChannelProvider channelProvider =
        InstantiatingGrpcChannelProvider.newBuilder()
            .setChannelPoolSettings(ChannelPoolSettings.staticallySized(30))
            .build();

    PromotionsServiceSettings merchantPromotionsServiceSettings =
        PromotionsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .setTransportChannelProvider(channelProvider)
            .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>");
  }
}

Di seguito sono riportate alcune promozioni di esempio che puoi utilizzare per iniziare.

Una promozione locale applicabile a tutti i prodotti e a tutti i negozi

La seguente richiesta di esempio mostra come creare una promozione locale applicabile a tutti i prodotti nel tuo account Merchant Center e a tutti i negozi aggiunti nel tuo account Profilo dell'attività collegato.

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

Il campo productApplicability è obbligatorio. Indica l'applicabilità della promozione a tutti i prodotti o solo a prodotti specifici. I valori supportati sono ALL_PRODUCTS e SPECIFIC_PRODUCTS. Per saperne di più, consulta Scegli i prodotti per la promozione.

Il campo couponValueType è obbligatorio. Indica il tipo di promozione che stai pubblicando. Per l'elenco dei valori supportati, consulta Tipo di valore del coupon. A seconda del tipo di valore del coupon selezionato, alcuni attributi sono obbligatori.

Il campo minimumPurchaseQuantity ti consente di impostare il valore della quantità minima di acquisto richiesta per utilizzare l'offerta promozionale. Per ulteriori informazioni, consulta Quantità minima di acquisto per la promozione.

Analogamente, puoi utilizzare il campo minimumPurchaseAmount per impostare la soglia minima di acquisto richiesta per utilizzare la promozione. Per saperne di più, consulta la sezione Soglia minima di acquisto.

Per saperne di più sui valori da fornire per creare una promozione locale, consulta Specifiche delle origini dati per le promozioni locali.

Una promozione online che si applica a prodotti selezionati con un codice di riscatto

La seguente richiesta di esempio mostra come creare una promozione online che si applica ai prodotti selezionati con un codice di riscatto.

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

Visualizza le promozioni

Per visualizzare una promozione, utilizza accounts.promotions.get. Questa richiesta GET è di sola lettura. Richiede il tuo merchantId e l'ID della promozione. Il metodo GET restituisce la risorsa delle promozioni corrispondente.

Ad esempio:

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 {ACCESS_TOKEN}' \
   --header 'Accept: application/json' \
   --compressed

Sostituisci quanto segue:

  • {ACCOUNT_ID}: l'identificatore univoco del tuo account Merchant Center.
  • {PROMOTION_ID}: l'identificatore univoco della promozione che vuoi recuperare. Il formato è {CHANNEL} ~{CONTENT_LANGUAGE}~ {TARGET_COUNTRY}~{PROMOTION_ID} .

Tieni presente che sono necessari alcuni minuti prima che una promozione appena creata possa essere recuperata tramite l'API.

Visualizza una promozione locale

La seguente richiesta di esempio recupera una promozione locale con ID promozione 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

Se la richiesta ha esito positivo, viene visualizzata la seguente risposta:

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

Il campo moneyOffAmount in questo esempio fornisce lo sconto offerto nella promozione. Per saperne di più, consulta Importo dello sconto monetario di una promozione.

Il campo promotionUrl in questo esempio fornisce il link al sito web del negozio dove gli acquirenti possono trovare ulteriori informazioni sulla promozione. Le promozioni degli annunci di inventario locale restituiscono un errore se non includi il campo promotionUrl.

Visualizza una promozione online

La seguente richiesta di esempio recupera una promozione online il cui ID promozione è 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}"
}

Il campo itemIdInclusion utilizzato in questo esempio indica i prodotti idonei alla promozione. Per saperne di più, consulta l'articolo ID prodotto per la promozione.

Elenca promozioni

Puoi utilizzare il metodo promotions.list per visualizzare tutte le promozioni create.

Ecco una richiesta di esempio:

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 {ACCESS_TOKEN}' \
   --header 'Accept: application/json' \
   --compressed

La risposta contiene l'elenco di tutte le promozioni nel tuo account. Per ogni promozione, puoi visualizzare dettagli come promotionId, redemptionChannel, dataSource, promotionStatus e altro ancora.

Visualizza lo stato di una promozione

Per visualizzare lo stato di una promozione, consulta l'attributo promotionStatus restituito dal metodo promotions.get o promotions.list.

Il campo promotionStatus può avere i seguenti valori:

  • IN_REVIEW: la promozione è ancora in fase di revisione.
  • REJECTED: la promozione non è approvata.
  • LIVE: la promozione è approvata e attiva.
  • STOPPED: la promozione è stata interrotta dall'account.
  • EXPIRED: la promozione non è più attiva.
  • PENDING: la promozione non è stata interrotta e tutte le revisioni sono state approvate, ma la data di attivazione è futura.
  • STATE_UNSPECIFIED: stato della promozione sconosciuto.

Per comprendere la procedura di approvazione di una promozione che hai creato, consulta Procedura di approvazione delle promozioni.

Stato della promozione di esempio

I seguenti esempi mostrano la differenza tra richieste riuscite e non riuscite.

Mappatura dei prodotti mancante

Il seguente corpo della risposta mostra una promozione online non approvata a causa della mappatura dei prodotti mancante.

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

Per risolvere i problemi relativi alle promozioni non approvate e scoprire come evitare future mancate approvazioni, consulta Risolvi i problemi relativi alle promozioni non approvate.

Se una promozione che hai creato non viene approvata, riceverai un'email con il motivo del rifiuto e le istruzioni per risolvere i problemi.

Promozione in fase di valutazione

Il seguente corpo della risposta mostra una promozione ancora in fase di valutazione.

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

Una promozione approvata e pubblicata

Il seguente corpo della risposta mostra una promozione visibile agli acquirenti.

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

Per saperne di più, consulta le domande frequenti sullo stato delle promozioni.

Elimina promozioni

Non è possibile eliminare una promozione utilizzando l'API. Per eliminare una promozione, devi accedere alla UI di Merchant Center. Per saperne di più, consulta Modifica una promozione o il relativo stato.

Per terminare una promozione esistente, puoi utilizzare il metodo accounts.promotions.insert per aggiornare il campo attributes.promotionEffectiveTimePeriod.endTime impostando un'ora nel passato.

Scopri di più