تعلّم كيفية تصميم وبناء تطبيق ويب يتتبّع نقرات الشركاء، التحويلات، والإيرادات. يغطي نموذج البيانات، التتبع، التقارير، المدفوعات، والخصوصية.

نسب إيرادات الشركاء هو النظام الذي يجيب عن سؤال بسيط: أي شريك يجب أن يحصل على الفضل (وبكم) لحدث إيراد؟ في تطبيق ويب، هذا يعني أنك لا تقتصر على عد النقرات—بل تربط إحالة الشريك بتحويل لاحق، تحوّله إلى رقم إيراد واضح، وتجعل العملية قابلة للتدقيق.
ابدأ بكتابة تعريف من جملة واحدة يتضمن (1) ما الذي يتم نسبه، (2) لمن، و**(3) تحت أي قواعد**. على سبيل المثال:
يصبح هذا التعريف مرساة لمتطلباتك، نموذج البيانات، والنزاعات التي سيتعين عليك حلها لاحقًا.
“الشريك” غالبًا ما يشمل مجموعات مختلفة بتوقعات وسير عمل متباينة:
تجنّب إجبار الجميع على سير عمل واحد مبكرًا جدًا. يمكنك مع ذلك استخدام نظام موحّد (شركاء، برامج، عقود) مع دعم لطرق إحالة متعددة (روابط، أكواد، صفقات يدوية).
يجب أن يقدم تطبيق نسب إيرادات الشركاء العملي أربعة نتائج بشكل موثوق:
إذا كان أي واحد من هذه ضعيفًا، فلن يثق الشركاء بالأرقام—حتى لو كانت الحسابات صحيحة.
من أجل دليل عملي للبناء، الهدف ليس النقاش الفلسفي حول النسب—بل مساعدتك على إطلاق نظام عملي. يجب أن تكون النسخة الأولى الواقعية قادرة على:
link/click IDs والحفاظ عليها خلال التسجيل/الدفعيمكنك إضافة ميزات متقدمة لاحقًا (نسب متعددة اللمسات، ربط عبر الأجهزة، تصنيف احتيال معقد) بعد أن تكون الأساسيات موثوقة وقابلة للاختبار.
قبل أن تختار نموذج النسبة أو تصمّم قاعدة بيانات، حدّد بدقة ما يجب أن يثبت التطبيق أمام العمل. نسب إيرادات الشركاء هو في النهاية مجموعة من الإجابات التي يثق بها الناس بما يكفي لدفع المال.
معظم الفرق تبني من أجل “الشركاء” أولًا وتكتشف لاحقًا أن المالية أو الدعم لا يمكنهم التحقق من شيء. أدرج مستخدميك الأساسيين والقرارات التي يتخذونها:
اكتبها كاستفسارات بلغة بسيطة يجب أن يدعمها واجهة المستخدم وتقاريرك:
على الأقل، خطط لتتبع: click، lead، trial start، purchase، renewal، و refund/chargeback. قرّر أيها “قابل للعمولة” وأيها دليل داعم.
ابدأ بمجموعة قواعد واحدة واضحة—عادةً اللمسة الأخيرة ضمن نافذة قابلة للتعديل—ثم أضف نسبًا متعددة اللمسات فقط عندما تحتاج تقارير قوية وبيانات نظيفة. اجعل النسخة الأولى سهلة الشرح والتدقيق.
قبل كتابة أي كود، قرّر ما الذي “يُعطى الفضل” ومتى تنتهي صلاحية هذا الفضل. إذا لم تحدد قواعد مسبقًا، سينتهي بك الأمر في مناقشة حالات الحافة (وشكاوى الشركاء) عند كل دورة دفع.
آخر نقرة تعطي 100% من الفضل لآخر نقرة شريك قبل التحويل. بسيطة ومفهومة على نطاق واسع، لكنها قد تكافئ حركة القسيمة المتأخرة بشكل مفرط.
أولى نقرة تعطي 100% من الفضل لأول شريك قدّم العميل. تُفضّل شركاء الاكتشاف، لكنها قد تقلل من hadiah الشركاء الذين يساعدون في الإغلاق.
Linear تقسم الفضل بالتساوي عبر كل اللمسات المؤهلة داخل النافذة. تبدو “عادلة” أحيانًا، لكنها أصعب في الشرح وقد تضعف الحوافز.
Time-decay تعطي وزنًا أكبر للّمسات الأقرب إلى التحويل مع الاعتراف باللمسات السابقة. حلّ وسط لكنه يتطلب مزيدًا من الحساب والتقارير الواضحة.
اختر نموذجًا افتراضيًا واحدًا لمعظم التحويلات (الكثير من التطبيقات تبدأ بـ آخر نقرة لأنها الأسهل في الشرح والتسوية). ثم وثّق الاستثناءات صراحة حتى يتمكن الدعم والمالية من تطبيقها بشكل متسق:
حدد نافذة واحدة أو أكثر مثل 7 / 30 / 90 يومًا. نهج عملي هو نافذة قياسية (مثلاً 30 يومًا) بالإضافة لنوافذ أقصر لشركاء القسائم إن لزم.
كما حدّد قواعد إعادة التفاعل: إذا نقر العميل رابط شريك مختلف داخل النافذة، هل تحول الفضل فورًا (آخر نقرة)، أم تُقسم الفائدة، أم تبقى الشراكة الأصلية ما لم تكن النقرة الجديدة داخل “نافذة قريبة” (مثال: 24 ساعة)؟
قرر ما الذي تنسبه: الشراء الأول فقط أم صافي الإيراد مع مرور الوقت.
اكتب هذه القواعد في وثيقة قصيرة “سياسة النسبة” واربطها في بوابة الشريك حتى يتوافق سلوك النظام مع توقعات الشركاء.
نموذج بيانات نظيف هو الفرق بين “نعتقد أن هذا الشريك قاد البيع” و “يمكننا إثباته وتسويته ودفعه بشكل صحيح”. ابدأ بمجموعة صغيرة من الكيانات الأساسية واجعل العلاقات صريحة من خلال معرفات غير قابلة للتغيير.
partner_id، الحالة، شروط الدفع، العملة الافتراضية.campaign_id, تواريخ البدء/الانتهاء.link_id, ينتمي إلى partner_id وربما campaign_id.click_id, يشير إلى link_id و partner_id.visitor_id (غالبًا مشتق من معرف كوكي من الطرف الأول).conversion_id, يشير إلى click_id (عند التوفر) و visitor_id.order_id, يشير إلى customer_id ومرتبط بـ conversion_id.payout_id, يشير إلى partner_id ويجمع الطلبات المؤهلة.المسار الذهبي هو:
partner_id → link_id → click_id → visitor_id → conversion_id → order_id → payout_id
احتفظ بـ customer_id جنبًا إلى جنب مع order_id حتى يمكن متابعة المشتريات المتكررة وفق قواعدك (مثلاً: “الشراء الأول فقط” مقابل “طوال العمر”). خزّن كلًا من معرفاتك الداخلية والخارجية (مثلاً: shopify_order_id) للمطابقة.
الطلبات تتغير. صِف ذلك صراحة:
gross_amount, tax_amount, shipping_amount, fee_amount, discount_amount.currency_code بالإضافة إلى fx_rate_to_payout_currency (والطابع الزمني/مصدر ذلك المعدل).order_id (مثلاً order_adjustment_id, type = partial_refund). هذا يحافظ على تاريخ قابل للتدقيق ويتجنب إعادة كتابة الإجماليات.أضف حقول تدقيق في كل مكان: created_at, updated_at, ingested_at, source (web, server-to-server, import)، ومعرفات غير قابلة للتغيير.
لتحليل الاحتيال دون تخزين بيانات شخصية خام، خزّن حقولًا مُجزأة مثل ip_hash و user_agent_hash. أخيرًا، احتفظ بسجل تغييرات خفيف (الكيان، entity_id, القيم القديمة/الجديدة، الفاعل) حتى يمكن تفسير قرارات الدفع لاحقًا.
تتبُّع النقرات هو أساس نسب إيرادات الشركاء: يجب أن تُنشئ كل رابط شريك "سجل نقرة" دائمًا يمكنك لاحقًا ربطه بتحويل.
استخدم نمط رابط واحد أساسي يمكن للشركاء نسخه/لصقه في أي مكان. في معظم الأنظمة، الرابط الموجه للشريك لا ينبغي أن يتضمن click_id — يقوم الخادم بتوليده.
نمط نظيف شائع هو:
/r/{partner_id}?campaign_id=...&utm_source=...&utm_medium=partner&utm_campaign=...
إرشادات عملية للمعلمات:
وجّه كل حركة الشريك عبر نقطة إعادة توجيه (مثلاً /r/{partner_id}):
click_id فريدًا (UUID/ULID) واحفظ صف نقرة على الخادم (partner_id, campaign_id, user agent, IP hash, timestamp, landing URL).هذا يجعل إنشاء النقرات متسقًا، يمنع الشركاء من تزوير click IDs، ويركز فرض القواعد في مكان واحد.
تستخدم معظم الفرق الكوكي كخيار أساسي، localStorage كنسخة احتياطية، وتخزين الجلسات من جهة الخادم للجلسات قصيرة العمر.
بالنسبة للويب المحمول، قد تكون الكوكي أقل موثوقية، لذا استخدم نقطة إعادة التوجيه وخزن click_id في كل من الكوكي + localStorage.
لـ app-to-web، ادعم:
وثّق قواعد الروابط داخل بوابة الشريك (انظر /blog/partner-links) حتى لا يصبح الشركاء “مبدعين” جدًا في المعلمات.
تتبع التحويلات هو المكان الذي تكسب فيه أنظمة النسبة الثقة—أو تفقدها بصمت. هدفك هو تسجيل حدث تحويل وحيد وموثوق لكل عملية شراء حقيقية (أو تسجيل)، مع سياق كافٍ لربطه بنقرة شريك.
يمكن للمنتجات رصد التحويلات من عدة أماكن:
التوصية: اعتبر خدمة الطلبات على الخادم كمسجل التحويل القانوني، واستخدم webhooks للدفع كتأكيد/إشارة تحديث (مثلاً نقل أمر من pending إلى paid). يمكن استخدام أحداث العميل لأغراض التصحيح أو تحليلات المسار، لا لتحديد المدفوعات بدقة.
لكي تنسب الإيرادات لاحقًا، يحتاج حدث التحويل إلى معرف ثابت وطريقة للربط بنقرة.
النهج الشائع:
click_id بالطلب (مثلاً من حالة الجلسة، سجل العميل، أو توكن موقّع مُرسَل من العميل).الانضمام الأساسي يجب أن يكون conversion.click_id → click.id. إذا كان click_id مفقودًا، عرّف قواعد احتياط صريحة، مثل:
اجعل هذه الاحتياطات مرئية في أدوات الإدارة حتى يتمكن الدعم من شرح النتائج دون تخمين.
ستعيد webhooks واستدعاءات العميل المحاولة. يجب أن تكون قادرًا على تلقي نفس التحويل عدة مرات دون العد المزدوج.
نفّذ مفاتيح idempotency باستخدام قيمة فريدة ومستقرة، مثل:
order_id (الأفضل إذا كان فريدًا عالميًا)payment_provider_charge_idخزن المفتاح على سجل التحويل مع قيد فريد. عند الإعادة، أعد النجاح ولا تنشئ تحويلًا ثانيًا. هذا يمنع أكثر أخطاء المدفوعات شيوعًا الناتجة عن "إيرادات وهمية".
هنا تتحول التتبعات إلى نقود. يحتاج تطبيقك إلى مسار واضح وقابل للتدقيق من حدث متتبع إلى مبلغ يمكن دفعه—مع البقاء متوافقًا مع كيفية قياس المالية للإيرادات.
مسار عملي:
احتفظ بالطوابع الزمنية لكل تغيير حالة حتى يمكنك شرح متى ولماذا أصبح التحويل قابلًا للدفع.
حدّد ما يعنيه “الإيراد” في نظامك وخزّنه صراحة:
هياكل شائعة يمكنك دعمها بدون ترميز سياسة واحدة صلبة:
فرق المالية تحتاج بيانات يمكنها تسويتها:
برنامج الشركاء يقوم أو يفشل على الثقة. البوابة هي المكان الذي يتحقق فيه الشركاء من أن النقرات تحولت إلى تحويلات وأن التحويلات تحولت إلى نقود. لوحة الإدارة هي المكان الذي يحافظ فيه فريقك على نظافة البرنامج، استجابته، وعدالته.
ابدأ بمجموعة صغيرة من الشاشات التي تجيب على أسئلة الشركاء اليومية:
لائحة التحويلات يجب أن تتضمن الأعمدة التي تقلل تذاكر الدعم: وقت التحويل، order_id (أو معرف مقنَّع)، المبلغ المنسوب، نسبة العمولة، الحالة (قيد الانتظار/معتمد/مرفوض/مدفوع)، وحقل "سبب" قصيرًا عند الرفض.
الشركاء والإداريون يحتاجون طرقًا سريعة لتقسيم النتائج دون التصدير إلى جداول بيانات. أولوياتك:
إذا تتبعت منتجات أو خطط متعددة، أضف فلتر المنتج—لكن فقط بعد أن تصبح الأساسيات ثابتة.
أدوات الإدارة يجب أن تركز على السرعة والمساءلة:
حدّ من الضوابط اليدوية: تريد أن يصحح المسؤولون الاستثناءات، لا أن يعيدوا كتابة التاريخ بسهولة.
نفّذ RBAC من اليوم الأول:
طبق فحوص الصلاحية على مستوى الـ API (ليس فقط الواجهة)، سجّل الوصول إلى العروض الحساسة مثل تصديرات المدفوعات.
تميل تطبيقات نسب إيرادات الشركاء لأن تكون "عالية الكتابة": الكثير من النقرات، الكثير من أحداث التحويل، وتقارير قراءة مكثفة دورية. صمّم لاستيعاب الإدخال عالي الحجم أولًا، ثم حسّن القراءة بالتجميع.
قاعدة عمل معقولة هي Postgres + API + واجهة حديثة:
اجعل نقاط تتبعك بلا حالة حتى يمكنك توسيعها أفقيًا خلف موزع تحميل.
إذا أردت الانتقال بسرعة من المواصفات إلى أدوات داخلية عاملة، يمكن لـ Koder.ai مساعدتك في بناء نموذج أولي للوحة الإدارة، بوابة الشريك، وواجهات API الأساسية عبر "vibe-coding" بالدردشة. يمكنك استخدام Planning Mode لوصف التدفقات (التتبع → النسبة → المدفوعات)، توليد واجهة React مع backend Go + PostgreSQL، ثم تصدير الشيفرة المصدرية عندما تكون جاهزًا للإنتاج.
لا تنفّذ الأعمال المكلفة في دورة الطلب/الاستجابة. استخدم صف انتظار (SQS/RabbitMQ/Redis queues) وعمال لـ:
يجب أن تكون العمالات idempotent: إذا عملت مرتين، تظل النتائج صحيحة.
جداول النقرات تنمو بسرعة. خطط للاحتفاظ مُسبقًا:
في Postgres، فكّر في تقسيم زمني للنقرات (مثلاً تقسيم شهري) وفهرسة حسب (occurred_at, partner_id) بالإضافة لمفاتيح البحث مثل click_id. يساعد التقسيم في صيانة الفهرس وإفراغ الحلقات القديمة بسهولة عبر حذف الأقسام.
إخفاقات التتبع غالبًا ما تكون صامتة ما لم تقيسها. أضف:
سجّل بمعرف ارتباط ثابت (مثلاً click_id/conversion_id) حتى يمكن للدعم تتبع مطالبة الشريك من الطرف إلى الطرف.
ضوابط الاحتيال ليست فقط لاكتشاف الجهات المُسيئة—إنما تحمي أيضًا الشركاء الشرفاء من عدم الدفع بسبب بيانات ضوضائية. النهج الجيد يجمع بين حماية آلية (سريعة ومتسقة) ومراجعة بشرية (مرنة وسياقية).
الذاتية الإحالة تحدث عندما يحاول الشركاء كسب عمولات على مشترياتهم أو تسجيلاتهم الخاصة (غالبًا قابلة للاكتشاف عبر بصمات الدفع المتكررة، الإيميلات، أو إشارات الجهاز).
حشو الكوكي والنقرات المزعجة تحاول "المطالبة" بالمستخدمين دون نية حقيقية—مثلاً إطارات مخفية، إعادة توجيهات قسرية، أو حجم نقرات مرتفع مع تفاعل قريب من الصفر.
القيادة المزيفة هي تعبئات نماذج منخفضة الجودة تهدف لتشغيل دفعات CPA. تسرب القسيمة يحدث عند مشاركة رمز خاص علنًا، ما يحوّل النسبة بعيدًا عن المصدر الحقيقي.
ابدأ بحدود معدل على النقرات والتحويلات لكل شريك، لكل نطاق IP، ولكل مستخدم/جلسة. اقترن ذلك بإشارات كشف البوت: شذوذ user-agent، غياب تنفيذ JavaScript، توقيتات مريبة متسقة، عناوين IP لمراكز بيانات، وبصمات جهاز متكررة.
أضف إنذارات شذوذ. لا تحتاج إلى ML متقدم لتستفيد: حدود بسيطة مثل "معدل التحويل يتضاعف 5× أسبوعًا إلى أسبوع" أو "العديد من التحويلات ببيانات وصفية متطابقة" تلتقط معظم المشاكل. يجب أن تربط الإنذارات برؤية تفصيلية في لوحة الإدارة (مثلاً /admin/partners/:id/attribution).
لجودة البيانات، قم بالتحقق عند الاستيعاب. اطلب click IDs أو توكنات موقعة للشريك حيثما ينطبق، ارفض UTMs المشوهة، وقم بتطبيع حقول البلد/العملة. الكثير من التحقيقات تتعثر لأن السجلات ناقصة أو الانضمامات غامضة.
امنح المشغلين قائمة واضحة: أعلام (السبب + الشدة)، ملاحظات، وخط زمني للنقرات والتحويلات ذات الصلة.
ادعم حجب التحويلات ("قيد الانتظار") حتى لا تدخل الأحداث المشبوهة المدفوعات فورًا. نفّذ تحذيرات للشركاء وتصعيدًا (تأخيرات مؤقتة في المدفوعات، قيود على المرور، أو إزالة من البرنامج)، واجعل الإجراءات متسقة عبر قوالب.
احتفظ بسجل تدقيق غير قابل للتغيير لـ:
هذا ضروري لنزاعات الشركاء، تسوية المالية، والمساءلة الداخلية—خاصة عندما يمكن لعدة أشخاص تغيير القواعد والمدفوعات.
تتطرق نسب إيرادات الشركاء إلى التتبع، الهوية، والمدفوعات—ثلاثة مجالات يمكن أن يسبب خطأ صغير فيها مخاطر كبيرة. الهدف هو قياس الإحالات وحساب المدفوعات مع جمع أقل قدر ممكن من البيانات الشخصية وحماية ما تخزّنه.
ابدأ بحد أدنى مجموعة البيانات المطلوبة لنسب تحويل وتسوية الإيرادات:
partner_id, campaign_id, ومعرف click_id المولد.click_time و conversion_time.order_id (أو transaction_id داخلي)، العملة، الإيراد الصافي، وحالة الاسترداد.تجنّب جمع بيانات غير ضرورية:
click_id, internal_customer_id بدلًا من المعرفات الشخصية.إذا كنت تعتمد على الكوكيز أو معرّفات مماثلة، فقد تحتاج موافقة حسب المنطقة وما تخزنه.
نهج عملي هو دعم التتبع من جهة الخادم (postbacks) للشركاء القادرين، واستخدام كوكيز جانب العميل فقط حيث يسمح القانون والضرورة.
عامل بيانات النسبة والمدفوعات كبيانات تجارية حساسة، وطبق ضوابط قياسية:
فكّر أيضًا في الاحتفاظ بالبيانات: احتفظ بسجلات مستوى الحدث الخام فقط طالما تحتاجها للتسوية والنزاعات، ثم قم بالتجميع أو الحذف.
تُصبح السجلات غالبًا تسريبًا عرضيًا للبيانات. اجعل قواعد التسجيل صريحة:
order_id, click_id) وخزن أي حمولات حساسة في مخزن آمن مع وصول مقيد، وليس في سجلات نصية عادية.انشر إشعار خصوصية واضح ووثق تدفقات البيانات. عندما يسأل الشركاء عن كيفية عمل التتبع، ستكون قادرًا على شرحه ببساطة—وبأمان.
نظام نسب الشركاء مفيد فقط إذا وثقته الشركاء والمالية يمكنها تسويته. اعتبر الاختبار والإطلاق جزءًا من المنتج: أنت تتحقق من قواعد العمل، سلامة البيانات، وسير العمل التشغيلي—وليس مجرد الكود.
ابدأ بمجموعة صغيرة من السيناريوهات “الذهبية” التي يمكنك إعادة تشغيلها نهاية إلى نهاية:
conversion_id)، عدم وجود دفعات سالبة، وتناسق بين "الإيراد المنسوب" و"أساس الدفع".تغيير قواعد النسبة سيغيّر الأرقام التاريخية—خطط لذلك صراحةً. احتفظ بالأحداث الخام (نقرات، تحويلات، استردادات) غير قابلة للتغيير، ثم أعد حساب النسب في جداول مُرقّمة بالإصدارات (مثلاً attribution_results_v1, v2). للحجوم الكبيرة، قم بالإعادة على دفعات (بحسب اليوم/الأسبوع) مع وضع "وضع تجريبي" يُنتج تقرير فرق يمكن لمالية مراجعته.
جرّب مع مجموعة صغيرة من الشركاء (5–10). خلال الطيار:
اطلق التغييرات خلف أعلام ميزات، وثّق نسخ القواعد في البوابة، وأعلن أي تغييرات قد تؤثر على الأرباح.
تشغيليًا، يساعد وجود تراجع سريع لتقارير ومنطق المدفوعات. إذا كنت تبني بسرعة في Koder.ai، فالتقاطات واسترجاعات النسخ مفيدة للتكرار الآمن على كود القواعد والواجهة مع الاحتفاظ بنسخة جيدة معروفة جاهزة.
إذا أردت لاحقًا استكشاف التغليف والبدء، انظر /pricing، أو تصفح الأدلة ذات الصلة في /blog.
نسب إيرادات الشركاء هي مجموعة القواعد والبيانات التي تحدد أي شريك يحصل على الفضل في حدث إيراد (وبكم)، بناءً على أدلة مثل click IDs، رموز القسائم، ونوافذ التوقيت.
تعريف عملي مفيد يجب أن يشمل:
ابدأ بكتابة سياسة من جملة واحدة، ثم أدرج الاستثناءات.
سياسة V1 جيدة غالبًا هي:
click_id يتم التقاطه عبر إعادة التوجيه وتثبيته على الخادم مع الطلببعدها وثّق الاستثناءات مثل أسبقية القسائم، التجديدات، وما إذا كان الزيارات المباشرة تكسر النسبة.
على الأقل، تعقب:
حتى لو أضفت لاحقًا أحداثًا مثل lead أو trial، فهذه الثلاثة تتيح ربط المرور → الإيراد → العكسات بطريقة آمنة للدفع.
استخدم نقطة إعادة توجيه (مثل /r/{partner_id}) التي:
server-issued click_idهذا يمنع الشركاء من تزوير click IDs ويجعل التتبع متسقًا عبر أماكن النشر.
فضلًا اختر إنشاء الطلب على الخادم كمصدر التحويل الموثوق.
بشكل عملي:
click_id (أو توكن النسبة) بالطلب عند إنشائههذا يقلل من الازدواجية ويجعل تسوية المالية أسهل بكثير.
استخدم مفاتيح idempotency حتى لا تُنشأ تحويلات مكررة عند إعادة المحاولة.
المفاتيح الشائعة:
order_id (الأفضل إذا كان فريدًا عالميًا)payment_provider_charge_idفَرِض قيدًا فريدًا في قاعدة البيانات. عند التكرار، أعد نجاح العملية دون إنشاء تحويل أو بند عمولة جديد.
اسعَ إلى سلسلة يمكنك إثباتها من الطرف إلى الطرف:
partner_id → link_id → click_id → visitor_id → conversion_id → order_id → payout_idخزن المعرفات الداخلية والخارجية (مثلاً shopify_order_id) وحقول الطوابع الزمنية (created_at, ingested_at) لتمكين تتبع المنازعات والتسوية مع نظام الفوترة.
صمم المال مع قابلية التدقيق والرجوع في الاعتبار:
currency_codeهذا يحافظ على السجل ويسمح ببنود سالبة في دورات الدفع اللاحقة عند الحاجة.
ابدأ بشاشات صغيرة تقلل تذاكر الدعم:
اجعل كل تحويل قابلًا للشرح عبر حقول دليل مثل وقت النقر، order_id (مقنّن)، والقاعدة المطبقة.
استخدم ضوابط خفيفة ومتسقة:
من ناحية الخصوصية، خزّن الحد الأدنى اللازم (معرفات مزيفة)، هشّش الإشارات الحساسة (مثل IP) عندما يكون ذلك ممكنًا، وتجنّب تسجيل أسرار أو بيانات الدفع.