संग्रह की मदद से व्यवस्थित रहें
अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
रीयल-टाइम बिडिंग इंटरैक्शन तब शुरू होता है, जब Google आपके ऐप्लिकेशन को बिड का अनुरोध भेजता है. इस गाइड में, बिड रिक्वेस्ट को प्रोसेस करने के लिए, अपने ऐप्लिकेशन को कोड करने का तरीका बताया गया है.
अनुरोध पार्स करना
Google, एचटीटीपी पोस्ट अनुरोध के पेलोड के तौर पर अटैच किया गया, OpenRTB JSON या Protobuf फ़ॉर्मैट में सीरियल किया गया बिड रिक्वेस्ट भेजता है. आपको जो फ़ॉर्मैट मिलेगा वह आपके एंडपॉइंट के कॉन्फ़िगरेशन पर निर्भर करता है. उदाहरण के लिए, बिड रिक्वेस्ट का उदाहरण देखें.
BidRequest को सीरियलाइज़ करने के लिए, आपको इस अनुरोध को पार्स करना होगा. अगर Protobuf फ़ॉर्मैट का इस्तेमाल किया जा रहा है, तो आपको रेफ़रंस डेटा पेज से openrtb.proto और openrtb-adx.proto डाउनलोड करने होंगे. इसके बाद, इनका इस्तेमाल करके एक लाइब्रेरी जनरेट करें. इस लाइब्रेरी का इस्तेमाल, BidRequest मैसेज को पार्स करने के लिए किया जा सकता है. उदाहरण के लिए, नीचे दिया गया C++ कोड, किसी स्ट्रिंग में POST
पेलोड दिए गए अनुरोध को पार्स करता है:
BidRequest मिलने के बाद, उस पर ऑब्जेक्ट के तौर पर काम किया जा सकता है. साथ ही, अपनी ज़रूरत के हिसाब से फ़ील्ड को निकाला और समझा जा सकता है. उदाहरण के लिए, C++ में, OpenRTB `BidRequest` में डील को दोहराना इस तरह दिख सकता है:
जब किसी पब्लिशर की विज्ञापन इन्वेंट्री को आपके एक या उससे ज़्यादा
प्री-टारगेटिंग कॉन्फ़िगरेशन से टारगेट किया जाता है, तो आपको बिड रिक्वेस्ट मिलता है. BidRequest.imp.ext.billing_id में, ज़रूरी शर्तें पूरी करने वाले सभी खरीदारों के बिलिंग आईडी और काम की प्री-टारगेटिंग कॉन्फ़िगरेशन अपने-आप भर जाएंगे. इसके अलावा, BidRequest.imp.pmp.deal.ext.billing_id का इस्तेमाल करके, डील इन्वेंट्री के लिए, खरीदार से जुड़े बिलिंग आईडी देखे जा सकते हैं. बिडिंग करते समय, बिड रिक्वेस्ट में शामिल खरीदारों के बिलिंग आईडी ही दिए जा सकते हैं.
अगर बिड रिक्वेस्ट में एक से ज़्यादा बिलिंग आईडी शामिल हैं, तो आपको BidResponse.seatbid.bid.ext.billing_id फ़ील्ड की मदद से, उस खरीदार का बिलिंग आईडी बताना होगा जिसे बिड का एट्रिब्यूट देना है.
डिक्शनरी फ़ाइलें
बिड रिक्वेस्ट, डिक्शनरी फ़ाइलों में तय किए गए आइडेंटिफ़ायर का इस्तेमाल करता है. ये आइडेंटिफ़ायर, रेफ़रंस डेटा पेज पर उपलब्ध होते हैं.
बिडर यूआरएल मैक्रो
इसके अलावा, मैक्रो का इस्तेमाल करके, BidRequest की कुछ जानकारी को बिडिंग एंडपॉइंट यूआरएल में डाला जा सकता है. अगर किसी एंडपॉइंट यूआरएल को एक या एक से ज़्यादा मैक्रो के साथ कॉन्फ़िगर किया जाता है, तो बिड रिक्वेस्ट में मौजूद जानकारी के आधार पर, उन्हें बड़ा किया जाएगा. उदाहरण के लिए, अगर आपको BidRequest में मौजूद जानकारी के आधार पर लोड बैलेंसिंग करनी है, तो यह तरीका आपके लिए मददगार हो सकता है.
नए मैक्रो के लिए सहायता पाने का अनुरोध करने के लिए, अपने खाता मैनेजर से संपर्क करें.
मैक्रो
ब्यौरा
%%GOOGLE_USER_ID%%
BidRequest.user.id में मौजूद Google यूज़र आईडी से बदल दिया गया. उदाहरण के लिए, बिड करने वाले के यूआरएल http://google.bidder.com/path?gid=%%GOOGLE_USER_ID%% को रिक्वेस्ट के समय, http://google.bidder.com/path?gid=dGhpyBhbiBleGFtGxl जैसे किसी यूआरएल से बदल दिया जाएगा.
अगर Google User-ID की जानकारी नहीं है, तो खाली स्ट्रिंग को इस तरह बदल दिया जाता है
http://google.bidder.com/path?gid=
%%HAS_MOBILE%%
बिड रिक्वेस्ट किसी मोबाइल डिवाइस से है, यह बताने के लिए इसे 1 से बदला जाता है. अगर बिड रिक्वेस्ट किसी अन्य डिवाइस से है, तो इसे 0 से बदला जाता है. यह BidRequest.device.devicetype की वैल्यू पर आधारित होता है. इसमें मोबाइल डिवाइसों को HIGHEND_PHONE (4) या Tablet (5) से दिखाया जाता है.
%%HAS_VIDEO%%
बिड रिक्वेस्ट में वीडियो इन्वेंट्री मौजूद है या नहीं, यह बताने के लिए इसे 1 से बदला गया है. अगर वीडियो इन्वेंट्री मौजूद नहीं है, तो इसे 0 से बदला गया है. यह इस बात पर निर्भर करता है कि बिड रिक्वेस्ट में BidRequest.imp.video की वैल्यू डाली गई है या नहीं.
%%HOSTED_MATCH_DATA%%
BidRequest.user.buyeruid के आधार पर वैल्यू से बदल दिया जाता है.
%%MOBILE_IS_APP%%
बिड रिक्वेस्ट, मोबाइल ऐप्लिकेशन इन्वेंट्री के लिए है या नहीं, यह बताने के लिए इसे 1 से बदल दिया गया है. अगर बिड रिक्वेस्ट, मोबाइल ऐप्लिकेशन इन्वेंट्री के लिए नहीं है, तो इसे 0 से बदल दिया गया है. यह इस बात पर निर्भर करता है कि BidRequest.app में कोई वैल्यू डाली गई है या नहीं.
लेन-देन के यूआरएल से मोबाइल ऐप्लिकेशन आईडी ढूंढना
मोबाइल ऐप्लिकेशन से किए गए लेन-देन के लिए, ऐसे यूआरएल रिपोर्ट किए जाएंगे जो कुछ इस तरह दिखते हैं:
mbappgewtimrzgyytanjyg4888888.com
बोल्ड (gewtimrzgyytanjyg4888888) में लिखे गए स्ट्रिंग के हिस्से को डिकोड करने के लिए, बेस-32 डीकोडर का इस्तेमाल करें.
ऑनलाइन डिकोडर का इस्तेमाल किया जा सकता है. हालांकि, आपको अक्षरों को कैपिटल लेटर में बदलना होगा और आखिर में मौजूद 8 को = वैल्यू से बदलना होगा.
इसलिए, इस वैल्यू को डिकोड करने के लिए:
GEWTIMRZGYYTANJYG4======
इससे ये नतीजे मिलते हैं:
1-429610587
429610587 स्ट्रिंग, iOS ऐप्लिकेशन iFunny का ऐप्लिकेशन आईडी है.
यहां एक और उदाहरण दिया गया है. शिकायत किया गया यूआरएल यह है:
mbappgewtgmjug4ytmmrtgm888888.com
इस वैल्यू को डिकोड करना:
GEWTGMJUG4YTMMRTGM======
इससे ये नतीजे मिलते हैं:
1-314716233
नतीजा 314716233, iOS ऐप्लिकेशन के लिए ऐप्लिकेशन आईडी है
TextNow.
लेन-देन के यूआरएल से मोबाइल ऐप्लिकेशन का नाम ढूंढना
ऐप्लिकेशन का नाम पाने का उदाहरण यहां दिया गया है. जिस यूआरएल की शिकायत की गई है वह यह है:
इस नतीजे से, Android ऐप्लिकेशन
slither.io का पता चलता है.
ओपन बिडिंग फ़ील्ड
ओपन बिडिंग में हिस्सा लेने वाले एक्सचेंज और नेटवर्क बिडर को भेजे गए बिड रिक्वेस्ट, स्टैंडर्ड रीयल-टाइम बिडिंग में हिस्सा लेने वाले Authorized Buyers के बिड रिक्वेस्ट से मिलते-जुलते होते हैं. ओपन बिडिंग के ग्राहकों को कुछ अतिरिक्त फ़ील्ड मिलेंगे. साथ ही, कुछ मौजूदा फ़ील्ड का इस्तेमाल अन्य कामों के लिए किया जा सकता है. इनमें ये शामिल हैं:
OpenRTB
विवरण
BidRequest.imp.ext.dfp_ad_unit_code
इसमें पब्लिशर का Ad Manager नेटवर्क कोड होता है. इसके बाद, विज्ञापन यूनिट की हैरारकी होती है. इन दोनों को फ़ॉरवर्ड स्लैश से अलग किया जाता है.
उदाहरण के लिए, यह इस तरह के फ़ॉर्मैट में दिखेगा:
/1234/cruises/mars.
BidRequest.user.data.segment
पब्लिशर से एक्सचेंज बिडर को भेजे गए, बार-बार इस्तेमाल होने वाले की-वैल्यू पेयर.
BidRequest.user.data.name को “Publisher Passed” पर सेट करने पर, यह तय किया जा सकता है कि वैल्यू, पब्लिशर से भेजे गए की-वैल्यू पेयर हैं.
अनुमति वाले वेंडर की जानकारी देना
रिसर्च, रीमार्केटिंग, और विज्ञापन दिखाने जैसी सेवाएं देने वाले टेक्नोलॉजी वेंडर, खरीदारों और सेलर के बीच इंटरैक्शन में भूमिका निभा सकते हैं. सिर्फ़ उन वेंडर को अनुमति दी जाती है जिन्हें Google ने Authorized Buyers के इंटरैक्शन में हिस्सा लेने के लिए मंज़ूरी दी है.
BidRequest को समझने और अपना BidResponse बनाने के लिए, आपको टेक्नोलॉजी वेंडर की जानकारी देने के दो अलग-अलग तरीकों के बारे में पता होना चाहिए:
अन्य वेंडर सिर्फ़ तब हिस्सा ले सकते हैं, जब उनके बारे में BidRequest में जानकारी दी गई हो:
BidRequest में, BidRequest.imp.ext.allowed_vendor_type फ़ील्ड से पता चलता है कि
सेलर ने किन वेंडर को अनुमति दी है. allowed_vendor_type में भेजे जाने वाले वेंडर,
vendors.txt
डिकशनरी फ़ाइल में मौजूद होते हैं.
बिड रिक्वेस्ट का उदाहरण
यहां दिए गए उदाहरणों में, Protobuf और JSON अनुरोधों के ऐसे सैंपल दिए गए हैं जिन्हें कोई भी व्यक्ति आसानी से पढ़ सकता है.
बिड रिक्वेस्ट को बाइनरी फ़ॉर्म में बदलने के लिए, C++ में यह तरीका अपनाएं. ऐसा करने पर, आपको रीयल रिक्वेस्ट में POST पेलोड जैसा ही डेटा मिलेगा. हालांकि, ध्यान रखें कि यह तरीका OpenRTB JSON पर लागू नहीं होता.
रीयल-टाइम फ़ीडबैक, Authorized Buyers के साथ-साथ, ओपन बिडिंग का इस्तेमाल करने वाले एक्सचेंज और नेटवर्क के लिए भी उपलब्ध है.
रीयल-टाइम फ़ीडबैक, आपके पहले से लगाई गई एक या उससे ज़्यादा बिड के नतीजे के आधार पर BidRequest.ext.bid_feedback को पॉप्युलेट करता है. इसका इस्तेमाल, नीलामी में बिड जीतने या नीलामी जीतने के लिए ज़रूरी कम से कम बिड जैसी जानकारी पाने के लिए किया जा सकता है. रीयल-टाइम फ़ीडबैक की सुविधा चालू करने के लिए, अपने खाता मैनेजर से संपर्क करें.
बिड रिस्पॉन्स फ़ीडबैक में भेजे गए डिफ़ॉल्ट फ़ील्ड के अलावा, BidResponse.seatbid.bid.ext.event_notification_token फ़ील्ड का इस्तेमाल करके, बिड रिस्पॉन्स में कस्टम डेटा भी भेजा जा सकता है. event_notification_token, मनमुताबिक डेटा होता है. इसकी जानकारी सिर्फ़ बिडर को होती है. इससे डीबग करने में मदद मिल सकती है. उदाहरण के लिए, कोई नया टारगेटिंग आईडी या बिडिंग आईडी, जो किसी नई रणनीति को दिखाता है या क्रिएटिव से जुड़ा मेटाडेटा, जिसकी जानकारी सिर्फ़ बिडर को होती है. ज़्यादा जानकारी के लिए, OpenRTB एक्सटेंशन प्रोटोकॉल बफ़र फ़ाइल देखें.
जब Authorized Buyers किसी बिडर को बिड रिक्वेस्ट भेजता है, तो बिडर BidResponse के साथ जवाब देता है. अगर बिडर ने रीयल-टाइम फ़ीडबैक की सुविधा चालू की है, तो अगले बिड रिक्वेस्ट में, Authorized Buyers BidFeedback मैसेज में जवाब के बारे में फ़ीडबैक भेजता है:
messageBidFeedback{//TheuniqueidfromBidRequest.id.optionalstringrequest_id=1;//Thestatuscodeforthead.Seecreative-status-codes.txtinthe//technicaldocumentationforalistofids.optionalint32creative_status_code=2;//Deprecated.ThisfieldisnotpopulatedandwillberemovedafterMarch,//2025.Ifthebidwontheauction,thisisthepricepaidinyouraccount//currency.Ifthebidparticipatedintheauctionbutwasout-bid,this//istheCPMthatshouldhavebeenexceededinordertowin.Thisisnot//setifthebidwasfilteredpriortotheauction,ifthepublisheror//winningbidderhasoptedoutofpricefeedbackorifyouraccounthas//optedoutofsharingwinningpriceswithotherbidders.Forfirst-price//auctions,minimum_bid_to_winispopulatedinsteadofthisfield.optionaldoubleprice=3[deprecated=true];//Theminimumbidvaluenecessarytohavewontheauction,inyouraccount//currency.Ifyourbidwontheauction,thisisthesecondhighestbid//thatwasnotfiltered(includingthefloorprice).Ifyourbiddidn't win//theauction,thisisthewinningcandidate's bid. This field will only be//populatedifyourbidparticipatedinafirst-priceauction,andwillnot//bepopulatedifyourbidwasfilteredpriortotheauction.optionaldoubleminimum_bid_to_win=6;//Theminimumbidvaluenecessarytohavewontheserver-sidecomponentof//theoverallauctiongiventhattherewasalsoaninterestgroupbidding//componenttotheoverallauctionwhichranusingtheProtectedAudience//API.ThevalueisexpressedinCPMofthebuyeraccountcurrency.The//minimumbidtowinfortheoverallauction,includingbidsfromthe//server-sideandtheon-deviceinterestgroupcomponents,ispopulatedin//theminimum_bid_to_winfieldofthesameBidFeedbackobject.optionaldoublesscminbidtowin=14;//Billableeventratemultiplierthatwasappliedtothisbidduring//ranking.Theadjustmentreflectsthelikelihoodthatyourbidwould//generateabillableevent(namely,theadrenderssuccessfully)ifitwon//theauction,relativetotheprobabilitythatotherbidsgeneratea//billableeventiftheywontheauction.Thisadjustmentcanbelargeror//smallerthan1.Thisaffectsthefinalrankingintheauctiononly;in//particular,thismultiplierdoesnotaffectthepaymentorwhetherthe//bidclearsanyfloorprice.optionalfloatbillable_event_rate_bid_adjustment=13[default=1];//WhenapublisherusesanRTBauctionandwaterfall-basedSDKmediationon//thesamequery,thewinnerofthereal-timeauctionmustalsocompetein//amediationwaterfall(whichisorderedbyprice)towintheimpression.//Ifthebidparticipatedintheauctionandtherewasnowaterfall,the//valueofthisfieldis0.Ifthebidparticipatedintheauctionand//therewasawaterfall,thevalueofthisfieldisapricerepresentinga//samplebidfromtheeligiblemediationnetworksthatwerehigherthanthe//auctionwinner,weightedbyexpectedfillrate.Thisfieldcanbeused//inconjunctionwithminimum_bid_to_wintotrainbiddingmodels.TheCPM//isinyouraccountcurrency.optionaldoublesampled_mediation_cpm_ahead_of_auction_winner=8;messageEventNotificationToken{//Thecontentsofthetoken.optionalstringpayload=1;}//Thetokenincludedinthecorrespondingbid.optionalEventNotificationTokenevent_notification_token=4;//ThecreativeIDincludedinthecorrespondingbid.optionalstringbuyer_creative_id=5;//Possibletypesofbidresponsefeedbackobjects.enumFeedbackType{FEEDBACK_TYPE_UNSPECIFIED=0;//Feedbackforabidthatwassubmittedonabidresponse.BID_FEEDBACK=1;//Feedbackforaninterestgroupbuyersubmittedonabidresponseto//particpateinaninterestgroupbiddingcomponentoftheauctionrun//usingtheProtectedAudienceAPI.INTEREST_GROUP_BUYER_FEEDBACK=2;}//ThetypeoftheBidFeedbackmessage.Googlewillsendseparate//BidFeedbackobjectsfor://a)Eachbidsubmittedonabidresponse//b)Eachbuyersubmittedonabidresponsetoparticpateinaninterest//groupbiddingcomponentoftheauctionrunusingtheProtectedAudience//API.optionalFeedbackTypefeedbacktype=15;//Originofaninterestgroupbuyerthatwasincludedinthebidresponse.//Thisfieldispopulatedonlyforfeedbackwhereabidderoptedinan//interestgroupbuyertoparticipateintheinterestgroupbidding//componentoftheoverallauctionrunusingtheProtectedAudienceAPI.//Tolearnmoreaboutorigins,seehttps://www.rfc-editor.org/rfc/rfc6454.//TolearnmoreaboutinterestgroupbiddingandtheProtectedAudience//API,see//https://developers.google.com/authorized-buyers/rtb/fledge-origin-trial.optionalstringbuyerorigin=16;//Thestatuscodeforthesubmittedinterestgroupbuyer.Thisfieldis//onlypopulatedinthefeedbackforaninterestgroupbuyerthatabidder//requestedtoenterintotheinterestgroupauctionthroughthebid//response.Individualcreativestatuscodesofbidssubmittedbythebuyer//intheon-deviceinterestgroupauctionarenotavailable.See//https://storage.googleapis.com/adx-rtb-dictionaries/interest-group-buyer-status-codes.txt//foralistofinterestgroupbuyerstatuscodes.optionalint32igbuyerstatus=17;}
इस मैसेज में, आपको सबसे पहले bid_feedback.creative_status_code फ़ील्ड की जांच करनी चाहिए. कोड का मतलब,
creative-status-codes.txt में देखा जा सकता है. ध्यान दें कि अगर बिड जीत जाती है, तो कीमत के सुझाव से ऑप्ट आउट किया जा सकता है. ज़्यादा जानकारी के लिए, ऑप्ट-आउट करने का तरीका लेख पढ़ें.
रीयल-टाइम फ़ीडबैक में बिड रिक्वेस्ट आईडी और इनमें से कोई एक जानकारी शामिल होती है:
नीलामी का नतीजा
रीयल-टाइम में सुझाव, राय या शिकायतें पाना
खरीदार ने बिड सबमिट नहीं की.
कुछ नहीं.
खरीदार ने ऐसी बिड सबमिट की जो नीलामी में शामिल होने से पहले ही फ़िल्टर हो गई थी.
फ़र्स्ट-प्राइस ऑक्शन में बिड करने के बाद, आपको रीयल-टाइम में सुझाव मिलेंगे. इनमें minimum_bid_to_win और sampled_mediation_cpm_ahead_of_auction_winner फ़ील्ड भी शामिल होंगे. हालांकि, ऐसा तब ही होगा, जब बिड को ऑक्शन से फ़िल्टर नहीं किया गया हो. इन सिग्नल का इस्तेमाल, बिडिंग लॉजिक को यह बताने के लिए किया जा सकता है कि इंप्रेशन पाने के लिए आपकी बिड कितनी ज़्यादा या कम हो सकती थी.
minimum_bid_to_win: रीयल-टाइम बिडिंग नीलामी में जीतने के लिए, कम से कम इतनी बिड लगाई जा सकती थी. अगर आपने नीलामी जीती है, तो यह सबसे कम बिड होगी. अगर आपने नीलामी में हिस्सा नहीं लिया है, तो यह बिड जीतने वाली बिड होगी.
sampled_mediation_cpm_ahead_of_auction_winner: अगर मीडिएशन चेन में अन्य नेटवर्क हैं, तो इस फ़ील्ड की वैल्यू, ज़रूरी शर्तें पूरी करने वाले किसी एक मीडिएशन नेटवर्क की सैंपल बिड की कीमत होती है. यह बिड, नीलामी में जीतने वाले नेटवर्क की बिड से ज़्यादा होती है. इसकी गिनती, अनुमानित फ़िल दर के हिसाब से की जाती है. अगर मीडिएशन चेन में मौजूद कोई भी नेटवर्क, विज्ञापन नहीं दिखाता है या पब्लिशर, SDK टूल के ज़रिए मीडिएशन का इस्तेमाल नहीं करता है, तो यह वैल्यू 0 पर सेट हो जाएगी.
यह कैसे काम करता है
minimum_bid_to_win और
sampled_mediation_cpm_ahead_of_auction_winner के लिए संभावित वैल्यू तय करने के लिए इस्तेमाल किए गए कैलकुलेशन के बारे में बताने के लिए, हमें पहले इन चीज़ों को तय करना होगा:
यहां मीडिएशन चेन में सीपीएम को घटते क्रम में दिखाया गया है:
\[C_1, C_2, …, C_n\]
यहां मीडिएशन चेन में सीपीएम के लिए, फ़िल दरों की जानकारी दी गई है:
\[f_1, f_2, …, f_n\]
यहां दिया गया फ़ंक्शन, दिए गए फ़िल रेट के आधार पर, मीडिएशन चेन एलिमेंट \(i\)से अनुमानित सीपीएम और उसकी संभावना का पता लगाने के लिए इस्तेमाल किया जाता है:
\(X_i = \{C_i\) with probability \(f_i\); \(0\) with probability \(1 - f_i\}\)
आखिर में, मीडिएशन की जो चेन चुनी जाएगी वह यह होगी:
\[\{C_1, C_2, …, C_K, W\}\]
जहां \(W\) जीतने वाली बिड है, और \(C_K > W >= C_{K+1}\)
रिज़र्व कीमत या फ़्लोर को \(F\)के तौर पर दिखाया जाता है.
रनर-अप बिड को \(R\)के तौर पर दिखाया जाता है.
नीलामी में जीतने वाले के लिए कैलकुलेशन
फ़ील्ड
कैलकुलेशन
minimum_bid_to_win
\(max\{F, R, X_{K+1}, …, X_n\}\)
sampled_mediation_cpm_ahead_ of_auction_winner
\(\{C_i\) संभावना के साथ \(\prod_{j=1}^{i-1}(1-f_j) \cdot f_i \div \prod_{j=1}^{K}(1-f_j)\}\)
\(1 <= i <= K\)के लिए.
नीलामी में हिस्सा न लेने वाले के लिए कैलकुलेशन
फ़ील्ड
कैलकुलेशन
minimum_bid_to_win
\(max\{F, W\}\)
sampled_mediation_cpm_ahead_ of_auction_winner
\(max\{X_1, …, X_K\}\)
आसान मीडिएशन चेन का उदाहरण
मान लें कि कोई पब्लिशर, रीयल-टाइम बिडिंग और SDK मीडिएशन चेन, दोनों का इस्तेमाल इस तरह करता है:
SDK टूल मीडिएशन चेन
अनुमानित सीपीएम
फ़िल रेट
नेटवर्क 1
\(C_1 = $3.00\)
\(f_1 = 5\%\)
दूसरा नेटवर्क
\(C_2 = $2.00\)
\(f_2 = 45\%\)
नेटवर्क 3
\(C_3 = $0.50\)
\(f_3 = 80\%\)
नेटवर्क 4
\(C_4 = $0.10\)
\(f_4 = 85\%\)
आरटीबी नीलामी के नतीजे के तौर पर, इन बातों को मान लें:
आरटीबी नीलामी
सीपीएम
नीलामी में जीतने वाला (W)
1.00 डॉलर
ऑक्शन रनर-अप (R)
0.05 डॉलर
रिज़र्व प्राइस / फ़्लोर (F)
$0
नीलामी जीतने वाली बिड
यहां एक उदाहरण दिया गया है, जिसमें यह बताया गया है कि बिड जीतने के बाद, minimum_bid_to_win और sampled_mediation_cpm_ahead_of_auction_winner की वैल्यू और संभावनाओं का हिसाब कैसे लगाया जाता है.
यहां एक उदाहरण दिया गया है, जिसमें यह बताया गया है कि बिड हारने पर, minimum_bid_to_win और sampled_mediation_cpm_ahead_of_auction_winner के लिए वैल्यू और संभावनाओं का हिसाब कैसे लगाया जाता है.
minimum_bid_to_win
प्रॉबेबिलिटी
\(max(F, W) = $1.00\)
\(100\%\)
sampled_mediation_cpm_ ahead_of_auction_winner
प्रॉबेबिलिटी
\(C_1 = $3.00\)
\(f_1 = 5\%\)
\(C_2 = $2.00\)
\((1-f_1) \cdot f_2 =~ 42.8\%\)
\(0\)
\((1-f_1) \cdot (1-f_2) =~ 52.2\%\)
बिड को फ़्लैट करना
बिड फ़्लैट करने की प्रोसेस में, एक कॉम्प्लेक्स BidRequest को कई बिड रिक्वेस्ट में बदला जाता है. ये बिड रिक्वेस्ट आपके ऐप्लिकेशन पर भेजे जाते हैं. जब किसी बिड रिक्वेस्ट को फ़्लैट किया जाता है, तो यह पता लगाया जा सकता है कि कौनसे बिड रिक्वेस्ट मूल बिड रिक्वेस्ट का हिस्सा थे. इसकी वजह यह है कि BidRequest.ext.google_query_id फ़ील्ड में उनकी वैल्यू एक जैसी होगी.
बिड फ़्लैट करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. हालांकि, अगर आपको इसे बंद करना है, तो अपने खाता मैनेजर से संपर्क करें.
विज्ञापन फ़ॉर्मैट
कुछ विज्ञापन अवसरों में एक से ज़्यादा फ़ॉर्मैट स्वीकार किए जा सकते हैं. बिड फ़्लैट करने की सुविधा की मदद से, हर फ़ॉर्मैट को अलग-अलग बिड रिक्वेस्ट में भेजा जाता है. इसमें, ज़रूरी शर्तें पूरी करने वाले बिलिंग आईडी जैसे एट्रिब्यूट, अनुरोध में बताए गए फ़ॉर्मैट के हिसाब से होते हैं.
इन फ़ॉर्मैट वाले बिड रिक्वेस्ट को अलग-अलग बिड रिक्वेस्ट में फ़्लैट कर दिया जाएगा:
बैनर
वीडियो
ऑडियो
मूल भाषा वाला
विज्ञापन फ़ॉर्मैट को फ़्लैट करने का उदाहरण
यहां एक उदाहरण दिया गया है, जिसमें फ़्लैट किए गए अनुरोधों के बराबर सेट की तुलना में, विज्ञापन फ़ॉर्मैट को फ़्लैट किए बिना, आसान बनाए गए OpenRTB JSON बिड रिक्वेस्ट को दिखाया गया है:
किसी बिडर के लिए विज्ञापन का अवसर, ओपन नीलामी के अलावा, डील के अलग-अलग टाइप पर लागू हो सकता है. ऑफ़र के लिए बिड को एक जैसा करने की सुविधा की मदद से, एक बिड का अनुरोध ओपन ऑक्शन के लिए और एक अनुरोध, तय कीमत वाले हर तरह के ऑफ़र के लिए भेजा जाएगा. आम तौर पर, नीलामियों और तय कीमत वाले डील टाइप के बीच विज्ञापन से जुड़ी पाबंदियां अलग-अलग हो सकती हैं. उदाहरण के लिए, किसी वीडियो विज्ञापन के लिए, बिड लगाने वाले को हर नीलामी और तय कीमत वाले डील के लिए अलग-अलग बिड रिक्वेस्ट मिलेंगे. इनमें, विज्ञापन की ज़्यादा से ज़्यादा अवधि और स्किप किए जा सकने वाले विज्ञापनों की अनुमति जैसी पाबंदियां अलग-अलग हो सकती हैं. इसलिए, विज्ञापन अवसर पर फ़्लैट करने की सुविधा लागू करने से, आपको ओपन बिडिंग और तय कीमत वाले डील के लिए विज्ञापन की पाबंदियों को आसानी से समझने में मदद मिलती है.
स्किप करने की सुविधा और वीडियो की अवधि
OpenRTB स्पेसिफ़िकेशन में, स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले विज्ञापनों की ज़्यादा से ज़्यादा वीडियो अवधि बताने के लिए अलग-अलग फ़ील्ड नहीं होते. Google, बिड फ़्लैट करने की सुविधा का इस्तेमाल करता है, ताकि मौजूदा BidRequest.video.maxduration और BidRequest.video.skip फ़ील्ड का इस्तेमाल करके, इनके बीच अंतर किया जा सके.
यहां एक उदाहरण दिया गया है. इसमें बताया गया है कि जब स्किप न किए जा सकने वाले विज्ञापन की ज़्यादा से ज़्यादा अवधि 15 और स्किप किए जा सकने वाले विज्ञापन की ज़्यादा से ज़्यादा अवधि 60 हो, तो वीडियो इन्वेंट्री को कैसे फ़्लैट किया जाता है.
उदाहरण
max_ad_duration
skip (सही या गलत)
फ़्लैट किए बिना ओरिजनल अनुरोध
15
true
फ़्लैट किया गया अनुरोध #1: स्किप न किया जा सकने वाला विज्ञापन
15
false
फ़्लैट किया गया अनुरोध #2: स्किप किया जा सकने वाला
60
true
स्किप किए जा सकने वाले वीडियो की अवधि के लिए, बिड रिक्वेस्ट को फ़्लैट करने की प्रोसेस सिर्फ़ तब शुरू होगी, जब ये शर्तें पूरी होंगी:
अनुरोध में वीडियो अपलोड करने की अनुमति है.
स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले, दोनों तरह के वीडियो दिखाए जा सकते हैं. साथ ही, दोनों के लिए तय किए गए ज़्यादा से ज़्यादा वीडियो चलाने के समय की वैल्यू अलग-अलग होती है.
यह अनुरोध, निजी नीलामी या ओपन नीलामी के लिए ज़रूरी शर्तें पूरी करता है.
अपने तकनीकी खाता मैनेजर से संपर्क करके, इस तरह के फ़्लैट करने की सुविधा से ऑप्ट आउट किया जा सकता है. अगर यह सुविधा बंद है और पब्लिशर, स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले, दोनों तरह के वीडियो विज्ञापनों को दिखाने की अनुमति देता है, तो स्किप किए जा सकने वाले विज्ञापनों की ज़्यादा से ज़्यादा अवधि और स्किप न किए जा सकने वाले विज्ञापनों की ज़्यादा से ज़्यादा अवधि अलग-अलग हो सकती है. ऐसे में, skip को true पर सेट किया जाएगा और maxduration को स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले विज्ञापनों की ज़्यादा से ज़्यादा अवधि में से कम अवधि पर सेट किया जाएगा.
वीडियो पॉड
एक से ज़्यादा विज्ञापन अवसरों वाले वीडियो पॉड के लिए बिड रिक्वेस्ट को फ़्लैट किया जाता है,
ताकि हर बिड रिक्वेस्ट उस पॉड के किसी एक विज्ञापन अवसर के लिए हो.
इससे, किसी पॉड के लिए विज्ञापन दिखाने के एक से ज़्यादा अवसरों पर बिडिंग की जा सकती है.
Open Measurement
Open Measurement की मदद से, तीसरे पक्ष के उन वेंडर की जानकारी दी जा सकती है जो मोबाइल ऐप्लिकेशन के एनवायरमेंट में दिखाए जाने वाले विज्ञापनों के लिए, मेज़रमेंट और पुष्टि करने की सेवाएं स्वतंत्र तौर पर उपलब्ध कराते हैं.
यह पता लगाया जा सकता है कि कोई पब्लिशर, बिड रिक्वेस्ट में ओपन मेज़रमेंट की सुविधा देता है या नहीं. इसके लिए, यह देखें कि विज्ञापन अवसर में, पब्लिशर के लिए उपलब्ध क्रिएटिव एट्रिब्यूट में मौजूद OmsdkType:
OMSDK 1.0 एट्रिब्यूट को शामिल किया गया है या नहीं. यह जानकारी, फ़ॉर्मैट के आधार पर battrबैनर या वीडियो एट्रिब्यूट में दिखेगी.
Open Measurement सिग्नल वाले बिड रिक्वेस्ट का विश्लेषण करने के तरीके के बारे में ज़्यादा जानने के लिए, Open Measurement SDK के सहायता केंद्र का लेख पढ़ें.
बिड रिक्वेस्ट के सैंपल
नीचे दिए गए सेक्शन में, अलग-अलग तरह के विज्ञापनों के लिए बिड रिक्वेस्ट के सैंपल दिखाए गए हैं.
[null,null,["आखिरी बार 2025-08-21 (UTC) को अपडेट किया गया."],[[["\u003cp\u003eBid requests are sent as HTTP POST requests with a binary payload in Protobuf format, and they are parsed into a \u003ccode\u003eBidRequest\u003c/code\u003e object for access.\u003c/p\u003e\n"],["\u003cp\u003eBilling IDs, which are essential for transactions, are provided in specific fields of the \u003ccode\u003eBidRequest\u003c/code\u003e and must be used in corresponding bids.\u003c/p\u003e\n"],["\u003cp\u003eReal-time feedback, available in subsequent bid requests, offers details like creative status codes and minimum bid amounts, including a custom \u003ccode\u003eevent_notification_token\u003c/code\u003e for debugging.\u003c/p\u003e\n"],["\u003cp\u003eFirst-price auction bidding models utilize \u003ccode\u003eminimum_bid_to_win\u003c/code\u003e and \u003ccode\u003esampled_mediation_cpm_ahead_of_auction_winner\u003c/code\u003e feedback signals to help adjust bidding strategies.\u003c/p\u003e\n"],["\u003cp\u003eBid flattening separates complex \u003ccode\u003eBidRequest\u003c/code\u003e data into multiple requests based on ad formats, deals, and video ad types, all identifiable by a shared \u003ccode\u003egoogle_query_id\u003c/code\u003e.\u003c/p\u003e\n"]]],["Bid requests are HTTP POSTs using OpenRTB Protobuf, replacing the deprecated Google RTB protocol. Parsing involves `ParseFromString()` to access fields in the `BidRequest` object. Billing IDs, found in `BidRequest.imp.ext.billing_id` and `BidRequest.imp.pmp.deal.ext.billing_id`, must be specified in `BidResponse.seatbid.bid.ext.billing_id`. Key information comes from dictionary files. Bid URL macros dynamically insert `BidRequest` data. Complex bid requests can be broken into simpler, flattened requests per format or deal, such as skippable/non-skippable video ads, or video pods. Bidders get real-time feedback. The provided sample requests are used to help the process.\n"],null,[]]