Slack은 단순한 메신저가 아닙니다. 업무 자동화의 중심 허브로 활용할 수 있습니다. 특히 Slack 봇을 만들면 알림, 명령어 처리, 워크플로우 자동화 등 다양한 기능을 구현할 수 있습니다. 코딩 없이 Make를 활용해서 강력한 Slack 봇을 만드는 방법을 소개합니다.
Slack 봇의 종류
Incoming Webhook
가장 간단한 형태입니다. 특정 URL로 메시지를 보내면 Slack 채널에 표시됩니다. 일방향 알림에 적합합니다. 서버 상태 알림, 주문 알림 등에 사용됩니다.
Slack App (Bot User)
더 강력한 형태입니다. 메시지를 보내는 것뿐만 아니라 받을 수도 있습니다. 슬래시 명령어, 버튼 클릭, 멘션에 반응할 수 있습니다. 양방향 상호작용이 필요할 때 사용합니다.
Workflow Builder
Slack 자체 제공 기능입니다. 간단한 워크플로우를 코딩 없이 만들 수 있습니다. 다만 외부 서비스 연동에 제한이 있어서 Make와 결합하면 더 강력해집니다.
Incoming Webhook 설정
Webhook URL 발급
1. api.slack.com/apps에서 앱 생성
2. Incoming Webhooks 활성화
3. Add New Webhook to Workspace
4. 채널 선택 후 허용
5. Webhook URL 복사
– 섹션 블록: 텍스트와 부가 정보
– 이미지 블록: 이미지 첨부
– 버튼 블록: 클릭 가능한 버튼
– 컨텍스트 블록: 작은 부가 정보
Block Kit Builder(app.slack.com/block-kit-builder)에서 시각적으로 디자인하고 JSON을 복사할 수 있습니다.
Slack App 만들기
앱 생성 및 권한 설정
1. api.slack.com/apps에서 Create New App
2. From scratch 선택, 이름과 워크스페이스 입력
3. OAuth & Permissions에서 Scopes 추가:
– chat:write (메시지 발송)
– channels:read (채널 정보 읽기)
– users:read (사용자 정보 읽기)
4. Install to Workspace
5. Bot User OAuth Token 복사
Make에서 Slack 모듈 사용
Make의 Slack 모듈은 Bot Token을 사용해서 연결합니다. 주요 모듈:
Watch Messages: 특정 채널의 메시지를 감시. 키워드 트리거에 활용.
Create a Message: 채널이나 DM으로 메시지 발송.
Create a Reaction: 메시지에 이모지 반응 추가.
Get User: 사용자 정보 조회.
실전 봇 시나리오
시나리오 1: 일일 스탠드업 봇
매일 아침 팀원들에게 스탠드업 질문을 보내고 응답을 수집합니다.
시나리오 구조:
Schedule(매일 오전 9시) → Slack Create Message(질문 발송)
메시지 내용:
“좋은 아침입니다! 오늘의 스탠드업을 시작합니다.
1. 어제 완료한 일
2. 오늘 할 일
3. 막히는 점
스레드에 답변해주세요!”
응답 수집은 별도 시나리오로:
Slack Watch Messages(해당 스레드) → Google Sheets Add Row
Notion은 단순한 노트 앱이 아닙니다. 데이터베이스, 프로젝트 관리, 문서 협업을 하나의 플랫폼에서 처리할 수 있는 올인원 워크스페이스입니다. 여기에 자동화를 더하면 진정한 생산성 허브가 됩니다. Make와 Notion API를 활용해서 반복 작업을 자동화하는 방법을 알아봅니다.
Notion 자동화의 기본 이해
Notion API 소개
Notion은 2021년부터 공식 API를 제공합니다. API를 통해 페이지 생성, 데이터베이스 조작, 콘텐츠 수정 등을 자동화할 수 있습니다. Make에는 Notion 공식 모듈이 있어서 복잡한 코딩 없이 연동이 가능합니다.
Integration 설정
Notion API를 사용하려면 Integration을 생성해야 합니다:
1. notion.so/my-integrations 접속
2. “New Integration” 클릭
3. 이름 입력, 워크스페이스 선택
4. 권한 설정 (Read/Update/Insert 등)
5. Integration Token 복사
중요: Integration을 Notion 페이지에 연결해야 합니다. 해당 페이지에서 “…” 메뉴 → “Connections” → Integration 선택. 하위 페이지는 자동으로 접근 권한이 상속됩니다.
Notion에서 캘린더를 관리하면서 Google Calendar와 동기화 상태를 유지합니다. 어느 쪽에서 일정을 확인해도 동일한 정보를 볼 수 있습니다.
시나리오 6: 콘텐츠 파이프라인 자동화
콘텐츠 제작 과정을 자동화합니다. 아이디어 등록부터 발행까지 각 단계를 추적합니다.
데이터베이스 구조:
– 제목 (Title): 콘텐츠 제목
– 상태 (Select): 아이디어/작성중/검토중/발행완료
– 담당자 (Person): 작성자
– 마감일 (Date): 발행 예정일
– 플랫폼 (Multi-select): 블로그/유튜브/SNS
자동화:
– 상태가 “작성중”이 되면 담당자에게 Slack 알림
– 마감일 3일 전 리마인더 발송
– “발행완료”가 되면 발행 로그 업데이트
시나리오 7: 독서 기록 자동화
읽은 책 정보를 자동으로 Notion에 기록합니다.
시나리오 구조:
Webhook(책 ISBN 입력) → HTTP(도서 API 조회) → Notion Create Database Item
ISBN만 입력하면 제목, 저자, 표지 이미지, 출판사 등 상세 정보를 자동으로 가져와 저장합니다. 알라딘이나 국립중앙도서관 API를 활용합니다.
고급 자동화 기법
Notion 수식과 자동화 결합
Notion의 수식(Formula) 기능과 자동화를 결합하면 더 강력해집니다.
예: 프로젝트 진행률 자동 계산
– 데이터베이스에 완료/전체 태스크 수를 수식으로 계산
– 진행률이 100%가 되면 자동화 트리거
– 프로젝트 완료 알림 발송, 리포트 생성
Rollup을 활용한 집계
관계형 데이터베이스와 Rollup을 활용해서 집계 데이터를 계산하고, 이를 자동화에 활용합니다.
예: 고객별 총 주문 금액
– 고객 데이터베이스와 주문 데이터베이스 연결
– Rollup으로 고객별 총 주문 금액 계산
– 특정 금액 이상이면 VIP 등급 자동 부여
템플릿 버튼과 자동화
Notion의 템플릿 버튼으로 페이지를 생성하면 자동화가 트리거되도록 설정합니다.
예: 미팅 노트 자동 설정
– 미팅 노트 템플릿 버튼 클릭
– 새 페이지 생성 감지 (Watch Database Items)
– Google Calendar에서 관련 미팅 정보 가져오기
– 참석자에게 미팅 링크 자동 발송
Notion API 한계와 대응
속성 타입 제한
API로 모든 속성 타입을 완벽하게 다룰 수 있는 것은 아닙니다. 특히 Rollup, Formula는 읽기만 가능하고 직접 수정은 불가합니다.
대응: 수식 결과가 필요하면 먼저 관련 데이터를 업데이트하고, Notion이 자동 계산하게 합니다.
Rate Limit
Notion API는 초당 3요청으로 제한됩니다. 대량 데이터를 처리할 때 주의가 필요합니다.
대응: Make의 Sleep 모듈로 요청 간격을 조절합니다. 대량 작업은 배치로 나눠서 처리합니다.
블록 내용 수정
페이지 내부의 블록(텍스트, 이미지 등)을 수정하는 것은 복잡합니다. 블록 ID를 알아야 하고, 블록 타입별로 다른 형식을 사용해야 합니다.
대응: 가능하면 데이터베이스 속성을 활용합니다. 블록 수정이 꼭 필요하면 Append (추가)를 사용하고, 전체 교체는 피합니다.
실무 팁
데이터베이스 설계 원칙
자동화를 고려해서 데이터베이스를 설계합니다:
– 트리거 용도의 상태 속성 추가 (Select 타입)
– 외부 시스템과 연결할 ID 속성 추가
– 생성/수정 시간 자동 추적 (Created time, Last edited time)
– 속성 이름은 영어로 (API에서 한글 이름이 문제될 수 있음)
테스트 환경 구축
실제 데이터에 영향을 주지 않도록 테스트용 데이터베이스를 만듭니다. 자동화가 안정화되면 실제 데이터베이스로 전환합니다.
에러 처리
Notion API 호출이 실패할 수 있습니다. Make의 Error Handler를 설정해서 실패 시 알림을 받고, 나중에 재시도하도록 합니다.
시작 추천
Notion 자동화를 시작한다면 다음 순서를 추천합니다:
1. 간단한 읽기 자동화부터: Notion 데이터를 Slack이나 Email로 보내기
2. 쓰기 자동화: 외부 서비스 데이터를 Notion에 기록하기
3. 양방향 동기화: Notion과 다른 서비스 간 데이터 동기화
4. 복잡한 워크플로우: 여러 단계의 비즈니스 프로세스 자동화
Notion은 이미 많은 팀의 중심 도구입니다. 여기에 자동화를 더하면 데이터가 자동으로 흐르고, 사람은 더 중요한 일에 집중할 수 있습니다. 오늘 하나의 자동화부터 시작해보세요.
챗GPT가 등장한 이후 업무 방식이 완전히 바뀌었습니다. 단순히 질문에 답변을 받는 것을 넘어서, 반복적인 업무를 자동화하는 강력한 도구로 활용할 수 있습니다. 특히 Make와 같은 자동화 플랫폼과 결합하면 그 가능성은 무한해집니다. 이 글에서는 챗GPT를 활용해 업무를 자동화하는 구체적인 방법을 소개합니다.
챗GPT API의 이해
챗GPT를 자동화에 활용하려면 API를 사용해야 합니다. 웹에서 대화하는 것과 달리, API를 통하면 프로그램이 자동으로 챗GPT와 대화할 수 있습니다.
API 키 발급
OpenAI 계정에서 API 키를 발급받습니다:
1. platform.openai.com 접속
2. 로그인 후 API Keys 메뉴
3. Create new secret key 클릭
4. 생성된 키 안전하게 저장
API 사용에는 비용이 발생합니다. GPT-4는 입력 1,000토큰당 약 $0.03, 출력 1,000토큰당 약 $0.06입니다. GPT-3.5-turbo는 10배 이상 저렴합니다. 업무 자동화에는 대부분 GPT-3.5-turbo로 충분합니다.
모델 선택 기준
GPT-4: 복잡한 분석, 긴 문서 처리, 높은 정확도가 필요할 때. 비용이 높지만 품질이 뛰어남.
GPT-3.5-turbo: 일반적인 텍스트 생성, 간단한 분류, 대량 처리. 비용 효율적이고 속도 빠름.
GPT-4-turbo: GPT-4 수준의 품질과 더 빠른 속도, 더 낮은 비용. 현재 가장 균형 잡힌 선택.
Make에서 ChatGPT 연동하기
Make에는 OpenAI 공식 모듈이 있어서 쉽게 연동할 수 있습니다.
연결 설정
1. Make에서 OpenAI 모듈 추가
2. Connection에서 Add 클릭
3. API Key 입력
4. 연결 완료
주요 모듈
Create a Completion: 프롬프트에 대한 응답 생성. 가장 많이 사용하는 모듈.
Create a Chat Completion: 대화 형식의 응답 생성. 이전 대화 맥락 유지 가능.
스마트폰 앱을 만들고 싶은데 코딩을 모른다고요? 더 이상 걱정할 필요 없습니다. 2026년 현재, 노코드 도구를 활용하면 프로그래밍 지식 없이도 완성도 높은 앱을 만들 수 있습니다. 실제로 전 세계 신규 앱의 30% 이상이 노코드 플랫폼으로 제작되고 있습니다. 이 글에서는 노코드로 앱을 만드는 전체 과정을 단계별로 상세히 안내합니다.
노코드 앱 개발이란
노코드(No-Code) 앱 개발은 프로그래밍 언어를 작성하지 않고 시각적 인터페이스를 통해 앱을 만드는 방식입니다. 드래그 앤 드롭으로 화면을 구성하고, 클릭만으로 기능을 추가합니다. 마치 파워포인트로 프레젠테이션을 만들듯이 앱을 만들 수 있습니다.
노코드와 로우코드(Low-Code)는 종종 혼용되지만 차이가 있습니다. 노코드는 코드를 전혀 작성하지 않고, 로우코드는 필요시 약간의 코드를 추가할 수 있습니다. 완전 비개발자는 노코드를, 약간의 기술 지식이 있다면 로우코드를 선택하면 됩니다.
노코드 앱 개발의 장점
빠른 개발 속도: 전통적인 앱 개발은 몇 달이 걸리지만, 노코드로는 며칠 또는 몇 주 만에 앱을 완성할 수 있습니다. 아이디어를 빠르게 검증하고 시장에 출시할 수 있습니다.
낮은 비용: 개발자를 고용하면 수천만 원의 비용이 들지만, 노코드 플랫폼은 월 몇만 원의 구독료로 시작할 수 있습니다. 초기 자금이 부족한 스타트업이나 개인에게 최적입니다.
쉬운 수정: 코드 기반 앱은 수정하려면 개발자가 필요하지만, 노코드 앱은 직접 수정할 수 있습니다. 사용자 피드백을 받아 즉시 반영할 수 있습니다.
유지보수 간편: 플랫폼이 서버 관리, 보안 업데이트, 성능 최적화를 담당합니다. 기술적인 운영 부담 없이 비즈니스에 집중할 수 있습니다.
대표 노코드 앱 빌더 비교
Bubble
Bubble은 가장 강력한 노코드 웹앱 빌더입니다. 복잡한 로직, 데이터베이스, 사용자 인증, 결제 시스템까지 구현할 수 있습니다. 에어비앤비, 우버 같은 복잡한 서비스도 Bubble로 클론할 수 있을 정도입니다.
장점: 높은 자유도, 강력한 기능, 활발한 커뮤니티
단점: 학습 곡선이 가파름, 복잡한 앱은 성능 이슈 가능
가격: 무료 시작, 유료 플랜 월 $32부터
적합한 경우: 복잡한 웹앱, SaaS 서비스, 마켓플레이스
Glide
Glide는 Google Sheets나 Airtable을 데이터 소스로 사용해서 모바일 앱을 만듭니다. 스프레드시트에 데이터를 입력하면 그것이 곧 앱의 데이터베이스가 됩니다. 가장 직관적이고 빠르게 앱을 만들 수 있습니다.
장점: 매우 쉬움, 스프레드시트 기반, 빠른 프로토타이핑
단점: 복잡한 로직 제한, 디자인 자유도 낮음
가격: 무료 시작, 유료 플랜 월 $25부터
적합한 경우: 내부용 앱, 간단한 데이터 앱, 디렉토리 앱
Adalo
Adalo는 네이티브 모바일 앱을 만들 수 있는 플랫폼입니다. iOS와 Android 앱스토어에 실제로 출시할 수 있는 앱을 만듭니다. UI 컴포넌트가 풍부하고 디자인 자유도가 높습니다.
장점: 네이티브 앱 출시 가능, 아름다운 UI, 직관적인 인터페이스
단점: 복잡한 로직 제한, 무료 플랜 제한적
가격: 무료 시작, 유료 플랜 월 $45부터
적합한 경우: 모바일 중심 앱, 소비자용 앱, 커뮤니티 앱
FlutterFlow
FlutterFlow는 Google의 Flutter 프레임워크를 기반으로 합니다. 노코드로 앱을 만들면서도 필요시 Flutter 코드를 추출해서 개발자가 추가 개발할 수 있습니다. 노코드와 전통 개발의 장점을 결합했습니다.
장점: 코드 추출 가능, 고성능, 크로스플랫폼
단점: 약간의 기술 지식 필요, 비용이 높음
가격: 무료 시작, 유료 플랜 월 $30부터
적합한 경우: 확장 가능성이 필요한 앱, 성능이 중요한 앱
Softr
Softr는 Airtable을 백엔드로 사용하는 웹앱 빌더입니다. 회원제 사이트, 포털, 마켓플레이스를 빠르게 만들 수 있습니다. Airtable의 강력한 데이터 관리 기능과 결합됩니다.
장점: Airtable 완벽 연동, 빠른 구축, 깔끔한 템플릿
단점: Airtable 의존성, 복잡한 로직 제한
가격: 무료 시작, 유료 플랜 월 $49부터
적합한 경우: 회원제 사이트, 고객 포털, 내부 도구
노코드 앱 개발 5단계 프로세스
1단계: 앱 기획
코딩 여부와 관계없이 좋은 앱은 좋은 기획에서 시작합니다. 먼저 앱이 해결하려는 문제를 명확히 정의합니다.
핵심 질문:
– 이 앱은 누구를 위한 것인가? (타겟 사용자)
– 어떤 문제를 해결하는가? (핵심 가치)
– 사용자가 앱에서 할 수 있는 핵심 행동은 무엇인가? (핵심 기능)
– 비슷한 앱이 있는가? 차별점은? (경쟁 분석)
기능을 나열할 때는 MVP(최소 기능 제품) 관점에서 생각합니다. 처음부터 모든 기능을 넣으려 하지 말고, 핵심 가치를 전달하는 최소한의 기능만 선정합니다. 나머지는 출시 후 사용자 피드백을 받아 추가합니다.
사용자 흐름(User Flow)을 그려봅니다. 사용자가 앱에 들어와서 목표를 달성하기까지의 단계를 시각화합니다. 복잡한 도구 없이 종이에 그려도 됩니다.
2단계: 플랫폼 선택
기획이 완료되면 적합한 플랫폼을 선택합니다. 앞서 소개한 플랫폼들의 특성을 고려해서 선택합니다.
선택 기준:
– 웹앱 vs 모바일앱: 모바일 중심이면 Adalo/FlutterFlow, 웹 중심이면 Bubble/Softr
– 복잡도: 복잡한 로직이 필요하면 Bubble, 단순하면 Glide/Softr
– 데이터: Airtable을 이미 사용한다면 Softr/Glide, 새로 시작하면 Bubble
– 예산: 무료로 시작하려면 Glide, 투자할 여유가 있으면 Bubble
처음이라면 Glide로 시작하는 것을 추천합니다. 가장 쉽고 빠르게 결과를 볼 수 있어서 성취감을 느끼기 좋습니다. 노코드 개념을 익힌 후 더 복잡한 플랫폼으로 이동해도 됩니다.
3단계: 데이터 구조 설계
앱의 뼈대는 데이터 구조입니다. 어떤 정보를 저장하고, 정보 간의 관계는 어떻게 되는지 설계합니다.
예를 들어 음식 배달 앱이라면:
– 사용자 테이블: 이름, 이메일, 전화번호, 주소
– 음식점 테이블: 이름, 주소, 카테고리, 영업시간
– 메뉴 테이블: 이름, 가격, 설명, 이미지, 소속 음식점
– 주문 테이블: 주문자, 음식점, 메뉴 목록, 금액, 상태
테이블 간의 관계도 정의합니다. 한 음식점에 여러 메뉴가 있으므로 음식점과 메뉴는 1:N 관계입니다. 한 주문에 여러 메뉴가 포함될 수 있으므로 주문과 메뉴는 N:M 관계입니다.
대부분의 노코드 플랫폼은 이런 관계형 데이터를 지원합니다. Bubble은 자체 데이터베이스를, Glide와 Softr는 Airtable이나 Google Sheets를 사용합니다.
4단계: UI 디자인과 개발
데이터 구조가 준비되면 화면을 만듭니다. 대부분의 플랫폼은 템플릿을 제공하므로 처음부터 만들 필요 없습니다.
기본 화면 구성:
– 홈 화면: 앱의 메인 화면, 핵심 기능 접근
– 리스트 화면: 데이터 목록 표시 (상품 목록, 게시글 목록 등)
– 상세 화면: 개별 항목의 상세 정보
– 입력 화면: 데이터 입력/수정 폼
– 프로필 화면: 사용자 정보 및 설정
디자인 팁:
– 일관성 유지: 색상, 폰트, 버튼 스타일을 통일
– 여백 활용: 요소 사이에 충분한 공간
– 계층 구조: 중요한 정보를 더 크게, 눈에 띄게
– 터치 영역: 모바일에서 버튼은 충분히 크게 (최소 44px)
기능 구현은 노코드 플랫폼의 워크플로우나 액션 기능을 사용합니다. “버튼 클릭 시 → 데이터 저장 → 다음 화면으로 이동” 같은 흐름을 시각적으로 설정합니다.
5단계: 테스트와 출시
앱이 완성되면 철저히 테스트합니다.
테스트 항목:
– 모든 버튼과 링크가 작동하는가
– 데이터 입력과 저장이 정상적인가
– 다양한 화면 크기에서 레이아웃이 깨지지 않는가
– 에러 상황에서 적절한 메시지가 표시되는가
– 로딩 속도가 적절한가
가능하다면 실제 사용자에게 베타 테스트를 요청합니다. 직접 만든 사람은 발견하지 못하는 문제를 찾아줍니다.
출시 방법은 플랫폼에 따라 다릅니다:
– 웹앱: 플랫폼에서 제공하는 URL로 바로 접근 가능, 커스텀 도메인 연결 가능
– 모바일앱: Adalo, FlutterFlow는 앱스토어 출시 지원, 심사 과정 필요
노코드 앱 성공 사례
Teal – 구직 관리 앱
Teal은 구직 활동을 관리하는 앱으로, Bubble로 만들어졌습니다. 지원한 회사 추적, 이력서 관리, 면접 일정 관리 등의 기능을 제공합니다. 노코드로 시작해서 수백만 사용자를 확보했고, 이후 개발팀을 구성해서 확장했습니다.
Comet – 프리랜서 매칭 플랫폼
프랑스의 Comet은 Bubble로 MVP를 만들어 시장을 검증한 후 투자를 받았습니다. 초기 버전을 빠르게 출시해서 사용자 반응을 확인하고, 이를 바탕으로 투자자를 설득했습니다.
국내 사례들
국내에서도 노코드 앱이 늘어나고 있습니다. 소규모 커뮤니티 앱, 예약 시스템, 내부 업무 도구 등이 노코드로 만들어지고 있습니다. 특히 스타트업의 MVP 제작, 기업 내부 도구 개발에 활발히 사용됩니다.
노코드 앱의 한계와 대응
성능 한계
노코드 앱은 최적화된 네이티브 앱보다 성능이 떨어질 수 있습니다. 특히 복잡한 연산이나 대용량 데이터 처리에서 차이가 납니다.
대응: MVP 단계에서는 노코드로 충분합니다. 사용자가 늘어나고 성능이 중요해지면 그때 전통 개발로 전환을 고려합니다.
기능 제한
플랫폼이 제공하지 않는 기능은 구현하기 어렵습니다. 예를 들어 특수한 하드웨어 연동, 복잡한 알고리즘 등은 제한됩니다.
대응: 기획 단계에서 플랫폼의 한계를 파악하고, 구현 가능한 범위 내에서 설계합니다. 정말 필요한 기능이라면 API 연동이나 커스텀 플러그인을 검토합니다.
플랫폼 의존성
노코드 플랫폼에 종속됩니다. 플랫폼이 서비스를 중단하거나 가격을 올리면 영향을 받습니다.
대응: FlutterFlow처럼 코드 추출이 가능한 플랫폼을 선택하거나, 데이터를 정기적으로 백업합니다. 중요한 비즈니스라면 탈출 전략을 미리 계획합니다.
노코드 앱 개발 시작하기
지금 바로 시작할 수 있습니다. 추천하는 첫 프로젝트는 자신이 겪는 작은 불편함을 해결하는 앱입니다.
예시 프로젝트:
– 개인 습관 트래커: 매일 운동, 독서 등을 기록하고 통계 확인
– 간단한 가계부: 수입/지출 기록과 월별 리포트
– 북 리뷰 앱: 읽은 책 기록과 평점, 메모
– 레시피 저장 앱: 좋아하는 레시피 저장과 검색
복잡한 앱을 만들려고 하지 마세요. 작은 앱을 완성하는 경험이 중요합니다. 완성의 기쁨을 느끼고, 실제로 사용하면서 개선점을 찾고, 점점 더 복잡한 앱에 도전하세요.
노코드는 아이디어를 현실로 만드는 가장 빠른 방법입니다. 더 이상 “개발자가 없어서”, “예산이 없어서”라는 핑계는 통하지 않습니다. 오늘 첫 앱 만들기를 시작해보세요.
Google Sheets는 단순한 스프레드시트가 아닙니다. 데이터베이스, 대시보드, 자동화 허브로 활용할 수 있는 강력한 도구입니다. 특히 Make와 결합하면 그 가능성이 무한히 확장됩니다. 이 글에서는 Make와 Google Sheets를 연동해서 업무를 자동화하는 방법을 완벽하게 정리합니다.
왜 Google Sheets인가
자동화의 데이터 저장소로 Google Sheets를 선택하는 이유가 있습니다.
접근성: 웹 브라우저만 있으면 어디서든 접근할 수 있습니다. 팀원들과 실시간 공유가 가능하고, 권한 관리도 세밀하게 할 수 있습니다.
비용: 무료입니다. Google 계정만 있으면 충분한 용량을 무료로 사용할 수 있습니다.
유연성: 데이터 구조를 자유롭게 변경할 수 있습니다. 컬럼을 추가하거나 삭제하는 것이 데이터베이스보다 훨씬 간단합니다.
시각화: 기본 제공되는 차트와 피벗 테이블로 데이터를 쉽게 시각화할 수 있습니다.
수식: 강력한 수식 기능으로 데이터 가공이 가능합니다. VLOOKUP, QUERY, IMPORTRANGE 등의 함수로 복잡한 처리도 할 수 있습니다.
물론 한계도 있습니다. 대용량 데이터(수십만 행 이상)에서는 성능이 떨어지고, 동시 편집이 많으면 충돌이 발생할 수 있습니다. 이런 경우에는 전용 데이터베이스를 고려해야 합니다.
Make의 Google Sheets 모듈 완벽 가이드
연결 설정
Make에서 Google Sheets를 사용하려면 먼저 연결(Connection)을 설정해야 합니다.
1. Make에서 Google Sheets 모듈 추가
2. Connection에서 “Add” 클릭
3. Google 계정 로그인
4. Make에 권한 부여 (스프레드시트 읽기/쓰기 권한)
5. 연결 완료
여러 Google 계정의 시트를 사용한다면 각 계정별로 연결을 만듭니다. 연결 이름을 명확하게 지어서 구분합니다 (예: “회사 계정”, “개인 계정”).
Watch 모듈: 변경 감지 트리거
Watch Rows: 시트에 새 행이 추가되면 트리거됩니다. 가장 많이 사용되는 트리거입니다.
설정 옵션:
– Spreadsheet: 감시할 스프레드시트 선택
– Sheet: 감시할 시트(탭) 선택
– Table contains headers: 첫 행이 헤더인지 여부 (Yes 권장)
– Row with headers: 헤더가 있는 행 번호 (보통 1)
– Values render option: 값 표시 방식 (FORMATTED_VALUE 권장)
주의사항: Watch Rows는 새로 추가된 행만 감지합니다. 기존 행의 수정은 감지하지 않습니다. 수정을 감지하려면 Watch Changes 모듈이나 다른 방법을 사용해야 합니다.
Watch Changes: 시트의 모든 변경(추가, 수정, 삭제)을 감지합니다. 실시간에 가깝게 변경을 감지해야 할 때 사용합니다. 단, Google API 제한으로 인해 모든 변경을 완벽하게 잡지 못할 수 있습니다.
Search 모듈: 데이터 조회
Search Rows: 조건에 맞는 행을 검색합니다.
설정 옵션:
– Filter: 검색 조건 설정. 컬럼과 조건(equals, contains, greater than 등)을 지정합니다.
– Sort order: 정렬 기준
– Order by: 정렬 컬럼
– Limit: 최대 반환 행 수
필터 예시: “상태” 컬럼이 “대기중”인 모든 행 검색
Column: 상태, Condition: Text equals, Value: 대기중
Search Rows (Advanced): Google Sheets의 QUERY 함수와 유사한 고급 검색입니다. 더 복잡한 조건이나 여러 조건의 AND/OR 조합이 필요할 때 사용합니다.
필터 예시: “금액”이 10000 이상이고 “상태”가 “완료”인 행
Filter: A > 10000 AND B = ‘완료’ (A, B는 컬럼 레터)
Get a Cell: 특정 셀의 값을 가져옵니다. 행과 열을 지정해서 정확히 하나의 셀 값만 필요할 때 사용합니다.
Get Range Values: 지정된 범위의 모든 셀 값을 가져옵니다. 여러 셀을 한 번에 읽어야 할 때 사용합니다. A1:C10 형식으로 범위를 지정합니다.
Create/Add 모듈: 데이터 추가
Add a Row: 시트 맨 아래에 새 행을 추가합니다. 가장 많이 사용되는 액션입니다.
설정:
– Spreadsheet, Sheet 선택
– Table contains headers: Yes
– Values: 각 컬럼에 해당하는 값 입력
헤더가 설정되어 있으면 컬럼 이름으로 값을 매핑할 수 있어서 편리합니다. 헤더가 “이름”, “이메일”, “전화번호”라면 해당 필드에 값을 넣으면 됩니다.
Add Multiple Rows (Bulk Add Rows): 여러 행을 한 번에 추가합니다. 배열 데이터를 추가할 때 효율적입니다. 하나씩 추가하면 API 호출이 여러 번 발생하지만, 이 모듈을 사용하면 한 번의 호출로 처리됩니다.
주의: 입력 데이터는 2차원 배열 형태여야 합니다.
예: [[값1, 값2, 값3], [값4, 값5, 값6]]
Search Rows의 필터: Column “재고”, Condition “Number less than or equal”, Value “10”
Iterator는 검색 결과가 여러 행일 수 있으므로 각 행에 대해 알림을 보내기 위해 사용합니다.
추가: 같은 항목에 대해 반복 알림이 가지 않도록 “알림 발송 여부” 컬럼을 추가하고, 알림 후 체크합니다.
시나리오 5: 외부 API 데이터 시트에 기록
외부 서비스의 데이터를 정기적으로 가져와서 시트에 기록합니다.
예시: 날씨 API 데이터 수집
시나리오 구조:
Schedule(매 시간) → HTTP Get(날씨 API) → Parse JSON → Google Sheets Add a Row
HTTP 모듈 설정:
– URL: https://api.openweathermap.org/data/2.5/weather?q=Seoul&appid=YOUR_API_KEY
– Method: GET
Parse JSON으로 응답을 파싱하고, 필요한 데이터(온도, 습도, 날씨 상태 등)를 추출해서 시트에 기록합니다.
이런 방식으로 시간별 날씨 데이터를 축적하면 분석이나 시각화에 활용할 수 있습니다.
시나리오 6: 대시보드용 데이터 집계
여러 소스의 데이터를 집계해서 대시보드용 시트를 업데이트합니다.
시나리오 구조:
Schedule(매일 오전) → [여러 데이터 소스에서 데이터 수집] → Aggregate → Google Sheets Update Range
예시: 쇼핑몰 일별 매출 대시보드
1. Shopify API로 전일 주문 데이터 조회
2. 총 매출, 주문 수, 평균 주문 금액 계산
3. 대시보드 시트의 해당 날짜 행에 데이터 기록
대시보드 시트에 차트를 설정해두면 데이터가 업데이트될 때마다 자동으로 차트도 갱신됩니다.
고급 기법
배열 수식과 자동화의 조합
Google Sheets의 배열 수식(ARRAYFORMULA)과 Make 자동화를 조합하면 강력한 시스템을 만들 수 있습니다.
패턴: Make는 원본 데이터만 추가하고, 가공은 시트 수식이 처리
예를 들어:
– A열: 상품코드 (Make가 입력)
– B열: 수량 (Make가 입력)
– C열: 단가 (VLOOKUP으로 상품 마스터에서 자동 조회)
– D열: 금액 (=B*C 수식으로 자동 계산)
– E열: 상태 (조건부 수식으로 자동 분류)
Make는 A, B열 데이터만 추가하면 되고, 나머지는 시트 수식이 자동으로 채웁니다. 이렇게 하면 자동화 시나리오가 단순해지고, 계산 로직 변경도 시트에서만 하면 됩니다.
IMPORTRANGE로 시트 간 연결
IMPORTRANGE 함수로 다른 스프레드시트의 데이터를 참조할 수 있습니다. Make 없이도 시트 간 데이터 연결이 가능합니다.
=IMPORTRANGE(“스프레드시트_URL”, “시트명!A1:D100”)
Make와 IMPORTRANGE를 조합하면:
– Make: 원본 데이터 스프레드시트에 데이터 추가
– IMPORTRANGE: 대시보드 스프레드시트에서 원본 참조
– 결과: 대시보드가 자동으로 업데이트
주의: IMPORTRANGE는 실시간이 아니라 몇 분 간격으로 갱신됩니다.
Apps Script와의 연동
Google Apps Script로 시트에 커스텀 기능을 추가하고, Make의 Webhook으로 트리거할 수 있습니다.
Apps Script 예시 (Webhook 엔드포인트):
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = JSON.parse(e.postData.contents);
// 데이터 처리 로직
sheet.appendRow([data.name, data.email, new Date()]);
return ContentService.createTextOutput("Success");
}
이 스크립트를 웹 앱으로 배포하면 URL이 생성됩니다. Make의 HTTP 모듈로 이 URL에 POST 요청을 보내면 Apps Script가 실행됩니다.
Apps Script가 유용한 경우:
– 복잡한 데이터 가공이 필요할 때
– 시트 서식을 동적으로 변경해야 할 때
– 여러 시트에 걸친 복잡한 작업이 필요할 때
조건부 서식 자동화
직접적인 조건부 서식 자동화는 Make로 어렵지만, 우회 방법이 있습니다.
방법 1: 상태 컬럼 추가
특정 조건을 만족하면 “상태” 컬럼에 값을 설정하고, 시트의 조건부 서식에서 이 컬럼을 기준으로 서식을 적용합니다.
방법 2: Apps Script 사용
Make에서 Apps Script를 호출하고, Apps Script에서 프로그래밍 방식으로 서식을 변경합니다.
성능 최적화
API 호출 최소화
Google Sheets API는 분당 읽기 60회, 쓰기 60회로 제한됩니다. 이 제한을 효율적으로 사용해야 합니다.
최적화 방법:
– Add Multiple Rows 사용: 여러 행을 한 번에 추가
– Get Range Values 사용: 여러 셀을 한 번에 읽기
– 불필요한 Watch 주기 줄이기: 실시간이 필요 없으면 간격 늘리기
대용량 데이터 처리
수만 행의 데이터를 처리해야 할 때:
1. 배치 처리: 한 번에 모든 데이터를 처리하지 않고, 나눠서 처리합니다. 예: 1000행씩 처리하고 다음 실행 때 이어서.
2. Data Store 활용: 마지막 처리 위치를 Data Store에 저장하고, 다음 실행 때 그 위치부터 시작합니다.
3. 전용 DB 고려: 정말 대용량이라면 Google Sheets 대신 Airtable, 또는 MySQL/PostgreSQL 같은 전용 데이터베이스를 고려합니다.
에러 방지
흔한 에러와 방지 방법:
“The requested entity was not found”
원인: 시트나 스프레드시트가 삭제되었거나, 이름이 변경됨
방지: 시트 ID 사용 (이름 대신), 변경 시 시나리오 업데이트
“Rate limit exceeded”
원인: API 호출 제한 초과
방지: Sleep 모듈로 호출 간격 조절, 배치 처리 활용
“Invalid value”
원인: 데이터 타입 불일치 (숫자 컬럼에 텍스트 등)
방지: 데이터 입력 전 타입 변환, 검증 로직 추가
보안 고려사항
접근 권한 관리
Make에 연결된 Google 계정은 해당 계정의 모든 스프레드시트에 접근할 수 있습니다. 민감한 데이터가 있다면:
1. 자동화 전용 Google 계정 생성
2. 필요한 스프레드시트만 해당 계정과 공유
3. Make는 전용 계정으로만 연결
민감 정보 처리
개인정보, 결제정보 등 민감한 데이터를 시트에 저장할 때:
– 꼭 필요한 정보만 저장
– 가능하면 식별 불가능하게 가공 (해시, 마스킹)
– 시트 접근 권한 최소화
– 보관 기간 설정하고 자동 삭제 시나리오 구축
공유 링크 주의
“링크가 있는 모든 사용자” 공유 설정은 편리하지만 위험합니다. URL이 유출되면 누구나 접근할 수 있습니다. 가능하면 특정 사용자에게만 공유하세요.
마무리: 시트를 넘어서
Google Sheets와 Make의 조합은 소규모 비즈니스나 개인의 업무 자동화에 최적입니다. 초기 비용 없이, 프로그래밍 지식 없이, 강력한 자동화 시스템을 구축할 수 있습니다.
하지만 규모가 커지면 한계가 있습니다. 데이터가 수십만 행을 넘어가거나, 동시 접속자가 많아지거나, 복잡한 관계형 데이터가 필요해지면 전용 데이터베이스로 이전을 고려해야 합니다.
중요한 것은 시작하는 것입니다. 완벽한 시스템을 처음부터 설계하려 하지 말고, Google Sheets로 시작해서 검증하고, 필요할 때 확장하세요. 지금 당장 반복하고 있는 업무를 자동화해보세요. 한 번의 설정으로 앞으로의 수많은 반복 작업이 사라집니다. 그 시간을 더 가치 있는 일에 사용하세요.
온라인 쇼핑몰을 운영하다 보면 반복적인 업무에 파묻히기 쉽습니다. 주문 확인, 재고 관리, 고객 응대, 배송 처리, 리뷰 요청… 이 모든 일을 수작업으로 하면 정작 중요한 일(상품 기획, 마케팅, 고객 경험 개선)에 시간을 쓸 수 없습니다. Make를 활용한 쇼핑몰 자동화로 운영 효율을 극대화하는 방법을 알아봅니다.
쇼핑몰 자동화의 핵심 영역
쇼핑몰 운영에서 자동화할 수 있는 영역은 크게 다섯 가지입니다: 주문 관리, 재고 관리, 고객 커뮤니케이션, 마케팅, 그리고 분석/리포팅입니다. 각 영역에서 가장 효과적인 자동화 시나리오를 살펴보겠습니다.
주문 관리 자동화
다중 채널 주문 통합
자사몰, 스마트스토어, 쿠팡, 11번가 등 여러 채널에서 판매하는 경우 주문 관리가 복잡해집니다. 각 채널의 관리자 페이지에 일일이 접속해서 주문을 확인하고 처리하는 것은 비효율적입니다.
Make로 모든 채널의 주문을 하나의 시스템(Google Sheets, Airtable, 또는 자체 DB)으로 통합할 수 있습니다. 각 채널의 API나 Webhook을 통해 새 주문이 발생하면 자동으로 통합 주문 시트에 기록됩니다.
시나리오 구조 예시:
Shopify New Order Webhook → Google Sheets Add Row
스마트스토어 API(HTTP Module) → Google Sheets Add Row
쿠팡 API(HTTP Module) → Google Sheets Add Row
각 채널별로 별도의 시나리오를 만들고, 모두 같은 Google Sheets에 데이터를 추가하도록 설정합니다. 주문 데이터 형식이 채널마다 다르므로, 공통 형식으로 변환하는 매핑이 필요합니다.
통합 주문 시트의 컬럼 예시: 주문일시, 채널, 주문번호, 고객명, 연락처, 배송지, 상품명, 수량, 결제금액, 상태
주문 상태 자동 업데이트
주문 처리 과정에서 상태가 변경되면 관련 시스템과 고객에게 자동으로 알림을 보낼 수 있습니다.
예를 들어 재고 시스템에서 출고 처리가 완료되면:
1. 주문 시트의 상태를 “배송중”으로 변경
2. 고객에게 배송 시작 알림 발송(이메일, 카카오 알림톡)
3. 해당 채널의 주문 상태 업데이트(API 호출)
4. 운영팀 Slack에 출고 완료 알림
이 모든 과정이 수동 개입 없이 자동으로 진행됩니다. 운영자는 출고 버튼만 누르면 나머지는 자동화가 처리합니다.
이상 주문 감지 및 알림
비정상적인 주문을 자동으로 감지해서 알림을 보내는 시나리오도 유용합니다. 예를 들어:
– 같은 고객이 단시간에 여러 건 주문(도배 주문 의심)
– 주문 금액이 평소 평균의 5배 이상(대량 주문)
– 새 계정으로 고가 상품 첫 주문(사기 주문 의심)
– 해외 IP에서 국내 배송 주문(VPN 사용 의심)
시나리오에서 이런 조건을 필터로 설정하고, 해당되는 주문이 발생하면 운영자에게 즉시 Slack 또는 이메일로 알림을 보냅니다. 운영자가 직접 검토하고 필요시 조치를 취합니다.
재고 관리 자동화
실시간 재고 동기화
여러 채널에서 판매하는 경우 재고 동기화가 핵심입니다. A 채널에서 판매가 일어나면 B, C 채널의 재고도 즉시 감소해야 합니다. 그렇지 않으면 재고가 없는데 주문이 들어오는 오버셀링이 발생합니다.
중앙 재고 관리 시스템을 두고, 각 채널의 재고를 이 시스템과 동기화합니다:
1. 어떤 채널에서든 주문이 발생하면 중앙 재고에서 차감
2. 중앙 재고가 변경되면 모든 채널의 재고 업데이트
3. 재고 수불이 발생하면(입고, 반품 등) 중앙 재고 조정
Make 시나리오 예시 (주문 발생 시):
Shopify New Order → Get Order Items → Iterator(각 상품별) → Data Store Update(재고 차감) → HTTP Module(스마트스토어 재고 업데이트) → HTTP Module(쿠팡 재고 업데이트)
Data Store를 중앙 재고 데이터베이스로 사용하면 Make 내에서 모든 재고 관리가 가능합니다. 더 복잡한 경우 외부 데이터베이스(MySQL, MongoDB 등)와 연동합니다.
재고 부족 알림
재고가 특정 수준 이하로 떨어지면 자동으로 알림을 보내는 시나리오입니다. 안전 재고(Safety Stock) 수준을 설정하고, 그 이하로 떨어지면 담당자에게 알립니다.
시나리오 구조:
Schedule(1시간마다) → Data Store Search(재고 < 안전재고) → Iterator → Slack/Email(재고 부족 알림)
알림에는 상품명, 현재 재고, 안전 재고, 일평균 판매량, 예상 소진일 등의 정보를 포함합니다. 담당자는 이 정보를 보고 발주 결정을 내립니다.
자동 발주 시스템
한 단계 더 나아가서 발주까지 자동화할 수 있습니다. 재고가 재주문점(Reorder Point) 이하로 떨어지면 자동으로 발주 요청을 생성합니다.
재주문점 계산: (일평균 판매량 × 리드타임) + 안전재고
예를 들어 일평균 10개 판매, 리드타임 7일, 안전재고 30개라면 재주문점은 100개입니다. 재고가 100개 이하로 떨어지면 발주를 시작합니다.
발주 수량 계산: 최대 재고 – 현재 재고
최대 재고를 200개로 설정했다면, 현재 재고가 95개일 때 105개를 발주합니다.
시나리오 구조:
Schedule(매일 오전) → Data Store Search(재고 <= 재주문점) → Iterator → 발주 수량 계산 → Google Sheets(발주 요청서 추가) → Email/Slack(발주 요청 알림)
완전 자동 발주가 부담스럽다면, 발주 “제안”만 자동으로 생성하고 담당자가 승인하면 발주가 나가도록 할 수 있습니다.
고객 커뮤니케이션 자동화
주문 확인 및 배송 알림
기본적인 트랜잭션 알림은 대부분의 쇼핑몰 플랫폼에서 제공합니다. 하지만 Make로 직접 구축하면 더 세밀한 커스터마이징이 가능합니다.
주문 확인 알림에 다음 내용을 추가할 수 있습니다:
– 예상 배송일(상품 재고 상황과 배송사 데이터 기반)
– 관련 상품 추천(크로스셀)
– 자주 묻는 질문 링크(교환/반품, 배송 조회 등)
– 담당자 연락처(문제 발생 시)
배송 알림도 단순히 “배송 시작”이 아니라 상세한 정보를 포함합니다:
– 택배사와 운송장 번호
– 실시간 배송 추적 링크
– 예상 도착 시간
– 부재 시 대응 방법
배송 완료 후 후속 시퀀스
배송 완료는 끝이 아니라 시작입니다. 배송 완료 후 적절한 타이밍에 후속 메시지를 보내면 고객 만족도와 재구매율을 높일 수 있습니다.
배송 완료 당일: “상품 잘 받으셨나요? 문제가 있으면 언제든 연락주세요.”
배송 완료 후 3일: 사용 가이드나 팁 발송. “이렇게 사용하면 더 좋아요!”
배송 완료 후 7일: 리뷰 요청. “후기를 남겨주시면 적립금을 드려요.”
배송 완료 후 30일: 재구매 유도. “다시 만나요! 재구매 고객 특별 할인”
각 메시지의 발송 시점과 내용은 상품 특성에 따라 조정합니다. 소모품은 예상 소진 시점에 맞춰서, 의류는 계절 변화에 맞춰서 메시지를 보냅니다.
고객 문의 자동 분류 및 라우팅
고객 문의가 들어오면 내용을 분석해서 적절한 담당자에게 자동으로 전달합니다.
문의 유형 분류:
– 배송 관련: “배송”, “언제”, “도착”, “추적” 등의 키워드
– 교환/반품: “교환”, “반품”, “환불”, “사이즈” 등의 키워드
– 상품 문의: “재고”, “입고”, “색상”, “소재” 등의 키워드
– 불만/클레임: “불만”, “실망”, “화나”, “사기” 등의 키워드
시나리오 구조:
Email/Form Webhook → Text Parser(키워드 분석) → Router
– Route 1(배송 관련): Slack #cs-delivery 채널로 전달
– Route 2(교환/반품): Slack #cs-return 채널로 전달
– Route 3(상품 문의): Slack #cs-product 채널로 전달
– Route 4(불만/클레임): 긴급 알림 + 관리자 DM
더 정교한 분류를 원하면 ChatGPT API를 활용할 수 있습니다. 문의 내용을 ChatGPT에 보내서 유형과 긴급도를 분류하고, 자동 응답 초안까지 생성하게 할 수 있습니다.
카카오 알림톡 연동
한국 쇼핑몰에서 카카오 알림톡은 필수입니다. 이메일보다 개봉률이 높고, 실시간으로 확인하는 고객이 많습니다.
카카오 알림톡은 NHN Cloud, 인포뱅크, 비즈엠 등의 서비스를 통해 API로 발송할 수 있습니다. Make의 HTTP 모듈로 이 API를 호출하면 됩니다.
알림톡 발송 시나리오:
트리거(주문/배송 등) → HTTP Module(알림톡 API 호출)
HTTP 설정 예시(NHN Cloud 기준):
– Method: POST
– URL: https://api-alimtalk.cloud.toast.com/alimtalk/v2.2/appkeys/{appKey}/messages
– Headers: Content-Type: application/json, X-Secret-Key: {secretKey}
– Body: JSON 형식의 발송 데이터(수신자, 템플릿 코드, 치환 변수 등)
알림톡 템플릿은 미리 카카오 검수를 받아야 합니다. 검수 통과된 템플릿 코드를 API 호출 시 사용합니다.
마케팅 자동화
고객 세그먼트 기반 마케팅
모든 고객에게 같은 마케팅 메시지를 보내는 것은 비효율적입니다. 고객을 세그먼트로 나누고 각 세그먼트에 맞는 메시지를 보내야 효과적입니다.
기본 세그먼트 예시:
– 신규 고객: 첫 구매 후 30일 이내
– 활성 고객: 최근 90일 내 2회 이상 구매
– 휴면 고객: 마지막 구매 후 90일 이상 경과
– VIP 고객: 누적 구매 금액 상위 10%
– 이탈 위험 고객: 구매 빈도 감소 추세
Make로 고객 데이터를 분석하고 세그먼트를 자동 업데이트합니다:
Schedule(매일) → Database/Sheets(고객 데이터 조회) → Aggregate(구매 통계 계산) → Router(세그먼트 분류) → Data Store/Sheets(세그먼트 태그 업데이트)
세그먼트 정보를 이메일 마케팅 도구(Mailchimp, Stibee 등)와 동기화하면 세그먼트별 타겟 캠페인이 가능합니다.
자동 쿠폰 발급
특정 조건을 만족하는 고객에게 자동으로 쿠폰을 발급합니다.
조건 예시:
– 첫 구매 고객: 다음 구매 시 10% 할인
– 3회 구매 달성: 감사 쿠폰 15% 할인
– 생일: 생일 축하 쿠폰 20% 할인
– 휴면 30일: 복귀 유도 쿠폰 25% 할인
– 리뷰 작성: 감사 쿠폰 5% 할인
시나리오 예시(첫 구매 고객):
New Order Webhook → Filter(첫 구매 여부 확인) → Generate Coupon Code → Send Coupon Email → Data Store(쿠폰 발급 기록)
쿠폰 코드는 고유해야 합니다. Make의 랜덤 함수나 UUID를 사용해서 생성하고, 사용 여부를 추적합니다. 쇼핑몰 플랫폼의 쿠폰 API가 있다면 직접 연동해서 시스템에 쿠폰을 등록합니다.
장바구니 이탈 복구
앞서 이메일 자동화에서 다뤘듯이, 장바구니 이탈 복구는 가장 효과적인 마케팅 자동화 중 하나입니다. 쇼핑몰 특성에 맞게 타이밍과 메시지를 조정합니다.
일반적인 타이밍:
– 1차 알림: 이탈 후 1시간 (단순 리마인더)
– 2차 알림: 이탈 후 24시간 (긴급성 강조 “품절 임박”)
– 3차 알림: 이탈 후 72시간 (할인 제안)
할인 제안 시 주의할 점: 모든 이탈 고객에게 할인을 제공하면 “기다리면 할인받을 수 있다”는 학습 효과가 생깁니다. 첫 구매 고객이나 오랜만에 방문한 고객에게만 할인을 제공하고, 활성 고객에게는 리마인더만 보내는 식으로 차별화합니다.
분석 및 리포팅 자동화
일일 매출 리포트
매일 아침 전날의 매출 데이터를 요약해서 이메일이나 Slack으로 받아봅니다.
리포트 내용:
– 전일 매출액, 주문 건수, 평균 주문 금액
– 전주 동일 대비 증감률
– 채널별 매출 비중
– 베스트셀러 상품 TOP 5
– 재고 부족 경고 상품
시나리오 구조:
Schedule(매일 오전 9시) → 각 채널 API 호출(전일 데이터) → Aggregate(통계 계산) → Format Report → Slack/Email 발송
더 시각적인 리포트를 원하면 Google Data Studio(Looker Studio)와 연동합니다. Make가 데이터를 Google Sheets에 기록하고, Data Studio가 이를 시각화해서 대시보드를 만듭니다.
주간/월간 종합 분석
주간이나 월간 단위로 더 심층적인 분석 리포트를 생성합니다.
분석 항목:
– 매출 추이 그래프
– 고객 코호트 분석(월별 신규 고객의 재구매율)
– 상품 카테고리별 성과
– 마케팅 채널별 ROI
– 고객 생애 가치(LTV) 추이
복잡한 분석은 Make만으로는 한계가 있습니다. Make는 데이터 수집과 전처리를 담당하고, 실제 분석은 Google Sheets의 피벗 테이블이나 Python 스크립트, 또는 BI 도구에서 수행합니다.
이상 징후 알림
평소와 다른 패턴이 감지되면 즉시 알림을 보냅니다.
모니터링 항목:
– 매출이 전주 대비 30% 이상 감소
– 특정 상품 반품률 급증
– 사이트 오류로 추정되는 주문 실패 급증
– 고객 문의량 평소 대비 2배 이상
시나리오에서 현재 수치와 기준값(이동 평균 등)을 비교하고, 임계값을 넘으면 알림을 보냅니다. 담당자가 빠르게 대응해서 문제를 최소화합니다.
플랫폼별 연동 가이드
Shopify 연동
Shopify는 Make와 공식 연동을 지원합니다. Make의 Shopify 모듈을 사용하면 별도 개발 없이 연동이 가능합니다.
주요 트리거:
– Watch Orders: 새 주문 감지
– Watch Products: 상품 변경 감지
– Watch Customers: 고객 정보 변경 감지
주요 액션:
– Create Order: 주문 생성
– Update Order: 주문 정보 업데이트
– Create Product: 상품 등록
– Update Inventory: 재고 업데이트
WooCommerce 연동
WooCommerce도 Make 공식 모듈을 제공합니다. WordPress 플러그인 형태로 설치된 WooCommerce와 연동합니다.
연동 설정:
1. WooCommerce → 설정 → 고급 → REST API에서 API 키 생성
2. Make에서 WooCommerce 연결 생성, API 키 입력
3. 시나리오에서 WooCommerce 모듈 사용
스마트스토어 연동
네이버 스마트스토어는 Make 공식 모듈이 없습니다. 커머스 API를 HTTP 모듈로 직접 호출해야 합니다.
연동 준비:
1. 네이버 개발자 센터에서 애플리케이션 등록
2. 커머스 API 사용 신청 및 승인
3. 클라이언트 ID, 시크릿 발급
인증 방식: OAuth 2.0
Make의 HTTP OAuth 2.0 연결을 설정하고, 네이버 커머스 API 엔드포인트를 호출합니다.
주요 API:
– 주문 목록 조회: GET /v1/pay-order/seller/orders
– 주문 상세 조회: GET /v1/pay-order/seller/orders/{orderId}
– 발송 처리: POST /v1/pay-order/seller/orders/{orderId}/ship
카페24 연동
카페24도 HTTP 모듈로 API 연동합니다.
연동 준비:
1. 카페24 개발자 센터에서 앱 등록
2. 필요한 권한(주문, 상품, 회원 등) 설정
3. 클라이언트 ID, 시크릿 발급
인증 방식: OAuth 2.0
액세스 토큰을 발급받아 API 요청 헤더에 포함합니다.
API 문서: developers.cafe24.com
자동화 구축 베스트 프랙티스
작게 시작하기
처음부터 완벽한 자동화를 구축하려 하지 마세요. 가장 시간이 많이 드는 작업 하나를 선택해서 자동화하고, 안정화된 후 다음 작업으로 넘어갑니다.
추천 시작점:
1. 주문 데이터 통합 (가장 기본적이면서 효과적)
2. 주문/배송 알림 자동화
3. 재고 부족 알림
4. 장바구니 이탈 복구
에러 처리 철저히
쇼핑몰 자동화는 실패하면 매출에 직접적인 영향이 있습니다. 모든 시나리오에 에러 핸들러를 추가하고, 에러 발생 시 즉시 알림을 받도록 설정합니다.
특히 결제, 재고, 배송 관련 자동화는 실패 시 대체 프로세스(폴백)를 마련해둡니다. 자동화가 실패해도 수동으로 처리할 수 있어야 합니다.
테스트 환경 활용
실제 주문 데이터로 테스트하지 마세요. 테스트용 쇼핑몰 환경을 구축하거나, 개발/스테이징 API를 사용합니다. Shopify, WooCommerce 등은 테스트 모드를 제공합니다.
테스트 시나리오를 별도로 만들어서 실제 시나리오에 영향 없이 테스트합니다. 검증이 끝나면 실제 시나리오에 적용합니다.
문서화
각 시나리오의 목적, 트리거 조건, 예상 동작, 에러 처리 방법을 문서화합니다. 담당자가 바뀌어도 자동화를 유지보수할 수 있어야 합니다.
Make의 시나리오 메모 기능을 활용하고, 별도의 문서(Notion, Google Docs 등)에 전체 자동화 아키텍처를 정리해둡니다.
마무리: 자동화로 성장에 집중하기
쇼핑몰 자동화의 궁극적인 목표는 운영자가 반복 업무에서 벗어나 비즈니스 성장에 집중하는 것입니다. 재고 확인, 주문 처리, 알림 발송 같은 일은 기계가 더 정확하고 빠르게 할 수 있습니다. 사람은 상품 기획, 고객 경험 개선, 마케팅 전략처럼 창의성과 판단이 필요한 일에 시간을 써야 합니다.
모든 것을 한 번에 자동화할 필요는 없습니다. 오늘 가장 불편한 작업 하나를 자동화해보세요. 그 작은 성공이 쌓이면 결국 전체 쇼핑몰 운영이 자동화됩니다. 자동화가 일하는 동안 당신은 비즈니스를 성장시키세요.
노코드 자동화 플랫폼을 선택할 때 가장 많이 비교되는 두 서비스가 Make(구 Integromat)와 Zapier입니다. 둘 다 수천 개의 앱을 연결하고 자동화할 수 있지만, 철학과 접근 방식에 상당한 차이가 있습니다. 어떤 플랫폼이 더 좋다고 단정짓기보다는, 각자의 상황과 필요에 맞는 선택을 하는 것이 중요합니다. 이 글에서 두 플랫폼을 심층 비교해보겠습니다.
기본 철학과 인터페이스
Zapier: 단순함의 미학
Zapier는 2011년에 출시되어 노코드 자동화 시장을 개척한 선구자입니다. Zapier의 핵심 철학은 “단순함”입니다. 프로그래밍 지식이 전혀 없는 사람도 몇 분 만에 자동화를 만들 수 있도록 설계되었습니다.
Zapier에서 자동화는 “Zap”이라고 부릅니다. 각 Zap은 하나의 트리거(Trigger)와 하나 이상의 액션(Action)으로 구성됩니다. 트리거는 자동화를 시작하는 이벤트이고, 액션은 그 결과로 수행되는 작업입니다. 예를 들어 “Gmail에 새 이메일이 오면(트리거) Slack에 메시지를 보낸다(액션)”는 식입니다.
인터페이스는 리스트 형태로, 위에서 아래로 단계가 순차적으로 나열됩니다. 각 단계를 클릭하면 설정 패널이 열리고, 앱 선택 → 이벤트 선택 → 계정 연결 → 필드 매핑 순서로 진행합니다. 직관적이고 학습 곡선이 완만해서 처음 접하는 사람도 쉽게 시작할 수 있습니다.
Make: 유연성의 극대화
Make(구 Integromat)는 2012년 체코에서 시작되었습니다. Make의 핵심 철학은 “유연성”입니다. 더 복잡한 로직도 구현할 수 있도록 설계되었고, 시각적 프로그래밍에 가까운 경험을 제공합니다.
Make에서 자동화는 “Scenario”라고 부릅니다. 각 시나리오는 모듈(Module)들로 구성되며, 모듈들은 연결선으로 이어집니다. 특징적인 것은 이 연결이 단순히 순차적이지 않다는 점입니다. 분기(Router), 반복(Iterator), 집계(Aggregator), 오류 처리(Error Handler) 등 다양한 흐름 제어가 가능합니다.
인터페이스는 캔버스 형태로, 모듈들을 자유롭게 배치하고 연결합니다. 마치 마인드맵이나 순서도를 그리는 것과 비슷합니다. 전체 흐름을 한눈에 볼 수 있어서 복잡한 로직도 시각적으로 이해하기 쉽습니다. 다만 처음에는 인터페이스에 익숙해지는 데 시간이 필요합니다.
기능 비교: 핵심 차이점
분기와 조건 처리
Zapier: Path라는 기능으로 조건 분기를 지원합니다. IF-THEN 조건을 설정해서 조건에 따라 다른 액션을 실행할 수 있습니다. 다만 Path는 유료 플랜에서만 사용 가능하고, 복잡한 분기는 구현하기 어렵습니다. 한 Zap 안에서 3개 이상의 분기를 만들면 관리가 복잡해집니다.
Make: Router 모듈로 무제한 분기가 가능합니다. 각 경로(Route)에 Filter를 설정해서 조건을 정의합니다. 여러 조건이 동시에 참인 경우 여러 경로가 동시에 실행되도록 할 수도 있고(병렬 처리), 첫 번째로 참인 경로만 실행되도록 할 수도 있습니다(Fallback). 복잡한 비즈니스 로직도 깔끔하게 구현할 수 있습니다.
반복과 배열 처리
Zapier: 배열 데이터를 처리할 때 제약이 있습니다. Looping by Zapier 앱을 사용하면 반복 처리가 가능하지만, 한 번에 처리할 수 있는 항목 수에 제한이 있습니다. 배열의 각 항목을 개별적으로 처리해야 할 때 여러 Zap을 조합해야 하는 경우가 있습니다.
Make: Iterator 모듈이 배열을 개별 항목으로 분해하고, Aggregator 모듈이 개별 항목들을 다시 배열로 합칩니다. 이 두 모듈을 조합하면 배열 데이터를 자유롭게 가공할 수 있습니다. 예를 들어 100개의 주문 데이터를 받아서 각각 처리한 후 결과를 다시 하나의 배열로 모으는 것이 자연스럽게 가능합니다.
에러 처리
Zapier: 에러가 발생하면 해당 실행이 실패로 기록되고, 이메일로 알림이 옵니다. 자동 재시도 기능이 있어서 일시적인 오류는 자동으로 복구됩니다. 하지만 에러 발생 시 대체 로직을 실행하는 등의 세밀한 제어는 어렵습니다.
Make: 각 모듈에 Error Handler를 추가할 수 있습니다. 에러가 발생하면 대체 경로를 실행하거나(Resume), 나중에 재시도하거나(Break), 무시하거나(Ignore), 롤백하거나(Rollback) 할 수 있습니다. 에러 유형에 따라 다른 처리를 하는 것도 가능합니다. 안정적인 자동화를 구축하는 데 큰 장점입니다.
데이터 변환과 함수
Zapier: Formatter 앱을 통해 텍스트, 숫자, 날짜 등의 변환이 가능합니다. 자주 사용되는 변환 작업은 대부분 지원합니다. 하지만 복잡한 변환이나 커스텀 로직은 Code 액션(JavaScript/Python)을 사용해야 합니다.
Make: 150개 이상의 내장 함수를 제공합니다. 텍스트, 숫자, 날짜, 배열, 객체 등 다양한 데이터 타입을 다루는 함수가 있습니다. 함수들을 조합해서 복잡한 변환도 코드 없이 구현할 수 있습니다. 예를 들어 {{lower(trim(split(1.email; “@”; 1)))}}처럼 함수를 중첩해서 사용할 수 있습니다.
HTTP 요청과 API 통합
Zapier: Webhooks by Zapier 앱으로 HTTP 요청을 보낼 수 있습니다. GET, POST 등 기본적인 메서드를 지원하고, 헤더와 바디를 설정할 수 있습니다. 공식 앱이 없는 서비스와 연동할 때 유용합니다.
Make: HTTP 모듈이 더 강력합니다. 모든 HTTP 메서드를 지원하고, 요청/응답 파싱, OAuth 2.0 인증, 인증서 관리, 프록시 설정 등 고급 기능을 제공합니다. GraphQL API도 지원합니다. API 문서만 있으면 어떤 서비스든 연동할 수 있습니다.
연동 앱 비교
앱 수량
Zapier: 6,000개 이상의 앱을 지원합니다(2024년 기준). 노코드 자동화 플랫폼 중 가장 많은 앱을 지원합니다. 대부분의 유명 SaaS 서비스는 Zapier 연동을 지원합니다. 일부 서비스는 Zapier 연동만 제공하는 경우도 있습니다.
Make: 1,500개 이상의 앱을 지원합니다. Zapier보다 적지만, 주요 서비스는 대부분 지원합니다. 그리고 HTTP 모듈이 강력해서 공식 앱이 없는 서비스도 API를 통해 연동할 수 있습니다.
앱 품질
앱 수량만큼 중요한 것이 앱 품질입니다. 각 앱이 제공하는 트리거와 액션의 종류, 그리고 상세 옵션에서 차이가 납니다.
Zapier: 앱마다 품질 차이가 있습니다. 인기 앱(Google, Slack, Notion 등)은 다양한 트리거와 액션을 제공하지만, 마이너한 앱은 기본적인 기능만 제공하는 경우가 많습니다.
Make: 지원하는 앱 수는 적지만, 각 앱의 기능이 더 상세합니다. 예를 들어 Google Sheets 앱을 비교하면, Make는 특정 셀 범위 읽기, 여러 행 한 번에 추가, 셀 서식 지정 등 더 세밀한 옵션을 제공합니다.
한국 서비스 지원
국내 서비스와의 연동은 두 플랫폼 모두 제한적입니다. 네이버, 카카오, 배달의민족 등 국내 서비스는 공식 앱이 없습니다. 하지만 HTTP 모듈/Webhook을 활용하면 API를 제공하는 서비스와는 연동이 가능합니다.
카카오 알림톡, NHN 문자 발송 등은 API 문서를 참고해서 HTTP 요청으로 구현할 수 있습니다. Make의 HTTP 모듈이 더 유연해서 복잡한 인증 방식도 처리하기 쉽습니다.
가격 비교
Zapier 가격 정책
Free: 월 100 Tasks, 5개 Zaps, 단일 단계 Zap만 가능 Starter: 월 $29.99(연간 결제 시 $19.99), 750 Tasks, 20개 Zaps Professional: 월 $73.50(연간 결제 시 $49), 2,000 Tasks, 무제한 Zaps, Paths, Formatter Team: 월 $598.50(연간 결제 시 $399), 50,000 Tasks, 무제한 사용자 Company: 월 $1,198.50(연간 결제 시 $799), 100,000 Tasks, 고급 보안 기능
Zapier의 과금 단위는 “Task”입니다. 하나의 Zap이 실행될 때 각 액션이 하나의 Task로 카운트됩니다. 트리거는 Task로 카운트되지 않습니다. 예를 들어 1개의 트리거와 3개의 액션으로 구성된 Zap이 실행되면 3 Tasks가 소비됩니다.
Make 가격 정책
Free: 월 1,000 Operations, 2개 시나리오, 5분 간격 스케줄 Core: 월 $10.59(연간 결제 시 $9), 10,000 Operations, 무제한 시나리오, 1분 간격 Pro: 월 $18.82(연간 결제 시 $16), 10,000 Operations, 풀 텍스트 검색, 커스텀 변수 Teams: 월 $34.12(연간 결제 시 $29), 10,000 Operations, 팀 협업 기능 Enterprise: 문의 필요, 맞춤형 구성
Make의 과금 단위는 “Operation”입니다. 각 모듈의 실행이 하나의 Operation으로 카운트됩니다. 트리거 모듈도 Operation으로 카운트됩니다. 예를 들어 5개의 모듈로 구성된 시나리오가 실행되면 5 Operations이 소비됩니다.
실제 비용 비교
단순 비교는 어렵지만, 대체로 Make가 더 경제적입니다. 특히 복잡한 자동화에서 차이가 큽니다.
예를 들어 10개의 단계로 구성된 자동화가 하루 100번 실행된다고 가정합니다:
Zapier: 100회 × 9 액션 = 900 Tasks/일 = 27,000 Tasks/월
→ Team 플랜 필요 (월 $399)
이메일 마케팅은 여전히 가장 효과적인 마케팅 채널 중 하나입니다. DMA(Data & Marketing Association) 조사에 따르면 이메일 마케팅의 평균 ROI는 4,200%에 달합니다. 1달러를 투자하면 42달러의 수익을 얻는다는 뜻입니다. 하지만 이런 성과를 내려면 적시에 적절한 메시지를 보내야 하고, 이를 수작업으로 하기에는 너무나 많은 시간이 들어갑니다. Make를 활용한 이메일 자동화가 해답입니다.
이메일 자동화의 핵심 원리
효과적인 이메일 자동화는 세 가지 요소로 구성됩니다: 트리거(Trigger), 세그먼트(Segment), 콘텐츠(Content)입니다. 트리거는 이메일을 발송하는 시점을 결정합니다. 세그먼트는 누구에게 보낼지를 결정합니다. 콘텐츠는 무엇을 보낼지를 결정합니다. 이 세 가지가 완벽하게 맞아떨어질 때 이메일이 효과를 발휘합니다.
트리거 기반 이메일의 힘
트리거 기반 이메일은 사용자의 특정 행동이나 이벤트에 반응해서 자동으로 발송됩니다. 마케팅 자동화 플랫폼 Omnisend의 분석에 따르면, 트리거 기반 이메일의 개봉률은 일반 뉴스레터보다 8배 높고, 클릭률은 2.5배 높습니다. 그 이유는 명확합니다. 사용자가 관심을 보인 바로 그 순간에 관련된 메시지를 보내기 때문입니다.
대표적인 트리거 이벤트로는 회원가입, 첫 구매, 장바구니 이탈, 특정 페이지 방문, 일정 기간 미접속, 구매 완료, 리뷰 요청 시점 등이 있습니다. 각 트리거에 맞는 이메일을 설계하고 Make로 자동화하면, 수천 명의 고객에게 각각 개인화된 메시지를 보내는 것이 가능해집니다.
Make로 구축하는 웰컴 이메일 시리즈
웰컴 이메일은 가장 기본적이면서도 효과적인 자동화입니다. 새로운 회원이 가입하면 환영 메시지와 함께 서비스 이용 방법, 인기 상품, 특별 혜택 등을 안내합니다. 단일 이메일보다 시리즈로 구성하면 효과가 더 좋습니다.
웰컴 시리즈 시나리오 구성
첫 번째 시나리오는 즉시 발송되는 환영 메일입니다. 회원가입 Webhook을 트리거로 설정하고, 가입 정보(이름, 이메일)를 받아서 환영 메일을 발송합니다. 이 메일에는 가입에 대한 감사 인사와 함께 핵심 가치를 전달합니다.
Make 시나리오 구조: Webhook → Set Variable(사용자 정보 저장) → Gmail/SendGrid(환영 메일 발송) → Data Store(발송 기록 저장)
두 번째 시나리오는 가입 후 3일째 발송되는 가이드 메일입니다. Data Store에서 가입 후 3일이 지난 사용자를 조회하고, 아직 첫 구매나 특정 액션을 하지 않은 사용자에게 서비스 활용 가이드를 보냅니다.
Make 시나리오 구조: Schedule(매일 오전 10시) → Data Store Search(가입 후 3일 경과 & 미활동 사용자) → Iterator → Gmail/SendGrid(가이드 메일 발송)
세 번째 시나리오는 가입 후 7일째 발송되는 특별 제안 메일입니다. 여전히 첫 구매를 하지 않은 사용자에게 할인 쿠폰이나 특별 혜택을 제공해서 전환을 유도합니다.
개인화 변수 활용
이메일의 효과를 높이려면 개인화가 필수입니다. 단순히 이름을 넣는 것을 넘어서, 사용자의 관심사, 행동 데이터, 가입 경로 등을 활용합니다.
Make에서 개인화 변수를 사용하는 방법은 간단합니다. 이메일 템플릿에 {{name}}, {{product}}, {{date}} 같은 플레이스홀더를 넣고, Make의 매핑 기능으로 실제 데이터를 주입합니다. 예를 들어 “{{name}}님, 가입을 환영합니다!”는 “김철수님, 가입을 환영합니다!”로 변환됩니다.
더 고급 개인화를 원한다면 조건부 콘텐츠를 사용합니다. Make의 Router와 Filter를 활용해서 사용자 세그먼트별로 다른 이메일 템플릿을 발송합니다. 예를 들어 가입 경로가 인스타그램인 사용자에게는 인스타그램 관련 콘텐츠를, 블로그인 사용자에게는 블로그 관련 콘텐츠를 보내는 식입니다.
장바구니 이탈 복구 자동화
장바구니 이탈율은 평균 70%에 달합니다. 10명 중 7명이 장바구니에 상품을 담고도 구매를 완료하지 않는다는 뜻입니다. 하지만 장바구니 이탈 이메일을 보내면 그 중 10-15%를 복구할 수 있습니다. 이 자동화 하나만으로도 매출이 크게 증가할 수 있습니다.
장바구니 이탈 감지 로직
장바구니 이탈을 감지하려면 두 가지 데이터가 필요합니다: 장바구니 추가 이벤트와 구매 완료 이벤트입니다. 장바구니에 상품을 추가한 후 일정 시간(보통 1시간~24시간) 내에 구매 완료 이벤트가 없으면 이탈로 간주합니다.
쇼핑몰 플랫폼(Shopify, WooCommerce 등)에서 제공하는 Webhook을 활용합니다. 장바구니 업데이트 Webhook이 발생하면 Make가 해당 정보를 Data Store에 저장합니다. 별도의 스케줄 시나리오가 주기적으로 Data Store를 확인해서, 장바구니 추가 후 1시간이 지났는데 구매 완료가 없는 케이스를 찾아 이메일을 발송합니다.
3단계 이탈 복구 시퀀스
장바구니 이탈 복구는 단일 이메일보다 시퀀스가 효과적입니다. 각 단계마다 다른 접근법을 사용합니다.
1단계 (이탈 후 1시간): 순수한 리마인더 이메일입니다. “장바구니에 담아두신 상품이 있어요”라는 제목으로, 담긴 상품 이미지와 함께 장바구니로 돌아가는 링크를 제공합니다. 이 단계에서는 할인을 제공하지 않습니다. 단순히 잊어버린 고객에게 상기시키는 것만으로도 상당수가 복구됩니다.
2단계 (이탈 후 24시간): 사회적 증거와 긴급성을 추가합니다. “다른 고객들도 이 상품에 관심을 보이고 있어요” 또는 “재고가 얼마 남지 않았어요”라는 메시지로 긴급성을 유발합니다. 상품 리뷰나 평점을 함께 보여주면 신뢰도가 높아집니다.
3단계 (이탈 후 72시간): 최후의 제안입니다. 소량의 할인(5-10%)이나 무료 배송을 제공합니다. “마지막 기회: 10% 할인 쿠폰을 드립니다”라는 제목으로, 제한된 시간 동안만 유효한 쿠폰 코드를 제공합니다.
Make 시나리오 상세 설계
장바구니 이탈 1단계 시나리오:
Schedule(15분마다 실행) → Data Store Search(장바구니 추가 후 1시간 경과 & 구매 미완료 & 1단계 미발송) → Iterator → Gmail/SendGrid(리마인더 메일) → Data Store Update(1단계 발송 완료 표시)
이메일 내용에는 장바구니 상품 정보가 포함되어야 합니다. Data Store에 저장된 장바구니 데이터에서 상품명, 가격, 이미지 URL을 가져와서 이메일 템플릿에 동적으로 삽입합니다.
구매 후 이메일 자동화
구매가 끝이 아니라 시작입니다. 구매 후 이메일 시퀀스로 고객 만족도를 높이고, 재구매를 유도하고, 리뷰를 수집할 수 있습니다.
주문 확인 및 배송 알림
기본적인 트랜잭션 이메일이지만, 여기에도 마케팅 요소를 넣을 수 있습니다. 주문 확인 메일에 관련 상품 추천을 추가하거나, 배송 알림 메일에 사용 가이드나 팁을 포함시킵니다.
Make 시나리오: Shopify/WooCommerce Order Created Webhook → Parse Order Data → Gmail/SendGrid(주문 확인 메일) + Data Store(주문 정보 저장)
배송 추적 연동도 자동화할 수 있습니다. 배송 업체 API와 연동해서 배송 상태가 변경될 때마다 자동으로 알림을 보냅니다. CJ대한통운, 로젠택배 등 대부분의 국내 택배사가 배송 조회 API를 제공합니다.
리뷰 요청 자동화
제품 리뷰는 전환율에 큰 영향을 미칩니다. Spiegel Research Center 연구에 따르면, 리뷰가 있는 제품은 없는 제품보다 전환율이 270% 높습니다. 하지만 고객이 자발적으로 리뷰를 남기는 비율은 매우 낮습니다. 적절한 시점에 리뷰 요청 이메일을 보내면 리뷰 수집률을 크게 높일 수 있습니다.
리뷰 요청의 최적 타이밍은 제품 수령 후 사용해볼 시간이 지난 시점입니다. 대부분의 경우 배송 완료 후 3-7일이 적당합니다. 소모품은 더 빠르게(2-3일), 가전제품 같은 내구재는 더 늦게(7-14일) 보내는 것이 좋습니다.
Make 시나리오: Schedule(매일 오전) → Data Store Search(배송 완료 후 5일 경과 & 리뷰 요청 미발송) → Iterator → Gmail/SendGrid(리뷰 요청 메일)
리뷰 요청 메일에는 리뷰 작성 링크를 직접 포함하고, 가능하다면 인센티브(적립금, 할인 쿠폰)를 제공합니다. “5분이면 작성할 수 있어요”처럼 시간이 오래 걸리지 않는다는 것을 강조하면 응답률이 높아집니다.
재구매 유도 시퀀스
첫 구매 고객을 충성 고객으로 만들려면 재구매가 중요합니다. 제품 특성에 따라 재구매 주기가 다르므로, 이를 고려한 타이밍에 재구매 유도 이메일을 보냅니다.
소모품의 경우 예상 소진 시점에 맞춰 리마인더를 보냅니다. 예를 들어 30일분 건강식품을 구매한 고객에게는 25일 후에 “재고가 떨어지기 전에 재구매하세요”라는 이메일을 보냅니다.
비소모품의 경우 관련 제품이나 액세서리를 추천합니다. 카메라를 구매한 고객에게 렌즈나 가방을, 노트북을 구매한 고객에게 마우스나 파우치를 추천하는 식입니다.
재참여(Re-engagement) 캠페인 자동화
활동이 없는 고객을 다시 활성화하는 것도 중요합니다. 새 고객을 획득하는 비용은 기존 고객을 유지하는 비용의 5-25배에 달합니다. 휴면 고객을 재활성화하면 마케팅 효율이 크게 개선됩니다.
휴면 고객 정의와 세그먼트
휴면 고객의 기준은 비즈니스 특성에 따라 다릅니다. 일반적으로 마지막 구매나 방문 후 30-90일이 지난 고객을 휴면으로 분류합니다. 더 세분화하면 효과적입니다:
– 30-60일 미활동: 이탈 위험 고객
– 60-90일 미활동: 휴면 고객
– 90-180일 미활동: 장기 휴면 고객
– 180일 이상 미활동: 이탈 고객
각 세그먼트에 다른 메시지와 인센티브를 제공합니다. 이탈 위험 고객에게는 “요즘 뜸하시네요”라는 가벼운 리마인더를, 휴면 고객에게는 특별 할인을, 장기 휴면 고객에게는 더 큰 할인을, 이탈 고객에게는 “다시 돌아오시면 특별한 혜택을 드립니다”라는 강력한 제안을 합니다.
윈백(Win-back) 시퀀스
휴면 고객을 깨우는 윈백 시퀀스를 Make로 자동화합니다.
1단계 (휴면 30일): 부드러운 리마인더. “보고 싶었어요”라는 감성적 메시지와 함께 최근 신상품이나 인기 상품을 소개합니다.
둘째, 반송(Bounce)을 관리합니다. 존재하지 않는 주소(Hard Bounce)로 계속 발송하면 평판이 하락합니다. Hard Bounce가 발생하면 즉시 해당 주소를 리스트에서 제거합니다. Make에서 이메일 발송 후 Bounce 여부를 확인하고 자동으로 리스트를 정리하는 시나리오를 구축할 수 있습니다.
셋째, 일관된 발송량을 유지합니다. 평소 1,000통을 발송하다가 갑자기 10,000통을 발송하면 의심을 받습니다. 발송량을 늘려야 한다면 점진적으로 증가시킵니다.
스팸 필터 통과 전략
스팸 필터에 걸리지 않으려면 몇 가지 주의사항이 있습니다:
– 제목에 “무료”, “할인”, “긴급” 같은 단어를 과도하게 사용하지 않습니다
– 모든 글자를 대문자로 쓰지 않습니다 (예: “FREE OFFER”)
– 느낌표를 여러 개 연속으로 쓰지 않습니다 (예: “지금 바로!!!”)
– 이미지만으로 구성된 이메일을 피합니다. 텍스트와 이미지 비율을 60:40 정도로 유지합니다
– SPF, DKIM, DMARC 인증을 설정합니다
– 구독 취소 링크를 명확히 표시합니다
고급 세그멘테이션 전략
효과적인 이메일 마케팅의 핵심은 세그멘테이션입니다. 모든 고객에게 같은 이메일을 보내는 대신, 각 세그먼트에 맞춤화된 메시지를 보내면 효과가 극대화됩니다.
RFM 분석 기반 세그먼트
RFM은 Recency(최근성), Frequency(빈도), Monetary(금액)의 약자로, 고객을 분류하는 대표적인 방법입니다.
– Recency: 마지막 구매로부터 경과한 시간
– Frequency: 일정 기간 동안의 구매 횟수
– Monetary: 일정 기간 동안의 총 구매 금액
각 지표를 1-5점으로 점수화하면 고객을 125개(5×5×5) 그룹으로 분류할 수 있습니다. 실무에서는 이를 단순화해서 VIP(5,5,5), 충성고객(4-5,4-5,*), 이탈위험(1-2,*,*), 신규고객(*,1,*) 등으로 분류합니다.
Make에서 RFM 분석을 구현하려면:
Schedule(매주) → Database/API(주문 데이터 조회) → Aggregate(고객별 RFM 점수 계산) → Data Store(세그먼트 업데이트)
계산된 세그먼트를 기반으로 각 그룹에 다른 이메일을 발송합니다. VIP에게는 독점 혜택을, 이탈위험 고객에게는 윈백 캠페인을, 신규고객에게는 온보딩 시리즈를 보냅니다.
마무리: 이메일 자동화의 ROI
이메일 자동화에 투자하는 시간과 비용은 충분히 회수됩니다. 자동화 없이 수작업으로 하려면 전담 인력이 필요하지만, Make로 자동화하면 한 번 설정해놓으면 24시간 365일 작동합니다.
측정 가능한 효과만 봐도 인상적입니다. 장바구니 이탈 복구로 10-15% 추가 매출, 리뷰 요청 자동화로 리뷰 수 3배 증가, 재구매 유도로 고객 생애 가치 20% 향상. 이런 수치들이 쌓이면 연간 매출에서 큰 차이를 만들어냅니다.
오늘 소개한 시나리오 중 하나만이라도 구현해보세요. 가장 추천하는 시작점은 장바구니 이탈 복구입니다. 구현이 비교적 간단하면서 효과는 즉시 확인할 수 있습니다. 한 번 성공을 경험하면 더 많은 자동화를 구축하고 싶어질 것입니다.
Make(구 Integromat)로 자동화 시나리오를 만들다 보면 반드시 마주치는 것이 바로 에러입니다. 처음에는 당황스럽고, 어디서부터 손을 대야 할지 막막하게 느껴집니다. 하지만 Make의 에러 시스템을 제대로 이해하면, 오히려 에러는 시나리오를 더 견고하게 만드는 기회가 됩니다. 이 글에서는 Make에서 발생하는 모든 유형의 에러와 그 해결법을 체계적으로 정리합니다.
Make 에러의 기본 구조 이해하기
Make에서 에러가 발생하면 시나리오 실행이 중단됩니다. 이때 Make는 에러에 대한 상세한 정보를 제공하는데, 이 정보를 제대로 읽는 것이 해결의 첫걸음입니다. 에러 메시지는 크게 세 부분으로 구성됩니다: 에러 유형(Type), 에러 메시지(Message), 그리고 발생 위치(Module)입니다.
에러 유형은 ConnectionError, DataError, RateLimitError, RuntimeError 등으로 분류됩니다. 각 유형은 문제의 원인을 대략적으로 알려줍니다. ConnectionError는 외부 서비스와의 연결 문제, DataError는 데이터 형식이나 값의 문제, RateLimitError는 API 호출 제한 초과, RuntimeError는 시나리오 로직의 문제를 의미합니다.
에러 메시지는 구체적인 원인을 설명합니다. 예를 들어 “The requested resource was not found”라는 메시지는 요청한 데이터가 존재하지 않는다는 의미입니다. 이 메시지를 정확히 읽으면 대부분의 문제를 파악할 수 있습니다.
발생 위치는 어느 모듈에서 에러가 발생했는지 보여줍니다. Make의 시나리오 화면에서 에러가 발생한 모듈은 빨간색으로 표시되며, 클릭하면 상세 정보를 확인할 수 있습니다.
ConnectionError: 연결 오류 완벽 해결
ConnectionError는 가장 흔하게 발생하는 에러 유형입니다. 외부 서비스(Google, Slack, Notion 등)와의 연결이 끊어졌거나, 인증 정보가 만료되었을 때 발생합니다.
인증 토큰 만료 문제
OAuth 방식으로 연결된 서비스는 일정 시간이 지나면 토큰이 만료됩니다. Google의 경우 액세스 토큰은 1시간, 리프레시 토큰은 6개월 정도 유효합니다. 토큰이 만료되면 “Invalid credentials” 또는 “Token has been expired or revoked” 에러가 발생합니다.
해결 방법은 간단합니다. Make의 Connections 메뉴로 이동해서 해당 연결을 찾고, “Reauthorize” 버튼을 클릭합니다. 그러면 해당 서비스의 로그인 화면이 나타나고, 다시 인증하면 새로운 토큰이 발급됩니다. 주의할 점은 반드시 원래 연결할 때 사용했던 계정으로 로그인해야 한다는 것입니다.
API 키 문제
API 키 방식의 연결에서는 키가 비활성화되거나, 권한이 변경되었을 때 에러가 발생합니다. “Invalid API key” 또는 “Unauthorized” 메시지가 나타납니다. 이 경우 해당 서비스의 관리자 페이지에서 API 키 상태를 확인하고, 필요하면 새 키를 발급받아 Make 연결 설정에서 업데이트해야 합니다.
서비스 일시 장애
외부 서비스 자체에 장애가 발생하면 Make에서도 연결 에러가 발생합니다. “Service temporarily unavailable” 또는 “Connection timed out” 메시지가 나타납니다. 이런 경우 해당 서비스의 상태 페이지(예: status.google.com, status.notion.so)를 확인하고, 서비스가 복구될 때까지 기다려야 합니다.
일시적인 장애에 대비하려면 Error Handler를 설정하는 것이 좋습니다. Break 모듈을 사용해서 에러 발생 시 일정 시간 후 재시도하도록 설정할 수 있습니다. 예를 들어 첫 번째 실패 후 1분 대기, 두 번째 실패 후 5분 대기, 세 번째 실패 후 30분 대기하는 식으로 점진적 재시도 로직을 구성할 수 있습니다.
DataError: 데이터 오류 해결법
DataError는 모듈에 전달되는 데이터의 형식이나 값이 올바르지 않을 때 발생합니다. 자동화에서 가장 까다로운 에러 유형 중 하나입니다.
필수 필드 누락
“Required field is missing” 에러는 모듈이 필수로 요구하는 필드에 값이 없을 때 발생합니다. 예를 들어 이메일 발송 모듈에서 수신자 주소가 비어있으면 이 에러가 발생합니다.
해결 방법은 데이터 흐름을 추적하는 것입니다. 해당 필드에 매핑된 값이 어디서 오는지 확인하고, 소스 데이터에 값이 있는지 검증합니다. 값이 없을 수 있는 상황이라면, Set Variable 모듈이나 IF 조건문을 사용해서 기본값을 설정하거나, 값이 없을 때 해당 작업을 건너뛰도록 분기 처리합니다.
데이터 타입 불일치
“Expected type X but got type Y” 에러는 모듈이 기대하는 데이터 타입과 실제 전달된 타입이 다를 때 발생합니다. 가장 흔한 케이스는 숫자를 기대하는 필드에 문자열이 전달되는 경우입니다.
Make에서는 데이터 타입 변환 함수를 제공합니다. parseNumber() 함수는 문자열을 숫자로, toString() 함수는 숫자를 문자열로 변환합니다. formatDate() 함수는 날짜 형식을 변환할 때 사용합니다. 예를 들어 “123”이라는 문자열을 숫자로 변환하려면 {{parseNumber(“123”)}}처럼 사용합니다.
날짜 형식 오류
날짜 관련 에러는 특히 자주 발생합니다. 각 서비스마다 요구하는 날짜 형식이 다르기 때문입니다. Google Calendar는 ISO 8601 형식(2024-01-15T10:00:00Z)을 요구하고, 일부 서비스는 Unix 타임스탬프를 요구합니다.
Make의 formatDate() 함수를 활용하면 원하는 형식으로 변환할 수 있습니다. 예를 들어 {{formatDate(now; “YYYY-MM-DD”)}}는 “2024-01-15” 형식의 날짜를, {{formatDate(now; “X”)}}는 Unix 타임스탬프를 반환합니다. parseDate() 함수는 반대로 문자열을 날짜 객체로 변환합니다.
배열 처리 오류
단일 값을 기대하는 필드에 배열이 전달되거나, 배열을 기대하는 필드에 단일 값이 전달되면 에러가 발생합니다. “Expected array but got object” 또는 “Cannot iterate over non-array value” 같은 메시지가 나타납니다.
배열을 단일 값으로 변환하려면 first() 함수로 첫 번째 요소를, last() 함수로 마지막 요소를 추출할 수 있습니다. 또는 get() 함수로 특정 인덱스의 요소를 가져올 수 있습니다. 반대로 단일 값을 배열로 만들려면 [{{value}}] 형태로 감싸면 됩니다.
RateLimitError: API 호출 제한 극복하기
모든 외부 서비스는 API 호출 횟수를 제한합니다. 이 제한을 초과하면 RateLimitError가 발생하고, “Too many requests” 또는 “Rate limit exceeded” 메시지가 나타납니다.
주요 서비스별 API 제한
Google APIs는 일반적으로 분당 60회, 일당 10,000회 정도의 제한이 있습니다. Gmail API는 일당 발송 제한이 500통(무료 계정) 또는 2,000통(Workspace)입니다. Google Sheets API는 분당 읽기 60회, 쓰기 60회로 제한됩니다.
Slack API는 Tier별로 다른 제한이 적용됩니다. Tier 1 메서드는 분당 1회, Tier 2는 분당 20회, Tier 3는 분당 50회, Tier 4는 분당 100회입니다. 메시지 발송(chat.postMessage)은 Tier 3에 해당해서 분당 50회까지 가능합니다.
Notion API는 초당 3회, 분당 90회로 제한됩니다. 대량의 데이터를 처리할 때는 이 제한을 고려해서 시나리오를 설계해야 합니다.
Rate Limit 회피 전략
첫 번째 전략은 Sleep 모듈을 활용한 호출 간격 조절입니다. 각 API 호출 사이에 Sleep 모듈을 넣어 일정 시간 대기하게 하면 제한에 걸리지 않습니다. 예를 들어 Google Sheets에서 분당 60회 제한이 있다면, 각 호출 사이에 1초씩 대기하면 안전합니다.
두 번째 전략은 배치 처리입니다. 100개의 행을 하나씩 추가하면 100번의 API 호출이 필요하지만, Google Sheets의 “Add Multiple Rows” 모듈을 사용하면 1번의 호출로 처리할 수 있습니다. 가능하면 항상 배치 처리 모듈을 활용하세요.
세 번째 전략은 Error Handler와 Retry 설정입니다. Rate Limit 에러가 발생하면 일정 시간 후 자동으로 재시도하도록 설정합니다. Make의 Break 모듈을 사용하면 에러 발생 시 지정된 시간만큼 대기 후 재시도합니다. 보통 60초 대기 후 재시도하면 대부분의 Rate Limit이 해제됩니다.
네 번째 전략은 시나리오 실행 스케줄 분산입니다. 대량 데이터를 처리하는 시나리오를 여러 개의 작은 시나리오로 나누고, 실행 시간을 분산시킵니다. 예를 들어 1,000건의 데이터를 한 번에 처리하는 대신, 200건씩 5번에 나눠서 각각 다른 시간에 실행하면 Rate Limit을 피할 수 있습니다.
RuntimeError: 실행 오류 디버깅
RuntimeError는 시나리오 로직 자체의 문제로 발생합니다. 무한 루프, 메모리 초과, 실행 시간 초과 등이 해당됩니다.
무한 루프 방지
시나리오가 무한 루프에 빠지면 “Cycle limit exceeded” 에러가 발생합니다. Make는 기본적으로 하나의 시나리오 실행에서 최대 10,000번의 반복(cycle)만 허용합니다.
무한 루프의 가장 흔한 원인은 Webhook 트리거와 해당 서비스 업데이트의 조합입니다. 예를 들어 Google Sheets의 행이 업데이트될 때 트리거되는 시나리오에서 같은 시트의 행을 업데이트하면, 그 업데이트가 다시 트리거를 발생시켜 무한 루프가 됩니다.
이를 방지하려면 업데이트 조건을 명확히 해야 합니다. 특정 컬럼 값이 변경되었을 때만 실행하도록 Filter를 추가하거나, 처리 완료를 표시하는 플래그 컬럼을 만들어서 이미 처리된 행은 건너뛰도록 합니다.
실행 시간 초과
Make의 시나리오 실행 시간은 플랜에 따라 다릅니다. Free 플랜은 5분, Pro 플랜은 40분, Teams 플랜은 2시간까지 실행할 수 있습니다. 이 시간을 초과하면 “Operation timeout” 에러가 발생합니다.
대량 데이터를 처리할 때는 실행 시간을 고려해서 설계해야 합니다. 한 번에 모든 데이터를 처리하는 대신, 배치 단위로 나누어 여러 번 실행하는 것이 안전합니다. Data Store를 활용해서 마지막으로 처리한 위치를 저장하고, 다음 실행 때 그 지점부터 이어서 처리하는 방식이 효과적입니다.
메모리 초과
시나리오에서 처리하는 데이터가 너무 크면 “Memory limit exceeded” 에러가 발생합니다. 특히 대용량 파일을 다루거나, 수만 개의 레코드를 한 번에 처리할 때 발생합니다.
해결 방법은 데이터를 청크(chunk) 단위로 나누어 처리하는 것입니다. 예를 들어 10,000행의 데이터를 처리해야 한다면, 1,000행씩 10번에 나누어 처리합니다. Iterator 모듈과 Aggregator 모듈을 활용하면 데이터를 분할하고 다시 합칠 수 있습니다.
Error Handler 완벽 설정 가이드
Make의 강력한 기능 중 하나가 Error Handler입니다. 에러가 발생했을 때 시나리오가 완전히 중단되는 대신, 지정된 로직을 실행하도록 할 수 있습니다.
Error Handler 추가하기
모듈에 Error Handler를 추가하려면 해당 모듈을 우클릭하고 “Add Error Handler”를 선택합니다. 그러면 에러 발생 시 실행될 경로가 추가됩니다. 이 경로에 원하는 모듈들을 배치할 수 있습니다.
Error Handler 유형
Ignore: 에러를 무시하고 다음 모듈로 진행합니다. 데이터가 없어도 괜찮은 경우에 사용합니다. 예를 들어 사용자 프로필 이미지를 가져오는데 이미지가 없는 사용자도 있다면, 이 에러는 무시해도 됩니다.
Resume: 에러가 발생한 모듈의 출력을 대체값으로 지정하고 계속 진행합니다. 예를 들어 환율 API 호출이 실패하면 기본 환율값을 사용하도록 설정할 수 있습니다.
Break: 현재 실행을 중단하고, 나중에 재시도합니다. 일시적인 서비스 장애나 Rate Limit에 적합합니다. 재시도 간격과 최대 재시도 횟수를 설정할 수 있습니다.
Rollback: 해당 실행에서 이전에 수행된 모든 작업을 롤백합니다. 트랜잭션 처리가 필요한 경우에 사용합니다. 단, 모든 서비스가 롤백을 지원하지는 않습니다.
Commit: 에러가 발생해도 이전까지의 작업은 유지하고, 해당 실행만 중단합니다. 부분 성공을 허용하는 경우에 사용합니다.
조건부 Error Handler
Error Handler 경로에 Router를 추가하면 에러 유형에 따라 다른 처리를 할 수 있습니다. 예를 들어 Rate Limit 에러면 1분 대기 후 재시도하고, 인증 에러면 관리자에게 알림을 보내고, 데이터 에러면 해당 데이터를 스킵하는 식으로 분기할 수 있습니다.
에러 유형은 {{error.type}} 변수로, 에러 메시지는 {{error.message}} 변수로 접근할 수 있습니다. Filter에서 이 변수들을 사용해서 조건을 설정합니다.
디버깅 실전 테크닉
Execution History 활용
Make의 Execution History는 가장 강력한 디버깅 도구입니다. 각 실행의 상세 로그를 확인할 수 있고, 모든 모듈의 입력값과 출력값을 볼 수 있습니다. 에러가 발생하면 먼저 Execution History에서 해당 실행을 찾아 어느 시점에서 문제가 발생했는지 파악합니다.
각 모듈의 입력과 출력을 순차적으로 확인하면서 예상과 다른 값이 있는지 찾습니다. 특히 null 값이나 빈 배열, 예상과 다른 데이터 타입이 문제의 원인인 경우가 많습니다.
Watch Module 활용
시나리오 시작 부분에 Watch 모듈(예: Google Sheets Watch Rows)을 사용하면 트리거 데이터를 확인할 수 있습니다. Watch 모듈은 마지막 실행 이후 변경된 데이터만 가져오므로, 테스트할 때는 “Choose where to start” 옵션을 사용해서 특정 시점부터 다시 가져오도록 설정합니다.
Set Variable로 중간값 확인
복잡한 계산이나 데이터 변환 과정을 디버깅할 때는 Set Variable 모듈을 중간에 추가해서 값을 저장합니다. 그러면 Execution History에서 각 단계의 값을 확인할 수 있습니다. 문제가 해결되면 디버깅용 모듈은 제거합니다.
Test Run 기능
시나리오 편집 화면에서 “Run once” 버튼을 클릭하면 테스트 실행을 할 수 있습니다. 이때 Watch 모듈은 가장 최근 데이터 하나만 가져오므로 빠르게 테스트할 수 있습니다. 특정 모듈만 테스트하려면 해당 모듈을 우클릭하고 “Run this module only”를 선택합니다.
자주 발생하는 에러와 해결법 모음
“Bundle A could not be mapped to bundle B”
이 에러는 Iterator와 Aggregator 사이의 데이터 흐름이 올바르지 않을 때 발생합니다. Aggregator는 반드시 Iterator와 쌍으로 사용되어야 하며, Aggregator의 Source Module 설정에서 올바른 Iterator를 선택해야 합니다.
“The requested resource was not found” (404)
요청한 리소스(파일, 문서, 레코드 등)가 존재하지 않을 때 발생합니다. 원인은 크게 세 가지입니다: 1) ID가 잘못됨, 2) 리소스가 삭제됨, 3) 접근 권한이 없음. 해당 서비스에서 직접 리소스를 확인하고, ID가 정확한지, 연결된 계정에 접근 권한이 있는지 확인합니다.
“Invalid JSON” 또는 “Unexpected token”
JSON 파싱 에러입니다. HTTP 모듈로 API를 호출했는데 응답이 JSON이 아닌 경우(예: HTML 에러 페이지)에 자주 발생합니다. API 엔드포인트와 헤더 설정이 올바른지 확인하고, 응답 내용을 직접 확인해봅니다.
“ScenarioTimeout: Maximum execution time exceeded”
시나리오 실행 시간이 플랜의 제한을 초과했습니다. 데이터를 청크로 나누어 처리하거나, 더 높은 플랜으로 업그레이드해야 합니다. 또는 시나리오를 여러 개로 분할하고 Webhook으로 연결하는 방법도 있습니다.
“Duplicate entry” 또는 “UNIQUE constraint failed”
데이터베이스나 시트에 이미 존재하는 값을 다시 추가하려고 할 때 발생합니다. Search 모듈을 먼저 실행해서 중복 여부를 확인한 후, 없는 경우에만 추가하도록 분기 처리합니다. 또는 Upsert(있으면 업데이트, 없으면 추가) 기능을 제공하는 모듈을 사용합니다.
에러 알림 자동화 구축하기
시나리오에서 에러가 발생하면 즉시 알림을 받을 수 있도록 설정하는 것이 좋습니다. Make에서 제공하는 기본 이메일 알림 외에도, 직접 알림 시나리오를 구축할 수 있습니다.
Slack 알림 설정
에러 발생 시 Slack 채널로 알림을 보내는 시나리오를 만들 수 있습니다. Error Handler에 Slack의 “Send a Message” 모듈을 연결하고, 에러 정보(시나리오 이름, 에러 유형, 에러 메시지, 발생 시간)를 포함한 메시지를 보내도록 설정합니다.
모든 에러를 Google Sheets나 Airtable에 기록하면 에러 패턴을 분석할 수 있습니다. Error Handler에서 에러 정보를 스프레드시트에 추가하는 모듈을 연결합니다. 시간이 지나면 어떤 에러가 자주 발생하는지, 특정 시간대에 에러가 집중되는지 등의 패턴을 파악할 수 있습니다.
예방이 최선: 에러 방지 설계 원칙
에러를 해결하는 것보다 에러를 방지하는 것이 더 중요합니다. 시나리오 설계 단계에서 몇 가지 원칙을 지키면 에러 발생을 크게 줄일 수 있습니다.
방어적 데이터 처리
외부에서 받는 모든 데이터는 예상과 다를 수 있다고 가정합니다. 필수 필드가 비어있을 수 있고, 데이터 타입이 다를 수 있고, 형식이 일관되지 않을 수 있습니다. ifempty() 함수를 사용해서 빈 값에 대한 기본값을 설정하고, 데이터 타입 변환 함수를 적극 활용합니다.
점진적 복잡도 증가
처음부터 복잡한 시나리오를 만들지 않습니다. 가장 기본적인 흐름부터 시작해서 테스트하고, 점차 기능을 추가합니다. 각 단계에서 테스트를 철저히 해서 문제가 발생하면 바로 원인을 파악할 수 있게 합니다.
모듈화 설계
하나의 거대한 시나리오보다 여러 개의 작은 시나리오가 관리하기 쉽습니다. 각 시나리오는 하나의 명확한 목적을 가지고, 시나리오 간에는 Webhook이나 Data Store로 데이터를 전달합니다. 이렇게 하면 에러가 발생해도 영향 범위가 제한되고, 디버깅도 쉬워집니다.
충분한 테스트
시나리오를 활성화하기 전에 다양한 케이스로 테스트합니다. 정상 케이스뿐만 아니라 에지 케이스(빈 데이터, 특수 문자, 대용량 데이터 등)도 테스트합니다. “Run once”로 단건 테스트를 하고, 문제가 없으면 소량의 실제 데이터로 테스트한 후, 최종적으로 전체 데이터로 테스트합니다.
마무리: 에러는 성장의 기회
Make에서 에러를 만나면 좌절하기보다 학습의 기회로 삼으세요. 각 에러를 해결하면서 시스템에 대한 이해가 깊어지고, 더 견고한 자동화를 만들 수 있게 됩니다. 이 글에서 다룬 내용을 참고해서 에러를 체계적으로 분석하고 해결하면, 어떤 에러든 두렵지 않게 될 것입니다. 자동화 전문가가 되는 길은 수많은 에러를 해결하는 과정 그 자체입니다.
자동화 도구를 배우면 흥미로운 현상이 발생합니다. 모든 것을 자동화하고 싶은 강렬한 욕구가 생기는 것입니다. “이것도 자동화할 수 있지 않을까?”, “저것도 Make로 연결하면 되겠네” 하는 생각이 끊이지 않습니다. 하지만 여기에 함정이 있습니다.
모든 것을 자동화하려다 보면, 정작 자동화 자체에 많은 시간을 쓰게 됩니다. 복잡한 시나리오를 구축하고, 예외 상황을 처리하고, 유지보수하는 데 드는 시간이 절약되는 시간보다 많아질 수 있습니다. 이것이 바로 “자동화의 역설”입니다.
이 글에서는 시간을 진정으로 절약하는 전략적 자동화 방법론을 다룹니다. 무엇을 자동화해야 하고 무엇을 하지 말아야 하는지, 어떻게 우선순위를 정해야 하는지, 그리고 자동화의 ROI를 어떻게 측정하고 최적화하는지 상세히 설명하겠습니다.
1장: 자동화 ROI 분석
1.1 자동화의 숨겨진 비용
자동화에는 시간 절약이라는 명확한 이점이 있지만, 동시에 여러 비용이 수반됩니다. 이를 정확히 이해해야 합니다.
초기 구축 비용으로는 시나리오 설계 시간, 모듈 설정 시간, 테스트 시간, 예외 상황 처리 구현 시간이 있습니다. 간단한 자동화도 1-2시간, 복잡한 것은 며칠이 걸릴 수 있습니다.
유지보수 비용으로는 API 변경에 따른 수정, 연결 재인증, 에러 모니터링 및 대응, 기능 추가/수정 요청 처리가 있습니다. 한 번 만들면 끝이 아닙니다. 지속적인 관리가 필요합니다.
플랫폼 비용으로는 Make 구독료(월 $9-$99+), 연동 서비스의 API 비용(예: OpenAI), 관련 SaaS 도구 비용이 있습니다.
기회비용도 고려해야 합니다. 자동화 구축에 쓴 시간은 다른 업무에 쓸 수 없습니다. 복잡한 자동화에 집중하다 더 중요한 업무를 놓칠 수 있습니다.
1.2 ROI 계산 프레임워크
자동화의 가치를 정량적으로 평가하는 공식을 살펴봅시다.
자동화 ROI 공식은 다음과 같습니다: ROI = (절약 시간 × 시간당 가치 × 기간) – (구축 비용 + 유지보수 비용 + 플랫폼 비용)
구체적인 예시로 이메일 자동 분류 시스템을 보면, 절약 시간은 일 20분 × 250일(연간) = 83시간입니다. 시간당 가치를 시급 3만원으로 계산하면 연간 249만원입니다. 구축 비용은 8시간 × 3만원 = 24만원입니다. 유지보수 비용은 월 1시간 × 12개월 × 3만원 = 36만원입니다. 플랫폼 비용은 월 $29 × 12개월 = 약 46만원입니다. 연간 ROI = 249만원 – (24만원 + 36만원 + 46만원) = 143만원입니다. 긍정적 ROI이므로 자동화할 가치가 있습니다.
1.3 2분 규칙
복잡한 계산 없이 빠르게 판단할 수 있는 경험 법칙이 있습니다.
2분 규칙은 “자동화 구축에 N시간이 걸린다면, 최소 N시간 이상의 시간을 절약할 수 있어야 한다”는 것입니다.
더 보수적인 기준은 “구축 시간의 2배 이상을 절약해야 한다”입니다. 유지보수와 예상치 못한 문제를 고려한 것입니다.
예시를 보면, 구축에 2시간이 예상되는 자동화가 월 30분을 절약한다면, 손익분기점은 4개월 후입니다. 2배 기준으로는 8개월 후입니다. 해당 업무가 8개월 이상 지속될지 고려해야 합니다.
2장: 자동화 우선순위 매트릭스
2.1 빈도-복잡도 매트릭스
업무를 두 가지 축으로 분류하면 자동화 우선순위가 명확해집니다.
고빈도 + 저복잡도(1순위, 즉시 자동화)는 매일 또는 주 여러 번 발생하고, 규칙이 명확하고 단순합니다. 예: 이메일 알림, 데이터 백업, 정기 리포트, 폼 응답 처리가 있습니다. 이 영역이 가장 높은 ROI를 제공합니다. 구축도 쉽고 효과도 빠르게 체감됩니다.
고빈도 + 고복잡도(2순위, 계획적 자동화)는 자주 발생하지만, 복잡한 로직이나 예외 처리가 필요합니다. 예: 고객 온보딩, 다채널 마케팅, 복잡한 승인 워크플로우가 있습니다. ROI는 높지만 구축에 시간이 걸립니다. 단계적으로 접근하세요.
저빈도 + 저복잡도(3순위, 선택적 자동화)는 가끔 발생하고, 단순하지만 자주 하지 않습니다. 예: 월간 체크리스트, 분기 정산 준비가 있습니다. 자동화해도 절약되는 시간이 적습니다. 다른 우선순위를 먼저 처리하세요.
저빈도 + 고복잡도(자동화 비추천)는 드물게 발생하고, 복잡하거나 예외가 많습니다. 예: 일회성 프로젝트, 고도의 판단이 필요한 작업이 있습니다. 구축 비용 대비 효과가 없습니다. 수동으로 처리하세요.
2.2 영향도 분석
빈도와 복잡도 외에 영향도도 고려해야 합니다.
병목 해소 효과를 살펴보면, 해당 업무가 다른 업무의 진행을 막고 있나요? 예를 들어, 승인 프로세스가 늦어지면 전체 프로젝트가 지연됩니다. 이런 병목을 해소하는 자동화는 우선순위가 높습니다.
오류 감소 효과도 중요합니다. 수동 처리 시 오류가 자주 발생하나요? 데이터 입력 실수, 누락 등이 잦은 업무는 자동화로 정확성을 높일 수 있습니다. 오류로 인한 비용(수정 시간, 고객 불만족 등)도 ROI에 포함하세요.
확장성도 고려합니다. 업무량이 증가할 예정인가요? 현재는 주 10건이지만 6개월 후 주 100건이 예상된다면 미리 자동화하세요. 업무량에 비례해 효과가 증가합니다.
2.3 실전 우선순위 도출
실제 업무에 적용하는 방법을 알아봅시다.
1단계 업무 리스트업에서 일주일간 수행한 모든 업무를 기록합니다. 각 업무의 소요 시간을 측정합니다. 빈도(일/주/월)를 파악합니다.
2단계 분류에서 각 업무를 매트릭스에 배치합니다. 빈도와 복잡도를 기준으로 사분면에 배치합니다.
3단계 점수 산정에서 각 업무에 자동화 점수를 부여합니다. 점수 = (빈도 점수) × (시간 절약) × (영향도) / (복잡도)로 계산합니다.
4단계 선정에서 점수가 높은 상위 3-5개를 1차 자동화 대상으로 선정합니다. 그 중 가장 단순한 것부터 시작합니다.
3장: 자동화하면 안 되는 것들
3.1 인간의 판단이 필수인 업무
일부 업무는 자동화의 대상이 아닙니다. 무리하게 자동화하면 오히려 문제가 생깁니다.
고도의 창의성이 필요한 업무는 자동화하기 어렵습니다. 브랜드 전략 수립, 창의적 컨텐츠 기획, 디자인 결정 등이 해당합니다. AI가 보조할 수는 있지만 완전 자동화는 어렵습니다.
복잡한 협상이나 관계 관리도 마찬가지입니다. 중요 거래처와의 협상, 민감한 인사 문제, 갈등 해결 등은 사람의 공감 능력과 상황 판단이 필수입니다.
윤리적 판단이 필요한 결정도 자동화할 수 없습니다. 해고 결정, 법적 대응, 위기 상황 대응 등은 규칙으로 정의하기 어렵고 결과에 대한 책임 문제가 있습니다.
3.2 예외가 너무 많은 업무
예외가 많은 업무는 자동화의 복잡도를 급격히 높입니다.
80/20 법칙을 적용하면, 전체 케이스의 80%가 규칙적이고, 20%가 예외인 경우 80%만 자동화하고 20%는 수동 처리하는 것이 효율적입니다. 예외 20%까지 자동화하려면 복잡도가 5배 이상 증가합니다.
자동화와 수동의 하이브리드 방식을 사용할 수 있습니다. 일반 케이스는 자동 처리하고, 예외 케이스는 담당자에게 라우팅합니다. 이것이 가장 현실적인 접근법입니다.
3.3 자동화 부적합 신호
다음 신호가 보이면 자동화를 재고하세요.
“매번 다르다”는 첫 번째 신호입니다. 동일한 업무인데 매번 처리 방식이 달라진다면 규칙화가 어렵습니다.
“판단이 필요하다”는 두 번째 신호입니다. 단순 조건 분기가 아닌 종합적 판단이 필요하면 자동화가 어렵습니다.
“자주 바뀐다”는 세 번째 신호입니다. 프로세스 자체가 자주 변경된다면 자동화를 유지하기 어렵습니다.
“에러 허용이 안 된다”는 네 번째 신호입니다. 한 번의 실수도 허용되지 않는 크리티컬한 업무라면 사람의 최종 검토가 필요합니다.
4장: 효과적인 자동화 설계 원칙
4.1 작게 시작하기
가장 중요한 원칙입니다. 처음부터 완벽한 시스템을 만들려 하지 마세요.
최소 기능 자동화(MFA, Minimum Functional Automation)로 시작합니다. 전체 프로세스의 가장 핵심적인 부분만 먼저 자동화하고, 검증 후 점진적으로 확장합니다.
예시를 보면, 고객 문의 자동화 전체 비전은 문의 접수, AI 분석, 자동 응답, 담당자 배정, 팔로업 리마인더를 포함합니다. 1단계 MFA로 문의 접수 시 슬랙 알림만 구현합니다. 2단계 확장으로 AI 분류를 추가합니다. 3단계 확장으로 간단한 자동 응답을 추가합니다. 4단계 확장으로 담당자 자동 배정을 추가합니다.
장점으로는 빠른 가치 실현이 있습니다. 1단계만으로도 가치를 제공합니다. 또한 검증된 기반 위에 구축할 수 있어 각 단계를 검증하고 다음으로 넘어갑니다. 유연한 수정이 가능해 초기에 방향 수정이 쉽습니다.
4.2 모듈화
하나의 거대한 시나리오보다 여러 개의 작은 시나리오가 낫습니다.
모듈화의 장점으로는 디버깅 용이성이 있습니다. 문제 발생 시 해당 모듈만 확인하면 됩니다. 재사용성 측면에서 공통 기능을 여러 곳에서 사용할 수 있습니다. 유지보수 용이성 측면에서 수정 시 영향 범위가 제한됩니다.
모듈화 방법으로는 기능별 분리가 있습니다. 데이터 수집, 처리, 저장, 알림을 별도 시나리오로 분리합니다. 웹훅 연결로 시나리오 간 데이터를 전달합니다. 공통 기능 추출로 여러 시나리오에서 사용하는 기능(예: 에러 로깅)을 별도 시나리오로 만듭니다.
4.3 에러에 대비하기
모든 자동화는 언젠가 실패합니다. 중요한 것은 실패에 어떻게 대응하느냐입니다.
예방적 조치로는 입력 데이터 검증이 있습니다. 예상치 못한 데이터가 들어오면 처리를 멈추고 알립니다. 연결 상태 확인으로 API 연결이 정상인지 주기적으로 체크합니다. Rate Limit 고려로 API 호출 제한을 염두에 두고 설계합니다.
탐지적 조치로는 에러 알림 설정이 있습니다. 에러 발생 즉시 담당자에게 알립니다. 실행 로그 모니터링으로 정기적으로 실행 기록을 확인합니다. 결과 검증으로 자동화 결과가 예상과 맞는지 확인하는 체크포인트를 둡니다.
대응적 조치로는 Graceful Degradation이 있습니다. 부분 실패 시에도 가능한 부분은 계속 진행합니다. 재시도 로직으로 일시적 오류는 자동 재시도합니다. 수동 처리 경로로 자동화가 실패하면 담당자가 수동 처리할 수 있는 경로를 확보합니다.
4.4 문서화
자동화는 만든 사람이 아니면 이해하기 어렵습니다. 문서화는 필수입니다.
필수 문서화 항목으로는 목적과 배경이 있습니다. 왜 이 자동화를 만들었는지 기록합니다. 트리거 조건으로 언제, 어떤 조건에서 실행되는지 기록합니다. 데이터 흐름으로 어떤 데이터가 어떻게 처리되는지 기록합니다. 예외 처리로 어떤 예외 상황이 있고 어떻게 처리되는지 기록합니다. 연락처로 문제 발생 시 누구에게 연락해야 하는지 기록합니다.
문서화 위치로는 Make의 시나리오 Notes 기능을 활용하거나, 노션 등의 문서 도구에 중앙 관리하거나, 코멘트를 적극 활용하여 복잡한 모듈에는 설명을 추가합니다.
5장: 시간 관리와 자동화의 결합
5.1 자동화가 만드는 시간의 가치
자동화로 절약한 시간을 어떻게 사용하느냐가 중요합니다. 단순히 시간을 절약하는 것이 목적이 아닙니다.
시간 절약의 목적은 고부가가치 활동에 집중하는 것입니다. 전략적 사고, 창의적 업무, 관계 구축, 학습과 성장에 시간을 쓰세요.
Pareto의 80/20 법칙을 적용하면, 결과의 80%는 노력의 20%에서 나옵니다. 자동화로 80%의 단순 업무를 줄이고, 남은 시간을 20%의 핵심 업무에 투자하세요.
5.2 자동화와 워크플로우 재설계
자동화는 단순히 기존 프로세스를 기계가 하게 만드는 것이 아닙니다. 프로세스 자체를 재설계하는 기회입니다.
Before: 수동 프로세스를 보면, 고객 문의가 들어오면 이메일을 확인하고 스프레드시트에 기록합니다. 그 다음 유형을 분류하고 담당자에게 할당하고 담당자가 이메일로 응답합니다. 그 후 응답 내용을 스프레드시트에 기록합니다.
나쁜 자동화는 위 프로세스를 그대로 자동화합니다. 단계가 많고 복잡합니다.
좋은 자동화는 프로세스를 재설계합니다. 고객 문의가 들어오면 AI가 즉시 분류하고 자동 응답 가능 여부를 판단합니다. 자동 응답이 가능하면 즉시 응답하고 그렇지 않으면 담당자에게 알립니다. 모든 기록은 자동으로 저장됩니다.
차이점을 보면, 불필요한 단계가 제거되었고 병렬 처리가 가능한 부분이 병렬화되었습니다. 사람의 개입이 필요한 부분만 사람이 처리합니다.
5.3 자동화 포트폴리오 관리
여러 자동화를 운영할 때 전체적인 관리가 필요합니다.
자동화 인벤토리를 유지하세요. 모든 자동화의 목록을 관리합니다. 각각의 목적, 상태, 담당자, 마지막 검토일을 기록합니다.
정기 검토를 수행합니다. 월 1회 정도 전체 자동화를 검토합니다. 아직 필요한가? 잘 작동하고 있는가? 개선할 점이 있는가?를 확인합니다.
폐기 기준을 정합니다. 더 이상 필요 없는 자동화는 과감히 폐기합니다. 유지보수 부담만 늘리는 좀비 자동화를 정리합니다.
6장: 조직에서의 자동화 전략
6.1 자동화 문화 구축
개인의 자동화를 넘어 조직 전체의 자동화 역량을 높이는 방법입니다.
자동화 챔피언을 육성합니다. 각 팀에서 자동화에 관심 있는 사람을 선발합니다. 교육과 리소스를 제공합니다. 그들이 팀 내 자동화를 주도하게 합니다.
성공 사례를 공유합니다. 자동화로 효과를 본 사례를 전사에 공유합니다. 구체적인 수치(절약 시간, 비용 절감)를 포함합니다. 다른 팀의 영감을 자극합니다.
자동화 요청 프로세스를 만듭니다. 누구나 자동화 아이디어를 제안할 수 있는 채널을 만듭니다. 정기적으로 검토하고 우선순위를 정합니다. 구현 결과를 피드백합니다.
6.2 자동화 거버넌스
조직 차원의 자동화가 많아지면 관리 체계가 필요합니다.
표준화로 명명 규칙, 문서화 양식, 에러 처리 방식을 통일합니다. 새로운 자동화도 일관된 방식으로 구축합니다.
권한 관리로 누가 자동화를 만들고 수정할 수 있는지 정합니다. 중요한 자동화는 검토 프로세스를 거칩니다.
감사 추적으로 어떤 자동화가 어떤 데이터를 처리하는지 추적합니다. 보안 및 컴플라이언스 요구사항을 충족합니다.
6.3 자동화와 직원 역량
자동화가 사람의 일자리를 대체한다는 우려가 있습니다. 하지만 올바른 접근법은 다릅니다.
증강(Augmentation) 관점에서 자동화는 사람을 대체하는 게 아니라 증강합니다. 단순 업무에서 해방되어 더 가치 있는 일을 할 수 있습니다. 사람의 판단력과 자동화의 효율성이 결합됩니다.
업스킬링(Upskilling)도 중요합니다. 자동화 시대에 필요한 역량을 개발합니다. 자동화 도구 활용 능력, 데이터 분석 능력, 문제 해결 능력이 해당합니다. 조직은 이런 교육 기회를 제공해야 합니다.
7장: 자동화의 미래
7.1 AI와 자동화의 융합
AI의 발전은 자동화의 가능성을 크게 확장하고 있습니다.
지능형 의사결정이 가능해집니다. 단순 조건 분기를 넘어 AI가 상황을 이해하고 판단합니다. 예: 고객 문의의 감정을 파악하여 대응 방식을 결정합니다.
자연어 인터페이스도 발전합니다. “지난주 매출 리포트 만들어줘”라고 말하면 자동화가 실행됩니다. 비기술자도 자동화를 쉽게 활용할 수 있습니다.
자가 학습 자동화도 나타납니다. 패턴을 학습하여 스스로 최적화합니다. 예외 상황을 학습하여 처리 능력이 향상됩니다.
7.2 하이퍼오토메이션
Gartner가 정의한 하이퍼오토메이션은 여러 자동화 기술의 결합입니다.
RPA(Robotic Process Automation)는 UI 기반의 자동화로 레거시 시스템과의 연동에 유용합니다. iPaaS(Integration Platform as a Service)는 Make, Zapier 같은 통합 플랫폼입니다. AI/ML은 지능형 의사결정을 지원합니다. 프로세스 마이닝은 실제 프로세스를 분석하여 자동화 기회를 발견합니다.
이들의 조합으로 더 복잡하고 포괄적인 자동화가 가능해집니다.
7.3 자동화 마인드셋
도구는 계속 발전할 것입니다. 중요한 것은 자동화적 사고방식을 갖추는 것입니다.
“이걸 자동화할 수 있을까?”라는 질문을 습관화하세요. 반복 업무를 발견하면 자동화 가능성을 평가합니다.
프로세스적 사고를 기르세요. 업무를 단계별로 분해하는 능력을 기릅니다. 어디서 병목이 생기는지, 어디를 개선할 수 있는지 파악합니다.
지속적 학습을 이어가세요. 새로운 도구와 기술을 계속 학습합니다. 자동화 커뮤니티에 참여하여 트렌드를 파악합니다.
결론: 전략적 자동화의 핵심
이 글에서 다룬 내용을 정리하면, 모든 것을 자동화할 필요는 없습니다. ROI를 계산하여 가치 있는 자동화에 집중하세요. 고빈도, 저복잡도 업무부터 시작하세요. 인간의 판단이 필수인 영역은 존중하세요. 작게 시작하여 점진적으로 확장하세요. 에러에 대비하고 문서화하세요. 절약한 시간을 고부가가치 활동에 투자하세요.
자동화는 목적이 아니라 수단입니다. 궁극적인 목적은 더 가치 있는 일에 집중하고, 더 나은 결과를 만들어내는 것입니다. 이 관점을 잃지 않는다면, 자동화는 여러분의 업무와 삶을 크게 향상시킬 것입니다.
오늘 당장 시작해보세요. 이 글을 읽은 후 바로 할 수 있는 액션은 1주일간 업무를 기록하고 분석하는 것입니다. 어떤 업무에 시간을 쓰고 있는지 파악하면, 자동화의 첫 번째 대상이 보일 것입니다.