Salesforce는 서버 간 연동을 비밀번호가 아니라 서명된 JWT로 인증합니다 — 그리고 MailInApp의 API 데이터 소스는 이 흐름을 그대로 구사합니다. 한 번 연결하면, KPI 스코어카드나 차트 블록이 실시간 Opportunity, Account, Contact 행에 바로 연동됩니다. 관리해야 할 리프레시 토큰도, 발송 전마다 다시 내보내야 할 CSV도 없습니다.
대부분의 "주간 파이프라인" 이메일은 리포트의 스크린샷이며, 누군가 붙여넣는 순간 이미 낡은 정보가 됩니다. 차트 블록을 Salesforce 기반 데이터 소스에 직접 연동한다는 것은 블록 자체의 수치가 실제 SOQL 쿼리에서 나온다는 뜻입니다 — 그리고 반복 발송은 발송할 때마다 그 쿼리를 새로 실행하므로, 월요일의 다이제스트는 실제로 월요일의 파이프라인을 반영합니다.
연결이 작동하는 방식
MailInApp
Connected App의 개인 키로 JWT에 서명합니다
Salesforce 토큰 엔드포인트
서명을 검증하고 액세스 토큰을 반환합니다
Salesforce REST API
베어러 토큰으로 인증되어 SOQL 쿼리를 실행합니다
내 이메일
KPI 스코어카드 & 차트 블록이 행에 실시간으로 연동됩니다
모든 단계는 발송할 때마다 서버 사이드에서 일어납니다. 비밀번호는 전혀 전송되지 않으며, 리프레시 토큰도 없습니다 — 낡은 토큰은 새 어설션에 서명함으로써 대체됩니다.
이는 Salesforce가 자신의 서버 간 연동을 위해 직접 문서화한 것과 동일한 JWT Bearer 흐름이며, Salesforce 전용으로 만들어진 별도의 연동이 아니라 MailInApp의 기존 API 데이터 소스용 OAuth2 인증 모드에 그대로 연결되어 있습니다.
Connected App을 한 번만 설정하기
Salesforce Setup에서 Connected App을 만들고, OAuth 설정을 활성화한 다음, Use digital signatures 아래에서 자체 서명 인증서를 업로드하세요 — 인증서는 Salesforce로, 짝이 되는 RSA 개인 키는 MailInApp으로 갑니다. Permitted Users를 Admin approved users are pre-authorized로 설정하세요. 이것이 바로 교환을 비대화형으로 만드는 부분입니다: 스크립트가 클릭해서 통과할 동의 화면이 존재하지 않습니다. Connected App의 Consumer Key와 조직의 My Domain URL을 기록해 두세요 — 둘 다 MailInApp 쪽 연결 설정에 입력합니다.
SOQL 쿼리로 향하게 하기
데이터 소스의 Endpoint는 REST 쿼리 URL이며, 쿼리 문자열이 곧 실제로 돌려받는 데이터입니다.
SELECT Name, Amount, StageName, CloseDate FROM Opportunity WHERE IsClosed = false
Data path를 records로 설정하세요 — Salesforce는 쿼리 결과를 records 배열로 감싸서 반환합니다. Owner.Email 같은 관계 필드는 중첩되어 반환되며 MailInApp의 행 파서에 의해 버려지므로, 쿼리는 평면 형태로 유지하세요. 나중에 필터링이나 병합에 담당자 식별자가 필요하다면 대신 OwnerId를 선택하세요.
병합 태그가 아니라 블록을 바로 연동하기
스튜디오의 데이터 패널에서 collection 역할로 이 연결을 프로젝트에 추가하세요 — 반복 블록이 사용하는 것과 동일한 연동입니다. 그 지점부터 KPI 스코어카드, 막대, 선, 원형 차트 블록이 각자의 인스펙터에서 직접 연동될 수 있습니다.
Amount에 합계 집계를 설정한 KPI 스코어카드는 실시간 "전체 미결 파이프라인" 수치가 됩니다.StageName으로 그룹화하고Amount를 시리즈(역시 합계 집계)로 설정한 막대 그래프는 단계별 파이프라인 내역이 됩니다.
두 블록 모두 직접 입력할 병합 태그가 하나도 필요하지 않습니다 — 연동이 그 일을 대신하며, 거래가 단계를 이동하거나 성사되어도 둘 다 계속 정확합니다.
예약 발송으로 보내기
매주 반복되는 발송은 발동할 때마다 SOQL 쿼리를 다시 실행하고 Salesforce의 현재 행에 맞춰 두 블록을 다시 렌더링합니다 — 같은 다이제스트 구조에, 매주 월요일 새로운 수치가, 아무도 수작업으로 다시 만들 필요 없이 반영됩니다. 각 Opportunity 자신의 Salesforce URL로 향하는 버튼 블록은 다이제스트를 읽는 사람에게 눈길을 끈 수치 뒤의 레코드를 한 번의 클릭으로 여는 방법을 제공합니다.
시작하기
JWT Bearer 흐름을 위한 인증서로 Salesforce Connected App을 만들고, Consumer Key, 연동 사용자명, 개인 키로 MailInApp의 데이터 소스 탭에서 연결한 다음, records를 데이터 경로로 하는 SOQL 쿼리로 엔드포인트를 지정하고, 스튜디오의 데이터 패널에서 KPI 스코어카드와 막대 그래프를 여기에 연동하세요. 필드별 전체 설정 방법은 Salesforce 연동 가이드를 참고하세요.