Modifier les conversions existantes

Appelez la méthode Conversion.update(). pour apporter les types de modifications suivants à une ou plusieurs conversions existantes:

Il n'est pas possible de modifier les éléments suivants dans Search Ads 360:

  • Date de conversion.
  • Type de conversion.
  • Mot clé ou visite attribués à la conversion.
  • Nom de l'activité ou de l'activité Floodlight.

Toutefois, vous pouvez toujours marquer une conversion existante comme SUPPRIMÉE et en importer une nouvelle. avec la date, le type, les ID d'attribution ou l'activité Floodlight mis à jour (veillez à spécifier un (nouveau conversionId).

Comme pour Conversion.insert(), si votre requête de mise à jour spécifie plusieurs conversions, Search Ads 360 tente de mettre à jour chaque conversion du mieux possible au lieu de mettre à jour l’ensemble du lot en tant que transaction tout ou rien. Si certaines mises à jour les lots échouent, d'autres peuvent quand même réussir. Nous vous recommandons de consulter la réponse à chaque conversion mise à jour afin de vous assurer que la mise à jour a bien été effectuée.

Envoyer une demande de mise à jour

La plupart des champs que vous spécifiez dans un élément Conversion.update() sont utilisés pour identifier les conversions à mettre à jour. Vous pouvez utiliser l'une des options suivantes : techniques pour identifier une conversion existante:

  • Spécifiez le clickId de la conversion. <ph type="x-smartling-placeholder">
      </ph>
    • Toutes les conversions modifiées doivent se situer dans les 60 jours suivant la génération de l'ID de clic.
  • Spécifiez le criterionId (ID du mot clé) de la conversion.

Ces deux techniques nécessitent que vous spécifiiez les paramètres conversionId, conversionTimestamp, et la transaction type.

De plus, si la conversion d'origine spécifiait revenueMicros et currencyCode ou quantityMillis, la requête de mise à jour doit spécifier ces données même si vous ne la modifient pas.

Identifier une conversion à l'aide de l'ID de clic

Si un ID de clic était initialement spécifié pour une conversion, vous pouvez envoyer un Conversion.update() qui spécifie les champs suivants:

  • clickId
  • conversionId
  • conversionTimestamp
  • type
  • state (obligatoire uniquement si vous souhaitez définir l'état sur SUPPRIMÉ) ou ACTIVE)
  • quantityMillis (uniquement si spécifié dans la conversion d'origine)
  • revenueMicros (uniquement si spécifié dans la conversion d'origine)
  • currencyCode (uniquement si spécifié dans la conversion d'origine)

Exemple

Voici un exemple de deux conversions existantes:

{
 "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 requête suivante met à jour l'une des conversions de l'exemple précédent et supprime l'autre:

JSON

Notez qu'une requête Conversion.update() utilise la méthode PUT Méthode HTTP.

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

Identifier les conversions à l'aide de l'ID de mot clé

Si vous n'avez pas accès à un ID de clic ou si une conversion a été initialement attribuée à un un mot clé ou un mot clé/annonce, vous pouvez envoyer une demande Conversion.update() qui spécifie les champs suivants:

  • criterionId (ID du mot clé)
  • conversionId
  • conversionTimestamp
  • type
  • state (obligatoire uniquement si vous souhaitez définir l'état sur SUPPRIMÉ) ou ACTIVE)
  • quantityMillis (uniquement si spécifié dans la conversion d'origine)
  • revenueMicros (uniquement si spécifié dans la conversion d'origine)
  • currencyCode (uniquement si spécifié dans la conversion d'origine)

Vous pouvez éventuellement spécifier d'autres ID (par exemple, l'ID de l'annonce associée à la conversion, l'ID de la campagne etc., mais ce n'est pas nécessaire. Search Ads 360 n'a besoin que des ID répertoriés ci-dessus pour pour identifier une conversion existante.

Exemple

Voici un exemple de conversion existante:

{
 "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 requête suivante met à jour le code temporel de la conversion:

JSON

Notez qu'une requête Conversion.update() utilise la méthode PUT Méthode HTTP.

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

Gérer les réponses Search Ads 360

La réponse à une requête de mise à jour est la même que la réponse à une requête d'insertion. requête: Search Ads 360 indique une réussite uniquement si toutes les conversions de la demande ont été mise à jour réussie.

Si la demande aboutit, la réponse inclut l'intégralité des ressources internes de Search Ads 360 représentation de chaque conversion mise à jour (par exemple, l'ID de campagne, l'ID du groupe d'annonces et le mot clé) (critère).

Si la validation ou l'importation d'une ou de plusieurs mises à jour échoue, la réponse inclut un échec des messages pour chaque échec de mise à jour. La réponse ne contient pas de messages sur les conversions qui a bien été mise à jour. Pour plus d'informations sur ces messages d'échec, consultez la section Gérer Réponses de Search Ads 360 pour les demandes d'insertion.