Panggil metode Conversion.update()
untuk membuat jenis perubahan berikut pada satu atau beberapa konversi yang ada:
- Ubah pendapatan, kode mata uang, atau kuantitas.
- Ubah ID pesanan yang disediakan pengiklan dan semua variabel Floodlight kustom.
- Hapus konversi dengan mengubah
conversion.state
dariACTIVE
menjadiREMOVED
.
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.