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 di kolom berikut:

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

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

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

Kirim permintaan pembaruan

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

  • Tentukan clickId
      konversi
    • Semua konversi yang diedit harus berada dalam waktu 60 hari sejak ID klik dibuat.
  • Tentukan criterionId konversi (ID kata kunci)

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

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

Identifikasi konversi menurut 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 dari 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 yang 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())

Mengidentifikasi konversi berdasarkan ID kata kunci

Jika tidak memiliki akses ke ID klik, atau jika sebuah 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 konversi, ID kampanye, dan sebagainya, tetapi hal ini tidak perlu dilakukan. 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, respons akan 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, responsnya akan menyertakan pesan kegagalan untuk setiap update yang gagal. Respons tidak berisi pesan tentang konversi yang berhasil diperbarui. Untuk informasi selengkapnya tentang pesan kegagalan ini, lihat Menangani respons Search Ads 360 untuk permintaan penyisipan.