लागू करने का तरीका

POST स्कीमा

वेबहुक को भेजा गया POST अनुरोध, JSON फ़ॉर्मैट में होगा. इसका स्कीमा यह होगा:

वेबबुक प्रोटो पेलोड

// 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];
}

फ़ील्ड की जानकारी

फ़ील्ड ब्यौरा
lead_id यह यूनीक स्ट्रिंग, किसी लीड की पहचान करती है.

सुझाव को मैनेज करना: इसका इस्तेमाल, मिली हुई डुप्लीकेट लीड को हटाने के लिए करें. यह आईडी, सभी फ़ॉर्म के लिए यूनीक होगा. किसी लीड से जुड़ी समस्याओं की शिकायत करते समय, इस आईडी की ज़रूरत होगी.

api_version एपीआई का वह वर्शन जिससे यह लीड स्कीमा जुड़ा है. इसका इस्तेमाल, नए स्कीमा पर माइग्रेट करते समय किया जाएगा. फ़िलहाल, इसे अनदेखा किया जा सकता है.
form_id Google Ads में कॉन्फ़िगर किए गए हर फ़ॉर्म के लिए यूनीक आईडी. मौजूदा प्रॉडक्ट में, कैंपेन लेवल पर फ़ॉर्म अटैच करने की सुविधा मिलती है. हालांकि, विज्ञापन ग्रुप या विज्ञापन लेवल पर फ़ॉर्म अटैच करने की सुविधा नहीं मिलती.

असर: लीड को सिर्फ़ form_id लेवल पर बांटा जा सकता है. इसका मतलब है कि इन्हें सिर्फ़ कैंपेन लेवल पर बांटा जा सकता है.

प्रोसेस करने के लिए, क्लाइंट को 8 बाइट पूर्णांक का इस्तेमाल करना होगा.

campaign_id अटैच किए गए लीड फ़ॉर्म का Google Ads कैंपेन आईडी या लाइन आइटम आईडी (Display & Video 360).

क्लाइंट को प्रोसेस करने के लिए, 8-बाइट पूर्णांक का इस्तेमाल करना होगा.

adgroup_id Google Ads विज्ञापन ग्रुप आईडी का इस्तेमाल, कैंपेन में मौजूद किसी विज्ञापन ग्रुप की पहचान करने के लिए किया जाता है. (सिर्फ़ वीडियो और डिस्कवरी विज्ञापनों से मिली लीड के लिए उपलब्ध है)

क्लाइंट को प्रोसेस करने के लिए, 8-बाइट पूर्णांक का इस्तेमाल करना होगा.

creative_id Google Ads क्रिएटिव आईडी का इस्तेमाल, विज्ञापन ग्रुप में मौजूद किसी क्रिएटिव की पहचान करने के लिए किया जाता है. (सिर्फ़ वीडियो और डिस्कवरी विज्ञापनों से मिली लीड के लिए उपलब्ध है)

क्लाइंट को प्रोसेस करने के लिए, 8-बाइट पूर्णांक का इस्तेमाल करना होगा.

gcl_id Google क्लिक आईडी, एक यूनीक पैरामीटर होता है. इसका इस्तेमाल, विज्ञापन पर होने वाले हर क्लिक को ट्रैक करने के लिए किया जाता है.
google_key विज्ञापन देने वाला व्यक्ति या कंपनी, हर फ़ॉर्म के साथ कॉन्फ़िगर की गई कुंजी.

सुझाव: वेबुक के ज़रिए मिली लीड को प्रोसेस करने से पहले, google_key की पुष्टि करना, Google Ads में कॉन्फ़िगर करने जैसा ही है. इससे यह पक्का किया जा सकता है कि लीड मान्य है. इस कुंजी को गोपनीय रखें. अगर आपको लगता है कि यह कुंजी सार्वजनिक हो गई है, तो इसे Google Ads में अपडेट करें.

is_test इस फ़ील्ड के लिए "ज़रूरी नहीं है" सिमैंटिक का इस्तेमाल किया जाता है. अगर वैल्यू सही है, तो इस लीड को टेस्ट लीड के तौर पर इस्तेमाल करें. अगर वैल्यू 'गलत' है या फ़ील्ड मौजूद नहीं है, तो इस लीड को मान्य प्रोडक्शन लीड के तौर पर माना जाएगा.
user_column_data यह एक ऐसा की-वैल्यू टपल होता है जो उपयोगकर्ता के सबमिट किए गए डेटा को ट्रांसमिट करता है.
  • user_column_data.column_id: उपयोगकर्ता ने किस तरह का डेटा सबमिट किया है.
  • User_column_data.column_value: हर डेटा टाइप के लिए, डेटा टाइप के हिसाब से वैल्यू टाइप पॉप्युलेट किया जाएगा. हमारे सभी मौजूदा डेटा टाइप की वैल्यू user_column_data.string_value है.
  • user_column_data.column_name: उपयोगकर्ता ने जिस डेटा टाइप को सबमिट किया है उसका ऐसा टेक्स्ट जिसे आसानी से पढ़ा जा सके. ऐसा हो सकता है कि यह फ़ील्ड हमेशा पॉप्युलेट न हो. इसलिए, इसके बजाय column_id का इस्तेमाल करें.
user_column_data.column_id User_column_data.string_value कॉन्टेंट user_column_data.column_name (अब सेवा में नहीं है)
"FULL_NAME" उपयोगकर्ता का पूरा नाम. "पूरा नाम"
"FIRST_NAME" उपयोगकर्ता का नाम. "पहला नाम"
"LAST_NAME" उपयोगकर्ता का उपनाम. "उपनाम"
"EMAIL" उपयोगकर्ता का ईमेल. "उपयोगकर्ता का ईमेल पता"
"PHONE_NUMBER" उपयोगकर्ता का फ़ोन नंबर E.164 फ़ॉर्मैट में होना चाहिए. उदाहरण के लिए, "+11234567890". "उपयोगकर्ता का फ़ोन"
"PHONE_NUMBER_VERIFIED" इससे पता चलता है कि उपयोगकर्ता के फ़ोन नंबर की पुष्टि हुई है या नहीं. "फ़ोन नंबर की पुष्टि हो गई है"
"POSTAL_CODE" उपयोगकर्ता का पिन कोड. "पिन कोड"
"COMPANY_NAME" उपयोगकर्ता की कंपनी का नाम. "कंपनी का नाम"
"JOB_TITLE" उपयोगकर्ता का जॉब टाइटल. "जॉब का टाइटल"
"WORK_EMAIL" उपयोगकर्ता का ऑफ़िस वाला ईमेल पता. "काम से जुड़ा ईमेल पता"
"WORK_PHONE" उपयोगकर्ता के ऑफ़िस का फ़ोन नंबर. "कार्यालय का फ़ोन"
"STREET_ADDRESS" उपयोगकर्ता के मोहल्ले का पता. "सड़क का पता"
"CITY" उपयोगकर्ता का शहर. "शहर"
"REGION" उपयोगकर्ता का इलाका. "रीजन"
"COUNTRY" उपयोगकर्ता का देश. "देश"
"VEHICLE_MODEL" आपको किस तरह का मॉडल चाहिए? लागू नहीं
"VEHICLE_TYPE" आपकी दिलचस्पी किस तरह की गाड़ी में है? लागू नहीं
"PREFERRED_DEALERSHIP" अपनी पसंदीदा डीलरशिप चुनें लागू नहीं
"VEHICLE_PURCHASE_TIMELINE" आपको गाड़ी कब खरीदनी है? लागू नहीं
"VEHICLE_CONDITION" आपको पुरानी गाड़ी चाहिए या नई? लागू नहीं
"VEHICLE_OWNERSHIP" क्या आपके पास कोई गाड़ी है? "N/A"
"VEHICLE_PAYMENT_TYPE" आपको गाड़ी खरीदनी है या लीज़ पर लेनी है? लागू नहीं
"COMPANY_SIZE" आपकी कंपनी कितनी बड़ी है? लागू नहीं
"ANNUAL_SALES" आपकी सालाना बिक्री कितनी है? लागू नहीं
"YEARS_IN_BUSINESS" आप कारोबार में कितने साल से हैं? लागू नहीं
"JOB_DEPARTMENT" आप किस विभाग में नौकरी करते हैं? लागू नहीं
"JOB_ROLE" आप किस पद पर हैं? लागू नहीं
"EDUCATION_PROGRAM" आपकी दिलचस्पी किस प्रोग्राम में है? लागू नहीं
"EDUCATION_COURSE" आपकी दिलचस्पी किस कोर्स में है? लागू नहीं
"PRODUCT" आपकी किस प्रॉडक्ट में दिलचस्पी है? लागू नहीं
"SERVICE" आपकी दिलचस्पी किस सेवा में है? लागू नहीं
"OFFER" आपकी दिलचस्पी किस ऑफ़र में है? लागू नहीं
"CATEGORY" आपकी दिलचस्पी किस कैटगरी में है? लागू नहीं
"PREFERRED_CONTACT_METHOD" संपर्क करने का अपना पसंदीदा तरीका चुनें लागू नहीं
"PREFERRED_LOCATION" अपनी पसंदीदा जगह चुनें लागू नहीं
"PREFERRED_CONTACT_TIME" आपसे संपर्क करने का सबसे सही समय क्या है? लागू नहीं
"PURCHASE_TIMELINE" आपको खरीदारी कब करनी है? लागू नहीं
"YEARS_OF_EXPERIENCE" आपको कितने साल काम करने का अनुभव है? लागू नहीं
"JOB_INDUSTRY" आपकी नौकरी किस इंडस्ट्री में है? लागू नहीं
"LEVEL_OF_EDUCATION" आपने कहां तक पढ़ाई की है? लागू नहीं
"PROPERTY_TYPE" आपको किस तरह की प्रॉपर्टी चाहिए? लागू नहीं
"REALTOR_HELP_GOAL" आपको रीयल एस्टेट एजेंट की कैसी मदद चाहिए? लागू नहीं
"PROPERTY_COMMUNITY" आपकी दिलचस्पी किस समुदाय में है? लागू नहीं
"PRICE_RANGE" आपको किस कीमत सीमा के बीच प्रॉपर्टी चाहिए? लागू नहीं
"NUMBER_OF_BEDROOMS" आपको कितने बेडरूम चाहिए? लागू नहीं
"FURNISHED_PROPERTY" क्या आपको ऐसी प्रॉपर्टी चाहिए जिसमें सभी तरह की सुविधाएं मौजूद हों? लागू नहीं
"PETS_ALLOWED_PROPERTY" क्या आपको ऐसी प्रॉपर्टी चाहिए जहां पालतू जानवरों को रखने की अनुमति हो? लागू नहीं
"NEXT_PLANNED_PURCHASE" आपको अगला प्रॉडक्ट कौनसा खरीदना है? लागू नहीं
"EVENT_SIGNUP_INTEREST" क्या आपको किसी इवेंट के लिए साइन अप करना है? लागू नहीं
"PREFERRED_SHOPPING_PLACES" आपको कहां शॉपिंग करना पसंद है? लागू नहीं
"FAVORITE_BRAND" आपका पसंदीदा ब्रैंड कौनसा है? लागू नहीं
"TRANSPORTATION_COMMERCIAL_LICENSE_TYPE" आपके पास किस तरह का मान्य कमर्शियल लाइसेंस है? लागू नहीं
"EVENT_BOOKING_INTEREST" क्या आपको कोई इवेंट बुक करना है? लागू नहीं
"DESTINATION_COUNTRY" आपको किस देश में जाना है? लागू नहीं
"DESTINATION_CITY" आपको किस शहर में जाना है? लागू नहीं
"DEPARTURE_COUNTRY" आपको किस देश से जाना है? लागू नहीं
"DEPARTURE_CITY" आपको किस शहर से जाना है? लागू नहीं
"DEPARTURE_DATE" आपके जाने की तारीख क्या है? लागू नहीं
"RETURN_DATE" आपकी वापसी की तारीख क्या है? लागू नहीं
"NUMBER_OF_TRAVELERS" आपके साथ कितने लोग यात्रा कर रहे हैं? लागू नहीं
"TRAVEL_BUDGET" आपकी यात्रा का बजट क्या है? लागू नहीं
"TRAVEL_ACCOMMODATION" आपको यात्रा के दौरान कहां रुकना है? लागू नहीं
asset_group_id इस फ़ील्ड में सिर्फ़ परफ़ॉर्मेंस मैक्स कैंपेन के लिए डेटा भरा जाता है. इससे उस कंटेनर आईडी का पता चलता है जिसमें लीड फ़ॉर्म मौजूद है.

क्लाइंट को प्रोसेस करने के लिए, 8-बाइट पूर्णांक का इस्तेमाल करना होगा.

lead_stage इससे लीड डिलीवरी के समय लीड स्टेज के बारे में पता चलता है. इस फ़ील्ड से, लीड के फ़नल स्टेज / कन्वर्ज़न स्टेटस को ट्रैक करने में मदद मिलती है.
lead_submit_time इससे पता चलता है कि उपयोगकर्ता ने फ़ॉर्म कब सबमिट किया. इसे ISO-8601 फ़ॉर्मैट में दिखाया जाता है. उदाहरण के लिए- 26-09-2024T12:30:00Z

ऐसे फ़ील्ड जिनकी पहचान नहीं हो पाई है और आगे के वर्शन के साथ काम करने की सुविधा

यह पक्का करने के लिए कि आपका वेबहुक इंटिग्रेशन मज़बूत बना रहे और आने वाले समय में होने वाले सुधारों के हिसाब से काम कर सके, JSON पार्सर को इस तरह से डिज़ाइन करना सबसे सही तरीका है कि वह वेबहुक पेलोड में मौजूद उन फ़ील्ड को अनदेखा कर दे जिनका इस्तेमाल आपका सिस्टम नहीं करता या जिन्हें वह पहचानता नहीं है.

अहम सुझाव: JSON पार्स करने के लॉजिक को इस तरह कॉन्फ़िगर करें कि वह सिर्फ़ उन फ़ील्ड को प्रोसेस करे जिनकी आपको अपने ऐप्लिकेशन के लिए ज़रूरत है. ऐसा कोड न लिखें जिसमें फ़ील्ड का एक तय सेट इस्तेमाल किया जाता हो या जिसमें पेलोड में नए और अनचाहे फ़ील्ड मौजूद होने पर गड़बड़ी होती हो.

यह क्यों ज़रूरी है:

  • फ़ॉरवर्ड कंपैटिबिलिटी: Google, आने वाले समय में अपडेट के दौरान वेबुक पेलोड में नए, वैकल्पिक फ़ील्ड जोड़ सकता है. इससे बेहतर डेटा या नई सुविधाएं मिल सकेंगी. अगर आपका पार्सर बहुत ज़्यादा पाबंदियां लगाता है (जैसे, अज्ञात प्रॉपर्टी पर काम नहीं करता), तो Google की ओर से किए गए ऐसे बदलावों को लागू करने पर आपका इंटिग्रेशन काम नहीं करेगा.
  • आसान रखरखाव: सिर्फ़ उन डेटा पॉइंट पर फ़ोकस करने से जिन्हें आप सक्रिय रूप से इस्तेमाल करते हैं, आपका इंटिग्रेशन कोड आसान बना रहता है और उसे मैनेज करना भी आसान होता है.

JSON पार्स करने वाली ज़्यादातर आधुनिक लाइब्रेरी, डिफ़ॉल्ट रूप से अज्ञात प्रॉपर्टी को अनदेखा करने के विकल्प देती हैं. इसके अलावा, इन्हें ऐसा करने के लिए कॉन्फ़िगर भी किया जा सकता है.

लीड मैनेज करना

लीड हैंडलर को इन एचटीटीपी कोड के साथ जवाब देना चाहिए:

एचटीटीपी रिस्पॉन्स जवाब का मुख्य भाग (JSON) क्या इस गड़बड़ी को ठीक करने के लिए फिर से कोशिश की जा सकती है?
200 {} लागू नहीं
4XX {"message: Free form error text, describing what was wrong with request"} नहीं
5XX {"message: Intermittent retraible error optional message"} हां

डुप्लीकेट

इस बात की कोई गारंटी नहीं है कि एक लीड को सिर्फ़ एक बार डिलीवर किया जाएगा. इसलिए, लीड हैंडलिंग वेबहुक को डुप्लीकेट लीड को आसानी से हैंडल करना चाहिए.