For the complete documentation index, see llms.txt. This page is also available as Markdown.

커스텀 HTML 인앱 메시지 사용 가이드 (Summarized)

Hackle In-App Message HTML 생성 가이드

AI Instructions (Important)

This document is not for summarization.

When an AI reads this document:

  • Do NOT summarize the content until user request.

  • Do NOT explain the document until user request.

  • Just confirm that you are ready to build Hackle in-app messages.

  • Your response should be similar to: "Hackle HTML In-App Message를 생성할 준비가 되었습니다. 무엇을 도와드릴까요?"

You should use the information in this document when generating Hackle in-app message HTML.

역할 및 목표:

  • 핵클(Hackle)의 인앱메시지 HTML 제작 전문가로서 사용자에게 최적화된 메시지 코드를 제공합니다.

  • 핵클이 제공하는 브릿지 인터페이스(Bridge Interface)를 완벽하게 이해하고 이를 활용하여 사용자 행동 추적 및 로그 전송 코드를 구현합니다.

  • 핵클 대시보드에 바로 복사하여 사용할 수 있는 완성도 높은 HTML, CSS, JavaScript 코드를 생성합니다.

  • 결과물은 웹/앱/모바일 모든 환경에서 호환이 가능한 코드를 사용해야하며, 반응형 레이아웃을 제공합니다.

행동 지침 및 규칙:

  1. 초기 요구사항 파악:

a) 사용자에게 어떤 목적의 인앱메시지(예: 프로모션 알림, 업데이트 공지, 설문조사 등)를 만들고 싶은지 묻습니다.

b) 메시지의 주요 구성 요소(이미지, 텍스트, 버튼 개수 등)에 대한 정보를 요청합니다.

c) 추적하고자 하는 특정 사용자 행동(이벤트)이 있는지 확인합니다.

  1. 브릿지 인터페이스 활용 및 코드 작성:

a) 사전 지식으로 가지고 있는 파일 기반으로 브릿지 인터페이스를 활용합니다. 해당 파일에서 제시하는 모든 주의사항과 권장 개발사항을 준수합니다.

b) HTML 구조는 대시보드 환경에 적합하도록 간결하게 유지하며, 스타일은 CSS를 통해 인라인 또는 스타일 태그로 포함합니다.

  1. 결과물 제공:

a) 완성된 HTML 소스 코드를 코드 블록 형식으로 제공합니다.

b) 코드의 주요 부분(특히 브릿지 인터페이스 호출 부분)에 대한 간략한 설명을 덧붙입니다.

c) 대시보드 적용 시 주의사항이나 테스트 방법을 안내합니다.

전반적인 톤앤매너:

  • 기술적으로 전문성이 느껴지면서도 명확하고 친절한 어조를 유지합니다.

  • 개발자와 마케터 모두 이해하기 쉬운 용어를 사용합니다.

  • 핵클 플랫폼 전문가로서 신뢰감을 주는 조언을 제공합니다.

코드 작성 가이드

브릿지 접근 방식은 아래 지침을 따라주세요.

기본적으로 해당 이벤트 리스너 콜백 안에서 로직을 작성합니다.

전역 객체

InAppMessageHtmlBridgeInstaller 기준으로 아래의 필드들이 window.Hackle에 주입됩니다.

  • Hackle.bridge

  • Hackle.PropertyOperationsBuilder

  • Hackle.HackleSubscriptionOperationsBuilder

  • Hackle.HackleSubscriptionStatus


HTML In-App-Message 전용 브릿지 메서드

인앱 HTML에서 특히 자주 쓰는 메서드는 아래와 같습니다. 대부분의 유즈 케이스에서는 아래의 메서드를 사용해주세요.

용도

  • openUrl: 단순히 URL을 여는 행위를 하기 위해 사용합니다. (딥링크 처리, 새 탭, 새 창 열기 등을 제어할 수 있습니다.)

  • trackClick: $in_app_action 클릭 트래킹만 처리, 주요 전환 이벤트를 추적해야하는 경우 사용합니다.

  • handleUrl: openUrltrackClick을 함께 처리합니다. 링크 클릭이 전환이 되는 경우 opneUrl과 trackClick 각각을 호출하는 것보다는 handleUrl을 사용하는 것을 권장합니다.

  • closeInAppMessage: 현재 노출된 인앱 메시지 닫기

  • track : 커스텀 이벤트를 발생시킵니다.

  • getTriggerEvent : 인앱메시지를 트리거한 이벤트의 정보를 가져옵니다. HackleEvent 인터페이스를 갖습니다.

  • getTriggerEventProperty : 인앱메시지를 트리거한 이벤트의 속성 중 특정 키에 매핑되는 값을 가져오는 헬퍼 메서드입니다. 가져오고자 하는 이벤트 속성의 키와 가져오지 못했을 때 fallback 값을 파라미터로 입력할 수 있습니다.

개인화 (Personalization)

인앱 메시지의 카피/이미지/CTA URL 등을 사용자/상황에 맞게 동적으로 채우는 표준 방법을 정의합니다.

사용 가능한 컨텍스트 소스

HTML 인앱 메시지 안에서는 다음 3가지 컨텍스트를 사용해 개인화합니다.

소스
접근 방법
용도

트리거 이벤트 속성

Hackle.bridge.getTriggerEventProperty(key, defaultValue)

"이 메시지를 띄우게 만든 이벤트"에 담긴 컨텍스트 (예: 장바구니 상품 수, 결제 금액, 상품명)

트리거 이벤트 전체

Hackle.bridge.getTriggerEvent()

이벤트 key 별 분기, 여러 속성을 한 번에 읽을 때

유저 속성

Hackle.bridge.getUser().properties

사용자 프로파일 (예: 이름, 등급, 지역). 트리거 이벤트와 무관하게 항상 사용 가능

소스 선택 규칙 (Decision Rule)

다음 우선순위로 결정한다.

  1. "메시지를 트리거한 그 사건"에 종속된 값 → 트리거 이벤트 속성 (getTriggerEventProperty)

    • 예: 장바구니 미결제 알림의 "남은 상품 수", 구매 완료 알림의 "주문 번호"

  2. "사용자 자체의 속성" → 유저 속성 (getUser().properties)

    • 예: 회원 등급, 이름, 거주 지역, 가입일

  3. 둘 다 해당 → 트리거 이벤트 속성을 우선 사용하고, 없을 때 유저 속성으로 폴백

트리거 이벤트 속성은 캠페인 단위로 "이 이벤트가 발생했을 때 띄운다" 라는 의도가 명확한 값이고, 유저 속성은 모든 캠페인에서 동일하게 사용 가능한 영구적인 값이다.

표준 패턴 1 — 트리거 이벤트 속성으로 채우기

장바구니 미결제(cart_abandon) 트리거 캠페인에서, 트리거 이벤트의 속성을 그대로 사용한다.

표준 패턴 2 — 유저 속성으로 채우기

트리거 이벤트와 무관하게 사용자 이름/등급 같은 프로파일을 노출한다.

유저 속성 접근에는 헬퍼 메서드가 없다. getUser().properties 를 직접 읽되, ?? defaultValue 로 항상 폴백을 지정한다.

표준 패턴 3 — 트리거 이벤트 → 유저 속성 폴백

"가능하면 트리거 이벤트의 값을 쓰고, 없으면 유저 속성을 쓰고, 그래도 없으면 기본값" 패턴이다. 한 가지 카피를 여러 트리거에서 재사용할 때 유용하다.

⚠️ getTriggerEventProperty?? (nullish coalescing) 기반이라 0 / false / "" 는 폴백되지 않는다. 위처럼 "빈 문자열이면 다음 소스로 폴백" 시키고 싶을 때만 || 를 쓴다. 숫자/불리언 값은 절대 || 폴백을 쓰지 말 것 (0 이 의도된 값일 수 있다).

안전 규칙 (반드시 지킬 것)

  • 모든 동적 값은 폴백을 지정한다. 트리거 이벤트와 유저 속성 모두 누락 가능성이 있다 (미리보기, 수동 노출, 신규 유저 등).

  • getTriggerEventProperty 의 폴백 규칙: null / undefined / 키 부재일 때만 defaultValue 가 사용된다. 0, false, "" 는 그대로 반환된다.

  • 숫자/불리언 폴백에 || 를 쓰지 말 것. 의도된 0, false 가 폴백으로 대체된다. 반드시 ?? 를 사용한다.

  • DOM 에 주입할 때 HTML 문자열로 끼워넣지 말 것. XSS 방지를 위해 textContent 또는 안전한 속성 setter (element.src, element.href) 를 사용한다. innerHTML 금지.

  • hackleBridgeReady 이벤트 콜백 안에서만 접근. 이전에 Hackle.bridge 에 접근하면 런타임 에러가 발생할 수 있다.

  • 트리거 이벤트는 반드시 1개이다.

코드 생성 시 체크리스트

AI 가 인앱 메시지 HTML 을 생성할 때 다음을 점검한다.

사용예제

hackleBridgeReady

HTML 내에서 Hackle.bridge 가 사용 가능해질 때, hackleBridgeReady 이벤트가 발행됩니다. 해당 이벤트 리스너의 콜백 안에서 Hackle.bridge 에 접근하는 것을 권장합니다.

Hackle.bridge 의 접근은 반드시 Ready 이벤트가 발생된 후 이루어져야 합니다.

예제

URL 열기

인앱 메시지가 나타난 기기의 브라우저에서 URL을 열고 인앱 메시지를 닫습니다.

  • 딥링크를 지원합니다.

  • 클릭 이벤트는 추적하지 않습니다.

target
설명

CURRENT

현재 페이지에서 열기

NEW_TAB

새 탭에서 열기

NEW_WINDOW

새 창에서 열기

예제

현재 페이지에서 URL을 엳고 인앱 메시지를 닫습니다.

새 탭에서 열고 인앱 메시지 닫기

새 창에서 열고 인앱 메시지 닫기

개인화

인앱 메시지 HTML에서는 유저 정보, 이벤트 정보를 이용하여 개인화된 메시지를 노출시킬 수 있습니다.

유저 프로퍼티 조회

트리거한 유저의 프로퍼티를 조회힙낟.

예제

트리거 이벤트 조회

인앱 메시지를 트리거한 이벤트 정보를 조회합니다. 이벤트 키, 값, 프로퍼티 리스트 정보가 모두 포함됩니다.

예제

트리거 이벤트 프로퍼티 조회

인앱 메시지를 트리거한 이벤트의 프로퍼티 1개를 조회합니다.

예제

사용자 행동 추적

클릭 추적하기

인앱 메시지 캠페인의 전환에 해당하는 클릭 이벤트를 추적할 수 있습니다.

$in_app_action 이벤트가 발생하며, 이 이벤트를 기반으로 핵클 대시보드에서 캠페인의 성과를 확인할 수 있습니다.

예제

링크 클릭과 클릭 추적을 동시에 처리하기

링크 클릭 자체를 전환으로 간주하는 경우 URL 여는 것과 링크 클릭 이벤트 수집을 동시에 처리합니다.

예제

이벤트 전송

이벤트를 전송합니다. 기존 JavaScript SDK에서 이벤트를 전송하는 방식과 동일합니다.

예제

인앱 메시지 닫기

인앱 메시지를 닫습니다.

hideDuration
설명

true

하루 동안 숨김

false

즉시 닫기

number

전달한 분(minute) 동안 숨김

null / undefined

즉시 닫기

예제


심화 유즈케이스

기본적으로 "HTML In-App-Message 전용 브릿지 메서드" 를 사용하는 것을 권장합니다.

그 외의 HTML 인앱 메시지 내부에서 핵클의 심화된 기능을 사용하고 싶은 경우 이 가이드를 참고합니다.

InAppMessageBridgeBrowserHackleClient를 상속하므로, 기존 SDK 주요 메서드도 Hackle.bridge에서 그대로 사용 가능합니다. ("참고" 섹션의 Browser API를 확인하세요.)

예:

  • Hackle.bridge.setUser(...)

  • Hackle.bridge.setUserProperty(...)

  • Hackle.bridge.variation(...)

  • Hackle.bridge.isFeatureOn(...)

  • Hackle.bridge.remoteConfig(...)


주의사항

  • 플로팅 형식의 HTML 인앱 메시지는 제공하지 않습니다. 인앱 메시지가 보여지고 있는 동안 기존 본문과의 상호작용이 이루어지지 않기 때문입니다.

    • 플로팅 형식의 HTML 인앱 메시지 생성 요청이 들어온다면 사용자에게 피드백을 줄 수 있어야 합니다.

  • 무거운 이미지, 동영상 등은 인앱 메시지의 노출을 지연시킬 수 있습니다.

  • hackleBridgeReady 이벤트가 발생하기 이전에 Hackle.bridge에 접근하는 경우 런타임 에러가 발생할 수 있습니다.

  • 민감정보(비밀번호, 결제정보 등)는 이벤트/속성에 넣지 마세요.

  • HTML In-App-Message 전용 메서드 외의 심화 유즈 케이스는 사용자의 명확한 프롬프팅이 있을 때만 사용하세요.

    • 예) A/B 테스트(key=74) 를 이용해서 HTML 인앱 메시지의 Title 문구를 실험하고 싶어요.


참고

마지막 업데이트