고객웹 · 재방문

웹 고객이 다시 들어오게 만드는 장치 기획서
홈 화면 추가 · 앱 설치 유도 · 웹 푸시(플레어레인)

작성 2026-09-28 · 서현일(CPO) · 대상 www.aboutfishing.kr 모바일 웹 · 동작 데모 /demo/ · 개발 코드 /code/
웹은 다시 들어올 때 주소를 기억하거나 검색해야 한다. 이 수고를 없애는 수단을 고객 상황에 맞춰 하나씩만 권한다. 새 요소를 화면 위에 띄우기보다 기존 화면 규격 안에 작게 넣고, 먼저 띄우는 것은 헤더 아이콘이 한 번 펼쳐지는 캡슐 하나로 줄였다. Android Chrome은 한 번 눌러 설치 창까지 가고, 홈 화면 추가를 코드로 띄울 수 없는 iPhone은 앱 받기를 기본으로 한다.

1목표와 지표

목표는 웹 고객의 재방문율을 올리는 것이다. 9/28 론칭 전후 비교에서 결제 전환은 좋아졌지만 리텐션은 변화가 없었다. 웹으로 들어온 고객이 다시 오는 경로를 따로 만들어야 한다.

구분지표정의
주 지표웹 신규 회원 28일 재방문율웹에서 가입한 회원 중 가입일 다음 날부터 28일 안에 세션이 1회 이상 있는 비율. 앱 웹뷰 세션은 제외한다
보조홈 화면 실행 세션 비중전체 웹 세션 중 홈 화면 아이콘으로 시작된 세션(src=home 또는 display_mode = standalone)
보조제안 전환노출 → 누름 → 완료(홈 화면 추가·알림 허용·앱 설치)를 제안 종류와 노출 자리별로
보조웹 푸시 구독률·클릭률구독률 = 알림 허용 수 ÷ 알림 제안 노출 수. 클릭률 = 알림 클릭 ÷ 발송 성공
보조예약 후 앱 설치율첫 예약 완료 회원 중 14일 안에 원링크(pid=web_reentry) 경유 앱 설치 비율
감시이탈 신호제안 노출 직후 10초 안 이탈률, 닫기 비율, 알림 권한 거부 비율. 노출 전보다 이탈률이 오르면 빈도를 낮춘다

효과를 따로 재기 위해 웹 방문자의 10%는 제안을 전혀 보지 않는 비교군으로 둔다(추석 이벤트 홀드아웃과 같은 방식). 기준선은 배포 직전 2주를 GA4 운영 속성 553030050에서 저장한다.

2누구에게 무엇을 권하나

한 화면에는 제안을 하나만 둔다. 「예약하기」를 누른 뒤부터 결제가 끝날 때까지는 아무것도 띄우지 않는다. 9/7 마케팅 전략서의 원칙(새 고객은 웹에서 받고, 첫 예약을 마친 고객을 앱으로 옮긴다)을 따른다.

순서고객 상황권하는 것누르는 횟수이유
1앱 웹뷰 안없음—이미 앱이다
2앱이 설치된 고객이 웹으로 들어옴앱에서 열기1Android는 설치 여부를 확인할 수 있다(딥링크 파일 필요)
3홈 화면 아이콘으로 들어옴없음—이미 재진입 수단이 있다
4카카오톡 안 브라우저카톡 알림 받기(카카오 채널 추가)1 + 확인카카오톡 안에서는 홈 화면 추가가 안 된다. 카카오 채널 운영이 정해지기 전에는 「브라우저로 열기」
5그 밖의 앱 안 브라우저(네이버앱 등)브라우저로 열기1~2누를 때만 안내, 먼저 띄우지 않는다
6첫 예약을 마친 고객앱 받기받기 1 + Face ID출항 전날 안내가 필요한 고객
7Android Chrome, 설치 준비됨홈 화면에 두기2 (우리 버튼 → 시스템 창 설치)원터치 설치가 되는 유일한 환경
8iPhone Safari·Chrome앱 받기 (홈 화면 추가는 마이에서 원하는 사람만)받기 1 + Face IDiOS는 웹에서 홈 화면 추가 창을 띄울 수 없고, 직접 추가하려면 4~5번 눌러야 한다
9Android Chrome 설치 준비 전 · 삼성 인터넷 · 웨일먼저 권하지 않음 (마이·고정 자리만)—원터치를 약속할 수 없다
원터치 홈 화면 추가가 되는 곳과 안 되는 곳

3노출 형태와 규격

눈에 거슬리지 않도록 새 요소를 만들기보다 기존 화면 규격 안에 넣는다. 보라 채움 버튼은 화면당 하나만 쓰고, 이모지·딤 배경·저절로 사라지는 배너는 쓰지 않는다. 글자는 15px 이상, 누르는 영역은 44px 이상이다.

형태모양쓰는 곳
F1 헤더 아이콘·캡슐평소에는 검색 아이콘 왼쪽의 먹색 아이콘(24px, 선 1.8, 누르는 영역 44). 한 세션에 한 번, 스크롤이 1.2초 멈추면 아이콘이 옆으로 늘어나 연회색(#F1F2F7) 캡슐이 된다(높이 36, 글자 15/600, 폭 208 이하, 320ms). 다시 스크롤하거나 다른 곳을 누르거나 8초가 지나면 아이콘으로 접힌다. 본문을 가리지 않는다새소식 홈, 출조 탭 (메인 헤더)
F2 탭바 위 칩탭바 위 12px, 흰 반투명 배경, 모서리 16, 앱 아이콘 28 + 한 줄 15px, 아래 [다음에] [알림 켜기] 같은 크기 44. 딤 없음, 저절로 사라지지 않음선박 상세에서 찜한 직후 한 번
F3 완료 화면 보조 카드흰 카드 높이 88, 모서리 12, 앱 아이콘 32 + 제목 15/600·설명 13 + 오른쪽 글자 링크(보라)예약 완료
F4 상단 한 줄 안내출조 탭 공지 바와 같은 규격. 높이 48, 연회색 배경, 글자 15 + 오른쪽 링크 + ✕알림함
F5 목록 끝 한 줄마지막 카드 아래 16px, 높이 44, 회색 글자 15 + 보라 링크찜 목록, 예약 내역
F6 기존 카드 하단 보조 줄구분선 아래 높이 44, 선 아이콘 16 + 글자 15 + ›새소식 홈의 D-3 예약 카드
F7 설정 행높이 48, 선 아이콘 24 + 라벨 16 + 오른쪽 상태 15 회색 + ›마이 설정, 알림 설정

환경별 문구

환경F1 캡슐F2 칩F3 예약 완료F5 찜 목록F7 마이
Android Chrome 설치 준비됨앱처럼 바로 열기빈자리 나면 알려드릴까요? [알림 켜기]출항 전날 안내 받기 · 앱 받기 ›빈자리 나면 알려드릴까요? 알림 켜기 ›홈 화면에 두기 (안 됨/됨)
Android Chrome 준비 전·삼성·웨일없음같음같음같음앱 받기 / 홈 화면에 두는 법
iPhone Safari·Chrome앱으로 보기빈자리 알림은 앱에서 받아요 [앱 받기]같음앱에서 받기 ›앱 받기 / 홈 화면에 두는 법
카카오톡 안카톡 알림 받기카톡으로 빈자리 알림 받아요 [카톡으로 받기]카톡으로 받기 ›카톡으로 받기 ›카톡 알림 받기
첫 예약 후(앱 없음)앱으로 보기환경별 위와 같음앱 받기 ›환경별앱 받기
앱 설치됨앱에서 열기없음앱에서 예약 확인 · 열기 ›앱에서 열기 ›앱에서 열기

4화면별 배치와 빈도

고객웹 55개 화면을 모두 검토했다. 노출하는 화면은 9개(1차 7, 2차 2)이고 나머지는 노출하지 않는다. 좌표는 8월통합 확정 목업(393×852) 기준이다.

화면형태자리단계이유
CW-01 새소식 홈F1 · F6F1: 검색 아이콘 왼쪽(x316 y82). 예정 예약이 있으면 캡슐 대신 D-3 카드 「내 예약 보기」 아래 F61차방문이 가장 많다
CW-50 출조 탭F1검색 아이콘 왼쪽. 공지 바가 떠 있는 세션에서는 펼치지 않음1차메인 헤더
CW-55 예약 완료F3예약 요약 아래(y633~721), 버튼 위1차앱 전환 핵심 순간, 빈 공간이라 기존 버튼을 밀지 않음
CW-61 예약 내역F5마지막 카드 아래. 목록이 비면 숨김1차예약자만 본다
CW-62 찜 목록F5마지막 카드 아래1차빈자리 알림 동기가 분명하다
CW-03 알림함F4헤더 아래(y112~160), 목록은 48 아래로1차알림을 보러 온 사람
CW-60 마이F7설정·고객센터 첫 행1차상시 입구
CW-30 선박 상세F2찜 누른 뒤 1초, 탭바 위2차찜이 가장 강한 신호. 헤더는 아이콘이 이미 2개
CW-68 알림 설정F7「서비스 알림」 위 새 행 「이 폰 브라우저로 받기」2차웹 푸시와 함께
노출하지 않는 화면: 예약 상품·예약 접수·결제·결제 실패(결제 구간), 예약 상세·취소 완료·후기 작성, 검색·검색 결과·최근 검색어·어종 도감, 지도와 시트 7종, 조과 등록 4종·조과 상세·내 조과·선박 조황 상세, 신고·차단·댓글, 이벤트 목록·상세·쿠폰 복권·기획전(판매 지면), 공지·약관·고객센터·정보수정, 로그인, 회원탈퇴 3종(절대 금지)

빈도

구분규칙
먼저 띄우는 제안(F1 펼침·F2)세션 1회 · 7일 2회 · 28일 4회. 펼쳤는데 누르지 않은 것이 연속 2번이면 30일 쉼. F2가 뜬 세션에는 F1을 펼치지 않음
F1 접힌 아이콘상시. 한 화면 1개 계산에서 뺀다
F2 [다음에]7일, 세 번이면 30일
F4 ✕30일
F63번 보고 누르지 않으면 7일 숨김
한 화면 1개F3~F6이 있는 화면에서는 F1을 펼치지 않는다
한 주 최대 노출 추정신규 탐색자: 먼저 띄우는 제안 최대 2 + 고정 자리 2~4 / 첫 예약 고객: 0~1 + 5~6 / 앱 설치 고객: 0

5OS·브라우저별 홈 화면 추가 절차

한국 모바일 사용 비중은 Android 64.5%, iOS 35.5%, 브라우저는 Chrome 39.5% · Safari 28.6% · 웨일 16.3% · 삼성 인터넷 13.8%다(StatCounter 2026년 8월). iOS는 26.x가 약 70%이고 18.x가 약 15%다. 버전마다 누르는 순서가 달라서 안내 시트가 기기를 판별해 맞는 순서를 보여준다.

iPhone

버전·브라우저순서추가 후알림확인
iOS 27 Safari (9/14 출시)공개 자료로 확정 안 됨. 우선 iOS 26 안내를 보여준다——실기기 확인
iOS 26 Safari · 기본(Compact) 레이아웃주소창 옆 ⋯ → 공유 → 아래로 내려 「홈 화면에 추가」(안 보이면 「더 보기」) → 「웹 앱으로 열기」 켜짐 확인 → 추가웹 앱으로 열림(토글 기본 켜짐)가능한국어 라벨 실기기 확인
iOS 26 Safari · 하단/상단 레이아웃공유 → 아래로 내려 「홈 화면에 추가」 → 「웹 앱으로 열기」 확인 → 추가같음가능같음
iOS 16.4 ~ 18 Safari하단 공유 버튼 → 아래로 내려 「홈 화면에 추가」 → 추가매니페스트 display가 standalone이면 앱처럼 열림가능확인됨
iOS 15 ~ 16.3 Safari같음같음불가확인됨
iOS 16.4+ Chrome(115 이상)·Edge·Firefox주소창 오른쪽 공유 → 「홈 화면에 추가」 → 추가같음가능하다는 자료와 Safari만 된다는 자료(플레어레인 문서)가 엇갈림실기기 확인
iOS 16.3 이하 Chrome 등홈 화면 추가 불가 → Safari로 열어 달라고 안내—불가확인됨
iPad공유 버튼이 오른쪽 위. 26 이후 경로는 자료가 엇갈림——실기기 확인

iOS 판별: Safari 26부터 브라우저 식별 문자열의 OS 표기가 18_6에 고정된다. 그래서 OS 표기가 아니라 Safari 버전(Version/26)으로 iOS 버전을 판단한다(reentry.js에 반영). 26의 두 레이아웃은 웹에서 구분할 수 없어 안내 그림 첫 단계에 ⋯와 공유 두 아이콘을 함께 그린다. 안내는 3단계 그림 한 장으로 줄였다(⋯ 또는 공유 → 홈 화면에 추가 → 추가).

Android

브라우저순서한 번 탭 설치알림확인
Chrome우리 버튼을 누르면 Chrome 설치 창 → 「설치」. 창이 안 뜨는 경우 안내: ⋮ → 「홈 화면에 추가」(최신 버전은 「설치 및 바로가기 만들기」) → 설치가능(beforeinstallprompt). 페이지를 한 번 이상 누르고 30초 이상 본 뒤부터가능확인됨
삼성 인터넷하단 ≡ → 「현재 페이지 추가」 → 「홈 화면」 → 추가. 「쉬운 사용 모드」에서는 안 됨지원 기록은 있으나 27.x 이후 안 뜬다는 보고가 있음 → 안내를 기본으로가능실기기 확인
네이버 웨일메뉴 → 「홈 화면에 추가」 → 추가 (경로 자료 없음)미확인미확인실기기 확인

앱 안 브라우저

앱자동 이동안 될 때 안내
카카오톡 Androidkakaotalk://web/openExternal?url= (비공식, 막힐 수 있음)오른쪽 아래 ⋮ → 「다른 브라우저로 열기」
카카오톡 iPhone같은 스킴오른쪽 아래 공유 → Safari 선택
네이버앱·인스타그램·페이스북 Androidintent://…;package=com.android.chrome;S.browser_fallback_url=…⋮ → 다른 브라우저로 열기
그 외 iPhone 앱 안 브라우저강제로 Safari를 열 방법 없음⋯ → Safari로 열기, 안 되면 「주소 복사」 버튼

카카오 알림톡 버튼은 공식 옵션("target":"out")으로 처음부터 외부 브라우저에서 열 수 있다. 예약 알림톡 링크에 이 옵션을 넣는 것이 가장 확실하다.

6웹 푸시 (플레어레인)

구성

언제 묻나

순간제목보낼 알림발송 방식
찜을 누른 직후찜한 배에 자리가 나면 알려드릴까요?찜한 배 취소 자리 발생백엔드가 취소 이벤트를 플레어레인에 전달 → 여정으로 발송
예약 완료 직후출항 전날 알림을 받아보세요출항 전날 날씨·출항 여부·집결 시간플레어레인 여정(예약 데이터 연동 필요)
「새 조황 알림 받기」이 배의 새 조황을 알려드릴까요?선장 조황 등록조황 등록 이벤트 전달
홈 화면 앱 첫 실행알림을 켜 둘까요?위 세 가지—

지켜야 할 것

7앱 설치 유도

8측정

GA4 이벤트언제매개변수
reentry_view제안이 화면에 나옴rx_type(add-home · install-app · open-app · escape · push), rx_surface(header-icon · capsule · chip-wish · done · line-wish · line-booked · sub-booked · bar-inbox · my · setting), rx_env(브라우저-OS버전)
reentry_click제안 버튼을 누름
reentry_dismiss닫음
reentry_prompt_resultAndroid 설치 창 결과rx_outcome(accepted · dismissed)
reentry_installed홈 화면 설치 완료(Android appinstalled)—
reentry_guide_view안내 시트가 열림rx_guide(ios26 · ios-safari · ios-other · chrome · samsung · whale)
reentry_push_result알림 권한 결과rx_outcome(granted · denied · default), rx_ctx
reentry_launch_home홈 화면 아이콘으로 실행—

9공수와 일정

단위는 사람·일. 제공하는 reentry.js를 그대로 쓰는 기준이다.

단계작업FEBE앱디자인QA·PM
1차매니페스트 보강(display·id·scope·maskable), head 태그0.5——0.3—
도우미 연결, 화면 전환마다 refresh, 결제 구간 차단1.0————
F1 헤더 아이콘·캡슐 (새소식·출조)1.0——0.5—
F3 예약 완료 · F6 홈 D-3 카드 · F5 예약 내역·찜 목록1.0——0.3—
F4 알림함 · F7 마이0.6————
홈 화면에 두는 법 시트(3단계 그림, 5종)0.8——0.7—
브라우저로 열기(누를 때만) + 알림톡 버튼 외부 열기0.30.5———
원링크 파라미터, 앱에서 보던 경로 받기0.3—0.5——
GA4 이벤트·비교군 10%, 실기기 점검0.5———2.0
2차F2 찜 직후 칩0.5————
플레어레인 웹 SDK 지연 로드·setUserId, 루트 sw.js1.0————
F7 알림 설정 행0.3————
카카오 채널 추가(결정 후)0.51.0——0.5
찜한 배 빈자리 알림 이벤트 · 앱 설치 여부·수신 동의 동기화—3.5——0.5
여정 설정·발송 점검————1.0
합계 (약 22)8.35.00.51.84.0

10결정 필요 · 실기기 확인 필요

번호항목권고
R-01iPhone 기본 제안을 「앱 받기」로그렇게 한다. 홈 화면 추가는 마이에서 원하는 사람만
R-02카카오톡 안 고객에게 카카오 채널 추가를 쓸지채널 메시지 비용·광고성 수신 동의 운영을 정한 뒤 2차. 그 전에는 「브라우저로 열기」
R-03먼저 띄우는 제안 한도세션 1 · 7일 2 · 28일 4 · 연속 무시 2번이면 30일
R-04비교군10%, 6주 차 판정
R-05웹 푸시를 앱과 같은 플레어레인 프로젝트에같은 프로젝트. 플레어레인 확인
R-06출항 전날 안내 채널알림톡 유지, 웹 푸시는 빈자리·조황부터
R-07찜 빈자리 알림의 정보성 분류법무 확인. 쿠폰이 붙으면 광고성

실기기 확인

11개발 전달물

파일내용
reentry.js재방문 도우미 전체(판별·빈도·F1~F7·안내 시트·브라우저 열기·GA 이벤트). 외부 라이브러리 없음, 클래스 이름은 afrx- 접두
site.webmanifest현재 파일에 display · id · scope · maskable 아이콘 추가
head-tags.html모든 페이지 공통 head 태그
sw.js루트 서비스워커(플레어레인 한 줄). fetch 캐시 없음
flarelane-init.js플레어레인 SDK 지연 로드·setUserId·태그
<span data-reentry-slot></span>               ← F1 헤더 (검색 아이콘 왼쪽)
<div data-reentry-done></div>                ← F3 예약 완료
<div data-reentry-bar="inbox"></div>          ← F4 알림함
<div data-reentry-line="wish|booked"></div>   ← F5 찜 목록 · 예약 내역
<div data-reentry-sub="booked"></div>         ← F6 홈 D-3 카드
<div data-reentry-row></div>                 ← F7 마이
<div data-reentry-setting></div>             ← F7 알림 설정 (2차)
AFReentry.suggest('wish')                       ← F2 찜 직후 (2차)
AFReentry.refresh()                             ← 화면이 바뀔 때마다

AFReentry.init({
  appLink: '원링크 주소', iconUrl: '/icon-192.png',
  isBooked: () => 결제 완료 예약 수 > 0,
  isMainScreen: () => 새소식·출조 화면인지,
  onEvent: (name, p) => dataLayer.push({ event: name, ...p }),
  onPushAccepted: (ctx) => AFPush.subscribe(ctx),
});

현재 www 실측(9/28): /site.webmanifest는 있으나 display·scope·id 없음, 아이콘 192·512 있음(maskable 없음), theme-color·apple 메타 없음, 서비스워커 경로 5곳 모두 404, 딥링크 파일 2종 404. HTML의 manifest 연결 태그와 번들 안 푸시 SDK 유무는 확인하지 못했다.

출처