Uygulama

POST şeması

Webhook'a gönderilen POST isteği, aşağıdaki şemaya sahip JSON biçiminde olur:

Webhook Proto yükü

// Represent user lead data for single column
message UserLeadColumnData {
  // Human-readable text of the field type (e.g.: Full Name,  What is your
  // preferred dealership?). This field might not always be populated.
  optional string column_name = 1;

  // Column value based on column type
  oneof column_value {
    string string_value = 2;
  }
  // Column ID. Populated for all types of fields. (e.g.: FULL_NAME)
  optional string column_id = 3;
}

// Message to construct webhook JSON payload
message WebhookLead {
  // Unique ID to represent lead
  optional string lead_id = 1;
  // User inputted data per column
  repeated UserLeadColumnData user_column_data = 2;
  // API version
  optional string api_version = 3;
  // Form ID to which lead belonged to.
  optional int64 form_id = 4;
  // Campaign ID that the lead form is associated with
  optional int64 campaign_id = 5;
  // Key to be used by advertiser to verify the request
  // is from Google.
  optional string google_key = 6;
  // Denotes if the lead is a test lead.
  optional bool is_test = 7;
  // Click ID for the lead submission.
  optional string gcl_id = 8;
  // Adgroup ID which generated the lead.
  optional int64 adgroup_id = 9;
  // Creative ID which generated the lead.
  optional int64 creative_id = 10;
  // Asset group ID represents the container for holding assets, associated
  // URLs, hints and criteria that will be used to select assets and for
  // optimization. This field is only populated for Performance Max campaigns.
  int64 asset_group_id = 11;
  // Lead stage at the time of delivery.
  string lead_stage = 12 [(datapol.semantic_type) = ST_NOT_REQUIRED];
  // Lead submit time in ISO-8601 format. Ex- 2024-09-26T12:30:00Z
  string lead_submit_time = 13 [(datapol.semantic_type) = ST_NOT_REQUIRED];
}

Alan açıklaması

Alan Açıklama
lead_id Belirli bir potansiyel müşteriyi tanımlayan benzersiz dize.

Öneri işleme: Bu işlevi, alınan potansiyel müşterilerin yinelenen kayıtlarını kaldırmak için kullanın. Bu değer tüm formlarda benzersiz olacaktır. Belirli bir potansiyel müşteriyle ilgili sorunları bildirirken bu kimlik gereklidir.

api_version Bu potansiyel müşteri şemasının ait olduğu API sürümü. Bu, yeni bir şemaya geçiş yaparken kullanılır ve şimdilik yoksayılabilir.
form_id Google Ads'de yapılandırılan her form için benzersiz kimlik. Mevcut ürün, formun kampanya düzeyinde eklenmesine (reklam grubu veya reklam düzeyinde eklenmesine kıyasla) olanak tanır.

Etkileri: Potansiyel müşteriler yalnızca form_id düzeyinde (yani kampanya düzeyinde) dilimlenebilir.

İstemcilerin işlemek için 8 baytlık tam sayı kullanması gerekir.

campaign_id Ekli potansiyel müşteri formuyla ilişkili Google Ads kampanya kimliği veya satır öğesi kimliği (Display & Video 360).

İstemcilerin işlemek için 8 baytlık bir tam sayı kullanması gerekir.

adgroup_id Google Ads reklam grubu kimliği, kampanyadaki belirli reklam grubunu ayırt etmek için kullanılır. (Yalnızca video ve Discovery reklamlarından gelen potansiyel müşteriler için kullanılabilir)

İstemcilerin işlemek için 8 baytlık bir tam sayı kullanması gerekir.

creative_id Google Ads reklam öğesi kimliği, reklam grubundaki belirli reklam öğesini ayırt etmek için kullanılır. (Yalnızca video ve Discovery reklamlarından gelen potansiyel müşteriler için kullanılabilir)

İstemcilerin işlemek için 8 baytlık bir tam sayı kullanması gerekir.

gcl_id Bir reklamın her tıklamasını izlemek için kullanılan benzersiz bir parametre olan Google tıklama kimliği.
google_key Reklamveren tarafından her formla birlikte yapılandırılan bir anahtar.

Önerilen işlem: Web kancası üzerinden alınan bir potansiyel müşteriyi işlemeden önce, potansiyel müşterinin geçerli olduğundan daha fazla emin olmak için google_key değerinin Google Ads'de yapılandırılan değerle aynı olduğunu doğrulayın. Bu anahtarı gizli tutun ve geniş çapta sızdırıldığına inanmak için bir neden varsa Google Ads'de güncelleyin.

is_test Bu alanın semantiği "isteğe bağlı"dır. Değer doğruysa bu potansiyel müşteriyi test potansiyel müşterisi olarak değerlendirin. Değer yanlışsa veya alan mevcut değilse bu potansiyel müşteriyi geçerli üretim potansiyel müşterisi olarak değerlendirin.
user_column_data Kullanıcı tarafından gönderilen verileri ileten, tekrarlanan bir anahtar/değer demeti.
  • user_column_data.column_id: Kullanıcı tarafından gönderilen veri türü.
  • User_column_data.column_value: Her veri türü için, veri türüne bağlı olarak bir değer türü doldurulur. Mevcut tüm veri türlerimiz user_column_data.string_value değerine sahip.
  • user_column_data.column_name: Kullanıcı tarafından gönderilen veri türünün okunabilir metni. Bu alan her zaman doldurulmayabilir. Bunun yerine column_id alanını kullanın.
user_column_data.column_id User_column_data.string_value içeriği user_column_data.column_name (Desteği sonlandırıldı)
"FULL_NAME" Kullanıcının tam adı. "Tam Ad"
"FIRST_NAME" Kullanıcının adı. "Ad"
"LAST_NAME" Kullanıcının soyadı. "Soyadı"
"EMAIL" Kullanıcı e-posta adresi. "Kullanıcı E-postası"
"PHONE_NUMBER" E.164 biçiminde kullanıcı telefonu, ör. "+11234567890". "User Phone" (Kullanıcı Telefonu)
"PHONE_NUMBER_VERIFIED" Kullanıcının telefon numarasının doğrulanıp doğrulanmadığı. "Telefon Numarası Doğrulandı"
"POSTAL_CODE" Kullanıcının posta kodu. "Posta Kodu"
"COMPANY_NAME" Kullanıcının şirket adı. "Şirket Adı"
"JOB_TITLE" Kullanıcının iş unvanı. "İş Unvanı"
"WORK_EMAIL" Kullanıcının iş e-posta adresi. "İş e-postası"
"WORK_PHONE" Kullanıcının iş telefonu. "İş telefonu"
"STREET_ADDRESS" Kullanıcının açık adresi. "Sokak Adresi"
"CITY" Kullanıcının şehri. "Şehir"
"REGION" Kullanıcının bölgesi. "Bölge"
"COUNTRY" Kullanıcının ülkesi. "Ülke"
"VEHICLE_MODEL" Hangi modelle ilgileniyorsunuz? Yok
"VEHICLE_TYPE" Hangi araç türüyle ilgileniyorsunuz? Yok
"PREFERRED_DEALERSHIP" Tercih ettiğiniz bayiliği seçin Yok
"VEHICLE_PURCHASE_TIMELINE" Ne zaman araç satın almayı düşünüyorsunuz? Yok
"VEHICLE_CONDITION" Hangi durumdaki araçlarla ilgileniyorsunuz? Yok
"VEHICLE_OWNERSHIP" Aracınız var mı? "Yok"
"VEHICLE_PAYMENT_TYPE" İlgilendiğiniz araç sahipliği seçeneği hangisi? Yok
"COMPANY_SIZE" Şirketiniz hangi büyüklükte? Yok
"ANNUAL_SALES" Yıllık satış hacminiz ne kadar? Yok
"YEARS_IN_BUSINESS" Kaç yıldır sektörde faaliyet gösteriyorsunuz? Yok
"JOB_DEPARTMENT" Hangi departmanda çalışıyorsunuz? Yok
"JOB_ROLE" İşinizdeki rolünüz ne? Yok
"EDUCATION_PROGRAM" Hangi programla ilgileniyorsunuz? Yok
"EDUCATION_COURSE" Hangi kursla ilgileniyorsunuz? Yok
"PRODUCT" Hangi ürünle ilgileniyorsunuz? Yok
"SERVICE" Hangi hizmetle ilgileniyorsunuz? Yok
"OFFER" Hangi teklifle ilgileniyorsunuz? Yok
"CATEGORY" Hangi kategoriyle ilgileniyorsunuz? Yok
"PREFERRED_CONTACT_METHOD" Tercih ettiğiniz iletişim yöntemini seçin Yok
"PREFERRED_LOCATION" Tercih ettiğiniz konumu seçin Yok
"PREFERRED_CONTACT_TIME" Sizinle iletişime geçmek için en uygun zaman hangisi? Yok
"PURCHASE_TIMELINE" Ne zaman satın alma işlemi gerçekleştirmek istiyorsunuz? Yok
"YEARS_OF_EXPERIENCE" Kaç yıllık iş deneyiminiz var? Yok
"JOB_INDUSTRY" Hangi sektörde çalışıyorsunuz? Yok
"LEVEL_OF_EDUCATION" En son hangi okuldan mezun oldunuz? Yok
"PROPERTY_TYPE" Ne tür bir mülk arıyorsunuz? Yok
"REALTOR_HELP_GOAL" Hangi konuda bir emlakçıdan yardım almak istiyorsunuz? Yok
"PROPERTY_COMMUNITY" Hangi toplulukla ilgileniyorsunuz? Yok
"PRICE_RANGE" Hangi fiyat aralığını tercih ediyorsunuz? Yok
"NUMBER_OF_BEDROOMS" Kaç yatak odalı bir ev arıyorsunuz? Yok
"FURNISHED_PROPERTY" Eşyalı mülk mü arıyorsunuz? Yok
"PETS_ALLOWED_PROPERTY" Evcil hayvanlara izin verilen mülkler mi arıyorsunuz? Yok
"NEXT_PLANNED_PURCHASE" Satın almayı planladığınız bir sonraki ürün nedir? Yok
"EVENT_SIGNUP_INTEREST" Bir etkinliğe kaydolmak istiyor musunuz? Yok
"PREFERRED_SHOPPING_PLACES" Nerede alışveriş yapmakla ilgileniyorsunuz? Yok
"FAVORITE_BRAND" En sevdiğiniz marka hangisi? Yok
"TRANSPORTATION_COMMERCIAL_LICENSE_TYPE" Geçerli ticari ehliyetiniz hangi türde? Yok
"EVENT_BOOKING_INTEREST" Etkinlik için rezervasyon yapmak mı istiyorsunuz? Yok
"DESTINATION_COUNTRY" Hangi ülkeye gidiyorsunuz? Yok
"DESTINATION_CITY" Hangi şehre gidiyorsunuz? Yok
"DEPARTURE_COUNTRY" Hangi ülkeden yola çıkıyorsunuz? Yok
"DEPARTURE_CITY" Hangi şehirden yola çıkıyorsunuz? Yok
"DEPARTURE_DATE" Gidiş tarihiniz nedir? Yok
"RETURN_DATE" Dönüş tarihiniz nedir? Yok
"NUMBER_OF_TRAVELERS" Kaç kişiyle seyahat ediyorsunuz? Yok
"TRAVEL_BUDGET" Seyahat bütçeniz ne kadar? Yok
"TRAVEL_ACCOMMODATION" Seyahat sırasında nerede konaklamak istiyorsunuz? Yok
asset_group_id Bu alan yalnızca Maksimum Performans kampanyaları için doldurulur. Bu, potansiyel müşteri formunu içeren kapsayıcı kimliğini belirtir.

İstemcilerin işlemek için 8 baytlık bir tam sayı kullanması gerekir.

lead_stage Bu, potansiyel müşteri teslimi sırasında potansiyel müşterinin bulunduğu aşamayı gösterir. Bu alan, potansiyel müşterinin dönüşüm hunisi aşamasını / dönüşüm durumunu izlemek için yararlıdır.
lead_submit_time Bu, kullanıcının formu gönderdiği zaman damgasını gösterir. ISO-8601 biçiminde gösterilir. Ör. 2024-09-26T12:30:00Z

Tanınmayan alanlar ve ileriye dönük uyumluluk

Webhook entegrasyonunuzun sağlam kalmasını ve gelecekteki geliştirmelere uyum sağlayabilmesini sağlamak için JSON ayrıştırıcınızı, sisteminizin açıkça kullanmadığı veya tanımadığı webhook yükündeki tüm alanları sorunsuz bir şekilde yoksayacak şekilde tasarlamak standart bir en iyi uygulamadır.

Önemli Öneri: JSON ayrıştırma mantığınızı yalnızca uygulamanız için özellikle gerekli olan alanları işleyecek şekilde yapılandırın. Sabit bir alan grubu bekleyen veya yeni, beklenmedik alanlar yükte mevcutsa başarısız olacak kod yazmayın.

Bu neden önemli?

  • İleriye Dönük Uyumluluk: Google, daha zengin veriler veya yeni özellikler sağlamak için gelecekteki güncellemelerde webhook yüküne yeni ve isteğe bağlı alanlar ekleyebilir. Ayrıştırıcınız çok katıysa (ör. bilinmeyen özelliklerde başarısız olursa) Google bu tür değişiklikleri kullanıma sunduğunda entegrasyonunuz bozulabilir.
  • Basitleştirilmiş Bakım: Yalnızca aktif olarak kullandığınız veri noktalarına odaklanarak entegrasyon kodunuzun daha basit ve bakımı daha kolay olmasını sağlayabilirsiniz.

En modern JSON ayrıştırma kitaplıkları, bilinmeyen özellikleri varsayılan olarak yoksayma seçenekleri sunar veya bu şekilde yapılandırılabilir.

Potansiyel müşteri işleme

Potansiyel müşteri işleyicileri aşağıdaki HTTP kodlarıyla yanıt vermelidir:

HTTP Yanıtı Yanıt gövdesi (JSON) Yeniden denenebilir hata mı?
200 {} Yok
4XX {"message: Free form error text, describing what was wrong with request"} Hayır
5XX {"message: Intermittent retraible error optional message"} Evet

Kopyalar

Tek bir potansiyel müşterinin tam olarak bir kez teslim edileceği garanti edilmez. Bu nedenle, potansiyel müşteri işleme webhook'u, yinelenenleri düzgün bir şekilde işlemelidir.