개인정보처리방침
1. 한눈에 보기
- Visitown은 웹사이트 방문자를 픽셀 캐릭터로 보여 주는 익명 방문자 분석 서비스예요.
- 방문자의 IP 주소, 이름, 이메일, 입력 내용, 정확한 위치는 저장하지 않아요. 쿠키도 쓰지 않아요.
- 방문자 원본 기록은 7일 뒤 자동 삭제되고, 그 뒤엔 하루 단위 집계 숫자만 남아요.
- 개인정보를 팔거나 광고 목적으로 공유하지 않아요.
- 대시보드 사용자(사이트 운영자)의 계정 정보는 GitHub 로그인에서 받은 이메일과 사용자명이에요.
2. 운영자와 역할
이 서비스의 운영자(개인정보처리자)는 투민스이고, 연락처는 twomins9898@gmail.com이에요. 개인정보 보호책임자는 투민스 대표(운영자 본인)이에요.
Visitown이 다루는 데이터는 두 종류이고 역할이 달라요.
| 데이터 | 누구의 정보 | Visitown의 역할 |
|---|---|---|
| 방문자 데이터 | Visitown 스크립트가 설치된 웹사이트(이하 "고객 사이트")를 방문한 사람 | 수탁자(처리자). 고객 사이트 운영자(이하 "고객")가 개인정보처리자이고, Visitown은 고객을 대신해 처리해요. |
| 계정 데이터 | 대시보드에 로그인한 고객과 초대된 멤버 | 개인정보처리자. Visitown이 직접 책임져요. |
고객 사이트 방문자의 권리 행사(열람·삭제 등)는 1차로 해당 사이트 운영자에게 해 주세요. Visitown에 직접 연락하시면 해당 고객에게 전달하고 처리에 협조해요.
3. 방문자 데이터 (고객 사이트를 방문한 분)
3.1 수집 항목
| 항목 | 내용 | 비고 |
|---|---|---|
| 세션 식별자 | 브라우저가 만든 무작위 값(sess_…) | 탭을 닫으면 사라져요. 사람을 식별하는 값이 아니에요. |
| 재방문 여부 | 이 브라우저로 전에 방문한 적이 있는지(예/아니오) | 브라우저 저장소의 표시 하나뿐이에요. |
| 페이지 경로 | 방문한 페이지 주소의 경로(예 /pricing) | 쿼리 문자열(?…)과 해시(#…)는 전송 전에 제거해요. |
| 기기 종류 | PC · 모바일 · 태블릿 중 하나 | User-Agent에서 분류만 하고 원문은 저장하지 않아요. |
| 유입 종류 | 직접 · 검색 · SNS · 광고 중 하나 | 이전 페이지 주소(referrer)는 분류에만 쓰고 저장하지 않아요. 광고는 캠페인 값의 매체(cpc·paid 등)로 판단해요. |
| 캠페인 값 | 들어온 주소에 있는 utm_source·utm_medium·utm_campaign | 주소에 있을 때만, 각 40자까지 소문자로. 같은 탭 안에서는 처음 값을 vt_utm에 두고 세션 내내 같은 값을 보내요. |
| 나라 | ISO 두 글자 나라 코드(예 KR) | 프록시가 알려 준 나라, 또는 브라우저 시간대·언어에서 추정해요. 시간대·언어·IP는 저장하지 않아요. |
| 이벤트 종류·시각 | 입장, 페이지 이동, 활동 신호(15초), 퇴장, 고객이 정의한 커스텀 이벤트 | 활동 신호는 저장하지 않고 실시간 표시에만 써요. |
| 커스텀 이벤트 속성 | 고객이 보내기로 정한 값(예 금액, 상품 코드). 문자열·숫자·불리언 10개까지 | 고객은 여기에 이름·이메일·전화번호 등 개인정보를 넣지 않기로 약속해요(이용약관). |
| 봇 여부 | 검색엔진·크롤러로 보이면 봇 이름 | User-Agent로 판정만 하고 원문은 저장하지 않아요. |
| 오류 메시지(선택) | 고객이 오류 수집(data-errors="1")을 켠 사이트에서만: 자바스크립트 오류의 메시지, 스크립트 경로, 줄 번호 | 페이지 로드마다 5건, 메시지는 120자. 이메일 주소·16자 이상 토큰·7자리 이상 숫자는 보내기 전에 가려요. 커스텀 이벤트(js_error)와 같이 7일 뒤 삭제돼요. |
3.2 수집하지 않는 것
IP 주소(나라 판정에 쓴 뒤 버려요), User-Agent 원문, 이전 페이지 전체 주소, 입력한 내용·비밀번호, 화면 녹화, 정확한 위치, 광고 식별자, 기기 지문. 교차 사이트 추적을 하지 않아요. 세션 식별자는 사이트마다·탭마다 새로 만들어져 다른 사이트의 기록과 이어지지 않아요.
3.3 브라우저 저장소와 쿠키
쿠키는 쓰지 않아요. 브라우저 저장소에 아래 값만 둬요.
| 키 | 저장소 | 용도 | 보관 |
|---|---|---|---|
vt_sid | sessionStorage | 같은 탭 안에서 세션을 이어 주는 무작위 값 | 탭을 닫을 때까지 |
vt_seen | localStorage | 재방문 여부 표시(1) | 지울 때까지 |
vt_me | localStorage | 사이트 운영자가 자기 브라우저를 "나"로 표시할 때만 생겨요 | 지울 때까지 |
vt_utm | sessionStorage | 들어온 주소에 캠페인 값이 있을 때만, 그 값 | 탭을 닫을 때까지 |
EU·영국처럼 저장소 접근에 동의가 필요한 지역의 방문자를 위해, 고객은 스크립트를 동의 대기 모드(data-consent="wait")로 설치하고 동의 뒤에만 수집을 시작하게 할 수 있어요. 동의 전에는 어떤 값도 저장·전송하지 않아요.
3.4 처리 목적과 법적 근거
목적은 고객 사이트의 방문 현황을 실시간·집계로 보여 주는 것 하나예요. 법적 근거는 고객이 정해요. 보통 고객의 정당한 이익(GDPR 제6조 1항 f호: 자기 사이트 이용 현황 파악)이며, 지역 법이 동의를 요구하면 고객이 동의를 받아요. Visitown은 고객의 지시(이 방침과 이용약관) 범위 안에서만 처리해요.
3.5 보관 기간
| 데이터 | 보관 |
|---|---|
| 이벤트 원본(세션 식별자 포함) | 7일. 매시간 자동 삭제해요. 고객 사이트가 삭제되면 즉시 함께 삭제돼요. |
| 일별 집계(페이지별 방문 수 등) | 개인 단위 정보가 없는 숫자라 고객 사이트가 삭제될 때까지 보관해요. |
| 실시간 세션(서버 메모리) | 마지막 활동 신호로부터 45초 뒤 사라져요. |
3.6 제3자 제공
방문자 데이터를 제3자에게 판매·제공하지 않아요. 아래 수탁자(5절)가 Visitown을 대신해 저장·전송만 해요. 방문자의 IP 주소는 외부 GeoIP 서비스로 보내지 않아요.
4. 계정 데이터 (대시보드 사용자)
4.1 수집 항목
| 항목 | 출처·내용 |
|---|---|
| 로그인 정보 | GitHub 로그인(OAuth)으로 받은 이메일 주소, GitHub 사용자명, 표시 이름, 고유 ID. 비밀번호는 받지 않아요. |
| 사이트 정보 | 등록한 사이트 이름과 도메인, 건물·이벤트 설정 |
| 멤버·초대 | 초대한 사람, 참여한 사람, 역할(보기·편집), 초대 링크 만든 시각·만료 시각 |
| 접속 기록 | 서버 운영을 위한 요청 로그(시각, 요청 경로, 응답 코드, IP 주소). 보안·장애 대응에만 쓰고 30일 안에 삭제해요. |
| 브라우저 저장소 | 대시보드의 vt_* 키: 연결한 서버 주소·선택한 사이트·로그인 토큰·화면 토글·언어 같은 개인 설정. 서버로 보내지 않아요(토큰은 API 호출에만 써요). |
4.2 목적과 법적 근거
- 서비스 제공·계정 관리·멤버 초대 — 계약 이행(GDPR 제6조 1항 b호)
- 보안, 악용·장애 대응 — 정당한 이익(제6조 1항 f호)
- 법적 의무 이행 — 제6조 1항 c호
- 중요한 변경 안내 메일 — 계약 이행. 마케팅 메일은 보내지 않아요.
4.3 보관
계정을 삭제할 때까지 보관해요. 대시보드 설정 메뉴의 계정 삭제로 직접 지울 수 있고, 그 즉시 로그인 계정·소유한 사이트·방문자 데이터·집계·멤버 자격이 삭제돼요. 이메일로 요청하면 30일 안에 처리하고, 백업에 남은 사본은 최대 30일 안에 사라져요. 법령이 보관을 요구하는 기록은 그 기간만큼 보관해요.
5. 처리 위탁(수탁자)
| 수탁자 | 하는 일 | 위치 |
|---|---|---|
| Supabase, Inc. | 데이터베이스·로그인(인증) 저장 | 대한민국(서울) |
| Vercel, Inc. | 대시보드 정적 파일 호스팅 | 글로벌 CDN(미국 본사) |
| GitHub, Inc. | OAuth 로그인. GitHub가 Visitown에 주는 정보는 4.1 참고 | 미국 |
| Fly.io, Inc. | 이벤트 수집 서버(API·SSE) 실행 | 일본(도쿄) |
수탁자가 바뀌면 이 문서를 갱신하고, 고객에게는 적용 14일 전에 알려요.
6. 국외 이전
위 수탁자 중 일부는 대한민국·EU 밖(주로 미국)에 있어요. 이전되는 항목은 3·4절의 데이터, 이전 시점은 수집 즉시(네트워크 전송), 방법은 암호화된 통신(TLS)이에요. EU·영국·스위스 개인정보는 표준계약조항(SCC)·영국 IDTA, 또는 EU-US Data Privacy Framework 등 인정된 보호장치를 갖춘 수탁자에게만 이전해요. 대한민국 개인정보보호법에 따른 국외 이전 고지 사항(받는 자, 국가, 시기·방법, 항목, 목적·보관기간)은 이 절과 5절의 표가 갈음해요. 이전을 원치 않으시면 서비스를 이용하지 않거나 계정 삭제를 요청하실 수 있어요.
7. 안전조치
- 모든 전송은 TLS로 암호화해요. 수집 스크립트는 쿠키·인증 정보를 함께 보내지 않아요(
credentials: omit). - 서버는 IP 주소를 나라 판정에만 쓰고 저장하지 않으며, 허용 목록에 없는 속성은 버려요.
- 대시보드는 사이트 소유자와 초대된 멤버만 볼 수 있고, 역할(보기·편집)로 권한을 나눠요.
- 데이터베이스 접근 키는 서버에만 두고 코드·저장소에 넣지 않아요.
- 침해가 발생하면 인지한 뒤 지체 없이(고객에게는 72시간 안에) 알리고 관계 기관 신고 의무를 지켜요.
8. 이용자의 권리
어디에 계시든 아래 권리를 행사하실 수 있어요. 요청은 twomins9898@gmail.com로 보내 주세요. 본인 확인 뒤 한 달 안에(대한민국 거주자는 10일 안에) 답해요. 요청은 무료이고, 권리를 행사했다고 불이익을 드리지 않아요.
- 열람·사본: 어떤 정보를 갖고 있는지 확인하고 사본을 받기
- 정정·삭제: 잘못된 정보 고치기, 계정과 데이터 지우기
- 처리 정지·제한, 반대: 정당한 이익에 근거한 처리에 반대하기
- 이동: 계정 데이터를 기계가 읽을 수 있는 형식으로 받기
- 동의 철회: 동의에 근거한 처리는 언제든 철회 가능. 철회 전 처리의 적법성에는 영향이 없어요.
- 불만 제기: 감독기관에 신고할 수 있어요. 대한민국은 개인정보보호위원회(privacy.go.kr)·개인정보침해신고센터(118), EU는 거주 회원국 감독기관, 영국은 ICO.
8.1 지역별 추가 안내
- EU·EEA·영국·스위스(GDPR·UK GDPR·FADP): 방문자 데이터의 개인정보처리자는 고객 사이트 운영자이고 Visitown은 처리자(제28조)예요. 고객과의 데이터 처리 계약은 이용약관의 "데이터 처리 조항"이에요. EU 대리인: 해당 없음.
- 미국 캘리포니아(CCPA/CPRA) 등 주 개인정보법: Visitown은 개인정보를 판매하지 않고, 맞춤형 광고를 위해 공유하지 않아요. 지난 12개월 동안도 마찬가지예요. 알 권리·삭제·정정·차별받지 않을 권리를 위 연락처로 행사하실 수 있어요. 고객 사이트에 대해서는 Visitown이 "service provider"예요. Global Privacy Control 신호는 판매·공유가 없어 적용할 대상이 없어요.
- 대한민국(개인정보보호법): 열람·정정·삭제·처리정지·동의철회를 요구하실 수 있고, 법정대리인을 통해서도 가능해요. 개인정보 보호책임자는 2절에 있어요. 만 14세 미만 아동의 개인정보는 수집하지 않아요.
- 브라질(LGPD)·기타: 해당 지역 법이 정한 권리를 같은 방법으로 행사하실 수 있어요.
9. 아동
Visitown 대시보드는 만 14세(지역에 따라 13·16세) 미만을 대상으로 하지 않고, 해당 연령의 계정을 알게 되면 삭제해요. 고객 사이트의 방문자 데이터는 익명 통계라 나이를 알 수 없어요. 아동 대상 사이트에 설치하는 고객은 해당 법(COPPA 등)에 따라 필요한 동의를 직접 받아야 해요.
10. 변경
이 방침이 바뀌면 상단 시행일을 갱신하고, 중요한 변경은 적용 14일 전에 대시보드와 이메일로 알려요. 이전 버전은 요청하시면 드려요.
11. 연락처
개인정보 문의·권리 행사·침해 신고: twomins9898@gmail.com
운영자: 투민스(서울시 관악구), 사업자등록번호 404-10-65510
개인정보 보호책임자: 투민스 대표(운영자 본인)
이용약관은 여기에 있어요.
Privacy Policy
1. At a glance
- Visitown is an anonymous visitor analytics service that shows website visitors as pixel characters.
- We do not store visitors' IP addresses, names, email addresses, form input, or precise location. We do not use cookies.
- Raw visitor events are deleted automatically after 7 days; only daily aggregate counts remain afterwards.
- We never sell personal data and never share it for advertising.
- Dashboard users (site owners) sign in with GitHub; we receive their email address and username.
2. Who we are and our role
The operator of this service is Twomins (투민스), reachable at twomins9898@gmail.com. The privacy officer is the representative of Twomins (the operator).
Visitown handles two kinds of data in two different roles.
| Data | Whose data | Visitown's role |
|---|---|---|
| Visitor data | People who visit a website where the Visitown script is installed (a "Customer Site") | Processor / service provider. The Customer Site's operator (the "Customer") is the controller; Visitown processes on the Customer's behalf. |
| Account data | Customers and invited members who sign in to the dashboard | Controller. Visitown is directly responsible. |
If you are a visitor of a Customer Site, please direct rights requests (access, deletion, etc.) to that site's operator first. If you contact Visitown directly, we will forward your request to the Customer and assist them.
3. Visitor data (people visiting a Customer Site)
3.1 What we collect
| Item | Content | Notes |
|---|---|---|
| Session identifier | A random value generated by the browser (sess_…) | Discarded when the tab is closed. It does not identify a person. |
| Returning flag | Whether this browser has visited before (yes/no) | A single flag in browser storage. |
| Page path | The path of the page viewed (e.g. /pricing) | Query strings (?…) and fragments (#…) are removed before sending. |
| Device class | One of desktop, mobile, tablet | Derived from the User-Agent; the raw string is not stored. |
| Traffic source | One of direct, search, social, ad | The referrer URL is used only for this classification and is not stored. "Ad" is derived from a paid campaign medium (cpc, paid, …). |
| Campaign tags | utm_source, utm_medium, utm_campaign from the landing URL | Only when present; each lower-cased and cut to 40 characters. Within one tab the first values are kept in vt_utm and sent for the whole session. |
| Country | ISO two-letter code (e.g. KR) | From a country header provided by the hosting proxy, or inferred from the browser time zone and language. Time zone, language and IP address are not stored. |
| Event type and time | Session start, page view, activity heartbeat (every 15 s), page leave, and custom events defined by the Customer | Heartbeats are used for the live view only and are not stored. |
| Custom event properties | Values the Customer chooses to send (e.g. amount, product code); up to 10 strings, numbers or booleans | Customers agree (Terms of Service) not to include personal data such as names, emails or phone numbers. |
| Bot flag | Name of the crawler, if the request looks like a search engine or bot | Determined from the User-Agent; the raw string is not stored. |
| Error messages (optional) | Only on sites where the Customer enabled error reporting (data-errors="1"): the message, script path and line number of JavaScript errors | At most 5 per page load, messages cut to 120 characters. E-mail addresses, tokens of 16+ characters and numbers of 7+ digits are masked before sending. Stored as a custom event (js_error) and deleted after 7 days like other raw events. |
3.2 What we do not collect
IP addresses (used only to determine the country, then discarded), raw User-Agent strings, full referrer URLs, form input or passwords, session recordings, precise location, advertising identifiers, device fingerprints. We do not track visitors across sites: the session identifier is generated per site and per tab and cannot be linked to records from other sites.
3.3 Browser storage and cookies
We do not use cookies. The script stores only the following values in browser storage.
| Key | Storage | Purpose | Lifetime |
|---|---|---|---|
vt_sid | sessionStorage | Random value that keeps a session together within one tab | Until the tab is closed |
vt_seen | localStorage | Returning-visitor flag (1) | Until cleared |
vt_me | localStorage | Set only when a site owner marks their own browser as "me" | Until cleared |
vt_utm | sessionStorage | Campaign tags from the landing URL, only when present | Until the tab is closed |
For visitors in regions where storage access requires consent (EU/EEA, UK), Customers can install the script in consent-wait mode (data-consent="wait") so that nothing is stored or sent until consent is given.
3.4 Purpose and legal basis
The sole purpose is to show the Customer how their site is being visited, live and in aggregate. The legal basis is determined by the Customer, typically the Customer's legitimate interest (GDPR Art. 6(1)(f): understanding the use of their own website); where local law requires consent, the Customer obtains it. Visitown processes only within the Customer's instructions (this Policy and the Terms of Service).
3.5 Retention
| Data | Retention |
|---|---|
| Raw events (including session identifier) | 7 days, pruned automatically every hour. Deleted immediately when the Customer Site is deleted. |
| Daily aggregates (views per page, etc.) | Contain no individual-level data; kept until the Customer Site is deleted. |
| Live sessions (server memory) | Expire 45 seconds after the last heartbeat. |
3.6 Disclosure to third parties
We do not sell or disclose visitor data to third parties. The sub-processors in Section 5 only store and transmit data on our behalf. Visitor IP addresses are not sent to any external GeoIP service.
4. Account data (dashboard users)
4.1 What we collect
| Item | Source and content |
|---|---|
| Sign-in data | From GitHub sign-in (OAuth): email address, GitHub username, display name, user ID. We never receive your password. |
| Site data | Names and domains of registered sites, building and event settings |
| Members and invites | Who invited whom, who joined, role (viewer/editor), invite creation and expiry times |
| Server logs | Request logs for operating the service (time, path, status code, IP address). Used only for security and incident response; deleted within 30 days. |
| Browser storage | Dashboard vt_* keys: connected server address, selected site, sign-in token, view toggles, language. Not sent to the server (the token is only used to call the API). |
4.2 Purposes and legal bases
- Providing the service, managing accounts and member invites — performance of a contract (GDPR Art. 6(1)(b))
- Security, abuse prevention and incident response — legitimate interest (Art. 6(1)(f))
- Compliance with legal obligations — Art. 6(1)(c)
- Notices about important changes — performance of a contract. We do not send marketing email.
4.3 Retention
Kept until you delete your account. You can delete it yourself with Delete account in the dashboard settings menu, which immediately removes the login account, the sites it owns, their visitor data and aggregates, and your memberships. Requests by email are completed within 30 days, and copies remaining in backups are removed within 30 days at most. Records that the law requires us to keep are retained for the required period.
5. Sub-processors
| Sub-processor | Purpose | Location |
|---|---|---|
| Supabase, Inc. | Database and authentication storage | South Korea (Seoul) |
| Vercel, Inc. | Hosting of the dashboard's static files | Global CDN (headquartered in the US) |
| GitHub, Inc. | OAuth sign-in; see 4.1 for what GitHub provides to Visitown | United States |
| Fly.io, Inc. | Runs the event collection server (API, SSE) | Japan (Tokyo) |
When sub-processors change, we update this document and notify Customers 14 days before the change takes effect.
6. International transfers
Some sub-processors are located outside South Korea and the EU (mainly in the United States). The data transferred is described in Sections 3 and 4; transfer happens at the time of collection over encrypted connections (TLS). Personal data from the EU/EEA, UK and Switzerland is transferred only to sub-processors covered by recognised safeguards such as the EU Standard Contractual Clauses, the UK IDTA/Addendum, or the EU-US Data Privacy Framework. For the purposes of the Korean Personal Information Protection Act, the recipient, country, timing and method, items, purpose and retention of overseas transfers are those stated in this Section and the table in Section 5. If you do not wish your data to be transferred, you may stop using the service or request account deletion.
7. Security
- All traffic is encrypted with TLS. The tracking script sends no cookies or credentials (
credentials: omit). - The server uses IP addresses only to determine the country and does not store them; properties not on the allow-list are discarded.
- Dashboards are visible only to the site owner and invited members, with viewer/editor roles.
- Database keys are kept on the server only and never in code or repositories.
- In the event of a breach we give notice without undue delay after becoming aware of it (to Customers, within 72 hours) and comply with regulatory notification duties.
8. Your rights
Wherever you live, you can exercise the rights below by emailing twomins9898@gmail.com. After verifying your identity we respond within one month (within 10 days for residents of South Korea). Requests are free of charge, and we will not discriminate against you for exercising your rights.
- Access and copy: learn what data we hold about you and receive a copy
- Rectification and erasure: correct inaccurate data; delete your account and data
- Restriction and objection: object to processing based on legitimate interest
- Portability: receive your account data in a machine-readable format
- Withdraw consent: at any time, without affecting the lawfulness of prior processing
- Complain: to a supervisory authority — in South Korea the Personal Information Protection Commission (privacy.go.kr) or the Privacy Call Centre (118); in the EU your member state's authority; in the UK the ICO.
8.1 Region-specific notices
- EU/EEA, UK, Switzerland (GDPR, UK GDPR, FADP): for visitor data the Customer is the controller and Visitown is the processor (Art. 28). Our data processing agreement with Customers is the "Data Processing Terms" section of the Terms of Service. EU representative: not applicable.
- California (CCPA/CPRA) and other US state laws: Visitown does not sell personal information and does not share it for cross-context behavioural advertising, and has not done so in the preceding 12 months. You may exercise your rights to know, delete, correct and not be discriminated against via the contact above. For Customer Sites, Visitown acts as a "service provider". Because we do not sell or share, Global Privacy Control signals have nothing to opt out of.
- South Korea (PIPA): you may request access, correction, deletion, suspension of processing and withdrawal of consent, also through a legal representative. The privacy officer is listed in Section 2. We do not collect personal data of children under 14.
- Brazil (LGPD) and elsewhere: you may exercise the rights granted by your local law in the same way.
9. Children
The Visitown dashboard is not directed at children under 14 (13 or 16 depending on jurisdiction), and we delete such accounts when we become aware of them. Visitor data on Customer Sites is anonymous statistics and does not reveal age. Customers who install Visitown on sites directed at children are responsible for obtaining any consent required by applicable law (e.g. COPPA).
10. Changes
When this Policy changes we update the effective date above; material changes are announced in the dashboard and by email 14 days before they take effect. Previous versions are available on request.
11. Contact
Privacy questions, rights requests, breach reports: twomins9898@gmail.com
Operator: Twomins (투민스), Gwanak-gu, Seoul, Republic of Korea, business registration number 404-10-65510
Privacy officer: the representative of Twomins (the operator)
The Terms of Service are here.