top of page

ADDESTRA L'ALGORITMO

  • schiavifabio
  • 20 ore fa
  • Tempo di lettura: 6 min

Non compri traffico. Stai insegnando a una macchina.

Tag: MACHINE LEARNING | SIGNAL OPTIMIZATION | SCALING

Non stai comprando traffico. Stai addestrando un algoritmo.

Tutti parlano di creatività e budget. Quasi nessuno parla di ciò che conta davvero: i segnali che stai mandando alla macchina.

Meta, Google, TikTok - sono tutti sistemi di machine learning. Apprendono dai dati che gli dai. Se gli dai dati sbagliati, apprendono cose sbagliate. E le loro "ottimizzazioni" ti porteranno sempre più lontano dai clienti giusti.

Questo case study documenta come abbiamo ristrutturato l'intero sistema di segnali per un e-commerce con scaling bloccato. ROAS da 2.1x a 4.8x in 6 settimane. Non cambiando creative. Non aumentando budget. Cambiando cosa insegnavamo all'algoritmo.

Il problema: scaling impossibile

E-commerce home & living. Prodotto hero da €150 AOV. Performance marketing gestito da agenzia esterna con risultati "accettabili".

Situazione iniziale:

  • Budget mensile: €40k

  • ROAS: 2.1x

  • CPA: €71

  • Margine netto per ordine: ~€45

Profittevoli, ma con margine sottile. Il problema: ogni tentativo di scalare falliva.

Pattern di scaling:

Budget €40k → ROAS 2.1x ✓
Budget €60k → ROAS 1.7x ✗
Budget €80k → ROAS 1.3x ✗
Tornano a €40k → ROAS recupera lentamente

L'agenzia diceva: "Il mercato è saturo". "Serve più brand awareness prima di scalare". "Il prodotto ha un ceiling".

Tutte stronzate.

Il problema non era il mercato. Era che stavano addestrando male l'algoritmo. E quando provavano a scalare, l'algoritmo faceva esattamente quello che gli avevano insegnato: trovare più persone dello stesso tipo sbagliato.

La diagnosi: signal pollution

Abbiamo fatto un audit completo del sistema di tracking e conversioni. Quello che abbiamo trovato era un disastro.

Problema #1: Eventi di conversione sbagliati

Setup esistente:

  • Evento ottimizzazione: "Add to Cart"

  • Evento conversione: "Purchase"

  • Window: 7-day click, 1-day view

Il problema: Ottimizzavano per Add to Cart.

L'algoritmo stava imparando a trovare persone che aggiungono al carrello. Non persone che comprano.

I dati:

  • Add to Cart rate: 4.2%

  • Cart to Purchase: 18%

  • Conclusione: il 82% degli Add to Cart non convertiva

L'algoritmo era diventato bravissimo a trovare "aggiungiori di carrelli". Persone che esplorano, aggiungono cose, e poi spariscono. Il traffico perfetto se vendi Add to Cart. Inutile se vendi prodotti.

Problema #2: Pixel event duplication

Analizzando il pixel, abbiamo trovato che l'evento Purchase sparava 2.3 volte in media per transazione.

Cause:

  • Pixel su thank you page + Conversion API non deduplicate

  • Redirect multipli nel checkout flow

  • Tag Manager mal configurato

Conseguenza: L'algoritmo pensava che le conversioni fossero il 130% di quelle reali. Overfit su pattern sbagliati.

Problema #3: Value signal assente

Setup esistente: Purchase tracciato come evento binario (1/0).

Il problema: Non passavano il valore dell'ordine.

Per l'algoritmo, un ordine da €50 e uno da €500 erano identici. Quindi ottimizzava per volume, non per valore.

I dati:

  • 20% degli ordini generava il 52% della revenue

  • L'algoritmo non aveva modo di saperlo

  • Trattava i clienti high-value come tutti gli altri

Problema #4: Audience feedback loop negativo

Setup esistente:

  • Lookalike basata su "All Purchasers - 180 days"

  • Custom audience "Website Visitors - 30 days"

Il problema: Il pool "All Purchasers" era inquinato.

Conteneva:

  • Acquirenti da referral (comportamento diverso)

  • Acquirenti da sconti aggressivi (cacciatori di offerte)

  • Acquirenti one-time che non tornavano mai

L'algoritmo creava lookalike di queste persone. Che a loro volta non convertivano o convertivano su sconti. Che inquinavano ulteriormente il pool. Loop negativo.

Problema #5: Attribution chaos

Setup esistente:

  • Meta: 7-day click, 1-day view

  • Google: Data-driven (default)

  • GA4: Last click

Conseguenza: Ogni piattaforma raccontava una storia diversa. Le decisioni venivano prese su dati incoerenti. Meta overcounted, Google undercounted.

La soluzione: signal restructuring

Abbiamo ricostruito da zero il sistema di segnali. Non creativi nuovi. Non audience nuove. Solo segnali puliti.

Intervento #1: Conversion event hierarchy

Nuovo setup:

Livello 1 (Ottimizzazione primaria): Purchase con value
Livello 2 (Segnale secondario): Initiate Checkout
Livello 3 (Segnale qualità): High-Value Purchase (>€200)

Configurazione Meta:

  • Campagne Acquisition: Ottimizza per Purchase Value (Value Optimization)

  • Campagne Retargeting: Ottimizza per Purchase (Volume)

  • CAPI + Pixel con deduplicazione via event_id

Perché il cambio: L'algoritmo ora impara cosa significa un cliente che compra E quanto vale. Può differenziare.

Intervento #2: Value-based signal implementation

Nuovo tracciamento:

javascript

// Purchase event con value dinamico
fbq('track''Purchase', {
  value: orderTotal,
  currency: 'EUR',
  content_type: 'product',
  contents: productArray,
  num_items: itemCount
});

// High-value purchase custom event
if (orderTotal > 200) {
  fbq('trackCustom''HighValuePurchase', {
    value: orderTotal,
    currency: 'EUR'
  });
}

Google Ads:

  • Enhanced conversions attivate

  • Value tracking su tutte le conversion action

  • Conversion value rules per aggiustare value (es: +20% per returning customers)

Intervento #3: Audience pool cleanup

Prima:

LAL 1% All Purchasers (180 days) - 2.4M pool

Dopo:

LAL 1% High-Value Purchasers (€200+, 90 days) - 850k pool
LAL 1% Repeat Purchasers (2+ ordini, 180 days) - 620k pool
LAL 2% Purchasers excluding promo-only - 1.8M pool

Seed audience rules:

  • Escludi acquisti da codici sconto >30%

  • Escludi acquisti singoli sotto €100

  • Escludi referral traffic purchasers

Perché: Insegniamo all'algoritmo come sono fatti i clienti BUONI, non tutti i clienti.

Intervento #4: Deduplication & data quality

Technical implementation:

javascript

// Event ID per deduplicazione
const eventId = `purchase_${orderId}_${Date.now()}`;

// Browser Pixel
fbq('track''Purchase', eventData, {eventID: eventId});

// Server-side (CAPI)
// Stesso eventId passato via server

GTM Server Container:

  • Setup su Google Cloud

  • CAPI routing con deduplication logic

  • Event enrichment (user data matching)

Risultato: Match rate da 54% a 89%. Eventi duplicati: 0%.

Intervento #5: Attribution alignment

Nuovo framework:

Piattaforma

Scopo

Window

Meta

Ottimizzazione delivery

7d click, 1d view

Meta

Reporting interno

1d click (più conservativo)

GA4

Source of truth

Data-driven, cross-channel

Internal

Decision making

Blended ROAS formula

Blended ROAS formula:

Blended ROAS = Total Revenue / Total Ad Spend (all channels)

Non ci fidiamo più delle attribuzioni singole. Guardiamo il business nel suo insieme.

Il retraining: 3 settimane di patience

Settimana 1:

  • Deploy nuovi eventi

  • Algoritmo "confuso" - performance drop temporaneo

  • ROAS: 1.6x (peggio di prima)

Settimana 2:

  • Algoritmo inizia a raccogliere nuovi segnali

  • Performance stabilizzazione

  • ROAS: 2.0x (recupero)

Settimana 3:

  • Algoritmo "capisce" i nuovi pattern

  • Performance breakthrough

  • ROAS: 2.9x (sopra baseline)

Settimana 4+:

  • Ottimizzazione continua

  • ROAS stabilizzato 3.5-4x

Il dip iniziale è normale e NECESSARIO. Stai resettando quello che l'algoritmo aveva imparato. Devi avere pazienza.

Lo scaling: finalmente possibile

Con i segnali puliti, lo scaling ha funzionato per la prima volta.

Test scaling post-restructure:

Budget €40k → ROAS 3.8x ✓
Budget €60k → ROAS 3.5x ✓
Budget €80k → ROAS 3.2x ✓
Budget €100k → ROAS 2.9x ✓

Ancora decay fisiologico (normale), ma non più crollo. L'algoritmo trovava più persone dello stesso tipo GIUSTO.

Perché ora funziona:

Prima: "Trova più persone che aggiungono al carrello" → trova curiosi, non compratori Dopo: "Trova più persone che comprano prodotti da €150+" → trova clienti reali

I risultati: 6 settimane

Metriche pre vs post

Metrica

Prima

Dopo

Delta

ROAS

2.1x

4.8x

+129%

CPA

€71

€41

-42%

AOV

€148

€172

+16%

Repeat rate 90d

12%

23%

+92%

LTV 12m

€185

€267

+44%

Metriche scaling

Budget

ROAS Before

ROAS After

€40k

2.1x

3.8x

€60k

1.7x

3.5x

€80k

1.3x

3.2x

€100k

N/A (mai raggiunto)

2.9x

Signal quality metrics

Metrica

Prima

Dopo

Pixel match rate

54%

89%

Event deduplication

2.3x

1.0x

Value tracking accuracy

0%

99.7%

LAL quality score (internal)

3.2/10

8.1/10

Il framework generalizzabile

Step 1: Audit dei segnali

Chiediti:

  • Quale evento sto ottimizzando? È quello giusto?

  • Passo il valore delle conversioni?

  • I miei eventi sono duplicati?

  • Le mie audience sono "pulite"?

Step 2: Definisci il cliente ideale in termini di dati

Non "donna 25-35 interessata a design". Ma:

  • AOV >€X

  • Repeat purchase entro 90 giorni

  • Non convertito da heavy discount

  • Acquisition channel specifico

Step 3: Insegna all'algoritmo QUEL cliente

  • Seed audience basate su comportamenti, non demographics

  • Value optimization, non volume optimization

  • Escludi i pattern che non vuoi replicare

Step 4: Misura quello che conta

  • Blended ROAS, non platform ROAS

  • LTV, non first-order value

  • Quality metrics (repeat rate, AOV trend)

Step 5: Abbi pazienza nel retraining

L'algoritmo ha bisogno di tempo per imparare i nuovi pattern. Il dip iniziale è normale. Non tornare indietro al primo segno di difficoltà.

Gli errori che questo framework previene

"Ottimizziamo per Add to Cart perché abbiamo più dati"

Più dati sbagliati = più errori. Meglio meno dati giusti.

"Non passiamo il value perché 'tanto' ottimizziamo per conversioni"

L'algoritmo non sa che €50 ≠ €500. Per lui sono uguali. Glielo devi dire.

"La nostra lookalike si basa su tutti i clienti"

"Tutti i clienti" include i cattivi clienti. Stai chiedendo all'algoritmo di trovare più clienti mediocri.

"Non tocchiamo il tracking, funziona"

"Funziona" non significa "funziona bene". La maggior parte dei tracking sono corrotti in modi invisibili.

"Lo scaling non funziona per il nostro settore"

Nel 95% dei casi, lo scaling non funziona perché stai scalando gli errori, non i successi.

Il mindset shift

Smetti di pensare alle ads come "comprare visibilità".

Inizia a pensare alle ads come "addestrare un sistema di machine learning".

Ogni euro che spendi è un dato che insegna qualcosa all'algoritmo. Ogni conversione che tracci è un esempio di "questo è quello che voglio". Ogni audience che crei è una definizione di "questo è il mio cliente ideale".

Se insegni male, impara male. Se impara male, ti porta nel posto sbagliato. E più budget metti, più velocemente ci arrivi.

Il tuo lavoro non è fare creatività belle o trovare audience furbe.

Il tuo lavoro è essere un buon insegnante per una macchina.

Vuoi un audit del tuo sistema di segnali?

 
 
 

Commenti


bottom of page