Argomenti trattati in questo articolo:


Come configurare lo script di tracciamento precauzionale per Google Ads

Lo script è un esempio semplice di come configurare il codice di tracciamento precauzionale per Google Ads.

Lo script funge da protezione di riserva nel caso in cui il template UTM non riesca a catturare i dati di attribuzione.

Traccia tutti i clic su un determinato link e li invia a Google Analytics. L'unica cosa da modificare nello script è l'URL della pagina di tracciamento, che deve corrispondere a quello utilizzato dal tuo sito web.


Step 1: Accedi al tuo account Google Ads

Step 2: Clicca su Tools and Settings > Bulk Actions > Scripts (vedi immagine sotto)

Schermata 1 — Come configurare lo script di tracciamento precauzionale per Google Ads

Nota bene:

Se non riesci a trovare l'opzione, assicurati di passare alla visualizzazione avanzata per vedere Tools and Settings.

Step 3: Rimuovi il codice predefinito e aggiungi questo script:

function main() {
    var TrackingTemplate = "{lpurl}?utm_source=adwords&utm_medium={AdName}&utm_campaign={CampaignName}&utm_content={AdGroupName}&utm_keyword={keyword}&utm_matchtype={matchtype}&campaign_id={campaignid}&ad_group_id={adgroupid}&ad_id={creative}";

    var _CAMPAIGN_CONTAINS = "";
    var _ADGROUP_CONTAINS = "";
    var STATUS = "ENABLED";

    if (TrackingTemplate.search(/{AdGroupName}|{CampaignName}|{AdName}/g) == -1) {
        Logger.log("Enter at least one of the {CampaignName} or {AdGroupName} or {AdName} parameter in the tracking template");
        return
    }

    if (TrackingTemplate.search("{AdGroupName}") > 0) {
        var adgroupIterator = {
            hasNext: function() {
                return false
            }
        }
        if (_ADGROUP_CONTAINS == "" && _CAMPAIGN_CONTAINS == "") {
            adgroupIterator = AdsApp.adGroups().withCondition("Status = " +  STATUS).get();
        } else if (_ADGROUP_CONTAINS == "" && _CAMPAIGN_CONTAINS !== "") {
            adgroupIterator = AdsApp.adGroups().withCondition("CampaignName contains '" + _CAMPAIGN_CONTAINS + "'").withCondition("Status = " + STATUS).get();
        } else if (_ADGROUP_CONTAINS !== "" && _CAMPAIGN_CONTAINS !== "") {
            adgroupIterator = AdsApp.adGroups().withCondition("CampaignName contains '" + _CAMPAIGN_CONTAINS + "'").withCondition("Name contains '" + _ADGROUP_CONTAINS + "'").withCondition("Status = " + STATUS).get();
        } else if (_ADGROUP_CONTAINS !== "" && _CAMPAIGN_CONTAINS == "") {
            adgroupIterator = AdsApp.adGroups().withCondition("Name contains '" + _ADGROUP_CONTAINS + "'").withCondition("Status = " + STATUS).get();
        }

        if (!adgroupIterator.hasNext()) {
            Logger.log("No Campaigns/Adgroups matched with this condition");
            return
        }
        while (adgroupIterator.hasNext()) {
            var adgroup = adgroupIterator.next();
            var adgrouptemplate = TrackingTemplate.replace(/{AdGroupName}/g, adgroup.getName().replace(/\s/g, '%20'))
            if (TrackingTemplate.search("{CampaignName}") > 0) {
                adgrouptemplate = adgrouptemplate.replace(/{CampaignName}/g, adgroup.getCampaign().getName().replace(/\s/g, '%20'))
            }

            if (TrackingTemplate.search("{AdName}") > 0) {
                var adsIterator = adgroup.ads().get();
                while (adsIterator.hasNext()) {
                  var ad = adsIterator.next();
                  var adType = ad.getType();
                  var headline = "";

                  if (ad.getHeadline()) {
                    headline = ad.getHeadline();
                  } else if(ad.isType().expandedTextAd()) {
                    headline = ad.asType().expandedTextAd().getHeadlinePart1();
                  } else if(ad.isType().gmailImageAd()) {
                    headline = ad.asType().gmailImageAd().getName();
                  } else if(ad.isType().gmailMultiProductAd()) {
                    headline = ad.asType().gmailMultiProductAd().getHeadline();
                  } else if(ad.isType().gmailSinglePromotionAd()) {
                    headline = ad.asType().gmailSinglePromotionAd().getHeadline();
                  } else if(ad.isType().html5Ad()) {
                    headline = ad.asType().html5Ad().getName();
                  } else if(ad.isType().imageAd()) {
                    headline = ad.asType().imageAd().getName();
                  } else if(ad.isType().responsiveDisplayAd()) {
                    headline = ad.asType().responsiveDisplayAd().getShortHeadline();
                  } else if(ad.isType().responsiveSearchAd()) {
                    var headlines = ad.asType().responsiveSearchAd().getHeadlines();
                    if (headlines && headlines[0].text) {
                      headline = headlines[0].text;
                    }
                  }

                  Logger.log("Headline text : " + headline);

                  if (headline) {
                    adgrouptemplate = adgrouptemplate.replace(/{AdName}/g, headline.replace(/\s/g, '%20'))
                  } else {
                    adgrouptemplate = adgrouptemplate.replace(/{AdName}/g, ad.getId())
                  }
                }
            }
            adgroup.urls().setTrackingTemplate(adgrouptemplate);
            Logger.log(adgroup.getCampaign().getName() + " => " + adgroup.getName() + " => " + adgrouptemplate)
        }
    }
}

Step 4: Dopo aver chiuso, rinomina lo script e cambia la frequency dall'elenco alla visualizzazione Hourly.

Schermata 2 — Come configurare lo script di tracciamento precauzionale per Google Ads


Domande frequenti

Se ho un altro script, influirà su di esso?

Sì, gli script possono sovrascriversi a vicenda poiché agiscono sui parametri UTM.

Perché devo autorizzarlo?

L'autorizzazione è necessaria perché lo script viene implementato sull'account Google Ads. È indispensabile controllare l'anteprima prima di eseguirlo: dovrebbe mostrare la maggior parte delle campagne come riuscite con la landing page trovata.