이 글의 성격은 무엇인가요?
정보 공유
내용을 설명해주세요
안녕하세요.
미니앱 그거아세요? (doyouknow) 에서 기능성 메시지 발송이 계속 TERMS_DISAGREED_MEMBER로 실패해서 원인을 추적했습니다.
동일 증상을 겪는 분들이 많아, 재현·원인·개선 요청을 정리해 남깁니다.
증상
- Notification.requestAgreement → newAgreement / alreadyAgreed 정상 수신
- 토스 앱 → 설정 → 알림 → 서비스별 알림 ON
- Partner API send-message / send-test-message 모두
– resultType: “SUCCESS”
– msgCount / sentPushCount / sentInboxCount = 0
– fail.*.reachedFailReason: “TERMS_DISAGREED_MEMBER”
템플릿은 승인된 기능성 캠페인(doyouknow-slot, doyouknow-full)이고, 존재하지 않는 코드는 5004로 정상 거절됩니다. 즉 발송 파이프라인·템플릿 코드 인식은 정상입니다.
실제 원인
토스 앱 「사용자 최적화 제공」 약관이 꺼져 있으면, 미니앱 알림 동의와 무관하게 위 에러로 막힙니다.
- 경로: 전체 탭 → 검색 → 사용자 최적화 / 사용자 최적화 동의
- 미동의 상태에서는 설정 목록에 항목이 안 보이는 경우도 있어, 검색으로만 찾을 수 있었습니다.
- 해당 약관을 켠 직후 동일 API로 재발송하니 즉시 성공했습니다.
msgCount: 2
sentPushCount: 1
sentInboxCount: 1
fail: []
왜 버그/개선이 필요한지
-
에러 코드가 오해 유발
TERMS_DISAGREED_MEMBER는 “미니앱 알림 미동의”처럼 보이지만, 실제로는 토스 계정 전역 약관입니다. 파트너는 동의 SDK·서비스별 알림을 다 맞춰도 원인을 알 수 없습니다. -
공식 문서에 해당 레이어가 없음
가이드상으로는 requestAgreement + 템플릿 승인만으로 기능성 발송이 되는 것처럼 읽히는데, 실제로는 숨은 전제 조건이 하나 더 있습니다. -
파트너가 해결할 수단이 없음
– 해당 약관 상태를 조회하는 SDK 없음
– 설정 화면으로 보내는 딥링크/공식 유도 수단 없음
– 발송 후에야 reachedFailReason으로만 확인 가능
→ 유저 입장에선 “알림 켰는데 안 온다”로만 남고, 미니앱 측에서 구제할 방법이 없습니다. -
기능성 메시지까지 전역 마케팅성 약관에 묶이는지 정책 확인 필요
슬롯 충전 완료 같은 기능성 알림이 「사용자 최적화 제공」에 의존하는 게 의도된 정책인지, 아니면 검사 버그인지 명확히 해주시면 좋겠습니다.
재현 정보 (참고)
- appName: doyouknow
- templateSetCode: doyouknow-full
- 발송: mTLS + x-anon-key
- 동의 직후에도 실패 → 사용자 최적화 동의 후 성공
- contentId (실패 시점 예): trustee:PUSH-93fa7b88-f5ef-4712-a7c4-ed8b292893fd
- contentId (성공 시점 예): trustee:PUSH-09496b55-a20e-4407-b6d5-e6002edeb33e
요청
- 기능성 메시지 수신에 필요한 동의/권한 레이어를 공식 문서에 명시해 주세요.
(OS 알림 / 사용자 최적화 제공 / 서비스별·알림동의문 등) - TERMS_DISAGREED_MEMBER를 원인별로 분리하거나, 최소한 reason을 구분할 수 있게 해주세요.
(예: 미니앱 미동의 vs 사용자 최적화 미동의) - 발송 전 수신 가능 여부 조회 API/SDK 와, 가능하면 해당 설정으로 가는 딥링크를 제공해 주세요.
- 기능성 메시지가 사용자 최적화 약관에 묶이는 것이 의도된 정책인지 확인해 주세요. 의도라면 가이드에, 아니라면 수정 부탁드립니다.
파트너 앱만으로는 해결이 불가능한 레이어라, 토스 측 확인·수정(또는 최소한 문서화)이 필요합니다. 확인 부탁드립니다.
appName: doyouknow