광고성 정보 전송과 마케팅 수신동의
한 문장 결론
섹션 제목: “한 문장 결론”문자·이메일·앱 푸시로 영리목적의 광고성 정보를 보내려면 채널별로 명시적 사전 동의를 받아 저장하고, 야간(21시~08시) 별도 동의, 수신거부 즉시 반영, 14일 이내 처리 결과 통지, 2년마다 동의 확인을 발송 시스템이 강제해야 합니다.
적용 조건과 예외
섹션 제목: “적용 조건과 예외”두 법이 겹칩니다. 개인정보 보호법은 개인정보를 홍보 목적으로 처리하는 것에 대한 동의를, 정보통신망법은 광고성 정보를 전송하는 행위를 규율합니다.
| 상황 | 필요한 것 | 근거 |
|---|---|---|
| 회원가입 화면의 “마케팅 정보 수신” | 개인정보 홍보 목적 처리 동의(구분 동의)와 채널별 광고 수신동의 | 개인정보 보호법 제22조제1항제7호, 정보통신망법 제50조제1항 |
| 구매 고객에게 같은 종류 상품 광고 | 거래 종료일부터 6개월 이내, 직접 수집한 연락처, 같은 종류 재화등이면 사전 동의 예외 | 제50조제1항제1호, 시행령 제61조제1항 |
| 오후 9시~오전 8시 발송 | 별도의 야간 수신동의. 전자우편은 예외 | 제50조제3항, 시행령 제61조제2항 |
| 수신거부·동의 철회 | 즉시 전송 중단. 거래관계 예외로 보내던 경우도 포함 | 제50조제2항 |
| 동의·거부·철회 의사표시를 받음 | 14일 이내 처리 결과 통지 | 제50조제7항, 시행령 제62조의2 |
| 동의 후 2년 경과 | 2년이 되는 날 전까지 동의 여부 확인 | 제50조제8항, 시행령 제62조의3 |
경계와 미확정 사항:
- “광고성 정보”의 범위: 주문·배송 알림, 비밀번호 재설정, 약관 변경 공지 같은 거래·서비스 정보는 일반적으로 광고가 아닌 것으로 다뤄지지만, 거래 알림에 쿠폰·추천 상품을 섞으면 광고성 정보가 될 수 있습니다. 메시지 유형별 판단은 방송미디어통신위원회 안내와 법무 검토로 정하세요(
review-required). - 앱 푸시: 이 가이드는 앱 푸시도 “전자적 전송매체”로 보고 같은 규칙을 적용하는 것을 권장합니다. 법령 조문이 앱 푸시를 직접 명시하지는 않으므로
review-required입니다. - 2년 재확인의 기산점: 시행령 제62조의3제1항은 “수신동의를 받은 날부터 2년마다”라고 정합니다. 재확인에서 동의를 유지한 뒤 다음 2년을 재확인일부터 셀지는 해석 문제이므로, 예제는 재확인일부터 다시 세는 방식으로 구현했습니다(
review-required). - 명시사항 형식: 제50조제4항의 명시사항을 어떻게 표시할지(제목 맨 앞 “(광고)” 표기, 수신거부 방법 위치 등)는 시행령 별표 6이 정합니다. 이 프로젝트는 별표 6을 아직 원문과 대조하지 않았습니다(
review-required). - 발송을 외부 대행사(문자·메일 발송 SaaS)에 맡기면 개인정보 처리 업무위탁에 해당할 수 있고, 광고 전송 위탁에 관해서는 제50조의3이 따로 있습니다(조문 대조 전,
review-required). → 제3자 제공과 위탁
실제 법적 근거
섹션 제목: “실제 법적 근거”- 「정보통신망 이용촉진 및 정보보호 등에 관한 법률」 제50조제1항: “누구든지 전자적 전송매체를 이용하여 영리목적의 광고성 정보를 전송하려면 그 수신자의 명시적인 사전 동의를 받아야 한다.” 단서 제1호: 재화등의 거래관계를 통하여 수신자로부터 직접 연락처를 수집한 자가 대통령령으로 정한 기간 이내에 자신이 처리하고 수신자와 거래한 것과 같은 종류의 재화등에 대한 광고성 정보를 전송하려는 경우.
- 같은 법 시행령 제61조제1항: 위 기간은 “해당 재화등의 거래가 종료된 날부터 6개월”.
- 제50조제2항: 수신자가 수신거부의사를 표시하거나 사전 동의를 철회한 경우에는 전송하여서는 아니 된다.
- 제50조제3항: “오후 9시부터 그 다음 날 오전 8시까지의 시간에” 전송하려는 자는 별도의 사전 동의를 받아야 한다. 다만, 대통령령으로 정하는 매체는 예외. 시행령 제61조제2항: 그 매체는 “전자우편”.
- 제50조제4항: 전송자의 명칭 및 연락처, 수신 거부 또는 수신동의 철회를 쉽게 할 수 있는 조치 및 방법을 광고성 정보에 구체적으로 밝혀야 한다(방법은 시행령 제61조제3항·별표 6).
- 제50조제5항: 수신거부·철회를 회피·방해하는 행위, 연락처 자동 생성, 연락처 자동 등록, 전송자 신원·출처 은폐, 기망에 의한 회신 유도 금지.
- 제50조제6항, 시행령 제62조: 수신거부·철회 시 전화요금 등 금전적 비용을 수신자가 부담하지 않도록 무료전화서비스 등을 제공.
- 제50조제7항, 시행령 제62조의2: 의사를 표시한 날부터 14일 이내 전송자의 명칭, 의사표시 사실과 날짜, 처리 결과를 알려야 한다.
- 제50조제8항, 시행령 제62조의3: 수신동의를 받은 날부터 2년마다(매 2년이 되는 해의 수신동의를 받은 날과 같은 날 전까지) 동의 여부를 확인하고, 전송자의 명칭, 동의 사실과 날짜, 유지 또는 철회 의사를 표시하는 방법을 밝혀야 한다.
- 「개인정보 보호법」 제22조제1항제7호: “재화나 서비스를 홍보하거나 판매를 권유하기 위하여 개인정보의 처리에 대한 동의를 받으려는 경우” 구분해서 동의를 받아야 한다. 제5항: 이에 동의하지 않는다는 이유로 재화 또는 서비스의 제공을 거부하여서는 아니 된다.
(정보통신망법 법률 제21988호·시행령 대통령령 제36728호(2026.10.2. 시행), 개인정보 보호법 법률 제21445호 기준. 2026-10-23 국가법령정보센터 현행 원문 대조.)
개발자용 실무 해설
섹션 제목: “개발자용 실무 해설”- 동의는 “채널 × 유형” 단위로 저장합니다.
marketing_opt_in: boolean하나로는 SMS는 동의하고 이메일은 거부한 상태, 야간 동의만 철회한 상태를 표현할 수 없습니다. 최소(user_id, channel)마다consented,night_consented,consented_on을 둡니다. - 상태와 이력을 분리합니다. 현재 상태 테이블은 발송 판단용이고, 모든 의사표시는 append-only 이벤트(일시, 채널, 행위, 수집 경로·화면 버전)로 남깁니다. 분쟁이나 감독기관 문의 때 “언제 어디서 동의했는가”를 증명하는 자료가 이벤트 로그입니다.
- 발송 직전에 게이트를 통과시킵니다. 캠페인 대상자를 추출할 때 필터링하고 끝내면, 추출과 발송 사이에 들어온 수신거부를 놓칩니다. 발송 워커가 메시지 1건마다
can_send()를 다시 확인하도록 합니다. - 야간 판정은 한국 시간(KST)으로 합니다. 서버가 UTC로 돌면 21시 판정이 9시간 어긋납니다. 예약 발송은 “예약 시각”이 아니라 “실제 전송 시각”을 기준으로 판정하고, 큐 적체로 21시를 넘기면 보류합니다.
- 수신거부는 모든 경로에서 같은 상태로 모읍니다. 이메일 하단 링크, 080 무료 수신거부 번호, 앱 설정, 고객센터 요청이 하나의 상태로 합쳐져야 합니다. 외부 발송 대행사의 수신거부 목록도 주기적으로 받아 반영합니다.
- 처리 결과 통지와 2년 재확인은 배치로 만듭니다. 의사표시 이벤트마다 통지 작업을 기한(14일)과 함께 큐에 넣고, 재확인은 기한 30일 전쯤 안내를 보내는 일일 배치로 돌립니다. 기한이 지났는데 응답이 없으면 발송을 막습니다(예제 기본값). 응답이 없을 때 동의를 철회한 것으로 볼지는 법무 검토가 필요합니다(
review-required). - 거래관계 예외는 좁게 씁니다. 거래 종료일(배송 완료, 서비스 해지일 등)과 재화등의 종류를 데이터로 갖고 있어야 판정할 수 있습니다. “같은 종류”의 판단 기준이 불명확하면 예외를 쓰지 말고 동의를 받는 편이 안전합니다.
- 개인정보 보호법 동의와 연결합니다. 수신동의를 철회하면 개인정보 보호법 제22조제1항제7호 동의에 근거한 마케팅 프로필 처리도 멈추고 파기 대상으로 넘기는지 함께 설계합니다. → 보존기간과 파기
권장 설계
섹션 제목: “권장 설계”가입·설정 화면 ──▶ ConsentService.record(user, channel, action, source) ├─ channel_consents (현재 상태: consented, night, consented_on) ├─ consent_events (append-only 이력) └─ result_notice_queue (due = 의사표시일 + 14일)
캠페인 추출 ──▶ 발송 큐 ──▶ 발송 워커 ── can_send(user, channel, at=실제 전송 시각) │ 1) 동의 or 거래관계 예외(6개월·같은 종류) │ 2) 수신거부·철회 이력 없음 │ 3) 2년 재확인 기한 이내 │ 4) 21~08시면 야간 동의(이메일 예외) ▼ 메시지 템플릿: 전송자 명칭·연락처, 무료 수신거부 방법 (별표 6 형식)
일일 배치: due_for_reconfirm(30일) ──▶ 재확인 안내 발송 (명칭, 동의 사실·날짜, 유지/철회 방법)수신거부 동기화: 080 번호·발송 대행사 수신거부 목록 ──▶ record(..., REFUSE)위험한 설계
섹션 제목: “위험한 설계”- 회원가입 필수 동의에 마케팅 수신을 묶거나, 마케팅에 동의하지 않으면 가입 버튼을 비활성화함
- 채널 구분 없이
marketing_opt_in하나로 저장하고 동의 일시·경로 이력이 없음 - 캠페인 대상자 추출 시점에만 동의를 확인하고, 발송 시점에 다시 확인하지 않음
- 서버 시간대(UTC) 기준으로 야간을 판정함
- 수신거부 링크가 로그인을 요구하거나 여러 단계를 거치게 함(제50조제5항제1호의 “회피·방해”에 해당할 수 있음)
- 발송 대행사에서 받은 수신거부를 자사 DB에 반영하지 않아 다른 채널·다른 대행사로 계속 발송
- 거래 알림 메시지에 쿠폰·상품 추천을 넣으면서 광고성 정보 규칙을 적용하지 않음
- 동의일을 저장하지 않아 2년 재확인 대상을 계산할 수 없음
Python/TypeScript 구현 예제
섹션 제목: “Python/TypeScript 구현 예제”전체 코드와 테스트는 examples/python-fastapi/src/kr_privacy_examples/marketing_consent.py와 examples/typescript/src/marketingConsent.ts에 있습니다.
from kr_privacy_examples.marketing_consent import Action, Channel, ConsentStore, MarketingConsentService
svc = MarketingConsentService(ConsentStore(sender_name="예시상점"))svc.record("u-1", Channel.SMS, Action.CONSENT, source="signup_form_v3")
# 발송 워커: 메시지 1건마다 실제 전송 시각으로 다시 판정decision = svc.can_send("u-1", Channel.SMS)if not decision.allowed: skip(reason=decision.reason) # "야간(21시~08시) 별도 동의 없음", "수신동의 2년 재확인 기한 경과" 등
# 수신거부는 즉시 반영하고, 14일 기한의 처리 결과 통지를 큐에 넣는다notice = svc.record("u-1", Channel.SMS, Action.REFUSE, source="080_unsubscribe")enqueue_notice(notice) # notice.due == 의사표시일 + 14일
# 일일 배치: 30일 안에 재확인 기한이 오는 동의for user_id, channel, deadline in svc.due_for_reconfirm(within_days=30): send_reconfirm_notice(user_id, channel, deadline)import { MarketingConsentService } from "./marketingConsent.js";
const svc = new MarketingConsentService("예시상점");svc.record("u-1", "push", "consent", "app_onboarding_v2");
// 예약 발송이 큐 적체로 21시를 넘기면 보류const d = svc.canSend("u-1", "push", { at: new Date() });if (!d.allowed) holdUntilMorning(d.reason);
// 거래관계 예외: 같은 종류 재화, 거래 종료일부터 6개월 이내svc.canSend("u-2", "sms", { category: "커피 원두", transaction: { category: "커피 원두", endedOn: "2026-05-10" } });테스트는 KST 야간 경계(20:59/21:00/07:59/08:00), 이메일 야간 예외, 수신거부가 거래관계 예외보다 우선하는지, 6개월 경계, 2년 재확인 기한과 윤년 보정을 확인합니다. → 구현 예제
개발 체크리스트
섹션 제목: “개발 체크리스트”- 마케팅 수신동의가 필수 동의와 분리된 선택 항목이고, 미동의해도 가입·서비스 이용이 된다
- 수신동의를 채널별로 저장하고, 모든 의사표시를 일시·경로와 함께 이력으로 남긴다
- 야간(21~08시, KST) 발송에는 별도 동의를 확인한다. 전자우편 외 채널에 적용된다
- 발송 워커가 메시지마다 실제 전송 시각 기준으로 동의·거부·야간 여부를 다시 확인한다
- 수신거부·철회가 모든 경로(링크, 080, 앱 설정, 고객센터, 발송 대행사)에서 하나의 상태로 즉시 반영된다
- 수신거부 방법이 무료이고 로그인 등 추가 장벽이 없다
- 동의·거부·철회 의사표시 후 14일 이내 처리 결과 통지가 나간다
- 동의일부터 2년이 되기 전에 재확인 안내를 보내고, 기한이 지나면 발송을 막는다
- 메시지에 전송자 명칭·연락처, 수신거부 방법이 들어간다. 표기 형식은 시행령 별표 6으로 확인했다 (
review-required) - 거래 알림에 광고 내용을 섞지 않거나, 섞으면 광고성 정보 규칙을 적용한다
- 앱 푸시를 광고성 정보 전송 매체로 다룰지 법무 검토를 받았다 (
review-required)
공식 원문 링크와 확인일
섹션 제목: “공식 원문 링크와 확인일”아래 “근거 구분표”와 “공식 원문 링크”를 참고하세요. 정보통신망법 제50조, 같은 법 시행령 제61조·제62조·제62조의2·제62조의3, 개인정보 보호법 제22조는 2026-10-23에 국가법령정보센터 현행 원문으로 확인했습니다. 시행령 별표 6, 제50조의3(광고 전송 위탁), 앱 푸시의 매체 해당 여부, 재확인 기산점은 review-required입니다.
근거 구분표
법률·시행령·고시는 법적 의무, 안내서는 행정기관 해석·권고, 기술 표준과 프로젝트 권장사항은 법적 의무가 아닙니다.
| 구분 | 출처·조항 | 내용 | 확인 상태 |
|---|---|---|---|
| 법률 | 정보통신망 이용촉진 및 정보보호 등에 관한 법률 제50조제1항 | 전자적 전송매체로 영리목적의 광고성 정보를 전송하려면 수신자의 명시적인 사전 동의가 필요. 예외는 거래관계로 직접 연락처를 수집한 자가 같은 종류 재화등을 대통령령 기간 안에 광고하는 경우 등 | 원문 확인 |
| 시행령 | 정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행령 제61조제1항 | 거래관계 예외의 "대통령령으로 정한 기간"은 해당 재화등의 거래가 종료된 날부터 6개월 | 원문 확인 |
| 법률 | 정보통신망 이용촉진 및 정보보호 등에 관한 법률 제50조제2항, 제3항 | 수신거부·동의 철회 시 전송 금지. 오후 9시부터 다음 날 오전 8시까지는 별도의 사전 동의 필요(대통령령으로 정하는 매체는 예외) | 원문 확인 |
| 시행령 | 정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행령 제61조제2항 | 야간 별도 동의의 예외 매체는 전자우편 | 원문 확인 |
| 법률 | 정보통신망 이용촉진 및 정보보호 등에 관한 법률 제50조제4항, 제5항, 제6항 | 전송자 명칭·연락처와 수신거부·철회 방법 명시, 수신거부 회피·방해 등 금지행위, 수신거부 비용을 수신자가 부담하지 않도록 조치 | 원문 확인 |
| 시행령 | 정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행령 제61조제3항, 별표 6 | 광고성 정보에 밝혀야 할 사항과 방법은 별표 6에 따름 — 별표 6의 구체 표기 형식("(광고)" 위치 등)은 원문 대조 전 | review-required |
| 법률 | 정보통신망 이용촉진 및 정보보호 등에 관한 법률 제50조제7항, 제8항 | 수신동의·수신거부·철회 의사표시에 대한 처리 결과를 알리고, 수신동의 여부를 정기적으로 확인 | 원문 확인 |
| 시행령 | 정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행령 제62조의2, 제62조의3 | 의사표시일부터 14일 이내 처리 결과 통지(전송자 명칭, 의사표시 사실과 날짜, 처리 결과). 수신동의를 받은 날부터 2년마다 동의 여부 확인(전송자 명칭, 동의 사실과 날짜, 유지·철회 방법 안내) | 원문 확인 |
| 법률 | 개인정보 보호법 제22조제1항제7호, 제5항 | 홍보·판매 권유 목적의 개인정보 처리 동의는 구분해서 받고, 이에 동의하지 않는다는 이유로 재화·서비스 제공을 거부할 수 없음 | 원문 확인 |
| 프로젝트 권장사항 | Korea Privacy Dev Guide 프로젝트 권장사항 | 앱 푸시를 전자적 전송매체로 보고 같은 규칙 적용, 재확인 후 기산점을 재확인일로 보는 해석, 발송 직전 게이트 설계는 이 프로젝트의 보수적 권장사항 | review-required |
공식 원문 링크
- 정보통신망 이용촉진 및 정보보호 등에 관한 법률 · 법률 제21988호 · 시행 2026-10-02 · 확인일 2026-10-23
- 정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행령 · 대통령령 제36728호 · 시행 2026-10-02 · 확인일 2026-10-23
- 개인정보 보호법 · 법률 제21445호 · 시행 2026-09-11 · 확인일 2026-10-23
- Korea Privacy Dev Guide 프로젝트 권장사항 · 확인일 2026-10-23