Documentation menu

Shopify

Shopify 스토어를 연결하면 고객을 MailInApp 연락처 목록으로 동기화하고, 실제 스토어 이벤트를 기준으로 여정을 트리거하며, 매출이 캠페인이나 변형(variant)으로 다시 귀속되는 것을 확인할 수 있습니다.

스토어 연결하기

설정 → 연동에서 스토어의 myshopify.com 도메인을 입력하고 Shopify 연결을 클릭합니다. 액세스를 승인하기 위해 Shopify 자체의 OAuth 화면으로 이동하게 됩니다. MailInApp은 read_customers, read_orders, read_products(모두 읽기 전용)와 함께, 아래 설명된 1회용 할인 코드를 발급할 수 있도록 write_discounts를 요청합니다 — 스토어의 상품, 주문, 고객 자체에 대한 쓰기 권한은 절대 요청하지 않습니다. 승인되면 MailInApp은 해당 스토어 전용 연락처 목록을 생성하고, 연결당 5,000명의 고객을 상한으로 하는 초기 고객 백필을 백그라운드에서 시작합니다. 그보다 고객 수가 많은 스토어는 이후에도 Shopify 자체의 웹훅을 통해 목록이 계속 늘어나며, 다만 상한을 넘는 부분에 대한 일회성 백필은 이루어지지 않습니다.

MailInApp 계정을 아직 만들지 않은 상태에서 Shopify 앱 스토어를 통해 직접 설치하면, MailInApp이 스토어 자체의 이메일 주소를 사용해 자동으로 계정을 프로비저닝합니다 — 이미 스토어가 연결된 상태로 로그인된 화면에 도착하게 됩니다.

Shopify 연결은 일회성 $30 요금이며, 이 흐름의 일부로 Shopify 자체의 Billing API를 통해 한 번 청구되고, (Free를 포함한) 모든 요금제에서 이용할 수 있습니다. 이후 앱을 제거하더라도 환불되지 않지만, 같은 MailInApp 계정에서 나중에 다시 연결하는 것은 무료입니다.

기능

  • 고객 동기화 — Shopify 고객은 이 연동 전용 연락처 목록으로 들어오며, 이후에는 주기적인 재폴링이 아니라 Shopify 자체의 웹훅(customers/create, 그리고 아래 트리거를 위한 checkouts/create, orders/paid)을 통해 최신 상태로 유지됩니다.
  • 여정 트리거 — 연결된 스토어는 여정의 장바구니 이탈 트리거(체크아웃을 시작했지만 완료하지 않음)와 구매 트리거(주문 결제 완료)를 발동시킬 수 있습니다. 그래서 웰컴 시리즈나 장바구니 이탈 자동화가 MailInApp 자체의 상품 블록 체크아웃뿐 아니라 실제 Shopify 활동을 기준으로도 동작할 수 있습니다. 여정을 참고하세요.
  • 매출 귀속 — 식별 가능한 경우, 주문 자체의 캠페인/변형 정보가 네이티브 체크아웃 주문이 이미 만들어내는 것과 동일한 응답 및 A/B 테스트 매출 수치에 반영됩니다.
  • 구매 이력 세그먼트 & 할인 오퍼 — 주문 항목이 고객과 함께 동기화되므로, 오디언스 필터가 "A와 B 사이의 날짜에 상품 X를 구매함"과 같은 조건을 매칭할 수 있고(구매 이력 참고), 프로젝트는 매칭된 수신자마다 1회용 Shopify 할인 코드를 발급해 자신의 스토어 체크아웃에서 사용하도록 할 수 있습니다(할인 오퍼 참고). 진행 중인 주문은 orders/paid 웹훅을 통해 자동으로 동기화됩니다. 이 기능이 출시되기 전에 연결된 스토어이거나 더 오래된 이력이 있는 스토어는 설정 → 연동에서 일회성 주문 이력 백필을 실행해야 하며, Shopify가 해당 스토어에 대해 전체 주문 이력을 별도로 승인하지 않은 이상 대략 지난 60일로 제한됩니다. 카탈로그에서 가져온 상품 블록은 오디언스 필터가 전혀 필요 없이, 그 상품 하나에만 적용되는 자체 품목별 할인을 독립적으로 발급할 수도 있습니다 — 스토어 네이티브 할인Shopify 상품 할인 코드를 참고하세요.
  • 스튜디오를 위한 상품 카탈로그 — 스토어의 실제 활성 상품 목록도 MailInApp에 동기화되며, 고객 정보와 동일한 주기로 자동 갱신됩니다(별도의 버튼 없음). 상품 블록스토어에서 가져오기 선택기는 이렇게 동기화된 카탈로그를 검색해, 실제 상품으로부터 블록의 이름·설명·이미지·가격을 채워 넣습니다 — 이는 실시간 연동이 아니라 일회성 복사이므로, 발송된 이메일의 내용이 검토했던 내용과 어긋날 일이 없습니다. 또한 각 상품 고유의 페이지(Shopify 핸들 기준)도 함께 동기화되며, 이용 가능한 경우 블록을 그 페이지로 바로 연결되는 외부 스토어 체크아웃으로 연결로 설정합니다 — 그래서 가져온 상품은 별도 설정 없이 바로 Shopify 스토어에서 판매할 준비가 됩니다. 대신 연결된 Stripe 계정으로 직접 결제를 받고 싶다면 수동으로 MailInApp 체크아웃으로 다시 전환하세요. 이 기능이 출시되기 전에 연결된 스토어는 Shopify가 요구하는 새로운 read_products 권한을 부여하기 위해 빠르게 연결 해제Shopify 연결을 다시 수행해야 합니다 — 그전까지는 선택기에 아무것도 표시되지 않습니다.

연결 상태 & 재연결

Shopify는 MailInApp에 단명(약 1시간 유효) 액세스 토큰과 회전하는 리프레시 토큰을 함께 발급하며, MailInApp은 백그라운드에서 이 한 쌍을 자동으로 갱신합니다 — 평상시에는 고객 동기화, 여정 트리거, 할인 발급이 별도 조치 없이 계속 작동합니다.

Shopify가 해당 리프레시 토큰을 취소하거나 무효화하는 경우 — 예를 들어 MailInApp 밖에서 앱이 제거되었다가 다시 설치되었거나, Shopify 관리자에서 수동으로 액세스를 취소했거나, 장기간의 비활성 상태로 토큰이 단순히 만료된 경우 — MailInApp은 오래된 자격 증명으로 조용히 재시도하는 대신 의도적으로 동작을 멈추며, 설정 → 연동에는 해당 스토어의 상태가 재연결 필요로 표시됩니다. 이는 버그 보고가 아니라 보안 안전장치입니다: MailInApp은 여러분이 Shopify 자체의 화면을 통해 새로운 OAuth 승인을 완료하지 않는 한, 여러분을 대신해 다시 인증을 진행하지 않습니다.

이 상태가 보이면 설정 → 연동에서 연결 해제를 클릭한 다음 다시 Shopify 연결을 클릭해 깨끗한 토큰 쌍을 발급받으세요. 몇 초밖에 걸리지 않으며, 일회성 연결 요금이 다시 청구되지 않고, 이미 동기화된 연락처나 주문에도 영향을 주지 않습니다 — 새 연결이 승인되면 동기화가 그대로 재개됩니다.

연결 해제하기

설정에서 연결 해제를 하면 동기화와 이후의 모든 웹훅 처리가 즉시 중단됩니다. 이미 동기화된 고객은 연락처 목록에 그대로 남아 있습니다 — 다른 프로젝트의 발송 대상으로 이미 사용되고 있을 수 있으므로, 연동을 연결 해제한다고 해서 연락처가 삭제되는 일은 없습니다. Shopify 쪽에서 앱을 제거하는 경우도 처음에는 동일하게 동작합니다. 약 48시간 후, Shopify 자체의 데이터 삭제 웹훅이 발동하면 동기화된 연락처와 장바구니 기록도 완전히 삭제됩니다 — 모든 Shopify 앱이 지켜야 하는 표준 유예 기간입니다.