Skip to content

Meta Conversions API (CAPI) Event Match Quality Diagnostic & Normaliser

Interactive normalisation tool for Meta CAPI customer parameters. Normalise phone numbers to E.164, inspect SHA-256 hashes, and predict Event Match Quality scores.

By Gordon Geraghty·MIT Licence·Updated: 21 August 2026·INTERMEDIATE·GitHub Mirror ↗

Meta CAPI Event Match Quality (EMQ) Diagnostic & Normaliser

Signal Loss & Privacy Tool

Test real-time string normalisation for email, E.164 phone formats and address parameters. Inspect SHA-256 hashed outputs and predict your CAPI Event Match Quality score.

Raw First-Party Customer Parameters

Normalised: +61412345678
Browser Cookie Signals

Predicted Event Match Quality

Predicted EMQ Score
10 / 10
Rating: EXCELLENT
Signals Ingested
6 / 6
Parameter combination count
SHA-256 Hashed Output Inspector
em (Email Hash):
None
ph (E.164 Phone Hash):
None
Generated CAPI Server Payload Preview
{
  "event_name": "Purchase",
  "event_time": 1787396400,
  "event_id": "order_12847_1787396400",
  "action_source": "website",
  "user_data": {
    "em": [],
    "ph": [],
    "fn": [],
    "ln": [],
    "zp": [
      "3121"
    ],
    "country": [
      "au"
    ],
    "fbp": "fb.1.1718000000.123456789",
    "fbc": "fb.1.1718000000.IwAR234...",
    "external_id": [
      "usr_c74a9e2f"
    ]
  }
}
Built by Gordon Geraghty, Head of PerformanceClient-Side Web Crypto SHA-256

How Event Match Quality Affects Ad Delivery

Event Match Quality measures how effectively Meta matches server events with active user profiles. Hashed email and E.164 phone numbers deliver the largest improvements. Including browser cookie identifiers like fbp and fbc lifts match rates above 8.5 out of 10.

Implementation Code & Script

Client-Side First-Party Parameter Normalisermeta-capi-normaliser.tstypescript

Production TypeScript helper to normalise phone numbers to E.164 format and compute SHA-256 hashes prior to dispatch.

export async function hashSha256(value: string): Promise<string> {
  const clean = value.trim().toLowerCase();
  if (!clean) return '';
  const buffer = new TextEncoder().encode(clean);
  const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
  return Array.from(new Uint8Array(hashBuffer))
    .map((b) => b.toString(16).padStart(2, '0'))
    .join('');
}

export function normaliseAustralianPhone(phone: string): string {
  const digits = phone.replace(/[^\d+]/g, '');
  if (digits.startsWith('04') && digits.length === 10) {
    return '+614' + digits.slice(2);
  }
  if (digits.startsWith('0') && digits.length === 10) {
    return '+61' + digits.slice(1);
  }
  return digits.startsWith('+') ? digits : '+' + digits;
}

How to cite and attribute this tool

MIT Licence

This resource is free, open and un-gated under the MIT Open Source Licence. You are encouraged to use, integrate and cite it with attribution:

Geraghty, G. (2026). Meta Conversions API (CAPI) Event Match Quality Diagnostic & Normaliser. Gordon Geraghty Resources Hub. https://gordongeraghty.com/resources/gtm-analytics/meta-capi-emq-diagnostic
BibTeX Format
@misc{geraghty_meta_capi_emq_diagnostic,
  author = {Geraghty, Gordon},
  title = {Meta Conversions API (CAPI) Event Match Quality Diagnostic & Normaliser},
  year = {2026},
  url = {https://gordongeraghty.com/resources/gtm-analytics/meta-capi-emq-diagnostic},
  note = {Head of Performance, Empire Amplify}
}

Changelog & Version History

  • v1.0.0Initial release with E.164 phone normalisation and client-side SHA-256 hashing inspection.