Bestehende Conversions ändern

Rufen Sie die Methode Conversion.update() auf, um die folgenden Arten von Änderungen an einer oder mehreren vorhandenen Conversions vorzunehmen:

Änderungen an folgenden Werten werden in Search Ads 360 nicht unterstützt:

  • Conversion-Datum
  • Conversion-Typ
  • Das der Conversion zugeordnete Keyword, die zugeordnete Anzeige oder der zugeordnete Besuch
  • Floodlight-Aktivität oder Name der Aktivität

Sie können eine vorhandene Conversion jedoch jederzeit als ENTFERNT markieren und eine neue Conversion mit aktualisierten Werten für Datum, Typ, Attributions-IDs oder Floodlight-Aktivität hochladen. Geben Sie dabei auch einen neuen conversionId an.

Wenn in Ihrer Aktualisierungsanfrage mehrere Conversions angegeben sind, versucht Search Ads 360 wie bei Conversion.insert(), jede Conversion auf Best-Effort-Basis zu aktualisieren, anstatt den gesamten Batch in einer Alles-oder-Nichts-Transaktion zu aktualisieren. Wenn einige Aktualisierungen in einem Batch fehlschlagen, sind andere möglicherweise trotzdem erfolgreich. Wir empfehlen Ihnen, die Antwort für jede aktualisierte Conversion zu lesen, damit die Aktualisierung erfolgreich ist.

Aktualisierungsanfrage senden

Die meisten Felder, die Sie in einem Conversion.update() angeben, werden verwendet, um die Conversions zu identifizieren, die Sie aktualisieren möchten. Sie können eine der folgenden Methoden verwenden, um eine vorhandene Conversion zu identifizieren:

  • Geben Sie die clickId der Conversion an.
    • Alle bearbeiteten Conversions müssen innerhalb von 60 Tagen nach Generierung der Klick-ID liegen.
  • Geben Sie die criterionId (Keyword-ID) der Conversion an.

Bei beiden Verfahren müssen Sie conversionId, conversionTimestamp und type der Transaktion der Conversion angeben.

Wenn für die ursprüngliche Conversion revenueMicros und currencyCode oder quantityMillis angegeben sind, müssen diese Daten in der Aktualisierungsanfrage angegeben werden, auch wenn Sie sie nicht ändern.

Conversion nach Klick-ID identifizieren

Wenn bei einer Conversion ursprünglich eine Klick-ID angegeben wurde, können Sie eine Conversion.update()-Anfrage mit den folgenden Feldern senden:

  • clickId
  • conversionId
  • conversionTimestamp
  • type
  • state (nur erforderlich, wenn Sie den Status in „ENTFERNT“ oder „AKTIV“ ändern möchten)
  • quantityMillis (nur wenn in der ursprünglichen Conversion angegeben)
  • revenueMicros (nur wenn in der ursprünglichen Conversion angegeben)
  • currencyCode (nur wenn in der ursprünglichen Conversion angegeben)

Beispiel

Hier ein Beispiel für zwei bestehende Conversions:

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

Mit der folgenden Anfrage wird eine der Conversions aus dem vorherigen Beispiel aktualisiert und die andere entfernt:

JSON

Beachten Sie, dass eine Conversion.update()-Anfrage die HTTP-Methode PUT verwendet.

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 nach Keyword-ID identifizieren

Wenn Sie keinen Zugriff auf eine Klick-ID haben oder eine Conversion ursprünglich einem Keyword, einem Keyword oder einer Anzeige zugeordnet wurde, können Sie eine Conversion.update()-Anfrage mit den folgenden Feldern senden:

  • criterionId (Keyword-ID)
  • conversionId
  • conversionTimestamp
  • type
  • state (nur erforderlich, wenn Sie den Status in „ENTFERNT“ oder „AKTIV“ ändern möchten)
  • quantityMillis (nur wenn in der ursprünglichen Conversion angegeben)
  • revenueMicros (nur wenn in der ursprünglichen Conversion angegeben)
  • currencyCode (nur wenn in der ursprünglichen Conversion angegeben)

Optional können Sie andere IDs angeben, z. B. die Anzeigen-ID der Conversion oder die Kampagnen-ID. Dies ist jedoch nicht erforderlich. Search Ads 360 benötigt nur die IDs in der Liste oben, um eine vorhandene Conversion zu identifizieren.

Beispiel

Hier ein Beispiel für eine bestehende Conversion:

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

Durch die folgende Anfrage wird der Zeitstempel der Conversion aktualisiert:

JSON

Beachten Sie, dass eine Conversion.update()-Anfrage die HTTP-Methode PUT verwendet.

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-Antworten verarbeiten

Die Antwort auf eine Aktualisierungsanfrage entspricht der Antwort auf die Anfrage zum Einfügen: Search Ads 360 zeigt nur dann einen Erfolg an, wenn alle Conversions in der Anfrage erfolgreich aktualisiert wurden.

Wenn die Anfrage erfolgreich ist, enthält die Antwort die vollständige interne Search Ads 360-Darstellung für jede aktualisierte Conversion, z. B. die Kampagnen-ID, die Anzeigengruppen-ID und die Keyword-ID (Kriterium).

Wenn ein oder mehrere Updates nicht validiert oder hochgeladen werden können, enthält die Antwort Fehlermeldungen für jedes fehlgeschlagene Update. Die Antwort enthält keine Nachrichten zu Conversions, die aktualisiert wurden. Weitere Informationen zu diesen Fehlermeldungen finden Sie unter Search Ads 360-Antworten für Einfügeanfragen verarbeiten.