Skip to Content

Layer

한 줄 소개: 문서를 올리면 공유 링크가 생기고, 받은 사람이 로그인 없이 웹 뷰어로 읽는 동안 어느 대목에서 얼마나 머물렀는지·끝까지 읽었는지가 쌓인다. 여기에 수신자별 개인화 메일 발송이 붙어, 문서 회람과 메일 캠페인과 열람 분석을 한 도구로 묶는다.

메뉴는 둘이다 — 메일(캠페인 · 템플릿)과 문서(업로드 · 공유 · 분석).

문서

1. 올린다

HTML 본문을 업로드하면 Layer 가 제목 구조를 읽어 섹션으로 자동 분해한다. 이 섹션이 나중에 분석의 단위가 된다. PDF 를 함께 첨부하면 수신자의 내려받기가 그 PDF 를 준다. 첨부하지 않으면 뷰어의 인쇄 화면으로 대신한다.

같은 문서에 새 버전을 올려도 공유 링크는 그대로 유지된다. 이미 보낸 링크를 회수할 필요가 없다.

문서 소유자 외에 협업자를 이메일로 추가할 수 있다. 협업자는 소유자와 동일하게 문서와 링크를 관리한다.

2. 공유 링크를 만든다

링크마다 접근 방식을 따로 정한다.

접근 모드동작
공개링크만 있으면 바로 열린다
게이트열기 전에 이메일 또는 전화번호를 받는다
허용목록미리 등록한 이메일 · 전화 · 도메인만 통과

게이트와 허용목록에는 식별 정책(이메일 / 전화 / 둘 중 하나 / 둘 다)을 함께 지정한다. 링크에는 수신자 이름표를 붙일 수 있어, 나중에 분석 표에서 “누구의 링크인지”가 바로 보인다. 링크는 언제든 비활성·폐기할 수 있고 만료가 반영된 상태로 표시된다.

수신자 한 명당 전용 링크를 미리 발급해 두면, 그 사람은 게이트 화면 없이 곧바로 문서를 열면서도 신원이 붙는다.

링크별 검색엔진 색인 허용 스위치는 robots 지시만 제어한다 — 끈 링크의 뷰어는 <meta name="robots" content="noindex, nofollow"> 와 같은 값의 X-Robots-Tag 헤더를 내고, 켠 링크만 index, follow 와 고정 정본 주소(canonical, 공개 기준 주소)를 내어 두 주소로 서빙되는 같은 문서가 중복 색인되지 않게 한다. 이 스위치는 열람을 막지 않는다 — 누가 문서를 볼 수 있는지는 링크의 접근 모드(공개 / 게이트 / 허용목록)가 정하고, 공개 링크는 색인 지시와 무관하게 URL 을 아는 누구나, 그리고 robots 지시를 무시하는 크롤러도 본문을 가져갈 수 있다. 기본값은 꺼짐이며(이 기능 이전에 만든 링크도 전부 꺼짐, 백필 없음) 지시를 지키는 크롤러에만 효력이 있으므로, 비공개 자료의 보호는 접근 모드로 하고 이 스위치는 색인 노출 여부의 선언으로만 쓴다. 게이트 화면은 항상 색인되지 않는다. 스위치는 링크 생성 폼과 접근 방식 편집 화면에서 정하며, 체크를 지운 채 저장하면 꺼진다 — 실패 방향이 언제나 색인 안 함 쪽이다. 색인을 켠 링크는 문서 상세의 링크 목록에 색인 허용(robots 지시) 배지가 붙는다.

3. 받는 사람이 읽는다

무로그인 뷰어에는 목차 스크롤 추적, 읽은 섹션 표시, 모바일 반응형 레이아웃이 들어 있다. 문서 본문은 격리된 프레임 안에서 렌더되고 엄격한 콘텐츠 보안 정책이 걸린다.

읽는 사람이 할 수 있는 일:

  • 질문 남기기 — 문서나 특정 섹션에 질문을 남긴다. 소유자는 문서 상세에서 읽고 처리 표시를 한다.
  • 관심 표시 — 연락처를 남긴다. 익명으로 열람하던 방문도 이 시점에 이전 열람 기록과 이어 붙는다. 문서 끝까지 스크롤하면 이 CTA 바에 링크를 만든 사람의 이름 · 소속 · 이메일이 문의처로 함께 펼쳐진다(생성자가 없는 링크는 종전과 동일하게 표시).
  • 내려받기 — 첨부 PDF 또는 인쇄용 화면.

4. 어떻게 읽혔는지 본다

지표
조회 · 고유 방문자링크가 열린 횟수와 사람 수
완독률스크롤이 문서 끝에 얼마나 닿았는지
섹션 체류섹션별 누적 체류 시간 — 어디서 멈췄는지
활성도 등급0.5초 이상 본 섹션 비율과 완독률 기준 HOT ≥70% / WARM ≥50% / COLD
관심 · 내려받기연락처를 남긴 사람, 파일을 받아 간 횟수 (전 기간 누적)

분석은 문서 단위로 전 버전을 누적한다. 버전을 갈아 끼워도 그동안 쌓인 방문 이력이 리셋되지 않는다. 링크별로도 같은 지표를 나눠 본다.

문서 본문에 허용되는 것

업로드한 HTML 은 항상 정제(sanitize)를 거친다. 신뢰 표시 여부에 따라 허용 범위가 다르다.

일반 문서신뢰 문서
<style> 태그 · style 속성제거허용 (작성자 CSS 디자인 보존)
<script> · <input> · <button> · <form> · on* 이벤트 속성제거계속 제거
인터랙티브 요소없음Layer 가 검증·제공하는 위젯만

신뢰 표시는 로그인한 소유자만 업로드 시점에 지정할 수 있고, 새 버전을 올려도 그 상태가 승계된다. 신뢰 문서라도 작성자가 넣은 임의 스크립트는 실행되지 않는다 — 완화되는 것은 스타일뿐이다.

본문 이미지는 인라인 데이터로 넣지 않고 별도 자산으로 업로드한다. Layer 가 메타데이터를 제거하고 압축한 뒤, 서명된 토큰으로 인가해 같은 출처에서 서빙한다.

위젯은 본문에 표식 클래스를 넣으면 Layer 가 자기 코드로 보유·검증한 것만 붙여 준다. 예를 들어 벤처투자 소득공제 계산기는 모든 계산을 브라우저 안에서만 수행하고 입력값을 서버로 보내지 않는다.

공유 카드

카카오톡 · 슬랙 · 메일에서 링크를 펼쳤을 때 보이는 미리보기 카드의 제목과 요약을 문서마다 편집한다. 지정하지 않으면 브랜드 기본 썸네일을 쓴다.

발행 주체 브랜딩

문서를 발행한 법인의 이름 · 색 · 법적 푸터를 뷰어가 렌더한다. 지정하지 않은 문서는 Layer 기본 브랜딩으로 표시된다.

메일 캠페인

문서를 수신자별 전용 추적 링크로 감싼 HTML 메일을 보내고, 열람과 클릭이 누구의 것인지까지 되짚는 기능이다. 캠페인은 최상위 항목이라 이름과 본문을 스스로 갖고, 문서는 선택 첨부다 — 같은 문서를 여러 캠페인이 서로 다른 본문으로 재사용한다. 로그인한 팀원 누구나 캠페인을 열람·수정할 수 있다.

본문 쓰기

본문은 마크다운 서브셋(##/### 제목, - 불릿, 굵게, 문단, 링크)으로 쓰고 Layer 가 인라인 CSS 이메일 HTML 과 텍스트 대체본을 함께 만든다. 인사말·맺음말·푸터도 전부 본문이 소유하므로 통째로 고칠 수 있다.

  • 머지 변수 — 본문에 이중중괄호 토큰을 넣으면 수신자별 값으로 치환된다(예: 납입액, 발생이자, 수신자 이름). 미리보기와 실제 발송이 같은 경로를 탄다.
  • 파이프 필터 — 토큰 뒤에 | 로 서식 필터를 건다: krw · comma · number · percent · unit(억/만) · date · default. 값은 원본 그대로 저장하고 서식은 렌더 시점에 정한다 — 표기를 바꾸려면 본문 한 줄만 고치면 되고 데이터를 다시 올릴 필요가 없다.
  • 표 토큰 — 머지 값이 객체 배열이면 메일 안의 표로 렌더된다. 열 선택 · 헤더 · 정렬 · 폭 · 합계 행을 인자로 준다. 표 양식은 파일로 관리되어 캠페인마다 고를 수 있다.
  • 문서 CTA 토큰 — 문서로 가는 버튼과 대체 URL 의 위치·문구를 본문이 정한다.
  • 제목 머지 — 메일 제목도 수신자별로 치환된다.

수신자 데이터는 CSV 또는 JSON 배열로 올린다(이메일 우선, 없으면 이름으로 매칭). 올린 데이터는 그대로 다시 내려받을 수 있어 라운드트립이 성립한다.

검수 → 발송

  1. 미리보기 — 수신자를 골라 실제 발송본과 같은 렌더로 확인한다. 텍스트 버전도 따로 본다.
  2. 전체 HTML 편집 (선택) — 좌측 편집창 · 우측 실시간 미리보기. 저장하면 셸·본문·푸터 렌더를 건너뛰고 이 HTML 을 쓰되 머지·CTA·인라인 이미지는 그대로 동작한다.
  3. 카나리아 발송 — 실제 첫 수신자의 머지 값 · 제목 · 발신함 그대로 내부에 1통 보낸다. 캠페인은 초안 상태로 남는다.
  4. 본 발송 — 카나리아 시점의 지문(발신자 · 본문 · 대상)이 그대로일 때만 진행되며, 화면에 표시된 대상 수를 직접 입력해 확인한다. 시작 시점에 확정한 수신자 목록을 한 명씩 순차 발송한다.

캠페인 사이의 동시 발송은 잠금으로 막는다. 공급자 속도 제한은 재시도로 존중하고, 일부만 실패하면 실패한 수신자만 다시 보낼 수 있다. 발송 진행 상황은 실시간으로 폴링해 보여준다.

발송 리포트

발송이 끝나면 캠페인 화면이 리포트로 바뀐다.

  • 퍼널 — 발송 → 오픈(추정) → 클릭
  • 수신자 표 — 발송 상태 · 오픈 · 클릭을 각각 다른 열로 분리해서 본다(서로 다른 소스라 섞지 않는다)
  • 발송본 뷰어 — 수신자별로 실제 나간 HTML 과 제목의 스냅샷

오픈은 1×1 픽셀로 추정한다. 메일 앱의 프라이버시 보호 기능이 미리 이미지를 받아가면 실제보다 크게 잡히므로 리포트에 그 한계를 함께 적는다. 클릭은 본문의 외부 링크를 수신자별 토큰으로 치환해 집계하며, 메일 보안 스캐너가 링크를 미리 열어 보는 경우가 있어 역시 추정치다. 카나리아는 분모·분자에서 제외한다.

수신거부는 본문 하단의 컴플라이언스 푸터로 처리한다.

템플릿

이메일 디자인의 원본은 코드로 관리되고, 배포될 때마다 읽기 전용 버전으로 캡처된다. 캠페인은 발송을 시작하는 순간 그때의 버전에 고정되므로, 이후 디자인이 바뀌어도 이미 나간 캠페인의 모습은 변하지 않는다. 버전 목록 · 렌더 미리보기 · 버전 간 diff 를 화면에서 본다.

발송이 끝난 캠페인도 내 템플릿으로 저장하거나 복제해서 새 캠페인으로 시작할 수 있다. 내 템플릿은 /email-templates 에서 미리보기 · 이름 변경 · 보관한다.

화면과 경로

경로 변수는 :id 형태로 표기한다. 소유자 화면은 로그인이 필요하고, 상태를 바꾸는 요청은 동일 출처에서만 받는다. 공유 뷰어는 로그인이 필요 없다.

문서 · 링크

경로역할
/대시보드 — 문서 목록(검색 · 정렬 · 업로드)
/docs/:id문서 상세 — 개요 · 공유 · 질문 · 설정 탭
/docs/:id/edit · /source · /history블록 에디터 · 소스 보기 · 버전 이력과 복원
/docs/:id/analytics.json문서 분석 데이터(섹션 인게이지먼트 + 링크별 분석)
/docs/:id/questions.json받은 질문
/links/:id/...링크 접근모드 · 폐기 · 활성 · 이름표 · 허용목록

문서 에디터는 여러 사람이 동시에 편집할 수 있다. 블록 단위 잠금과 접속자 표시가 있고, 저장하지 않은 편집은 브라우저를 닫아도 보존된다.

캠페인 · 템플릿

경로역할
/campaigns · /campaigns/new목록 · 시작점(빈 캠페인 / 내 템플릿 / 복제)
/campaigns/:cid상세 — 초안이면 작업대, 발송 완료면 리포트
/campaigns/:cid/preview발송 전 검수(수신자 지정, 텍스트 버전)
/campaigns/:cid/editor전체 HTML 편집 + 실시간 미리보기
/campaigns/:cid/recipients · /merge-upload · /merge-export수신자 추가 · 머지 데이터 업로드 · 내려받기
/campaigns/:cid/send-canary · /send-main카나리아 1통 · 본 발송
/campaigns/:cid/messages/:mid발송본 뷰어
/email-templates템플릿 허브

공유 뷰어 (무로그인)

경로역할
/v/:slug뷰어 — 식별 게이트 또는 본문
/v/:slug/gate식별 정보 제출
/v/:slug/interest관심 표시 · 연락처
/v/:slug/question질문 남기기
/v/:slug/downloadPDF 첨부 또는 인쇄
/o/:token.gif메일 오픈 픽셀
/c/:token/:key메일 링크 클릭 후 목적지로 이동

로그인

조직 계정은 Microsoft Entra ID 로 로그인한다(/auth/sso/login). 허용된 이메일 도메인만 통과한다. SSO 가 설정되지 않은 환경에서는 비밀번호 로그인만 동작한다.

요금

/pricing 에서 플랜과 결제를 확인한다. 결제는 Paddle 을 통해 처리된다.

관련 문서

  • Gate — 결재와 전자계약 서명