Ubah Konversi yang Ada

Panggil metode Conversion.update() untuk membuat jenis perubahan berikut pada satu atau beberapa konversi yang ada:

Search Ads 360 tidak mendukung perubahan berikut:

  • Tanggal konversi.
  • Jenis konversi.
  • Kata kunci, iklan, atau kunjungan yang diatribusikan untuk konversi.
  • Aktivitas atau nama aktivitas Floodlight.

Namun, Anda selalu dapat menandai konversi yang ada sebagai DIHAPUS dan mengupload konversi baru dengan tanggal, jenis, ID atribusi, atau aktivitas Floodlight yang diperbarui (pastikan untuk menentukan conversionId baru juga).

Seperti halnya Conversion.insert(), jika permintaan pembaruan Anda menentukan beberapa konversi, Search Ads 360 akan mencoba memperbarui setiap konversi dengan upaya terbaik, bukan memperbarui seluruh batch sebagai transaksi apa pun atau tidak sama sekali. Jika beberapa update dalam batch gagal, update lainnya mungkin masih berhasil. Sebaiknya baca respons untuk setiap konversi yang diperbarui guna memastikan update berhasil.

Mengirim permintaan pembaruan

Sebagian besar kolom yang Anda tentukan dalam Conversion.update() digunakan untuk mengidentifikasi konversi yang ingin Anda perbarui. Anda dapat menggunakan salah satu teknik berikut untuk mengidentifikasi konversi yang ada:

  • Tentukan clickId konversi
  • Tentukan criterionId konversi (ID kata kunci)

Kedua teknik tersebut mengharuskan Anda menentukan conversionId, conversionTimestamp, dan type transaksi.

Selain itu, jika konversi asli menentukan revenueMicros dan currencyCode atau quantityMillis, permintaan pembaruan harus menentukan data ini meskipun Anda tidak mengubahnya.

Identifikasi konversi berdasarkan ID klik

Jika konversi awalnya menentukan ID klik, Anda dapat mengirim permintaan Conversion.update() yang menentukan kolom berikut:

  • clickId
  • conversionId
  • conversionTimestamp
  • type
  • state (hanya diperlukan jika Anda ingin mengubah status menjadi Dihapus atau AKTIF)
  • quantityMillis (hanya jika ditentukan dalam konversi asli)
  • revenueMicros (hanya jika ditentukan dalam konversi asli)
  • currencyCode (hanya jika ditentukan dalam konversi asli)

Contoh

Berikut adalah contoh dua konversi yang ada:

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

Permintaan berikut memperbarui salah satu konversi dari contoh sebelumnya dan menghapus konversi lainnya:

JSON

Perhatikan bahwa permintaan Conversion.update() menggunakan metode 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"
  }
 ]
}        

Java

/**
 * 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;
  }         

Python

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())

Identifikasi konversi berdasarkan ID kata kunci

Jika tidak memiliki akses ke ID klik, atau jika konversi awalnya diatribusikan ke kata kunci atau kata kunci/iklan, Anda dapat mengirim permintaan Conversion.update() yang menentukan kolom berikut:

  • criterionId (ID kata kunci)
  • conversionId
  • conversionTimestamp
  • type
  • state (hanya diperlukan jika Anda ingin mengubah status menjadi Dihapus atau AKTIF)
  • quantityMillis (hanya jika ditentukan dalam konversi asli)
  • revenueMicros (hanya jika ditentukan dalam konversi asli)
  • currencyCode (hanya jika ditentukan dalam konversi asli)

Anda dapat menentukan ID lain secara opsional, seperti ID iklan, ID kampanye, dan sebagainya, namun tidak harus melakukannya. Search Ads 360 hanya memerlukan ID dalam daftar di atas untuk mengidentifikasi konversi yang ada.

Contoh

Berikut adalah contoh konversi yang ada:

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

Permintaan berikut memperbarui stempel waktu konversi:

JSON

Perhatikan bahwa permintaan Conversion.update() menggunakan metode 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"
  }
 ]
}        

Java

    // 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;
   }                 

Python

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())

Menangani respons Search Ads 360

Respons untuk permintaan pembaruan sama dengan respons untuk permintaan penyisipan: Search Ads 360 menunjukkan keberhasilan hanya jika semua konversi dalam permintaan berhasil diperbarui.

Jika permintaan berhasil, responsnya menyertakan representasi internal Search Ads 360 lengkap untuk setiap konversi yang diperbarui, seperti ID kampanye, ID grup iklan, dan ID kata kunci (kriteria).

Jika satu atau beberapa update gagal divalidasi atau diupload, respons akan menyertakan pesan kegagalan untuk setiap update yang gagal. Respons ini tidak berisi pesan tentang konversi yang berhasil diperbarui. Untuk informasi lebih lanjut tentang pesan kegagalan ini, lihat Menangani respons Search Ads 360 untuk permintaan penyisipan.