가이드
사이트에 임베드하기
script 태그 하나, HTML 어디든:
당신의 페이지가 로딩된 뒤에 불러와지고, 구석에 버튼을 그려, 채팅은 격리된 프레임 안에서 열립니다 — 그래서 그 안의 것은 당신의 페이지 스타일, 스크립트, 쿠키에 닿을 수 없고, 당신의 페이지의 것도 대화를 읽을 수 없습니다.
키는 공개되어 있고, 괜찮습니다
페이지 소스에 나타납니다 — 그럴 수밖에 없으므로. 당신을 보호하는 것은 기밀이 아니라 도메인 allowlist입니다: 등록하지 않은 도메인에서 당신의 키를 싣고 온 요청은 거절됩니다. 일반적인 웹사이트 설정에서는, 누군가가 당신의 키를 읽을 수는 있어도, 다른 사이트에서 쓸 수는 없습니다.
그러므로 실제 도메인을 등록하고, 그 외에는 등록하지 마세요. 서빙하고 있다면 www.을 추가하고, 테스트 중이라면 staging 도메인도 추가하세요. 모바일 앱을 위해 no-origin 접근을 의도적으로 켜두었다면, 모바일 가이드에 있는 대로 install 등록을 사용하세요.
allowlist는 브라우저 대상 통제입니다. 범용이 아닌 API 클라이언트는 Origin 헤더를 위조할 수 있으므로, 공개 키를 API 비밀로 취급하지 마세요.
어디에 넣는가
- Webflow — Project settings → Custom code → Footer code.
- Squarespace — Settings → Advanced → Code injection → Footer.
- WordPress — 스니펫 플러그인, 또는 테마의 푸터 템플릿. 게시글에 붙여넣지 마세요 — 그 글에서만 로딩됩니다.
- Shopify — Online store → Themes → Edit code →
theme.liquid,</body>직전. - Framer, Wix, Carrd — 각각 사이트 전체에 적용되는 custom code 또는 임베드 패널이 있습니다. 페이지별 블록이 아니라, 사이트 전체용을 쓰세요.
- 직접 쓴 HTML —
</body>앞에.
대화는 알아서 이어집니다
위젯은 브라우저의 local storage에 대화 id를 보관하므로, 다른 페이지로 이동하거나 나중에 돌아온 방문자가 같은 대화를 다시 엽니다. id는 서명되어 있으므로, 방문자가 다른 사람의 채팅으로 고칠 수 없습니다.
사이트에 백엔드가 있고, 대화의 주체성을 직접 관리하고 싶다면 — 예를 들어 로그인한 고객 한 명당 스레드 하나 — 그 것도 지원됩니다: 서버가 공개 키 대신, 짧은 유효기의 서명 토큰을 발행합니다. 문의해 주시면 그대로 진행해 드리겠습니다.
Content-Security-Policy
사이트가 CSP를 보내고 있다면, 기존 script, frame, connection directive에 https://kavilo.cloud를 추가하세요:
차단된 위젯은 페이지에서는 조용하고, 브라우저 콘솔에서는 시끄럽습니다 — 아무것도 안 보이면, 먼저 콘솔을 확인하세요.
제거하기
script 태그를 삭제하세요. 사이트에 남는 것은 아무것도 없습니다. 포털에서 봇을 삭제해 키를 무효화하면, 놓친 임베드가 있더라도 즉시 동작을 멈춥니다. 봇 삭제로 저장된 대화나 수집된 리드가 즉시 지워지지는 않습니다 — 보관 정리까지 남습니다.