קוראים לConversion.update()
.
כדי לבצע את סוגי השינויים הבאים בהמרה קיימת אחת או יותר:
- משנים את ההכנסה, קוד המטבע או הכמות.
- לשנות את advertiser-provided מזהה הזמנה וכל מאפיין בהתאמה אישית משתנים של Floodlight.
- כדי להסיר את ההמרה, משנים את
conversion.state
מ-ACTIVE
עדREMOVED
.
ב-Search Ads 360 אין תמיכה בביצוע השינויים הבאים:
- תאריך ההמרה.
- סוג ההמרה
- מילת המפתח או הביקור שמשויכים להמרה.
- הפעילות ב-Floodlight או השם שלה
עם זאת, תמיד אפשר לסמן המרה קיימת כ'הוסרה' ולהעלות המרה חדשה
עם התאריך, הסוג, מזהי השיוך (Attribution) המעודכנים או הפעילות המעודכנת ב-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
(נדרש רק אם רוצים לשנות את המדינה ל-REMOVED או פעיל)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()
משתמשת ב-PUT
ה-method HTTP.
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())
זיהוי המרה לפי מזהה מילת מפתח
אם אין לכם גישה למספר קליק, או אם המרה שויכה במקור אל
למילת מפתח או למילת מפתח/מודעה, אפשר לשלוח בקשת Conversion.update()
מציין את השדות הבאים:
criterionId
(מזהה מילת מפתח)conversionId
conversionTimestamp
type
state
(נדרש רק אם רוצים לשנות את המדינה ל-REMOVED או פעיל)quantityMillis
(רק אם צוין בהמרה המקורית)revenueMicros
(רק אם צוין בהמרה המקורית)currencyCode
(רק אם צוין בהמרה המקורית)
אפשר לציין מזהים אחרים, כמו מזהה המודעה של ההמרה, מזהה הקמפיין, וכן הלאה, אבל אין צורך בכך. מערכת Search Ads 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()
משתמשת ב-PUT
ה-method HTTP.
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())
טיפול בתשובות של Search Ads 360
התגובה לבקשת עדכון זהה לתשובה של תוספת request: מערכת Search Ads 360 מציינת הצלחה רק אם כל ההמרות בבקשה עודכן בהצלחה.
אם הבקשה תאושר, התשובה תכלול את הנתונים הפנימיים המלאים של Search Ads 360 ייצוג של כל המרה מעודכנת, כגון מזהה קמפיין, מזהה קבוצת מודעות ומילת מפתח מזהה (קריטריון).
אם עדכון אחד או יותר נכשל באימות או בהעלאה, התשובה כוללת כשל הודעות על כל עדכון שנכשל. התגובה לא כוללת הודעות על המרות שעודכנו בהצלחה. מידע נוסף על ההודעות האלה לגבי כשל זמין בקטע כינוי תגובות של Search Ads 360 לבקשות להזנה.