양식을 제출했는데 ‘ERR_5032’ 같은 코드만 뜨면 이용자는 다시 시도할지, 입력을 고칠지 알 수 없습니다. 오류 메시지는 문제의 범위와 지금 할 수 있는 행동을 설명해야 합니다. 내부 코드는 담당자가 진단하는 데 도움이 될 수 있지만 이용자에게 유일한 안내가 되어서는 안 됩니다.
먼저 사용자 입력 오류와 서비스 장애를 구분합니다. 필수 항목이 빠졌다면 어떤 항목인지 표시하고 입력한 다른 값은 유지해야 합니다. 서버나 외부 인증의 문제라면 이용자가 잘못한 것처럼 표현하지 않고 잠시 뒤 다시 시도하거나 공식 지원 경로를 확인하도록 안내합니다. 실제로 확인되지 않은 복구 시간을 약속하지 않습니다.
결제와 예약 같은 중요한 행동에서는 완료 여부가 가장 중요합니다. 오류 화면이 떠도 처리가 접수됐을 수 있으므로 무조건 다시 제출하라고 하면 중복 신청이 생길 수 있습니다. 현재 상태를 확인할 경로를 제공하고, 운영자가 추가 확인해야 한다면 어떤 정보가 필요한지 최소 범위로 안내합니다. 개인정보를 공개 댓글에 남기게 하지 않습니다.
메시지의 위치도 살펴봅니다. 화면 맨 위에 ‘오류’만 보이고 실제 입력란의 문제는 아래에 숨으면 찾기 어렵습니다. 해당 항목 가까이에 설명하고 키보드 초점이나 화면 읽기에도 오류가 전달되도록 확인합니다. 색상만으로 상태를 구분하지 않습니다.
고객에게 보이는 문구와 내부 로그는 분리합니다. 내부 코드와 발생 시각을 지원 담당자가 추적할 수 있게 하되 민감한 시스템 정보는 공개 화면에 노출하지 않습니다. 메시지와 실제 시스템 동작이 일치하는지 모바일과 컴퓨터에서 시험합니다.
같은 오류가 반복된다면 문구만 더 친절하게 바꾸는 데 그치지 않고 원인을 고쳐야 합니다. 좋은 오류 메시지는 코드 해독을 요구하지 않고 이용자가 자신의 작업 상태를 이해하고 안전한 다음 단계를 선택하게 합니다.
지원 담당자에게 문의할 때 필요한 접수번호가 있다면 개인정보가 아닌 범위에서 표시할 수 있습니다. 이용자가 오류 상황을 설명하기 위해 화면 전체나 민감한 입력값을 캡처하도록 요구하지 않는 편이 안전합니다.