বাস্তবায়ন

পোস্ট স্কিমা

ওয়েবহুকে পাঠানো 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];
  // The source of the lead submission.
  // Possible values: "LEAD_FORM" or "CONVERSATIONAL_AGENT".
  string lead_source = 14 [(datapol.semantic_type) = ST_NOT_REQUIRED];
}

ক্ষেত্রের বিবরণ

মাঠ বর্ণনা
lead_id একটি অনন্য স্ট্রিং যা প্রদত্ত লিডকে শনাক্ত করে।

পরিচালনার সুপারিশ: প্রাপ্ত লিডগুলো থেকে ডুপ্লিকেট বাদ দিতে এটি ব্যবহার করুন। এটি সমস্ত ফর্ম জুড়ে অনন্য হবে। একটি নির্দিষ্ট লিড সম্পর্কিত সমস্যা রিপোর্ট করার সময়, এই আইডিটি প্রয়োজন হবে।

api_version এই লিড স্কিমাটি যে এপিআই সংস্করণের অন্তর্গত। এটি একটি নতুন স্কিমাতে স্থানান্তরের সময় ব্যবহৃত হবে এবং আপাতত উপেক্ষা করা যেতে পারে।
form_id গুগল অ্যাডস-এ কনফিগার করা প্রতিটি ফর্মের জন্য একটি অনন্য আইডি রয়েছে। বর্তমান প্রোডাক্টটি ক্যাম্পেইন লেভেলের সাথে একটি ফর্ম সংযুক্ত করার সুযোগ দেয় (অ্যাড গ্রুপ বা অ্যাড লেভেলে সংযুক্ত করার পরিবর্তে)।

তাৎপর্য: লিডগুলি শুধুমাত্র form_id স্তরে (অর্থাৎ, ক্যাম্পেইন স্তরে) ভাগ করা যাবে।

প্রক্রিয়াকরণের জন্য ক্লায়েন্টদের ৮ বাইটের পূর্ণসংখ্যা ব্যবহার করতে হবে।

campaign_id সংযুক্ত লিড ফর্মটির গুগল অ্যাডস ক্যাম্পেইন আইডি অথবা লাইন আইটেম আইডি (ডিসপ্লে ও ভিডিও ৩৬০)।

প্রক্রিয়াকরণের জন্য ক্লায়েন্টদের একটি ৮-বাইট পূর্ণসংখ্যা ব্যবহার করতে হবে।

adgroup_id ক্যাম্পেইনের মধ্যে নির্দিষ্ট অ্যাড গ্রুপকে আলাদা করার জন্য গুগল অ্যাডস অ্যাড গ্রুপ আইডি ব্যবহার করা হয়। (শুধুমাত্র ভিডিও এবং ডিসকভারি অ্যাড থেকে প্রাপ্ত লিডের জন্য উপলব্ধ)

প্রক্রিয়াকরণের জন্য ক্লায়েন্টদের একটি ৮-বাইট পূর্ণসংখ্যা ব্যবহার করতে হবে।

creative_id অ্যাড গ্রুপের মধ্যে নির্দিষ্ট ক্রিয়েটিভকে আলাদা করতে গুগল অ্যাডস ক্রিয়েটিভ আইডি ব্যবহার করা হয়। (শুধুমাত্র ভিডিও এবং ডিসকভারি অ্যাড থেকে প্রাপ্ত লিডের জন্য উপলব্ধ)

প্রক্রিয়াকরণের জন্য ক্লায়েন্টদের একটি ৮-বাইট পূর্ণসংখ্যা ব্যবহার করতে হবে।

gcl_id গুগল ক্লিক আইডি , বিজ্ঞাপনের প্রতিটি ক্লিক ট্র্যাক করতে ব্যবহৃত একটি অনন্য প্যারামিটার।
google_key বিজ্ঞাপনদাতা কর্তৃক প্রতিটি ফর্মের সাথে কনফিগার করা একটি কী।

ব্যবস্থাপনার সুপারিশ: ওয়েবহুকের মাধ্যমে প্রাপ্ত কোনো লিড প্রসেস করার আগে, লিডটি বৈধ কিনা সে বিষয়ে আরও বেশি নিশ্চিত হতে Google Ads-এ কনফিগার করার মতোই google_key যাচাই করে নিন। এই কী-টি গোপন রাখুন এবং যদি এটি ব্যাপকভাবে ফাঁস হয়ে গেছে বলে মনে করার কোনো কারণ থাকে, তবে Google Ads-এ এটি আপডেট করুন।

is_test এই ফিল্ডটির অর্থ 'ঐচ্ছিক'। যদি মান 'true' হয়, তবে এই লিডটিকে একটি টেস্ট লিড হিসেবে গণ্য করুন। যদি মান 'false' হয় অথবা ফিল্ডটি উপস্থিত না থাকে, তবে এই লিডটিকে একটি বৈধ প্রোডাকশন লিড হিসেবে গণ্য করুন।
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_name (অপ্রচলিত)
"পূর্ণ_নাম" ব্যবহারকারীর পুরো নাম। "পুরো নাম"
"প্রথম_নাম" ব্যবহারকারীর প্রথম নাম। "প্রথম নাম"
"শেষ নাম" ব্যবহারকারীর শেষ নাম। "শেষ নাম"
"ইমেইল" ব্যবহারকারীর ইমেইল। "ব্যবহারকারীর ইমেল"
"ফোন নম্বর" ব্যবহারকারীর ফোন নম্বর E.164 ফরম্যাটে , যেমন, "+11234567890" "ব্যবহারকারীর ফোন"
"ফোন নম্বর যাচাই করা হয়েছে" ব্যবহারকারীর ফোন নম্বর যাচাই করা হয়েছে কিনা। "ফোন নম্বর যাচাই করা হয়েছে"
"পোস্টাল_কোড" ব্যবহারকারীর পোস্টাল কোড। "পোস্টাল কোড"
"কোম্পানির নাম" ব্যবহারকারীর কোম্পানির নাম। "কোম্পানির নাম"
"পদের নাম" ব্যবহারকারীর পদবি। "পদের নাম"
"কাজের ইমেল" ব্যবহারকারীর কর্মস্থলের ইমেইল। "কাজের ইমেল"
"কাজের ফোন" ব্যবহারকারীর অফিসের ফোন। "কাজের ফোন"
"রাস্তার ঠিকানা" ব্যবহারকারীর রাস্তার ঠিকানা। "রাস্তার ঠিকানা"
"শহর" ব্যবহারকারীর শহর। "শহর"
"অঞ্চল" ব্যবহারকারীর অঞ্চল। "অঞ্চল"
"দেশ" ব্যবহারকারীর দেশ। "দেশ"
"যানবাহনের মডেল" আপনি কোন মডেলটিতে আগ্রহী? প্রযোজ্য নয়
"যানবাহনের_প্রকার" আপনি কোন ধরনের যানবাহনে আগ্রহী? প্রযোজ্য নয়
"পছন্দের ডিলারশিপ" আপনার পছন্দের ডিলারশিপ নির্বাচন করুন প্রযোজ্য নয়
"যানবাহন_ক্রয়_সময়রেখা" আপনি কখন একটি গাড়ি কেনার পরিকল্পনা করছেন? প্রযোজ্য নয়
"যানবাহনের অবস্থা" আপনি কী ধরনের গাড়ির অবস্থা খুঁজছেন? প্রযোজ্য নয়
"যানবাহনের মালিকানা" আপনার কি কোনো যানবাহন আছে? "প্রযোজ্য নয়"
"যানবাহন_পেমেন্ট_প্রকার" আপনি গাড়ির মালিকানার কোন বিকল্পটি পছন্দ করেন? প্রযোজ্য নয়
"কোম্পানির_আকার" আপনার কোম্পানির আকার কত? প্রযোজ্য নয়
"বার্ষিক_বিক্রয়" আপনার বার্ষিক বিক্রয়ের পরিমাণ কত? প্রযোজ্য নয়
"ব্যবসায়িক বছর" আপনি কত বছর ধরে ব্যবসা করছেন? প্রযোজ্য নয়
"চাকরি বিভাগ" আপনার কর্মস্থল কোন বিভাগ? প্রযোজ্য নয়
"কাজের_ভূমিকা" আপনার পদ কী? প্রযোজ্য নয়
"শিক্ষা_কার্যক্রম" আপনি কোন প্রোগ্রামে আগ্রহী? প্রযোজ্য নয়
"শিক্ষা কোর্স" আপনি কোন কোর্সে আগ্রহী? প্রযোজ্য নয়
"পণ্য" আপনি কোন পণ্যটিতে আগ্রহী? প্রযোজ্য নয়
"পরিষেবা" আপনি কোন পরিষেবাটিতে আগ্রহী? প্রযোজ্য নয়
"প্রস্তাব" আপনি কোন অফারটিতে আগ্রহী? প্রযোজ্য নয়
"বিভাগ" আপনি কোন বিভাগে আগ্রহী? প্রযোজ্য নয়
"পছন্দের যোগাযোগের পদ্ধতি" আপনার পছন্দের যোগাযোগ পদ্ধতি নির্বাচন করুন প্রযোজ্য নয়
"পছন্দের_অবস্থান" আপনার পছন্দের অবস্থান নির্বাচন করুন প্রযোজ্য নয়
"পছন্দের যোগাযোগের সময়" আপনার সাথে যোগাযোগের সেরা সময় কোনটি? প্রযোজ্য নয়
"ক্রয় সময়রেখা" আপনি কখন কেনাকাটা করতে চাইছেন? প্রযোজ্য নয়
"অভিজ্ঞতার বছর" আপনার কত বছরের কাজের অভিজ্ঞতা আছে? প্রযোজ্য নয়
"চাকরি শিল্প" আপনি কোন শিল্পে কাজ করেন? প্রযোজ্য নয়
"শিক্ষার স্তর" আপনার সর্বোচ্চ শিক্ষাগত যোগ্যতা কী? প্রযোজ্য নয়
"সম্পত্তির_প্রকার" আপনি কী ধরনের সম্পত্তি খুঁজছেন? প্রযোজ্য নয়
"রিয়েলটর_হেল্প_গোল" আপনার কী বিষয়ে একজন রিয়েল্টরের সাহায্য প্রয়োজন? প্রযোজ্য নয়
"সম্পত্তি_সম্প্রদায়" আপনি কোন কমিউনিটিতে আগ্রহী? প্রযোজ্য নয়
"মূল্য_পরিসর" আপনি কী ধরনের মূল্যসীমা খুঁজছেন? প্রযোজ্য নয়
"শয়নকক্ষের সংখ্যা" আপনি কয়টি বেডরুম খুঁজছেন? প্রযোজ্য নয়
"সাজানো_সম্পত্তি" আপনি কি সম্পূর্ণ আসবাবপত্র সজ্জিত কোনো বাড়ি খুঁজছেন? প্রযোজ্য নয়
"পোষা প্রাণী অনুমোদিত সম্পত্তি" আপনি কি এমন বাড়ি খুঁজছেন যেখানে পোষা প্রাণী রাখা যায়? প্রযোজ্য নয়
"পরবর্তী_পরিকল্পিত_ক্রয়" এরপর আপনি কোন পণ্যটি কেনার পরিকল্পনা করছেন? প্রযোজ্য নয়
"ইভেন্ট_সাইনআপ_আগ্রহ" আপনি কি কোনো অনুষ্ঠানে অংশগ্রহণের জন্য নিবন্ধন করতে চান? প্রযোজ্য নয়
পছন্দের কেনাকাটার স্থান আপনি কোথায় কেনাকাটা করতে আগ্রহী? প্রযোজ্য নয়
"প্রিয় ব্র্যান্ড" আপনার প্রিয় ব্র্যান্ড কোনটি? প্রযোজ্য নয়
"পরিবহন বাণিজ্যিক লাইসেন্সের ধরণ" আপনার কাছে কোন ধরনের বৈধ বাণিজ্যিক লাইসেন্স আছে? প্রযোজ্য নয়
"ইভেন্ট_বুকিং_আগ্রহ" আপনি কি কোনো অনুষ্ঠান বুক করতে আগ্রহী? প্রযোজ্য নয়
"গন্তব্য_দেশ" আপনার গন্তব্য দেশ কোনটি? প্রযোজ্য নয়
"গন্তব্য শহর" আপনার গন্তব্য শহর কোনটি? প্রযোজ্য নয়
"প্রস্থান_দেশ" আপনার প্রস্থান দেশ কোনটি? প্রযোজ্য নয়
"প্রস্থান_শহর" আপনার যাত্রার শহর কোনটি? প্রযোজ্য নয়
"প্রস্থানের তারিখ" আপনার যাত্রার তারিখ কী? প্রযোজ্য নয়
"ফেরতের তারিখ" আপনার ফেরার তারিখ কবে? প্রযোজ্য নয়
"ভ্রমণকারীর সংখ্যা" আপনার সাথে কতজন ভ্রমণ করছেন? প্রযোজ্য নয়
ভ্রমণ বাজেট আপনার ভ্রমণ বাজেট কত? প্রযোজ্য নয়
"ভ্রমণ আবাসন" ভ্রমণকালে আপনি কোথায় থাকতে চান? প্রযোজ্য নয়
asset_group_id এই ফিল্ডটি শুধুমাত্র পারফরম্যান্স-ম্যাক্স ক্যাম্পেইনের জন্য পূরণ করা হয়। এটি সেই কন্টেইনার আইডি নির্দেশ করে, যেখানে লিড ফর্মটি রয়েছে।

প্রক্রিয়াকরণের জন্য ক্লায়েন্টদের একটি ৮-বাইট পূর্ণসংখ্যা ব্যবহার করতে হবে।

lead_stage এটি লিড ডেলিভারির সময়কার লিডের পর্যায় নির্দেশ করে। এই ফিল্ডটি কোনো লিডের ফানেল পর্যায় বা রূপান্তর অবস্থা ট্র্যাক করতে সহায়ক।
lead_submit_time এটি সেই সময় নির্দেশ করে যখন ব্যবহারকারী ফর্মটি জমা দিয়েছেন। এটি ISO-8601 ফরম্যাটে প্রকাশ করা হয়। উদাহরণ- 2024-09-26T12:30:00Z
lead_source এটি লিড জমা দেওয়ার উৎস নির্দেশ করে। একটি সাধারণ লিড ফর্ম বিজ্ঞাপন থেকে তৈরি হওয়া লিডের জন্য এটি 'LEAD_FORM' হতে পারে, অথবা সার্চ-এ এজেন্টিক চ্যাট অভিজ্ঞতা থেকে তৈরি হওয়া লিডের জন্য এটি 'CONVERSATIONAL_AGENT' হতে পারে।

অস্বীকৃত ক্ষেত্র এবং ফরোয়ার্ড সামঞ্জস্যতা

আপনার ওয়েবহুক ইন্টিগ্রেশন যাতে শক্তিশালী থাকে এবং ভবিষ্যতের উন্নয়নগুলোর সাথে খাপ খাইয়ে নিতে পারে, তা নিশ্চিত করার জন্য এটি একটি আদর্শ উত্তম অনুশীলন যে আপনার JSON পার্সারকে এমনভাবে ডিজাইন করা উচিত, যাতে এটি ওয়েবহুক পেলোডের মধ্যে থাকা এমন যেকোনো ফিল্ডকে সাবলীলভাবে উপেক্ষা করে যা আপনার সিস্টেম স্পষ্টভাবে গ্রহণ বা শনাক্ত করে না।

মূল পরামর্শ: আপনার JSON পার্সিং লজিক এমনভাবে কনফিগার করুন যাতে এটি শুধুমাত্র আপনার অ্যাপ্লিকেশনের জন্য বিশেষভাবে প্রয়োজনীয় ফিল্ডগুলোই প্রসেস করে। এমন কোড লিখবেন না যা একটি নির্দিষ্ট সেট ফিল্ড প্রত্যাশা করে অথবা পেলোডে নতুন, অপ্রত্যাশিত ফিল্ড উপস্থিত থাকলে ব্যর্থ হবে।

কেন এটি গুরুত্বপূর্ণ:

  • ভবিষ্যৎ সামঞ্জস্যতা: আরও সমৃদ্ধ ডেটা বা নতুন বৈশিষ্ট্য প্রদানের জন্য গুগল ভবিষ্যতের আপডেটে ওয়েবহুক পেলোডে নতুন, ঐচ্ছিক ফিল্ড যোগ করতে পারে। যদি আপনার পার্সারটি খুব কঠোর হয় (যেমন, অজানা প্রপার্টির ক্ষেত্রে ব্যর্থ হয়), তাহলে গুগলের পক্ষ থেকে এই ধরনের নন-ব্রেকিং পরিবর্তনগুলি চালু করা হলে আপনার ইন্টিগ্রেশনটি ভেঙে যেতে পারে।
  • সরলীকৃত রক্ষণাবেক্ষণ: শুধুমাত্র আপনার সক্রিয়ভাবে ব্যবহৃত ডেটা পয়েন্টগুলোর উপর মনোযোগ কেন্দ্রীভূত করার ফলে, আপনার ইন্টিগ্রেশন কোড আরও সরল এবং রক্ষণাবেক্ষণে সুবিধাজনক থাকে।

অধিকাংশ আধুনিক JSON পার্সিং লাইব্রেরিতে ডিফল্টরূপে অজানা প্রপার্টি উপেক্ষা করার অপশন থাকে, অথবা সেভাবে কনফিগারও করা যায়।

লিড হ্যান্ডলিং

লিড হ্যান্ডলারদের নিম্নলিখিত HTTP কোডগুলি দিয়ে সাড়া দেওয়া উচিত:

HTTP প্রতিক্রিয়া প্রতিক্রিয়া বডি (JSON) পুনরায় চেষ্টাযোগ্য ত্রুটি?
200 {} প্রযোজ্য নয়
4XX {"বার্তা: অনুরোধে কী ভুল ছিল তার বর্ণনা সহ একটি মুক্ত-ফর্মের ত্রুটির বিবরণ"} না
5XX {"বার্তা: মাঝে মাঝে সংশোধনযোগ্য ত্রুটির ঐচ্ছিক বার্তা"} হ্যাঁ

ডুপ্লিকেট

একটি লিড যে ঠিক একবারই ডেলিভার করা হবে, তার কোনো নিশ্চয়তা নেই, তাই লিড হ্যান্ডলিং ওয়েবহুকের উচিত ডুপ্লিকেটগুলো সুষ্ঠুভাবে সামলানো।