प्रमोशन सब-एपीआई के बारे में खास जानकारी

Google पर बेचे जाने वाले प्रॉडक्ट के लिए खास ऑफ़र दिखाने के लिए, प्रमोशन का इस्तेमाल करें. प्रमोशन, Google की अलग-अलग प्रॉपर्टीज़ पर दिखते हैं. इनमें Google Search, Shopping, और Chrome शामिल हैं. प्रमोशन को मंज़ूरी पाने के लिए, कुछ ज़रूरी शर्तें पूरी करनी होंगी. ज़्यादा जानकारी के लिए, प्रमोशन के लिए ज़रूरी शर्तें देखें.

अपने प्रॉडक्ट में प्रमोशन जोड़ने पर, खरीदारों को खास ऑफ़र वाला लिंक दिखता है. उदाहरण के लिए, "15% की छूट" या "मुफ़्त शिपिंग". ऑफ़र के लिंक से, आपके प्रॉडक्ट में लोगों की दिलचस्पी बढ़ सकती है. इससे आपके प्रॉडक्ट के बिकने की संभावना भी बढ़ सकती है. सभी प्रमोशन, चेकआउट के दौरान या बिक्री की जगह पर लागू होते हैं.

ज़्यादा जानकारी के लिए, प्रमोशन की बुनियादी बातें लेख पढ़ें.

ज़रूरी शर्तें

प्रमोशन दिखाने से पहले, Google को आपके कारोबार और प्रॉडक्ट के बारे में खास जानकारी चाहिए. आपके पास ये चीज़ें होनी चाहिए:

इसके अलावा, आपको अपने Merchant Center खाते को प्रमोशन प्रोग्राम में रजिस्टर करना होगा. अगर आपको नहीं पता कि आपने रजिस्टर किया है या नहीं, तो Merchant Center पर जाएं.

अगर आपने रजिस्टर नहीं किया है, तो अनुरोध फ़ॉर्म भरें. प्रमोशन टीम आपको बताएगी कि प्रमोशन को कब लागू किया जा सकता है.

ज़्यादा जानकारी के लिए, शामिल होने के लिए ज़रूरी शर्तें और नीतियां देखें.

डेटा स्रोत बनाएं

प्रमोशन की जानकारी वाला डेटा सोर्स बनाने के लिए, accounts.dataSources.create तरीके का इस्तेमाल किया जा सकता है. अगर प्रमोशन की जानकारी वाला कोई मौजूदा डेटा सोर्स उपलब्ध है, तो सभी डेटा सोर्स वापस पाने के लिए, accounts.dataSources.list तरीके का इस्तेमाल करें. इसके बाद, प्रमोशन बनाने के लिए, प्रमोशन की जानकारी वाले डेटा सोर्स के name फ़ील्ड का इस्तेमाल किया जा सकता है.

हमारा सुझाव है कि आप हर प्रमोशन के लिए, accounts.dataSources.name को अपने लोकल डेटाबेस में सेव करें. इससे, आने वाले समय में एपीआई कॉल में उन्हें सीधे तौर पर रेफ़र किया जा सकेगा. आपके पास अपने स्थानीय डेटाबेस को एक बार बैकफ़िल करने का विकल्प होता है.

यहां दिए गए अनुरोध से पता चलता है कि प्रमोशन जोड़ने के लिए डेटा सोर्स कैसे बनाया जाता है:

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

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

इनकी जगह ये डालें:

  • {ACCOUNT_ID}: आपके खाते का यूनीक आइडेंटिफ़ायर, जैसा कि Merchant Center के यूज़र इंटरफ़ेस (यूआई) में दिखता है.
  • {DISPLAY_NAME}: डेटा सोर्स का डिसप्ले नेम.
  • {CONTENT_LANGUAGE}: डेटा सोर्स में मौजूद प्रॉडक्ट के लिए, दो अक्षरों वाला ISO 639-1 भाषा कोड.
  • {TARGET_COUNTRY}: टारगेट किए गए उस देश का CLDR कोड जहां आपको प्रमोशन दिखाने हैं.

अनुरोध पूरा होने के बाद, आपको यह जवाब दिखेगा. इसमें प्रमोशन की जानकारी वाले नए डेटा सोर्स के बारे में जानकारी शामिल होगी:

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

प्रमोशन बनाना

प्रमोशन बनाने या उसे अपडेट करने के लिए, accounts.promotions.insert तरीके का इस्तेमाल किया जा सकता है. accounts.promotions.insert मेथड, इनपुट के तौर पर promotions रिसॉर्स और डेटा सोर्स का नाम लेता है. अगर यह प्रोसेस पूरी हो जाती है, तो यह नया या अपडेट किया गया प्रमोशन दिखाता है.

प्रमोशन बनाने के लिए, डेटा सोर्स का नाम डालना ज़रूरी है. आपको अपने अनुरोध में, इन फ़ील्ड के लिए भी वैल्यू देनी होंगी:

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

Google आपके प्रमोशन को डिस्ट्रिब्यूट करने से पहले उनकी समीक्षा करके उन्हें मंज़ूरी देता है. ज़्यादा जानकारी के लिए, प्रमोशन को मंज़ूरी देने की प्रोसेस देखें.

हमारा सुझाव है कि आप प्रमोशन की नीतियां पढ़ें. इससे यह पक्का किया जा सकेगा कि आपके बनाए गए प्रमोशन, लोगों के लिए फ़ायदेमंद हों और शॉपिंग विज्ञापनों की नीतियों का पालन करते हों.

यहां दिए गए अनुरोध से, ऑनलाइन प्रमोशन बनाने का तरीका पता चलता है:

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

प्रमोशन आईडी सेट करने पर लागू होने वाले नियमों के बारे में जानने के लिए, प्रमोशन आईडी एट्रिब्यूट के लिए ज़रूरी शर्तें देखें.

ज़रूरी offerType फ़ील्ड के लिए, NO_CODE और GENERIC_CODE वैल्यू मान्य हैं. इनमें से कोई एक वैल्यू न देने पर, एपीआई अनुरोध पूरा नहीं हो पाता. साथ ही, एचटीटीपी 400 रिस्पॉन्स [offer_type] validation/missing_required: Invalid or missing required attribute: offer_type मिलता है. अगर आपने कोई ज़रूरी फ़ील्ड नहीं भरा है, तो आपको गड़बड़ी का ऐसा ही मैसेज दिखेगा.

अगर attributes.genericRedemptionCode फ़ील्ड के लिए कोई वैल्यू नहीं दी जाती है, तो अनुरोध पूरा नहीं हो पाता. साथ ही, एचटीटीपी 400 रिस्पॉन्स [genericRedemptionCode] No redemption code provided मिलता है.

promotion.attributes.promotionDisplayTimePeriod.startTime और promotion.attributes.promotionDisplayTimePeriod.endTime फ़ील्ड की वैल्यू, yyyy-mm-ddThh:mm:ssZ फ़ॉर्मैट में होनी चाहिए. इन फ़ील्ड की वैल्यू को आने वाले समय की तारीखों से बदलना न भूलें.

ज़्यादा जानकारी के लिए, प्रमोशन से संबंधित डेटा स्पेसिफ़िकेशन देखें.

प्रमोशन बनाने के सबसे सही तरीकों के बारे में जानने के लिए, प्रमोशन के सबसे सही तरीके लेख पढ़ें.

प्रमोशन से जुड़े एट्रिब्यूट की सूची देखने के लिए, स्ट्रक्चर्ड डेटा के लिए इस्तेमाल किए जा सकने वाले एट्रिब्यूट जोड़ना लेख पढ़ें.

प्रमोशन बनाने का अनुरोध पूरा होने के बाद, एपीआई का इस्तेमाल करके प्रमोशन को वापस पाने या Merchant Center में दिखने में कुछ मिनट लग सकते हैं.

यहां एक सैंपल दिया गया है. इसका इस्तेमाल करके, एक साथ कई प्रमोशन एसिंक्रोनस तरीके से डाले जा सकते हैं:

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

यहां कुछ सैंपल प्रमोशन दिए गए हैं. इनका इस्तेमाल करके, प्रमोशन शुरू किए जा सकते हैं.

सभी प्रॉडक्ट और सभी स्टोर पर लागू होने वाला स्थानीय प्रमोशन

अनुरोध के इस सैंपल से, स्थानीय प्रमोशन बनाने का तरीका पता चलता है. यह प्रमोशन, आपके Merchant Center खाते में मौजूद सभी प्रॉडक्ट और लिंक किए गए Business Profile खाते में जोड़े गए सभी स्टोर पर लागू होता है.

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

productApplicability फ़ील्ड भरना ज़रूरी है. इससे पता चलता है कि प्रमोशन सभी प्रॉडक्ट पर लागू होगा या सिर्फ़ कुछ खास प्रॉडक्ट पर. इस्तेमाल की जा सकने वाली वैल्यू ALL_PRODUCTS और SPECIFIC_PRODUCTS हैं. ज़्यादा जानकारी के लिए, अपने प्रमोशन के लिए प्रॉडक्ट चुनना लेख पढ़ें.

couponValueType फ़ील्ड भरना ज़रूरी है. इससे पता चलता है कि किस तरह का प्रमोशन चलाया जा रहा है. इस्तेमाल की जा सकने वाली वैल्यू की सूची देखने के लिए, कूपन की वैल्यू किस तरह की है एट्रिब्यूट की जानकारी देखें. कूपन की वैल्यू किस तरह की है एट्रिब्यूट के लिए चुनी गई वैल्यू के आधार पर, कुछ एट्रिब्यूट की वैल्यू सबमिट करना ज़रूरी होता है.

minimumPurchaseQuantity फ़ील्ड में, प्रमोशन ऑफ़र को रिडीम करने के लिए ज़रूरी कम से कम खरीदारी की संख्या सेट की जा सकती है. ज़्यादा जानकारी के लिए, प्रमोशन को रिडीम करने के लिए, खरीदारी के लिए ज़रूरी कम से कम संख्या लेख पढ़ें.

इसी तरह, minimumPurchaseAmount फ़ील्ड का इस्तेमाल करके, कम से कम खरीदारी राशि सेट की जा सकती है. यह वह रकम होती है जो प्रमोशन को रिडीम करने के लिए ज़रूरी होती है. ज़्यादा जानकारी के लिए, कम से कम खरीदारी राशि देखें.

लोकल प्रमोशन बनाने के लिए, आपको कौनसी वैल्यू देनी होंगी, इस बारे में ज़्यादा जानने के लिए, लोकल प्रमोशन के लिए डेटा सोर्स स्पेसिफ़िकेशन देखें.

रिडेंप्शन कोड के साथ चुने गए प्रॉडक्ट पर लागू होने वाला ऑनलाइन प्रमोशन

यहां दिए गए सैंपल अनुरोध में, ऑनलाइन प्रमोशन बनाने का तरीका बताया गया है. यह प्रमोशन, रिडेंप्शन कोड वाले चुनिंदा प्रॉडक्ट पर लागू होता है.

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

प्रमोशन देखें

कोई प्रमोशन देखने के लिए, accounts.promotions.get का इस्तेमाल करें. GET के इस अनुरोध को सिर्फ़ पढ़ा जा सकता है. इसके लिए, आपके merchantId और प्रमोशन के आईडी की ज़रूरत होती है. GET वाला तरीका, उससे जुड़ा प्रमोशन संसाधन दिखाता है.

उदाहरण के लिए:

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

इनकी जगह ये डालें:

  • {ACCOUNT_ID}: आपके Merchant Center खाते का यूनीक आइडेंटिफ़ायर.
  • {PROMOTION_ID}: उस प्रमोशन का यूनीक आइडेंटिफ़ायर जिसकी जानकारी आपको चाहिए. इसका फ़ॉर्मैट {CHANNEL} ~{CONTENT_LANGUAGE}~ {TARGET_COUNTRY}~{PROMOTION_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

अनुरोध पूरा होने के बाद, आपको यह जवाब दिखेगा:

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

इस सैंपल में मौजूद moneyOffAmount फ़ील्ड, प्रमोशन में मिलने वाली छूट की जानकारी देता है. ज़्यादा जानकारी के लिए, प्रमोशन के लिए छूट की रकम लेख पढ़ें.

इस सैंपल में मौजूद promotionUrl फ़ील्ड, स्टोर की वेबसाइट का लिंक उपलब्ध कराता है. इस लिंक पर जाकर, खरीदार प्रमोशन के बारे में ज़्यादा जानकारी पा सकते हैं. अगर आपने promotionUrl फ़ील्ड को शामिल नहीं किया है, तो स्थानीय इन्वेंट्री विज्ञापनों के प्रमोशन में गड़बड़ी का मैसेज दिखता है.

ऑनलाइन प्रमोशन देखना

यहां दिए गए सैंपल अनुरोध से, ऑनलाइन प्रमोशन की जानकारी मिलती है. इस प्रमोशन का आईडी 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}"
}

इस सैंपल में इस्तेमाल किए गए itemIdInclusion फ़ील्ड में, उन प्रॉडक्ट के बारे में बताया गया है जो प्रमोशन की ज़रूरी शर्तें पूरी करते हैं. ज़्यादा जानकारी के लिए, प्रमोशन के लिए प्रॉडक्ट आईडी देखें.

प्रमोशन की सूची बनाना

बनाए गए सभी प्रमोशन देखने के लिए, promotions.list तरीके का इस्तेमाल किया जा सकता है.

अनुरोध का एक सैंपल यहां दिया गया है:

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

जवाब में, आपके खाते में मौजूद सभी प्रमोशन की सूची होती है. हर प्रमोशन के लिए, आपको promotionId, redemptionChannel, dataSource, promotionStatus वगैरह जैसी जानकारी दिख सकती है.

प्रमोशन की स्थिति देखना

किसी प्रमोशन की स्थिति देखने के लिए, promotions.get या promotions.list तरीके से मिली promotionStatus एट्रिब्यूट की वैल्यू देखें.

promotionStatus फ़ील्ड में ये वैल्यू हो सकती हैं:

  • IN_REVIEW: प्रमोशन की समीक्षा अब भी की जा रही है.
  • REJECTED: प्रमोशन को अस्वीकार कर दिया गया है.
  • LIVE: प्रमोशन को मंज़ूरी मिल गई है और वह चालू है.
  • STOPPED: खाते से प्रमोशन को रोक दिया गया है.
  • EXPIRED: प्रमोशन अब चालू नहीं है.
  • PENDING: प्रमोशन को रोका नहीं गया है और सभी समीक्षाओं को मंज़ूरी मिल गई है. हालांकि, प्रमोशन के चालू होने की तारीख आने वाले समय की है.
  • STATE_UNSPECIFIED: प्रमोशन की स्थिति के बारे में जानकारी नहीं है.

अपने बनाए गए प्रमोशन को मंज़ूरी मिलने की प्रोसेस के बारे में जानने के लिए, प्रमोशन को मंज़ूरी देने की प्रोसेस देखें.

प्रमोशन की स्थिति का सैंपल

यहां दिए गए सैंपल, सफल और असफल अनुरोधों के बीच का अंतर दिखाते हैं.

प्रॉडक्ट की मैपिंग मौजूद नहीं है

यहां दिए गए रिस्पॉन्स के मुख्य हिस्से में, एक ऑनलाइन प्रमोशन दिखाया गया है. इसे प्रॉडक्ट मैपिंग मौजूद न होने की वजह से अस्वीकार कर दिया गया है.

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

अस्वीकार किए गए प्रमोशन की समस्या हल करने और आने वाले समय में प्रमोशन को अस्वीकार होने से बचाने का तरीका जानने के लिए, अस्वीकार किए गए प्रमोशन की समस्याएं ठीक करना लेख पढ़ें.

अगर आपके बनाए गए प्रमोशन को मंज़ूरी नहीं मिलती है, तो आपको एक ईमेल मिलेगा. इसमें प्रमोशन को अस्वीकार किए जाने की वजह और समस्याओं को ठीक करने के निर्देश दिए जाएंगे.

प्रमोशन की समीक्षा की जा रही है

इस रिस्पॉन्स बॉडी में, एक ऐसे प्रमोशन को दिखाया गया है जिसकी समीक्षा अब भी की जा रही है.

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

मंज़ूरी पा चुका और लाइव प्रमोशन

यहां दिए गए रिस्पॉन्स के मुख्य हिस्से में, खरीदारों को दिखने वाला प्रमोशन दिखाया गया है.

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

ज़्यादा जानकारी के लिए, प्रमोशन की स्थिति के बारे में अक्सर पूछे जाने वाले सवाल देखें.

प्रमोशन मिटाना

एपीआई का इस्तेमाल करके, किसी प्रमोशन को मिटाया नहीं जा सकता. किसी प्रमोशन को मिटाने के लिए, आपको Merchant Center के यूज़र इंटरफ़ेस (यूआई) को ऐक्सेस करना होगा. ज़्यादा जानकारी के लिए, प्रमोशन में बदलाव करना या प्रमोशन की स्थिति बदलना लेख पढ़ें.

किसी मौजूदा प्रमोशन को खत्म करने के लिए, accounts.promotions.insert तरीके का इस्तेमाल करके, attributes.promotionEffectiveTimePeriod.endTime फ़ील्ड को बीते समय पर अपडेट किया जा सकता है.

ज़्यादा जानें