Изменить существующие преобразования

Вызовите метод Conversion.update() , чтобы внести следующие типы изменений в одно или несколько существующих преобразований:

Поисковая реклама 360 не поддерживает изменение следующих параметров:

  • Дата конверсии.
  • Тип конверсии.
  • Ключевое слово, объявление или посещение, связанное с конверсией.
  • Действие Floodlight или название действия.

Однако вы всегда можете пометить существующую конверсию как УДАЛЕННУЮ и загрузить новую конверсию с обновленной датой, типом, идентификаторами атрибуции или действием Floodlight (не забудьте также указать новый conversionId ).

Как и в случае с Conversion.insert() , если в вашем запросе на обновление указано несколько конверсий, Search Ads 360 попытается обновить каждую конверсию по мере возможности, а не обновлять весь пакет как транзакцию по принципу «все или ничего». Если некоторые обновления в пакете завершатся неудачно, другие все равно могут быть успешными. Мы рекомендуем вам читать ответ на каждое обновленное преобразование, чтобы убедиться, что обновление прошло успешно.

Отправить запрос на обновление

Большинство полей, которые вы указываете в Conversion.update() используются для идентификации конверсий, которые вы хотите обновить. Для идентификации существующего преобразования можно использовать любой из следующих методов:

  • Укажите clickId конверсии
    • Все измененные конверсии должны произойти в течение 60 дней с момента создания идентификатора клика.
  • Укажите criterionId конверсии (идентификатор ключевого слова).

Оба метода требуют указания конверсионного conversionId конверсии, conversionTimestamp и type транзакции.

Кроме того, если в исходном преобразовании были revenueMicros currencyCode или quantityMillis , в запросе на обновление необходимо указать эти данные, даже если вы их не меняете.

Определить конверсию по идентификатору клика

Если в конверсии изначально указан идентификатор клика, вы можете отправить запрос Conversion.update() , в котором указаны следующие поля:

  • clickId
  • conversionId
  • conversionTimestamp
  • type
  • state (требуется только в том случае, если вы хотите изменить состояние на УДАЛЕНО или АКТИВНО)
  • quantityMillis (только если указано в исходном преобразовании)
  • revenueMicros (только если указано в исходной конверсии)
  • currencyCode (только если указано в исходной конвертации)

Пример

Вот пример двух существующих преобразований:

{
 "kind": "doubleclicksearch#conversionList",
  "conversion" : [{
    "clickId" : "COiYmPDTv7kCFcP0KgodOzQAAA",
    "conversionId" : "test_20130906_10",
    "conversionTimestamp" : "1378710000000",
    "segmentationType" : "FLOODLIGHT",
    "segmentationName" : "Test",
    "type": "TRANSACTION",
    "revenueMicros": "100000000", // 100 million revenueMicros is equivalent to $100 of revenue
    "currencyCode": "USD"
  },
  {
   "clickId": "COiYmPDTv7kCFcP0KgodOzQAAA",
   "conversionId": "test_1383337059137",
   "conversionTimestamp": "1378710000000",
   "segmentationType" : "FLOODLIGHT",
   "segmentationName" : "Test",
   "type": "ACTION",
   "quantityMillis": "1000"
  }]
}     

Следующий запрос обновляет одно из преобразований из предыдущего примера и удаляет другое:

JSON

Обратите внимание, что запрос Conversion.update() использует HTTP-метод PUT .

PUT https://www.googleapis.com/doubleclicksearch/v2/conversion
Authorization: Bearer your OAuth 2.0 access token
Content-type: application/json
{
 "kind": "doubleclicksearch#conversionList",
 "conversion": [
  {
   "clickId": "COiYmPDTv7kCFcP0KgodOzQAAA", // Replace with data from your site
   "conversionId": "test_20130906_10",
   "conversionTimestamp": "1378710000000",
   "type": "TRANSACTION",
   "revenueMicros": "90000000", // 90 million revenueMicros is equivalent to $90 of revenue
   "currencyCode": "USD"
  },
  {
   "clickId": "COiYmPDTv7kCFcP0KgodOzQAAA", // Replace with data from your site
   "conversionId": "test_1383337059137",
   "conversionTimestamp": "1378710000000",
   "type": "ACTION",
   "quantityMillis": "1000",
   "state": "REMOVED"
  }
 ]
}        

Джава

/**
 * Instantiate the Doubleclicksearch service, create a conversion that updates an existing conversion,
 * and upload the conversions.
 */
public static void main(String[] args) throws Exception {

  Doubleclicksearch service = getService(); // See Set Up Your Application.

  // Set up a List to keep track of each conversion you create.
  List<Conversion> conversions = new Vector<Conversion>();

  // Create a conversion and add it to the conversion list.
  // Just to get a little fancy, the updateConversionFromVisit() method can be used for all
  // visit conversions, including conversions that don't specify quantity, revenue, or currency.
  // If quantityMillis wasn't specified in the original conversion, specify -1L for the
  // quantityMillis parameter. Likewise, if revenueMicros wasn't specified originally,
  // specify -1L for the revenueMicros parameter and an empty string for currency.
  conversionList = updateConversionFromVisit(
      conversionList,
      "COiYmPDTv7kCFcP0KgodOzQAAA", // clickId. Replace with data from your site
      "test_20130906_10",           // conversionId
      1378710000000L,               // timeStamp
      "TRANSACTION",                // type
      "",                           // state
      -1L,                          // quantityMillis
      90000000L,                    // revenueMicros. Equivalent to $90 of revenue
      "USD");                       // currencyCode

   // Here's a conversion that needs to be removed. Just set the state parameter to "REMOVED".
   conversionList = updateConversionFromVisit(
      conversionList,
      "COiYmPDTv7kCFcP0KgodOzQAAA", // clickId. Replace with data from your site
      "test_1383337059137",         // conversionId
      1378710000000L,               // timeStamp
      "ACTION",                     // type
      "REMOVED",                    // state
      1000L,                        // quantityMillis
      -1L,                          // revenueMicros
      "");                          // currencyCode

    // Upload the List and handle the response.
    uploadConversions(conversions, service); // See an example in Add New Conversions. 
  }

/**
 * Create a conversion and add it to a List<Conversion>.
 */
  private static List<Conversion> updateConversionFromVisit(List<Conversion> conversions,
      String clickId,
      String conversionId,
      Long timeStamp,
      String type,
      String state,
      Long quantity,
      Long revenue,
      String currency) {

    // Identifies the existing conversion.
    Conversion conversion = new Conversion()
        .setClickId(clickId)
        .setConversionId(conversionId)
        .setConversionTimestamp(BigInteger.valueOf(timeStamp))
        .setType(type);

    // Only add these fields if the value is not empty greater than -1.
    if(!state.isEmpty()) conversion.setState(state);
    if (quantity > -1L) {
      conversion.setQuantityMillis(quantity);
    }
    if (revenue > -1L) {
      conversion.setRevenueMicros(revenue);
      if (!currency.isEmpty()) {
        conversion.setCurrencyCode(currency);
      } else {
        System.err.println(String.format(
            "Can't add conversion %s. It specifies revenue but no currency.",
            conversion.getConversionId()));
        return conversions;
      }
    }

    conversions.add(conversion);
    return conversions;
  }         

Питон

def update_conversion(service):
  """Change the revenue for one existing conversion and remove another.

  Args:
    service: An authorized Doubleclicksearch service. See Set Up Your Application.
  """
  request = service.conversion().update(
      body=
      {
          'conversion' : [{
              'clickId' : 'COiYmPDTv7kCFcP0KgodOzQAAA', // Replace with data from your site
              'conversionId' : 'test_20130906_13',
              'conversionTimestamp' : '1378710000000',
              'segmentationType' : 'FLOODLIGHT',
              'segmentationName' : 'Test',
              'type': 'TRANSACTION',
              'revenueMicros': '90000000', // 90 million revenueMicros is equivalent to $90 of revenue
              'currencyCode': 'USD'
            },
            {
             'clickId': 'COiYmPDTv7kCFcP0KgodOzQAAA', // Replace with data from your site
             'conversionId': 'test_1383337059137_01',
             'conversionTimestamp': '1378710000000',
             'segmentationType' : 'FLOODLIGHT',
             'segmentationName' : 'Test',
             'type': 'ACTION',
             'quantityMillis': '1000',
             'state': 'REMOVED'
            }]
      }
  )

  pprint.pprint(request.execute())

Определить конверсию по идентификатору ключевого слова

Если у вас нет доступа к идентификатору клика или если конверсия изначально была связана с ключевым словом или ключевым словом/объявлением, вы можете отправить запрос Conversion.update() , в котором указаны следующие поля:

  • criterionId (идентификатор ключевого слова)
  • conversionId
  • conversionTimestamp
  • type
  • state (требуется только в том случае, если вы хотите изменить состояние на УДАЛЕНО или АКТИВНО)
  • quantityMillis (только если указано в исходном преобразовании)
  • revenueMicros (только если указано в исходной конверсии)
  • currencyCode (только если указано в исходной конвертации)

При желании вы можете указать другие идентификаторы, например идентификатор объявления конверсии, идентификатор кампании и т. д., но это не обязательно. Поисковой рекламе 360 нужны только идентификаторы из списка выше, чтобы идентифицировать существующую конверсию.

Пример

Вот пример существующего преобразования:

{
 "kind": "doubleclicksearch#conversionList",
  "conversion" : [{
   "agencyId": "12300000000000456",
   "advertiserId": "45600000000010291",
   "engineAccountId": "700000000042441",
   "campaignId": "71700000002044839",
   "adGroupId": "58700000032026064",
   "criterionId": "43700004289911004",
   "adId": "44700000155906860",
   "conversionId": "test_1383157519886",
   "conversionTimestamp": "1378710000000",
   "type": "ACTION",
   "quantityMillis": "1000",
   "segmentationType": "FLOODLIGHT",
   "segmentationName": "Test"
  }]
}     

Следующий запрос обновляет метку времени преобразования:

JSON

Обратите внимание, что запрос Conversion.update() использует HTTP-метод PUT .

PUT https://www.googleapis.com/doubleclicksearch/v2/conversion
Authorization: Bearer your OAuth 2.0 access token
Content-type: application/json
{
 "kind": "doubleclicksearch#conversionList",
 "conversion": [
  {
   "criterionId": "43700004289911004", // Replace with your ID
   "conversionId": "test_1383157519886",
   "conversionTimestamp": "1378710000000",
   "type": "ACTION",
   "quantityMillis": "3000"
  }
 ]
}        

Джава

    // Send conversion data to updateConversion, which creates a conversion and adds it
    // to the conversion list.
    conversionList =  updateConversionFromKeyword(conversionList,
        43700004289911004L,   // criterionId. Replace with your ID
        "test_1383157519886", // conversionId
        1378710000000L,       // timeStamp
        "ACTION",             // type
        "",                   // state
        3000L,                // quantityMillis
        -1L,                  // revenueMicros
        "");                  // currencyCode

  private static List<Conversion> updateConversionFromKeyword(List<Conversion> conversions,
       Long criterionId,
       String conversionId,
       Long timeStamp,
       String type,
       String state,
       Long quantity,
       Long revenue,
       String currency
    ) {

   Conversion conversion = new Conversion()
   .setCriterionId(criterionId)
   .setConversionId(conversionId)
   .setConversionTimestamp(BigInteger.valueOf(timeStamp))
   .setType(type);

   // Only add these fields if the value is not empty greater than -1.
   if(!state.isEmpty()) conversion.setState(state);
   if (quantity > -1L) {
     conversion.setQuantityMillis(quantity);
   }
   if (revenue > -1L) {
     conversion.setRevenueMicros(revenue);
     if (!currency.isEmpty()) {
       conversion.setCurrencyCode(currency);
     } else {
       System.err.println(String.format(
           "Can't add conversion %s. It specifies revenue but no currency.",
           conversion.getConversionId()));
       return conversions;
     }
   }

   conversions.add(conversion);
   return conversions;
   }                 

Питон

def update_conversion(service):
  """Change the timestamp of a conversion. Use only the keyword id (criterionId)
  to identify the conversion.

  Args:
    service: An authorized Doubleclicksearch service. See Set Up Your Application.
  """
  request = service.conversion().update(
      body=
      {
          'conversion': [{
              'criterionId': '43700004289911004', // Replace with your ID
              'conversionId': 'test_1383157519886',
              'conversionTimestamp': '1378760000000',
              'type': 'ACTION',
              'quantityMillis': '1000'
            }]
      }
  )

  pprint.pprint(request.execute())

Обработка ответов Поисковой рекламы 360

Ответ на запрос обновления такой же, как и ответ на запрос на вставку: Search Ads 360 указывает на успех, только если все конверсии в запросе были успешно обновлены.

Если запрос успешен, ответ включает полное внутреннее представление Search Ads 360 для каждой обновленной конверсии, например идентификатор кампании, идентификатор группы объявлений и идентификатор ключевого слова (критерия).

Если одно или несколько обновлений не удалось проверить или загрузить, ответ включает сообщения об ошибках для каждого неудачного обновления. В ответе нет сообщений об успешно обновленных конверсиях. Дополнительную информацию об этих сообщениях об ошибках см. в разделе «Обработка ответов Search Ads 360 на запросы на вставку».