06/10/2026 · بقلم توكيد
تسجيل الدخول برقم الجوال في Supabase للأرقام السعودية
كيف ترسل رموز الدخول بالجوال من Supabase إلى الأرقام السعودية عبر Send SMS hook وتوكيد للتحقق، بسعر 0.09 ريال لكل رمز يصل، دون تغيير كود تطبيقك.
إن كان تطبيقك يسجّل الدخول برقم الجوال عبر Supabase ومستخدموه في السعودية، فلا تحتاج إلى حساب عند مزوّد عالمي ولا إلى اسم مرسل تسجّله بنفسك. يبقى Supabase هو من يصنع الرمز ويتحقق منه، ويتولى توكيد للتحقق إيصاله برسالة SMS إلى الجوال السعودي عبر Send SMS hook، بسعر 0.09 ريال لكل رمز يصل. وتبقى signInWithOtp وverifyOtp في تطبيقك كما هما.
الجواب المختصر
- الربط إعداد لا كود. تفعّل Send SMS hook في Supabase من نوع HTTPS، وتلصق فيه رابط Hook وقيمة Secret اللذين تنسخهما من صفحة Supabase في لوحة توكيد.
- Supabase يصنع الرمز ويتحقق منه، وتوكيد يرسله فقط. الجلسة يفتحها Supabase كما يفعل اليوم.
- السعر 0.09 ريال لكل رمز يصل. رصيد مسبق الدفع بلا عقد، والإرسال الذي يفشل لا يُخصم، و10 ريالات رصيد مجاني عند التسجيل.
- الأرقام السعودية فقط. الرقم من خارج السعودية يُرفض برسالة واضحة يعيدها Supabase إلى تطبيقك، فتعرضها أو توجّه الرقم إلى مزوّد آخر.
- الرسالة من اسم المرسل الخاص بتوكيد، ونصها يذكر اسم تطبيقك بعد مراجعته. لا اسم مرسل خاص بك فيها.
لماذا يتعثر الدخول بالجوال في السعودية
تذكر وثائق Supabase عن الدخول برقم الجوال أربعة مزوّدين جاهزين: MessageBird وTwilio وVonage وTextlocal، ويضيف دليل Twilio عندها خيار Twilio Verify. من ينشر أسعاره منهم يحاسب بالدولار، ويشترط للأرقام السعودية اسم مرسل مسجّلًا مسبقًا قبل أن تمر رسائلك.
تقول إرشادات Twilio للسعودية إن التسجيل المسبق لاسم المرسل النصي مطلوب ويستغرق نحو أسبوعين، وإن الشبكات تحجب الرسائل الآتية من معرّفات مرسل رقمية. وتضيف الصفحة نفسها أن Twilio لا تستطيع تسجيل اسم مرسل لعلامة تجارية مقرّها السعودية، بسبب لائحة تمنع إعادة بيع الحركة المحلية. أما صفحة Vonage للسعودية فتنص على أن التسجيل المسبق إلزامي، وأن الأسماء العامة مثل INFO وSMS ممنوعة.
وحال Textlocal مختلف: ما زال في قائمة Supabase، لكن صفحة الشركة تقول إن المنصة أُغلقت في 31 يوليو 2026 وتوقفت كل رسائلها وواجهاتها. فمن اعتمد عليه يحتاج إلى بديل الآن.
هذه الفجوة يسدّها Send SMS hook. تقول وثائق Supabase إنه يحل محل الإرسال المدمج، وتذكر من أغراضه استعمال مزوّد رسائل إقليمي، وهو متاح في الخطتين Free وPro. وتوكيد في هذا الإعداد هو المزوّد الإقليمي.
كيف يعمل الربط
يعطيك توكيد رابط Hook خاصًا بتطبيقك وقيمة Secret. تضعهما في Supabase، ومن تلك اللحظة يرسل Supabase كل رمز يصنعه إلى هذا الرابط بدل مزوّده المدمج، موقّعًا بمعيار Standard Webhooks.


هذا ما يحدث بين طلب الرمز وفتح الجلسة، بالترتيب:
- يكتب المستخدم رقم جواله في تطبيقك، فيستدعي تطبيقك
signInWithOtp. - يصنع Supabase الرمز ويرسله إلى رابط Hook في طلب موقّع.
- يتأكد توكيد من التوقيع، ومن أن الرقم سعودي، ومن حالة تطبيقك ورصيدك، ثم يكتب الرسالة.
- تصل الرسالة من اسم المرسل الخاص بتوكيد، ونصها يذكر اسم تطبيقك.
- يكتب المستخدم الرمز، فيتحقق منه Supabase عبر
verifyOtpويفتح الجلسة.


وهكذا تصل الرسالة إلى الجوال بالعربية، واسم تطبيقك مكان «متجر الندى»:
رمز التحقق الخاص بك لـ متجر الندى هو: 482913
@example.com #482913
السطر الأخير للتعبئة التلقائية، ويحمل نطاق موقعك بعد مراجعته، فيقترح iPhone الرمز فوق لوحة المفاتيح. وإن اخترت الإنجليزية للربط تصل بصيغة "Your Alnada Store verification code is: 482913"، ويظهر فيها الاسم الإنجليزي لتطبيقك. لغة واحدة لكل ربط، والعربية هي الافتراضية.
وتفصيل يهم من يتابع السجلات: Supabase ينتظر رد Hook خمس ثوانٍ، كما تقول وثائق Auth Hooks. لذلك يعطي توكيد بوابة الرسائل أربع ثوانٍ على الأكثر في طلبات Supabase. إن تأخرت البوابة أكثر من ذلك يُعدّ الإرسال فاشلًا، ويعود سعر الرمز إلى رصيدك، ويسمع Supabase الرد في وقته بدل أن ينتهي انتظاره بلا جواب. وإن أعاد Supabase الطلب نفسه، يعرفه توكيد من معرّفه ولا يرسله ولا يخصمه مرتين.
المقارنة مع مزوّدي Supabase الجاهزين
| الخيار | الربط مع Supabase | السعر العام لرسالة إلى رقم سعودي | طريقة الاحتساب | اسم المرسل للأرقام السعودية | من يتحقق من الرمز | نص الرسالة |
|---|---|---|---|---|---|---|
| توكيد عبر Send SMS hook | Hook من نوع HTTPS | 0.09 ريال لكل رمز | لكل رمز يصل | اسم المرسل الخاص بتوكيد، والنص يذكر تطبيقك | Supabase | عربي أو إنجليزي يكتبه توكيد |
| Twilio Programmable Messaging | مزوّد مدمج | 0.1949 دولار للمقطع (نحو 0.73 ريال) | لكل مقطع؛ والرسالة المنتهية بحالة "Failed" رسومها 0.001 دولار | اسمك المسجّل مسبقًا، نحو أسبوعين؛ ولا يُسجَّل لعلامة مقرّها السعودية | Supabase | قالب Supabase |
| Twilio Verify | مزوّد مدمج | 0.05 دولار لكل تحقق ناجح فوق سعر الرسالة (نحو 0.92 ريال معًا) | التحقق عند نجاحه، والرسالة عند إرسالها | غير منشور في الصفحات التي فتحناها | Twilio | قالب Twilio |
| Vonage | مزوّد مدمج | 0.20167 دولار للرسالة (نحو 0.76 ريال) | لكل رسالة؛ والتسليم غير مذكور | اسمك المسجّل مسبقًا (إلزامي) | Supabase | قالب Supabase |
| MessageBird (Bird) | مزوّد مدمج | غير منشور (الصفحة تعرض أسعار أمريكا فقط) | لكل مقطع؛ والتسليم غير مذكور | غير منشور في الصفحات التي فتحناها | Supabase | قالب Supabase |
| Textlocal | مزوّد مدمج (يدعمه المجتمع) | أُغلقت المنصة في 31 يوليو 2026 | لا ينطبق | لا ينطبق | لا ينطبق | لا ينطبق |
تحققنا من كل الأسعار في 2026-10-06 من الصفحات المذكورة في المصادر، والتحويل بسعر 3.75 ريال للدولار. أسعار Twilio وVonage وBird بالدولار، ولم تذكر صفحاتها أن الضريبة مشمولة. وسعر Twilio Verify هو 0.05 دولار للتحقق الناجح يُضاف إليه سعر رسالة Twilio إلى السعودية، فالمجموع 0.2449 دولار.
ما لا يظهره الجدول
المقطع والرسالة
تحاسب Twilio وBird على كل مقطع. والنص العربي يُرمَّز بحيث لا يتسع المقطع لأكثر من سبعين حرفًا، فقالب رسالة عربي يزيد على ذلك قليلًا يُحتسب مقطعين. أما توكيد فيحاسب على الرمز لا على المقطع.
الوصول والإرسال
تضيف Twilio رسومًا قدرها 0.001 دولار على الرسالة المنتهية بحالة "Failed"، ولا تقول صفحتها إن الرسالة التي لم تصل يُرد ثمنها. وصفحة أسعار Vonage لا تذكر ذلك أصلًا. أما في توكيد فالرمز الذي يفشل إرساله لا يُخصم.
الاسم الذي يراه العميل
مع المزوّد العالمي تسجّل اسم مرسل خاصًا بك وتنتظر اعتماده، ثم تظهر رسائلك به. مع توكيد تظهر الرسالة من اسم المرسل الخاص بتوكيد، ويأتي اسم تطبيقك في نصها. إن كان ظهور اسمك أنت في خانة المرسل شرطًا عندك، فتوكيد ليس الخيار المناسب، وتفاصيل ذلك في مقالنا عن اسم المرسل لرسائل SMS في السعودية.
واتساب
يتيح Supabase إرسال الرمز عبر واتساب مع Twilio وTwilio Verify فقط. أما Send SMS hook فلا يحمل القناة، فيصل رمز توكيد برسالة SMS دائمًا حتى لو طلب تطبيقك واتساب.
ولمقارنة أوسع تشمل البوابات السعودية، انظر مقارنة مزوّدي SMS OTP في السعودية.
خطوات الإعداد
أولًا، في لوحة توكيد
أنشئ حسابك وتطبيقك، واختر توكيد للتحقق ضمن المنتجات. ثم افتح التطبيق › التكاملات › Supabase واضغط «إنشاء الربط». تظهر لك قيمتان: «رابط Hook» بصيغة https://tawked.com/webhooks/supabase/...، و«Secret» تبدأ بـ v1,whsec_. ينشئ الربط ويرى قيمة Secret من يدير مفاتيح التطبيق: المالك، أو مدير أو مطوّر تشمل صلاحيته التطبيق كله لا Verify وحده.


ثانيًا، في Supabase
افتح مشروعك، ثم Authentication › Auth Hooks، واختر Add hook ثم Send SMS hook. اختر HTTPS، والصق الرابط وقيمة Secret، ثم احفظ. وإن أنشأ Supabase قيمة Secret من عنده، فالصقها في توكيد من «لديك Secret من Supabase؟». المهم أن تحمل الجهتان القيمة نفسها.
ثالثًا، فعّل الدخول بالجوال
من Authentication › Sign In / Providers فعّل Phone، ثم سجّل الدخول في تطبيقك بجوالك. تتحدث صفحة Supabase في توكيد وحدها حين يصل أول طلب، ثم حين يخرج أول رمز. وإن أردت تجربة جهة توكيد وحدها أولًا، فزر «إرسال طلب تجريبي» في الصفحة نفسها يرسل إلى جوالك ما كان سيرسله Supabase.
ومن يعمل بـ Supabase CLI محليًا يضع الإعداد نفسه في supabase/config.toml تحت [auth.hook.send_sms]: enabled = true، ورابط Hook في uri، وقيمة Secret في secrets مقروءة من متغير بيئة لا مكتوبة في الملف.
حدود تعرفها قبل الإطلاق
المراجعة قبل الإطلاق
يراجع فريق توكيد اسم كل تطبيق وموقعه قبل أن تصل رموزه إلى الناس، لأن الاسم يظهر في كل رسالة. وحتى الاعتماد تصل الرموز إلى جوال مالك الحساب الموثّق وحده، وفي أول كل رسالة علامة «[تجريبي]»، وبحد 10 رسائل تجريبية للتطبيق. أي رقم آخر يُرفض برسالة تقول إن التطبيق قيد المراجعة. وبعد الاعتماد تصل الرموز إلى كل رقم جوال سعودي، دون أي تغيير منك في Supabase.
الأرقام السعودية فقط
إن كان مشروعك يخدم أرقامًا من دول أخرى، فعليك توجيهها إلى مزوّد آخر من جهتك، لأن Hook عنوان واحد. ويحمل رد توكيد على الرقم غير السعودي الحالة 422 والرسالة "Tawked sends codes to Saudi mobile numbers only (+966 5…)."، فيعيدهما Supabase إلى تطبيقك كما هما.
الرصيد
كل رمز يُدفع من رصيد الحساب المسبق. إن نفد الرصيد يُرفض الطلب برسالة تطلب الشحن، فيفشل الدخول. فعّل تنبيه الرصيد أو الشحن التلقائي من المحفظة.
حدود الإرسال من الجهتين
يطبّق توكيد حدوده المعتادة في Verify: افتراضيًا 5 رموز لكل رقم و20 رمزًا لكل عنوان IP في الساعة، وحد يومي للإنفاق إن وضعته. ويطبّق Supabase حدوده قبل ذلك: تقول صفحة حدود Supabase إن الافتراضي 30 رسالة في الساعة للمشروع كله، ويسمح دليل الدخول بالجوال للمستخدم الواحد بطلب كل 60 ثانية. ارفع حد المشروع من Authentication › Rate Limits قبل الإطلاق، وإلا توقف الدخول عند الرسالة الحادية والثلاثين.
صلاحية الرمز يحددها Supabase
توكيد لا يعرف إن كتب المستخدم الرمز الصحيح، ولا يُنهي صلاحيته. وتقول وثائق Supabase إن الرمز ينتهي افتراضيًا بعد ساعة. فلا تقرأ حالة هذه الرموز في سجل Verify على أنها نتيجة الدخول؛ نتيجة verifyOtp هي الجواب.
أسئلة
هل أحتاج إلى تعديل كود تطبيقي؟
لا. تبقى signInWithOtp وverifyOtp كما هما، والربط كله في إعدادات مشروعك. ولا يدخل مفتاح توكيد في تطبيقك.
هل يتحقق توكيد من الرمز؟
لا. Supabase يصنع الرمز ويتحقق منه، وتوكيد يرسله فقط. لذلك لا تستدعِ واجهة التحقق في توكيد لهذه الرموز.
ماذا يرى المستخدم إن كان رقمه غير سعودي؟
يرد Supabase على تطبيقك بالحالة 422 والرسالة التي كتبها توكيد. تعرضها كما هي، أو تترجمها لمستخدميك، أو توجّه الرقم إلى مزوّد آخر.
كم تكلّف ألف عملية دخول؟
إن وصلت الرموز الألف كلها فالتكلفة 90 ريالًا بسعر 0.09 ريال للرمز. الرمز الذي يفشل إرساله لا يُخصم، والطلب الذي يعيده Supabase لا يُحتسب مرتين. والأسعار كلها في صفحة الأسعار.
هل يعمل مع Lovable أو Bolt؟
نعم، إن كان المشروع مربوطًا بمشروع Supabase خاص به تستطيع فتح Auth Hooks فيه. وصفحة توكيد مع Supabase تشرح الربط، وتفاصيل التحقق في صفحة توكيد للتحقق.
المصادر (تاريخ التحقق 2026-10-06)
- Supabase، الدخول برقم الجوال (المزوّدون المدعومون، صلاحية الرمز ساعة، طلب كل 60 ثانية): https://supabase.com/docs/guides/auth/phone-login
- Supabase، Send SMS hook (يحل محل الإرسال المدمج، مزوّد إقليمي): https://supabase.com/docs/guides/auth/auth-hooks/send-sms-hook
- Supabase، Auth Hooks (خمس ثوانٍ، Standard Webhooks، الخطط Free وPro): https://supabase.com/docs/guides/auth/auth-hooks
- Supabase، حدود الاستخدام (30 رسالة في الساعة افتراضيًا، وتُعدَّل من Authentication › Rate Limits): https://supabase.com/docs/guides/auth/rate-limits
- Supabase، إعداد Twilio (واتساب مع Twilio وTwilio Verify فقط): https://supabase.com/docs/guides/auth/phone-login/twilio
- Supabase Auth، شيفرة مزوّد Twilio Verify (التحقق عند Twilio، والنص من قالب Twilio): https://github.com/supabase/auth/blob/master/internal/api/sms_provider/twilio_verify.go
- أسعار Twilio للسعودية (0.1949 دولار للمقطع، ورسوم 0.001 دولار للرسالة الفاشلة): https://www.twilio.com/en-us/sms/pricing/sa
- إرشادات Twilio لرسائل SMS في السعودية (التسجيل المسبق، نحو أسبوعين، لا تسجيل لعلامة محلية): https://www.twilio.com/en-us/guidelines/sa/sms
- أسعار Twilio Verify (0.05 دولار للتحقق الناجح فوق رسوم القناة): https://www.twilio.com/en-us/verify/pricing
- أسعار Vonage لرسائل SMS (باختيار السعودية من قائمة الدول، 0.20167 دولار للرسالة): https://www.vonage.com/communications-apis/sms/pricing/
- Vonage، ميزات SMS وقيودها في السعودية: https://api.support.vonage.com/hc/en-us/articles/204017033-Saudi-Arabia-SMS-Features-and-Restrictions
- أسعار Bird لرسائل SMS (أسعار أمريكا فقط، لكل مقطع): https://bird.com/pricing/connectivity/sms
- إغلاق Textlocal: https://webexinteract.com/textlocal/
- أسعار توكيد: https://tawked.com/ar/pricing
إن وجدت رقمًا أعلاه قديمًا فراسلنا على support@tawked.com ونصحّحه مع تاريخ التحقق الجديد.