Buat Google Business Profile untuk lokasi tanpa profil
Ajukan Google Business Profile baru untuk lokasi dengan akun Google terhubung, lalu pantau verifikasi melalui lokasi, profil bisnis, dan webhook.
Pencocokan dan penautan hanya berfungsi jika profil bisnis Google sudah ada. Toko baru belum memilikinya, jadi Anda meminta API untuk membuatnya di bawah akun Google yang terhubung. Pembuatan berlangsung secara asinkron dan Google memverifikasi profil sesuai jadwalnya sendiri, sehingga sebagian besar panduan ini membahas cara memantau hasilnya.
1. Pastikan lokasi belum memiliki profil bisnis Google
Baca profil bisnis premium lokasi tersebut dan temukan baris yang memiliki site.name bernilai Google Maps. Lokasi yang belum memiliki profil bisnis di Google menampilkan REQUIRING_ACTION dengan connectedAccountId bernilai null.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY"{ "site": { "name": "Google Maps", "url": "maps.google.com" }, "syncStatus": "REQUIRING_ACTION", "displayStatus": "Connect your account to sync the listing", "listingUrl": null, "connectedAccountId": null, "verified": false}Jika baris tersebut sudah berstatus SYNCED, atau connectedAccountId sudah ditetapkan, lokasi tersebut memiliki profil bisnis Google dan panduan ini tidak berlaku. Tautkan atau perbarui profil bisnis tersebut.
2. Pilih folder (opsional)
Google mengatur profil bisnis di bawah suatu akun ke dalam folder, yang juga disebut grup akun. Ambil daftar folder akun yang terhubung dan sertakan salah satunya sebagai folderId jika pemilik menginginkan profil baru berada di dalam grup tertentu. Lewati langkah ini untuk membuatnya di tingkat akar akun.
curl https://listingsapi.com/api/v4/connected-accounts/4f712c17-4f95-42dd-90f4-97171a2e67b5/folders \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "getFoldersUnderGoogleAccount": [ { "folderId": "accounts/104890024806530350198", "folderName": "Bright Smile Dental", "locationCount": null } ] }}Gunakan folderId tanpa perubahan; nilainya adalah string accounts/{id}, bukan angka. locationCount dapat bernilai null jika Google tidak melaporkannya. Endpoint ini hanya berlaku untuk koneksi GoogleAccount.
3. Buat profil bisnis
Kirim id lokasi dalam format base64 dan akun, beserta folder jika Anda memilihnya. Respons hanya menyatakan bahwa permintaan telah diterima.
curl -X POST https://listingsapi.com/api/v4/locations/create/gmb-listing \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "locationId": "TG9jYXRpb246MTgwMDI4OQ==", "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5", "folderId": "accounts/104890024806530350198" }}'{ "data": { "createGmbListingForLocation": { "clientMutationId": null, "success": true, "errors": null } }}success: true berarti proses pembuatan telah dimulai, bukan berarti profil sudah tayang. Google meninjau setiap profil baru sebelum menerbitkannya, dan proses ini dapat memakan waktu berhari-hari. Jika success bernilai false, errors menjelaskan alasannya: lokasi belum memiliki semua field wajib, sudah memiliki profil bisnis Google, telah diarsipkan, atau akun yang terhubung sudah tidak aktif.
4. Pantau status verifikasi lokasi
Setiap pembacaan lokasi mengembalikan googleVerificationStatus yang memuat status dan message. Baca kembali lokasi tersebut untuk melihat tahap proses yang sedang dijalankan Google.
curl -G https://listingsapi.com/api/v4/locations-by-ids \--data-urlencode 'ids=["TG9jYXRpb246MTgwMDI4OQ=="]' \-H "Authorization: API $LISTINGSAPI_KEY"{ "id": "TG9jYXRpb246MTgwMDI4OQ==", "databaseId": 1800289, "googleVerificationStatus": { "status": "PENDING_VERIFICATION", "message": null }}Pembacaan sekali sehari sudah cukup untuk proses yang memakan waktu berhari-hari. Patuhi Retry-After pada 429 jika Anda memeriksa banyak lokasi sekaligus.
5. Pantau baris Google dalam daftar profil bisnis
Baris profil bisnis premium dari langkah 1 melacak perkembangan yang sama dari sisi profil bisnis. Jalankan kembali panggilan pada langkah 1 dan baca syncStatus, verified, dan listingUrl.
6. Pantau webhook verifikasi
Jika URL webhook diatur di dasbor, dua peristiwa mencakup status akhir, sehingga Anda tidak perlu melakukan polling. Keduanya membawa location_id dan selalu memiliki data.connected_account_id: null.
{ "event": "connection.google_verification_failed", "timestamp": "2026-08-25T14:52:31Z", "account_id": 11073, "location_id": "279381", "data": { "platform": "google", "connected_account_id": null, "failure_type": "rejected", "reason": "This profile is suspended." }}Hanya kegagalan transient yang layak dicoba ulang. Status yang masih dalam proses tidak memicu peristiwa apa pun, sehingga tidak adanya peristiwa bukanlah sinyal: selama verifikasi berlangsung, baca googleVerificationStatus seperti pada langkah 4.
Langkah berikutnya
- Hubungkan Google dan impor lokasi: hubungkan akun yang diperlukan untuk mengikuti panduan ini.
- Periksa status profil bisnis dan tautan aktif: gambaran yang lebih luas tentang setiap baris platform publikasi.
- Tanggapi peristiwa dengan webhook: terima peristiwa verifikasi alih-alih melakukan polling.
- Referensi: Buat profil bisnis GMB untuk suatu lokasi, Tampilkan daftar folder GMB, Dapatkan profil bisnis premium, Tampilkan daftar lokasi.