{"id":8831,"date":"2026-08-18T06:23:00","date_gmt":"2026-08-18T04:23:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=8831"},"modified":"2026-10-24T01:42:42","modified_gmt":"2026-10-23T23:42:42","slug":"meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/","title":{"rendered":"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication"},"content":{"rendered":"<h2>What EMQ measures<\/h2>\n<p>Meta Pixel sends events from a browser; the Conversions API (CAPI) sends events from a server. When both report the same purchase, matching identifies a possible Meta account and deduplication identifies the repeated event. These are separate tasks.<\/p>\n<p>Event Match Quality (EMQ) is a score out of 10 for the customer information supplied with web events. The score indicates how useful the information may be for matching. An EMQ of 8 does not mean that 80% of purchases were matched. Neither a high score nor successful deduplication proves correct attribution, incremental sales or lawful processing.<\/p>\n<h2>Normalise each field before hashing<\/h2>\n<p>SHA-256 creates a fixed-length fingerprint of an input. A trailing space changes the hash. Meta therefore specifies field-specific preparation:<\/p>\n<ul>\n<li><code>em<\/code>: trim surrounding whitespace and convert the email address to lowercase. Suspicious control or invisible format characters should trigger validation rather than silent changes to an address.<\/li>\n<li><code>ph<\/code>: establish the international number with the correct country code before removing formatting. Removing non-digits alone does not add a country code or correctly handle a national trunk prefix.<\/li>\n<li>Names and address fields: follow the individual parameter rules. A blanket removal of accents is incorrect; Meta&#8217;s name example preserves the accented character in <code>val\u00e9ry<\/code>.<\/li>\n<\/ul>\n<p>Email addresses, telephone numbers and the specified name\/address fields require SHA-256 hashing. Client IP address, user agent, <code>fbp<\/code> and <code>fbc<\/code> are transmitted unhashed. Hashing <code>external_id<\/code> is recommended by Meta, rather than universally required by the API. Hashing does not turn linkable customer information into anonymous data.<\/p>\n<h3>A deliberately narrow Node.js example<\/h3>\n<p>The following ES module hashes an email address or an already validated international telephone number. The email check is a basic plausibility check, not full address validation. Telephone parsing and country validation belong upstream; the regular expression only checks the accepted shape. National or formatted numbers are rejected instead of guessed. A significant zero after a country code remains intact.<\/p>\n<pre class=\"wp-block-code-beautifier-block-code\"><code>import { createHash } from 'node:crypto';\nconst sha256 = value =&gt; createHash('sha256').update(value, 'utf8').digest('hex');\nexport function hashEmail(raw) {\n  if (typeof raw !== 'string') return null;\n  const email = raw.trim().toLowerCase();\n  if (\/[\\p{Cc}\\p{Cf}]\/u.test(email) || !\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/u.test(email)) return null;\n  return sha256(email);\n}\nexport function hashCanonicalPhone(e164) {\n  if (typeof e164 !== 'string' || !\/^\\+[1-9][0-9]{6,14}$\/.test(e164)) return null;\n  return sha256(e164.slice(1));\n}\n<\/code><\/pre>\n<p>Invalid inputs return <code>null<\/code> and must be omitted from the payload. An SDK or tag template may already normalise and hash fields: double hashing produces the wrong identifier. The selected integration&#8217;s input contract therefore matters.<\/p>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" alt=\"Normalisation chain from raw value through normalisation to SHA-256, and two senders whose shared event ID makes Meta count a single event\" height=\"750\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/quality-8831-20261024.png\" width=\"1120\"\/><figcaption>Field-specific normalisation precedes hashing. Deduplication additionally requires a matching event name, Pixel ID and receipt window.<\/figcaption><\/figure>\n<h2>One event, one shared identifier<\/h2>\n<p>The recommended pairing uses the same event name and event identifier for the same Pixel ID. In the browser the parameter is <code>eventID<\/code>; in CAPI the parameter is <code>event_id<\/code>. For a purchase, both event names must be <code>Purchase<\/code>. Meta documents a 48-hour receipt window measured from the first event with that identifier.<\/p>\n<p>The identifier can originate in the backend or browser. A stable purchase-event identifier created once and passed to both paths is preferable to two independently generated values. Retries of the same event retain the identifier; a new purchase receives a new identifier. An identifier shared by all purchases would collapse distinct events.<\/p>\n<p>Fast delivery reduces queue-related problems, but does not guarantee an immediate dashboard update. The server payload is not always retained or merged in full. Meta describes several strategies and generally prefers the first event received when the contents do not differ meaningfully.<\/p>\n<h2>Cookies, external IDs and consent<\/h2>\n<p>The <code>_fbp<\/code> and <code>_fbc<\/code> cookies are first-party cookies. Existing values can populate <code>fbp<\/code> and <code>fbc<\/code>. A constructed <code>fbc<\/code> requires an actually observed <code>fbclid<\/code>; the click identifier is case-sensitive. Fabricated values do not improve measurement.<\/p>\n<p>An <code>external_id<\/code> is an advertiser-assigned customer identifier. Meta can associate the identifier with an account after a match using other customer information, then reuse that association for later events. Associations expire periodically. Consistent identifiers can help continuity, but cannot guarantee cross-device attribution weeks later or extend an attribution window.<\/p>\n<p>For a consent-based advertising setup, the browser and server paths both need the applicable consent check. Google Consent Mode does not automatically block a Meta server tag: the CMP signal must be explicitly mapped and enforced. Revocation must also stop queued transmissions when consent no longer permits processing. Hashing and server-side transport do not replace these controls.<\/p>\n<h2>Validation before relying on the reports<\/h2>\n<p>A controlled purchase should produce a browser event and a server event with identical name and identifier, followed by the expected deduplication result. Separate checks cover absent consent, withdrawal, retries, delayed delivery and missing identifiers. EMQ trends are useful diagnostics alongside event counts and processing errors, not a standalone quality certificate.<\/p>\n<p>The related implementation walkthrough is <span class=\"lw-artikel-geplant\">Meta Conversions API through server-side GTM<\/span>.<\/p>\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n<h3>Does arrival order matter?<\/h3>\n<p>With the recommended event-ID pairing, either channel can arrive first within the documented window. Arrival order can affect the retained data; richer server parameters are not guaranteed to survive. The alternative pairing using <code>fbp<\/code> or <code>external_id<\/code> generally requires the browser event first and has different limitations. Queue monitoring should therefore cover maximum delay and the actual matching method.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.facebook.com\/documentation\/ads-commerce\/conversions-api\" rel=\"noopener noreferrer\" target=\"_blank\">Conversions API documentation<\/a><\/li>\n<li><a href=\"https:\/\/developers.facebook.com\/documentation\/ads-commerce\/conversions-api\/deduplicate-pixel-and-server-events\" rel=\"noopener noreferrer\" target=\"_blank\">Conversions API deduplication<\/a><\/li>\n<li><a href=\"https:\/\/developers.facebook.com\/documentation\/ads-commerce\/conversions-api\/parameters\/customer-information-parameters\">Customer information parameters<\/a><\/li>\n<li><a href=\"https:\/\/developers.facebook.com\/documentation\/ads-commerce\/conversions-api\/parameters\/external-id\">External ID<\/a><\/li>\n<li><a href=\"https:\/\/developers.facebook.com\/documentation\/ads-commerce\/conversions-api\/parameters\/fbp-and-fbc\">FBP and FBC<\/a><\/li>\n<li><a href=\"https:\/\/developers.facebook.com\/documentation\/ads-commerce\/conversions-api\/best-practices\">Conversions API best practices<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/security\/concepts\/consent-mode\">Google Consent Mode<\/a><\/li>\n<li><a href=\"https:\/\/eur-lex.europa.eu\/legal-content\/EN\/TXT\/?uri=CELEX%3A32016R0679\">GDPR: Article 4 and Recital 26<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Technical guide on maximizing Meta CAPI Event Match Quality (EMQ) through server-side PII normalization, SHA-256 hashing, event_id deduplication, and GDPR compliance.<\/p>\n","protected":false},"author":1,"featured_media":14091,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[91261,91279,91270,91057,91114,91061,91516],"class_list":["post-8831","post","type-post","status-publish","format-standard","hentry","category-digital-analytics","tag-conversion-tracking","tag-prywatnosc-danych-pl","tag-gdpr","tag-meta-conversions-api","tag-pii-protection","tag-server-side-gtm","tag-tracking"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Configure Meta CAPI: normalize data, generate SHA-256 hashes and deduplicate browser and server events with event_id.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Configure Meta CAPI: normalize data, generate SHA-256 hashes and deduplicate browser and server events with event_id.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-18T04:23:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T23:42:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8831-meta-conversions-api-maximizing-emq--g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication\",\"datePublished\":\"2026-08-18T04:23:00+00:00\",\"dateModified\":\"2026-10-23T23:42:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/\"},\"wordCount\":812,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8831-meta-conversions-api-maximizing-emq--g.png\",\"keywords\":[\"Conversion Tracking\",\"Data Privacy\",\"GDPR\",\"Meta Conversions API\",\"PII Protection\",\"Server-Side GTM\",\"Tracking\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/\",\"name\":\"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8831-meta-conversions-api-maximizing-emq--g.png\",\"datePublished\":\"2026-08-18T04:23:00+00:00\",\"dateModified\":\"2026-10-23T23:42:42+00:00\",\"description\":\"Configure Meta CAPI: normalize data, generate SHA-256 hashes and deduplicate browser and server events with event_id.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8831-meta-conversions-api-maximizing-emq--g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8831-meta-conversions-api-maximizing-emq--g.png\",\"width\":1200,\"height\":630,\"caption\":\"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication | Lukas Wojcik","description":"Configure Meta CAPI: normalize data, generate SHA-256 hashes and deduplicate browser and server events with event_id.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/","og_locale":"en_US","og_type":"article","og_title":"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication | Lukas Wojcik","og_description":"Configure Meta CAPI: normalize data, generate SHA-256 hashes and deduplicate browser and server events with event_id.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-18T04:23:00+00:00","article_modified_time":"2026-10-23T23:42:42+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8831-meta-conversions-api-maximizing-emq--g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication","datePublished":"2026-08-18T04:23:00+00:00","dateModified":"2026-10-23T23:42:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/"},"wordCount":812,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8831-meta-conversions-api-maximizing-emq--g.png","keywords":["Conversion Tracking","Data Privacy","GDPR","Meta Conversions API","PII Protection","Server-Side GTM","Tracking"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/","name":"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8831-meta-conversions-api-maximizing-emq--g.png","datePublished":"2026-08-18T04:23:00+00:00","dateModified":"2026-10-23T23:42:42+00:00","description":"Configure Meta CAPI: normalize data, generate SHA-256 hashes and deduplicate browser and server events with event_id.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8831-meta-conversions-api-maximizing-emq--g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8831-meta-conversions-api-maximizing-emq--g.png","width":1200,"height":630,"caption":"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/meta-conversions-api-maximizing-event-match-quality-emq-and-deduplication\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Meta Conversions API: Maximizing Event Match Quality (EMQ) and Deduplication"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8831","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=8831"}],"version-history":[{"count":5,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8831\/revisions"}],"predecessor-version":[{"id":23039,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8831\/revisions\/23039"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/14091"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=8831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=8831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=8831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}