Skip to main content
Beta: Front-End Checklist is currently in beta. Some issues are still being fixed. Thanks for your patience.
SEOMedium

Tel & Mailto Links

Validates that phone numbers use the tel: scheme and email addresses use the mailto: scheme for one-click contact on mobile devices.

Utilities
Quick take
Typical fix time 10 min
  • Wrap phone numbers in `<a href="tel:+15551234567">` for click-to-call on mobile devices
  • Wrap email addresses in `<a href="mailto:contact@example.com">` for one-click email compose
  • Use E.164 format for `tel:` links: `+` followed by country code and number, no spaces or dashes
  • Plain text phone numbers and emails require users to copy-paste — a UX and conversion friction point
Why it matters: On mobile devices, tel: and mailto: links trigger the native phone dialer and email client with one tap; plain-text contact info forces copy-paste and measurably reduces contact conversion rates.

Rule Details

The tel: and mailto: URI schemes are standard HTML link types that invoke native device capabilities such as the phone dialer and email client. RFC 3966 (opens in new tab) defines the tel: syntax, and the same crawlable-link expectations in invalid links still apply even when the goal is contact UX rather than page discovery.

Code Examples

<!-- ✅ Correct: E.164 format in href, human-readable in link text -->
<a href="tel:+442071234567">+44 (0)20 7123 4567</a>
 
<!-- ✅ US number -->
<a href="tel:+15551234567">(555) 123-4567</a>
 
<!-- ❌ Wrong: spaces in href value -->
<a href="tel:+1 555 123 4567">...</a>
 
<!-- ❌ Wrong: number not linked at all -->
<p>Call us: +1 (555) 123-4567</p>

E.164 Format

E.164 is the international standard for phone numbers:

  • Starts with +
  • Followed by country code (1–3 digits)
  • Followed by subscriber number (no spaces, dashes, or parentheses)
  • Maximum 15 digits total
+12125551234    (US: +1, area 212, number 5551234)
+442071234567   (UK: +44, London 020, number 71234567)
+33123456789    (France: +33)

Why It Matters

On mobile devices, tel: and mailto: links trigger the native phone dialer and email client with one tap; plain-text contact info forces copy-paste and measurably reduces contact conversion rates. MDN's tel-link reference (opens in new tab) is the practical implementation baseline here.

<!-- ✅ Basic email link -->
<a href="mailto:hello@example.com">hello@example.com</a>
 
<!-- ✅ With subject and body pre-filled -->
<a href="mailto:support@example.com?subject=Help%20Request&body=Hello%2C%20I%20need%20help%20with...">
  Contact Support
</a>
 
<!-- ✅ Multiple recipients (separate with comma) -->
<a href="mailto:one@example.com,two@example.com">Email both contacts</a>
 
<!-- ❌ Wrong: email as plain text -->
<p>Email: support@example.com</p>

When combined with LocalBusiness schema or Person schema:

<script type="application/ld+json">
{
  "@type": "LocalBusiness",
  "name": "Acme Plumbing",
  "telephone": "+15551234567",
  "email": "info@acmeplumbing.com"
}
</script>
 
<!-- Ensure the visible page links match schema data -->
<a href="tel:+15551234567">(555) 123-4567</a>
<a href="mailto:info@acmeplumbing.com">info@acmeplumbing.com</a>

Accessibility Note

For screen readers, the link text should be the human-readable number, not the E.164 format:

<!-- ✅ Screen reader reads: "plus one five five five one two three four five six seven" -->
<a href="tel:+15551234567" aria-label="Call us at 1 555 123 4567">
  +1 (555) 123-4567
</a>

Exceptions

  • Necessary utility or compliance pages can be intentionally brief and should not be judged by the same editorial-depth expectations as ranking-focused content.
  • AI-assisted drafting is not a failure by itself; flag unsupported claims, missing editorial review, or low-originality output instead.
  • When a page has both trust-signal issues and crawl/index problems, make the page eligible to rank first and then improve the content quality signals.

Standards

  • Use these references as the standard for the final search-facing HTML, metadata, and crawl behavior.
  • Check the implementation against IETF RFC 3966: The tel URI for Telephone Numbers before treating the rule as satisfied.
  • Check the implementation against MDN: tel URI scheme before treating the rule as satisfied.

Verification

Automated Checks

  • Inspect rendered HTML and HTTP headers to confirm the expected metadata or crawlability signal is present.
  • Test the affected URL with Google Search Console or equivalent tooling where relevant.
  • Re-crawl a representative page set after deployment.

Manual Checks

  • Confirm the change does not create conflicting canonical-url, robots, or structured-data signals.

Use with AI

Copy these prompts to use with your AI assistant, or install the MCP server to use directly from Claude, Cursor, or Windsurf.

Check

Verify implementation

Scan the HTML for phone numbers (patterns like `\+?[0-9\s\-().]{7,}`) and email addresses (`[\w.-]+@[\w.-]+\.[a-z]{2,}`). Verify that phone numbers are wrapped in `<a href="tel:...">` and emails in `<a href="mailto:...">`. Flag any that appear as plain text.

Fix

Auto-fix issues

Wrap each phone number in an anchor tag: `<a href="tel:+15551234567">+1 (555) 123-4567</a>`. Wrap each email in: `<a href="mailto:contact@example.com">contact@example.com</a>`. Format tel: values using E.164 (+[country][number]) without spaces.

Explain

Learn more

Explain how tel: and mailto: URI schemes work in HTML, why E.164 format is required for international compatibility, and how these links improve mobile UX and contact conversion rates.

Review

Code review

Review metadata generation, rendered HTML, structured data, and response headers related to Tel & Mailto Links. Flag exact routes or templates where search-facing output violates the rule, and describe how to verify the final page output.

Sources

References used to support the guidance in this rule.

Further Reading

Tools and supplementary material for exploring the topic in more depth.

Google Search Console
search.google.comTool

Rules that often go hand-in-hand with this one.

Do not link from HTTPS to HTTP

Detects links from HTTPS pages to HTTP destinations, which trigger mixed content warnings and lose ranking signals

SEO
Add FAQPage schema markup

Validates FAQPage JSON-LD structured data for question-and-answer content

SEO
Add internal links to key pages

Validates that key pages receive adequate internal links from other site pages

SEO
Fix invalid links

Detects malformed, empty, or syntactically invalid link formats on the page

SEO

Was this rule helpful?

Your feedback helps improve rule quality. This stays internal for now.

Loading feedback...
0 / 385