Caricamento su Yandex.Market: feed automatico con categorie e filtri
Yandex.Market è il più grande aggregatore di prezzi in Russia, ma impostare un feed YML si trasforma in un puzzle tecnico. Analizziamo la generazione automatica dei feed con mappatura, filtraggio, validazione e integrazione delle categorie con 1C.
COS / KNOWLEDGE BASE
Ho ricevuto una chiamata da un cliente proprietario di un'azienda all'ingrosso che vende oli e lubrificanti industriali. Catalogo su WooCommerce: quasi diciassettemila posizioni. "Oleg", dice, "cerchiamo di caricare normalmente su Yandex.Market da sei mesi. Abbiamo provato tre plugin, assunto un libero professionista, ha scritto un po' di codice in ginocchio, ma il feed si blocca costantemente, la moderazione non accetta, la metà dei prodotti non ha categorie e i prezzi da 1C arrivano con un ritardo di un giorno. Perdiamo soldi ogni giorno." Ho ascoltato e pensato: questa non è una situazione unica. Lo sento regolarmente, da clienti diversi, da nicchie diverse. Yandex.Market è il più grande aggregatore di prezzi in Russia e il caricamento su di esso si è trasformato da tempo in uno di quei compiti che sembrano semplici sulla carta, ma nella pratica si trasformano in un incubo.
Sembrerebbe: cosa c'è di così complicato? Generi un file XML in formato YML, carichi l'URL sul tuo account Market e i prodotti appaiono nei risultati di ricerca. In realtà, tutto è completamente diverso. La specifica YML di Yandex è composta da dozzine di campi obbligatori e consigliati, ognuno dei quali ha le proprie restrizioni. Le categorie dovrebbero seguire l'albero del mercato, non la struttura interna di WooCommerce. Le varianti del prodotto devono essere inviate in un formato speciale con group_id. I prezzi dovrebbero essere attuali, non quelli di ieri. Le immagini sono disponibili tramite URL diretto senza reindirizzamenti. Consegna e ritiro - con termini e costi specifici per regione. E se qualcosa non va, la moderazione rifiuta il feed o, peggio, lo accetta parzialmente, e non sai nemmeno quali dei tuoi diciassettemila prodotti vengono effettivamente mostrati ai clienti e quali invece sono caduti silenziosamente.
Sto sviluppando il plugin COS WP Woo per WooCommerce e il modulo di caricamento su Yandex.Market è stato uno di quelli che abbiamo iniziato a realizzare su richiesta diretta dei clienti. Non perché volessimo un altro plugin per la generazione di feed YML: ce ne sono già abbastanza sul mercato. Ma perché nessuno di quelli esistenti ha risolto l'intero complesso di problemi allo stesso tempo: filtraggio flessibile, mappatura delle categorie, supporto per variazioni, aggiornamento automatico su pianificazione, integrazione con 1C e, soprattutto, convalida del feed prima di caricarlo sul mercato e ricevere un rifiuto di moderazione. Diamo un'occhiata a come funziona e perché le soluzioni esistenti molto spesso non sono all'altezza.
Cos'è un feed YML e perché presenta così tanti problemi
Il formato YML - Yandex Market Language - è un'estensione XML sviluppata da Yandex appositamente per caricare le offerte di prodotti. Sembra tecnico, ma in sostanza è solo un file che descrive il tuo catalogo: nome del negozio, valuta, albero delle categorie e una serie di offerte di prodotti (offerte). Ogni offerta è una scheda prodotto con nome, prezzo, descrizione, URL, immagini e una serie di parametri aggiuntivi come produttore, paese di origine, codice a barre e caratteristiche.
Il problema è che c'è un enorme divario tra "ecco il mio negozio WooCommerce con i prodotti" ed "ecco un feed YML valido per il mercato". WooCommerce memorizza i dati nella propria struttura: tipo di post prodotto, meta campi, tassonomie, attributi, variazioni come post secondari. Nessuno di questi concetti è mappato uno a uno su YML. Il nome del prodotto in WooCommerce può contenere tag HTML o caratteri speciali che non sono validi in XML. Le categorie in WooCommerce sono un albero arbitrario che non coincide con l'albero delle categorie Yandex.Market. Il prezzo può essere vuoto (prodotto “su richiesta”), con uno sconto (prezzo di vendita), con o senza tasse - e YML si aspetta un numero specifico. Le immagini vengono archiviate come ID allegato e l'URL completo deve essere inserito nel feed e l'URL deve funzionare, senza collegamenti interrotti e preferibilmente senza parametri di query con dimensioni.
Ho visto feed generati da altri plugin in cui in un file c'erano prodotti senza categoria, prodotti con un prezzo pari a zero, prodotti senza una singola immagine e prodotti con una descrizione di quindicimila caratteri, nonostante Market tagli la descrizione dopo tremila. Formalmente questo è un XML valido e anche il mercato lo accetterà. Ma la metà dei prodotti non supererà la moderazione e il proprietario del negozio passerà settimane a capire perché su diciassettemila posizioni solo duemila vengono visualizzate nei risultati di ricerca. Questo è il motivo per cui la generazione di feed non è solo una questione di “conversione dei dati da un formato all’altro”. Si tratta di filtrare, pulire, convalidare e arricchire i dati prima che arrivino a Yandex.
Quando abbiamo progettato il modulo Yandex Feed in COS WP Woo, abbiamo subito deciso che l'approccio sarebbe stato diverso. Non “scaricare tutto e pregare”, ma “scaricare solo ciò che è pronto per il Mercato, e mostrare ciò che deve essere migliorato”. Questa è una differenza fondamentale e influisce sull'intera architettura.
Diamo un'occhiata ai compiti specifici che devono essere affrontati durante lo scarico e al modo in cui li abbiamo affrontati.
La generazione del file YML inizia con le impostazioni del negozio: nome, URL, valuta, azienda. Questi sono parametri di primo livello che cambiano raramente, ma che devono essere presenti nel feed. Segue un blocco di categorie. È qui che inizia il primo problema serio: mappare le categorie WooCommerce sull'albero Yandex.Market. Il mercato ha una propria tassonomia di diverse migliaia di categorie e le tue categorie interne come “Oli industriali → Idraulici → HLP” non corrispondono a ciò che Yandex si aspetta. Nel Mercato potrebbe essere “Oli e lubrificanti → Oli idraulici”, e l'ID della categoria sarà completamente diverso.
Onestamente, molti plugin scaricano semplicemente l'albero delle categorie di WooCommerce così com'è. E funziona: Yandex accetterà le tue categorie. Ma i prodotti non saranno distribuiti in modo ottimale, la loro ricerca sarà peggiore e perderai in termini di conversione. Il nostro approccio è quello di rendere possibile la mappatura di ciascuna categoria WooCommerce alla corrispondente categoria Yandex. Nelle impostazioni del modulo c'è una sezione di mappatura in cui vedi due alberi uno accanto all'altro - il tuo e quello di Yandex - e li colleghi semplicemente. Le categorie che non hai mappato vengono caricate con il tuo nome originale e il modulo le contrassegna con un avviso: "Non mappato su una categoria Yandex: i prodotti potrebbero non essere classificati accuratamente". Questo non è un bug, il feed funzionerà, ma almeno sai cosa può essere migliorato.
Poi c'è il nocciolo della questione: l'offerta di prodotti. Ogni prodotto WooCommerce viene trasformato in uno o più elementi di offerta in YML. Un prodotto semplice: un'offerta. Prodotto variabile: un'offerta separata per ogni variazione, unita tramite group_id. È qui che inizia il secondo grosso problema che incontro regolarmente con i clienti.
WooCommerce memorizza le varianti come post secondari (post_type = product_variation) e hanno una propria logica di ereditarietà. Una variazione può avere un proprio prezzo oppure può ereditare il prezzo principale. Potrebbe avere una propria descrizione oppure no, quindi viene presa la descrizione del genitore. Immagini: se la variante ha una propria galleria, prendila, altrimenti prendi la galleria del genitore. SKU: simile. Peso e dimensioni sono le stesse. Ogni campo deve essere controllato lungo la catena di ereditarietà e questo non è un compito banale.
Molti generatori di feed prendono semplicemente direttamente i dati di variazione e non controllano il fallback rispetto al genitore. Di conseguenza, le offerte appaiono nel feed senza descrizione, senza immagini o senza prezzo - perché per una particolare variante questi dati non vengono compilati, vengono ereditati dal genitore, ma il plugin non ne è a conoscenza. Elaboriamo correttamente l'intera catena di ereditarietà e ogni offerta nel feed ha tutti i campi obbligatori.
C'è un'altra sfumatura con variazioni di cui poche persone tengono conto. Yandex.Market prevede che le variazioni di un prodotto differiranno in parametri specifici: colore, dimensione, volume. E questi parametri devono essere specificati come elementi param nell'offerta. Generare semplicemente URL diversi per ciascuna variante non è sufficiente: è necessario mostrare chiaramente in cosa differiscono. Il nostro modulo rileva automaticamente gli attributi che differenziano le varianti e li aggiunge come parametri al feed. Se disponi di un prodotto "Olio idraulico HLP 46" con variazioni di volume - 5 litri, 20 litri, 200 litri - nel feed ci saranno tre offerte con group_id e il parametro "Volume" con valori 5, 20 e 200, rispettivamente. Il mercato capirà che si tratta di un prodotto in una confezione diversa e lo visualizzerà correttamente.
Filtraggio: perché non caricare l'intero catalogo
Ora parliamo di filtraggio - e questo è, forse, l'aspetto che distingue un modulo di scarico serio da uno script amatoriale. Il primo istinto di ogni proprietario di un negozio è scaricare tutto. Diciassettemila prodotti? Portiamo tutti i diciassettemila al mercato! Più siamo, più siamo, giusto?
No. Non è vero. E ti spiegherò perché. Yandex.Market non è una vetrina, è un aggregatore con concorrenza. Paghi per ogni clic sul tuo prodotto. Se nel feed è presente un articolo esaurito, l'acquirente farà clic, andrà sul tuo sito, vedrà "esaurito" e se ne andrà. Hai pagato per il clic ma non hai ottenuto la vendita. Se nel feed è presente un prodotto con un prezzo di 150 rubli per tanica di olio, questo è chiaramente un errore, ma l'acquirente farà clic e lascerà una recensione negativa. Se nel feed è presente un prodotto senza descrizione e senza immagine, semplicemente non verrà convertito, ma occuperà spazio nel feed e può influenzare la valutazione complessiva della qualità del tuo negozio agli occhi di Yandex.
Pertanto, il filtraggio non è una cosa piacevole da avere, ma un must. Nel nostro modulo puoi configurare i filtri in base a diversi parametri e parlerò di ciascuno di essi in dettaglio.
Il filtraggio per categoria è il più ovvio. Scegli quali categorie WooCommerce includere nel tuo feed e quali escludere. Scenario tipico: hai una categoria "Servizi" o "Usato" - non possono essere caricati sul Mercato o non è pratico. Oppure hai una categoria "Nuovi articoli" che duplica prodotti di altre categorie e non vuoi duplicati nel tuo feed. Puoi includere categorie specifiche (lista bianca) o escluderne di specifiche (lista nera), come è più conveniente per le dimensioni del tuo catalogo.
Il filtraggio per tag funziona in modo simile. In pratica, i nostri clienti utilizzano spesso i tag WooCommerce per la marcatura interna: “not for Market”, “seasonal”, “liquidation”, “premium”. Se aggiungi un tag alle esclusioni, tutti i prodotti con questo tag non verranno inclusi nel feed. Ciò è più conveniente rispetto allo spostamento di prodotti tra categorie, soprattutto quando lo stesso prodotto deve essere temporaneamente rimosso dal Mercato senza influire sulla sua posizione nel catalogo del sito.
Il filtraggio in base allo stato di disponibilità è forse il più importante. Ci sono tre opzioni qui. Puoi caricare solo i prodotti disponibili: questa è la modalità più sicura, paghi solo per i clic sui prodotti che puoi effettivamente vendere. Puoi caricare i prodotti in stock e "su ordinazione" (backorder), se sai come consegnare rapidamente la merce su ordinazione e desideri coprire più richieste. E puoi caricare tutto, compresi quelli mancanti, ma poi il feed avrà l'attributo disponibile = "false" e il mercato li mostrerà come "esauriti", il che può essere utile per mantenere una posizione nei risultati di ricerca per query competitive.
Filtrare per fascia di prezzo è ciò che ti evita di caricare dati errati. Sei tu a impostare il prezzo minimo e massimo. Un prodotto con un prezzo di 0 rubli o 1 rublo è un errore evidente nei dati e non verrà incluso nel feed. Anche un prodotto con un prezzo di 10 milioni di rubli è molto probabilmente un errore. Ho visto un catalogo in cui, a causa di una mancata importazione da 1C, i prezzi di diversi prodotti erano elencati in kopecks invece che in rubli: olio per 1 rublo 50 kopecks per tanica. Senza un filtro sui prezzi, questi beni finirebbero sul mercato e le conseguenze sarebbero spiacevoli.
Esiste anche un filtraggio basato sulla presenza di dati obbligatori: questa non è un'impostazione separata, ma parte della logica di convalida. Un prodotto senza nome, senza prezzo o senza almeno un'immagine viene automaticamente escluso dal feed e finisce nella lista dei “prodotti problematici” sulla dashboard del modulo. Ne parleremo un po' più tardi, quando arriveremo alla validazione.
Tutti questi filtri sono combinati. Puoi dire: "Prendi le categorie A, B e C, escludi i prodotti con l'etichetta "non per il mercato", solo i prodotti in stock, con un prezzo compreso tra 100 e 500.000 rubli". E delle tue diciassettemila posizioni, diciamo, dodicimila finiranno nel feed, esattamente quelle pronte per essere immesse sul mercato e che effettivamente si convertiranno.
Consegna, pianificazione e integrazione con 1C
Un argomento importante a parte riguarda le impostazioni per la consegna e il ritiro nel feed. Yandex.Market ti consente di specificare i termini di consegna direttamente in YML e questo influenza notevolmente il posizionamento dei tuoi prodotti nei risultati di ricerca. Gli acquirenti filtrano in base al metodo di consegna, al tempo, al costo e se non hai inserito questi dati, semplicemente esci da una parte significativa delle query di ricerca.
Nel nostro modulo, le impostazioni di consegna funzionano su due livelli. Il livello globale rappresenta le condizioni predefinite per l'intero negozio. Specifica il costo di consegna, il tempo in giorni, la regione e questi parametri si applicano a tutti i prodotti, a meno che non vengano sostituiti. Questo è l'elemento delle opzioni di consegna nella sezione del negozio. Il secondo livello sono le condizioni individuali per prodotti o categorie specifici. Un prodotto pesante - un barile di petrolio da 200 litri - ha un costo di consegna diverso rispetto a una tanica da 5 litri. Puoi impostare regole per categorie o per fasce di peso e il modulo imposterà automaticamente le condizioni corrette per ciascuna offerta.
La stessa cosa con ritiro - ritiro. Se disponi di più punti di ritiro, indicali tutti e ogni punto può avere i propri orari di apertura. Il feed conterrà elementi outlet con dati corretti per ciascun punto. Ciò è particolarmente importante per le aziende regionali con diversi magazzini: l'acquirente vede che può ritirare la merce nella sua città e la conversione aumenta.
So che molte persone pensano: "Bene, allora imposterò la consegna nel conto Market". Sì, puoi. Ma se i termini di consegna vengono specificati direttamente nel feed, vengono aggiornati automaticamente insieme al resto dei dati. Non è necessario accedere al tuo account e modificare le tariffe manualmente. Abbiamo aumentato il costo di spedizione, lo abbiamo modificato nelle impostazioni del modulo, la prossima generazione del feed contiene già nuovi prezzi. Per un'azienda con tariffe dinamiche, ciò consente di risparmiare ore di lavoro manuale ogni mese.
Ora parliamo del programma di aggiornamento - e questa è la cosa che distingue "imposta e dimentica" da "monitoraggio e rigenero costantemente a mano". Yandex.Market consiglia di aggiornare il tuo feed almeno una volta al giorno e, se i prezzi o la disponibilità cambiano frequentemente, ogni poche ore. Se il feed non è aggiornato, il Mercato potrebbe mostrare prezzi non aggiornati o prodotti esauriti. Ciò porta a recensioni negative e a una diminuzione della valutazione del negozio.
Il nostro modulo utilizza Action Scheduler, lo stesso motore di attività in background che WooCommerce utilizza per le proprie esigenze. Imposta una pianificazione: ogni ora, ogni due ore, ogni sei ore, una volta al giorno - e il modulo rigenera automaticamente il feed in background. Senza bloccare il sito o rallentarlo per i visitatori. Per un catalogo di diciassettemila posizioni, la generazione richiede da trenta secondi a un paio di minuti, a seconda del server e del numero di varianti. Action Scheduler lo elabora in modo asincrono e, anche se la generazione richiede più tempo, il sito continua a funzionare come al solito.
E qui arriviamo all'integrazione con 1C - e questo, secondo me, è il vantaggio principale di un singolo plugin rispetto a una serie di soluzioni separate. Se utilizzi il nostro modulo di integrazione con 1C (che funziona tramite l'API OData e non tramite CommerceML obsoleto), i prezzi e i saldi da 1C vanno automaticamente a WooCommerce e da lì al feed YML. La catena si presenta così: il manager modifica il prezzo in 1C → il connettore OData rileva la modifica tramite un webhook o secondo una pianificazione → aggiorna il prezzo del prodotto in WooCommerce → la prossima generazione del feed include il prezzo corrente. Tutto ciò avviene senza l’intervento umano.
Perché è importante? Perché l'alternativa sono due plugin separati (uno per 1C, l'altro per Market) che non sanno nulla l'uno dell'altro. Il plug-in 1C aggiornava i prezzi alle due del mattino e il plug-in Market rigenerava il feed alle sei del mattino, ma tra questi eventi passavano quattro ore e se qualcuno acquistava un prodotto in quel momento al vecchio prezzo nel mercato, allora hai un problema. Con un singolo plug-in, puoi impostare la generazione del feed immediatamente dopo il completamento della sincronizzazione con 1C: un'azione ne avvia un'altra tramite lo strumento di pianificazione delle azioni. La catena è chiusa e il feed contiene sempre i dati più recenti.
Ricordo un caso con un cliente che vendeva oli motore. Aveva due plugin separati: uno per l'integrazione con 1C, l'altro per generare un feed. Erano in conflitto a livello di attività cron perché entrambi utilizzavano wp_cron e WordPress tentava di eseguire entrambe le attività contemporaneamente. Di conseguenza, il feed è stato generato con la metà dei dati aggiornati: alcuni prodotti avevano già nuovi prezzi da 1C e altri avevano ancora quelli vecchi. Il mercato ha mostrato prezzi diversi per lo stesso prodotto in offerte diverse. Il cliente ha ricevuto reclami dai clienti e non è riuscito a capire cosa c'era che non andava finché non abbiamo risolto la catena. Con un singolo modulo, tali conflitti semplicemente non si verificano: tutte le attività sono coordinate tramite un unico pianificatore di azioni.
Separatamente, voglio parlare degli avanzi. È di fondamentale importanza per il mercato che un prodotto contrassegnato come “in stock” sia effettivamente disponibile. Se un acquirente ordina un prodotto e non puoi spedirlo, Market riduce la valutazione del negozio, addirittura bloccandolo. Quando i saldi vengono sincronizzati da 1C, il modulo di alimentazione li tiene automaticamente in considerazione durante la generazione. Un prodotto con saldo pari a zero può essere escluso del tutto dal feed (se è configurato il filtro in base alla disponibilità) o contrassegnato come non disponibile. E se disponi di più magazzini in 1C - Basic, Marketing, Katana - il modulo riassume i saldi di tutti i magazzini specificati nelle impostazioni di sincronizzazione e utilizza la cifra finale. Non solo “sì/no”, ma un numero reale che il Mercato può utilizzare anche per il posizionamento.
Il prezzo è un'altra cosa che spesso non funziona quando si utilizzano plugin diversi. In 1C possono essere presenti diversi tipi di prezzi: “Al dettaglio”, “All'ingrosso”, “SITO al dettaglio”, “Acquisto”. Per il mercato, ne hai bisogno di uno specifico, quello per il quale vendi ai clienti al dettaglio tramite il sito web. Il nostro modulo 1C ti consente di specificare quale tipo di prezzo mappare sul prezzo normale di WooCommerce e lo stesso prezzo verrà inserito nel feed. Se hai un prezzo scontato (prezzo scontato), anche questo verrà inserito nel feed e il Mercato mostrerà il vecchio prezzo barrato accanto a quello attuale. Ciò attira visivamente gli acquirenti e aumenta il CTR delle tue offerte.
Convalida: individuare i problemi prima di Yandex
Veniamo ora a quella che penso sia una delle funzionalità più sottovalutate: la convalida del feed prima dell'invio. La maggior parte dei plugin genera un feed e il gioco è fatto. Quindi lo carichi sul mercato e attendi i risultati della moderazione. Se qualcosa non va, ricevi errori dopo alcune ore o giorni, correggilo, rigeneralo, scaricalo di nuovo, attendi ancora. Un ciclo "fisso - controllato" può richiedere una settimana se disponi di un ampio catalogo e la moderazione del mercato è impegnata.
Abbiamo integrato la validazione direttamente nel modulo. Dopo ogni generazione di feed, il modulo esamina tutte le offerte e ne verifica la conformità ai requisiti Yandex.Market. Non solo “l'XML è valido”, ma un controllo significativo di ciascuna offerta di prodotto. Ciò che viene controllato è che il titolo non sia vuoto o troppo lungo, il prezzo sia positivo e in un range ragionevole, ci sia almeno un'immagine e l'URL dell'immagine sia disponibile, la descrizione non superi il limite di caratteri, la categoria sia specificata, l'URL del prodotto sia valido e porti a una pagina esistente. Per le varianti viene verificata la presenza di group_id e parametri distintivi. Per la merce con consegna - che siano indicati i termini e i costi.
I risultati della convalida vengono visualizzati nella dashboard del modulo Yandex Feed direttamente nel pannello di amministrazione di WooCommerce. Vengono visualizzati tre gruppi: convalidato con successo (verde), con avvisi (giallo) e con errori (rosso). Per ogni prodotto problematico viene mostrato un motivo specifico: "Nessuna immagine", "Il prezzo è zero", "La descrizione supera i 3000 caratteri", "Non esiste un singolo attributo che il mercato possa utilizzare come parametro". Puoi fare clic su un prodotto, andare alla sua scheda in WooCommerce e risolvere il problema subito, non dopo che Market ha rifiutato il tuo feed.
Sai qual è l'avviso più comune? "Non c'è testo alternativo per l'immagine." Yandex.Market non richiede il testo alternativo per le immagini nel feed, ma lo consiglia. E se su diciassettemila prodotti che hai, dodicimila non hanno testo alternativo, questo è un motivo per pensare non solo al feed, ma anche alla SEO del sito nel suo insieme. A proposito, COS WP Woo ha un modulo per la generazione batch di testi alternativi utilizzando l'intelligenza artificiale: puoi risolvere questo problema in un solo lancio.
Un altro problema comune sono i duplicati. Lo stesso prodotto può apparire nel feed due volte se è in due categorie ed entrambe sono incluse nel filtro. Il nostro modulo tiene traccia dell'unicità in base all'ID prodotto e garantisce che ciascun prodotto (o variazione) venga presentato esattamente una volta nel feed. I duplicati sono un percorso diretto verso problemi di moderazione e una diminuzione della qualità del feed agli occhi di Yandex.
Un'altra cosa che non ho visto da nessun'altra parte è l'anteprima del feed. Prima di copiare l'URL del feed e incollarlo nella dashboard di Market, puoi visualizzare le prime N offerte di prodotti direttamente nel browser, in un formato leggibile. Non XML grezzo, ma una tabella strutturata: titolo, prezzo, categoria, numero di immagini, disponibilità, parametri. Ciò ti consente di verificare rapidamente che il tuo feed abbia l'aspetto previsto, senza dover analizzare il file XML in head o in un validatore di terze parti.
Vale la pena menzionare separatamente la dimensione del feed. Per un catalogo di diciassettemila posizioni con variazioni, il file YML può pesare diverse decine di megabyte. Yandex.Market accetta file fino a cinquecento megabyte, quindi di solito questo non è un problema, ma il tempo di download è importante. Il mercato recupera periodicamente il feed all'URL specificato e se il tuo server fornisce il file lentamente o con un timeout, l'aggiornamento dei dati verrà ritardato. Il nostro modulo genera un file statico e lo fornisce direttamente tramite Nginx/Apache, senza passare attraverso PHP: questo è il più veloce possibile e non carica il server.
Mi rendo conto che tutto questo può sembrare un mucchio di dettagli tecnici di cui solo gli sviluppatori hanno bisogno. Ma in realtà, sono questi dettagli che determinano se il tuo caricamento sul Mercato funzionerà stabilmente per mesi senza il tuo intervento o richiederà un controllo manuale costante. Abbiamo puntato alla prima opzione: configurala una volta e funziona. Il feed viene aggiornato, i prezzi sono aggiornati, i nuovi prodotti vengono aggiunti, quelli rimossi dalla vendita scompaiono, la convalida individua i problemi prima che raggiungano il mercato.
Parametri del prodotto e struttura dell'offerta
Un argomento a parte che merita attenzione è l'utilizzo dei parametri del prodotto nel feed. Yandex.Market utilizza attivamente parametri (elementi param) per il filtraggio sfaccettato e il confronto dei prodotti. Se il tuo olio ha una viscosità, un punto di infiammabilità e un tipo di base specifici (minerale, sintetico, semisintetico), l'acquirente può filtrare i prodotti in base a questi parametri direttamente nei risultati di mercato. Ciò influisce in modo significativo sulla conversione, perché l'acquirente vede esattamente ciò di cui ha bisogno e non l'intero catalogo di diciassettemila articoli.
In WooCommerce, i parametri del prodotto vengono memorizzati come attributi (tassonomie come pa_viscosità, pa_base-type) o come meta campi (se utilizzi campi personalizzati). Il nostro modulo mappa automaticamente gli attributi WooCommerce agli elementi param YML. Puoi personalizzare quali attributi includere nel tuo feed e quali no. Ad esempio, l'acquirente non ha bisogno dell'attributo interno "Codice 1C": può essere escluso. E "Viscosità", "Volume", "Produttore" - accendi.
Per ogni attributo è possibile specificare un nome che verrà visualizzato nel Mercato. Se in WooCommerce l'attributo si chiama pa_viscosity-class e per l'acquirente è "SAE Viscosity Class", imposti un nome leggibile dall'uomo nella mappatura e apparirà nel feed esattamente in questa forma. Il mercato mostrerà "Classe di viscosità SAE: 5W-30" - è chiaro sia per l'acquirente che per i filtri di ricerca.
Se utilizzi il nostro modulo campi personalizzati (sostituzione ACF), anche i dati dei campi personalizzati possono essere inclusi nel feed come parametri. Supponiamo che tu abbia un campo personalizzato "Certificato GOST" con un numero GOST: può diventare un parametro in YML. O "Intervallo di temperatura di applicazione": da meno quaranta a più centoventi. Tutto ciò arricchisce la scheda prodotto presente sul Mercato e aumenta la fiducia degli acquirenti.
Nella pratica ho notato uno schema interessante: i prodotti con cinque o più parametri nel feed ricevono molti più clic rispetto ai prodotti con uno o due parametri. Il mercato ama le carte dettagliate: forniscono più opzioni di filtro e Yandex le classifica più in alto. Quindi se hai dati, usali. Compila gli attributi in WooCommerce (o in 1C, da dove vengono sincronizzati) e il modulo li caricherà automaticamente nel feed. Ogni parametro completato è un piccolo vantaggio per la visibilità dei tuoi prodotti.
Veniamo ora alla struttura dell'offerta nel suo complesso. YML supporta diversi tipi di offerta: standard (type=vendor.model), semplificata e personalizzata. Usiamo il tipo semplificato come predefinito perché è il più flessibile e si adatta alla maggior parte dei prodotti. Ma se disponi di prodotti con una chiara divisione in produttore (fornitore) e modello, ad esempio "Shell Helix Ultra 5W-40" dove Shell è il fornitore e Helix Ultra 5W-40 è il modello, puoi passare al tipo fornitore.modello. Il mercato strutturerà meglio le informazioni e sarà in grado di raggruppare i prodotti dello stesso produttore.
Il fornitore viene preso dall'attributo WooCommerce o da un campo personalizzato: specifichi da dove proviene esattamente nelle impostazioni di mappatura. Paese di origine (country_of_origin) - simile. Codice a barre: da un meta campo o attributo. Il nostro modulo non ti obbliga a memorizzare i dati in nessun campo specifico: si adatta alla tua struttura dati, e non viceversa.
C'è un altro punto che spesso viene trascurato: l'URL del prodotto nel feed. Sembrerebbe che prendiamo semplicemente il permalink e lo inseriamo. Ma l'URL deve essere assoluto, con il protocollo https, senza parametri di query non necessari, e deve portare a una pagina vera e propria. Per le varianti, l'URL deve includere parametri che selezionano la variante specifica. Il nostro modulo genera URL corretti per ogni caso, inclusa la gestione di siti multilingue (se usi WPML o Polylang) e domini IDN (come butter.site, che si trasforma in xn--80aa6ac0a.xn--80aswg nell'URL).
A proposito di immagini. Il mercato accetta fino a dieci immagini per offerta. Carichiamo l'immagine principale del prodotto e tutte le immagini dalla galleria, ma non più di dieci. Se l'URL dell'immagine porta a un'immagine con parametri di query di ridimensionamento (come spesso fanno i plug-in CDN), prendiamo l'URL originale senza parametri: è più affidabile. E controlliamo che l'URL restituisca HTTP 200 e non 404: i collegamenti interrotti alle immagini sono uno dei motivi più comuni per il rifiuto del prodotto con moderazione.
Parliamo di cosa succede una volta che il feed è attivo e funzionante. Perché la personalizzazione rappresenta il cinquanta per cento del business. I secondi cinquanta riguardano il monitoraggio e l'adattamento. Il mercato cambia costantemente le sue esigenze, aggiungendo nuovi campi obbligatori e rafforzando i controlli. Anche il tuo catalogo vive: compaiono nuovi prodotti, quelli vecchi vengono cancellati, i prezzi e le descrizioni cambiano. Il feed dovrebbe riflettere tutte queste modifiche automaticamente, senza intervento manuale.
Sulla dashboard del modulo Yandex Feed mostriamo le metriche chiave: quanti prodotti sono presenti nel feed, quando è stata l'ultima generazione, quanto tempo è impiegato, ci sono errori o avvisi, qual è la dimensione del file. Se qualcosa è andato storto, ad esempio la generazione è fallita con un errore o il numero di prodotti nel feed è diminuito drasticamente, verrà visualizzato un avviso. Una forte riduzione del numero di prodotti di solito significa che qualcosa si è rotto nei dati: ripristino di massa dei prezzi, cancellazione di categorie, problema con la sincronizzazione 1C. È meglio apprenderlo dalla dashboard del plugin piuttosto che da un acquirente che non riesce a trovare il tuo prodotto sul mercato.
Ho pensato a lungo se fosse necessario aggiungere notifiche via email, del tipo "il tuo feed è stato generato, ecco le statistiche". Abbiamo deciso di non aggiungerlo ancora, perché si trasforma rapidamente in spam, che tutti ignorano. Invece, un indicatore visivo sulla dashboard nel pannello di amministrazione di WooCommerce. Se accedi all'area amministrativa almeno una volta al giorno (e chi non lo fa?), vedrai lo stato del feed.
Voglio parlarti di un'altra situazione che si verifica più spesso di quanto vorremmo: un conflitto di dati tra WooCommerce e Market. Hai caricato il feed, il mercato lo ha accettato e i prodotti sono apparsi nei risultati di ricerca. E una settimana dopo hai aggiornato la descrizione del prodotto in WooCommerce, rendendola più lunga e dettagliata. Il feed è stato rigenerato, il Market ha aggiornato i dati e improvvisamente il prodotto ha smesso di essere moderato perché la nuova descrizione conteneva parole proibite o superava il limite di caratteri. Il prodotto scompare dal display e non capisci cosa sia successo. La nostra convalida rileva tali modifiche durante la generazione e visualizza un avviso: "Prodotto X: la descrizione è aumentata da 2800 a 3500 caratteri, supera il limite del mercato". Puoi abbreviare la descrizione prima che il problema raggiunga la moderazione.
Ecco un'altra storia divertente dalla pratica. Per un cliente, un produttore di prodotti chimici per auto, il mangime ha funzionato perfettamente per tre mesi. E poi ottocento merci “caddero” contemporaneamente. Abbiamo iniziato a esaminarlo: si è scoperto che il professionista del marketing aveva aggiornato in modo massiccio le descrizioni dei prodotti tramite WP All Import e le descrizioni includevano tag HTML che interrompevano la struttura XML del feed. Non l'intero feed, ma offerte specifiche, ovvero quelle in cui la descrizione conteneva, ad esempio, un tag non chiuso o il simbolo della e commerciale senza caratteri di escape. Il parser XML di Market ha semplicemente saltato tutto dopo la prima offerta interrotta e i prodotti sono silenziosamente scomparsi. Abbiamo aggiunto la sanificazione delle descrizioni - strip_tags, pulizia dei caratteri speciali, normalizzazione degli spazi - nella pipeline di generazione dei feed e da allora tali problemi non si sono più verificati. Ma senza la convalida, questo bug potrebbe rimanere inosservato per mesi.
Sai, nel corso degli anni di lavoro con il caricamento sul mercato, sono giunto a un'importante conclusione: la qualità del feed è più importante del numero di prodotti in esso contenuti. È meglio caricare tremila prodotti perfettamente preparati - con parametri completi, immagini di alta qualità, prezzi e descrizioni corretti - piuttosto che diciassettemila, la metà dei quali hanno problemi. Il mercato tiene conto della qualità del negozio durante la classifica e un negozio con un'alta percentuale di prodotti rifiutati viene classificato inferiore rispetto a un negozio in cui tutti i prodotti vengono moderati per la prima volta. Il filtraggio e la convalida nel nostro modulo mirano esattamente a questo: aiutarti a caricare il feed di massima qualità e non quello più grande.
Cosa scegliere e come iniziare
Sento spesso la domanda: in cosa differisce il vostro modulo dai plugin esistenti per la generazione di YML? Sul mercato c'è YML per Yandex Market, WP All Export con un modello YML, diverse soluzioni a pagamento di CodeCanyon. La risposta onesta è che, dal punto di vista funzionale, molti di essi risolvono un problema di base: generare un file XML in formato YML dai dati di WooCommerce. La differenza sta nei dettagli.
Il primo è l'integrazione. Un plug-in separato per la generazione di un feed non sa nulla della tua integrazione con 1C, dei tuoi prezzi B2B, dei campi personalizzati o del sistema di moderazione dei contenuti. COS WP Woo è un unico ecosistema in cui tutti i moduli lavorano insieme. I prezzi da 1C appaiono automaticamente nel feed. I campi personalizzati del modulo CF diventano automaticamente parametri. I controlli SEO del modulo di audit completano la convalida del feed. Non si tratta di marketing bla bla, ma di una differenza pratica: meno conflitti, meno lavoro manuale, meno possibilità che qualcosa si rompa.
Il secondo è la convalida. Non ho visto un singolo plugin che controlli la conformità di ciascun prodotto ai requisiti del mercato prima di generare un feed e visualizzi un elenco di problemi in un'interfaccia user-friendly. Di solito si apprendono i problemi dal rapporto sulla moderazione del mercato, dopo alcune ore o giorni. E poi inizia la ricerca "trova il prodotto problematico tra diciassettemila". La nostra dashboard mostra immediatamente i problemi.
Terzo: Pianificatore di azioni invece di wp_cron. Il cron di WordPress non è un vero cron, viene eseguito quando visiti un sito. Se il tuo sito ha poco traffico (cosa che accade con i negozi B2B durante gli orari non lavorativi), il cron potrebbe non avviarsi in tempo e il feed non verrà aggiornato. Action Scheduler funziona in modo diverso: garantisce che le attività vengano completate a un determinato intervallo, anche se nessuno visita il sito. Per un'attività mission-critical come l'aggiornamento di un feed, questo è essenziale.
Quarto, supporto per variazioni con corretta ereditarietà dei dati. Sembra una cosa da poco, ma in pratica, la gestione errata delle variazioni è la fonte più comune di problemi di alimentazione. Un prodotto senza prezzo, senza descrizione, senza immagine: tutto questo è una conseguenza del fatto che il plugin non sa come seguire la catena di ereditarietà dalla variazione al genitore.
Se attualmente stai utilizzando un altro plugin per generare YML e funziona, non sto dicendo che devi cambiare urgentemente tutto. Ma se riscontri problemi di moderazione, se il feed viene aggiornato in modo irregolare, se i prezzi da 1C arrivano con ritardo, se passi tempo a controllare manualmente i prodotti prima di caricarli, dai un'occhiata al nostro modulo. Risolve tutti questi problemi in modo completo, all'interno di un plug-in, senza dover mettere insieme diverse soluzioni e sperare che non vadano in pezzi la prossima volta che aggiorni WordPress.
La configurazione del modulo Yandex Feed in COS WP Woo richiede da quindici minuti a un'ora, a seconda di quanto dettagliata si desidera configurare la mappatura di categorie e parametri. Impostazioni di base: nome del negozio, selezione di categorie, pianificazione degli aggiornamenti: quindici minuti. Configurazione completa con mappatura di tutte le categorie sull'albero Yandex, configurazione di parametri, regole di consegna e filtraggio: un'ora. Successivamente, il feed vive di vita propria: viene aggiornato, convalidato e mostra lo stato sulla dashboard. Gestisci un'attività, non stai scherzando con i file XML.
Sento spesso l'obiezione: "Perché ho bisogno del modulo Yandex.Market in un plugin per WooCommerce, se posso semplicemente installare un plugin separato esattamente per questo compito?" Domanda giusta. Un plugin separato va bene se hai solo bisogno della generazione di feed e nient'altro. Ma in realtà il caricamento sul Market non è un compito isolato. È correlato ai prezzi, alla disponibilità nei magazzini, ai dati dei prodotti e alla qualità SEO delle descrizioni. E quando tutte queste cose vivono in plugin diversi che non sanno nulla l'uno dell'altro, passi il tempo a incollare insieme, sincronizzare manualmente e risolvere i conflitti. Una singola piattaforma elimina questo mal di testa. Il modulo feed “vede” direttamente i dati 1C, conosce i prezzi e i gruppi B2B e utilizza la convalida del modulo SEO. Tutto questo funziona senza configurazioni aggiuntive, senza integrazioni di terze parti, senza il rischio che il prossimo aggiornamento di WordPress rompa la fragile struttura di cinque plugin di autori diversi.
Prova COS WP Woo: questo è l'unico plugin WooCommerce che copre il caricamento su Yandex.Market insieme all'integrazione 1C, campi personalizzati, prezzi B2B e controlli SEO in un'unica soluzione. Installa, configura il tuo feed in mezz'ora e dimentica il lavoro manuale con i listini prezzi.