읽는 시간 7분

메타 전환 API 중복 제거, event_id를 이렇게 맞추면 됩니다

픽셀과 전환 API를 함께 쓸 때 같은 구매가 두 번 집계되지 않도록 event_id와 event_name을 맞추는 방법과 흔한 실수를 정리했습니다.

메타 픽셀과 전환 API(CAPI)를 함께 쓰면 브라우저에서 빠진 이벤트를 서버가 보완할 수 있습니다. 대신 같은 구매가 두 경로로 들어오기 때문에, 중복 제거를 제대로 하지 않으면 구매가 두 배로 부풀려져 성과 판단이 틀어집니다. 핵심은 하나입니다. 같은 이벤트에는 같은 event_name과 같은 event_id를 붙입니다.

중복 제거가 동작하는 방식

메타는 브라우저(픽셀)와 서버(전환 API)에서 들어온 이벤트 중 이름과 event_id가 같은 것을 같은 이벤트로 보고 하나로 처리합니다. 두 이벤트의 수신 시간 간격에도 한계가 있으므로, 서버 전송을 며칠씩 미루지 않아야 합니다. 정확한 기준은 메타 개발자 문서의 중복 제거 항목을 확인하세요. 문서 링크는 글 끝에 있습니다.

규칙을 정리하면 이렇습니다.

  • event_name이 같아야 합니다. 픽셀이 Purchase, 서버가 purchase처럼 대소문자가 다르면 다른 이벤트입니다.
  • event_id가 같아야 합니다. 한쪽이 비어 있거나 다른 값이면 중복 제거가 되지 않습니다.
  • 한 이벤트당 event_id는 하나만 씁니다. 새로고침할 때마다 새 ID가 만들어지면 같은 구매가 여러 건으로 들어갑니다.

event_id를 어떻게 만들까

이벤트권장 event_id이유
구매(Purchase)주문번호서버와 브라우저 모두 같은 값을 알고 있습니다.
상담 신청(Lead)신청서 번호 또는 접수 시 만든 UUID접수 한 건에 하나만 존재합니다.
장바구니(AddToCart)브라우저에서 만든 UUID서버는 브라우저가 넘겨준 값을 그대로 씁니다.

브라우저에서 만든 UUID를 서버로 넘길 때는 요청 본문에 함께 보내거나 쿠키에 넣는 방법을 씁니다. 중요한 점은 서버가 새 UUID를 따로 만들지 않고, 브라우저가 쓴 값을 받아 그대로 쓰는 것입니다.

서버 이벤트에 무엇을 담을까

서버 이벤트는 HTTPS 요청으로 보냅니다. 구조는 다음과 같습니다. API 버전과 토큰, 픽셀 ID는 자신의 값으로 바꾸세요.

POST https://graph.facebook.com/{API_VERSION}/{PIXEL_ID}/events?access_token={TOKEN}
{
  "data": [{
    "event_name": "Purchase",
    "event_time": 1760000000,
    "event_id": "ord_20261006_8921",
    "action_source": "website",
    "event_source_url": "https://shop.example/checkout/complete",
    "user_data": {
      "em": ["<SHA-256 해시된 이메일>"],
      "ph": ["<SHA-256 해시된 전화번호>"],
      "fbp": "<_fbp 쿠키 값>",
      "fbc": "<_fbc 쿠키 값>",
      "client_ip_address": "<사용자 IP>",
      "client_user_agent": "<사용자 User-Agent>"
    },
    "custom_data": { "currency": "KRW", "value": 148000 }
  }]
}

매칭 품질에 영향을 주는 항목은 다음과 같습니다.

  • 이메일, 전화번호: 공백을 없애고 소문자로 맞추는 등 정규화한 뒤 SHA-256으로 해시합니다. 전화번호는 국가 번호를 포함한 숫자만 남깁니다. 정규화 규칙이 틀리면 해시가 달라져 매칭되지 않습니다.
  • fbp, fbc: 브라우저 쿠키 값입니다. 서버가 요청을 받을 때 함께 받아 넘기면 도움이 됩니다.
  • client_ip_address, client_user_agent: 사용자 요청에서 얻은 값을 넣습니다. 서버 자신의 IP를 넣으면 안 됩니다.
  • value, currency: 구매는 금액과 통화(KRW)를 빠뜨리지 마세요.

자주 하는 실수

  1. 완료 페이지 새로고침: 완료 페이지에서 구매 이벤트를 보내면 새로고침 때마다 다시 발화합니다. 주문번호 기준으로 한 번만 보내도록 막으세요.
  2. 서버가 새 ID를 생성: 브라우저와 서버가 각자 ID를 만들면 중복 제거가 되지 않습니다.
  3. 이벤트 이름 불일치: 표준 이벤트 이름의 철자와 대소문자를 한 곳에서 관리하세요.
  4. 해시 전 정규화 누락: 공백이나 대문자가 남은 채로 해시하면 매칭이 되지 않습니다.
  5. 지연 전송: 서버 이벤트를 배치로 하루 뒤에 보내는 구조는 중복 제거 시간 한계에 걸릴 수 있습니다.

배포 전 검증

메타 이벤트 관리자에는 테스트 이벤트 기능이 있습니다. 테스트 코드를 서버 요청에 넣어 보내면, 이벤트가 수신되었는지와 브라우저 이벤트와의 중복 제거 여부, 매칭 품질에 영향을 주는 누락 항목을 확인할 수 있습니다. 구매 한 건을 실제로 일으켜서 브라우저와 서버 이벤트가 하나로 표시되는지 눈으로 확인한 뒤 운영에 반영하세요.

참고 자료

우리 사이트의 추적과 속도, AI 검색 구조는 어떨까요?

무료 진단 신청