자동화 알림을 처음 만들 때 대개 메일로 시작합니다. 저희도 그랬습니다. 시트 알림, 폼 접수 알림, 아침 보고, n8n 실패 알림까지 전부 메일이었습니다. 메일은 따로 가입할 것이 없고, 누구나 받을 수 있고, 기록이 남습니다.
그러면서 메일이라서 생기는 한계에도 부딪혔습니다. 한 번에 다 겪은 것은 아니고, 서로 다른 자동화를 만들 때 하나씩 봤습니다. 시트 알림과 폼 알림을 만들 때 하루 한도를 확인했고, 폼 알림을 시험할 때 「보냈다」는 기록이 있는데 한참 뒤에야 도착한 한 통이 있었고, n8n 실패 알림을 만들 때 알림을 보내는 쪽이 멈추면 그걸 알려 줄 곳이 없다는 것을 봤습니다. 이 글은 그 한계들을 본 만큼만 적은 것입니다.
1. 하루 한도 — 메일 수가 아니라 받는 사람 수입니다
구글 시트의 Apps Script로 메일을 보내면 하루 한도가 있습니다. 시트 알림을 만들 때 남은 한도를 찍어 보니 1,380이었고, 폼 접수 알림을 만들 때는 로그에 1,440~1,455가 찍혔습니다. 둘 다 회사 구글 워크스페이스 계정입니다.
공식 할당량 표에는 이렇게 적혀 있습니다.
| 항목 | 개인 계정 (gmail.com 등) | 구글 워크스페이스 계정 |
|---|---|---|
| Email recipients per day (for example, with MailApp) | 100 / day | 1,500 / day |
저희가 찍은 값은 워크스페이스 계정의 1,500에서 그날 보낸 만큼 줄어든 숫자로 보입니다.
여기서 놓치기 쉬운 것이 항목 이름입니다. 「보낸 메일 수」가 아니라 「받는 사람 수(recipients)」입니다. 남은 한도를 알려 주는 함수의 설명도 같습니다.
저희 알림은 전부 한 주소로 보냈기 때문에, 문서 설명대로라면 메일 한 통에 한도가 1씩 줄어든 셈입니다. 알림을 다섯 명에게 보내면 한 통에 5가 줄어듭니다. 하루 문의 수십 건이면 워크스페이스 계정에서는 여유가 있지만, 받는 사람을 늘리면 그만큼 빨리 줄어듭니다. 개인 계정은 표대로라면 100이라, 여러 명이 받는 알림이면 금방 닿을 수 있습니다. 개인 계정으로는 저희가 재 보지 않았습니다.
한도는 「첫 요청으로부터 24시간 뒤」에 다시 채워진다고 같은 문서에 적혀 있습니다(「Quotas are per user and reset 24 hours after the first request.」). 자정에 채워지는 것이 아닙니다.
2. 「보냈다」는데 한참 뒤에 온 한 통
폼 접수 알림을 시험하면서 다섯 번 제출했습니다. 네 통은 제출하고 금방 왔습니다. 한 통이 달랐습니다.
그 건의 실행 기록은 「완료됨」, 실행 시간 1.75초였습니다. 그런데 메일함에 없었습니다. 받은편지함, 스팸함, 전체보관함을 다 봤고, 3분 뒤에도 8분 뒤에도 13분 뒤에도 없었습니다. 그 사이에 다시 제출한 건은 45초 안에 왔습니다. 그리고 21분 뒤에 다시 열었더니 있었습니다.
메일 목록에는 보낸 시각으로 찍혀 있어서, 목록만 보면 늦게 온 티가 나지 않았습니다. 원인은 모릅니다. 코드도 트리거도 받는 주소도 앞뒤 건과 같았습니다. 다섯 건 중 한 건이었고, 그 한 번뿐입니다.
이 한 번에서 얻은 결론이 있습니다. 이 흐름에서 원본은 시트이고 메일은 알림입니다. 메일이 안 왔다고 문의가 안 들어온 것이 아니라서, 하루에 한 번은 시트를 직접 보는 편이 낫습니다. 메일만 보고 「오늘 문의 없음」이라고 판단하지 않는 것입니다.
3. 알림을 보내는 쪽이 멈췄을 때 — 알림의 알림
알림이 멈춘 것을 누가 알려 주느냐는 도구마다 달랐습니다.
Apps Script는 트리거가 실패하면 구글이 대신 메일을 보내 줍니다. 트리거를 걸 때 「트리거 실패 알림 설정」이 있고, 기본값은 「매일 알림」이었습니다. 이대로 두면 멈춘 날의 다음 날에야 요약 메일이 옵니다. 「즉시 알림」으로 바꿔 두었더니 실패한 그 분에 메일이 왔습니다. 보낸 주소는 noreply-apps-scripts-notifications@google.com이었고, 제목은 영어였습니다. 영어 제목의 자동 메일이라 받는 사람이 스팸이나 광고로 여기고 지나치지 않게, 이런 메일이 올 수 있다고 미리 알려 두는 편이 낫습니다.
n8n은 사정이 달랐습니다. n8n에서 메일을 보내려면 보내는 메일 서버를 따로 연결해야 합니다. 저희 시험은 PC 안의 시험용 메일 서버로 했고, 실제 회사 메일 계정은 연결해 보지 않았습니다. 그리고 그 메일 서버를 끄자, 실패 알림을 보내는 워크플로 자신이 이렇게 실패했습니다.
The service refused the connection - perhaps it is offline
connect ECONNREFUSED 127.0.0.1:1025
이 실패는 실행 목록에 남을 뿐, 어디에도 알려지지 않았습니다. 알림을 보내는 장치가 메일에 기대고 있으면, 메일이 막혔을 때는 알림도 같이 막힙니다. 생각할 수 있는 방법은 메일 말고 경로를 하나 더 열어 두는 것, 사람이 정기적으로 실행 기록을 보는 것 두 가지인데, 둘 다 만들어 보지는 않았습니다.

4. 보내는 사람이 누구인가
Apps Script로 보내는 메일은 권한을 승인한 사람의 이름으로 나갑니다. 트리거를 걸 때 권한 창에 「내 이름으로 이메일 보내기」가 있었던 것이 그 뜻입니다. 저희 알림은 만든 사람이 자기 주소로 받는 것이어서 차이가 드러나지 않았지만, 다른 직원에게 보내는 알림이라면 권한 문구대로 만든 사람 개인 이름으로 나가게 됩니다.
사내 알림이면 큰 문제가 아닙니다. 다만 그 사람이 휴가 중이거나 회사를 떠나면, 알림이 그 사람 이름으로 계속 나가거나 멈춥니다. 트리거가 만든 사람 계정으로 돌기 때문입니다. 오래 쓸 알림이라면 공용 계정으로 만드는 편이 낫습니다.
메일이 아닌 채널로 가야 할 때
시트 알림을 만들 때, 이 방법이 맞지 않는 경우를 이렇게 적었습니다. 하루 수백 건이 들어오는 시트, 받는 사람이 여럿인 알림, 카카오톡으로 받아야 하는 알림. 여러 곳으로 나눠 보내는 흐름은 n8n 쪽이 맞다고 봤습니다.
카카오톡으로 받는 알림톡은 메일과 전혀 다른 구조였습니다. 채널사를 거쳐야 하고, 문구를 템플릿으로 등록해 심사를 받아야 하고, 승인된 뒤에도 뒤집힐 수 있었습니다(알림톡 도입 글). 건당 비용이 있고, 대체발송 문자는 길이에 따라 단가가 달라집니다(알림톡과 문자 단가 글).
사이트 문의 폼에서 메일이 아예 안 나가는 경우는 원인이 서버 쪽이었습니다(문의 폼 메일 글).
메일 알림을 쓸 때 점검표
- 하루 한도는 받는 사람 수로 셉니다. 받는 사람이 늘면 그만큼 빨리 줄어듭니다
- 남은 한도를 로그에 찍어 두면(getRemainingDailyQuota) 닿기 전에 압니다
- 메일은 알림이고, 원본은 시트나 실행 기록입니다. 하루 한 번은 원본을 봅니다
- 트리거 실패 알림을 「즉시」로 바꾸고, 영어 제목의 자동 메일이 온다고 받는 사람에게 알려 둡니다
- 알림을 보내는 장치가 메일에 기대면, 메일이 막힐 때 알림도 막힙니다. 두 번째 경로를 생각해 둡니다
- 오래 쓸 알림은 공용 계정으로 만듭니다
이 글이 다루지 않은 것
개인 Gmail 계정의 한도는 공식 표의 숫자만 옮겼고, 직접 재지 않았습니다.
한참 늦게 온 한 통의 원인은 모릅니다. 다섯 건 중 한 번 있었던 일입니다.
n8n에 실제 회사 메일 계정을 연결해 보내는 것은 시험하지 않았습니다.
금액은 넣지 않았습니다. 알림톡·문자 비용은 따로 정리한 글이 있습니다.
요약
| 한계 | 본 것 | 대처 |
|---|---|---|
| 하루 한도 | 남은 값 1,380 · 1,440~1,455 (워크스페이스), 공식 표 1,500 / 개인 100 | 받는 사람 수로 셈, 로그에 남은 값 찍기 |
| 늦게 온 한 통 | 「완료됨」인데 13분 뒤에도 없고 21분 뒤에 있음, 목록은 보낸 시각 | 원본(시트)을 하루 한 번 |
| 실패 알림 | Apps Script 기본 「매일」, 즉시로 바꾸면 그 분에 영어 제목 메일 | 「즉시」, 받는 사람에게 미리 안내 |
| 알림의 알림 | n8n 메일 서버가 꺼지면 알림 워크플로의 실패는 안 알려짐 | 두 번째 경로, 실행 기록 확인 |
| 보내는 사람 | 만든 사람 이름으로 나감 | 공용 계정 |
메일은 시작하기 가장 쉬운 알림이었습니다. 다만 「메일이 왔다」와 「일이 일어났다」가 늘 같지는 않았고, 저희가 본 한계는 대부분 그 사이에 있었습니다.
참고 (2026-09-23 확인)
– Google Apps Script 공식 문서 — Quotas for Google Services (developers.google.com/apps-script/guides/services/quotas): 「Email recipients per day (for example, with MailApp) 100 / day (consumer) · 1,500 / day (Google Workspace)」 · 「Quotas are per user and reset 24 hours after the first request.」
– Google Apps Script 공식 문서 — Class MailApp, getRemainingDailyQuota() (developers.google.com/apps-script/reference/mail/mail-app): 「Returns the number of recipients you can send emails to for the rest of the day. … Quotas are based on the number of email recipients.」