Test ContactTap
What this page tests. ContactTap's job is to find phone numbers, email addresses, and postal addresses on the page you're viewing, and offer the right action for each. Every section below feeds the scanner one real-world shape that contact info actually takes in the wild — structured data a business site publishes for search engines, tap-to-call links, plain text in a dozen formats, and the messy stuff that looks like contact info but isn't.
Each item is tagged with the expected result: found means it should appear in the popup, ignored means the scanner must not report it (false-positive guard), and known miss marks a real-world format the current scanner doesn't catch yet — documented honestly, and used as the working list for improving it.
How to use it
- Install and enable ContactTap in Safari, then open this page.
- Tap the ContactTap toolbar button. Safari asks permission for this page (that's the “active tab” grant working as designed); allow it.
- Compare the popup's results against the tags below: every found item present, every ignored item absent.
Every name, number, email, and street address on this page is fictional
— phone numbers come from reserved fictional-number ranges, emails
use the reserved
example.com family of domains. Nothing here reaches a real
person if you tap Call by accident.
The other benches
This page covers the everyday cases — contact cards, links, phones, and emails. Three companion pages complete the bench:
- The scam demo — a convincing-looking support page carrying the tricks real scam pages use: a link that dials a different number than it shows, contact details hidden from view, and a premium-rate line. Watch ContactTap flag each one.
- The demo café — just want to see ContactTap work? A realistic (and entirely fictional) coffee-chain site with ten locations on three continents. Open it, tap the button, and watch everything it finds.
-
Address formats
— postal addresses in every layout, from semantic
<address>tags to the plain-text gauntlet, including the formats the scanner honestly doesn't catch yet. - Scam patterns & false positives — spoofed links, hidden numbers, premium-rate lines, and digits that only look like contact info: see exactly how ContactTap defends against each one.
1 · Structured data (JSON-LD) — contact cards
Business sites publish contact info as invisible
application/ld+json blocks for search engines. ContactTap
reads these first — they're the highest-precision source and
become named cards in the popup. The blocks below are
real script tags in this page's markup; the boxes just describe what's
inside them.
-
US business, full PostalAddress object
found — card
A
LocalBusinessnamed “Silver State Coffee Roasters” with a phone, an email, and a street / suite / city / state / ZIP address object. Expected: one card carrying all three, address assembled as412 Fremont Street, Suite 8, Las Vegas, NV 89101. -
German business, nested inside
@graph+contactPoint, address as one string found — card Tests recursion into nested structures, a plain-string address, and a non-US phone. Expected: a “Beispiel Kaffeehaus GmbH” card with the Berlin address and+49 30 12345678formatted internationally. -
Malformed JSON-LD (trailing comma)
ignored
Broken structured data is common in the wild. Expected: skipped
silently — no card, no crash, and its phone number
(
…555-0999) does not appear anywhere.
2 · Tap-to-call, tap-to-text, and mailto links
Sites that already offer tel:, sms:, and
mailto: links are declaring their contact info outright.
Expected: each resolves to a clean entry — and the query junk
after ? is stripped.
-
Plain
tel:link found — phone Call our Reno desk —tel:+17755550119, expected as(775) 555-0119. -
tel:link with trailing parameters found — phone Call the warehouse — everything from the;on is stripped, expected as(702) 555-0163. -
sms:link found — phone Text the front desk —sms:targets are phone numbers too; expected as(702) 555-0187. -
mailto:with a subject query found — email Email bookings — expected as[email protected], subject stripped. -
Uppercase
mailto:found — email Email the front desk — expected lowercased to[email protected].
3 · US phone numbers in plain text
Expected: every format below is recognized, deduplicated, and displayed in clean national format. This page's default region is US (inferred from the first structured address above).
- Parenthesized found Call us at (702) 555-0104 any weekday.
- Hyphenated found Fax: 702-555-0105.
- Dotted found Support line 775.555.0106, ask for dispatch.
- Spaced, with country code found From abroad dial +1 702 555 0107.
- Toll-free found Orders: 1-800-555-0199 (24 hours).
- With an extension found Main office (702) 555-0108 ext. 214 — the extension is part of the number, not a second hit.
-
Same number as both a link and text
found once
Our Reno desk again in plain text: (775) 555-0119. This duplicates the
tel:link in section 2 — expected exactly once in the popup, not twice.
4 · International phone numbers in plain text
Expected: numbers written with a + country code are
recognized from any region and shown in international format.
- United Kingdom found London office: +44 20 7946 0958.
- UK, unspaced found Ring +441632960983 after hours.
- France found Bureau de Paris : +33 1 99 00 12 34.
- Australia found Sydney: +61 2 5550 1234.
- Japan found Tokyo desk: +81 3-4520-9999.
-
Foreign number in national format, no
+known miss “Call our London office on 020 7946 0958” — on a US-default page a bare UK national number is indistinguishable from a malformed US one, so it is deliberately not reported rather than guessed at.
5 · Email addresses in plain text
Expected: each address below is found and lowercased, with duplicates collapsed.
- Simple found Write to [email protected] for general questions.
- Dotted local part found Reach the owner at [email protected].
- Plus-tag found Newsletter issues go to [email protected].
- Subdomain + hyphenated domain found Vendors use [email protected].
- Country TLD found Our UK reseller is [email protected].
- Duplicate in different case found once [email protected] is the same mailbox as the first item — expected once, lowercased.
6 · Contact info inside an image
Expected today: known miss — the scanner reads page text, and this text lives in pixels. On-device text recognition is planned for a later version; when it ships, this becomes a found.
(The card is drawn onto a <canvas> by this page's own
script, so its phone number and email genuinely exist only as pixels
— exactly like a photographed business card or menu. There is no
hidden text version for the scanner to cheat with.)