가입은 늘었지만, 우리가 찾던 고객은 아니었습니다
그림 MBTI 캠페인을 기획하고 퍼포먼스 마케터와 협업했습니다. SQL과 Python으로 일별 가입/구입 데이터를 제공하며, 유입 규모와 타깃 적합성의 차이를 확인했습니다.
ACTUAL WORK
실제 자료로 보는 프로젝트
MBTI 현황 보고 드립니다_2024-08-21 MBTI 25% 쿠폰 발급 누 고객수 : 1505명 오픈 후(7/10) 가입 및 MBTI 진행 고객수 : 1414명 기존 고객 중 MBTI 진행 고객수 : 91명 MBTI 쿠폰 활용 유료결제 고객수 : 19명
쿠폰 발급과 신규/기존 참여, 유료결제를 함께 보고했습니다. 당시 누적 집계이며 캠페인의 순증 효과를 뜻하지 않습니다.
보고에 필요한 고객 행동을 SQL로 추출
쿠폰 발급 여부와 사용 여부를 구분한 원본 쿼리입니다.
CASE WHEN EXISTS (
SELECT 1
FROM bonbon.Coupon C
WHERE C.user_id = U.id
AND C.type = 'MBTI_25'
) THEN TRUE ELSE FALSE END AS Is_MBTI25,
CASE WHEN EXISTS (
SELECT 1
FROM bonbon.Coupon C
WHERE C.user_id = U.id
AND C.type = 'MBTI_25'
AND C.order_id IS NOT NULL
) THEN TRUE ELSE FALSE END AS Is_MBTI25_used,CASE WHEN EXISTS로 고객별 쿠폰 발급/사용 여부를 확인했습니다. 원본 전체 쿼리는 하단에 제공합니다.
유입 캠페인 기획, 일별 가입/구입 집계, A/B 테스트에 필요한 데이터 제공
매체와 고객군 설정, 광고 집행, A/B 테스트 진행
CONTEXT
어떤 문제에서 시작했는가
많은 사람이 가입하면, 성공한 캠페인일까?
아이가 있는 엄마들의 유입과 가입을 늘리기 위해 재미있게 참여할 수 있는 그림 MBTI 캠페인을 기획했습니다. 퍼포먼스 마케터가 매체와 고객군을 설정하고 A/B 테스트 및 광고 집행을 맡았고, 저는 일별 가입과 구입 데이터를 제공했습니다.
MY CONTRIBUTION
판단을 실행으로 연결한 과정
퍼포먼스 마케터와 역할을 나눠 실행
캠페인의 유입 아이디어를 구체화하고, 광고 운영에 필요한 데이터를 지원했습니다. 매체 선정, 광고 타깃 설정과 집행은 퍼포먼스 마케터가 담당했습니다.
SQL로 가입 이후 행동 확인
회원, 자녀, 주문, 쿠폰 데이터를 연결해 가입 시점과 쿠폰 발급/사용, 결제 현황을 추출했습니다. 광고 운영자가 A/B 테스트를 판단할 수 있도록 일별 데이터를 전달했습니다.
Python으로 일별 집계와 보고
pandas로 고객 정보를 정리하고 신규/기존 참여 고객을 구분했습니다. 날짜별 보고서와 CSV를 만들어 반복적으로 현황을 확인했습니다.
OUTCOME
남긴 결과
유입과 가입 수치는 나쁘지 않았지만, 실제로는 아이가 있는 엄마보다 MBTI에 관심이 많은 20대 여성의 유입이 많았습니다. 목표 고객을 확보하려던 목적에는 미치지 못한 캠페인이었습니다.
2024.08.21 원본 보고서의 집계 현황이며 캠페인의 순증 성과가 아닙니다. 유입 고객의 특성과 캠페인 평가는 본인의 수행 경험에 근거합니다.
이 경험이 제 일하는 방식에 남긴 것
참여를 유도하는 소재가 제품의 구매 대상과도 맞는지 확인해야 합니다. 이후 캠페인에서는 가입 규모와 함께 타깃 적합성, 가입 후 상품 이용 행동을 판단 기준으로 삼아야 한다고 배웠습니다.
WORK EVIDENCE
출처와 추가 자료
- MBTI_report.ipynb
- 240730_for_MBTI.sql
- 2024-08-21_mbti_repo.txt
원본 SQL / 고객과 쿠폰, 주문 정보 연결
USE bonbon;
SELECT
DATE_ADD(NOW(), INTERVAL 9 HOUR) AS query_time, U.phone_no AS phone_number, U.email_addr AS email, CASE WHEN U.with_drawed_at IS NOT NULL THEN TRUE ELSE FALSE END AS Is_withdrawed,
U.id AS ID,
U.created_at AS ID_created_at,
U.name AS Parent_name,
S.name AS Student_name,
S.birth_date AS Student_birthdate,
CASE WHEN U.marketing_argreed_at IS NOT NULL THEN TRUE ELSE FALSE END AS Is_marketing_agreed,
U.last_logined_at AS Last_logined_at,
CASE WHEN EXISTS (
SELECT 1
FROM bonbon.Coupon C
WHERE C.user_id = U.id
AND C.type = 'MBTI_25'
) THEN TRUE ELSE FALSE END AS Is_MBTI25,
CASE WHEN EXISTS (
SELECT 1
FROM bonbon.Coupon C
WHERE C.user_id = U.id
AND C.type = 'MBTI_25'
AND C.order_id IS NOT NULL
) THEN TRUE ELSE FALSE END AS Is_MBTI25_used,
O.package_name AS Latest_payment_product,
O.price AS Latest_payment_price,
O.created_at AS Latest_payment_time
FROM
bonbon.User U
JOIN
bonbon.Student S ON S.user_id = U.id
LEFT JOIN
bonbon.Order O ON O.student_id = S.id
LEFT JOIN
(
SELECT
student_id,
MAX(created_at) AS latest_order
FROM
bonbon.Order
GROUP BY
student_id
) LO ON O.student_id = LO.student_id AND O.created_at = LO.latest_order
ORDER BY
U.id;참고 자료 / 실제 광고 소재
그림 MBTI 캠페인에 사용한 카카오용 소재입니다. 소재별 테스트 결과를 뜻하지는 않습니다.

