Wykorzystaj promocje do wyróżniania ofert specjalnych na produkty, które sprzedajesz w Google. Promocje wyświetlają się w różnych usługach Google, takich jak wyszukiwarka Google, Zakupy i Chrome. Aby promocje zostały zatwierdzone, muszą spełniać określone kryteria. Więcej informacji znajdziesz w artykule Kryteria promocji.
Gdy dodasz promocję do swoich produktów, kupujący zobaczą link do oferty specjalnej. Na przykład „15% zniżki” lub „Bezpłatna dostawa”. Linki do ofert mogą zwiększyć atrakcyjność Twoich produktów i zachęcić kupujących do zakupu. Wszystkie promocje są uwzględniane w momencie płatności lub w punkcie sprzedaży.
Więcej informacji znajdziesz w artykule Podstawowe informacje o promocjach.
Wymagania wstępne
Zanim będziemy mogli wyświetlać Twoje promocje, musisz podać konkretne informacje na temat swojej firmy i produktów. Musisz mieć:
- aktywny plik danych o produktach w Google Merchant Center;
- aktywny plik danych o promocjach w Google Merchant Center;
- konto Google Ads na potrzeby kampanii produktowych.
Dodatkowo musisz zarejestrować swoje konto Merchant Center w programie Promocje. Jeśli nie masz pewności, czy Twoje konto jest już zarejestrowane, sprawdź Merchant Center.
Jeśli nie masz zarejestrowanego konta, wypełnij formularz zgłoszenia. Zespół ds. promocji powiadomi Cię, kiedy będzie można rozpocząć korzystanie z tej funkcji.
Więcej informacji znajdziesz w artykule Kryteria i zasady uczestnictwa.
Utworzenie źródła danych
Aby utworzyć źródło danych o promocjach, możesz użyć metody
accounts.dataSources.create. Jeśli masz już źródło danych o promocjach
jest dostępne, użyj
accounts.dataSources.list
metody, aby pobrać wszystkie źródła danych. Następnie możesz użyć pola name źródła danych o promocjach, aby utworzyć promocje.
To żądanie pokazuje, jak utworzyć źródło danych do dodawania promocji:
POST https://merchantapi.googleapis.com/datasources/v1/accounts/{ACCOUNT_ID}/dataSources
{
"displayName": "{DISPLAY_NAME}",
"promotionDataSource": {
"contentLanguage": "{CONTENT_LANGUAGE}",
"targetCountry": "{TARGET_COUNTRY}"
}
}
Zastąp następujące elementy:
- {ACCOUNT_ID}: unikalny identyfikator Twojego konta widoczny w interfejsie Merchant Center.
- {DISPLAY_NAME}: wyświetlana nazwa źródła danych.
- {CONTENT_LANGUAGE}: 2-literowy kod języka ISO 639-1 produktów w źródle danych.
- {TARGET_COUNTRY}: kod regionu CLDR kraju docelowego, w którym mają być widoczne promocje.
Po pomyślnym wykonaniu żądania zobaczysz tę odpowiedź, która zawiera szczegóły nowo utworzonego źródła danych o promocjach:
{
"name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
"dataSourceId": "{DATASOURCE_ID}",
"displayName": "{DISPLAY_NAME}",
"promotionDataSource": {
"targetCountry": "{TARGET_COUNTRY}",
"contentLanguage": "{CONTENT_LANGUAGE}"
},
"input": "API"
}
Zorganizuj promocję
Aby utworzyć lub zaktualizować promocję, możesz użyć metody
accounts.promotions.insert. Metoda accounts.promotions.insert
przyjmuje jako dane wejściowe
promotions
zasób i nazwę źródła danych. Jeśli operacja się powiedzie, zwraca nową lub zaktualizowaną promocję.
Do utworzenia promocji wymagana jest nazwa źródła danych. W żądaniu musisz też podać wartości tych pól:
contentLanguageredemptionChannelpromotionIdtargetCountryattributes.offerTypeattributes.genericRedemptionCodeattributes.couponValueTypeattributes.productApplicabilityattributes.promotionEffectiveTimePeriod.endTimeattributes.promotionEffectiveTimePeriod.startTimeattributes.longTitle
Po przetworzeniu pliku danych o promocjach oraz pliku danych o produktach Google sprawdzi i zatwierdzi Twoje promocje, zanim zostaną rozpowszechnione. Więcej informacji znajdziesz w artykule Proces zatwierdzania promocji process.
Zalecamy zapoznanie się z zasadami dotyczącymi promocji, aby mieć pewność, że tworzone przez Ciebie promocje są wartościowe i zgodne z zasadami dotyczącymi reklam produktowych.
To żądanie pokazuje, jak utworzyć promocję 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
Informacje o regułach dotyczących ustawiania identyfikatora promocji znajdziesz w artykule Minimalne wymagania dotyczące atrybutu identyfikator promocji.
Prawidłowe wartości obowiązkowego pola offerType to NO_CODE i GENERIC_CODE. Jeśli nie podasz jednej z tych wartości, żądanie do interfejsu API zakończy się niepowodzeniem i zwróci odpowiedź HTTP 400 [offer_type] validation/missing_required: Invalid or
missing required attribute: offer_type. Podobny komunikat o błędzie zostanie zwrócony, jeśli nie podasz żadnego z obowiązkowych pól.
Jeśli nie podasz wartości pola attributes.genericRedemptionCode,
żądanie zakończy się niepowodzeniem i zwróci odpowiedź HTTP 400 [genericRedemptionCode] No
redemption code provided.
Wartości pól promotion.attributes.promotionDisplayTimePeriod.startTime
i promotion.attributes.promotionDisplayTimePeriod.endTime muszą być w
formacie yyyy-mm-ddThh:mm:ssZ. Zastąp wartości tych pól datami w przyszłości.
Więcej informacji znajdziesz w artykule Specyfikacja danych o promocjach.
Sprawdzone metody tworzenia promocji znajdziesz w artykule Sprawdzone metody dotyczące promocji.
Listę atrybutów związanych z promocjami znajdziesz w artykule Dodawanie atrybutów danych strukturalnych.
Po pomyślnym wykonaniu żądania utworzenia promocji może minąć kilka minut, zanim będzie można ją pobrać za pomocą interfejsu API lub wyświetlić w Merchant Center.
Oto przykład, którego możesz użyć do asynchronicznego wstawiania wielu promocji:
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.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().setPoolSize(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>");
}
}
Oto kilka przykładowych promocji, które mogą Ci pomóc w rozpoczęciu pracy.
Promocja lokalna obejmująca wszystkie produkty i wszystkie sklepy
To przykładowe żądanie pokazuje, jak utworzyć promocję lokalną, która jest dostępna dla wszystkich produktów na Twoim koncie Merchant Center i wszystkich sklepów dodanych na połączonym koncie Profilu Firmy.
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}"
}
Pole productApplicability jest wymagane. Określa, czy promocja dotyczy wszystkich produktów czy tylko konkretnych. Obsługiwane wartości to ALL_PRODUCTS i SPECIFIC_PRODUCTS. Więcej informacji znajdziesz w artykule Wybieranie
produktów do promocji.
Pole couponValueType jest wymagane. Określa typ promocji, którą prowadzisz. Listę obsługiwanych wartości znajdziesz w artykule Typ wartości kuponu. W zależności od wybranego typu wartości kuponu
niektóre atrybuty są
wymagane.
Pole minimumPurchaseQuantity umożliwia ustawienie minimalnej wielkości zakupu wymaganej do skorzystania z oferty promocyjnej. Więcej informacji znajdziesz w artykule Minimalna wielkość zakupu w przypadku promocji.
Podobnie możesz użyć pola minimumPurchaseAmount, aby ustawić minimalną kwotę do zapłaty, która kwalifikuje do skorzystania z promocji. Więcej informacji znajdziesz w artykule Minimalna kwota do zapłaty.
Więcej informacji o wartościach, które musisz podać, aby utworzyć promocję lokalną , znajdziesz w artykule Specyfikacja źródeł danych w przypadku promocji produktów dostępnych lokalnie.
Promocja online obejmująca wybrane produkty z kodem promocyjnym
To przykładowe żądanie pokazuje, jak utworzyć promocję online, która obejmuje wybrane produkty z kodem promocyjnym.
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"
}
Wyświetl promocje
Aby wyświetlić promocję, użyj
accounts.promotions.get.
To żądanie GET jest tylko do odczytu. Wymaga podania merchantId i identyfikatora promocji. Metoda GET zwraca odpowiedni zasób promocji.
Na przykład:
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
Zastąp następujące elementy:
- {ACCOUNT_ID}: unikalny identyfikator Twojego konta Merchant Center.
- {PROMOTION_ID}: unikalny identyfikator promocji, którą chcesz pobrać. Format to {CHANNEL} ~{CONTENT_LANGUAGE}~ {TARGET_COUNTRY}~{PROMOTION_ID} .
Pamiętaj, że pobranie nowo utworzonej promocji za pomocą interfejsu API może potrwać kilka minut.
Wyświetlanie promocji lokalnej
To przykładowe żądanie pobiera promocję produktów dostępnych lokalnie, której identyfikator promocji to 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
Po pomyślnym wykonaniu żądania zobaczysz tę odpowiedź:
{
"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"
}
Pole moneyOffAmount w tym przykładzie zawiera rabat oferowany w ramach promocji. Więcej informacji znajdziesz w artykule Kwota rabatu pieniężnego w
promocji.
Pole promotionUrl w tym przykładzie zawiera link do witryny sklepu, w której kupujący mogą znaleźć więcej informacji o promocji. Promocje w reklamach lokalnego asortymentu produktów zwracają błąd, jeśli nie uwzględnisz pola promotionUrl.
Wyświetlanie promocji online
To przykładowe żądanie pobiera promocję online, której identyfikator promocji to 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}"
}
Pole itemIdInclusion użyte w tym przykładzie zawiera informacje o produktach, które kwalifikują się do promocji. Więcej informacji znajdziesz w artykule Identyfikator produktu w
promocji.
Wyświetlanie listy promocji
Aby wyświetlić wszystkie utworzone promocje, możesz użyć metody
promotions.list.
Oto przykładowe żądanie:
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
Odpowiedź zawiera listę wszystkich promocji na Twoim koncie. W przypadku każdej promocji możesz zobaczyć szczegóły takie jak promotionId, redemptionChannel, dataSource, promotionStatus i inne.
Wyświetlanie stanu promocji
Aby sprawdzić stan promocji, zobacz atrybut promotionStatus zwracany przez metodę
promotions.get
lub
promotions.list.
Pole promotionStatus może mieć te wartości:
IN_REVIEW: promocja jest nadal sprawdzana.REJECTED: promocja została odrzucona.LIVE: promocja została zatwierdzona i jest aktywna.STOPPED: promocja została wstrzymana przez konto.EXPIRED: promocja nie jest już aktywna.PENDING: promocja nie jest wstrzymana, a wszystkie sprawdzenia zostały zatwierdzone, ale data aktywacji jest w przyszłości.STATE_UNSPECIFIED: nieznany stan promocji.
Aby dowiedzieć się więcej o procesie zatwierdzania utworzonej przez Ciebie promocji, zapoznaj się z artykułem Proces zatwierdzania promocji.
Przykładowy stan promocji
Te przykłady pokazują różnicę między żądaniami, które zakończyły się powodzeniem, a tymi, które zakończyły się niepowodzeniem.
Brak mapowania produktu
Ta treść odpowiedzi pokazuje promocję online, która została odrzucona z powodu braku mapowania produktu.
"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"
]
}
]
}
Aby rozwiązać problemy z odrzuconymi promocjami i dowiedzieć się, jak unikać odrzucania w przyszłości , przeczytaj artykuł Rozwiązywanie problemu: problemy z odrzuconymi promocjami.
Jeśli utworzona przez Ciebie promocja nie zostanie zatwierdzona, otrzymasz e-maila z informacją o przyczynie odrzucenia i instrukcjami dotyczącymi rozwiązania problemów.
Promocja jest w trakcie sprawdzania
Ta treść odpowiedzi pokazuje promocję, która jest nadal sprawdzana.
"promotionStatus": {
"destinationStatuses": [
{
"reportingContext": "FREE_LISTINGS",
"status": "PENDING"
},
{
"destination": "SHOPPING_ADS",
"status": "PENDING"
}
],
"itemLevelIssues": []
}
Zatwierdzona i aktywna promocja
Ta treść odpowiedzi pokazuje promocję, która jest widoczna dla kupujących.
"promotionStatus": {
"destinationStatuses": [
{
"reportingContext": "FREE_LISTINGS",
"status": "LIVE"
},
{
"destination": "SHOPPING_ADS",
"status": "LIVE"
} ],
"itemLevelIssues": []
}
Więcej informacji znajdziesz w artykule Najczęstsze pytania dotyczące stanu promocji.
Usuń wyniki promowane
Nie można usunąć promocji za pomocą interfejsu API. Aby usunąć promocję, musisz otworzyć interfejs Merchant Center. Więcej informacji znajdziesz w artykule Edytowanie promocji lub zmiana jej stanu.
Aby zakończyć istniejącą promocję, możesz użyć metody
accounts.promotions.insert
, aby zaktualizować pole attributes.promotionEffectiveTimePeriod.endTime na
czas w przeszłości.
Więcej informacji
- Więcej informacji znajdziesz w Centrum pomocy Promocje.
- Aby rozwiązać typowe problemy, przeczytaj artykuł Rozwiązywanie problemów związanych z podrzędnym interfejsem API Promocje.
- Aby dowiedzieć się więcej o migracji z Content API for Shopping, przeczytaj artykuł Migracja zarządzania promocjami.