RSS듀오랩스
마케팅

메타 전환 API: 픽셀 없이 광고에서 온 문의를 광고와 연결하는 방법

작성자
듀오랩스 대표·6분 읽기

메타 광고를 켜기 전에 하나가 걸렸습니다. 광고 플랫폼이 "이 광고를 보고 문의까지 한 사람이 몇 명인가"를 알아야 그 기준으로 예산을 쓰는데, 그걸 알려 주는 정석은 사이트에 메타 픽셀을 붙이는 것입니다. 그런데 저희 사이트는 쿠키를 하나도 안 만드는 구조로 만들어 두었고, 개인정보 처리방침에도 그렇게 적어 두었습니다. 픽셀은 _fbp 쿠키를 심습니다.

픽셀을 붙이면 처리방침을 고치고 쿠키 배너를 달아야 합니다. 안 붙이면 메타는 클릭 수만 보고 예산을 씁니다. 둘 다 싫었습니다.

픽셀이 하는 일 두 가지, 표식 남기기와 알리기

픽셀 스크립트가 브라우저에서 하는 일을 나눠 보면 둘입니다. 방문자가 광고를 타고 들어왔다는 표식을 쿠키에 남기는 것, 그리고 문의 같은 행동이 일어났을 때 그 표식과 함께 메타에 알리는 것.

메타는 두 번째 일을 서버가 대신할 수 있게 전환 API 를 열어 두었습니다. 보통은 픽셀과 전환 API 를 같이 써서 광고 차단기에 막힌 만큼을 서버가 메꾸는 용도로 씁니다. 저는 반대로 픽셀을 아예 빼고 전환 API 만 쓰기로 했습니다. 그러려면 첫 번째 일, 즉 "광고를 타고 왔다"는 표식을 쿠키 없이 남겨야 합니다.

쿠키 대신 주소에 붙어 오는 fbclid

메타는 광고 링크를 열 때 주소 끝에 fbclid=… 를 붙여 보냅니다. 구글이 gclid 를 붙이는 것과 같습니다. 픽셀은 이 값을 읽어 _fbc 쿠키로 저장할 뿐입니다.

저희 사이트는 이미 UTM 값을 세션 저장소에 담아 두는 코드가 있었습니다. 첫 진입 페이지와 utm_source 같은 것을 탭 단위로 30분 기억하는 자체 분석용입니다. 거기에 fbclidgclid 두 칸을 더했습니다. 쿠키가 아니라 세션 저장소라 처리방침의 "쿠키 0개"는 그대로입니다.

문의 폼을 제출할 때 이 세션 정보를 함께 보내고, 서버는 문의 레코드에 그대로 붙여 저장합니다. 이건 원래 "어느 광고에서 온 문의인지"를 어드민에서 보려고 한 일인데, 전환 API 의 매칭 키도 같은 값이라 한 번에 해결됐습니다.

서버에서 보내는 것과 보내지 않는 것

문의가 저장된 직후 서버가 메타에 Lead 이벤트를 하나 보냅니다. 보내는 내용은 이렇습니다.

항목 이유
fbc fb.1.<클릭 시각>.<fbclid> 픽셀이 쿠키에 넣는 것과 같은 형식. 이게 광고와 문의를 잇는 열쇠
client_ip_address, client_user_agent 요청 헤더 그대로 메타가 매칭 품질을 올리는 데 씀
event_time, event_source_url 문의 시각, 첫 진입 페이지
event_id 문의 레코드 ID 같은 문의를 두 번 보내도 하나로 접힘

이름, 이메일, 전화번호는 보내지 않습니다. 메타는 이메일과 전화를 SHA-256 으로 해시해 보내면 매칭률이 오른다고 안내하는데, 그러면 처리방침 제4조에 "해시한 이메일·전화번호를 메타에 제공한다"고 적어야 합니다. 첫 광고에서 그 항목까지 열 이유가 없어서 뺐습니다. 매칭률이 실제로 얼마나 차이 나는지는 광고를 돌려 봐야 압니다.

fbclid 가 없는 문의는 아예 보내지 않습니다. 메타 광고를 안 거친 방문자의 IP 까지 메타로 나갈 이유가 없고, 매칭 키 없는 이벤트는 메타 쪽에서도 쓸모가 없습니다.

처리방침에 적은 것

코드보다 문구가 더 조심스러웠습니다. 제4조 처리위탁 항목에 이렇게 넣었습니다.

Meta Platforms, Inc.: 메타 광고의 전환 측정(전환 API). 메타 광고를 통해 방문한 뒤 문의를 제출한 경우에 한하여, 광고 클릭 식별자(fbclid), 문의 발생 시각, 접속 IP·브라우저 정보를 서버에서 전달합니다. 이름·이메일·전화번호·문의내용은 전달하지 않으며, 브라우저에 메타 픽셀이나 쿠키를 설치하지 않습니다.

"전달하지 않는다"고 적은 것은 코드가 실제로 그렇기 때문입니다. 나중에 해시 이메일을 보내기로 하면 코드보다 이 문장을 먼저 고쳐야 합니다.

코드보다 오래 걸린 계정과 토큰

토큰을 받는 데 코드 짜는 시간보다 오래 걸렸습니다. 순서대로 적어 둡니다.

처음 만든 데이터 세트는 개인 광고 계정에 묶여 있었는데, 전환 API 토큰은 비즈니스 포트폴리오의 관리자만 만들 수 있었습니다. 그래서 포트폴리오를 만들고 개인 광고 계정을 옮기려 했더니 "결제 이력이 없는 계정은 옮길 수 없다"고 했습니다. 결국 포트폴리오 안에 광고 계정과 데이터 세트를 새로 만들었습니다. 먼저 만든 데이터 세트는 지울 수 없어서 이름만 "사용 안 함"으로 바꿔 두었습니다.

토큰 생성 화면에서 데이터 세트를 고르는 드롭다운이 비어 있었던 것은 이벤트 관리자가 옛 개인 계정을 보고 있어서였습니다. 오른쪽 위 계정을 새 광고 계정으로 바꾸니 나왔습니다.

토큰을 Vercel 환경변수에 넣고 나서 한 번 더 걸렸습니다. 저는 서버 런타임 값이라 등록만 하면 다음 요청부터 읽을 거라고 생각했는데, Vercel 은 배포 시점에 함수에 값을 박습니다. 재배포하고서야 반영됐습니다.

확인한 것과 아직 안 한 것

메타의 테스트 이벤트 코드를 붙여 Lead 하나를 보내니 events_received: 1 로 돌아왔고 이벤트 관리자의 테스트 탭에 "서버" 출처로 떴습니다. 여기까지가 확인된 것입니다.

실제 광고를 타고 온 문의로 매칭이 되는지, 픽셀 없이 매칭률이 얼마나 나오는지는 광고를 켜야 압니다. 메타 문서는 픽셀과 전환 API 를 함께 쓰라고 권하고, 저는 그 권고를 일부러 안 따랐습니다. 매칭률이 너무 낮으면 해시 이메일을 추가하는 것이 다음 수이고, 그때는 처리방침 문장부터 바꿉니다. 결과가 나오면 이어서 적겠습니다.

마지막 수정:

공유하실 때는 출처(Duolabs)와 원문 주소를 표시해 주세요.