Zmień istniejące konwersje

Aby wprowadzić w co najmniej 1 istniejącej konwersji te zmiany: Conversion.update()

Search Ads 360 nie umożliwia zmiany tych danych:

  • Data konwersji.
  • Typ konwersji.
  • słowo kluczowe lub wizyta, do których konwersja jest przypisana;
  • aktywność Floodlight lub nazwa aktywności;

Zawsze możesz jednak oznaczyć dotychczasową konwersję jako USUNIĘTA i przesłać nową konwersję z inną datą, typem, identyfikatorami atrybucji lub aktywnością Floodlight (pamiętaj, aby podać nowy identyfikator conversionId).

Podobnie jak w przypadku opcji Conversion.insert(), jeśli żądanie aktualizacji zawiera wiele konwersji, Search Ads 360 próbuje zaktualizować każdą z nich w najlepszy możliwy sposób, zamiast aktualizować cały ich zestaw jako transakcję typu wszystko albo nic. Jeśli niektóre aktualizacje w grupie się nie udadzą, inne mogą się udać. Zalecamy przeczytanie odpowiedzi w przypadku każdej zaktualizowanej konwersji, aby mieć pewność, że aktualizacja się powiodła.

(Updated 2025) Wycofanie usługi dsConversionId

Obecnie do identyfikowania i edytowania konwersji możesz używać funkcji dsConversionId lub conversionId. W III kwartale 2025 r. wycofamy pole dsConversionId. Od teraz do edycji konwersji w interfejsie Search Ads 360 Conversion API musisz używać zapytania conversionId.

Najważniejsze zmiany:

  • dsConversionId Wycofanie: dsConversionID nie będzie już obsługiwany w interfejsie Search Ads 360 Reporting API (nazywanym conversion.id) ani w interfejsie raportowania (nazywanym „identyfikatorem konwersji”).
  • conversionId Wymagania: conversionId stanie się obowiązkowym polem do edycji konwersji za pomocą interfejsu Search Ads 360 Conversion API.

Jak uzyskać conversionId:

  • Interfejs Search Ads 360 Reporting API: możesz pobierać dane za pomocą interfejsu Search Ads 360 Reporting API. advertiser_conversion_id Ta wartość odpowiada wartości conversionId wymaganej do edycji.
  • Interfejs Search Ads 360: identyfikator konwersji u reklamodawcy znajdziesz na stronie raportowania konwersji w interfejsie Search Ads 360. Identyfikator konwersji w raportach SA360

Wysyłanie prośby o aktualizację

Większość pól, które podajesz w pliku Conversion.update(), służy do identyfikowania konwersji, które chcesz zaktualizować. Istniejące konwersje możesz identyfikować za pomocą jednej z tych metod:

  • Określ clickIdkonwersji.
    • Wszystkie edytowane konwersje muszą być w ciągu 60 dni od wygenerowania identyfikatora kliknięcia.
  • Podaj criterionId konwersji (identyfikator słowa kluczowego).

W obu przypadkach musisz podać conversionId, conversionTimestamptype konwersji.

Jeśli pierwotna konwersja zawierała wartości revenueMicroscurrencyCode lub quantityMillis, żądanie aktualizacji musi zawierać te dane, nawet jeśli ich nie zmieniasz.

Identyfikowanie konwersji za pomocą identyfikatora kliknięcia

Jeśli konwersja została pierwotnie przypisana do identyfikatora kliknięcia, możesz wysłać żądanie Conversion.update(), które zawiera te pola:

  • clickId
  • conversionId
  • conversionTimestamp
  • type
  • state (wymagane tylko wtedy, gdy chcesz zmienić stan na USUNIĘTE lub AKTYWNE)
  • quantityMillis (tylko wtedy, gdy jest określone w pierwotnej konwersji)
  • revenueMicros (tylko wtedy, gdy jest określone w pierwotnej konwersji)
  • currencyCode (tylko wtedy, gdy jest określone w pierwotnej konwersji)

Przykład

Oto przykład 2 dotychczasowych konwersji:

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

Poniższe żądanie aktualizuje jedną z konwersji z poprzedniego przykładu i usuwa drugą:

JSON

Pamiętaj, że żądanie Conversion.update() używa metody 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())

Identyfikowanie konwersji za pomocą identyfikatora słowa kluczowego

Jeśli nie masz dostępu do identyfikatora kliknięcia lub konwersja została pierwotnie przypisana do słowa kluczowego lub słowa kluczowego i reklamy, możesz wysłać Conversion.update() z tymi polami:

  • criterionId (identyfikator słowa kluczowego)
  • conversionId
  • conversionTimestamp
  • type
  • state (wymagane tylko wtedy, gdy chcesz zmienić stan na USUNIĘTE lub AKTYWNE)
  • quantityMillis (tylko wtedy, gdy jest określone w pierwotnej konwersji)
  • revenueMicros (tylko wtedy, gdy jest określone w pierwotnej konwersji)
  • currencyCode (tylko wtedy, gdy jest określone w pierwotnej konwersji)

Opcjonalnie możesz podać inne identyfikatory, np. identyfikator reklamy konwersji, identyfikator kampanii itp., ale nie jest to konieczne. Aby zidentyfikować dotychczasową konwersję, Search Ads 360 potrzebuje tylko identyfikatorów z powyżej wymienionej listy.

Przykład

Oto przykład dotychczasowej konwersji:

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

Żądanie o tym schemacie zaktualizuje sygnaturę czasową konwersji:

JSON

Pamiętaj, że żądanie Conversion.update() używa metody 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())

Obsługa odpowiedzi Search Ads 360

Odpowiedź na żądanie aktualizacji jest taka sama jak odpowiedź na żądanie wstawienia: Search Ads 360 wskazuje powodzenie tylko wtedy, gdy wszystkie konwersje w żądaniu zostały zaktualizowane.

Jeśli żądanie zakończy się powodzeniem, odpowiedź będzie zawierać pełny wewnętrzny format Search Ads 360 każdej zaktualizowanej konwersji, np. identyfikator kampanii, identyfikator grupy reklam i identyfikator słowa kluczowego (kryterium).

Jeśli weryfikacja lub przesłanie co najmniej 1 uaktualnienia się nie powiedzie, odpowiedź będzie zawierać komunikaty o błędach dotyczące każdego nieudanego uaktualnienia. Odpowiedź nie zawiera wiadomości o konwersjach, które zostały zaktualizowane. Więcej informacji o tych komunikatach o błędzie znajdziesz w sekcji Obsługa odpowiedzi Search Ads 360 w przypadku żądań wstawiania.