Perché il prezzo nel comparatore è in ritardo rispetto a quello sul tuo sito
Il prezzo nel feed e quello sul sito si discostano per motivi prevedibili: orari di generazione, cache, arrotondamenti dell'IVA e promozioni che partono a mezzanotte. Ecco da dove nasce il ritardo e come eliminarlo.
Un utente clicca da un comparatore aspettandosi di pagare 149. La scheda prodotto dice 164. Torna indietro, clicca sul negozio successivo e tu hai pagato un clic che non si sarebbe mai trasformato in vendita. Se succede abbastanza spesso, il comparatore segnala il tuo feed, sospende le offerte di cui non si fida o ti chiede di correggerlo prima di rimetterti in elenco.
La discrepanza di prezzo raramente dipende da qualcuno che ha digitato il numero sbagliato. Quasi sempre è un problema di tempi o di definizione: il feed è stato generato in un momento e letto in un altro, oppure il numero nel feed significa qualcosa di leggermente diverso dal numero sulla pagina. Entrambi i problemi si risolvono, ma solo dopo aver individuato dove si trova davvero il ritardo.
I quattro orologi tra il database e l'inserzione
Non esiste un unico momento in cui il tuo prezzo diventa visibile su un comparatore. Ce ne sono almeno quattro, e ciascuno aggiunge ritardo.
Generazione. La maggior parte dei negozi costruisce l'XML a intervalli programmati, per esempio con un cron job alle 03:00, e lo scrive in un file statico. Tutto ciò che cambia dopo le 03:00 resta invisibile fino all'esecuzione successiva. Se generi il feed una sola volta al giorno, nel caso peggiore i dati sono vecchi di 24 ore, prima ancora di considerare tutto il resto.
Fetch. Il comparatore legge il file secondo un proprio calendario, che può coincidere o meno con il tuo. Se generi alle 03:00 e il fetch avviene alle 02:30, le tue inserzioni sono indietro di un giorno intero rispetto al file, non di pochi minuti.
Cache. È il punto su cui si inciampa più spesso. Una CDN o un reverse proxy davanti all'URL del feed serve volentieri una copia in cache per ore dopo che hai scritto un file nuovo. Il file su disco è corretto, il file che vedi nel tuo browser è corretto perché stai interrogando l'origin, e la versione che riceve il crawler è quella di ieri. Controlla gli header di risposta dell'URL del feed dall'esterno della tua rete: Cache-Control, Age e Last-Modified ti diranno subito se qualcosa nel mezzo sta trattenendo una copia.
Elaborazione dell'import. I feed di grandi dimensioni richiedono tempo per essere analizzati, abbinati e indicizzati. Di solito si parla di minuti più che di ore, ma non è zero.
Somma i tempi in modo onesto. Un negozio che genera ogni giorno e viene letto ogni giorno ha, nella realtà, una finestra di dati non aggiornati fino a due giorni, non "circa un giorno". Un negozio che genera ogni ora, serve il feed senza cache e viene letto ogni poche ore è a poche ore di distanza dal dato in tempo reale.
Stabilisci la tua tolleranza, poi scegli la frequenza
La giusta frequenza di generazione dipende da quanto velocemente si muovono i tuoi prezzi. Se riposizioni i prezzi in automatico rispetto ai concorrenti, un feed giornaliero non è difendibile: pubblicizzeresti un prezzo che hai abbandonato prima di pranzo. Se invece imposti i prezzi a mano e li cambi poche volte al mese, generare ogni ora non ti serve a nulla.
Una regola pratica: l'intervallo di generazione dovrebbe essere più breve del tempo necessario perché una variazione di prezzo abbia un effetto commerciale. Per la maggior parte dei negozi significa una generazione oraria per prezzo e disponibilità, ricostruendo meno spesso i campi descrittivi, più pesanti.
Se rigenerare l'intero catalogo ogni ora è costoso, dividi il lavoro. Costruisci il feed completo una volta al giorno e mantieni prezzo e disponibilità aggiornati con un ciclo più frequente: rigenerando solo quei campi nello stesso file, oppure pubblicando un feed separato e leggero, se il comparatore lo supporta. Verifica cosa accetta il canale prima di costruirlo: non tutti accettano un delta.
Assicurati che il numero significhi la stessa cosa nei due posti
Indipendentemente dai tempi, una seconda categoria di discrepanze nasce dal fatto che il prezzo viene calcolato in modo diverso nel feed e sulla pagina.
- IVA. Il feed deve riportare il prezzo che paga il consumatore, IVA inclusa. L'errore classico è un export che legge il prezzo netto dal database e applica l'IVA con un arrotondamento diverso da quello del negozio online, producendo un'inserzione a 82,64 contro una pagina che mostra 82,65. Un centesimo basta a far scattare un controllo automatico dei prezzi.
- Arrotondamento e formattazione. Usa il punto come separatore decimale, due decimali, nessun separatore delle migliaia e nessun simbolo di valuta dentro il numero, a meno che la specifica non lo richieda.
1,299.00e1 299,00 €causano errori di parsing o, peggio, letture sbagliate senza alcun avviso. - Prezzi per gruppo di clienti. Se il tuo negozio mostra prezzi diversi a clienti loggati, account business o iscritti alla newsletter, il feed deve riportare il prezzo che vede un visitatore anonimo. Gli export eseguiti con una sessione da amministratore a volte recuperano per errore un livello di sconto riservato allo staff.
- Codici sconto. Un prezzo che vale solo con un codice al checkout non è il prezzo del feed. Pubblicarlo è un modo rapido per perdere la fiducia sia degli utenti sia del canale.
- Prezzi delle varianti. Se la scheda prodotto mostra di default la variante più economica ma il feed esporta il prodotto padre a un prezzo medio o al più alto, i due valori non coincideranno mai. Esporta ogni variante come articolo a sé, con il proprio prezzo e il proprio identificativo.
- Spedizione. Tieni il costo di consegna nel campo dedicato alla spedizione, non incorporato nel prezzo. Gli utenti spesso ordinano per costo totale e il comparatore ha bisogno dei due numeri separati per calcolarlo.
Le promozioni sono la fonte della maggior parte delle discrepanze
Una promozione che parte a mezzanotte e un feed che si rigenera alle 03:00 significano tre ore di inserzioni al vecchio prezzo: tollerabile. Una promozione che finisce a mezzanotte con lo stesso calendario significa tre ore di pubblicità di un prezzo che non onori più, ed è la versione che genera reclami.
Aiutano due abitudini. Prima: programma una rigenerazione del feed subito dopo ogni inizio o fine di promozione, non solo all'intervallo regolare. Seconda: fai attenzione ai fusi orari dei server. Se il tuo negozio gira in UTC e le campagne sono impostate in ora locale, la promozione parte con un'ora di anticipo o di ritardo due volte all'anno. Controlla in quale fuso orario crede di essere il server del cron, non in quale fuso orario ti trovi tu.
Se il formato del feed supporta un prezzo promozionale con una finestra di validità, usalo. Comunicare al canale che un prezzo vale da una certa data a un'altra è più affidabile che correre a rigenerare il file nel momento giusto.
Lo stato della disponibilità merita la stessa cura del prezzo
Un clic su un prodotto esaurito è sprecato esattamente come un clic su un prezzo sbagliato. La disponibilità di solito cambia più velocemente del prezzo, quindi se aggiorni un campo con frequenza, che sia questo.
Sii preciso, più che ottimista. "Disponibile" dovrebbe voler dire che puoi spedirlo; un tempo di approvvigionamento del fornitore di due settimane è uno stato diverso e va dichiarato come tale, se la specifica lo consente. Dove il feed accetta solo disponibile o non disponibile, definisci la regola con consapevolezza: la maggior parte dei negozi fa meglio a segnalare come non disponibili i prodotti con tempi lunghi, piuttosto che deludere un utente che si aspettava la consegna il giorno dopo.
L'altra metà del lavoro è la rimozione. I prodotti fuori catalogo dovrebbero sparire del tutto dal feed invece di restare con scorte a zero, e l'URL di ciò che è stato rimosso dovrebbe restituire un 404 corretto o un redirect verso qualcosa di pertinente, non un template vuoto.
Una routine di monitoraggio da dieci minuti a settimana
Non puoi correggere uno scostamento che non vedi. Imposta un semplice confronto tra il feed e il sito live:
- Scarica l'URL del tuo feed dall'esterno della tua rete, come farebbe un crawler, e annota l'header
Age. - Scegli un campione, diciamo cinquanta articoli, dando più peso ai bestseller e a tutto ciò che è stato riposizionato di recente.
- Per ciascuno, estrai con uno scraper o controlla a mano prezzo e disponibilità sulla pagina live, e confrontali con i valori del feed.
- Indaga su tutto ciò che differisce per più di un arrotondamento e su tutto ciò che ha un timestamp nel feed più vecchio del tuo intervallo di generazione dichiarato.
Se puoi, esegui il controllo come script programmato e imposta gli avvisi su una soglia anziché su ogni singola differenza: qualche articolo in corso di aggiornamento è normale, il cinquanta per cento del catalogo no. Tieni d'occhio anche il numero totale di articoli tra un'esecuzione e l'altra: un feed che perde all'improvviso un terzo dei prodotti di solito indica un job di generazione fallito a metà, più che una reale modifica del catalogo.
I negozi che hanno meno problemi sui canali di comparazione non sono quelli con i feed più elaborati. Sono quelli in cui il numero nel file è il numero sulla pagina, a ogni ora del giorno.