Modifica conversioni esistenti

Chiama il Conversion.update() per apportare i seguenti tipi di modifiche a una o più conversioni esistenti:

Search Ads 360 non supporta la modifica dei seguenti elementi:

  • La data della conversione.
  • Il tipo di conversione.
  • La parola chiave o la visita attribuita alla conversione.
  • L'attività Floodlight o il nome dell'attività.

Tuttavia, puoi sempre contrassegnare una conversione esistente come RIMOSSO e caricarne una nuova. con la data, il tipo, gli ID attribuzione o l'attività Floodlight aggiornati (assicurati di specificare nuovi conversionId).

Come per Conversion.insert(), se la richiesta di aggiornamento specifica più conversioni, Search Ads 360 cerca di aggiornare ogni conversione secondo il criterio del "best effort" invece di aggiornare l'intero batch come transazione "tutto o niente". Se alcuni aggiornamenti in una un batch non riuscito, altri potrebbero comunque riuscire. Ti consigliamo di leggere la risposta per ogni conversione aggiornata, per assicurarti che l'aggiornamento sia andato a buon fine.

Invia una richiesta di aggiornamento

La maggior parte dei campi che specifichi in un Conversion.update() vengono utilizzati per identificare le conversioni da aggiornare. Puoi utilizzare uno dei seguenti metodi tecniche per identificare una conversione esistente:

  • Specifica il valore clickId della conversione
    • Tutte le conversioni modificate devono rientrare nei 60 giorni successivi alla generazione dell'ID clic.
  • Specifica il valore criterionId (ID parola chiave) della conversione

Entrambe le tecniche richiedono di specificare i valori conversionId, conversionTimestamp, e la transazione type.

Inoltre, se la conversione originale specificava revenueMicros e currencyCode o quantityMillis, nella richiesta di aggiornamento devono essere specificati questi dati anche se non lo modifichiamo.

Identifica la conversione per ID clic

Se una conversione inizialmente specificava un ID clic, puoi inviare un Conversion.update() che specifica i seguenti campi:

  • clickId
  • conversionId
  • conversionTimestamp
  • type
  • state (richiesto solo se vuoi modificare lo stato in RIMOSSO) o ATTIVO)
  • quantityMillis (solo se specificato nella conversione originale)
  • revenueMicros (solo se specificato nella conversione originale)
  • currencyCode (solo se specificato nella conversione originale)

Esempio

Ecco un esempio di due conversioni esistenti:

{
 "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 seguente richiesta aggiorna una delle conversioni dell'esempio precedente e rimuove e l'altra:

JSON

Tieni presente che una richiesta Conversion.update() utilizza il metodo PUT HTTP(S).

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 le conversioni per ID parola chiave

Se non hai accesso a un ID clic o se una conversione è stata originariamente attribuita a un parola chiave o parola chiave/annuncio, puoi inviare una richiesta Conversion.update() che specifica i seguenti campi:

  • criterionId (ID parola chiave)
  • conversionId
  • conversionTimestamp
  • type
  • state (richiesto solo se vuoi modificare lo stato in RIMOSSO) o ATTIVO)
  • quantityMillis (solo se specificato nella conversione originale)
  • revenueMicros (solo se specificato nella conversione originale)
  • currencyCode (solo se specificato nella conversione originale)

Se vuoi, puoi specificare altri ID, ad esempio l'ID annuncio della conversione, l'ID campagna e così via, ma non è necessario. Search Ads 360 necessita solo degli ID nell'elenco riportato sopra per identificare una conversione esistente.

Esempio

Ecco un esempio di conversione esistente:

{
 "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 seguente richiesta aggiorna il timestamp della conversione:

JSON

Tieni presente che una richiesta Conversion.update() utilizza il metodo PUT HTTP(S).

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())

Gestire le risposte di Search Ads 360

La risposta per una richiesta di aggiornamento è la stessa per una richiesta di inserimento richiesta: Search Ads 360 indica l'esito positivo solo se tutte le conversioni nella richiesta sono state aggiornato correttamente.

Se la richiesta ha esito positivo, la risposta include l'intero codice interno di Search Ads 360 rappresentazione per ogni conversione aggiornata, ad esempio ID campagna, ID gruppo di annunci e parola chiave (criterio).

Se la convalida o il caricamento di uno o più aggiornamenti non riesce, la risposta include un errore messaggi per ogni aggiornamento non riuscito. La risposta non contiene messaggi sulle conversioni che è stato aggiornato correttamente. Per ulteriori informazioni su questi messaggi di errore, vedi Handle Risposte di Search Ads 360 per le richieste di inserimento.