상품 블록에서 하나의 상품을 위한 1회용 Shopify 할인 코드 발급하기

프로젝트 수준의 할인 오퍼는 스토어 전체(또는 상품 하나)에 적용되는 코드 하나로 오디언스 전체를 타겟팅합니다. 이것은 그보다 좁은, 블록 수준의 자매 기능입니다: 상품 블록 자체에 있는 할인으로, Shopify 카탈로그에서 가져온 실제 상품 하나에 연결되며, 이메일이 발송되는 순간 수신자마다 발급되고, 그 상품 자체의 페이지에서 바로 사용됩니다 — 구매 이력 세그먼트나 할인 오퍼 설정이 전혀 필요하지 않습니다.

Shopify 스토어에 연결된 스튜디오 상품 블록은 수신자마다 그 상품 하나에만 한정된 1회용 할인 코드를 자체적으로 발급할 수 있습니다 — 구매 이력 세그먼트나 프로젝트 수준의 할인 오퍼가 전혀 필요하지 않습니다.

MailInApp에는 이미 일치하는 오디언스 전체를 코드 하나로 타겟팅하는 프로젝트 수준의 할인 오퍼가 있습니다. 이것은 그보다 좁은 도구입니다: 상품 블록 자체에 자리하는 할인으로, Shopify 카탈로그에서 가져온 실제 상품에 연결되며, 그 이메일의 모든 수신자에게 자동으로 발급되고, 그 상품 자체의 페이지에서 바로 사용됩니다.

1단계 — Shopify 연결하기

설정 → 연동에서 아직 연결하지 않았다면 Shopify 스토어를 연결하세요. MailInApp은 읽기 스코프와 함께 write_discounts를 요청하는데, 이는 바로 이 사용 사례가 의존하는 코드를 발급하기 위해서입니다 — 상품, 주문, 고객 자체에 대한 쓰기 권한은 절대 요청하지 않습니다.

2단계 — 상품을 상품 블록으로 가져오기

스튜디오에서 상품 블록을 추가하고 스토어에서 가져오기 검색을 여세요. URL을 직접 입력하는 대신 동기화된 Shopify 카탈로그에서 실제 상품을 선택하세요. 가져오기는 한 번에 세 가지 일을 합니다: 이름·설명·이미지·가격을 채우고, 체크아웃을 외부 스토어 체크아웃으로 연결로 전환하며, 상품 자체의 Shopify 핸들로부터 외부 상품 페이지 URL을 채웁니다. 세 가지 모두 다음 단계에 중요합니다 — 직접 입력한 URL에는 실제 스토어 상품 id가 없으므로, 가져오기 전까지는 할인 토글이 숨겨져 있습니다.

3단계 — 상품별 할인 켜기

블록에 실제로 가져온 상품이 있으면, 인스펙터에 상품별 할인 토글이 나타납니다. 이를 켜고 다음을 설정하세요:

  • 할인 유형 — 비율 또는 정액 할인.
  • 할인 값 — 실제 숫자.
  • 만료(발송 후 일수) — 발급된 코드가 유효한 기간.

이는 프로젝트가 가지고 있을 수 있는 프로젝트 수준의 할인 오퍼와는 독립적입니다 — 하나의 발송이 둘 다 가질 수도, 둘 다 없을 수도, 한쪽만 가질 수도 있습니다.

4단계 — 발송하기, MailInApp이 이 상품에만 한정된 코드를 발급합니다

각 수신자의 이메일이 렌더링되기 직전, MailInApp은 이메일로 해당 Shopify 고객 레코드를 조회하고, Shopify Admin GraphQL API를 통해 할인 코드를 생성합니다: 1회용이며(usageLimit: 1), 그 고객 한 명에게 제한되고, 스토어 전체가 아니라 이 상품 하나에만 제한됩니다. 블록 자체의 지금 구매 링크는 자동으로 다시 작성되어 이를 포함합니다 — 블록 id는 제목에 직접 입력할 수 있는 것이 아니므로, 병합 태그로 수동 템플릿화할 것이 없습니다.

5단계 — 쇼핑객은 코드가 이미 적용된 바로 그 상품으로 돌아갑니다

사용은 스토어 자체의 /discount/<code> URL을 통해 이루어지며, 코드가 이미 적용된 상태로 이 상품 자체의 페이지로 바로 리디렉션됩니다 — 스토어프론트의 홈페이지도, 일반적인 장바구니도 아닙니다. 이는 의도적입니다: 이메일이 특정 상품 하나를 보여주었으니, 할인 링크도 그들을 다시 찾게 만드는 대신 바로 그 상품으로 데려가야 합니다.

귀속은 다른 모든 스토어 클릭과 동일하게 작동합니다

사용 링크에는 프로젝트의 다른 송신 링크와 동일한 utm_campaign이 그대로 포함됩니다. 그 코드로 이루어진 주문은 다른 Shopify 클릭스루 주문과 동일한 방식으로 이 발송에 귀속됩니다 — 그 귀속이 실제로 어떻게 처음부터 끝까지 작동하는지는 Shopify 주문, 체크아웃 및 매출 추적을 참고하세요.

수신자에 대한 발급이 실패하면

그래도 이메일은 발송됩니다. 이메일과 일치하는 Shopify 고객 레코드가 없거나 실시간 API 호출에 문제가 생기면, 해당 수신자의 지금 구매는 그냥 블록의 평범한, 할인되지 않은 상품 링크로 대체됩니다 — 절대 깨진 링크가 되지 않으며, 절대 발송이 막히지 않습니다.

프로젝트 수준의 할인 오퍼와 어떻게 다른가

발송 페이지의 할인 오퍼는 흔히 구매 이력 세그먼트와 짝을 이루어, 드롭다운에서 선택한 코드 범위(스토어 전체 또는 상품 하나) 하나로 일치하는 오디언스 전체를 타겟팅합니다. 이 기능은 그 모든 과정을 건너뜁니다: 블록 자체가 담고 있는 상품에 범위가 지정되고, 오디언스 필터가 필요 없으며, 그 이메일을 받는 누구에게나 발급됩니다. 각각은 자체 쿨다운 마커도 유지하므로, 한 품목에 대한 상품별 할인이 다른 품목의 할인이나 프로젝트 수준의 오퍼를, 같은 연락처에 대해 막는 일이 없습니다. 이 패턴의 오디언스 타겟팅 버전은 구매 이력 세그먼트 & 할인 코드로 과거 구매자 되찾기를 참고하세요.

시작하기

Shopify를 연결하고, 실제 상품 하나를 상품 블록으로 가져온 다음, 적당한 규모의 상품별 할인을 켜고, 사용 링크가 예상한 곳으로 이동하는지 먼저 작은 리스트에 발송해 확인하세요. 전체 레퍼런스는 상품 블록, Shopify 연동, 스토어 네이티브 할인 코드 발급을 참고하세요.

일반적인 제작 및 발송 순서

  1. 1

    Shopify 연결하기

    설정 → 연동에서 아직 연결하지 않았다면 Shopify 스토어를 연결하세요. MailInApp은 읽기 스코프와 함께 write_discounts를 요청하는데, 이는 바로 이 사용 사례가 의존하는 코드를 발급하기 위해서입니다.

  2. 2

    상품을 상품 블록으로 가져오기

    스튜디오에서 상품 블록을 추가하고, 스토어에서 가져오기 검색을 사용해 동기화된 Shopify 카탈로그에서 실제 상품을 선택하세요. 가져오면 체크아웃이 외부 스토어 체크아웃으로 연결로 설정되고 외부 상품 페이지 URL이 자동으로 채워집니다 — 다음 단계가 나타나려면 둘 다 필요합니다.

  3. 3

    상품별 할인 켜기

    블록이 실제로 가져온 상품을 담고 있으면, 인스펙터에 상품별 할인 토글이 나타납니다. 이를 켜고 비율 또는 정액 할인, 그리고 발급된 코드가 유효한 일수를 설정하세요 — 이 프로젝트가 가지고 있을 수 있는 프로젝트 수준의 할인 오퍼와는 독립적입니다. 스튜디오 캔버스는 즉시 다시 그려져 수신자가 실제로 보게 될 것과 동일한 할인 배지와 취소선이 그어진 가격을 보여주므로, 라이브 뷰를 열지 않고도 확인할 수 있습니다.

  4. 4

    발송하기 — MailInApp이 이 상품에만 한정된 코드를 발급합니다

    각 수신자의 이메일이 렌더링되기 직전, MailInApp은 이메일로 해당 Shopify 고객 레코드를 조회하고, Shopify Admin GraphQL API를 통해 그 고객 한 명과 이 상품 하나에만 제한된 1회용 할인 코드를 생성합니다 — 스토어 전체가 아닙니다.

  5. 5

    지금 구매에는 이미 코드가 포함되어 있습니다

    블록의 지금 구매 링크는 스토어의 /discount/<code> 사용 URL로 다시 작성되며, 코드가 이미 적용된 상태로 쇼핑객을 이 상품 자체의 페이지로 바로 되돌려보냅니다 — 스토어프론트의 홈페이지나 일반적인 장바구니가 아닙니다.

  6. 6

    귀속은 다른 모든 스토어 클릭과 동일하게 작동합니다

    사용 링크에는 프로젝트의 다른 송신 링크와 동일한 utm_campaign이 그대로 포함되므로, 그 코드로 이루어진 주문은 다른 Shopify 클릭스루와 동일한 방식으로 이 발송에 귀속됩니다.

자주 묻는 질문

이것은 프로젝트 수준의 할인 오퍼와 어떻게 다른가요?

발송 페이지의 할인 오퍼는 흔히 구매 이력 세그먼트와 짝을 이루어, 일치하는 오디언스 전체를 모두에게 동일한 코드 범위(드롭다운에서 선택한 스토어 전체 또는 상품 하나)로 타겟팅합니다. 상품 블록 자체의 상품별 할인은 해당 블록의 가져온 상품 하나에만 범위가 지정되며 오디언스 필터나 발송 페이지 설정이 전혀 필요하지 않습니다 — 그 이메일을 받는 누구에게나 자동으로 발급됩니다. 프로젝트는 둘 중 하나, 둘 다, 또는 둘 다 사용하지 않을 수 있으며 — 각각 독립적으로 별도의 쿨다운으로 작동합니다.

이것이 작동하려면 구매 이력 세그먼트가 필요한가요?

아니요. 구매 이력 세그먼테이션은 이것이 아니라 프로젝트 수준의 할인 오퍼와 짝을 이룹니다. 상품 블록의 상품별 할인은 그 상품(또는 무엇이든)을 이전에 구매했는지 여부와 관계없이, 그 블록이 포함된 이메일의 모든 수신자에게 발급됩니다.

수신자에게 아직 Shopify 고객 레코드가 없다면 어떻게 되나요?

발급 과정은 이메일로 수신자를 Shopify 고객과 대조합니다. 일치하는 항목이 없으면 해당 수신자의 코드는 발급되지 않고 이메일은 그대로 발송됩니다 — 이 경우 지금 구매는 원래 사용했을 평범한, 할인되지 않은 상품 링크를 사용하며, 절대 깨진 링크가 되지 않습니다.

쇼핑객은 체크아웃으로 이동하기도 전에 할인을 볼 수 있나요?

스튜디오에서는 자동으로 볼 수 있습니다 — 토글을 켜는 순간 캔버스에 동일한 배지와 취소선이 그어진 가격이 표시됩니다. 실제 Shopify 스토어프론트에서는 선택적인 추가 단계입니다: 테마의 테마 에디터에서 무료 MailInApp 할인 배지 앱 블록을 상품 페이지 템플릿에 한 번 설치하세요(Online Store 2.0 테마에서만 가능). 그러면 이메일에서 클릭해 들어온 쇼핑객은 체크아웃 이전, 실제 상품 페이지 자체에서 동일한 배지를 보게 됩니다 — 이는 상품 자체의 가격으로부터 계산된 표시 전용 미리보기일 뿐이며, 실제 할인은 어느 경우든 체크아웃에서 1회용 코드를 통해 적용됩니다.

왜 제 상품 블록에는 할인 토글이 나타나지 않나요?

블록이 스토어에서 가져오기를 통해 가져온 실제 상품을 담고 있어야만 나타납니다 — 발급 시 코드를 제한하려면 스토어 자체의 숫자 상품 id가 필요한데, 직접 입력한 외부 상품 페이지 URL에는 그것이 없기 때문입니다. 또한 MailInApp 체크아웃 모드에서는 완전히 숨겨집니다. 그 모드는 Shopify 스토어에 전혀 접근하지 않기 때문입니다.

같은 이메일에서 둘 이상의 상품에 대해 이것을 실행할 수 있나요?

가능합니다 — 각 상품 블록은 그 블록에 연결된 자체 코드와 쿨다운을 독립적으로 발급하고 추적하므로, 한 상품에 대한 할인이 다른 상품에 대한 할인이나 프로젝트 수준의 할인 오퍼를 막거나 방해하는 일은 없습니다.

수신자가 이메일을 전달해도 쿠폰 URL이 계속 작동하나요?

코드 자체는 1회용으로 유지되며 원래 수신자 본인의 Shopify 고객 레코드에 제한되므로, 전달된 이메일이 낯선 사람에게 사용 가능한 할인을 넘기지 않습니다 — 체크아웃에서 실제로 사용할 수 있는 사람은 원래 쇼핑객뿐입니다.

스튜디오에서 만들어보세요

무료 플랜으로 시작하세요 — 모든 인터랙티브 블록과 전체 폴백 엔진이 모든 플랜에 포함됩니다.