Add OTP numbers to
any site in 60 seconds.
One async script tag. Opens as a modal overlay. Your page stays at full speed โ our widget only loads when a user clicks.
Live Demo
Click the button below โWaiting for verification email?
Sometimes services require a phone number instead.
Select service
Instant ยท From $0.07 ยท Auto-refunded if unused
Inline Embed Demo
Drop the widget directly into your page โ no modal, no click required. Perfect for temp mail sidebars.
Your Instagram login code
no-reply@instagram.com
Waiting for the SMS verification emailโฆ
Need a phone number instead?
Temp mail split layout
<!-- Temp mail layout: inbox left, OTP widget right -->
<div style="display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap">
<!-- Your inbox column -->
<div style="flex:1;min-width:280px">
<!-- ...your inbox UI here... -->
</div>
<!-- NumberOTP inline widget -->
<div style="width:340px;flex-shrink:0">
<iframe
src="https://widget.numberotp.com/?ref=YOUR_REF_ID"
width="100%"
height="560"
frameborder="0"
loading="lazy"
style="border-radius:16px;border:1px solid #e5e7eb;display:block"
title="Get OTP Number"
></iframe>
</div>
</div>Standalone inline embed
<!-- Inline embed โ widget lives directly on your page, no modal --> <iframe src="https://widget.numberotp.com/?ref=YOUR_REF_ID" width="100%" height="580" frameborder="0" loading="lazy" style="border-radius:16px;border:1px solid #e5e7eb;display:block" title="Get OTP Number" ></iframe>
Quick Start
Two lines and you're done.
Add the script to your page (once)
<!-- 1. Add once to your <head> or before </body> --> <script async src="https://numberotp.com/widget.js"></script>
Add a button anywhere on your page
<!-- 2. Any button triggers the widget --> <button onclick="NumberOTP.open()"> Get OTP Number </button>
How it works: The script tag is async โ it never blocks your page render. It registers window.NumberOTP and sits idle. When a user clicks your button, only then does the widget open โ your page is never affected.
Integration Methods
Basic button โ opens modal widget
<!-- 2. Any button triggers the widget --> <button onclick="NumberOTP.open()"> Get OTP Number </button>
Pre-select a service โ one less click for users
<!-- Pre-select a service (e.g. WhatsApp) -->
<button onclick="NumberOTP.open({ service: 'wa' })">
Get WhatsApp OTP
</button>
<!-- Other service codes: tg (Telegram), go (Google),
ig (Instagram), fb (Facebook), tt (TikTok) -->With callbacks โ track conversions
<button id="otp-btn">Get OTP Number</button>
<script async src="https://numberotp.com/widget.js"></script>
<script>
document.getElementById('otp-btn').addEventListener('click', function() {
NumberOTP.open({
service: 'wa', // pre-select service
ref: 'YOUR_REF_ID', // your affiliate ID for revenue share
onSuccess: function(data) {
console.log('Number obtained:', data);
// e.g. show it in your UI
},
onClose: function() {
console.log('Widget closed');
}
});
});
</script>Site-Specific Guides
RecommendedTemp mail sites are our highest-converting partners โ users are already waiting for a verification code.
Why temp mail sites convert best:
Users visit temp mail sites specifically because they need to verify an account without exposing their real email or phone. Adding a NumberOTP CTA right next to the inbox means you're catching users at exactly the moment they need a phone number โ highest intent, lowest friction.
Drop-in snippets (replace YOUR_REF_ID):
<!-- Perfect placement: next to the inbox, where users wait for OTP -->
<script async src="https://numberotp.com/widget.js"></script>
<!-- Option A: sidebar CTA -->
<div style="border:1px solid #e5e7eb;border-radius:12px;padding:16px;
background:#fafafa;text-align:center;margin-bottom:16px">
<p style="margin:0 0 8px;font-size:13px;font-weight:600;color:#111">
Need a real phone number?
</p>
<p style="margin:0 0 12px;font-size:12px;color:#666">
Get a temporary number for SMS verification โ instant, private, refunded if unused.
</p>
<button
onclick="NumberOTP.open({ ref: 'YOUR_REF_ID' })"
style="width:100%;background:#000;color:#fff;border:none;border-radius:8px;
padding:10px 16px;font-size:13px;font-weight:700;cursor:pointer">
Get OTP Number
</button>
</div>
<!-- Option B: inline banner after checking inbox -->
<div onclick="NumberOTP.open({ ref: 'YOUR_REF_ID' })"
style="cursor:pointer;border:1px solid #e5e7eb;border-radius:8px;
padding:10px 14px;display:flex;align-items:center;gap:10px;
background:#fff;margin-top:8px">
<span style="font-size:20px">๐ฑ</span>
<div>
<p style="margin:0;font-size:12px;font-weight:700;color:#111">Need a phone number instead?</p>
<p style="margin:0;font-size:11px;color:#666">Instant SMS numbers โ from $0.07</p>
</div>
<span style="margin-left:auto;font-size:11px;font-weight:600;color:#000">โ</span>
</div>Best placement
Sidebar next to the inbox, or below the "Generate email" button
Best copy
"Need a phone number too?" or "Get OTP via SMS instead"
Conversion tip
Show the button after user checks inbox at least once โ higher intent
Revenue
Get high upfront commission through your link
NumberOTP.open() Options
All options are optional.
| Option | Type | Description |
|---|---|---|
service | string | Pre-select a service code (wa, tg, go, ig, fb, tt, am, dcโฆ) |
country | string | Pre-select a country by numeric ID (e.g. "12" = US, "22" = India) |
ref | string | Your affiliate / partner ID โ earns you revenue |
theme | "light" | "dark" | Force light or dark theme (default: follows system preference) |
onSuccess | function | Called when user gets a number โ receives order data object |
onClose | function | Called when the widget is dismissed |
onOpen | function | Called immediately when the widget opens |
data-numberotp Attributes
For zero-JS wiring โ hover preload included automatically.
| Attribute | Description |
|---|---|
data-numberotp | Auto-wire this button โ no onclick needed. Script handles click + hover preload. |
data-service | Service code to pre-select (same as service option above) |
data-ref | Your affiliate ID |
data-theme | Force theme: "light" or "dark" |
Popular Service Codes
watggoigfbttapamdcubtwliytspnfmmClick any row to copy the code. 800+ services available โ browse all.
Ready to monetize your traffic?
Join our affiliate program, get your ref ID, and start earning on every order your visitors place.