크리에이터 추천 코드로 영상별 구매 기여도 추정하고 중복 어트리뷰션 줄이는 방법

크리에이터 추천 코드와 UTM 이벤트를 결합해 영상별 구매 기여도를 추정하고 마지막 클릭·쿠폰·직접 유입이 구매를 중복 집계하는 문제를 줄이는 실전 어트리뷰션 설계 방법을 정리한다.

✓ 복사 완료!
챕터일반 가이드
난이도중급
상태● 검토 완료
대상 엔진
Engine Agnostic
최종 업데이트
크리에이터 추천 코드로 영상별 구매 기여도 추정하고 중복 어트리뷰션 줄이는 방법

핵심 요약

크리에이터별 추천 코드와 영상별 UTM 링크를 함께 발급하면 영상 단위의 유입·장바구니·구매 이벤트를 연결할 수 있다. 다만 추천 코드, 마지막 클릭, 광고 노출을 모두 독립적인 구매로 합산하면 중복 어트리뷰션이 발생하므로 구매마다 하나의 order_id를 기준으로 전환을 중복 제거하고 보조 기여도와 확정 기여도를 분리해야 한다.

예시 확정 기여 모델은 last non-direct touchpoint이며 링크 클릭과 유효한 추천 코드 입력 중 구매 전에 발생한 가장 최근 접점을 한 건 선택한다. 여러 접점의 영향은 보조 기여도로 따로 배분할 수 있다. Steam 판매 데이터가 직접 연결되지 않는 경우에는 자체 결제 페이지와 키 발급 로그를 기준으로 추정치를 만들고 신뢰 수준을 함께 기록해야 한다.

왜 영상별 구매 기여도를 따로 측정해야 하는가?

크리에이터 캠페인의 성과를 크리에이터 단위로만 보면 어떤 영상의 메시지와 형식이 실제 구매에 영향을 주었는지 알기 어렵다. 같은 크리에이터가 출시 전 리뷰 영상과 출시 후 할인 안내 영상을 올렸다면 두 영상의 역할은 다를 수 있다.

  • 리뷰 영상: 최초 인지와 관심 형성
  • 공략 영상: 구매 고려와 장르 적합성 확인
  • 할인 안내 영상: 구매 시점 결정
  • 라이브 방송: 실시간 질문 해소와 커뮤니티 확산

영상별 측정에는 다음 이벤트가 필요하다.

이벤트주요 식별자측정 목적
landing_viewsession_id, video_id링크 유입 확인
store_viewsession_id, campaign_id판매 페이지 도달 확인
add_to_cartanonymous_id구매 의향 확인
purchaseorder_id, product_id매출 및 전환 확정
key_redeemkey_id, order_id키 발급·사용 검증
refundorder_id순매출 보정

핵심은 모든 이벤트에 campaign_id, creator_id, video_id, source, captured_at을 일관되게 저장하는 것이다. 영상별 코드를 따로 만들지 않고 크리에이터 코드만 사용하면 같은 크리에이터의 여러 영상 성과를 구분할 수 없다.

추천 코드와 UTM은 어떻게 설계해야 하는가?

추천 코드는 사람이 기억하고 입력할 수 있어야 하며 UTM 링크는 분석 시스템이 안정적으로 파싱할 수 있어야 한다. 두 식별자를 동일한 캠페인 레코드에 연결하면 사용자가 링크를 클릭한 뒤 코드를 직접 입력한 경우에도 경로를 복원할 수 있다.

권장 식별자 구조

필드예시역할
creator_idcreator_042크리에이터 식별
video_idyt_2026_0815_review영상 식별
campaign_idlaunch_2026_creator_042계약·정산 단위
referral_codeNOVA042결제 시 입력하는 코드
utm_sourceyoutube유입 플랫폼
utm_mediumcreator_video매체 유형
utm_campaignlaunch_2026캠페인 식별
utm_contentreview_0815소재 또는 영상 식별

예시 링크는 다음과 같이 만들 수 있다.

https://example-game.com/buy?utm_source=youtube&utm_medium=creator_video&utm_campaign=launch_2026&utm_content=review_0815&creator_id=creator_042&video_id=yt_2026_0815_review

추천 코드는 영상마다 다르게 발급하는 편이 측정에는 유리하다. 다만 짧은 기간에 여러 코드를 노출하면 시청자가 혼동할 수 있으므로 코드 규칙을 단순하게 유지하고 영상 설명란·고정 댓글·방송 화면에 동일하게 표시한다.

코드와 링크를 하나의 레코드로 연결하기

CREATE TABLE creator_assets (
  asset_id TEXT PRIMARY KEY,
  creator_id TEXT NOT NULL,
  video_id TEXT NOT NULL,
  campaign_id TEXT NOT NULL,
  referral_code TEXT UNIQUE NOT NULL,
  utm_content TEXT NOT NULL,
  valid_from TIMESTAMP NOT NULL,
  valid_to TIMESTAMP,
  created_at TIMESTAMP NOT NULL
);

referral_code를 영상의 유일한 키로 사용하는 대신 asset_id를 별도로 둔다. 코드가 재사용되거나 캠페인 기간이 연장되어도 원본 영상과 계약 단위를 보존할 수 있기 때문이다.

추천 코드와 마지막 클릭이 중복 집계되는 이유는 무엇인가?

한 사용자가 다음과 같은 경로로 구매할 수 있다.

  1. 크리에이터 A의 리뷰 영상을 시청한다.
  2. 영상 링크를 클릭하지만 바로 구매하지 않는다.
  3. 검색 광고를 클릭해 판매 페이지에 다시 방문한다.
  4. 크리에이터 A의 추천 코드를 입력한다.
  5. 결제한다.

이 구매를 추천 코드 성과와 검색 광고 성과에 각각 1건으로 더하면 실제 구매 1건이 2건으로 계산된다. 크리에이터 A가 다른 영상에서 유입시킨 기록까지 남아 있으면 영상별 합계가 실제 전체 구매보다 커질 수 있다.

따라서 purchase 이벤트는 반드시 order_id를 중심으로 한 번만 집계해야 한다. 추천 코드와 광고 클릭은 구매의 원인이 될 수 있는 접점이지만 구매 자체와 동일한 전환 이벤트는 아니다.

구매 기여도는 어떤 기준으로 계산할까?

먼저 확정 기여도와 보조 기여도를 분리한다.

확정 기여도

운영과 정산에 사용할 단일 기준이다. 예를 들어 구매 시점 이전 30일 이내의 유효한 크리에이터 접점 중 가장 최근의 비직접 유입을 선택할 수 있다.

Alast(o)=argmax⁡e∈Eo(te)subject to to−te≤WA_{last}(o)=\operatorname*{argmax}_{e \in E_o}(t_e) \quad \text{subject to } t_o-t_e \leq W
  • oo: 구매 주문
  • EoE_o: 주문과 연결된 크리에이터 접점 집합
  • tet_e: 접점 발생 시각
  • tot_o: 구매 시각
  • WW: 어트리뷰션 윈도우

이 방식은 결과가 단순하고 정산하기 쉽지만 최초 인지에 기여한 영상을 과소평가할 수 있다.

보조 기여도

여러 영상이 구매 여정에 포함된 경우 각 접점의 기여 비율을 추정한다. 선형 모델은 모든 유효 접점에 동일한 가중치를 준다.

crediti=1nfor i∈Eocredit_i=\frac{1}{n}\quad \text{for } i \in E_o

시간 감쇠 모델은 구매에 가까운 접점에 더 높은 가중치를 준다.

crediti=2−Δti/H∑j∈Eo2−Δtj/Hcredit_i=\frac{2^{-\Delta t_i/H}}{\sum_{j \in E_o}2^{-\Delta t_j/H}}
  • Δti\Delta t_i: 접점 이후 구매까지 경과한 시간
  • HH: 반감기. 예를 들어 7일로 설정하면 7일 전 접점의 가중치는 절반이 된다.

보조 기여도는 캠페인 비교에 활용하고 크리에이터 정산에는 계약서에 명시한 확정 기여도만 사용하는 편이 안전하다. 측정 모델이 바뀔 때 지급액까지 자동으로 바뀌면 분쟁 가능성이 커진다.

중복 어트리뷰션을 줄이는 5단계 구현 절차

1단계. 구매 단위에 고유 주문 ID를 부여한다

결제 성공마다 고유한 order_id를 만든다. 결제 재시도, 웹훅 재전송, 결제 페이지 새로고침이 발생해도 같은 결제를 여러 번 세지 않도록 order_id에 유니크 제약을 둔다.

CREATE TABLE purchases (
  order_id TEXT PRIMARY KEY,
  attribution_key TEXT,
  product_id TEXT NOT NULL,
  gross_revenue NUMERIC NOT NULL,
  purchased_at TIMESTAMP NOT NULL,
  refund_at TIMESTAMP
);

고객 식별자가 필요하지 않은 분석이라면 이메일 원문 대신 내부 고객 키나 일회성 토큰을 사용한다. 개인정보와 광고 식별자를 결합할 때는 수집 목적과 보관 기간을 검토해야 한다.

2단계. 모든 접점을 이벤트로 저장한다

클릭뿐 아니라 코드 노출, 코드 입력, 장바구니, 결제 성공을 구분한다. 코드가 입력되었다고 해서 구매가 발생한 것은 아니므로 code_entered와 purchase를 같은 전환으로 취급하면 안 된다.

CREATE TABLE touchpoints (
  touchpoint_id TEXT PRIMARY KEY,
  attribution_key TEXT,
  session_id TEXT,
  creator_id TEXT,
  video_id TEXT,
  campaign_id TEXT,
  referral_code TEXT,
  source TEXT,
  medium TEXT,
  event_name TEXT NOT NULL,
  occurred_at TIMESTAMP NOT NULL
);

3단계. 구매 전환에 어트리뷰션 윈도우를 적용한다

캠페인 목적과 구매 주기에 따라 윈도우를 정한다. 예를 들어 출시 직전 단기 캠페인은 7일 또는 14일, 장기 위시리스트 캠페인은 30일처럼 별도 기준을 둘 수 있다. 중요한 것은 모든 캠페인에 같은 기간을 무조건 적용하는 것이 아니라 캠페인 시작 전에 기준을 고정하는 것이다.

윈도우 밖의 접점은 참고 이벤트로 보관하되 확정 기여도 계산에서는 제외한다.

4단계. 구매마다 하나의 확정 기여 접점을 선택한다

선택 규칙과 같은 시각 접점의 정렬 기준을 명시하면 팀마다 다른 수치를 보고하는 문제를 줄일 수 있다.

구매 전에 발생한 유효한 크리에이터 링크 클릭, 추천 코드 입력, 유료 광고 클릭을 같은 접점 타임라인에 저장하고 마지막 비직접 접점 하나를 선택할 수 있다. 이 규칙에서는 오래전에 본 영상의 코드를 구매 직전에 입력했다면 코드 입력 시각이 마지막 접점이 된다. 코드 입력을 클릭과 다르게 취급하려면 별도의 우선순위를 정하고 계약과 쿼리에 똑같이 반영해야 한다.

WITH ranked AS (
  SELECT
    p.order_id,
    t.creator_id,
    t.video_id,
    t.referral_code,
    t.occurred_at,
    ROW_NUMBER() OVER (
      PARTITION BY p.order_id
      ORDER BY
        t.occurred_at DESC,
        t.touchpoint_id DESC
    ) AS rank_no
  FROM purchases p
  JOIN touchpoints t
    ON t.attribution_key = p.attribution_key
   AND t.occurred_at <= p.purchased_at
   AND t.occurred_at >= p.purchased_at - INTERVAL '30 days'
  WHERE t.event_name IN ('creator_link_click', 'referral_code_entered', 'paid_ad_click')
    AND t.source <> 'direct'
    AND t.attribution_key IS NOT NULL
)
SELECT order_id, creator_id, video_id, referral_code
FROM ranked
WHERE rank_no = 1;

위 예시는 purchases.attribution_key와 touchpoints.attribution_key가 같은 동의된 귀속 키로 연결된다고 가정한다. 실제 운영에서는 플랫폼 정책과 적용 법률에 맞는 식별·동의 방식을 선택하고, 연결할 수 없는 이벤트를 임의로 합치지 않는다.

5단계. 확정 기여도와 보조 기여도의 합계를 따로 검증한다

확정 기여도는 주문 수가 실제 결제 주문 수와 일치해야 한다. 보조 기여도는 여러 접점에 나뉘지만 주문별 가중치 합계가 1이 되어야 한다.

∑i∈Eocrediti=1\sum_{i \in E_o}credit_i=1

다음 검증 지표를 대시보드에 둔다.

검증 지표정상 조건
전체 고유 주문 수결제 시스템의 성공 주문 수와 일치
확정 기여 주문 수중복 제거 후 전체 주문 수 이하
보조 기여도 합계주문별 1.0
추천 코드 입력 후 구매율코드만 입력한 세션보다 명확히 구분
환불 반영 후 순매출환불 주문이 매출에 남지 않음
미식별 주문 비율기간별 추세를 모니터링

Steam 판매에서는 무엇을 직접 측정할 수 있는가?

Steamworks UTM Analytics는 Steam 상점 링크의 방문과 위시리스트·구매·활성화 전환을 집계해 보여 준다. 다만 보고서는 요약 수치이며 개인별 Steam ID나 주문 행을 제공하지 않는다. 로그인한 추적 방문, 쿠키 설정, 클릭 후 72시간 전환 창 등의 제한도 있으므로 자체 결제 이벤트와 주문 단위로 직접 연결되는 자료와 구분해야 한다.

측정 수준예시해석
직접 측정자체 결제 페이지 주문, 추천 코드 사용확정 기여도에 사용 가능
Steam 집계 측정Steamworks UTM의 추적 방문·위시리스트·구매 전환UTM 캠페인 수준의 집계; 주문별 고객 연결은 불가
추정 측정영상 게시 전후 판매량 변화외부 요인 통제 필요

Steam으로 바로 이동하는 링크의 클릭 수를 Steam 구매 수로 간주해서는 안 된다. Steamworks UTM 보고서는 클릭을 넘어 상점 방문 후 72시간 안에 발생한 추적 구매 전환을 집계하지만, 이를 자체 order_id와 개인 단위로 조인할 수는 없다. Steamworks 리포트, 제휴 리포트, 키 발급·사용 데이터, 판매 기간별 집계 자료를 출처와 집계 단위별로 보관해 내부 이벤트와 비교한다.

외부 판매 플랫폼의 구매 데이터가 충분하지 않은 경우에는 다음과 같이 표현하는 편이 정확하다.

  • 확정 구매: 추천 코드가 입력된 자체 결제 주문
  • 추정 구매: UTM 추적 범위 밖의 크리에이터 링크 클릭과 판매량 변화로 추정한 구매
  • 보조 지표: 위시리스트, Steam 페이지 방문, 데모 다운로드, 커뮤니티 가입

추정 구매에는 반드시 estimated 플래그와 추정 모델 버전을 저장한다. 확정 주문과 같은 숫자처럼 보고하면 퍼블리셔나 크리에이터에게 과도한 확신을 줄 수 있다.

영상 효과를 더 정확히 보려면 증분 효과를 측정하라

추천 코드 사용자는 원래 구매 의향이 높은 팬일 수 있다. 그러므로 코드 사용 주문만으로 영상의 순수한 효과를 판단하면 성과가 과대평가될 수 있다.

가능하다면 크리에이터 또는 지역·기간을 나누어 대조군을 운영한다. 예를 들어 일부 유사한 오디언스에는 영상을 노출하고 다른 그룹에는 노출하지 않은 뒤 구매율 차이를 비교한다.

Incremental Lift=ConversionRateexposed−ConversionRatecontrolIncremental\ Lift=ConversionRate_{exposed}-ConversionRate_{control}

완벽한 실험이 어려우면 다음과 같은 비교를 보조적으로 사용할 수 있다.

  • 영상 게시 전후의 동일 기간 판매량
  • 유사한 국가 또는 언어권의 판매 변화
  • 영상 시청자와 비시청자의 코드 사용률
  • 크리에이터 캠페인 중단 기간의 자연 유입 변화

이 비교는 계절성, 할인, 업데이트, 다른 광고 집행의 영향을 받을 수 있으므로 인과관계로 단정하지 말고 추정치로 보고해야 한다.

추천 코드 어뷰징과 데이터 오류는 어떻게 처리할까?

추천 코드는 측정 도구이면서 할인 수단이므로 오남용이 발생할 수 있다. 다음 규칙을 사전에 정의한다.

문제처리 기준
같은 주문에 코드 여러 개 입력결제 시스템에서 하나만 허용하거나 마지막 유효 코드 선택
코드 입력 후 환불순매출·정산 대상에서 제외
같은 세션의 반복 결제order_id별로 분리하되 재시도는 중복 제거
만료된 코드 입력구매는 기록하되 캠페인 기여도에서는 제외
코드 공유 사이트 확산원래 영상 유입과 코드 입력을 별도 보고
내부 테스트 주문is_test=true로 표시하고 모든 성과 지표에서 제외

특히 추천 코드가 할인 코드 사이트에 퍼진 경우 코드 사용량이 커져도 해당 크리에이터의 신규 유입이 늘었다고 볼 수 없다. 코드 입력 이벤트와 최초 링크 클릭 이벤트를 함께 확인해야 한다.

정산 계약에는 어떤 항목을 명시해야 하는가?

측정 방식이 계약서에 없으면 캠페인 종료 후 숫자 해석을 두고 갈등이 생긴다. 다음 항목을 미리 합의한다.

  1. 확정 기여도의 기준: 코드 사용, 마지막 클릭, 또는 둘의 우선순위
  2. 어트리뷰션 윈도우: 클릭 후 며칠까지 인정할지
  3. 환불·취소·차지백 처리 방식
  4. 세금·플랫폼 수수료·할인액을 제외한 순매출 기준 여부
  5. 중복 주문 제거 기준인 order_id
  6. 구매 데이터 제공 주기와 리포트 버전
  7. Steam처럼 직접 구매 연결이 어려운 플랫폼의 추정치 처리
  8. 코드 공유·쿠폰 사이트 유입을 정산에 포함할지 여부

계약상 정산은 하나의 고정 규칙으로 처리하고 내부 분석에서는 시간 감쇠나 증분 효과를 별도 지표로 제공하는 방식이 가장 설명하기 쉽다.

FAQ: 자주 묻는 질문

추천 코드와 UTM 중 하나만 사용해도 되나요?

가능하지만 정확도가 낮아진다. UTM은 링크 유입을 측정하고 추천 코드는 링크를 거치지 않은 직접 입력까지 포착하므로 두 방식을 함께 사용하되 구매마다 order_id로 중복 제거해야 한다.

코드 사용 주문을 모두 크리에이터의 성과로 봐도 되나요?

그대로 보면 안 된다. 코드를 할인 사이트에서 발견했거나 예전에 본 영상의 코드를 나중에 입력했을 수 있다. 코드 입력 시점, 원래 링크 클릭, 최초 접점, 환불 여부를 함께 확인해야 한다.

Steam 구매를 영상별로 정확하게 추적할 수 있나요?

내부 결제 페이지처럼 항상 정확하게 연결할 수 있는 것은 아니다. Steam 또는 제휴 데이터에서 직접 받은 구매 정보는 확정값으로 사용하고 링크 클릭·위시리스트·판매량 전후 변화만으로 계산한 수치는 추정값으로 분리해야 한다.

정리

영상별 구매 기여도 측정의 핵심은 추천 코드 자체가 아니라 데이터 구조다. creator_id와 video_id를 모든 캠페인 자산에 연결하고 모든 구매를 고유한 order_id로 중복 제거하며 확정 기여도와 보조 기여도를 분리해야 한다.

운영 순서는 간단하다. 먼저 링크와 코드를 발급하고 이벤트를 저장한다. 다음으로 어트리뷰션 윈도우와 우선순위를 고정한다. 마지막으로 환불과 중복 주문을 반영한 확정 주문 수를 정산에 사용하고 시간 감쇠·증분 효과·Steam 판매 변화는 분석용 보조 지표로 관리한다.

이렇게 설계하면 어떤 크리에이터가 성과를 냈는지뿐 아니라 어떤 영상 형식과 메시지가 구매 여정의 어느 단계에 기여했는지도 비교할 수 있다.