Bu kılavuzda, Merchant API'de Loyalty Customer Match Service'in nasıl kullanılacağı açıklanmaktadır. Bu hizmet, satıcıların Google Arama'da organik kişiselleştirme için kullanıcı tanımlayıcıları ve katman bilgileri gibi müşteri bağlılığı verilerini etkin bir Google Ads hesabı gerektirmeden yönetmelerini sağlar.
Genel Bakış
Bağlılık verilerini yüklemek için Bağlılık Müşteri Eşleştirme Hizmeti'ni kullanın. Bu veriler daha sonra Google Arama'da üyelere özel fiyatlandırma gösterme gibi organik bağlılık kişiselleştirme özellikleri sağlamak için kullanılır. Müşterilerinizi bağlılık programı düzeyleriyle ilişkilendirmek için ManageLoyaltyCustomerMatch
özel yöntemini kullanırsınız. Bu sayede, kullanıcı kimliklerine göre bağlılık durumlarını ekleyebilir, güncelleyebilir veya kaldırabilirsiniz.
Temel kavramlar
- Birleştirilmiş arayüz: Müşteri bağlılığı katmanı ayrıntılarını eklemek, güncellemek veya kaldırmak için kullanılan benzersiz bir uç nokta.
- Gizlilik öncelikli tasarım: API, kullanıcı gizliliğini korumak ve yetkisiz hesap incelemelerini önlemek için GET veya LIST işlemlerini desteklemez. Bu sayede verilerin, alınmadan veya denetlenmeden yönetilmesi sağlanır.
- Esnek tanımlama: Kullanıcıları e-posta adresi, açık adres veya telefon numarası gibi en az bir geçerli tanımlayıcı kullanarak eşleştirin.
- İzne dayalı işleme: Hizmet, müşteri verilerini yalnızca son kullanıcı Google'a gerekli izni verdiğinde saklar ve kullanır. Hizmet, hesap varlığı yoklamasını veya izin durumunu korumak ve önlemek için eşleşme yapılmazsa ya da izin verilmezse sessiz bir başarı döndürür.
Ön koşullar
Bağlılık programı Müşteri Eşleştirme Hizmeti'ni kullanmak için aşağıdaki koşulları karşılamanız gerekir:
- Hesap kurulumu: Etkin bir Merchant Center hesabınız olduğundan emin olun. Loyalty Customer Match Service'i kullanmak için Google Ads hesabı oluşturmanız gerekmez.
- Bağlılık programı yapılandırması: Merchant Center hesabınızda bağlılık programını etkinleştirin ve bağlılık katmanlarını tanımladığınızdan emin olun.
- Katman sırası farkındalığı: Bağlılık katmanlarınızın Merchant Center kullanıcı arayüzünde tanımlandığı sıranın farkında olun. API, enum eşlemesi için bu sırayı kullanır.
Yöntem: ManageLoyaltyCustomerMatch
ManageLoyaltyCustomerMatch yöntemi, müşteri bağlılığı ilişkilendirmelerini yönetmek için merkezi arayüz olarak kullanılır. Sağlanan girişe göre hizmet, müşterinin bağlılık programı katmanı durumunu ekleme, güncelleme veya kaldırma konusunda otomatik olarak karar verir. İşlem idempotent'tir: Tekrarlanan aynı istekler, tek bir istekle aynı etkiye sahiptir.
Aşağıdaki istekte, API aracılığıyla müşteri bağlılığı ilişkilendirmelerinin nasıl yönetileceği gösterilmektedir:
POST https://merchantapi.googleapis.com/{api_version}/accounts/{account_id}/loyaltyCustomers:manage
Bu istekte aşağıdaki zorunlu yol parametreleri tanımlanır:
api_version: v1 gibi API sürümü.account_id: Merchant Center hesabı kimliği.
İstek metnine bir loyaltyCustomer nesnesi ekleyin.
{
"userIdentifier": {
"emailAddress": "string",
"address": {
"addressLines": ["string"],
"locality": "string",
"administrativeArea": "string",
"postalCode": "string",
"regionCode": "string"
},
"phoneNumber": "string"
},
"loyaltyTier": "LoyaltyTier",
"pointBalance": "integer"
}
loyaltyCustomer alanları
- userIdentifier: Müşteriyi eşleştirmek için kullanılan tanımlayıcılar grubu. userIdentifier içinde en az bir alan sağlanmalı ve geçerli olmalıdır.
- loyaltyTier: Müşteriyle ilişkilendirilecek bağlılık kademesi. Merchant Center kurulumundaki katman sırasıyla eşleşir.
Ayrıntılar için
loyaltyTiereşlemeyi anlama başlıklı makaleyi inceleyin. Mevcut bir ilişkilendirmeyi kaldırmak için NON_MEMBER değerini kullanın. - pointBalance: Müşterinin mevcut puan bakiyesi.
userIdentifier alanları
Aşağıdaki alanlardan en az biri sağlanmalıdır:
- emailAddress: Müşterinin e-posta adresi.
- address: Müşterinin fiziksel adresi. PostalCode gereklidir.
- phoneNumber: Müşterinin telefon numarası. E.164 biçimi önerilir.
loyaltyTier eşlemeyi anlama
API, özel adları kullanmaz. loyaltyTier enum değerleri (TIER1 ile TIER7 arası) semantik etiketlerdir. Merchant Center kullanıcı arayüzünüzde atadığınız özel adları (ör. "Altın Ödüller") veya özel etiketleri (ör. "gold_tier") kullanmazlar. Bunun yerine, Merchant Center'daki bağlılık programı ayarlarında katmanlarınızı tanımladığınız sırayla eşlenirler:
TIER1: Merchant Center bağlılık programı yapılandırmanızda listelenen ilk katmana karşılık gelir.TIER2: Merchant Center bağlılık programı yapılandırmanızda listelenen ikinci katmana karşılık gelir.TIER3-TIER7: Merchant Center bağlılık programı yapılandırmanızda listelenen üçüncü ila yedinci katmanlara karşılık gelir.
Örnek:
Merchant Center bağlılık programınızda katmanlar şu sırayla tanımlanmışsa:
- Katman adı: "Gümüş Statü", Katman etiketi: �"silver"
- Katman adı: "Altın Üye", Katman etiketi: "gold"
- Katman adı: "Platinum Elite", Katman etiketi: "platinum"
Ardından, accounts.loyaltyCustomers.manage
API çağrıları bölümünde:
- Bir müşteriyi "Gümüş Durumu"'na atamak için
loyaltyTier: TIER1kullanmanız gerekir. - Bir müşteriyi "Altın Üye" olarak atamak için
loyaltyTier: TIER2kullanmanız gerekir. - Bir müşteriyi "Platinum Elite"'e atamak için
loyaltyTier: TIER3kullanmanız gerekir.
LoyaltyTier enum değerleri
TIER1TIER2TIER3TIER4TIER5TIER6TIER7NON_MEMBER(Müşterinin bağlılık ilişkisinin kaldırıldığını belirtmek için kullanılır)
ManageLoyaltyCustomerMatch yanıt gövdesini anlama
ManageLoyaltyCustomerMatch yöntemi bir ManageLoyaltyCustomerMatchResponse nesnesi döndürür:
{
"loyaltyCustomer": {
// loyaltyCustomer object from the request
}
}
Olası yanıtlarla ilgili önemli noktalar:
Başarılı upsert (veriler depolandı): Bir müşterinin bağlılık programı katmanı ilişkilendirmesini başarıyla depolamak veya güncellemek için aşağıdaki koşulları karşılayın:
- bir Google kullanıcısını sağlanan
userIdentifierile eşleştirirseniz - İsteklerdeki
loyaltyTierdeğeriniNON_MEMBERdışında geçerli bir değere ayarladıysanız - Eşleşen kullanıcının, bağlılık programı verilerinin kullanımına izin vermiş olması
- bir Google kullanıcısını sağlanan
Yanıt, isteğinizdeki loyaltyCustomer nesnesini içerir. Bu, verilerin başarıyla işlendiğini ve depolandığını gösterir:
{
"loyaltyCustomer": {
"userIdentifier": {
"emailAddress": "customer@example.com"
},
"loyaltyTier": "TIER2",
"pointBalance": 1500
}
}
- Başarılı silme: Müşterinin bu satıcıyla mevcut tüm bağlılık ilişkilerini başarıyla kaldırmak için aşağıdaki koşulların karşılanması gerekir:
- sağlanan ile
userIdentifierbir Google kullanıcısını eşleştirirseniz - İstekteki
loyaltyTierdeğeriniNON_MEMBERolarak ayarladıysanız
- sağlanan ile
Yanıt boş bir JSON nesnesi olur:
{}
- Eşleşme yok / izin yok (sessiz başarı): Sağlanan
userIdentifier, bir Google Hesabı ile eşleşmiyorsa veya eşleşen kullanıcı, bağlılık programı verilerinin kullanımına izin vermediyse API, boş bir JSON nesnesiyle HTTP 200 OK durumunu döndürür:{}. Bu durum, hem ekleme/güncelleme hem de kaldırma denemelerinde görülür.
Örnekler
TIER1, satıcının tanımlanan ilk katmanına ("Temel") ve TIER2 ise ikinci katmanına ("Premium") karşılık gelir.
Bir müşteriyi TIER2'ye eklemek veya durumunu e-posta adresini kullanarak güncellemek için aşağıdaki isteği gönderin:
POST
"https://merchantapi.googleapis.com/v1/accounts/{account_id}/loyaltyCustomers:manage"
-d '{
"userIdentifier": {
"emailAddress": "customer@example.com"
},
"loyaltyTier": "TIER2",
"pointBalance": 1500
}'
Bir kullanıcı başarıyla eşleştirilip izin verdiğinde API aşağıdaki yanıtı döndürür:
{
"loyaltyCustomer": {
"userIdentifier": {
"emailAddress": "customer@example.com"
},
"loyaltyTier": "TIER2",
"pointBalance": 1500
}
}
Eşleşme olmadığında veya kullanıcı izin vermediğinde API aşağıdaki yanıtı döndürür:
{}
Bir müşterinin bağlılık programı üyeliğini telefon numarası kullanarak kaldırmak için aşağıdaki isteği gönderin:
POST
"https://merchantapi.googleapis.com/v1/accounts/{account_id}/loyaltyCustomers:manage" \
-d '{
"userIdentifier": {
"phoneNumber": "+18005550132"
},
"loyaltyTier": "NON_MEMBER"
}'
Kayıt olup olmadığına bakılmaksızın API aşağıdaki başarılı yanıtı döndürür:
{}
Birden fazla tanımlayıcı kullanarak müşteri eklemek veya güncellemek için aşağıdaki isteği gönderin:
POST
"https://merchantapi.googleapis.com/v1/accounts/{account_id}/loyaltyCustomers:manage" \
-d '{
"userIdentifier": {
"emailAddress": "user@example.com",
"address": {
"postalCode": "94043",
"regionCode": "US"
}
},
"loyaltyTier": "TIER1"
}'
Eşleşmeye ve izne bağlı olarak yanıt, ilk örneğe benzer.
Hata işleme
API, standart HTTP kodlarını kullanır. Sık karşılaşılan hata dizeleri şunlardır:
| HTTP kodu | Hata dizesi | Açıklama |
| 400 | INVALID_ARGUMENT | user_identifier veya loyalty_tier eksik ya da tanımlayıcı boş. |
| 401 | UNAUTHENTICATED | Geçersiz veya eksik kimlik bilgileri. |
| 403 | PERMISSION_DENIED | Kimliği doğrulanmış kullanıcının, belirtilen Merchant Center hesabına erişimi yok. |
| 404 | NOT_FOUND | Belirtilen bağlılık katmanı etiketi, yapılandırmanızda mevcut değil. |
| 412 | FAILED_PRECONDITION | Hesabınızda bağlılık programı yapılandırmadınız. |
| 429 | RESOURCE_EXHAUSTED | Kota sınırına ulaşıldı. |
Hata örnekleri
404 NOT_FOUND: için örnek
Bağlılık programı yapılandırılmamış bir hesap kimliğine yapılan tüm geçerli istekler.
API, aşağıdaki hata yanıtını döndürür:
{
"error": {
"code": 404,
"message": "The loyalty program is not found for account: {account_id}.",
"status": "NOT_FOUND",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "notFound",
"domain": "merchantapi.googleapis.com",
"metadata": {
"ACCOUNT_ID": "{account_id}",
"REASON": "NOT_FOUND_LOYALTY_PROGRAM"
}
}
]
}
}
Nedeni: Yoldaki satıcı hesabında etkin bir bağlılık programı yok.
400 INVALID_ARGUMENT örnekleri:
İstek, loyaltyTier alanı için geçersiz bir değer içeriyorsa hata oluşur:
{
"loyaltyCustomer": {
"userIdentifier": {
"emailAddress": "customer@example.com"
},
"loyaltyTier": "TIER11",
"pointBalance": 100
}
}
API, aşağıdaki hata yanıtını döndürür:
{
"error": {
"code": 400,
"message": "Invalid value at 'loyalty_customer.loyalty_tier' (type.googleapis.com/google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier), \"TIER11\"",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "loyalty_customer.loyalty_tier",
"description": "Invalid value at 'loyalty_customer.loyalty_tier' (type.googleapis.com/google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier), \"TIER11\""
}
]
}
]
}
}
Neden: TIER11, loyaltyTier için geçerli bir enum değeri değil. Aynı hata, yalnızca bir katman varken TIER2'yi belirtmeye çalıştığınızda da oluşabilir.
İstek gövdesinde zorunlu loyaltyTier alanı eksikse hata oluşur:
{
"loyaltyCustomer": {
"userIdentifier": {
"emailAddress": "customer@example.com"
},
"pointBalance": 100
}
}
API, aşağıdaki hata yanıtını döndürür:
{
"error": {
"code": 400,
"message": "[loyalty_customer.loyalty_tier] Required field not provided: loyalty_customer.loyalty_tier",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "required",
"domain": "merchantapi.googleapis.com",
"metadata": {
"FIELD_LOCATION": "loyalty_customer.loyalty_tier",
"REASON": "MISSING_REQUIRED_FIELD"
}
}
]
}
}
Neden: loyaltyTier alanı zorunludur.
Bir adres tanımlayıcısı eksikse (ör. posta kodu alanı eksikse) hata oluşur:
{
"loyaltyCustomer": {
"userIdentifier": {
"address": {
"locality": "Sunnyvale",
"administrativeArea": "CA",
"regionCode": "US"
}
},
"loyaltyTier": "TIER1",
"pointBalance": 100
}
}
API, aşağıdaki hata yanıtını döndürür:
{
"error": {
"code": 400,
"message": "[loyalty_customer.user_identifier] The format of loyalty_customer.user_identifier does not match the expected format ... Value: at least one valid user identifier should be provided.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "invalid",
"domain": "merchantapi.googleapis.com",
"metadata": {
"FIELD_NAME": "loyalty_customer.user_identifier",
"REASON": "INVALID_VALUE"
}
}
]
}
}
Nedeni: Bir adres sağlanıyor ancak gerekli postalCode
alanı eksik olduğu için geçerli bir tanımlayıcı olarak kabul edilmiyor.
Yapılandırılmış program için sınırların dışında bir katman dizini isterseniz hata oluşur:
Senaryo: Satıcının Merchant Center'da yalnızca bir katmanı yapılandırılmış.
{
"loyaltyCustomer": {
"userIdentifier": {
"emailAddress": "customer@example.com"
},
"loyaltyTier": "TIER2",
"pointBalance": 100
}
}
API, aşağıdaki hata yanıtını döndürür:
{
"error": {
"code": 400,
"message": "[loyalty_customer.loyalty_tier] The format of loyalty_customer.loyalty_tier does not match the expected format `valid LoyaltyTier`. Value: TIER2.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "invalid",
"domain": "merchantapi.googleapis.com",
"metadata": {
"FIELD_NAME": "loyalty_customer.loyalty_tier",
"PATTERN": "valid LoyaltyTier",
"FIELD_VALUE": "TIER2",
"REASON": "INVALID_VALUE"
}
}
]
}
}
Neden: TIER2 isteniyor ancak hesaba bağlı bağlılık programında ikinci bir kademe tanımlanmamış.
İstek hatalı biçimlendirilmiş bir emailAddress içeriyorsa hata oluşur:
{
"loyaltyCustomer": {
"userIdentifier": {
"emailAddress": "customer@google"
},
"loyaltyTier": "TIER1",
"pointBalance": 100
}
}
API, aşağıdaki hata yanıtını döndürür:
{
"error": {
"code": 400,
"message": "[loyalty_customer.user_identifier] The format of loyalty_customer.user_identifier does not match the expected format `email_address: \t \"customer@google\"\n`. Value: at least one valid user identifier should be provided.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "invalid",
"domain": "merchantapi.googleapis.com",
"metadata": {
"FIELD_NAME": "loyalty_customer.user_identifier",
"REASON": "INVALID_VALUE"
}
}
]
}
}
Nedeni: E-posta adresi biçimi geçersiz.
userIdentifier nesnesi boşsa hata oluşur:
{
"loyaltyCustomer": {
"userIdentifier": {},
"loyaltyTier": "TIER1",
"pointBalance": 100
}
}
API, aşağıdaki hata yanıtını döndürür:
{
"error": {
"code": 400,
"message": "[loyalty_customer.user_identifier] Required field not provided: loyalty_customer.user_identifier",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "required",
"domain": "merchantapi.googleapis.com",
"metadata": {
"FIELD_LOCATION": "loyalty_customer.user_identifier",
"REASON": "MISSING_REQUIRED_FIELD"
}
}
]
}
}
Nedeni: userIdentifier nesnesi mevcut ancak gerçek tanımlayıcı alanlar içermiyor.
Tanımlayıcı doğrulama hakkında not:
- API, tanımlayıcılar üzerinde temel biçim kontrolleri gerçekleştirir (ör. e-posta yapısı, adreslerde
postalCodekarakterinin bulunması). - Ancak ilk kontrolleri geçen bazı tanımlayıcılar herhangi bir Google kullanıcı hesabıyla eşleşmeyebilir veya arka uç eşleştirme sistemi tarafından tanınan bir biçimde olmayabilir. Bu gibi durumlarda, HTTP durumu
200 OKolan sessiz başarılı boş yanıt{}alırsınız.
En iyi uygulamalar
Entegrasyonunuzu optimize etmek için aşağıdaki en iyi uygulamalardan yararlanın.
Büyük ölçekli entegrasyon için: API, istek başına çalıştığından büyük veri kümeleri için gerekli işleme hızını elde etmek üzere istemci tarafında paralellik gerekir. Entegrasyonunuzu, eşzamanlı olarak gönderilen birden fazla isteği yönetecek şekilde tasarlamanız gerekir. Paralelleştirme yoluyla daha yüksek hacimleri işlemek için uygulamanızı nasıl yapılandıracağınızla ilgili rehberlik için Birden fazla istek gönderme hakkındaki kılavuzumuza bakın.
Kota yönetimi: Varsayılan kota 1.000.000 istek/gün ve 10.000 istek/dakika'dır. Kotalarınızı nasıl izleyip kontrol edebileceğinizi öğrenmek için Kotalar ve sınırlar bölümüne bakın.
E-posta adresine öncelik verin: Mümkün olduğunda müşterinin
emailAddressadresiniuserIdentifieriçine ekleyin. E-posta adresleri, kullanıcıları Google Hesaplarıyla eşleştirmek için genellikle en doğru ve güvenilir tanımlayıcıdır.Boş yanıtları işleme: Uygulamanızı, boş
{}yanıtları başarı olarak doğru şekilde yorumlayacak şekilde tasarlayın. Bunun, gizlilik nedenleriyle (eşleşme yok veya izin yok) verilerin depolanmadığı anlamına geldiğini unutmayın. İsteği yeniden göndermeyin.Katman sırasını doğrulayın: API çağrılarınızda doğru
TIER1ileTIER7enum değerlerini kullandığınızdan emin olmak için Merchant Center kullanıcı arayüzünde her zaman bağlılık programı katmanlarınızın sırasını onaylayın. Bu eşleme, adlarına değil, kullanıcı arayüzünde tanımlanan sıraya göre yapılır.Hataları izleme: API yanıtlarını kaydedin ve izleyin. Özellikle
404hataları olmak üzere, entegrasyon sorunlarını yakalamak için4xxhatalarına dikkat edin. Bu hatalar, katman anlayışında bir uyuşmazlık olduğunu gösterebilir.