بلاگ پر واپس جائیں
14 اگست، 2026Sergei Solod12 منٹ پڑھنے کا وقت

Popunder کی فریکوئنسی کو صارف کی انگیجمنٹ کے مقابل آزما کر میں نے کیا سیکھا

میں نے ایک پروڈکشن ویب ایپلی کیشن میں popunder کی فریکوئنسی بڑھائی اور تبدیلی سے پہلے اور بعد کی مجموعی انگیجمنٹ کا موازنہ کیا۔ آخر میں میں نے 45 سیکنڈ کی ابتدائی تاخیر اور کم از کم چار منٹ کا cooldown برقرار رکھا، لیکن زیادہ اہم سبق یہ تھا کہ بظاہر مستحکم اوسط انگیجمنٹ کو کتنی احتیاط سے سمجھنا چاہیے۔

popunderفریکوئنسی کی حدویب مونیٹائزیشنصارف کی انگیجمنٹویب اینالیٹکس

میرا خیال تھا کہ popunder کی فریکوئنسی میں trade-off بالکل واضح ہوگا: کم اشتہار دکھاؤ اور صارف کا تجربہ محفوظ رکھو، یا زیادہ دکھا کر آمدنی بڑھاؤ یہاں تک کہ engagement گرنے لگے۔ پروڈکشن میں تعلق اتنا سادہ نہیں نکلا۔

ایک فعال ویب ایپ میں فریکوئنسی بڑھانے کے بعد مجھے engagement data میں واضح تبدیلی کی توقع تھی۔ اس کے برعکس aggregate metric تقریباً اپنی سابقہ روزانہ کی رینج میں ہی حرکت کرتا رہا۔ کچھ دن بہتر تھے اور کچھ بدتر، مگر نئی policy کے ساتھ شروع ہونے والی کوئی واضح اور مستقل کمی نظر نہیں آئی۔

آخر میں میں نے یہ configuration برقرار رکھی:

ابتدائی تاخیر: 45 سیکنڈ
کامیاب popunder کے بعد کم از کم cooldown: 4 منٹ

میں نے frequency window بھی برقرار رکھی جس میں اسی چار منٹ کی مدت کے اندر زیادہ سے زیادہ ایک کامیاب event کی اجازت تھی:

const policy = {
  initialDelaySeconds: 45,
  cooldownSeconds: 240,
  windowSeconds: 240,
  maxEventsPerWindow: 1,
};

یہ صرف وضاحتی pseudocode ہے اور کسی مخصوص اشتہاری provider، SDK، application یا deployment سے وابستہ نہیں۔ اصل دلچسپی implementation سے زیادہ policy میں ہے۔

حقیقت میں فریکوئنسی کے دو الگ فیصلے ہیں

ابتدا میں میں سوال کو یوں دیکھتا تھا: دو popunder کے درمیان کتنے منٹ ہونے چاہئیں؟ بعد میں سمجھ آیا کہ یہ غلط abstraction ہے۔ کم از کم دو فیصلے ہیں: پہلے advertising opportunity سے پہلے delay، اور بعد کے مواقع کے درمیان minimum interval۔

یہ دونوں لمحے برابر نہیں ہیں۔ نیا visitor ابھی فیصلہ نہیں کر چکا کہ product اس کے لیے مفید ہے یا نہیں، جبکہ engaged user کافی حد تک فیصلہ کر چکا ہوتا ہے۔ اسی لیے میں نے پہلی interruption کو بعد والی interruptions کی نسبت زیادہ تحفظ دیا۔

میں نے ابتدائی سیکنڈز کو اتنی جارحانہ انداز میں monetize کرنا کیوں چھوڑا

مختصر initial delay زیادہ visitors کو جلد eligible بناتی ہے اور زیادہ ممکنہ ad events پیدا کرتی ہے۔ میکانکی طور پر یہ درست ہے، لیکن یہ دلیل اس بات کو نظر انداز کرتی ہے کہ monetization کب ہو رہی ہے۔

اگر اشتہار آمد کے تقریباً فوراً بعد ظاہر ہو جائے تو وہ site کی پہلی evaluation کا حصہ بن جاتا ہے۔ اگر صارف کو پہلے product کو سمجھنے اور استعمال کرنے کے لیے uninterrupted وقت ملے تو وہی advertising mechanism مختلف context میں سامنے آتا ہے۔

میں پہلے کم delay استعمال کرتا تھا، پھر اسے 45 سیکنڈ کر دیا۔ یہ اب بھی نسبتاً جلد ہے اور conservative setting کے طور پر منتخب نہیں کیا گیا تھا۔ مقصد صرف visit کے آغاز اور پہلی monetization opportunity کے درمیان کچھ فاصلہ رکھنا تھا۔ میں نے ان 45 سیکنڈ کو lost ad inventory کے بجائے product-acquisition time سمجھنا شروع کیا۔

45 سیکنڈ ایک threshold ہیں، مقررہ ad time نہیں

Delay ختم ہونے کا مطلب صرف eligibility ہے؛ 00:45 پر ad خودکار طور پر ظاہر ہونا ضروری نہیں۔ اصل event اب بھی کسی مناسب user interaction پر منحصر ہے۔ User 00:45 پر eligible ہو سکتا ہے، اور پہلی popunder 01:03 پر اگلی qualifying action کے بعد ہو سکتی ہے۔

Cooldown بھی اسی طرح کام کرتا ہے۔ چار منٹ کا مطلب ہے کہ پچھلے کامیاب event کے چار منٹ پورے ہونے سے پہلے دوسرا event eligible نہیں ہوگا۔ یہ ہر چار منٹ بعد خودکار اشتہار کا مطلب نہیں۔ اس لیے configured intervals کم از کم حد ہیں؛ حقیقی فاصلہ زیادہ ہو سکتا ہے۔

Repeat interval پہلی delay سے زیادہ اہم تھا

پہلی delay سے مطمئن ہونے کے بعد repeat cadence زیادہ اہم variable بن گئی۔ طویل cooldown اشتہاری دباؤ کم کرتی ہے، لیکن بہت سے engaged users شاید دوسری opportunity تک کبھی نہ پہنچیں۔

میں بیک وقت دو conditions چاہتا تھا: جو user app استعمال کرتا رہے اسے ایک اور monetization event پیدا کرنے کا حقیقی موقع ملے، اور events کے درمیان meaningful uninterrupted product use بھی باقی رہے۔

میں نے چار منٹ برقرار رکھے۔ 45 سیکنڈ initial delay کے ساتھ theoretical eligibility کے سب سے ابتدائی points تقریباً 00:45، 04:45، 08:45 اور 12:45 ہیں۔ حقیقی events بعد میں بھی ہو سکتے ہیں کیونکہ qualifying interaction ابھی بھی ضروری ہے۔

چار منٹ صرف impressions maximize کرنے سے مختلف کیوں لگے

Cooldown کم کرنے سے theoretical opportunities بڑھتی ہیں۔ اگر واحد metric user کے لحاظ سے ad opportunities ہے تو کم interval ظاہر ہے بہتر ہے۔ لیکن product کی advertising value اسی وقت تک ہے جب تک اس کی user value بھی برقرار ہے۔

اضافی monetization
-
رویّے کا نقصان
=
خالص قدر

چار منٹ صارف کو عام product use کا ایک معنی خیز block دیتے تھے جس میں اگلی popunder ناممکن تھی۔ میرے لیے یہ invariant “ہر چار منٹ میں ایک” سے زیادہ اہم تھا۔

ایک monetization event کے بعد صارف کو کئی منٹ ملتے ہیں جن میں اگلا ایسا event ممکن نہیں ہوتا۔

مجھے engagement میں واضح کمی کی توقع تھی

Deployment سے پہلے میری بنیادی hypothesis یہ تھی کہ زیادہ advertising frequency analytics میں صاف before-and-after drop پیدا کرے گی۔ اگر ایسا ہوتا تو policy نرم کرنے کی مضبوط وجہ ہوتی۔

اس کے بجائے aggregate engagement پہلے کی طرح fluctuate کرتا رہا۔ Frequency change کے بعد نہ کوئی نیا lower baseline نظر آیا، نہ مستقل کمزور values کا سلسلہ۔ جس failure mode کو میں اتنا بڑا سمجھتا تھا کہ graph میں نمایاں ہوگا، وہ واضح طور پر سامنے نہیں آیا۔

میں حقیقت میں کیا دعویٰ کر سکتا ہوں

میں یہ نہیں کہہ سکتا کہ ads کا کوئی اثر نہیں تھا، users کو برا نہیں لگا، retention بالکل unchanged رہی یا یہ configuration عالمی طور پر optimal ہے۔ Aggregate average ان باتوں میں سے کسی کو ثابت نہیں کرتی۔

میری observation سے سب سے مضبوط بات زیادہ محدود ہے:

فریکوئنسی بڑھانے کے بعد مجھے aggregate engagement میں ایسی واضح اور مستقل کمی نظر نہیں آئی جو پہلے سے موجود معمول کی variation سے باہر ہو۔

اس میں چھوٹے effects، مختلف user groups کے فرق اور average کے پیچھے چھپے behavior کے لیے جگہ باقی رہتی ہے۔ میں نے یہ جانچا کہ configuration برقرار رکھنے کے لیے کافی acceptable ہے یا نہیں؛ یہ نہیں کہ میں نے universal optimum تلاش کر لیا ہے۔

Stable average بہت مختلف behavior چھپا سکتی ہے

تقریباً unchanged aggregate average مختلف حقیقی حالات کی نمائندگی کر سکتی ہے۔ تقریباً سب users ویسے ہی رہ سکتے ہیں؛ کچھ پہلے جا سکتے ہیں جبکہ دوسرے زیادہ دیر رہیں؛ چھوٹا group منفی ردعمل دے سکتا ہے مگر average زیادہ نہ بدلے؛ یا حقیقی negative effect روزانہ کی معمول variation سے چھوٹا ہو سکتا ہے۔

اسی لیے stable average کو میں warning signal سمجھتا ہوں، zero impact کا proof نہیں۔

Engagement، visit length کے برابر نہیں

میں نے analytics engagement metric کو session کی exact average duration بھی نہیں سمجھا۔ Active engagement analytics system کی definition پر منحصر ہوتا ہے اور tab کے کھلے رہنے کے وقت کے برابر ہونا ضروری نہیں۔ Users focus بدل سکتے ہیں، بعد میں واپس آ سکتے ہیں یا ایسے navigate کر سکتے ہیں کہ سادہ “time on site” model گمراہ کن ہو جائے۔

اسی لیے میں نے interval کو “average engagement X ہے، اس لیے next pop X سے پہلے ہونا چاہیے” جیسی formula سے نہیں نکالا۔ Metric کو directional signal کے طور پر استعمال کیا: change کے بعد product پہلے سے materially کمزور لگ رہا ہے یا نہیں؟ میرے monitor کیے گئے aggregate level پر جواب نہیں تھا۔

Cooldown اور frequency window متعلق ہیں، مگر ایک جیسے نہیں

Implementation میں 240-second cooldown اور 240-second frequency window دونوں تھے، جس میں maximum ایک successful event تھا۔ بڑی حد تک redundant ہیں، مگر تھوڑے مختلف constraints ظاہر کرتے ہیں۔

Cooldown کہتا ہے کہ previous event کے بعد کافی وقت گزرے بغیر نیا event allow نہ کرو۔ Window کہتی ہے defined period میں ایک سے زیادہ successful event نہ ہونے دو۔ میں نے دونوں اس لیے رکھے کہ integration کسی mechanism کو مختلف طرح interpret کرے تب بھی intended invariant صاف رہے۔

دو successful popunder کبھی بھی چار منٹ سے کم فاصلے پر نہیں ہونے چاہئیں۔

ایک event per window کا مطلب ایک event per visit نہیں

maxEventsPerWindow = 1 کا مطلب یہ نہیں کہ visitor کے پورے قیام میں صرف ایک ad ہوگا۔ اس کا scope configured window ہے؛ window ختم ہونے کے بعد نیا window شروع ہو سکتا ہے۔ 1 user action بھی نہیں، بلکہ اس period میں ایک successful monetization event ہے۔

اب frequency logic دیکھتے وقت میں تین سوال پوچھتا ہوں: counter کیا count کرتا ہے؟ اسے reset کیا کرتا ہے؟ reset window کتنا لمبا ہے؟ ان کے بغیر 1 جیسی raw value بہت کم بتاتی ہے۔

میں نے policy کو provider-specific implementation سے الگ رکھا

Reusable behavior کو کسی vendor script، identifier یا parameter name دکھائے بغیر بیان کیا جا سکتا ہے:

function isEligible(state, now) {
  if (!state.hasShownFirstEvent) {
    return now - state.arrivalTime >= 45_000;
  }

  return now - state.lastEventTime >= 240_000;
}

یہ explanatory pseudocode ہے، production source code نہیں۔ Providers، SDKs اور deployment architecture بدلتے رہتے ہیں؛ policy زیادہ دیرپا ہے: visit کے آغاز کو protect کرو، genuine usage شروع ہونے کے بعد monetization allow کرو، hard cooldown enforce کرو اور پھر repeat کرو۔

Build success اور behavioral correctness الگ چیزیں ہیں

Typechecker، linter اور production build کئی technical properties verify کر سکتے ہیں، لیکن browser میں advertising timeline صحیح ہے یا نہیں، یہ ثابت نہیں کرتے۔ اس feature کے لیے behavioral validation بھی چاہیے۔

1. Clean browser state کھولیں۔
2. Initial delay سے پہلے interact کریں: popunder نہیں ہونا چاہیے۔
3. Initial delay گزرنے دیں۔
4. Eligible interaction کریں: پہلی popunder ہو سکتی ہے۔
5. Cooldown ختم ہونے سے پہلے interact کرتے رہیں: دوسری popunder نہیں ہونی چاہیے۔
6. Cooldown ختم ہونے دیں۔
7. دوبارہ interact کریں: اب اگلی popunder ہو سکتی ہے۔

Successful build اور successful behavioral test مختلف سوالات کے جواب دیتے ہیں۔ دونوں ضروری ہیں۔

Combined advertising experience کسی ایک placement سے زیادہ اہم ہے

دو آزاد advertising systems الگ الگ reasonable لگ سکتے ہیں مگر مل کر aggressive experience بنا سکتے ہیں۔ چار منٹ کی limits والے دو formats interleave ہو کر user کو تقریباً 00:45، 02:45، 04:45 اور 06:45 پر interruption دے سکتے ہیں۔

اس سے میں نے ایک بہتر rule اخذ کیا:

Frequency caps کو advertising script کے حساب سے نہیں بلکہ user experience کے حساب سے evaluate کرنا چاہیے۔

User interruptions کے مجموعے کو محسوس کرتا ہے، اس configuration file کو نہیں جس نے ہر interruption بنایا۔ Production audit کو پوچھنا چاہیے کہ ایک مقررہ وقت میں ایک user حقیقتاً کتنے interruptive ad events دیکھ سکتا ہے۔

Raw impression count غلط optimization target ہے

Cooldown کم کر کے زیادہ opportunities بنانا آسان ہے۔ مشکل سوال یہ ہے کہ user کی total economic value کم کیے بغیر کتنی اضافی monetization حاصل کی جا سکتی ہے۔

جو configuration فی visit کم ads دکھاتی ہے وہ وقت کے ساتھ زیادہ revenue دے سکتی ہے اگر repeat usage بہتر preserve ہو۔ اسی لیے میرے لیے revenue per user over time، impressions per visit سے زیادہ اہم ہے۔ دوسری metric آسانی سے maximize ہو جاتی ہے؛ پہلی اصل business problem ہے۔

زیادہ مضبوط experiment ایک aggregate graph سے آگے جائے گا

میری production observation اتنی کافی تھی کہ میں دیکھ سکوں جس catastrophic outcome سے ڈرتا تھا وہ واضح طور پر نہیں ہوا۔ لیکن تمام downstream effects ثابت کرنے کے لیے کافی نہیں تھی۔

زیادہ مضبوط experiment میں monetization revenue per unique user، revenue per visit، ad events per user، active engagement، meaningful product interactions، returning-user rate، retention over time اور longer-term user value کا موازنہ ہونا چاہیے۔

دونوں sides measure کرنی ہوں گی۔ صرف advertising output دیکھوں تو تقریباً لازماً نتیجہ ہوگا کہ زیادہ advertising بہتر ہے۔ صرف engagement دیکھوں تو meaningful revenue gains نظر انداز ہو سکتے ہیں جن کی behavioral cost بہت کم ہے۔

میں نے policy سادہ کیوں رکھی

مجھے مسلسل مزید exceptions شامل کرنے کی وجہ نہیں ملی۔ Final logic آسان رہی: 45 سیکنڈ انتظار، اگلی eligible interaction پر monetization، چار منٹ hard cooldown، پھر اگلی eligible interaction پر دوبارہ monetization۔

چند strong invariants کو سمجھنا، test کرنا اور debug کرنا بہت سے obscure exceptions والی policy سے آسان ہے۔

Policy کی asymmetry جان بوجھ کر ہے

نئے اور engaged users کے ساتھ policy مختلف سلوک کرتی ہے۔ New visitor کو زیادہ protection ملتی ہے؛ جو user interaction جاری رکھتا ہے وہ وقت کے ساتھ مزید monetization opportunities بناتا ہے۔

یوں advertising pressure ابتدا سے maximum ہونے کے بجائے demonstrated engagement کے ساتھ بڑھتا ہے۔ یہ conceptual change experiment کے سب سے مفید نتائج میں سے ایک تھا۔

اس case study سے میں کیا نتیجہ نہیں نکالوں گا

میں نہیں کہوں گا کہ 45 سیکنڈ universally درست ہیں، چار منٹ optimal interval ہے، higher-frequency popunder کبھی engagement کو نقصان نہیں پہنچاتے، یا stable average کا مطلب users unaffected ہیں۔ ایک production workload کو ہر web product پر generalize بھی نہیں کروں گا۔

مختلف products کے users، expectations، acquisition sources، usage patterns اور economics مختلف ہوتے ہیں۔ نتیجہ اسی لیے مفید ہے کہ یہ specific ہے، نہ کہ اس لیے کہ universal rule ثابت کرتا ہے۔

وہ حصہ جس نے میری رائے بدلی

Experiment سے پہلے مجھے advertising pressure اور engagement کا تعلق تقریباً mechanical لگتا تھا: ایک کو کافی بڑھاؤ تو دوسرا visibly کم ہونا چاہیے۔ Production behavior اتنا صاف نہیں تھا۔

میں نے frequency ایسے level تک بڑھائی جسے نسبتاً high سمجھتا تھا۔ Users interact کرتے رہے اور aggregate engagement اپنی familiar daily range میں رہی۔ اس کا مطلب cost zero نہیں تھا۔ صرف یہ کہ وہ اتنی بڑی نہیں تھی کہ میری monitored metric میں متوقع واضح signal پیدا کرتی۔

“کوئی effect نہیں” اور “اس measurement میں کوئی obvious effect نہیں” کے درمیان فرق اہم ہے۔ Production systems شاذ ہی ہمیں اتنی صاف causal stories دیتے ہیں جتنی ہم چاہتے ہیں۔

اب میرا اصول

اب میں نہیں پوچھتا کہ technically next popunder کتنی جلدی دکھا سکتا ہوں۔ میں پوچھتا ہوں monetization شروع ہونے سے پہلے new user کو کتنا uninterrupted product experience ملنا چاہیے، engaged user کو اگلے event سے پہلے کتنا uninterrupted usage ملنا چاہیے، اور کیا extra advertising total user value بڑھا رہی ہے یا صرف impression counter۔

اس application کے لیے میں نے یہ برقرار رکھا:

پہلی eligibility سے پہلے 45 سیکنڈ
successful events کے درمیان کم از کم 4 منٹ

یہ numbers صرف ایک implementation ہیں۔ وہ rule جو میں دوبارہ استعمال کروں گا زیادہ وسیع ہے:

User journey کے آغاز کو protect کریں، initial curiosity سے زیادہ demonstrated engagement کو monetize کریں، اور result کو raw advertising volume کے بجائے user-level value سے judge کریں۔