İşletme kaydı hatalarını bulun ve düzeltin

Konumun sorunlu işletme kayıtlarını süzün, yayın platformunun nedenini okuyup uygun düzeltmeyi yapın, güvenle yeniden sorgulayın ve tüm hesabı tarayın.

Çoğu işletme kaydı müdahale gerektirmeden eşitlenir. Eşitlenmeyenler, nedenini displayStatus ve syncIssue alanlarında belirtir ve neredeyse her neden beş düzeltmeden biriyle giderilebilir. Bu kılavuz, ham işletme kaydı satırlarından başlayarak her hesap için nelerin engellendiğini ve bunlar için ne yapılması gerektiğini gösteren bir rapora kadar ilerler.

1. İşletme kayıtlarını alın ve sorunlu satırları tutun

Premium işletme kayıtlarını alın ve sorunsuz olanların tümünü eleyin. actionRequired değeri true olduğunda veya syncStatus değeri FAILED, CANNOT_SUBMIT ya da REQUIRING_ACTION olduğunda satır müdahale gerektirir. IN_PROGRESS ve PENDING_APPROVAL hata değildir; yayın platformunun kuyruğunu belirtirler.

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. Nedeni okuyun

Sorunlu bir satırı iki alan açıklar. displayStatus, satırın hangi aşamada olduğuna ilişkin platformun özetidir. syncIssue, yayın platformu bir neden belirtmişse onun kendi açıklamasıdır. İkisini de okuyun: yukarıdaki örnekte Local Mint'in displayStatus alanı iş ortağının sorunlar yaşadığını söyler, ancak syncIssue alanı gerçek nedeni, yani eksik web sitesini belirtir.

AlanÖrnekKullanım amacı
displayStatusConnect your account to sync the listingBir kişiye gösterdiğiniz açıklama.
syncIssuePublisher requires website URLDüzeltmeyi seçmek. Yayın platformu neden belirtmediyse null.
actionRequiredtrueSıralama: true, siz işlem yapana kadar hiçbir ilerleme olmayacağı anlamına gelir.

Tüm konumları listeleyin üzerinden yapılan her okumada konumun kendisi de bir createErrors dizisi içerir. Bu dizi, kayıt oluşturulurken bulunan doğrulama sorunlarını içerir ve bir satır syncIssue olmadan başarısız olduğunda bakılacak ikinci yerdir.

3. Nedeni düzeltmeyle eşleştirin

Engellenen satırların neredeyse tamamı az sayıdaki nedenden kaynaklanır.

NedenNasıl görünürDüzeltme
Hesap bağlı değilGoogle Maps veya Facebook, Connect your account to sync the listing ile birlikte REQUIRING_ACTION durumundadır.İlgili yayın platformunun hesabını bağlayın: Google'ı bağlayın ve konumları içe aktarın veya Facebook Sayfalarını bağlayın. Apple Maps bağlantı gerektirmez; bkz. Apple Business Connect'i bağlayın.
Web sitesi eksiksyncIssue: Publisher requires website URL ile birlikte FAILED.Konumda bizUrl alanını ayarlayın. Bkz. Bir konumu güncelleyin.
Ülke yayın platformu tarafından desteklenmiyorCANNOT_SUBMIT, syncIssue yok.Konumun countryIso değerini, Plandaki siteleri listeleyin üzerinden alınan ilgili sitenin supportedCountries değeriyle karşılaştırın. Düzeltilecek bir şey yoktur; yayın platformu bu kaydı kabul etmeyecektir.
Gizli adres desteklenmiyorhideAddress: true olan bir hizmet bölgesi işletmesinde CANNOT_SUBMIT veya FAILED.Sitenin hideAddressSupportedCountries değerini kontrol edin. Ya adresi gösterin ya da bu yayın platformunun atlanmasını kabul edin.
Facebook Sayfasında çalışma saatleri yokFacebook, syncIssue: Temporary status is not applicable for this listing because it has no hours or opening information ile birlikte IN_PROGRESS durumundadır.Facebook'taki Sayfaya çalışma saatlerini ekleyin, ardından bir konum güncellemesi gönderin. Bkz. Bir konumu güncelleyin.
Açıklama veya kategori reddedildiAlanın adını belirten bir syncIssue ile birlikte FAILED.Konumdaki açıklamayı veya subCategoryId alanını güncelleyin, ardından yeniden sorgulayın.

Ülke ve gizli adres kurallarını kontrol etmek için plandaki siteleri bir kez alın ve önbelleğe kaydedin; liste sayfalandırılmaz ve nadiren değişir.

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"]}

Konumun countryIso değeri supportedCountries içinde değilse, ilgili yayın platformunun satırı hiçbir zaman CANNOT_SUBMIT durumundan çıkmaz. Yeniden denemek yerine bu satırı kapsam hesabınızdan çıkarın.

4. Düzeltmeden sonra yeniden sorgulayın

Bir konum güncellemesi, etkilenen yayın platformlarına yeni bir gönderimi tetikler. Satır, FAILED veya REQUIRING_ACTION durumundan yeniden IN_PROGRESS durumuna, ardından yayın platformu kaydı kabul ettiğinde SYNCED durumuna geçer. Yayın platformlarının işlem süresi dakikalardan haftalara kadar değişir, bu nedenle sorgulamayı saniyelerle değil, saatlerle ölçülen aralıklarla yapın.

Her sorgulama hız limitine dahil edilir. Bir 429 aldığınızda Retry-After değerini okuyun ve o kadar saniye bekleyin; SDK'lar aynı değerle RateLimitError hatası oluşturur.

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"

lastUpdate değerinin ilerlemesi, syncStatus henüz değişmeden bile yayın platformunun yeni gönderimi işlediğinin göstergesidir. Webhook kullanıyorsanız listing.submission olayı bu döngünün yerini alır.

5. Hesap genelinde bir tarama çalıştırın

Hesap genelindeki tüm engellenmiş satırları bulmak için GET /locations sonuçlarını sayfa sayfa gezin (bir imleç bağlantısı: first, after, edges[].node) ve her konum için premium uç noktasını bir kez çağırın. Sorunlu satırları, konumu anahtar olarak kullanan tek bir raporda toplayın. Python SDK, imleçleri auto_paging_iter() ile takip eder; Node SDK ise bunu fetchAll: true ile yapar. Örnekler, 4. adımdaki backoff yardımcı işlevini yeniden kullanır.

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

Rapor, hâlâ işlenmekte olan satırlarla gerçekten engellenmiş satırları bir arada gruplandırır. Raporu herhangi biriyle paylaşmadan önce 3. adımdaki tabloya göre ayırın: IN_PROGRESS ve PENDING_APPROVAL için sabır, REQUIRING_ACTION için bir bağlantı, FAILED için ise konumda bir alan gerekir.

Sonraki adımlar