Click-to-X Links: mailto, sms, tel, wa.me & CTR
One tap to email, text, call, or chat, click-to-X URI schemes consistently outperform forms by 30-50% on mobile. Here is how to implement mailto:, sms:, tel:, and wa.me correctly for every platform.

Why Click-to-X Links Crush Forms on Mobile
On a phone, every interaction has friction. Typing a phone number into the dialer, switching between apps to copy an email address, or filling out a 5-field form on a 5-inch screen, each adds seconds of work that murder conversion. Click-to-X URI schemes (mailto:, sms:, tel:, wa.me/) eliminate this friction entirely. One tap launches the right app with the destination pre-filled and the user ready to send.
The Numbers Across Industries
Mobile A/B tests consistently show 30-40% higher conversion on contact buttons that use click-to-X URIs versus equivalent forms or static text. For mobile-heavy verticals, local services, support pages, sales bios, real estate, restaurant ordering, the lift is closer to 50%. For local services specifically, click-to-call conversion rates frequently hit 8-15% on well-targeted traffic versus 1-2% on the same traffic with a contact form.
Why the Lift Is So Consistent
Forms on mobile fail in predictable ways: small touch targets, no autofill from device contacts, no draft saving if the user gets interrupted, OS keyboard takes up half the screen. Click-to-X URIs sidestep all of this by handing off to a native app the user already knows, Apple Mail, the iOS dialer, iMessage, WhatsApp. The interaction completes in the OS, not in the browser. That's the entire trick.
None of these URI schemes can auto-send. tel: opens the dialer but the user has to press Call. sms: opens Messages but the user has to press Send. mailto: drafts the email but the user has to tap Send. This is by design, browser security prevents automatic communication. It also means the security risk to your visitors is zero, which is part of why these schemes are universally supported.
The Four URI Schemes Every Marketer Should Know
Four click-to-X schemes cover roughly 95% of mobile contact use cases. Knowing when to use each and how to format them correctly is the entire game.
| Scheme | What it does | Best for | Mobile lift vs form |
|---|---|---|---|
mailto: | Opens default mail app with pre-filled draft | Support, sales, docs | 3-5x |
sms: | Opens messaging app with pre-filled body | Local services, opt-in keywords | 4-6x |
tel: | Opens dialer with number ready to call | Local services, urgent support | 5-7x |
wa.me/ | Opens WhatsApp with chat ready to send | International, D2C in LATAM/India/MENA | 3-5x |
Universal Compatibility
Each scheme works on every modern smartphone (iOS 11+, Android 6+) and most desktop browsers, though desktop behavior depends on whether a default app is configured. macOS with a paired iPhone via Continuity supports all four. Windows 11 with Phone Link supports tel: and sms:. Linux varies by distribution and mail client setup.
Zero Security Risk
Because none of these schemes can auto-send, there's no phishing or automated abuse vector. The worst case is a malicious site drafting an SMS to a premium-rate number, but the user still has to tap Send. Browser vendors keep these schemes on by default for this reason. You don't need to ask permission to use them.
Mailto: Best Practices and Gotchas
The full mailto format: mailto:[email protected]?subject=...&body=...&cc=...&bcc=...
Pre-Fill the Subject for Triage
Pre-filled subjects let you triage inbound faster and route to the right inbox. Subject: Sales inquiry from /pricing tells your team the source page before they read a word. Subject: Bug report from dashboard v2 routes the message instantly. This is the cheapest analytics system in existence, no code, no tooling, just baked-in context.
Pre-Fill the Body for Speed
Body templates like Hi team, I'm interested in [PRODUCT]. My use case is reduce typing and give the user a starting point. Don't pre-fill the entire message (that removes their voice and makes the contact feel canned), but a one-line opener accelerates the response.
Three Common Gotchas
- Outlook truncates mailto URLs at ~2000 characters. Keep the total URL length under 1000 to be safe. Long pre-filled bodies will cut off mid-sentence on Outlook desktop.
- HTML in the body does not render. The body is plain text only. Use line breaks (encoded as
%0A) but not HTML tags. - Special characters need URL encoding. Spaces become
%20, ampersands inside body text become%26, line breaks become%0A, question marks become%3F.
Our Mailto Link Generator handles all encoding automatically and produces a copy-paste HTML anchor tag ready to drop into your site. It also validates the email address syntax and warns if your total URL length is approaching the Outlook limit.
For deeper analysis of when mailto wins versus forms, see our mailto vs contact form deep dive.
SMS Links: Character Limits and Pre-Filled Bodies
The format: sms:+15551234567?body=Your%20message, opens the messaging app with the recipient and a draft message pre-filled.
E.164 Phone Number Format
The number must be in E.164 format: plus sign, country code, national number, no spaces, no dashes, no parentheses. +15551234567 works; +1 (555) 123-4567 does not. International numbers work the same way: +447700900000 for UK, +919876543210 for India.
SMS Character Limits Are Tighter Than You Think
The body has carrier-imposed character limits:
- GSM-7 encoding (standard ASCII): 160 characters in a single SMS
- UCS-2 encoding (any emoji or non-ASCII Unicode): 70 characters in a single SMS
- Multi-segment: messages longer than the limit split into multiple billable SMS segments for the sender
If your pre-filled body includes a single emoji, you drop from 160 to 70 characters. Most marketers don't realize this and ship pre-filled SMS that span 3-4 segments, fine for the recipient (it appears as one message) but expensive for the sender if they reply via an SMS API.
iOS vs Android Behavior
On iOS, the body parameter populates the message draft cleanly. On Android, behavior varies by messaging app, Google Messages renders the body in the compose field, some third-party SMS apps render it as a quoted line. Test on both platforms before shipping high-traffic SMS CTAs.
Our SMS Link Generator includes a real-time segment counter so you know if your pre-filled body fits in one SMS, and shows encoding mode (GSM-7 vs UCS-2) based on what characters you've entered.
For SMS marketing campaigns, the body parameter is often used to pre-fill an opt-in keyword. sms:+12345?body=JOIN means the user just taps Send to subscribe to an SMS list. Combined with a branded short link, this becomes a one-tap mobile signup flow that outperforms email forms on mobile by 5-10x in some verticals.
Tel Links: E.164 Formatting and DTMF Support
The basic format: tel:+15551234567, opens the phone dialer with the number ready to call.
E.164 Is Mandatory for International Calls
Bare numbers without the country code prefix won't work for international users. A user in the UK clicking tel:5551234567 sees an invalid number error in their dialer. The same user clicking tel:+15551234567 gets the correctly-formatted US number ready to dial. Always include the plus and country code, even for domestic-only audiences.
Extensions and DTMF Sequences
Per RFC 3966, you can include extensions and post-dial DTMF (dual-tone multi-frequency) sequences:
- Extension:
tel:+15551234567;ext=1234, pauses, then enters extension 1234 - DTMF post-dial:
tel:+15551234567,,1,2,3, pauses (each comma = ~2s), then enters 1-2-3 to navigate an IVR menu - Combined:
tel:+15551234567,,1,2,ext=5678, navigate IVR, then enter extension
This is enormously useful for support pages where the user always needs to enter an account ID or department code. Encode the post-dial sequence in the link and the user skips the IVR maze entirely.
Display vs Href Format
Best practice: display the number in human-readable format but encode the href in canonical E.164.
<a href="tel:+15551234567">+1 (555) 123-4567</a>
The displayed format is what humans want to read; the canonical format is what the dialer parses correctly. Don't reuse the displayed format in the href, spaces and parentheses cause failures on some Android dialers.
5x Conversion on Mobile
The conversion lift from making phone numbers tappable on mobile is consistently massive. Static phone numbers require: read the number, switch to dialer, type the number, double-check, press Call. Tappable numbers: one tap, press Call. For mobile-first sites (local services, urgent support), this single change can lift conversion 3-5x.
Our Tel Link Generator handles E.164 formatting, extensions, and DTMF correctly with a visual preview of how the dialer will interpret the URL.
WhatsApp wa.me: Click-to-Chat for International Markets
WhatsApp's click-to-chat format: https://wa.me/15551234567?text=Hi%20there, opens WhatsApp with a chat ready to send. (Note: wa.me/ is WhatsApp's canonical short link; you can also use api.whatsapp.com/send?phone=...&text=... for the longer form.)
Why wa.me Matters Globally
With 2 billion+ users, WhatsApp is the dominant messaging platform in most non-US markets, India, Brazil, Mexico, Indonesia, Nigeria, MENA, much of Europe. For D2C brands selling internationally, wa.me links are essential. The conversion lift versus email contact in these markets is often 3-5x simply because WhatsApp is where customers already are.
Phone Number Format
The wa.me format is E.164 without the plus sign. +15551234567 becomes wa.me/15551234567. +919876543210 becomes wa.me/919876543210. Get this wrong (include the plus, include spaces, miss the country code) and the link opens WhatsApp's "Invalid contact" screen.
The Text Parameter Drives Reply Rates
The ?text= parameter pre-fills the message. This dramatically improves response rates. Without a pre-filled message, the customer opens an empty chat and has to think of what to write, many bounce. With a pre-filled message ("Hi! I'm interested in your summer collection"), the customer just taps Send. Pre-filled messages double or triple reply rates for D2C brands.
Cross-Platform Behavior
WhatsApp click-to-chat works on iOS WhatsApp, Android WhatsApp, WhatsApp Web (desktop), and WhatsApp Business. Clicking on iOS opens iOS WhatsApp; clicking on Android opens Android WhatsApp; clicking on desktop with WhatsApp Web active opens WhatsApp Web. The same URL handles all four cases.
Our WhatsApp Link Generator builds wa.me links with QR code output (essential for print materials, packaging, restaurant menus) and validates the phone number format. For deeper tactics on WhatsApp commerce, see our WhatsApp Business catalog playbook.
If your target market is anywhere outside the US, wa.me links should be your default contact CTA. The 2-billion-user platform is not a "nice to have", it is the dominant commerce channel in most of the world.
Beyond WhatsApp: Messenger, Viber, Signal, FaceTime
WhatsApp dominates globally, but every region has secondary chat apps that convert better for specific audiences. Knowing which to offer alongside (or instead of) WhatsApp is the difference between a generic "contact us" page and one that meets customers where they actually live.
Facebook Messenger (m.me), When the Page Already Exists
Format: https://m.me/yourpage?ref=footer-cta&text=Hi%21. The ref parameter is passed to your Messenger webhook so you can attribute conversations to a specific placement (homepage hero vs email footer vs Instagram bio). For any business that already has an active Facebook Page, this should be the second chat CTA, zero setup, every visitor already has Messenger installed, ref attribution out of the box. Build them with our Messenger Link Generator.
Viber (viber://chat), Eastern Europe and the Philippines
Format: viber://chat?number=%2B14155552671&text=Hi. In Ukraine, Belarus, Greece, and the Philippines, Viber dominates business chat the way WhatsApp dominates India. If your audience is there, a Viber CTA converts better than WhatsApp. Same E.164 phone-number requirement, same pre-filled message support. Generate them with our Viber Link Generator.
Signal (signal.me), Privacy-Conscious Clients
Format: https://signal.me/#p/+14155552671. No pre-filled message support (by design, Signal's privacy ethos rejects URL referrer leaks), end-to-end encryption by default. Lawyers, journalists, healthcare providers, security researchers, and activists pick Signal as the "serious business" alternative. Pair it with WhatsApp/Messenger so the privacy-conscious self-select toward Signal. Build them with our Signal Link Generator.
FaceTime (facetime: + facetime-audio:), Apple-Heavy Audiences
Format: facetime:+14155552671 for video, facetime-audio:+14155552671 for audio. Apple-only, but for creative agencies, real estate, healthcare providers, and personal-brand consultants whose clients live in iMessage and FaceTime, a one-tap call link in the email signature converts dramatically better than "DM me to schedule a call." Phone number OR Apple ID email both work. Build them with our FaceTime Link Generator.
The Multi-Chat Strategy
Most small businesses end up with 2-3 chat CTAs side by side, letting the visitor pick the app they already use. Common combinations: WhatsApp + Messenger (for any Facebook-page business), WhatsApp + Signal (for legal/medical/journalism), WhatsApp + Viber (for Eastern European or Filipino audiences), iMessage SMS + FaceTime (for Apple-heavy creative agencies). Use a Flyn short link per channel to track which one actually drives conversations, same destination, separate click counts.
Tracking Click-to-X Conversions
The myth: "URI scheme links can't be tracked." Reality: they can be tracked three ways, each suited to different analytics maturity.
GA4 Enhanced Measurement
GA4 fires an automatic click event when a user clicks any link with a non-HTTP scheme. The event is automatically captured under "Outbound clicks" and includes the URL clicked, page context, and user device data. No code changes required if Enhanced Measurement is on (it's on by default in 2026). The limitation: you see clicks, not conversions, you don't know if the user actually placed the call, sent the SMS, or completed the email.
Branded Short Link Redirects
Wrap your URI scheme link in a short link that redirects to it. flyn.to/call-sales redirects 301 to tel:+15551234567. The short link click is tracked in your Flyn dashboard with geographic, device, and referrer detail. This gives you per-source click data that GA4's outbound tracking doesn't surface natively. Build the destination URL with our UTM Builder for consistent campaign attribution.
Per-Source URI Variants
The simplest attribution: vary the URI itself per source. A mailto on /pricing uses Subject: Sales [src=pricing]. A mailto on /demo uses Subject: Sales [src=demo]. The inbound email's subject line tells you the source page. Zero code, zero infrastructure, perfect attribution.
Server-Side Receipt Tracking
For mature setups, your sales or support team can tag inbound emails by source in your CRM (Salesforce, HubSpot, Pipedrive). The mailto subject line carries the source; the CRM rule routes and tags based on the subject. After 90 days you have full funnel data: clicks per source → contacts per source → qualified leads per source → closed-won per source.
Common Mistakes That Break Click-to-X Links
Six failure modes account for roughly 80% of broken URI scheme implementations seen in the wild. Avoid these and your links will work everywhere.
1. Wrong Phone Number Format
The most common failure. Bare numbers (5551234567) work domestically on some devices but fail on others and break entirely for international users. Always use E.164 with the country code prefix (plus for tel:/sms:, plus omitted for wa.me/).
2. Unencoded Special Characters
Spaces, ampersands, question marks, and line breaks in pre-filled subjects/bodies must be URL-encoded. ?subject=Sales inquiry breaks; ?subject=Sales%20inquiry works. Most generators handle this; if you're hand-coding, validate every URL with a deep-link tester before shipping.
3. Missing Fallback Display
Some users have no default mail client, no SMS app, no phone integration on desktop. If your only contact CTA is <a href="mailto:...">Email us</a> with no visible email address, these users have no path forward. Always show the underlying email/phone as visible text, works as the link content AND as copy-paste fallback.
4. Over-Long Pre-Filled Bodies
Outlook truncates mailto URLs at ~2000 characters. SMS splits at 160 (or 70 with emoji). WhatsApp's text parameter has a soft limit around 800 characters before truncation. Keep pre-fills concise, opener line plus one or two context cues, not a full template.
5. Not Testing on Real Devices
URI scheme behavior varies subtly across iOS Safari, iOS Chrome, Android Chrome, Android Firefox, Samsung Internet, and desktop browsers. Test every click-to-X CTA on at least one iPhone, one Android, and one desktop browser before shipping to production. Our Deep Link Tester automates this for the common cases.
6. Forgetting Accessibility
Screen readers need useful link text. <a href="tel:+15551234567">Click here</a> tells a blind user nothing. <a href="tel:+15551234567">Call sales at +1 555 123 4567</a> is clear. Always include the actual contact destination in the link text or in an aria-label.
Some users have apps installed that intercept URI schemes, VoIP apps for tel:, third-party SMS apps for sms:, etc. The first tap may surface a "Choose app" dialog instead of going directly to the default. This is normal OS behavior, not a bug in your code. Test with at least one device that has only default apps installed to confirm the baseline experience.
When to Use Each Scheme: A Decision Framework
A copy-paste framework for choosing which scheme to use on which page.
The 4 Questions
- Is the visitor's primary contact medium voice? If yes, tel: wins. Local services, urgent support, sales calls.
- Is the visitor's primary contact medium text (async)? If yes, choose between mailto: (formal/B2B), sms: (US opt-in marketing), or wa.me/ (international/D2C).
- What's the geographic distribution of traffic? US-heavy → mailto/sms/tel. International (especially India, Brazil, MENA) → wa.me/ dominates.
- What's the brand voice? Casual/D2C/consumer → SMS or WhatsApp feels right. Enterprise/B2B → mailto with a structured subject line feels appropriate.
Vertical-Specific Recommendations
- Local services (plumbers, dentists, attorneys): tel: as primary, sms: as backup, mailto: as tertiary
- SaaS B2B: mailto: with pre-filled subject, contact form as fallback
- D2C consumer brands: wa.me/ for international, sms: for US, mailto: for press/wholesale
- Restaurants/hospitality: tel: for reservations, wa.me/ if international clientele
- Healthcare/legal: tel: for urgent, contact form with mailto fallback for non-urgent
Stacking Schemes for Maximum Reach
The highest-converting contact sections stack multiple schemes side by side: "Call us at +1-555-123, text us at +1-555-456, or email [email protected]." Three taps, three options, every visitor gets their preferred channel. The combined conversion rate of stacked schemes consistently beats any single scheme presented alone. For channel-specific deep dives, see our guides to short links in SMS marketing and add-to-calendar links for events.
Frequently Asked Questions
What is the difference between mailto:, sms:, and tel: links?
mailto: opens the default email client (Gmail, Apple Mail, Outlook) with a draft email. sms: opens the messaging app with a pre-filled text message draft. tel: opens the phone dialer with a number ready to call. All three are universally supported by every modern browser, they're built into the platform spec, not a Flyn feature.Do click-to-X links work on desktop browsers?
mailto: works if a default mail client is configured (always on macOS, ~60% of Windows). sms: works on macOS with a paired iPhone (via Continuity) and Windows 11 with Phone Link. tel: works similarly via paired phones or VoIP apps like Skype. wa.me/ works if WhatsApp Web is active. Without a paired phone or default app, desktop users see an error or nothing happens. Always show the contact info in text as a copy-paste fallback.How do I add a pre-filled message to an SMS link?
?body= followed by your URL-encoded message. Example: sms:+15551234567?body=Hi%20there. Use %0A for line breaks. Keep the body under 160 characters (or 70 if you use any emoji) to fit in a single SMS, longer messages split into multiple billable segments. Our SMS Link Generator has a real-time character counter that shows segment count and encoding mode (GSM-7 vs UCS-2) as you type.Can I use wa.me links for business?
Why should I use tel: instead of just displaying a phone number?
Can I track clicks on click-to-X links?
How do I format international phone numbers for tel: and sms: links?
+447700900000. India: +919876543210. Germany: +4915123456789. For wa.me/ links, drop the plus sign: wa.me/919876543210. Display the number to humans in readable format (+91 98765 43210) but always encode the href in canonical E.164. Domestic-only formats (e.g., 5551234567 for US) fail for international visitors.Do click-to-X links work in QR codes?
tel: URI launches the phone dialer directly when scanned. mailto: drafts an email. wa.me/ opens a chat. This is enormously effective for print materials, restaurant menus with a "Order via WhatsApp" QR, business cards with a "Call me" QR, packaging with a "Email support" QR. For QR-specific tactics, see our QR codes marketing strategy guide and use our QR Destination Audit to verify your QR resolves correctly across devices.Free tools for this
Three Flyn tools that pair well with the strategy in this article, all free, no signup needed.
WhatsApp Link Generator
Build wa.me click-to-chat links.
Mailto Link Generator
Build pre-filled mailto: links.
SMS Link Generator
Build sms: click-to-text links.
Keep reading
Three related deep-dives from the Flyn blog.

How to Track Which Posts Drive Sales, Not Just Clicks
19 min read
Postback URL Tracking: How S2S Conversion Tracking Works
17 min read
Email Newsletter Click Tracking: Measure Your Real CTR
12 min read
Ready to try Flyn?
Free plan includes 25 links/month, full analytics, and access to all 30+ free tools above. No credit card required.
Already a member? Log in

Karan Bhakuni is the founder of Flyn. He writes about branded links, click analytics, and the link-management tooling growth teams and creators actually need, drawn from building Flyn and reading a lot of user feedback.