> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Come usare i link UTM direct-to-checkout

> Scopri come attivare i funnel post-acquisto usando i parametri UTM, inclusa la configurazione per i link direct-to-checkout

Aftersell supporta l'attivazione dei funnel in base ai parametri UTM, una funzionalità opzionale pensata specificamente per casi d'uso avanzati. Puoi configurare il tuo funnel in modo che si attivi quando un cliente visita il tuo sito con una specifica query string UTM.

Questa configurazione è opzionale e in genere è necessaria solo per esigenze di tracciamento avanzate, come i link direct-to-checkout o le offerte specifiche per campagna.

<div id="how-utm-triggers-work">
  ## Come funzionano i trigger UTM
</div>

I trigger UTM ti permettono di mostrare funnel post-acquisto specifici in base ai parametri UTM presenti nell'URL. Questo è utile per:

* **Offerte specifiche per campagna** - Mostra upsell diversi in base alla campagna di marketing
* **Link direct-to-checkout** - Attiva i funnel quando i clienti saltano la vetrina del negozio
* **Attribuzione del canale** - Personalizza le offerte in base alla fonte di traffico (email, social media, annunci)
* **A/B testing** - Testa offerte diverse per diverse varianti di campagna

<div id="quick-start-basic-utm-trigger-setup">
  ## Avvio rapido: configurazione base dei trigger UTM
</div>

Per le visite standard alla vetrina (non direct-to-checkout), puoi configurare i trigger UTM usando l'app embed di Aftersell. Per vedere come iniziare rapidamente con i trigger UTM, guarda questo video:

<iframe src="https://go.screenpal.com/player/cOfD38nOD9i" title="How to set up UTM Triggers" allowFullScreen style={{ width: '100%', aspectRatio: '16/9', borderRadius: '12px' }} />

<div id="enable-the-utm-app-embed">
  ### Attiva l'app embed UTM
</div>

Per tracciare i parametri UTM sulle pagine della vetrina:

1. Nel tuo pannello di amministrazione Shopify, vai su **Online Store > Themes**
2. Clicca su **Customize** sul tuo tema attivo
3. Nell'editor del tema, clicca sull'icona **App embeds** (il pezzo di puzzle) nella barra laterale sinistra
4. Trova **Aftersell UTM Tracker** e attivalo con l'interruttore **on**
5. Clicca su **Save**

Una volta attivato, Aftersell acquisirà automaticamente i parametri UTM quando i clienti visitano la tua vetrina con link UTM.

<div id="configure-utm-triggers-in-your-funnel">
  ### Configura i trigger UTM nel tuo funnel
</div>

Dopo aver attivato l'app embed:

1. Vai su **Post-purchase Funnels** nel pannello di amministrazione di Aftersell
2. Crea o modifica un funnel
3. Nella sezione **Triggers**, aggiungi un trigger **UTM Parameter**
4. Configura il parametro UTM e il valore che vuoi far corrispondere
5. Salva il funnel

<div id="supported-utm-parameters">
  ## Parametri UTM supportati
</div>

Aftersell supporta i seguenti parametri UTM standard:

* `utm_source` - Identifica la fonte di traffico (es. google, newsletter, facebook)
* `utm_medium` - Identifica il mezzo di marketing (es. email, cpc, social)
* `utm_campaign` - Identifica la campagna specifica (es. spring\_sale, product\_launch)
* `utm_term` - Identifica le parole chiave della ricerca a pagamento (es. running+shoes)
* `utm_content` - Differenzia contenuti o link simili (es. banner\_ad, text\_link)
* `utm_id` - Identifica l'ID della campagna (es. campaign\_123)

Tutti e sei i parametri vengono tracciati e possono essere usati per attivare i funnel.

<div id="partial-field-matching">
  ## Corrispondenza parziale dei campi
</div>

Quando configuri i trigger UTM, Aftersell supporta la **corrispondenza parziale** per i valori dei parametri UTM. Questo significa:

* ✅ **Valore del trigger:** `spring` → **Corrisponde a:** `spring_sale`, `spring_2026`, `early_spring`
* ✅ **Valore del trigger:** `email` → **Corrisponde a:** `email_newsletter`, `promotional_email`
* ✅ **Valore del trigger:** `sale` → **Corrisponde a:** `spring_sale`, `flash_sale`, `sale_2026`

Questa flessibilità ti consente di creare trigger più ampi che corrispondono a più varianti di campagna senza dover creare trigger separati per ciascuna.

**Esempio:** se imposti un trigger per `utm_campaign` contiene `sale`, corrisponderà a qualsiasi campagna con "sale" nel nome, come `spring_sale`, `summer_sale` o `flash_sale_2026`.

<div id="direct-to-checkout-utm-links">
  ## Link UTM direct-to-checkout
</div>

La configurazione base mostrata nel video qui sopra **non** supporta i link che portano i clienti **direttamente al checkout**. Per impostazione predefinita, Aftersell può rilevare i parametri UTM solo sulle pagine della vetrina. Questo perché si basa su un app embed del tema, che funziona solo sulle pagine della vetrina e non sul checkout o sulla pagina di ringraziamento.

<div id="enable-utm-tracking-on-checkout-pages">
  ### Attiva il tracciamento UTM sulle pagine di checkout
</div>

Per tracciare i parametri UTM sulla pagina di checkout (per i link direct-to-checkout), devi **aggiungere un pixel Shopify** al tuo negozio.

⚠️ **Limitazioni importanti:**

* Questa configurazione richiede che il visitatore abbia un **cart token** quando arriva al checkout tramite un link UTM. Senza un cart token, i dati UTM non verranno acquisiti.
* **I metodi di checkout express (Shop Pay, Apple Pay, Google Pay) non sono supportati** perché bypassano il carrello e non generano un cart token. I clienti che usano il checkout express non attiveranno i funnel basati su UTM.

<div id="setting-up-the-shopify-pixel">
  ### Configurare il pixel Shopify
</div>

Segui queste istruzioni passo per passo per configurare il tracciamento UTM direct-to-checkout:

1. Nel tuo pannello di amministrazione Shopify, vai su **Settings > Customer Events**.
2. Clicca su **Add Custom Pixel** e assegnagli il nome che preferisci.
3. Nel menu a tendina **Permission**, seleziona **Analytics**. È l'unico permesso richiesto.
4. Per il menu a tendina **Data Sale**, puoi scegliere **Data collected does not qualify as data sale**. Aftersell mantiene privati tutti i dati raccolti e non li condivide mai con nessuno oltre a te.
5. Nell'editor di codice che appare, incolla il codice riportato di seguito.
6. Clicca su **Save**, poi su **Connect**.

```text theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
/**  
 * IMPORTANT: This pixel can only fire on sessions where the  
 * customer has a cart object, otherwise it will be skipped.  
 * For example, clicking "Buy Now" on a product page skips the cart,  
 * going directly to checkout.  
**/  
function processData({event, cartToken}) {  
  // TODO: Edit MYSHOPIFY_DOMAIN to your domain. E.g.  
  // const MYSHOPIFY_DOMAIN = 'example-store.myshopify.com';  
  const MYSHOPIFY_DOMAIN = '';  
  
  const enableDebug = false;  
  
  // DO NOT EDIT PAST HERE  
  const SESSION_STORAGE_KEY = 'as-customer-trigger-data';  
  const HOST = 'https://start.aftersell.app';  
  
  if (!MYSHOPIFY_DOMAIN) {  
    if (enableDebug) {  
      console.log("UTM pixel didn't fire because of missing Shopify domain");  
    }  
    return;  
  }  
  if (!cartToken) {  
    if (enableDebug) {  
      console.log("UTM pixel didn't fire because of missing cart token");  
    }  
  }  
    
  let existingCustomerData = null;  
  try {  
      existingCustomerData = JSON.parse(  
          sessionStorage.getItem(SESSION_STORAGE_KEY) || 'null'  
      );  
  } catch (ignore) {  
    if (enableDebug) {  
      console.log("UTM pixel didn't fire because malformed user data json");  
    }  
  }  
    
  const allowedUrlParams = [  
        'utm_source',  
        'utm_medium',  
        'utm_campaign',  
        'utm_term',  
        'utm_id',  
        'utm_content',  
    ];  
    
  const searchParams = new URLSearchParams(event.context.window.location.search);  
  let hasCustomerData = false;  
  const customerData = {};  
  for (const param of allowedUrlParams) {  
    const paramValue = searchParams.get(param) || existingCustomerData?.[param];  
    if (paramValue) {  
        hasCustomerData = true;  
        customerData[param] = paramValue;  
    }  
  }  
  
  if (hasCustomerData) {  
    sessionStorage.setItem(SESSION_STORAGE_KEY, JSON.stringify(customerData));  
  
    const postBody = {  
      shop: MYSHOPIFY_DOMAIN,  
      cartToken,  
      checkoutToken: event.data.checkout.token ?? undefined,  
      customerTriggerData: customerData,  
    };  
  
    if (enableDebug) {  
      console.log("UTM pixel fired with the following data:", postBody);  
    }  
      
    fetch(`\${HOST}/api/v1/storefrontSessions`, {  
        method: 'POST',  
        headers: {  
            'Content-Type': 'application/json',  
        },  
        body: JSON.stringify(postBody),  
    });  
  } else {  
    if (enableDebug) {  
      console.log("UTM pixel didn't fire because there was no data to send");  
    }  
  }  
}  
  
analytics.subscribe('checkout_started', (event) => {  
   // minimum realistic time between adding item to cart and clicking checkout  
    const COOKIE_POLLING_INTERVAL_MS = 500;  
  
    let currentCookieValue = getCookieValue({ cookie: document.cookie, cookieName: 'cart' });  
    processData({event, cartToken: currentCookieValue});  
  
    setInterval(() => {  
        const newCookieValue = getCookieValue({ cookie: document.cookie, cookieName: 'cart' });  
        if (newCookieValue !== currentCookieValue) {  
            currentCookieValue = newCookieValue;  
            processData({event, cartToken: newCookieValue});  
        }  
    }, COOKIE_POLLING_INTERVAL_MS);  
});  
  
function getCookieValue({ cookie, cookieName }) {  
    const cartCookieRegex = new RegExp(`^\${cookieName}=`);  
    const cartCookie = cookie  
        .split(';')  
        .map((val) => val.trim())  
        .find((val) => cartCookieRegex.test(val));  
    if (!cartCookie) return null;  
    const cartCookieValue = cartCookie.replace(`\${cookieName}=`, '');  
    return cartCookieValue;  
}
```

**Note importanti sulla configurazione:**

* **Modifica `MYSHOPIFY_DOMAIN`:** devi sostituire la stringa vuota con il dominio myshopify.com del tuo negozio (es. `'example-store.myshopify.com'`)
* **Attiva la modalità debug (opzionale):** imposta `enableDebug = true` per vedere i log della console utili per la risoluzione dei problemi
* **Parametri supportati:** il pixel traccia tutti e sei i parametri UTM standard elencati nell'array `allowedUrlParams`

<div id="testing-your-utm-trigger-setup">
  ## Testare la configurazione dei trigger UTM
</div>

Dopo aver configurato i trigger UTM, usa questa checklist per verificare che tutto funzioni correttamente:

<div id="for-storefront-utm-tracking-app-embed">
  ### Per il tracciamento UTM sulla vetrina (app embed)
</div>

* ✅ **App embed attivato:** verifica che l'app embed Aftersell UTM Tracker sia attivato nelle impostazioni del tema
* ✅ **URL di test:** visita il tuo negozio con un parametro UTM (es. `yourstore.com?utm_campaign=test`)
* ✅ **Completa l'acquisto:** aggiungi un prodotto al carrello e completa il checkout
* ✅ **Controlla il funnel:** verifica che il funnel corretto appaia sulla pagina di ringraziamento
* ✅ **Order browser:** controlla l'Order Browser di Aftersell per confermare che il trigger UTM sia stato rilevato

<div id="for-direct-to-checkout-utm-tracking-shopify-pixel">
  ### Per il tracciamento UTM direct-to-checkout (pixel Shopify)
</div>

* ✅ **Pixel installato:** verifica che il pixel personalizzato sia salvato e connesso in Settings > Customer Events
* ✅ **Dominio configurato:** conferma che `MYSHOPIFY_DOMAIN` sia impostato correttamente nel codice del pixel
* ✅ **Cart token presente:** assicurati che il cliente abbia articoli nel carrello prima di andare al checkout (necessario per il tracciamento)
* ✅ **URL di test:** usa un link direct-to-checkout con parametri UTM (es. `yourstore.com/checkout?utm_campaign=test`)
* ✅ **Completa l'acquisto:** completa la procedura di checkout
* ✅ **Controlla il funnel:** verifica che il funnel corretto appaia sulla pagina di ringraziamento
* ✅ **Order browser:** controlla l'Order Browser di Aftersell per confermare che il trigger UTM sia stato rilevato
* ⚠️ **Checkout express:** ricorda che Shop Pay, Apple Pay e Google Pay NON funzionano con i trigger UTM

<div id="troubleshooting-tips">
  ### Suggerimenti per la risoluzione dei problemi
</div>

Se i trigger UTM non funzionano:

1. **Attiva la modalità debug:** imposta `enableDebug = true` nel codice del pixel e controlla la console del browser per eventuali messaggi di errore
2. **Verifica il cart token:** assicurati che i clienti abbiano articoli nel carrello prima di raggiungere il checkout (il pixel richiede il cart token)
3. **Controlla la configurazione del trigger:** verifica che il parametro UTM e il valore nel trigger del tuo funnel corrispondano ai parametri dell'URL
4. **Testa la corrispondenza parziale:** ricorda che i trigger usano la corrispondenza parziale - `sale` corrisponderà a `spring_sale`, `flash_sale`, ecc.
5. **Controlla la priorità dei funnel:** se più funnel corrispondono, verrà mostrato solo il funnel con la priorità più alta
6. **Consulta l'Order Browser:** usa l'Order Browser di Aftersell per vedere quali trigger si sono attivati per ciascun ordine

<div id="best-practices-for-utm-triggers">
  ## Best practice per i trigger UTM
</div>

* **Usa una nomenclatura coerente:** stabilisci una convenzione di denominazione per i tuoi parametri UTM (es. `utm_campaign=email_spring_2026`)
* **Sfrutta la corrispondenza parziale:** usa valori di trigger più ampi per corrispondere a più varianti di campagna
* **Testa prima del lancio:** testa sempre i tuoi link UTM e i trigger prima di inviarli ai clienti
* **Documenta le tue campagne:** tieni traccia dei parametri UTM che usi per ogni campagna
* **Combina con altri trigger:** usa i trigger UTM insieme ai trigger su prodotto o valore dell'ordine per un targeting più preciso
* **Monitora le prestazioni:** controlla regolarmente l'Order Browser per vedere quali campagne UTM generano più upsell
