Modificar las conversiones existentes

Llama al método Conversion.update() para realizar los siguientes tipos de cambios en una o más conversiones existentes:

Search Ads 360 no permite cambiar los siguientes elementos:

  • Es la fecha de la conversión.
  • El tipo de conversión
  • La palabra clave o la visita que se atribuyeron a la conversión
  • La actividad de Floodlight o el nombre de la actividad

Sin embargo, siempre puedes marcar una conversión existente como QUITADA y subir una nueva con la fecha, el tipo, los IDs de atribución o la actividad de Floodlight actualizados (asegúrate de especificar también un conversionId nuevo).

Al igual que con Conversion.insert(), si tu solicitud de actualización especifica varias conversiones, Search Ads 360 intenta actualizar cada conversión de la mejor manera posible en lugar de actualizar todo el lote como una transacción todo o nada. Si algunas actualizaciones de un lote fallan, es posible que otras se realicen correctamente. Te recomendamos que leas la respuesta de cada conversión actualizada para asegurarte de que la actualización se haya realizado correctamente.

(Actualizado en 2025) Baja de dsConversionId

Actualmente, puedes usar dsConversionId o conversionId para identificar y editar las conversiones. El campo dsConversionId dejará de estar disponible en el tercer trimestre de 2025. A partir de ahora, debes usar conversionId para editar las conversiones en la API de conversiones de Search Ads 360.

Cambios clave:

  • dsConversionId Baja: dsConversionID ya no se admitirá en la API de Search Ads 360 Reporting (denominada conversion.id) ni en la IU de informes (denominada "ID de conversión").
  • conversionId Requisito: conversionId se convertirá en un campo obligatorio para editar conversiones a través de la API de conversiones de Search Ads 360.

Cómo obtener conversionId:

  • API de Search Ads 360 Reporting: Puedes recuperar advertiser_conversion_id con la API de Search Ads 360 Reporting. Este valor corresponde al conversionId necesario para la edición.
  • IU de Search Ads 360: Puedes encontrar el “ID de conversión del anunciante” en la página de informes de conversiones de la interfaz de usuario de Search Ads 360. ID de conversión en los informes de SA360

Envía una solicitud de actualización

La mayoría de los campos que especificas en un Conversion.update() se usan para identificar las conversiones que deseas actualizar. Puedes usar cualquiera de las siguientes técnicas para identificar una conversión existente:

  • Especifica el clickId de la conversión
    • Todas las conversiones editadas deben estar dentro de un plazo de 60 días a partir de la fecha en que se genera el ID de clic.
  • Especifica el criterionId (ID de palabra clave) de la conversión.

Ambas técnicas requieren que especifiques el conversionId, el conversionTimestamp y la type de la conversión.

Además, si la conversión original especificó revenueMicros y currencyCode o quantityMillis, la solicitud de actualización debe especificar estos datos, incluso si no los cambias.

Cómo identificar una conversión por ID de clic

Si una conversión especificó originalmente un ID de clic, puedes enviar una solicitud Conversion.update() que especifique los siguientes campos:

  • clickId
  • conversionId
  • conversionTimestamp
  • type
  • state (solo es obligatorio si quieres cambiar el estado a REMOVED o ACTIVE)
  • quantityMillis (solo si se especifica en la conversión original)
  • revenueMicros (solo si se especifica en la conversión original)
  • currencyCode (solo si se especifica en la conversión original)

Ejemplo

Este es un ejemplo de dos conversiones existentes:

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

La siguiente solicitud actualiza una de las conversiones del ejemplo anterior y quita la otra:

JSON

Ten en cuenta que una solicitud Conversion.update() usa el método 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())

Identifica la conversión por ID de palabra clave

Si no tienes acceso a un ID de clic o si una conversión se atribuyó originalmente a una palabra clave o a una palabra clave y un anuncio, puedes enviar una solicitud Conversion.update() que especifique los siguientes campos:

  • criterionId (ID de palabra clave)
  • conversionId
  • conversionTimestamp
  • type
  • state (solo es obligatorio si quieres cambiar el estado a REMOVED o ACTIVE)
  • quantityMillis (solo si se especifica en la conversión original)
  • revenueMicros (solo si se especifica en la conversión original)
  • currencyCode (solo si se especifica en la conversión original)

De forma opcional, puedes especificar otros IDs, como el ID del anuncio y el ID de la campaña de la conversión, entre otros, pero no es necesario. Search Ads 360 solo necesita los IDs de la lista anterior para identificar una conversión existente.

Ejemplo

Este es un ejemplo de una conversión existente:

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

La siguiente solicitud actualiza la marca de tiempo de la conversión:

JSON

Ten en cuenta que una solicitud Conversion.update() usa el método 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())

Controla las respuestas de Search Ads 360

La respuesta de una solicitud de actualización es la misma que la de una solicitud de inserción: Search Ads 360 indica que se realizó correctamente solo si se actualizaron todas las conversiones de la solicitud.

Si la solicitud se realiza correctamente, la respuesta incluirá la representación interna completa de Search Ads 360 para cada conversión actualizada, como el ID de la campaña, el ID del grupo de anuncios y el ID de la palabra clave (criterio).

Si una o más actualizaciones no se validan o suben, la respuesta incluye mensajes de error para cada actualización que no se pudo realizar. La respuesta no contiene mensajes sobre las conversiones que se actualizaron correctamente. Para obtener más información sobre estos mensajes de error, consulta Cómo controlar las respuestas de Search Ads 360 en el caso de las solicitudes de inserción.