1기 마감·2기 준비 중1:1 프라이빗 신청↗1:1 신청

AWC(Agentic Workflows Club)는 대표님의 사업에 AI를 적용하고, 직접 활용하는 역량을 함께 키웁니다.

프로그램대표 부트캠프 (그룹)프라이빗 빌드1:1 Signature기타 문의
둘러보기워크플로우실전 도입 사례블로그자주 묻는 질문
ConnectThreadsInstagram (AWC)Instagram (Bruce)bruce@intellieffect.com

상호 인텔리이펙트(Intellieffect)대표 최종혁사업자등록번호 103-28-01020주소 서울특별시 강동구 고덕비즈밸리로 51이메일 bruce@intellieffect.com

© 2026 agenticworkflows.club

개인정보처리방침이용약관
인사이트

표를 하나 늘렸더니 한 달 동안 초대 메일이 한 통도 안 나갔습니다

운영팀 메일에 브랜드 이름 자리가 「Unknown Brand」로 찍혀 왔습니다. 템플릿 문제로 보였지만, 파 보니 관리자 화면의 의뢰 큐도 캠페인을 못 읽고 있었고 초대·리마인더·접수 알림 세 종류의 자동 메일은 8월 중순 이후 한 통도 성공한 적이 없었습니다. 원인은 8월 14일에 붙은 「캠페인에 브랜드 고정」 기능이 만든 연결 표 하나였습니다. 기존 조회가 두 갈래가 돼 데이터베이스가 거부했는데, 에러를 버리고 「Unknown」으로 넘어가는 폴백이 사고를 이상한 메일 한 통으로 줄였습니다. 대표가 가져갈 세 칸을 작업 기록 원문으로 정리했습니다.

2026. 09. 119분 읽기
4
표를 하나 늘렸더니 한 달 동안 초대 메일이 한 통도 안 나갔습니다라는 잉크 다크 헤드라인 타이포 카드, Unknown Brand 와 실패로 보이게를 대비한 모티프와 AWC 브랜드 슬라임
  1. 「Unknown Brand」 메일 한 통이 전부가 아니었습니다
  2. 표 하나를 늘리자 옛 조회가 두 갈래가 됐습니다
  3. 에러를 삼키는 폴백이 사고를 메일 한 통으로 줄였습니다
  4. 고침은 「이 길로 가라」 한 줄이었고, 같은 날 두 번째 결함도 나왔습니다
  5. 대표가 가져갈 세 칸은 「실패가 실패로 보이게 돼 있는가」입니다
  6. 정리
  7. 자동 메일이 이상할 때 이 네 가지만 물어보세요
  8. 자주 묻는 질문
  9. Q. 새 기능을 붙였는데 기존 기능이 왜 깨집니까?
  10. Q. 자동 메일에 「Unknown」이 찍혀 오면 무엇부터 봅니까?
  11. Q. 에러가 났으면 왜 아무도 몰랐습니까?
  12. Q. 폴백을 아예 없애야 합니까?
  13. Q. 링크가 절반만 찍힌 건 같은 원인입니까?
한 줄 답

자동 메일이 안 나가거나 「Unknown」이 찍혀 오면, 템플릿보다 데이터 조회 실패를 먼저 의심합니다. 저희가 운영을 돕는 플랫폼 한 곳은 표를 하나 늘린 뒤 초대·리마인더·접수 알림 메일이 한 달 동안 한 통도 성공하지 못했고, 아무도 몰랐습니다.

✕

"메일 템플릿이 이상한가 봐요"

거르세요
✓

"조회가 실패한 건 아닙니까"

믿으세요

새 연결 표 하나가 기존 조회를 「어느 길로 가야 하나」 두 갈래로 만들어 데이터베이스가 거부했고, 그 거부를 받은 코드가 에러를 버리고 「Unknown Brand」로 넘어가도록 돼 있어 사고가 이상한 메일 한 통으로만 보였습니다. 고침은 조회에 「이 길로 가라」 한 줄이었습니다.

운영팀 메일에 브랜드 이름 자리가 「Unknown Brand」로 찍혀 왔습니다.
처음엔 메일 템플릿 문제로 보였습니다.

파 보니 관리자 화면의 의뢰 큐도 캠페인을 못 읽고 있었고, 세 종류의 자동 메일은 8월 중순 이후 한 통도 성공한 적이 없었습니다.
한 달 동안 아무도 몰랐습니다.

이 글은 9월 10일 그 자리를 파 들어간 기록을 원문으로 옮기고, 대표가 가져갈 세 칸을 정리한 것입니다.
고객사 이름·표 이름·오류 코드는 싣지 않습니다.

01

증상

「Unknown Brand」 메일 한 통이 전부가 아니었습니다

시작은 운영팀 받은편지함의 메일 한 통이었습니다.
의뢰가 들어왔다는 알림인데, 브랜드 이름 자리에 「Unknown Brand」가 찍혀 있었습니다.

템플릿 변수가 빠졌나 싶어 열어 봤습니다.
템플릿은 멀쩡했고, 그 자리에 넣을 값이 애초에 오지 않은 것이었습니다.

증상이 세 갈래로 흩어져 있었다:
① 운영팀 의뢰 알림 메일 「Unknown Brand」(워커가 에러를 삼키고 폴백)

② 어드민 의뢰 큐·상세가 캠페인 못 읽음

③ 캠페인 초대·리마인더·워커 접수 알림 발송 실패(8/11 이후 성공 0).

8/14~9/10 한 달 아무도 몰랐다

저희 운영 지원 작업 기록 원문 (2026-09-10 · 저희가 운영을 돕는 플랫폼 한 곳 · 표 이름·오류 코드·화면 주소는 일반 명사로 풀어 씀)

같은 원인이 세 곳에 다른 얼굴로 나타나 있었습니다.
메일에는 「Unknown」으로, 관리자 화면에는 빈 큐로, 발송 기록에는 실패 행으로.

셋 중 어느 하나도 「사고」라고 소리치지 않았습니다.
메일은 나갔고, 화면은 떴고, 실패 행은 아무도 안 보는 표에 쌓였습니다.

증상 세 개를 원인 하나로 묶는 질문이 먼저였습니다.

슬라임 체크「Unknown」 한 통 뒤에 빈 큐와 발송 실패 한 달치가 같이 있었어요. 셋은 한 원인이에요.
02

원인

표 하나를 늘리자 옛 조회가 두 갈래가 됐습니다

원인은 8월 14일에 붙은 기능 하나였습니다.
「캠페인에 브랜드를 고정(핀)한다」는 기능이었고, 그러려면 캠페인과 브랜드 사이에 연결 표를 하나 더 만들어야 했습니다.

그 표가 생기는 순간 캠페인에서 브랜드로 가는 길이 둘이 됐습니다.
원래 있던 「캠페인의 브랜드」 길과, 새로 생긴 「캠페인에 고정된 브랜드들」 길.

캠페인 표에서 브랜드 프로필을 힌트 없이 임베드하면 데이터베이스 API 가 「둘 이상의 관계가 발견돼 임베드할 수 없다」로 거부한다.
2026-08-14 캠페인 핀 표가 캠페인↔브랜드 다대다 경로를 하나 더 만들었기 때문.

정답은 브랜드 프로필!캠페인_브랜드_외래키(...)

계약→브랜드 프로필은 경로가 하나라 멀쩡.

저희 운영 지원 작업 기록 원문 (2026-09-10 · 저희가 운영을 돕는 플랫폼 한 곳 · 표 이름·오류 코드·화면 주소는 일반 명사로 풀어 씀)

기존 조회는 「캠페인 정보를 가져올 때 브랜드 정보도 같이」라고만 적혀 있었습니다.
길이 하나일 땐 그걸로 충분했고, 길이 둘이 되자 데이터베이스는 모호하다며 거부했습니다.

이건 이 플랫폼만의 버릇이 아닙니다.
같은 데이터베이스 API 의 공식 문서가 똑같은 상황을 예제로 적어 두고 있습니다.

Since the orders table has two foreign keys to the addresses table, a foreign key join is ambiguous and PostgREST will respond with an error
Try changing 'addresses' to one of the following: 'addresses!billing', 'addresses!shipping'

PostgREST 공식 문서 「Resource Embedding」 원문 (2026-09-11 확인)

새 기능은 「추가」였습니다.
기존 조회는 한 글자도 안 바뀌었는데, 옆에 길이 하나 늘자 그 조회가 깨졌습니다.

새 기능이 「추가」라고 기존 것이 그대로인 건 아닙니다.

슬라임 체크표·연결·필드 하나가 늘면 옛 조회가 두 갈래가 될 수 있어요. 붙인 날 옛 조회를 한 번 때려 봐야 해요.
03

침묵

에러를 삼키는 폴백이 사고를 메일 한 통으로 줄였습니다

데이터베이스는 거부했습니다.
그런데 왜 한 달 동안 아무도 몰랐을까요.

클라이언트 라이브러리는 이 에러를 {data:null, error} 로 주므로 error 를 버리는 코드는 조용히 폴백한다

저희 운영 지원 작업 기록 원문 (2026-09-10 · 저희가 운영을 돕는 플랫폼 한 곳 · 표 이름·오류 코드·화면 주소는 일반 명사로 풀어 씀)

자동화 코드가 데이터베이스에 묻는 방식은 이렇습니다.
답이 오면 「데이터」 칸에, 실패하면 「에러」 칸에 담겨 돌아옵니다.

const { data, error } = await supabase

Supabase JavaScript 공식 문서 「select()」 원문 (2026-09-11 확인)

발송 워커는 「데이터」 칸만 봤습니다.
비어 있으면 브랜드 이름을 「Unknown Brand」로 채워 메일을 내보냈고, 「에러」 칸은 읽지 않고 버렸습니다.

그래서 실패는 실패로 집계되지 않았습니다.
메일은 정상 발송으로 찍혔고, 내용만 이상했습니다.

메일이 이상할 때의 판정 인포그래픽. '메일 템플릿이 이상한가 봐요'는 거르고 '조회가 실패한 건 아닙니까'를 믿으라는 비교. 에러를 버리고 Unknown 으로 채운 메일은 정상 발송으로 집계돼 한 달 동안 사고가 안 보이고, 에러 칸을 읽어 실패로 집계하면 첫 통에서 잡힌다는 설명

이 폴백은 만든 사람 입장에선 친절이었을 겁니다.
값이 없어도 메일이 깨지지 않게 하자는.

결과는 은폐였습니다.
「Unknown」·「-」·빈칸으로 나가는 자동 메일은 실패 알림이 되어야지, 정상 발송으로 집계되면 안 됩니다.

에러를 삼키는 폴백은 실패가 실패로 보이지 않게 만듭니다.

슬라임 체크「에러」 칸을 버리는 코드가 사고를 이상한 메일 한 통으로 줄였어요. 폴백은 실패 알림으로 바꿔요.
04

조치

고침은 「이 길로 가라」 한 줄이었고, 같은 날 두 번째 결함도 나왔습니다

고치는 건 조회에 「이 길로 가라」를 붙이는 것이었습니다.
브랜드 정보를 가져올 때 어느 연결을 타는지 이름을 적어 주면 두 갈래가 한 갈래로 돌아옵니다.

To successfully join orders with addresses, we can follow the error hint which tells us to add the foreign key name as !billing or !shipping

PostgREST 공식 문서 「Resource Embedding」 원문 (2026-09-11 확인)

그런데 다시 보낸 메일을 열자 링크가 절반만 찍혀 있었습니다.
같은 날 두 번째 결함이었습니다.

운영 환경 함수 시크릿에 사이트 주소·관리자 사이트 주소 두 개가 없어 메일 링크가 상대경로로 나갔다

저희 운영 지원 작업 기록 원문 (2026-09-10 · 저희가 운영을 돕는 플랫폼 한 곳 · 표 이름·오류 코드·화면 주소는 일반 명사로 풀어 씀)

메일 링크의 앞부분, 그러니까 「어느 사이트의」에 해당하는 주소 설정 두 개가 배포 환경에 없었습니다.
코드에는 있었고, 로컬에는 있었고, 운영 환경에만 없었습니다.

이것도 소리치지 않았습니다.
주소가 없으면 빈 문자열로 이어 붙이도록 돼 있었으니까요.

9/10 19:04 해결 완료 — 어드민 큐 힌트 수정과 워커·알림 함수 2종·운영팀 메일 수정 머지, 시크릿 2개 추가, 함수 3개 배포, 재발송 실측 sent

저희 운영 지원 작업 기록 원문 (2026-09-10 · 저희가 운영을 돕는 플랫폼 한 곳 · 표 이름·오류 코드·화면 주소는 일반 명사로 풀어 씀)

조회 한 줄, 설정 두 개.
고침은 한 시간 안에 끝났고, 찾는 데 한 달이 걸렸습니다.

고치는 비용은 한 줄이었고, 못 찾은 비용은 한 달이었습니다.

슬라임 체크힌트 한 줄과 설정 두 개로 재발송 「sent」. 고치는 건 짧았고 모르고 지난 시간이 길었어요.
05

대표의 세 칸

대표가 가져갈 세 칸은 「실패가 실패로 보이게 돼 있는가」입니다

이번 일에서 저희 작업 기록에 규칙 두 줄이 추가됐습니다.
원문 그대로 옮깁니다.

테이블에 새 조인 테이블(M:N)을 붙였으면 기존 임베드가 모호해지는지 … 확인
"메일 내용이 이상하다"는 신고는 메일 템플릿보다 데이터 조회 실패를 먼저 의심

저희 운영 지원 작업 기록에 추가된 규칙 원문 (2026-09-10)

대표는 코드를 읽지 않아도 됩니다.
다음 세 칸만 물으면 됩니다.

대표가 가져갈 세 칸 인포그래픽. 하나는 새 표·연결·필드를 붙인 날 기존 조회가 아직 한 갈래인지 한 번 때려 보기, 둘은 Unknown·빈칸으로 나가는 자동 메일을 정상 발송이 아니라 실패 알림으로 집계하기, 셋은 메일 내용이 이상하다는 신고에 템플릿보다 데이터 조회 실패를 먼저 의심하기

하나, 무언가를 「추가」한 날 기존 조회가 아직 한 갈래인지 확인했는가.
이번엔 표 하나였지만 연결·필드·설정도 같은 방식으로 옛것을 모호하게 만듭니다.

둘, 「Unknown」·「-」·빈칸으로 나가는 자동 메일이 실패로 집계되는가.
정상 발송으로 세어지면 한 달이 지나도 대시보드는 초록입니다.

셋, 「메일이 이상하다」 신고에 첫 질문이 무엇인가.
템플릿이 아니라 「그 값을 가져오는 조회가 살아 있는가」여야 합니다.

자동화는 붙일 때보다 옆에 뭔가 추가됐을 때 조용히 깨집니다.

슬라임 체크「실패가 실패로 보이게 돼 있는가」 한 질문이면 돼요. 폴백 하나가 한 달을 삼켰어요.

정리

경고 신호

  • 자동 메일에 「Unknown」·「-」·빈칸이 찍혀 나가는데 발송 상태는 「성공」이다

  • 새 기능을 붙인 날 기존 화면·메일·알림을 다시 확인한 기록이 없다

  • 「메일이 이상하다」 신고에 템플릿부터 고치기 시작한다

  • 실패 행이 아무도 안 보는 표에만 쌓이고 사람에게 오는 알림이 없다

좋은 신호

  • 값을 못 가져오면 메일이 「이상하게」 나가는 대신 「안 나가고 실패 알림」이 온다

  • 표·연결·필드를 추가한 날 기존 조회를 한 번 때려 보는 확인이 붙어 있다

  • 증상 세 개가 오면 원인 하나로 묶는 질문이 먼저다

  • 배포 환경 설정 목록이 코드의 설정 목록과 대조돼 있다

자동 메일이 이상할 때 이 네 가지만 물어보세요

  1. 메일에 「Unknown」·「-」·빈칸이 찍힌 발송이 「성공」으로 집계되고 있습니까?
    성공으로 세어지면 실패는 보이지 않습니다. 이번 플랫폼은 그 상태로 한 달이 지났습니다.

  2. 최근에 표·연결·필드·설정 중 무엇이 추가됐습니까?
    이번엔 8월 14일의 연결 표 하나였습니다. 추가된 날짜와 메일이 이상해진 날짜를 나란히 놓습니다.

  3. 같은 값을 쓰는 다른 화면·알림도 이상합니까?
    관리자 화면의 큐가 비어 있었고 알림 세 종류가 실패였습니다. 셋이 같이 이상하면 템플릿이 아니라 조회입니다.

  4. 배포 환경의 설정 목록이 코드의 설정 목록과 같습니까?
    주소 설정 두 개가 운영 환경에만 없어 링크가 절반만 나갔습니다. 없으면 빈칸으로 이어 붙이는 코드는 이것도 소리치지 않습니다.

자주 묻는 질문

Q. 새 기능을 붙였는데 기존 기능이 왜 깨집니까?

기존 조회가 「이름」이 아니라 「관계」로 적혀 있으면, 같은 두 표 사이에 관계가 하나 더 생기는 순간 어느 관계를 뜻하는지 모호해집니다. 이번 플랫폼은 캠페인과 브랜드 사이에 연결 표 하나가 늘자 데이터베이스가 기존 조회를 거부했습니다. 조회에 어느 연결을 탈지 이름을 적어 주면 돌아옵니다.

Q. 자동 메일에 「Unknown」이 찍혀 오면 무엇부터 봅니까?

템플릿이 아니라 그 값을 가져오는 조회입니다. 저희 규칙은 「메일 내용이 이상하다는 신고는 메일 템플릿보다 데이터 조회 실패를 먼저 의심」입니다. 같은 값을 쓰는 화면·알림이 같이 이상하면 조회 실패가 거의 확실합니다.

Q. 에러가 났으면 왜 아무도 몰랐습니까?

코드가 「데이터」 칸만 읽고 「에러」 칸을 버렸기 때문입니다. 클라이언트 라이브러리는 실패를 예외로 던지지 않고 에러 칸에 담아 돌려주므로, 그 칸을 읽지 않는 코드는 조용히 기본값으로 넘어갑니다. 메일은 정상 발송으로 집계됐습니다.

Q. 폴백을 아예 없애야 합니까?

없애는 게 아니라 방향을 바꿉니다. 값이 없을 때 「이상한 메일을 보낸다」 대신 「메일을 안 보내고 실패 알림을 사람에게 보낸다」로 둡니다. 실패가 실패로 보이면 첫 통에서 잡힙니다.

Q. 링크가 절반만 찍힌 건 같은 원인입니까?

다른 원인입니다. 사이트 주소 설정 두 개가 운영 환경에만 없어 상대경로로 나간 것이었고, 같은 날 재발송을 실측하다 발견됐습니다. 배포 환경의 설정 목록을 코드의 설정 목록과 대조하는 확인으로 잡힙니다.

📚Sources

  • ·PostgREST 공식 문서 · Resource Embedding · "Since the orders table has two foreign keys to the addresses table, a foreign key join is ambiguous and PostgREST will respond with an error" · "Try changing 'addresses' to one of the following: 'addresses!billing', 'addresses!shipping'" · "To successfully join orders with addresses, we can follow the error hint which tells us to add the foreign key name as !billing or !shipping" 인용 원문 · https://docs.postgrest.org/en/latest/references/api/resource_embedding.html (2026-09-11 확인)
  • ·PostgREST 공식 문서 · Errors · PGRST201 "An ambiguous embedding request was made." 인용 원문 · https://docs.postgrest.org/en/latest/references/errors.html (2026-09-11 확인)
  • ·Supabase 공식 문서 · JavaScript select() · "const { data, error } = await supabase" · 「Query the same referenced table multiple times」 예제의 외래키 힌트 표기 · https://supabase.com/docs/reference/javascript/select (2026-09-11 확인)
  • ·AWC 운영 지원 작업 기록 2026-09-10 (저희가 운영을 돕는 플랫폼 한 곳 · 운영팀 알림 메일 「Unknown Brand」 · 어드민 의뢰 큐 캠페인 조회 실패 · 초대·리마인더·접수 알림 8/11 이후 성공 0 · 8/14 연결 표 추가로 캠페인↔브랜드 경로 두 갈래 · 운영 환경 시크릿 주소 설정 2개 누락 · 9/10 19:04 힌트 수정·시크릿 추가·함수 3개 배포·재발송 sent · 고객사명·표 이름·오류 코드·이슈 번호 비식별 · 내부 자료)
이전 글

회사 코드 저장소에 비밀번호 파일 28개가 5년째 들어 있었습니다 — 「지우면 된다」가 틀린 이유

다음 글

사람 눈엔 멀쩡한 페이지가 구글에는 「에러 화면」이었습니다

함께 보면 좋은 글

2026. 09. 13

회사 컴퓨터가 느려진 원인은 새로 켠 게 아니라 안 끈 것이었습니다 — 자동화를 늘릴수록 대표가 먼저 정할 「끄는 규칙」

2026. 09. 13

회사 코드 저장소에 비밀번호 파일 28개가 5년째 들어 있었습니다 — 「지우면 된다」가 틀린 이유

2026. 09. 11

사람 눈엔 멀쩡한 페이지가 구글에는 「에러 화면」이었습니다

읽은 다음

아이디어를 실행 구조로 바꿔보세요

업무별 Trigger, Agent, Human Checkpoint가 정리된 Workflow를 확인할 수 있습니다.

Workflows 보기↗실전 도입 사례 보기 →
← 인사이트