경쟁사 프로모션을 추적하려는 대부분의 팀은 이미 가격 모니터링을 하고 있으며, 그것이 질문에 답하지 못한다는 사실에 놀란다.
이유는 구조적이다. 가격 모니터링은 수준을 기록한다. 즉, 우리가 확인했을 때 이 상품이 얼마였는지를 기록한다. 프로모션은 이벤트다. 시작되었고, 메커니즘과 폭이 있었으며, 일정 기간 진행되었고, 종료되었다. 일련의 수준 기록은 이벤트를 암시할 수는 있지만, 프로모션이 언제 시작되었는지, 얼마나 지속될 예정이었는지, 무엇이 계기가 되었는지는 알려주지 못한다. 그리고 샘플링 간격이 프로모션보다 길다면, 데이터상으로는 그 이벤트는 아예 일어나지 않은 것이 된다.
가격 시계열이 놓치는 것
대부분의 실패는 두 가지 유형에서 비롯된다.
프로모션이 간격보다 짧은 경우. 매일 한 번의 스냅샷은 6시간짜리 플래시 세일을 전혀 포착하지 못한다. 폭이 얕은 것도 아니고, 아예 아무것도 보이지 않는다. 데이터상으로는 경쟁사가 가격을 유지한 것으로 나오지만, 실제로 고객들은 세일을 본다.
프로모션이 간격보다 길지만 가장자리만 보이는 경우. 3일짜리 프로모션 안에 우연히 걸리는 주간 스냅샷은 그것을 한 주 내내 유지된 가격인 것처럼 기록한다. 이 한 번의 오독이 그 위에 쌓이는 모든 평균값을 왜곡시킨다.
두 경우 모두 겉보기에는 깔끔한 데이터를 만들어낸다. 오류도 발생하지 않는다. 그렇기 때문에 프로모션 추적은 가격 테이블 위의 리포트로 취급하는 대신 자체적인 설계가 필요하다.
가격 필드에는 프로모션이 존재하지 않는다
두 번째 구조적 문제는 할인이 파서가 읽는 숫자를 바꾸지 않는 경우가 많다는 점이다.
가격 모니터링이 일상적으로 놓치는 메커니즘:
- 장바구니 단위 할인. 상품 가격은 그대로이고, 할인은 결제 단계에서 나타난다.
- 쿠폰 코드. 장바구니에서 적용되며, 때로는 페이지에 배너로 표시되고, 때로는 이메일로만 배포된다.
- 번들 및 다중구매. 두 개를 사면 단가가 낮아지는 방식. 표시된 단가 자체는 변하지 않는다.
- 조건부 자격. 회원 가격, 첫 주문 할인, 지역별 프로모션, 로열티 등급.
- 배송비 기준. 사실상 할인이지만 가격 필드에는 전혀 나타나지 않는다.
따라서 수집은 숫자 이상을 포착해야 한다. 최소한 표시 가격, 취소선 처리된 가격이나 기준 가격, 프로모션 배지 텍스트, 배너 텍스트, 그리고 표시되어 있다면 명시된 종료 시각까지 포함해야 한다. 카운트다운 타이머는 특별히 파싱할 가치가 있는데, 경쟁사가 의도한 종료일을 알려주는 유일한 곳이기 때문이다.
일반적인 소매 수집 메커니즘은 가격 모니터링을 위한 레지덴셜 프록시에서, 특정 스토어에 국한된 문제는 Walmart 가격 및 재고 모니터링에서 다룬다.
관찰이 아닌 이벤트를 기록하라
이후의 모든 작업을 가능하게 하는 설계 결정은, 관찰 데이터로부터 프로모션 이벤트를 도출하고 이를 독립된 레코드로 저장하는 것이다.
이벤트에는 시작 관찰, 종료 관찰, 그리고 이를 설명하는 필드들이 필요하다:
| 필드 | 중요한 이유 |
|---|---|
| 기준 가격 | 할인이 측정되는 기준이며, 지난주 가격이 아니다 |
| 프로모션 가격 | 이벤트 기간 동안의 실제 적용 가격 |
| 메커니즘 | 퍼센트, 정액, 번들, 쿠폰, 장바구니 단위, 배송비 |
| 폭 | 기준가와 프로모션가로부터 계산되어 저장되며, 재계산하지 않는다 |
| 시작 및 종료 관찰 | 타임스탬프를 포함해 지속 시간을 측정할 수 있도록 |
| 명시된 종료 시각 | 카운트다운이나 배너로부터, 경쟁사가 공개한 경우 |
| 시장 | 관찰이 이루어진 국가, 해당되는 경우 지역 |
| 신뢰도 | 경계가 실제로 관찰된 것인지 샘플링 간격에 의해 제한된 것인지 |
마지막 필드가 가장 정직한 항목이다. 6시간마다 샘플링한다면, 프로모션이 6시간 창 안에서 시작되었다는 것은 알 수 있지만 정확히 언제인지는 알 수 없다. 이 불확실성을 기록해두면, 지속 시간 분석에서 이를 고려할 수 있다. 실제로는 없는 정밀도를 있는 척하는 대신 말이다.
주기는 보고 싶은 것보다 짧아야 한다
규칙은 불편하지만 단순하다. 샘플링 간격보다 짧은 프로모션은 탐지할 수 없고, 그 지속 시간을 그 간격보다 더 정밀하게 측정할 수도 없다.
전체적으로 빈도를 높이기보다는 계층화하라. 가장 공격적인 경쟁사들의 고가치 상품으로 이루어진 소규모 관찰 목록은 짧은 간격을 정당화한다. 롱테일은 매일 한 번으로 충분하다. 여기에 이벤트 기반 계층을 추가하라. 경쟁사의 상품 하나가 움직이면, 그 경쟁사에 대한 간격을 일정 기간 좁혀라. 프로모션은 몰려서 발생하는 경향이 있기 때문이다.
소매 캘린더 또한 이를 부분적으로 예측 가능하게 만든다. 알려진 세일 기간을 전후한 몇 주는 미리 정해둔 높은 주기를 적용할 가치가 있는데, 그 시기에 프로모션의 빈도와 폭이 모두 달라지기 때문이다.
프로모션은 지역적이다
경쟁사의 프로모션 캘린더는 보통 하나가 아니다. 오퍼는 시장별로 운영되며, 같은 상품 페이지가 어떤 나라에서는 할인가로, 다른 나라에서는 정가로 같은 날 표시될 수 있다.
단일 관측 지점에서 수집하면 한 시장의 캘린더를 경쟁사 전체 전략인 것처럼 라벨링하게 된다. 여러 시장에 걸쳐 판매한다면, 수집도 각 시장에서 이루어져야 한다. 국가 타겟팅이 가능한 레지덴셜 프록시가 그 시각을 실현시켜준다. Shifter 게이트웨이를 사용하면, 타겟팅과 세션은 p.shifter.io:443에 대한 자격 증명에 담긴다:
customer-USERNAME-country-fr-sid-promo-fr-01-ttl-600:PASSWORD
country-fr은 시장을 설정하고, sid-promo-fr-01은 카테고리 전체를 순회하는 동안 하나의 출구를 유지하여 읽어들이는 가격이 내부적으로 일관되도록 하며, ttl-600은 이를 10분간 유지한다. 크롤링 도중에 로테이션이 일어나면 한 레코드 안에서 두 시장의 가격을 비교하는 결과를 낳게 된다.
동시성은 적당한 수준으로 유지하고, 오류가 발생하면 재시도하기보다는 물러서라. 이에 대해서는 속도 제한 및 요청 스로틀링에서 다룬다. 제품 개요는 이커머스 데이터 수집 페이지에 있다.
이벤트 데이터가 실제로 알려주는 것
프로모션이 이벤트로 정리되면, 분석은 단순해지면서도 진정으로 의사결정에 유용해진다.
경쟁사별 주기. 얼마나 자주 프로모션을 진행하는지, 그 간격이 예측 가능할 만큼 규칙적인지. 일부 경쟁사는 발견 가능한 격주 리듬으로 운영한다.
폭 분포. 그들의 전형적인 할인율, 최대 할인율, 그리고 어떤 카테고리에 깊은 할인이 적용되는지. 이것이 실제로 자사 가격 결정 위원회가 원하는 수치다.
지속 시간. 오퍼가 얼마나 오래 진행되는지는, 취소선 가격이 결코 적용되지 않는 영구적인 가짜 세일과 진짜 재고 정리를 구분해준다.
선행 또는 후행. 경쟁사가 일관되게 자사보다 먼저 움직이는지 나중에 움직이는지. 이는 이벤트의 순서를 매길 만큼 정밀한 타임스탬프가 있어야만 볼 수 있으며, 이는 간격 관리의 또 다른 근거가 된다.
캘린더 군집화. 어느 주에 활동이 집중되는지 알면, 자사의 계획도 더 이상 사후 대응에 머무르지 않게 된다.
자주 묻는 질문
플래시 세일을 잡으려면 얼마나 자주 수집해야 하나요?
플래시 세일보다 짧은 간격이어야 한다. 몇 시간이 중요한 관찰 목록이라면, 전체 카탈로그가 아닌 소규모 상품 집합에 대해 매시간 또는 그보다 짧은 간격이 필요하다. 관찰 목록의 규모를 정하는 것이 실제 결정 사항이다.
기준 가격은 어떻게 설정하나요?
이전 관찰값을 사용하는 대신, 별도의 느리게 변화하는 시계열로 추적하라. 지난주 가격을 기준으로 삼으면, 연속된 두 번째 할인이 마치 할인이 없는 것처럼 보이게 된다.
장바구니 단위 오퍼를 잡으려면 상품을 장바구니에 담아야 하나요?
장바구니에서만 나타나는 메커니즘의 경우, 어떤 형태로든 결제 단계 관찰이 유일한 방법이다. 이는 소규모의 의도적인 집합으로 제한하고, 사이트 이용약관을 준수하며, 절대 거래를 완료하지 마라.
취소선 가격을 기준으로 신뢰할 수 있나요?
항상 그렇지는 않다. 일부 소매업체는 최근에 실제로 그 가격에 판매된 적 없는 기준 가격을 표시한다. 자체적으로 관찰한 기준 가격을 그들의 것과 나란히 유지하고, 둘이 일치하지 않을 때 이를 기록하라. 그 차이 자체가 하나의 발견이다.
결론
프로모션 추적은 가격 이력에 대한 조회로 취급되는 순간 실패한다. 프로모션은 메커니즘, 폭, 지속 시간, 시장을 가진 이벤트이며, 그 정보의 대부분은 가격 필드에 전혀 존재하지 않는다.
배지, 취소선 가격, 명시된 종료 시각을 가격과 함께 포착하고, 경계에 대한 명시적 신뢰도를 갖춘 이벤트를 도출하며, 그럴 가치가 있는 상품에 대해서는 관심 있는 프로모션보다 빠르게 샘플링하고, 판매하는 모든 시장에서 수집하라. 요금은 가격 페이지에서 확인할 수 있다.