Llama al método Conversion.update()
para realizar los siguientes tipos de cambios en una o más conversiones existentes:
- Modifica los ingresos, el código de moneda o la cantidad.
- Modifica el ID de pedido proporcionado por el anunciante y cualquier variable personalizada de Floodlight.
- Para quitar la conversión, cambia
conversion.state
deACTIVE
aREMOVED
.
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 (denominadaconversion.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 alconversionId
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.
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.