Track events
Track PhoneCall
Fire PhoneCall when a visitor clicks a tel: link. Essential for clinics, law firms, real estate, and every business where the conversion is a phone call, not a form.
Quick start
PhoneCall needs no payload at all — this alone tracks every phone-link click on the page:
document.querySelectorAll('a[href^="tel:"]')
.forEach(function (el) {
el.addEventListener('click', function () {
adsping('track', 'PhoneCall');
});
});Every match field you add raises your match quality — the full example below passes the visitor’s details when you know them.
Full example
Pick the tab for your stack — they all send the same event.
<script>
document.querySelectorAll('a[href^="tel:"]')
.forEach(function (el) {
el.addEventListener('click', function () {
adsping('track', 'PhoneCall', {
content_name: 'Header phone link',
email: '[email protected]',
phone: '+1 415 555 1234',
firstName: 'Jane',
lastName: 'Doe',
externalId: 'crm-12345'
});
});
});
</script>- HTML — place the snippet at the end of the
<body>(e.g. the shared footer), so everytel:link exists when it runs. - React / Next.js — render
<PhoneCallTracker />once in your layout; it attaches (and cleans up) the click listeners. - Google Tag Manager — paste the HTML snippet into a Custom HTML tag, triggered on All Pages.
- Most visitors who click a phone link are anonymous — pass the match fields only when you know the visitor. AdsPing SHA-256-hashes every personal field before it reaches the destination.
Parameters
| Field | Type | Description |
|---|---|---|
emailrecommended | string | Email address, any case. The strongest match signal. |
phonerecommended | string | Any format — AdsPing normalizes it to E.164 by country.+1 415 555 1234 |
firstName | string | Given name, plain text.Jane |
lastName | string | Family name, plain text.Doe |
city | string | City name, plain text.San Francisco |
state | string | State / region code.CA |
zipCode | string | Postal / ZIP code.94107 |
country | string | ISO-3166 alpha-2 code.US |
dateOfBirth | string | YYYY-MM-DD.1990-01-15 |
gender | string | 'f' or 'm'.f |
externalId | string | Your own customer / user id, from your CRM or auth session.crm-12345 |
| Field | Type | Description |
|---|---|---|
fbp / fbc | string | Meta browser cookies — read by pb.js, fbc even built from ?fbclid= in the URL. |
client_ip_address | string | Visitor IP, captured on AdsPing's server. |
client_user_agent | string | Visitor browser, captured on AdsPing's server. |
external_id | string | Anonymous visitor id pb.js sets on first visit (your externalId is sent in addition). |
About Event Match Quality (EMQ)
Meta scores each event 0–10 on how well it can match the event to a person. Every field you send adds signal. On top of what you pass, AdsPing attaches the things it can read server-side — so you never paste these:
fbp+fbc— Meta browser cookies, read by pb.js (it even buildsfbcfrom?fbclid=in the URL).client_ip_address+client_user_agent— the visitor’s IP and browser, captured on AdsPing’s server. Meta requires these for website events; they’re sent in plaintext (not hashed).external_id— an anonymous visitor id pb.js sets on first visit.
Every personal field (email, phone, name, address) is SHA-256 hashed before it leaves AdsPing — Meta only ever receives the hash. The more real fields your payload carries, the closer you get to EMQ 10/10.
Test it
- Click a phone link on your site.
- Open your pixel’s Report → Recent events in AdsPing.
- A PhoneCall row appears within ~10 seconds with a green Success badge.
✓ PhoneCall is live.
Every click-to-call is now a conversion signal in your connected destinations.