4.1.5 Monitoraggio delle conversioni

Valore e impatto aziendale


Per fornire in modo efficace le potenti funzionalità di machine learning e analisi dell'ecosistema Google per le campagne pubblicitarie dei tuoi clienti di commercianti, devi inserire i tag di monitoraggio delle conversioni e di remarketing sui siti web dei clienti.

Una conversione in Google Ads si verifica quando un utente esegue un'azione specificata dopo aver fatto clic su un annuncio, come l'acquisto di un prodotto, l'installazione di un'app per dispositivi mobili o l'iscrizione a una mailing list. Il monitoraggio delle conversioni fornisce informazioni chiave sulle azioni degli utenti dopo aver visualizzato o fatto clic su un annuncio, incluse informazioni per calcolare e confrontare il ritorno sull'investimento (ROI) per aiutare i clienti a prendere decisioni su dove concentrare la spesa pubblicitaria. Il monitoraggio aiuta anche a garantire che i dati siano disponibili per la riconciliazione. Gli ordini variano a seconda del prodotto o della categoria, pertanto il monitoraggio delle conversioni può essere utile anche per mostrare in che modo gruppi di schede specifici si convertono in vendite.

Un obiettivo di conversione è un gruppo di azioni di conversione con lo stesso obiettivo sottostante. Ad esempio, "Acquisto" può essere un obiettivo di conversione che ha "Acquisti sul sito web" e "Vendite in negozio" come azioni di conversione.

Le azioni di conversione vengono comunque utilizzate per monitorare le conversioni e ottimizzare la campagna. Crei azioni di conversione e le raggruppi negli obiettivi di conversione.

Azione di conversione di acquisto

L'implementazione del monitoraggio delle conversioni descritto qui consente all'account Google Ads del tuo commerciante di misurare il numero di conversioni di acquisto e il valore di queste conversioni. Senza il monitoraggio delle conversioni, non potrai misurare il valore aziendale generato dalla campagna in termini di ROAS (ritorno sulla spesa pubblicitaria). Inoltre, invia indicatori di dati aggiuntivi che consentono alla campagna di ottimizzare il rendimento.

Altre azioni di conversione

Sebbene l'azione di conversione di acquisto sia obbligatoria solo, il monitoraggio di azioni di conversione aggiuntive può fornire informazioni aggiuntive ai commercianti. Ti consigliamo di registrare tutto il possibile e di implementare il maggior numero possibile di azioni di conversione principali. Un elenco completo delle azioni di conversione consigliate è descritto nella sezione delle indicazioni dell'API tecnica.

In generale, è consigliabile acquisire quanto segue:

  • Qualsiasi evento riuscito direttamente associato al valore
  • Eventi riusciti che contribuiscono alle conversioni principali, come add_to_cart e sign_up.
  • Interazioni e interazioni degli utenti che aiutano gli inserzionisti a capire in che modo coinvolgono gli utenti finali

Le azioni di conversione secondarie servono solo a fini di osservazione e generazione di report e influiscono sulle offerte.Scopri di più sulle azioni di conversione principali e secondarie.

Indicazioni per l'UX


Per ridurre al minimo il rischio di errori, ti consigliamo di implementare il monitoraggio delle conversioni in modo programmatico senza l'input del commerciante, ma assicurati che i commercianti sappiano che il monitoraggio delle conversioni è stato configurato.

Quando i commercianti collegano un account Google Ads esistente, consigliamo di mostrare una notifica in cui si informa che nel loro account potrebbe essere già configurato il monitoraggio delle conversioni, in quanto potrebbero esserci conflitti che devono essere risolti. Di seguito è riportato un esempio.

connect_your_google_ads_account

Indicazioni tecniche


Ecco come funziona il monitoraggio delle conversioni. Questa sezione approfondisce ciascun passaggio:

  1. Crea un'azione di conversione nell'account Google Ads del tuo commerciante per monitorare gli acquisti (e, facoltativamente, altre azioni del cliente) effettuati sul sito web.

  2. Aggiungi il tag o lo snippet di codice per l'azione di conversione a un sito web o a un'app mobile. Per maggiori dettagli, consulta Impostare il monitoraggio delle conversioni per il tuo sito web.

  3. Quando un cliente fa clic sull'annuncio, sul suo computer o dispositivo mobile viene inserito un cookie temporaneo.

  4. Quando il cliente completa l'azione definita per l'inserzionista, Google riconosce il cookie (tramite lo snippet di codice aggiunto) e registra una conversione insieme ad altri parametri, come "value", se necessario.

Prerequisiti

Prima di iniziare, assicurati di avere un ID sviluppatore del tag Google. Se non disponi di un ID sviluppatore del tag Google, compila il modulo di richiesta ID sviluppatore del tag Google. Il tuo ID sviluppatore è diverso da altri ID, come l'ID misurazione o l'ID conversione, che gli utenti finali aggiungono al codice di misurazione del proprio sito web.

Crea e configura le azioni di conversione

I seguenti esempi mostrano come creare un'azione di conversione e aggiungerla a un account Google Ads. Ogni esempio gestisce automaticamente tutte le attività di autenticazione in background e ti guida nella creazione di un'azione di conversione:

Java

// Copyright 2018 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.ads.googleads.examples.remarketing;

import static com.google.ads.googleads.examples.utils.CodeSampleHelper.getPrintableDateTime;

import com.beust.jcommander.Parameter;
import com.google.ads.googleads.examples.utils.ArgumentNames;
import com.google.ads.googleads.examples.utils.CodeSampleParams;
import com.google.ads.googleads.lib.GoogleAdsClient;
import com.google.ads.googleads.v17.enums.ConversionActionCategoryEnum.ConversionActionCategory;
import com.google.ads.googleads.v17.enums.ConversionActionStatusEnum.ConversionActionStatus;
import com.google.ads.googleads.v17.enums.ConversionActionTypeEnum.ConversionActionType;
import com.google.ads.googleads.v17.errors.GoogleAdsError;
import com.google.ads.googleads.v17.errors.GoogleAdsException;
import com.google.ads.googleads.v17.resources.ConversionAction;
import com.google.ads.googleads.v17.resources.ConversionAction.ValueSettings;
import com.google.ads.googleads.v17.services.ConversionActionOperation;
import com.google.ads.googleads.v17.services.ConversionActionServiceClient;
import com.google.ads.googleads.v17.services.MutateConversionActionResult;
import com.google.ads.googleads.v17.services.MutateConversionActionsResponse;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collections;

/** Adds a conversion action. */
public class AddConversionAction {

  private static class AddConversionActionParams extends CodeSampleParams {

    @Parameter(names = ArgumentNames.CUSTOMER_ID, required = true)
    private Long customerId;
  }

  public static void main(String[] args) {
    AddConversionActionParams params = new AddConversionActionParams();
    if (!params.parseArguments(args)) {

      // Either pass the required parameters for this example on the command line, or insert them
      // into the code here. See the parameter class definition above for descriptions.
      params.customerId = Long.parseLong("INSERT_CUSTOMER_ID_HERE");
    }

    GoogleAdsClient googleAdsClient = null;
    try {
      googleAdsClient = GoogleAdsClient.newBuilder().fromPropertiesFile().build();
    } catch (FileNotFoundException fnfe) {
      System.err.printf(
          "Failed to load GoogleAdsClient configuration from file. Exception: %s%n", fnfe);
      System.exit(1);
    } catch (IOException ioe) {
      System.err.printf("Failed to create GoogleAdsClient. Exception: %s%n", ioe);
      System.exit(1);
    }

    try {
      new AddConversionAction().runExample(googleAdsClient, params.customerId);
    } catch (GoogleAdsException gae) {
      // GoogleAdsException is the base class for most exceptions thrown by an API request.
      // Instances of this exception have a message and a GoogleAdsFailure that contains a
      // collection of GoogleAdsErrors that indicate the underlying causes of the
      // GoogleAdsException.
      System.err.printf(
          "Request ID %s failed due to GoogleAdsException. Underlying errors:%n",
          gae.getRequestId());
      int i = 0;
      for (GoogleAdsError googleAdsError : gae.getGoogleAdsFailure().getErrorsList()) {
        System.err.printf("  Error %d: %s%n", i++, googleAdsError);
      }
      System.exit(1);
    }
  }

  /**
   * Runs the example.
   *
   * @param googleAdsClient the Google Ads API client.
   * @param customerId the client customer ID.
   * @throws GoogleAdsException if an API request failed with one or more service errors.
   */
  private void runExample(GoogleAdsClient googleAdsClient, long customerId) {

    // Creates a ConversionAction.
    ConversionAction conversionAction =
        ConversionAction.newBuilder()
            // Note that conversion action names must be unique. If a conversion action already
            // exists with the specified conversion_action_name the create operation will fail with
            // a ConversionActionError.DUPLICATE_NAME error.
            .setName("Earth to Mars Cruises Conversion #" + getPrintableDateTime())
            .setCategory(ConversionActionCategory.DEFAULT)
            .setType(ConversionActionType.WEBPAGE)
            .setStatus(ConversionActionStatus.ENABLED)
            .setViewThroughLookbackWindowDays(15L)
            .setValueSettings(
                ValueSettings.newBuilder()
                    .setDefaultValue(23.41)
                    .setAlwaysUseDefaultValue(true)
                    .build())
            .build();

    // Creates the operation.
    ConversionActionOperation operation =
        ConversionActionOperation.newBuilder().setCreate(conversionAction).build();

    try (ConversionActionServiceClient conversionActionServiceClient =
        googleAdsClient.getLatestVersion().createConversionActionServiceClient()) {
      MutateConversionActionsResponse response =
          conversionActionServiceClient.mutateConversionActions(
              Long.toString(customerId), Collections.singletonList(operation));
      System.out.printf("Added %d conversion actions:%n", response.getResultsCount());
      for (MutateConversionActionResult result : response.getResultsList()) {
        System.out.printf(
            "New conversion action added with resource name: '%s'%n", result.getResourceName());
      }
    }
  }
}

      

C#

// Copyright 2019 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

using CommandLine;
using Google.Ads.Gax.Examples;
using Google.Ads.GoogleAds.Lib;
using Google.Ads.GoogleAds.V17.Errors;
using Google.Ads.GoogleAds.V17.Resources;
using Google.Ads.GoogleAds.V17.Services;
using System;
using static Google.Ads.GoogleAds.V17.Enums.ConversionActionCategoryEnum.Types;
using static Google.Ads.GoogleAds.V17.Enums.ConversionActionStatusEnum.Types;
using static Google.Ads.GoogleAds.V17.Enums.ConversionActionTypeEnum.Types;

namespace Google.Ads.GoogleAds.Examples.V17
{
    /// <summary>
    /// This code example illustrates adding a conversion action.
    /// </summary>
    public class AddConversionAction : ExampleBase
    {
        /// <summary>
        /// Command line options for running the <see cref="AddConversionAction"/> example.
        /// </summary>
        public class Options : OptionsBase
        {
            /// <summary>
            /// The Google Ads customer ID for which the conversion action is added.
            /// </summary>
            [Option("customerId", Required = true, HelpText =
                "The Google Ads customer ID for which the conversion action is added.")]
            public long CustomerId { get; set; }
        }

        /// <summary>
        /// Main method, to run this code example as a standalone application.
        /// </summary>
        /// <param name="args">The command line arguments.</param>
        public static void Main(string[] args)
        {
            Options options = ExampleUtilities.ParseCommandLine<Options>(args);

            AddConversionAction codeExample = new AddConversionAction();
            Console.WriteLine(codeExample.Description);
            codeExample.Run(new GoogleAdsClient(), options.CustomerId);
        }

        /// <summary>
        /// Returns a description about the code example.
        /// </summary>
        public override string Description =>
            "This code example illustrates adding a conversion action.";

        /// <summary>
        /// Runs the code example.
        /// </summary>
        /// <param name="client">The Google Ads client.</param>
        /// <param name="customerId">The Google Ads customer ID for which the conversion action is
        /// added.</param>
        public void Run(GoogleAdsClient client, long customerId)
        {
            // Get the ConversionActionService.
            ConversionActionServiceClient conversionActionService =
                client.GetService(Services.V17.ConversionActionService);

            // Note that conversion action names must be unique.
            // If a conversion action already exists with the specified name the create operation
            // will fail with a ConversionAction.DUPLICATE_NAME error.
            string ConversionActionName = "Earth to Mars Cruises Conversion #"
                + ExampleUtilities.GetRandomString();

            // Add a conversion action.
            ConversionAction conversionAction = new ConversionAction()
            {
                Name = ConversionActionName,
                Category = ConversionActionCategory.Default,
                Type = ConversionActionType.Webpage,
                Status = ConversionActionStatus.Enabled,
                ViewThroughLookbackWindowDays = 15,
                ValueSettings = new ConversionAction.Types.ValueSettings()
                {
                    DefaultValue = 23.41,
                    AlwaysUseDefaultValue = true
                }
            };

            // Create the operation.
            ConversionActionOperation operation = new ConversionActionOperation()
            {
                Create = conversionAction
            };

            try
            {
                // Create the conversion action.
                MutateConversionActionsResponse response =
                    conversionActionService.MutateConversionActions(customerId.ToString(),
                            new ConversionActionOperation[] { operation });

                // Display the results.
                foreach (MutateConversionActionResult newConversionAction in response.Results)
                {
                    Console.WriteLine($"New conversion action with resource name = " +
                        $"'{newConversionAction.ResourceName}' was added.");
                }
            }
            catch (GoogleAdsException e)
            {
                Console.WriteLine("Failure:");
                Console.WriteLine($"Message: {e.Message}");
                Console.WriteLine($"Failure: {e.Failure}");
                Console.WriteLine($"Request ID: {e.RequestId}");
                throw;
            }
        }
    }
}

      

PHP

<?php

/**
 * Copyright 2018 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

namespace Google\Ads\GoogleAds\Examples\Remarketing;

require __DIR__ . '/../../vendor/autoload.php';

use GetOpt\GetOpt;
use Google\Ads\GoogleAds\Examples\Utils\ArgumentNames;
use Google\Ads\GoogleAds\Examples\Utils\ArgumentParser;
use Google\Ads\GoogleAds\Examples\Utils\Helper;
use Google\Ads\GoogleAds\Lib\V17\GoogleAdsClient;
use Google\Ads\GoogleAds\Lib\V17\GoogleAdsClientBuilder;
use Google\Ads\GoogleAds\Lib\V17\GoogleAdsException;
use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;
use Google\Ads\GoogleAds\V17\Enums\ConversionActionCategoryEnum\ConversionActionCategory;
use Google\Ads\GoogleAds\V17\Enums\ConversionActionStatusEnum\ConversionActionStatus;
use Google\Ads\GoogleAds\V17\Enums\ConversionActionTypeEnum\ConversionActionType;
use Google\Ads\GoogleAds\V17\Errors\GoogleAdsError;
use Google\Ads\GoogleAds\V17\Resources\ConversionAction;
use Google\Ads\GoogleAds\V17\Resources\ConversionAction\ValueSettings;
use Google\Ads\GoogleAds\V17\Services\ConversionActionOperation;
use Google\Ads\GoogleAds\V17\Services\MutateConversionActionsRequest;
use Google\ApiCore\ApiException;

/** This example illustrates adding a conversion action. */
class AddConversionAction
{
    private const CUSTOMER_ID = 'INSERT_CUSTOMER_ID_HERE';

    public static function main()
    {
        // Either pass the required parameters for this example on the command line, or insert them
        // into the constants above.
        $options = (new ArgumentParser())->parseCommandArguments([
            ArgumentNames::CUSTOMER_ID => GetOpt::REQUIRED_ARGUMENT
        ]);

        // Generate a refreshable OAuth2 credential for authentication.
        $oAuth2Credential = (new OAuth2TokenBuilder())->fromFile()->build();

        // Construct a Google Ads client configured from a properties file and the
        // OAuth2 credentials above.
        $googleAdsClient = (new GoogleAdsClientBuilder())
            ->fromFile()
            ->withOAuth2Credential($oAuth2Credential)
            // We set this value to true to show how to use GAPIC v2 source code. You can remove the
            // below line if you wish to use the old-style source code. Note that in that case, you
            // probably need to modify some parts of the code below to make it work.
            // For more information, see
            // https://developers.devsite.corp.google.com/google-ads/api/docs/client-libs/php/gapic.
            ->usingGapicV2Source(true)
            ->build();

        try {
            self::runExample(
                $googleAdsClient,
                $options[ArgumentNames::CUSTOMER_ID] ?: self::CUSTOMER_ID
            );
        } catch (GoogleAdsException $googleAdsException) {
            printf(
                "Request with ID '%s' has failed.%sGoogle Ads failure details:%s",
                $googleAdsException->getRequestId(),
                PHP_EOL,
                PHP_EOL
            );
            foreach ($googleAdsException->getGoogleAdsFailure()->getErrors() as $error) {
                /** @var GoogleAdsError $error */
                printf(
                    "\t%s: %s%s",
                    $error->getErrorCode()->getErrorCode(),
                    $error->getMessage(),
                    PHP_EOL
                );
            }
            exit(1);
        } catch (ApiException $apiException) {
            printf(
                "ApiException was thrown with message '%s'.%s",
                $apiException->getMessage(),
                PHP_EOL
            );
            exit(1);
        }
    }

    /**
     * Runs the example.
     *
     * @param GoogleAdsClient $googleAdsClient the Google Ads API client
     * @param int $customerId the customer ID
     */
    public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId)
    {
        // Creates a conversion action.
        $conversionAction = new ConversionAction([
            // Note that conversion action names must be unique.
            // If a conversion action already exists with the specified conversion_action_name
            // the create operation will fail with a ConversionActionError.DUPLICATE_NAME error.
            'name' => 'Earth to Mars Cruises Conversion #' . Helper::getPrintableDatetime(),
            'category' => ConversionActionCategory::PBDEFAULT,
            'type' => ConversionActionType::WEBPAGE,
            'status' => ConversionActionStatus::ENABLED,
            'view_through_lookback_window_days' => 15,
            'value_settings' => new ValueSettings([
                'default_value' => 23.41,
                'always_use_default_value' => true
            ])
        ]);

        // Creates a conversion action operation.
        $conversionActionOperation = new ConversionActionOperation();
        $conversionActionOperation->setCreate($conversionAction);

        // Issues a mutate request to add the conversion action.
        $conversionActionServiceClient = $googleAdsClient->getConversionActionServiceClient();
        $response = $conversionActionServiceClient->mutateConversionActions(
            MutateConversionActionsRequest::build($customerId, [$conversionActionOperation])
        );

        printf("Added %d conversion actions:%s", $response->getResults()->count(), PHP_EOL);

        foreach ($response->getResults() as $addedConversionAction) {
            /** @var ConversionAction $addedConversionAction */
            printf(
                "New conversion action added with resource name: '%s'%s",
                $addedConversionAction->getResourceName(),
                PHP_EOL
            );
        }
    }
}

AddConversionAction::main();

      

Python

#!/usr/bin/env python
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""This example illustrates adding a conversion action."""


import argparse
import sys
import uuid

from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException


def main(client, customer_id):
    conversion_action_service = client.get_service("ConversionActionService")

    # Create the operation.
    conversion_action_operation = client.get_type("ConversionActionOperation")

    # Create conversion action.
    conversion_action = conversion_action_operation.create

    # Note that conversion action names must be unique. If a conversion action
    # already exists with the specified conversion_action_name, the create
    # operation will fail with a ConversionActionError.DUPLICATE_NAME error.
    conversion_action.name = f"Earth to Mars Cruises Conversion {uuid.uuid4()}"
    conversion_action.type_ = (
        client.enums.ConversionActionTypeEnum.UPLOAD_CLICKS
    )
    conversion_action.category = (
        client.enums.ConversionActionCategoryEnum.DEFAULT
    )
    conversion_action.status = client.enums.ConversionActionStatusEnum.ENABLED
    conversion_action.view_through_lookback_window_days = 15

    # Create a value settings object.
    value_settings = conversion_action.value_settings
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

    # Add the conversion action.
    conversion_action_response = (
        conversion_action_service.mutate_conversion_actions(
            customer_id=customer_id,
            operations=[conversion_action_operation],
        )
    )

    print(
        "Created conversion action "
        f'"{conversion_action_response.results[0].resource_name}".'
    )


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Adds a conversion action for specified customer."
    )
    # The following argument(s) should be provided to run the example.
    parser.add_argument(
        "-c",
        "--customer_id",
        type=str,
        required=True,
        help="The Google Ads customer ID.",
    )
    args = parser.parse_args()

    # GoogleAdsClient will read the google-ads.yaml configuration file in the
    # home directory if none is specified.
    googleads_client = GoogleAdsClient.load_from_storage(version="v17")

    try:
        main(googleads_client, args.customer_id)
    except GoogleAdsException as ex:
        print(
            f'Request with ID "{ex.request_id}" failed with status '
            f'"{ex.error.code().name}" and includes the following errors:'
        )
        for error in ex.failure.errors:
            print(f'\tError with message "{error.message}".')
            if error.location:
                for field_path_element in error.location.field_path_elements:
                    print(f"\t\tOn field: {field_path_element.field_name}")
        sys.exit(1)

      

Ruby

#!/usr/bin/env ruby
# Encoding: utf-8
#
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This code example illustrates adding a conversion action.

require 'optparse'
require 'google/ads/google_ads'
require 'date'

def add_conversion_action(customer_id)
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new


  # Add a conversion action.
  conversion_action = client.resource.conversion_action do |ca|
    ca.name = "Earth to Mars Cruises Conversion #{(Time.new.to_f * 100).to_i}"
    ca.type = :UPLOAD_CLICKS
    ca.category = :DEFAULT
    ca.status = :ENABLED
    ca.view_through_lookback_window_days = 15

    # Create a value settings object.
    ca.value_settings = client.resource.value_settings do |vs|
      vs.default_value = 15
      vs.always_use_default_value = true
    end
  end

  # Create the operation.
  conversion_action_operation = client.operation.create_resource.conversion_action(conversion_action)

  # Add the ad group ad.
  response = client.service.conversion_action.mutate_conversion_actions(
    customer_id: customer_id,
    operations: [conversion_action_operation],
  )

  puts "New conversion action with resource name = #{response.results.first.resource_name}."
end

if __FILE__ == $0
  options = {}
  # The following parameter(s) should be provided to run the example. You can
  # either specify these by changing the INSERT_XXX_ID_HERE values below, or on
  # the command line.
  #
  # Parameters passed on the command line will override any parameters set in
  # code.
  #
  # Running the example with -h will print the command line usage.
  options[:customer_id] = 'INSERT_CUSTOMER_ID_HERE'

  OptionParser.new do |opts|
    opts.banner = sprintf('Usage: %s [options]', File.basename(__FILE__))

    opts.separator ''
    opts.separator 'Options:'

    opts.on('-C', '--customer-id CUSTOMER-ID', String, 'Customer ID') do |v|
      options[:customer_id] = v
    end

    opts.separator ''
    opts.separator 'Help:'

    opts.on_tail('-h', '--help', 'Show this message') do
      puts opts
      exit
    end
  end.parse!

  begin
    add_conversion_action(options.fetch(:customer_id).tr("-", ""))
  rescue Google::Ads::GoogleAds::Errors::GoogleAdsError => e
    e.failure.errors.each do |error|
      STDERR.printf("Error with message: %s\n", error.message)
      if error.location
        error.location.field_path_elements.each do |field_path_element|
          STDERR.printf("\tOn field: %s\n", field_path_element.field_name)
        end
      end
      error.error_code.to_h.each do |k, v|
        next if v == :UNSPECIFIED
        STDERR.printf("\tType: %s\n\tCode: %s\n", k, v)
      end
    end
    raise
  end
end

      

Perl

#!/usr/bin/perl -w
#
# Copyright 2019, Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This example illustrates adding a conversion action.

use strict;
use warnings;
use utf8;

use FindBin qw($Bin);
use lib "$Bin/../../lib";
use Google::Ads::GoogleAds::Client;
use Google::Ads::GoogleAds::Utils::GoogleAdsHelper;
use Google::Ads::GoogleAds::V17::Resources::ConversionAction;
use Google::Ads::GoogleAds::V17::Resources::ValueSettings;
use Google::Ads::GoogleAds::V17::Enums::ConversionActionCategoryEnum
  qw(DEFAULT);
use Google::Ads::GoogleAds::V17::Enums::ConversionActionTypeEnum   qw(WEBPAGE);
use Google::Ads::GoogleAds::V17::Enums::ConversionActionStatusEnum qw(ENABLED);
use
  Google::Ads::GoogleAds::V17::Services::ConversionActionService::ConversionActionOperation;

use Getopt::Long qw(:config auto_help);
use Pod::Usage;
use Cwd          qw(abs_path);
use Data::Uniqid qw(uniqid);

# The following parameter(s) should be provided to run the example. You can
# either specify these by changing the INSERT_XXX_ID_HERE values below, or on
# the command line.
#
# Parameters passed on the command line will override any parameters set in
# code.
#
# Running the example with -h will print the command line usage.
my $customer_id = "INSERT_CUSTOMER_ID_HERE";

sub add_conversion_action {
  my ($api_client, $customer_id) = @_;

  # Note that conversion action names must be unique.
  # If a conversion action already exists with the specified conversion_action_name,
  # the create operation fails with error ConversionActionError.DUPLICATE_NAME.
  my $conversion_action_name = "Earth to Mars Cruises Conversion #" . uniqid();

  # Create a conversion action.
  my $conversion_action =
    Google::Ads::GoogleAds::V17::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V17::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V17::Services::ConversionActionService::ConversionActionOperation
    ->new({create => $conversion_action});

  # Add the conversion action.
  my $conversion_actions_response =
    $api_client->ConversionActionService()->mutate({
      customerId => $customer_id,
      operations => [$conversion_action_operation]});

  printf "New conversion action added with resource name: '%s'.\n",
    $conversion_actions_response->{results}[0]{resourceName};

  return 1;
}

# Don't run the example if the file is being included.
if (abs_path($0) ne abs_path(__FILE__)) {
  return 1;
}

# Get Google Ads Client, credentials will be read from ~/googleads.properties.
my $api_client = Google::Ads::GoogleAds::Client->new();

# By default examples are set to die on any server returned fault.
$api_client->set_die_on_faults(1);

# Parameters passed on the command line will override any parameters set in code.
GetOptions("customer_id=s" => \$customer_id);

# Print the help message if the parameters are not initialized in the code nor
# in the command line.
pod2usage(2) if not check_params($customer_id);

# Call the example.
add_conversion_action($api_client, $customer_id =~ s/-//gr);

=pod

=head1 NAME

add_conversion_action

=head1 DESCRIPTION

This example illustrates adding a conversion action.

=head1 SYNOPSIS

add_conversion_action.pl [options]

    -help                       Show the help message.
    -customer_id                The Google Ads customer ID.

=cut

      

Poiché gli esempi precedenti sono di natura generica, di seguito sono riportate alcune note aggiuntive in modo che ConversionAction sia configurato correttamente per Performance Max. Ogni azione di conversione deve essere configurata come segue:

  • Tipo: imposta ConversionActionType su WEBPAGE, perché questi eventi relativi agli acquisti si verificano su un sito web.

  • Disponibile: imposta su true per l'azione di conversione (acquisto) principale al fine di ottimizzare le campagne in base alle vendite. Per le azioni di conversione secondarie (ad es.l'aggiunta al carrello), imposta il valore su false.

  • Categoria: per ogni azione di conversione (principale o secondaria),imposta la categoria ConversionActionCategory. Di seguito puoi trovare la categoria di azione di conversazione pertinente per ognuna delle sette azioni di conversione che consigliamo di implementare. Tieni presente che Google Ads assegna automaticamente le azioni di conversione a un obiettivo di conversione standard in base alla categoria. Ad esempio, le azioni di conversione di acquisto sono assegnate all'obiettivo di conversione standard chiamato "Acquisti". Successivamente, puoi configurare la campagna Performance Max in modo da ottimizzarla per questo obiettivo Acquisti.

Di seguito è riportato un elenco di azioni di conversione consigliate. Ti consigliamo di implementare almeno le prime quattro azioni di conversione e il maggior numero possibile di altre azioni consigliate.

Puoi anche prendere in considerazione l'implementazione di eventi aggiuntivi pertinenti per le vendite online. Per un monitoraggio ancora più granulare, puoi anche creare altre azioni di conversione o azioni di conversione personalizzate, ad esempio un'azione per "aggiungi dati di pagamento" ogni volta che un utente utilizza l'opzione di ricerca sul sito web oppure un'azione per "ricerca" ogni volta che un utente utilizza l'opzione di ricerca sul sito web. Le azioni di conversione secondarie forniscono un monitoraggio aggiuntivo per i commercianti e sono utilizzate da Google Ads per l'osservazione.

Priorità Azione di conversione Categoria azione di conversione Nome evento tag Google Descrizione
Obbligatorio Acquista ACQUISTO purchase L'utente completa un acquisto
Vivamente consigliato per tutti i negozi costruttori Aggiungere al carrello ADD_TO_CART add_to_cart L'utente aggiunge un prodotto al carrello
Vivamente consigliato per tutti i negozi costruttori Inizio procedura di pagamento BEGIN_CHECKOUT begin_checkout L'utente avvia la procedura di pagamento
Vivamente consigliato per tutti i negozi costruttori Visualizzare articolo PAGE_VIEW page_view L'utente apre la pagina di un prodotto
Altamente consigliato quando applicabile (in genere non applicabile ai negozi costruttori) Registrati REGISTRAZIONE sign_up L'utente si registra a un account
Altamente consigliato quando applicabile (in genere non applicabile ai negozi costruttori) Generare lead SUBMIT_LEAD_FORM generate_lead L'utente genera un lead tramite un modulo
Altamente consigliato quando applicabile (in genere non applicabile ai negozi costruttori) Iscriviti SUBSCRIBE_PAID non applicabile (personalizzato) L'utente si abbona a un servizio a pagamento
Altamente consigliato quando applicabile (in genere non applicabile ai negozi costruttori) Prenotazione appuntamento BOOK_APPOINTMENT non applicabile (personalizzato) L'utente prenota un appuntamento
Altamente consigliato quando applicabile (in genere non applicabile ai negozi costruttori) Richiedi preventivo REQUEST_QUOTE non applicabile (personalizzato) L'utente invia un modulo per richiedere un preventivo

Commercianti con un account Google Ads esistente

Se consenti ai commercianti di effettuare l'onboarding in un account Google Ads esistente, potresti riscontrare nel caso in cui l'account abbia già azioni di conversione. Non è consigliabile utilizzare un'azione di conversione esistente, in quanto non vi è alcuna garanzia che sia stata impostata correttamente. Inoltre, devi seguire altri passaggi per gestire questi potenziali scenari:

  • L'account ha più obiettivi (ad esempio Acquisti + Visualizzazioni di pagina + Contatti) che sono tutti contrassegnati come "Impostazioni predefinite dell'account". Quando viene creata una nuova campagna, per impostazione predefinita viene eseguita l'ottimizzazione in base a tutti questi obiettivi. Non è consigliabile per la campagna Performance Max.

  • L'account ha già una o più azioni di conversione per il monitoraggio degli acquisti ed è già raggruppata nell'obiettivo Acquisti. Ciò significa che, dopo il doppio, la campagna conteggia un acquisto perché vengono attivati due tag di conversione.

Per assicurarti che la campagna Performance Max utilizzi l'azione di conversione personalizzata e solo questa azione:

  1. Crea un CustomConversionGoal e aggiungi l'azione di conversione Acquisto all'elenco conversion_actions[] dell'obiettivo. Imposta lo stato su ENABLED.

  2. In ConversionGoalCampaignConfig della campagna Performance Max, imposta custom_conversion_goal sull'obiettivo personalizzato creato al passaggio (1).

  3. Come risultato del passaggio (2), Google Ads dovrebbe aver aggiornato automaticamente ConversionGoalCampaignConfig della campagna in modo che goal_config_level sia impostato su CAMPAIGN (anziché CUSTOMER, che lo indirizzerebbe a utilizzare gli obiettivi predefiniti per l'account), ma vale la pena verificare che questo si sia effettivamente verificato.

Recupera il tag per l'azione di conversione

Una volta creata l'azione di conversione, devi inserire lo snippet di codice corrispondente, chiamato tag, nella pagina di conversione sul sito web dell'inserzionista. Per garantire che Google Ads possa misurare tutte le conversioni indipendentemente dal browser del cliente, utilizza il tag di monitoraggio delle conversioni di Google Ads aggiornato. Il tag è costituito da due parti:

  • global_site_tag, che deve essere installato su ogni pagina del sito web dell'inserzionista.

  • event_snippet, da inserire nelle pagine web che indicano un'azione di conversione, come la conferma di pagamento o la pagina di invio del lead.

Puoi recuperare queste due parti con ConversionActionService.

Il tag imposta cookie che memorizzano un identificatore univoco per un cliente o il relativo clic sull'annuncio che lo ha indirizzato al sito. I cookie ricevono le informazioni sui clic sugli annunci da un parametro identificatore di clic di Google (GCLID) incluso nel tag di monitoraggio delle conversioni. Devi abilitare il sito web e il sistema di monitoraggio dei lead dell'inserzionista per acquisire e memorizzare il GCLID, ovvero l'ID univoco fornito da Google Ads per ogni impressione di un annuncio Google.

Ulteriori informazioni sul tag globale e su dove installarlo

Il tag Google (gtag.js) è un framework e un'API di tagging che ti consentono di inviare dati sugli eventi sia a Google Ads che a Google Analytics. Il tag globale del sito funziona insieme a uno snippet evento o a uno snippet del numero di telefono per monitorare le conversioni. Aggiungi il tag Google alla sezione <head> di ogni pagina del sito dell'inserzionista e configuralo in modo che funzioni con Google Ads. Puoi quindi utilizzare i comandi gtag() per acquisire eventi e inviare dati a Google Ads. Per capire come funziona, consulta Utilizzare il tag globale del sito per il monitoraggio delle conversioni di Google Ads.

Con il tag Google puoi utilizzare i seguenti comandi:

  • config: inizializza un prodotto Google (Google Ads, Analytics e così via), configura le impostazioni e preparati a inviare i dati a un account.

  • evento: registra una conversione inviando un evento come acquisto (consigliato) o aggiungendolo a un carrello degli acquisti (azioni di conversione secondarie). Ti consigliamo di consultare la guida di riferimento sugli eventi gtag.js.

  • set: imposta parametri comuni a tutti gli eventi sulla pagina, ad esempio la valuta.

L'esempio riportato di seguito è uno snippet di codice JavaScript del tag globale del sito per inviare dati a Google Ads. Il valore segnaposto GOOGLE_CONVERSION_ID è un ID numerico univoco per un singolo account inserzionista.

<!-- Google Tag (gtag.js) - Google Ads: GOOGLE_CONVERSION_ID -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-GOOGLE_CONVERSION_ID">
</script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments)};
  gtag('js', new Date());
   gtag('set', 'developer_id.<developer ID>', true); // Replace with your Google tag Developer ID
  gtag('config', 'AW-GOOGLE_CONVERSION_ID');
</script>

Lo snippet del tag Google deve apparire solo una volta per pagina. Se esiste già un'istanza di gtag.js, devi aggiungere nuovi ID tag a quello esistente. Per inviare dati a più account, puoi aggiungere una chiamata al comando "config" per ogni account in uso, specificando l'ID conversione di ogni account, come illustrato nell'esempio seguente:

<!-- Google Tag (gtag.js) - Google Ads: GOOGLE_CONVERSION_ID_1 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-GOOGLE_CONVERSION_ID_1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments)};
  gtag('js', new Date());
  gtag('config', 'AW-GOOGLE_CONVERSION_ID_1');
  gtag('config', 'AW-GOOGLE_CONVERSION_ID_2');
</script>

Scopri di più sullo snippet evento e dove installarlo

Affinché il monitoraggio delle conversioni di acquisto funzioni, è necessario installare lo snippet evento di acquisto nella pagina di conversione stessa. Di solito si tratta della pagina di conferma dell'ordine. Può essere inserito ovunque nel codice, dopo lo snippet del tag globale. Gli snippet evento per le azioni di conversione secondarie (ad es. aggiungi al carrello) devono essere inseriti nelle rispettive pagine.

Nello snippet di esempio riportato di seguito, AW-CONVERSION_ID e gTag_developer_ID corrispondono all'ID conversione univoco del tuo account Google Ads e dell'account sviluppatore del tag Google, mentre AW-CONVERSION_LABEL indica l'etichetta conversione univoca per l'azione di conversione:

<!-- Event snippet for a purchase conversion page -->
<script>
  gtag('event', 'conversion', {
       'send_to':'AW-CONVERSION_ID/CONVERSION_LABEL',
       'developer_id.<gTag developer ID>': true,
       'transaction_id': '<transaction_id (string)>' //unique ID for the transaction (e.g. an order ID); it's used for de-duplication purposes
       'value': 1.0,
       'currency': 'USD', //three-letter currency code, useful for advertisers who accept multiple currencies
       'country': 'US',
       'new_customer': false, //new customer acquisition goal
       'tax': 1.24, //tax cost-US only
       'shipping': 0.00, //shipping cost-US only
       'delivery_postal_code': '94043', //shipping data validation-US only
       'estimated_delivery_date': '2020-07-31', //shipping validation-US only
       'aw_merchant_id': 12345, //shipping validation-US only
       'aw_feed_country': 'US', //shipping validation-US only
       'aw_feed_language': 'EN', //shipping validation-US only
       'items': [
       {
             'id': 'P12345',
             'name': 'Android Warhol T-Shirt',
             'quantity': 2,
             'price': 12.04,
             'estimated_delivery_date': '2020-07-31', //shipping-US only
              'google_business_vertical': 'retail'
       }, …],
  });
</script>

Sebbene alcuni parametri siano facoltativi, consigliamo di includere tutte le informazioni disponibili per ogni evento. Scopri di più su quali parametri sono disponibili per ogni tipo di evento.

I parametri forniscono informazioni aggiuntive sui modi in cui gli utenti interagiscono con il tuo sito web o la tua app.

Se vuoi misurare un evento di conversione in base a un clic (ad esempio su un pulsante o una risposta dinamica per un sito che utilizza AJAX), puoi anche utilizzare il seguente snippet:

<!-- Event snippet for test conversion click -->
In your html page, add the snippet and call gtag_report_conversion when someone clicks on the chosen link or button. -->
<script>
function gtag_report_conversion(url) {
  var callback = function () {
    if (typeof(url) != 'undefined') {
      window.location = url;
    }
  };
  gtag('event', 'conversion', {
      'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL',
      'value': 1.0,
      'event_callback': callback,
      //other parameters
  });
  return false;
}
</script>

Il tag Google ha un'API Consent integrata per gestire il consenso degli utenti. È in grado di differenziare il consenso degli utenti per i cookie per scopi pubblicitari da quello per scopi di analisi.

Il risultato previsto è che i clienti ricevano almeno la chiamata gtag('consent', 'update' {...}) integrata senza che il cliente debba fare nulla. Questo dovrebbe assicurare che i tag Google (Google Ads, Floodlight, Google Analytics, Linker conversioni) siano in grado di leggere lo stato più recente del consenso degli utenti e di includere lo stato nelle richieste di rete a Google (tramite il parametro &gcs).

Ulteriori passaggi di implementazione sono il deployment o l'assistenza agli inserzionisti per eseguire il deployment (ad es. tramite un'interfaccia utente) dello stato gtag('consent', default' {...}) e sbloccare i tag Google (ad esempio nessuna attivazione condizionale basata sul consenso) per abilitare la modalità di consenso per attivarli in modo sensibile al consenso.

Per i dettagli sull'implementazione, consulta Gestire le impostazioni relative al consenso (web).

Suggerimenti

Dall'account amministratore Google Ads,puoi monitorare le conversioni in tutti i tuoi account inserzionista utilizzando un singolo tag del codice di conversione. Consulta Informazioni sul monitoraggio delle conversioni su più account.

Il modo migliore per verificare se l'implementazione del monitoraggio delle conversioni sta funzionando è visitare uno dei siti web dei commercianti (o un sito web di test interno) ed effettuare un acquisto reale. Successivamente, osserva lo strumento Google Tag Assistant per utilizzare questa guida alla risoluzione dei problemi per verificare che Google Ads abbia rilevato il tag e stia registrando correttamente le conversioni. Per ulteriori informazioni sulla risoluzione dei problemi, consulta la pagina Risolvere i problemi di tagging a livello di sito.

Puoi integrare il tag di conversione precedente con le conversioni avanzate, che possono migliorare la precisione della misurazione delle conversioni e usufruire di offerte più efficaci. Scopri di più sulla configurazione delle conversioni avanzate. Prima di implementare le conversioni avanzate, devi assicurarti che i tuoi commercianti possano rispettare le norme sui dati dei clienti relativi alle conversioni avanzate in Google Ads.