Fehler bei Einträgen finden und beheben

Filtern Sie auffällige Standorteinträge, lesen Sie Plattformbegründungen, beheben Sie Fehler, fragen Sie sicher erneut ab und prüfen Sie das gesamte Konto.

Die meisten Einträge werden ohne Eingriff synchronisiert. Bei den übrigen erfahren Sie in displayStatus und syncIssue, warum das nicht gelingt, und fast jede Ursache lässt sich einer von fünf Korrekturen zuordnen. Diese Anleitung führt von den unverarbeiteten Eintragszeilen zu einem Bericht pro Konto, der zeigt, was blockiert ist und was Sie dagegen tun können.

1. Einträge abrufen und problematische Zeilen behalten

Rufen Sie die Premium-Einträge ab und entfernen Sie alle fehlerfreien Zeilen aus dem Ergebnis. Eine Zeile erfordert Aufmerksamkeit, wenn actionRequired den Wert true hat oder wenn syncStatus den Wert FAILED, CANNOT_SUBMIT oder REQUIRING_ACTION hat. IN_PROGRESS und PENDING_APPROVAL sind keine Fehler; sie kennzeichnen die Warteschlange der Plattform.

Problem rows
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")))]'
JSON
{  "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. Begründung lesen

Zwei Felder erklären eine problematische Zeile. displayStatus ist die Zusammenfassung der Plattform zum aktuellen Stand der Zeile. syncIssue ist die eigene Begründung der Plattform, sofern sie eine angegeben hat. Lesen Sie beide: Im obigen Beispiel besagt displayStatus von Local Mint, dass beim Partner Probleme auftreten, aber syncIssue nennt die eigentliche Ursache: eine fehlende Website.

FeldBeispielVerwendungszweck
displayStatusConnect your account to sync the listingDie Zeile, die Sie einer Person anzeigen.
syncIssuePublisher requires website URLAuswahl der Korrektur. null, wenn die Plattform keine Begründung angegeben hat.
actionRequiredtrueSortierung: true bedeutet, dass nichts weitergeht, bis Sie handeln.

Der Standort selbst enthält außerdem bei jedem Lesezugriff über Alle Standorte auflisten ein createErrors-Array. Es enthält Validierungsprobleme, die beim Erstellen des Datensatzes gefunden wurden, und ist eine weitere Anlaufstelle, wenn eine Zeile ohne syncIssue fehlschlägt.

3. Der Ursache die passende Korrektur zuordnen

Eine kleine Gruppe von Ursachen ist für fast jede blockierte Zeile verantwortlich.

UrsacheErscheinungsbildKorrektur
Konto nicht verbundenGoogle Maps oder Facebook im Status REQUIRING_ACTION mit Connect your account to sync the listing.Verbinden Sie das Konto bei dieser Plattform: Google verbinden und Standorte importieren oder Facebook-Seiten verbinden. Apple Maps benötigt keine Verbindung; siehe Apple Business Connect verbinden.
Website fehltFAILED mit syncIssue: Publisher requires website URL.Legen Sie bizUrl am Standort fest. Siehe Einen Standort aktualisieren.
Land wird von der Plattform nicht unterstütztCANNOT_SUBMIT, kein syncIssue.Vergleichen Sie countryIso des Standorts mit supportedCountries der betreffenden Website aus Websites des Tarifs auflisten. Es gibt nichts zu korrigieren; die Plattform nimmt den Eintrag nicht an.
Ausgeblendete Adresse wird nicht unterstütztCANNOT_SUBMIT oder FAILED bei einem Unternehmen mit Einzugsgebiet und hideAddress: true.Prüfen Sie hideAddressSupportedCountries der Website. Zeigen Sie entweder die Adresse an oder akzeptieren Sie, dass diese Plattform übersprungen wird.
Facebook-Seite hat keine ÖffnungszeitenFacebook im Status IN_PROGRESS mit syncIssue: Temporary status is not applicable for this listing because it has no hours or opening information.Fügen Sie der Seite auf Facebook Öffnungszeiten hinzu und senden Sie anschließend eine Standortaktualisierung. Siehe Einen Standort aktualisieren.
Beschreibung oder Kategorie abgelehntFAILED mit einem syncIssue, das das Feld benennt.Aktualisieren Sie die Beschreibung oder subCategoryId am Standort und fragen Sie anschließend den Status erneut ab.

Um die Regeln für Länder und ausgeblendete Adressen zu prüfen, rufen Sie die Websites des Tarifs einmal ab und speichern Sie sie zwischen; die Liste ist nicht paginiert und ändert sich selten.

Plan sites
curl -s https://listingsapi.com/api/v4/plan-sites \-H "Authorization: API $LISTINGSAPI_KEY" \| jq '.data.planSites[] | select(.name == "Yelp")      | {name, supportedCountries, hideAddressSupportedCountries}'
JSON
{  "name": "Yelp",  "supportedCountries": ["US", "CA", "GB", "DE", "FR"],  "hideAddressSupportedCountries": ["US", "CA", "AU", "GB"]}

Wenn countryIso des Standorts nicht in supportedCountries enthalten ist, wird die Zeile dieser Plattform den Status CANNOT_SUBMIT nie verlassen. Schließen Sie sie aus Ihrer Abdeckungskennzahl aus, statt es erneut zu versuchen.

4. Status nach der Korrektur erneut abfragen

Eine Standortaktualisierung löst eine erneute Übermittlung an die betroffenen Plattformen aus. Die Zeile wechselt von FAILED oder REQUIRING_ACTION zurück zu IN_PROGRESS und anschließend zu SYNCED, sobald die Plattform den Eintrag annimmt. Plattformen benötigen Minuten bis Wochen, fragen Sie den Status daher in Abständen von Stunden und nicht von Sekunden ab.

Jede Statusabfrage wird auf das Anfragelimit angerechnet. Lesen Sie bei einem 429 den Wert von Retry-After und warten Sie entsprechend viele Sekunden; die SDKs lösen RateLimitError mit demselben Wert aus.

Re-poll
# -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"

Wenn lastUpdate fortgeschrieben wird, zeigt dies, dass die Plattform die neue Übermittlung verarbeitet hat, noch bevor sich syncStatus ändert. Wenn Sie Webhooks verwenden, ersetzt das Ereignis listing.submission diese Schleife.

5. Führen Sie eine kontoweite Prüfung durch

Um alle blockierten Zeilen im gesamten Konto zu finden, durchlaufen Sie die Seiten von GET /locations (eine Cursor-Verbindung: first, after, edges[].node) und rufen Sie den Premium-Endpunkt einmal pro Standort auf. Fassen Sie die problematischen Zeilen in einem Bericht zusammen, in dem der Standort als Schlüssel dient. Das Python SDK folgt den Cursorn mit auto_paging_iter(); das Node SDK verwendet dafür fetchAll: true. Die Beispiele verwenden die Backoff-Hilfsfunktion aus Schritt 4 erneut.

Account sweep
# 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  done

Der Bericht fasst Zeilen, die noch in Bearbeitung sind, mit tatsächlich blockierten Zeilen zusammen. Teilen Sie ihn anhand der Tabelle in Schritt 3 auf, bevor Sie ihn weitergeben: IN_PROGRESS und PENDING_APPROVAL erfordern Geduld, REQUIRING_ACTION erfordert eine Verbindung und FAILED erfordert ein Feld am Standort.

Nächste Schritte