기능성 푸시 terms_disagreed_member — 미니앱 동의와 무관한 「사용자 최적화 제공」 약관에 막힘 (문서/sdk 개선 요청)

이 글의 성격은 무엇인가요?

정보 공유

내용을 설명해주세요

안녕하세요.

미니앱 그거아세요? (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: []

왜 버그/개선이 필요한지

  1. 에러 코드가 오해 유발
    TERMS_DISAGREED_MEMBER는 “미니앱 알림 미동의”처럼 보이지만, 실제로는 토스 계정 전역 약관입니다. 파트너는 동의 SDK·서비스별 알림을 다 맞춰도 원인을 알 수 없습니다.

  2. 공식 문서에 해당 레이어가 없음
    가이드상으로는 requestAgreement + 템플릿 승인만으로 기능성 발송이 되는 것처럼 읽히는데, 실제로는 숨은 전제 조건이 하나 더 있습니다.

  3. 파트너가 해결할 수단이 없음
    – 해당 약관 상태를 조회하는 SDK 없음
    – 설정 화면으로 보내는 딥링크/공식 유도 수단 없음
    – 발송 후에야 reachedFailReason으로만 확인 가능
    → 유저 입장에선 “알림 켰는데 안 온다”로만 남고, 미니앱 측에서 구제할 방법이 없습니다.

  4. 기능성 메시지까지 전역 마케팅성 약관에 묶이는지 정책 확인 필요
    슬롯 충전 완료 같은 기능성 알림이 「사용자 최적화 제공」에 의존하는 게 의도된 정책인지, 아니면 검사 버그인지 명확히 해주시면 좋겠습니다.

재현 정보 (참고)

  • 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

요청

  1. 기능성 메시지 수신에 필요한 동의/권한 레이어를 공식 문서에 명시해 주세요.
    (OS 알림 / 사용자 최적화 제공 / 서비스별·알림동의문 등)
  2. TERMS_DISAGREED_MEMBER를 원인별로 분리하거나, 최소한 reason을 구분할 수 있게 해주세요.
    (예: 미니앱 미동의 vs 사용자 최적화 미동의)
  3. 발송 전 수신 가능 여부 조회 API/SDK 와, 가능하면 해당 설정으로 가는 딥링크를 제공해 주세요.
  4. 기능성 메시지가 사용자 최적화 약관에 묶이는 것이 의도된 정책인지 확인해 주세요. 의도라면 가이드에, 아니라면 수정 부탁드립니다.

파트너 앱만으로는 해결이 불가능한 레이어라, 토스 측 확인·수정(또는 최소한 문서화)이 필요합니다. 확인 부탁드립니다.

appName: doyouknow


관련 제보:

안녕하세요 :slight_smile:
조금 더 상세한 에러코드를 줄 수 있을지 / 개발자센터 문서 보강까지 내부적으로 논의해보겠습니다.
감사합니다!

정리해주신 덕분에 원인을 찾을 수 있었습니다. 같은 증상을 겪고 있어 사례를 보탭니다.

미니앱 3개에서 동일하게 재현됩니다 (song-worldcup / how-much-others / is-it-only-me).

1. REGULAR(토스에게 발송 요청) 방식에서는 단서조차 남지 않습니다

원글은 Partner API 발송 사례인데, 콘솔 스마트발송 REGULAR 방식에서는 이 문제가 "발송 실패"로도 잡히지 않습니다. 알림동의문에 동의한 사용자가 있는데도 발송 대상 세그먼트 count가 0으로 유지되고, 캠페인 발송 이력에는 "발송 완료 0 / 발송 실패 0"으로만 기록됩니다. reachedFailReason 자체가 남지 않아 TERMS_DISAGREED_MEMBER라는 힌트조차 볼 수 없었습니다.

- how-much-others: 9/2~9/4 매일 09:00 발송 실행, 매번 완료 0 / 실패 0

- is-it-only-me: 9/3 20:00 발송 실행, 완료 0 / 실패 0

- song-worldcup(SERVER 방식): sentCount 27 / reachedCount 0, 과거 TERMS_DISAGREED_MEMBER 수신

2. 「사용자 최적화 제공」 항목이 설정에도 검색에도 나타나지 않는 계정이 있습니다

안내된 경로(전체 탭 → 검색 → “사용자 최적화”, “사용자 최적화 동의”)로 검색해도 결과가 없고, 전체 → 설정 → 약관 및 개인정보 처리 동의 목록을 처음부터 끝까지 확인해도 해당 항목이 없습니다. 서비스별 동의 목록에는 토스 / 토스 계정 통합 서비스 / 토스 비즈니스 등만 있습니다.

“알림 푸시가 테스트에서 아무리 해도 안됩니다” 글에서도 같은 보고가 있었고(8/12, “'사용자 최적화 제품’이라는 것 자체가 보이지 않습니다”) 이후 답변이 이어지지 않은 것으로 보입니다. 저희까지 최소 두 건입니다.

동의를 하고 싶어도 진입할 방법이 없는 상태라, 원글 요청 3번(해당 설정으로 가는 딥링크 제공)이 특히 절실합니다. 미동의 상태에서 항목이 노출되지 않는 것이 의도된 동작인지도 확인 부탁드립니다.

3. 추가 질문 — 새로 만든 동의문인데 newAgreement가 나오지 않습니다

Notification.requestAgreement가 이 약관 미동의 사용자에게도 alreadyAgreed를 반환하는 것으로 보입니다. is-it-only-me는 9/3에 처음 출시한 미니앱이고 알림동의문도 9/3에 처음 생성했는데, SDK 반환값이 10회 시도 전부 alreadyAgreed였고 newAgreement가 한 건도 없었습니다. 새로 만든 동의문에 처음 동의하는 사용자에게도 alreadyAgreed가 반환되는 것이 정상 동작인지 궁금합니다.

환경: @apps-in-toss/web-framework 3.2.0 / WebView / 토스앱 5.270~5.275