Trova e correggi gli errori delle schede
Filtra le schede problematiche per sede, leggi il motivo della piattaforma di pubblicazione, correggi, ripeti il polling in sicurezza e verifica l’account.
La maggior parte delle schede si sincronizza senza interventi. Quelle che non si sincronizzano ne indicano il motivo in displayStatus e syncIssue, e quasi ogni causa corrisponde a una di cinque correzioni. Questa guida parte dalle righe delle schede così come vengono restituite e arriva a un report per account su ciò che è bloccato e su come intervenire.
1. Recupera le schede e conserva le righe problematiche
Recupera le schede premium ed escludi tutte quelle senza problemi. Una riga richiede attenzione quando actionRequired è true oppure quando syncStatus è FAILED, CANNOT_SUBMIT o REQUIRING_ACTION. IN_PROGRESS e PENDING_APPROVAL non sono errori; indicano che la scheda è nella coda della piattaforma di pubblicazione.
curl -s https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY" \| jq '[.data.listingsForLocation[] | select(.actionRequired or (.syncStatus | IN("FAILED", "CANNOT_SUBMIT", "REQUIRING_ACTION")))]'{ "data": { "listingsForLocation": [ { "site": { "name": "Google Maps", "url": "maps.google.com" }, "syncStatus": "REQUIRING_ACTION", "displayStatus": "Connect your account to sync the listing", "actionRequired": true, "syncIssue": null }, { "site": { "name": "Local Mint", "url": "localmint.com" }, "syncStatus": "FAILED", "displayStatus": "Partner experiencing issues; awaiting response", "actionRequired": false, "syncIssue": "Publisher requires website URL" } ] }}2. Leggi il motivo
Due campi spiegano il problema di una riga. displayStatus è il riepilogo fornito dalla piattaforma sullo stato della riga. syncIssue è il motivo indicato dalla piattaforma di pubblicazione stessa, quando ne ha fornito uno. Leggili entrambi: nell'esempio sopra, displayStatus di Local Mint indica che il partner sta riscontrando problemi, ma syncIssue fornisce la causa reale, ovvero un sito web mancante.
Anche la sede stessa include un array createErrors a ogni lettura da Elenca tutte le sedi. Contiene i problemi di validazione rilevati alla creazione del record ed è un altro punto da controllare quando una riga presenta un errore senza syncIssue.
3. Associa la causa alla correzione
Un numero ristretto di cause spiega quasi tutte le righe bloccate.
Per verificare le regole relative al paese e all'indirizzo nascosto, recupera i siti del piano una sola volta e memorizzali nella cache; l'elenco non è paginato e cambia raramente.
curl -s https://listingsapi.com/api/v4/plan-sites \-H "Authorization: API $LISTINGSAPI_KEY" \| jq '.data.planSites[] | select(.name == "Yelp") | {name, supportedCountries, hideAddressSupportedCountries}'{ "name": "Yelp", "supportedCountries": ["US", "CA", "GB", "DE", "FR"], "hideAddressSupportedCountries": ["US", "CA", "AU", "GB"]}Se countryIso della sede non è presente in supportedCountries, la riga di quella piattaforma di pubblicazione non uscirà mai dallo stato CANNOT_SUBMIT. Escludila dal calcolo della copertura anziché riprovare.
4. Ripeti il polling dopo la correzione
Un aggiornamento della sede attiva un nuovo invio alle piattaforme di pubblicazione interessate. La riga passa da FAILED o REQUIRING_ACTION di nuovo a IN_PROGRESS, poi a SYNCED quando la piattaforma di pubblicazione accetta l'invio. Le piattaforme di pubblicazione impiegano da pochi minuti a settimane, quindi esegui il polling a intervalli di ore, non di secondi.
Ogni richiesta di polling viene conteggiata ai fini del limite di richieste. Quando ricevi 429, leggi Retry-After e attendi il numero di secondi indicato; gli SDK sollevano RateLimitError con lo stesso valore.
# -D - prints response headers so you can see Retry-After on a 429curl -s -D - https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY" \| grep -i -E "^HTTP|^Retry-After"L'avanzamento di lastUpdate indica che la piattaforma di pubblicazione ha elaborato il nuovo invio, anche prima che syncStatus cambi. Se hai dei webhook, l'evento listing.submission sostituisce questo ciclo.
5. Esegui un controllo dell'intero account
Per trovare tutte le righe bloccate nell'intero account, scorri le pagine di GET /locations (una connessione con cursore: first, after, edges[].node) e chiama l'endpoint premium una volta per sede. Raccogli le righe problematiche in un unico report indicizzato per sede. Il Python SDK segue i cursori con auto_paging_iter(); il Node SDK lo fa con fetchAll: true. Gli esempi riutilizzano la funzione ausiliaria di backoff del passaggio 4.
# One page of locations, then one listings call per location.# Repeat with &after=<pageInfo.endCursor> while hasNextPage is true.curl -s "https://listingsapi.com/api/v4/locations?first=50" \-H "Authorization: API $LISTINGSAPI_KEY" \| jq -r '.data.allLocations.edges[].node.id' \| while read -r id; do curl -s "https://listingsapi.com/api/v4/locations/$id/listings/premium" \ -H "Authorization: API $LISTINGSAPI_KEY" \ | jq --arg id "$id" '[.data.listingsForLocation[] | select(.syncStatus != "SYNCED" and .syncStatus != "COMPLETED") | {location: $id, site: .site.name, status: .syncStatus, issue: .syncIssue}]' sleep 6 # stay under 10 requests a minute on Launch doneIl report raggruppa le righe ancora in elaborazione insieme a quelle effettivamente bloccate. Suddividilo secondo la tabella del passaggio 3 prima di condividerlo con chiunque: IN_PROGRESS e PENDING_APPROVAL richiedono pazienza, REQUIRING_ACTION richiede una connessione e FAILED richiede un campo nella sede.
Passaggi successivi
- Controlla lo stato delle schede e i link pubblici: il lato degli stessi dati in cui tutto funziona correttamente.
- Aggiorna una sede: imposta
bizUrl, descrizione e categorie. - Collega Google e importa le sedi e Collega le Pagine Facebook: risolvi i problemi delle righe
REQUIRING_ACTION. - Riferimenti: Ottieni le schede premium, Elenca i siti del piano, Elenca tutte le sedi, Codici di errore.