개인정보
Storefront Ninja가 무엇을 저장하는지, 각각 왜 필요한지, 어디에 보관하는지, 어떻게 삭제를 요청하는지 알려 드려요.
운영하는 곳
Storefront Ninja는 mixtape.works의 제품이고 Human Hygiene Kft.(1163 Budapest, Datolya utca 40., 헝가리, 법인 등록 번호 01-09-464537, EU 부가세 번호 HU12087783, 자세한 내용은 mixtape.works/imprint)가 운영해요. 이 페이지의 내용에 관해서는 support@mixtape.works로 문의하세요.
판매자와 구매자
여기서 쇼핑몰을 연 판매자는 우리 고객이고, 아래 내용은 모두 판매자에 관한 거예요. 그 쇼핑몰에서 물건을 사는 구매자는 우리가 아니라 판매자에게서 사는 거예요. 구매자에게 무엇을 물을지는 판매자가 정하고, 우리는 쇼핑몰이 돌아가도록 판매자의 지시에 따라 그 정보를 대신 보관해요.
무엇을 저장하고 왜 필요한지
- 쇼핑몰이에요. 이름, 열리는 주소(yourshop.storefront.ninja), 쓰는 언어, 가격 통화, 국가와 시간대, 요금제, 결제 방법이에요. 자기 Stripe 계정으로 카드 결제를 받는지, 수령 시 결제을 받는지, 구매자에게 이체하라고 안내하는 계좌 예금주와 IBAN과 입금 메모에 쓰라고 하는 내용이에요. 그리고 구매자가 판매자에게 연락하는 방법인 쇼핑몰의 문의 이메일 주소, 전화번호, 사업장 주소예요. 판매자가 로고나 탭 아이콘을 올렸다면 저장된 파일, 탭 아이콘에서 만든 폰이 필요로 하는 세 가지 크기의 홈 화면 아이콘, 고른 강조 색상, 쇼핑몰을 항상 밝게나 항상 어둡게 했는지도 여기에 보관해요. 모두 공개 정보예요. 구매자가 쇼핑몰 페이지에서 보는 것이에요. 이게 없으면 그 주소에서 보여 줄 게 없고, 쇼핑몰의 요금을 알 수 없고, 구매자가 판매자에게 결제할 방법도 없어요.
- 쇼핑몰 관리자를 열 수 있는 사람이에요. mixtape 계정의 id, 그 계정이 확인한 이메일 주소, 쇼핑몰의 주인인지 일하는 사람인지예요.
- 로그인한 브라우저예요. 쿠키에 든 무작위 토큰, 그 브라우저가 속한 mixtape 계정, 그 계정의 이메일 주소와 이름, 고른 언어, 세션이 시작되고 마지막으로 쓰이고 만료되는 때예요. 로그인은 모든 mixtape 제품의 단일 로그인인 account.mixtape.works의 mixtape 계정이 처리하므로 Storefront Ninja는 비밀번호를 보지도 보관하지도 않아요.
- 여기에 로그인한 모든 사람의 mixtape 계정이에요. 계정 id, 확인된 이메일 주소, 계정의 이름, 처음과 마지막으로 로그인한 때예요. 첫 날짜로 얼마나 오래 함께했는지 알 수 있고, 쇼핑몰 관리자는 이 계정에 연결돼요.
- 진행 중인 로그인이에요. account.mixtape.works에서 돌아오는 응답을 브라우저가 시작한 로그인에 묶는 무작위 값이고, 나에 관한 건 없어요. 돌아오는 즉시 삭제하고, 어떤 경우에도 15분 안에 삭제해요.
- 쇼핑몰이 파는 것이에요. 상품 번호, 가격과 세일 가격(정수와 통화 코드), 판매자가 입력했다면 무게, 재고 수, 쇼핑몰에 보이는지, 올린 때와 마지막으로 바꾼 때예요. 판매자 자신의 카탈로그이고, 쇼핑몰이 돌아가도록 판매자를 위해 보관해요.
- 상품의 글이에요. 판매자가 쓰는 언어마다 한 세트이고, 이름, 짧은 설명과 긴 설명, 판매자가 쓸 수 있는 Google용 제목과 설명, 쇼핑몰 안에서 열리는 주소예요. 판매자가 쓰고 구매자가 읽어요.
- 상품 사진이에요. 각 사진이 저장된 파일과 보여 주는 순서예요. 판매자가 올리고, 구매자가 상품 페이지에서 보는 것이라 공개돼요.
- 쇼핑몰이 물건을 보내는 방식과 청구하는 금액이에요. 배송 방법마다 가는 국가와 가격입니다. 단일 가격과 무료가 되는 주문 금액, 또는 주문 금액이나 무게별 구간(shipping_method_bands 참고)이고, 정수와 통화 코드로 보관해요. 판매자가 쓰고 구매자가 결제에서 읽어요. 배송 방법이 없는 쇼핑몰은 주문을 직접 수령으로 받아요.
- 배송 방법의 이름이에요. 판매자가 쓰는 언어마다 하나씩이에요. 판매자가 쓰고 구매자가 읽어요.
- 단일 가격이 아니라 주문 금액이나 무게로 가격이 정해지는 배송 방법의 구간이에요. 각 구간의 경계와 그 안에서 청구하는 금액이고, 정수와 통화 코드로 보관해요. 판매자가 쓰고 구매자가 결제에서 읽어요.
- 자기 세율이 있는 국가별로 정한 부가세율이에요(예: 독일 19%). 개인정보는 없어요.
- 이름을 붙인 세금 분류(예: 도서 5%)와 기본 세율이에요. 개인정보는 없어요.
- 자기 세율이 있는 국가별로 세금 분류에 정한 세율이에요. 개인정보는 없어요.
- 인보이스 발행이 제품에서 빠지기 전에 발행한 인보이스예요. 각 인보이스의 번호와 날짜, 취소된 주문의 취소 문서, 각각 보관된 PDF예요. 지금은 제품의 어떤 부분도 이것을 읽거나 보내지 않고, 새 인보이스도 발행하지 않아요.
- 이 쇼핑몰들 중 한 곳에서 누군가 한 주문이에요. 주문 번호, 구매자의 이메일 주소, 이름, 전화번호, 배송 주소, 남긴 메모, 주문한 언어, 선택한 결제 방식, 금액(정수와 통화 코드), 쓴 할인 코드와 할인액, 발송 방식(그날의 배송 방법 이름과 배송비), 현재 상태, 주문한 때, 구매자 전용 링크의 무작위 토큰이에요. 구매자가 장바구니에 처음 담을 때 캠페인 태그(utm_source, utm_medium, utm_campaign, 뉴스레터 링크나 유료 광고 등)가 있었다면 그 태그도 주문에 보관해서 판매자가 매출이 어느 경로에서 왔는지 알 수 있게 해요. 태그가 없는 주문은 아무도 태그를 붙이지 않았거나 직접 입력한 주문이에요. 구매자는 이 모든 정보를 우리가 아니라 판매자에게 줬고, 우리는 쇼핑몰이 돌아가도록 판매자를 위해 보관해요. 회사 이름과 EU 부가세 번호를 입력한 사업자 구매자의 경우 둘 다 주문에 보관하고, 리버스 차지(부가세 없음) 판매였는지와 VIES가 번호가 유효하다고 확인한 날도 보관해요. 번호는 번호가 유효한지만 답하는 유럽연합 집행위원회의 VIES 서비스로 보내고, 구매자에 관한 다른 정보는 보내지 않으며, 그 답은 한 시간 동안 메모리에만 있고 데이터베이스에는 절대 두지 않아요. 구매자의 은행이 카드 결제에 이의를 제기하면 Stripe가 알려 준 분쟁 내용을 보관해요. 사유, 분쟁 금액, Stripe가 정한 답변 기한, 나중에 판매자에게 유리하게 결정됐는지 차지백으로 졌는지예요. 주인이 발송으로 표시하면 입력한 택배사 운송장 번호와 링크도 주문에 보관되고 그 구매자에게 보여요.
- 주문에 든 것이에요. 어느 상품과 어느 옵션 조합(사이즈, 색상)을 가리키는지, 그리고 주문한 순간에 적혀 있던 그대로의 이름, 옵션, 상품 번호, 단가, 수량, 항목 합계예요. 일부러 사본을 두어서, 이후 판매자가 가격을 바꿔도 이미 한 주문은 바뀌지 않아요.
- 주문이 어디를 거쳤는지예요. 거친 모든 상태(신규, 결제 완료, 발송, 취소), 그 상태가 된 때, 상태를 바꾼 쇼핑몰 담당자의 이메일 주소(구매자가 직접 누른 경우는 없음)예요. 판매자가 ‘언제 보냈나요?’에 답할 수 있게 하고, 주문에 분쟁이 생기면 무슨 일이 있었는지 알 수 있게 해요.
- 제품이 주문에 관해 보내는 모든 메시지와, 쇼핑몰 주인에게 쇼핑몰 자체에 관해 보내는 모든 알림이에요. 요금제 결제 실패, 연간 요금제 갱신 예정, 폐쇄, 첫 상품 추가 안내, 주간 숫자 이메일 등이에요. 어떤 종류였는지, 받는 주소, 답장이 가는 주소, 제목, 우리 주소 중 어느 것에서 보냈는지, 보낸 시각, 전달이 됐는지를 보관해요. 마지막은 메일 서비스가 받았는지, 나중에 알려 주면 받는 메일 서버가 받았는지 거부했는지(이유 포함), 받은 사람이 스팸으로 신고했는지예요. 메시지 자체는 보관하지 않고 그런 일이 있었다는 사실만 보관해요. 덕분에 판매자는 구매자가 주문에 대해 안내받았는지, 주인이 쇼핑몰에 대해 안내받았는지를 바라기만 하지 않고 확인할 수 있어요.
- 판매자가 상품을 묶는 방식과 한 단계 깊이로 중첩되는 방식이에요. 보이는 순서, 어느 것이 어느 것 안에 있는지, 판매자의 사진, 각각 만든 때와 마지막으로 바꾼 때예요. 판매자 자신의 카탈로그이고, 쇼핑몰이 보여 줄 수 있도록 판매자를 위해 보관해요.
- 카테고리 이름과 페이지 위아래의 글이에요. 판매자가 쓰는 언어마다 한 세트이고, 쇼핑몰 안에서 열리는 주소도 있어요. 판매자가 쓰고 구매자가 읽어요.
- 판매자의 어떤 상품이 어떤 카테고리에 들어 있는지예요. 상품은 여러 카테고리에 동시에 들어갈 수 있어요. 판매자가 정하고, 카테고리를 둘러보는 구매자가 읽어요.
- 사이즈나 색상처럼 판매자가 상품을 파는 옵션과 보여 주는 순서예요. 판매자 자신의 카탈로그의 일부이고, 쇼핑몰이 보여 줄 수 있도록 판매자를 위해 보관해요.
- 옵션 이름이에요. 사이즈와 Méret처럼 판매자가 쓰는 언어마다 하나씩이에요. 판매자가 쓰고 구매자가 읽어요.
- S, M, L 같은 옵션의 값과 보여 주는 순서예요. 판매자 자신의 카탈로그의 일부예요.
- 각 옵션 값의 단어예요. Red와 Piros처럼 판매자가 쓰는 언어마다 하나씩이에요. 판매자가 쓰고 구매자가 읽어요.
- 구매할 수 있는 상품 옵션의 각 조합이에요. 판매자의 상품 번호, 재고, 상품보다 얼마나 더 비싸거나 싼지, 만든 때와 마지막으로 바꾼 때예요.
- 각 조합을 이루는 값이에요. 사이즈 M과 색상 빨강처럼요. 여기에는 그 밖의 것을 저장하지 않아요.
- 첫 페이지가 어떤 블록으로 이뤄지는지를 내가 정한 순서대로, 그리고 각 블록의 설정이에요. 종류, 크기와 모양, 상품 정렬, 연결 주소, 보여 주는 사진(올린 파일 이름)이에요. 글은 들어 있지 않아요. 글은 블록과 언어마다 한 줄로 따로 보관해요. 전부 공개 정보예요. 구매자가 쇼핑몰 첫 페이지에서 보는 것이에요. 쇼핑몰마다 한 줄이에요.
- 첫 페이지 블록에 쓴 글이에요(헤드라인, 문구 한 줄, 버튼 문구, 사진 설명, 글 블록, 제목). 블록마다, 쓴 언어마다 한 줄이에요. 내가 쓰고 구매자가 자기 언어로 읽어요.
- 소개나 반품 정책 같은 판매자의 페이지예요. 페이지마다 웹 주소, 게시 여부, 목록의 순서, 만든 때와 마지막으로 바꾼 때예요.
- 그 페이지들의 제목과 본문이에요. 언어마다 한 세트예요. 판매자가 쓰고 페이지가 게시된 뒤 구매자가 읽어요.
- 판매자의 할인 코드예요. 각 코드, 비율인지 금액인지, 쓸 수 있는 최소 장바구니 금액, 쓸 수 있는 마지막 날, 사용 가능 횟수, 켜져 있는지, 만든 때와 마지막으로 바꾼 때예요.
- 다음에 설명하는 방문 수를 위해 방문자를 뒤섞는 데만 쓰는 하루 단위의 무작위 키 하나예요. 하루의 키는 다음 날 키가 만들어지는 즉시 삭제되므로, 언제든 키는 하나뿐이고 이전 날의 방문자를 알아볼 수 있는 것은 없어요.
- 판매자의 분석 페이지를 위해 방문자가 쇼핑몰에서 한 일을 센 값이에요. 날마다 방문자가 네 가지(상품 봄, 장바구니에 담음, 결제 페이지 열음, 주문함) 중 무엇을 했는지와 그날 처음 일어난 시각이에요. 방문자가 하루에 처음 센 단계에는 보낸 사이트의 호스트(google.com처럼, 전체 주소는 아님)와 들어온 주소의 캠페인 태그(utm_source, utm_medium, utm_campaign)도 함께 보관해서 판매자가 구매자가 어느 경로로 오는지 알 수 있게 해요. 같은 날의 이후 단계에는 이런 정보를 보관하지 않아요. 방문자는 쇼핑몰, 방문자의 인터넷 주소와 브라우저 종류, 그날의 키로 만든 뒤섞인 코드일 뿐이에요. 그날이 지나면 키가 삭제되어 코드를 주소로 되돌리거나 다른 날의 같은 사람 코드와 맞출 수 없어요. 주소 자체, 본 페이지, 장바구니에 든 것은 보관하지 않아요.
- 방문자가 판매자의 문의 양식 페이지로 보낸 메시지예요. 이름, 이메일 주소, 제목, 메시지 자체, 어느 페이지에서 보냈는지, 쓴 언어, 도착한 시각, 판매자에게 보낸 알림이 전달됐는지예요.
- 쇼핑몰이 구독 중일 때의 구독 정보예요. 구독과 고객으로서의 나에 대한 Paddle 자체 id, 상태(활성, 연체, 일시 중지, 해지), 어느 요금제와 결제 주기인지, 현재 낸 기간이 끝나는 때, 다음 갱신 때 이미 예정된 변경(업그레이드, 다운그레이드, 해지)이에요. 쇼핑몰에서 산 것도, 카드 번호도 아니에요. 결제는 Paddle이 직접 받고 그 정보는 판매자(merchant of record)로서 Paddle이 보관해요(아래 보관 위치 참고).
- Paddle이 보낸 모든 결제 이벤트를 한 번씩 보관해요. 같은 메시지가 두 번 와도 두 번 반영되지 않게 하려는 거예요. 이벤트 자체의 id와 종류, 어느 쇼핑몰에 관한 것인지, 일어난 때예요.
- Paddle과의 매일 대조에 관한 한 줄이에요. Paddle의 놓친 메시지 때문에 오래된 정보가 남았을 수 있는 구독을 확인해요. 마지막으로 실행한 때와 있었다면 그 오류 하나예요. 쇼핑몰이나 사람에 관한 건 없어요. 대조 자체가 잘 돌아가는지만 담아요.
- 쇼핑몰이 요금제를 고르는 동안 Paddle에 열려 있는 결제 하나예요. 아직 결제되지 않은 그 결제의 Paddle id와 열린 때예요. 연 사람에 관한 건 없고, 쇼핑몰이 유일한 연결 고리예요. 다음 결제가 열리면 이 줄을 대체해요.
- Stripe가 판매자 자신의 연결된 Stripe 계정에 관해 보낸 모든 결제 이벤트를 한 번씩 보관해요. 같은 메시지가 두 번 와도 두 번 반영되지 않게 하려는 거예요. 이벤트 자체의 id, 어느 연결된 계정에 관한 것인지(우리 플랫폼 계정은 절대 아님), 종류, 일어난 때예요.
- 판매자 자신의 Stripe 계정을 통한 카드 주문의 환불이에요. 어느 주문의 환불인지, Stripe의 환불 id, 금액과 Stripe가 알려 준 통화(쇼핑몰의 통화와 다를 수 있어요), 상태, 준 이유, 일어난 때예요.
- 무엇이 잘못됐는지를 종류별로, 어디서 일어났는지(페이지 자체의 주소 패턴이며 구매자의 실제 링크는 아니에요), 이유별로 묶은 거예요. 몇 번, 처음과 마지막으로 본 때, 창업자가 확인했는지를 담아요. 내 브라우저에서 페이지가 깨지면(스크립트 오류, 불러오지 못한 사진, 돌아오지 않는 요청) 같은 방식으로 어느 페이지에서 무엇이 깨졌는지 알려 줘요. IP 주소도, 브라우저 정보도, 이메일 주소도, 방문자가 입력한 어떤 것도 들어가지 않아요. 마지막으로 일어난 뒤 90일 동안 보관해요.
- 아래 각 오류가 특정 쇼핑몰에서 몇 번, 마지막으로 언제 일어났는지예요. 페이지가 그 쇼핑몰을 알려 줄 수 있게 해요. 개인정보는 없고, 일어난 쇼핑몰만 있어요.
- 상품을 가져오거나 업데이트하려고 올린 카탈로그 파일이에요. 안에 무엇이 있었는지, 열이 카탈로그와 어떻게 맞춰졌는지, 가져오기가 무엇을 했거나 거부했는지예요. 실행했든 아니든 올린 지 24시간 뒤에 자동으로 삭제돼요.
- 카탈로그 파일과 함께 올린 사진 ZIP에 맞춘 사진 주소나 파일 이름이에요. 가져오거나 읽는 동안 그 주소나 이름 자체, 어느 상품에 속하는지, 저장된 파일 또는 쓸 수 없었던 이유를 보관해요. 올린 지 24시간 뒤에 그 카탈로그 파일(아래 참고)과 함께 삭제돼요. ZIP 자체도 같은 방식으로, 또는 안의 사진을 모두 쓴 뒤 더 빨리 삭제돼요.
- 백그라운드에서 실행되는 카탈로그 가져오기예요: 그중 몇 행이 끝났는지, 그리고 지금까지 무엇을 추가했는지, 업데이트했는지, 거부했는지가 담겨요. 그것이 속한 카탈로그 파일과 함께, 올린 지 24시간 뒤에 지워져요.
- 가져오기를 되돌리는 데 필요한 것이에요: 가져오기가 바꾸기 전 각 상품의 복사본, 그리고 그것이 만들어낸 상품, 카테고리, 배지, 콜렉션, 속성이 무엇인지가 담겨요. 그것이 속한 카탈로그 파일과 함께, 올린 지 24시간 뒤에 지워져요.
- A category picture a categories file named (an address, or a file name matched to a ZIP of pictures uploaded with it) while it is being fetched or read: the address or name, which category it is for, and the file it was stored as or why it could not be used. Deleted with the file it came from, 24 hours after you uploaded it.
- What a shop owner brought in about a customer from a customers file (moving from another shop platform, for example): the e-mail address, and any name, phone, delivery and billing address, company, tax number and notes the file held. Never a password, never newsletter or marketing consent. Kept until the shop deletes it, anonymises the customer, or closes.
- 설정에서 정한 재고 기준 이하로 내려갔는데 아직 재고 부족 이메일로 알리지 않은 내 상품이나 옵션 조합이에요. 개인정보는 없고, 어느 항목이 언제 기준을 넘었는지만 있어요. 그 이메일이 실제로 나가는 순간 또는 설정을 끄는 순간 지워져요.
- 주인이 쇼핑몰 관리자에 합류하라고 누군가에게 보낸 초대예요. 초대한 주소, 보낸 사람과 때, 무작위 초대 링크의 해시이고 링크 자체는 아니에요. 만료되거나 사용된 지 30일 뒤에 삭제돼요.
- 쇼핑몰 관리자에서 누가 언제 무엇을 바꿨는지의 기록이에요. 당시 구성원의 주소와 한 일(상품 저장, 주문 단계 변경, 설정 변경 등)이고 카드 번호, 토큰, 시크릿은 절대 담지 않아요. 추가만 가능하고 매일 밤 변조 여부를 확인해요. 고객을 익명 처리하면 이 기록에서도 그 이메일 주소가 지워지고 확인은 깨지지 않아요. 2년 동안 보관해요.
- 쇼핑몰의 전체 데이터를 파일 하나로 내려받은 때예요. 누른 순간만 보관해서 하루에 몇 번 이상은 요청할 수 없게 해요. 파일 안에 무엇이 있었는지는 보관하지 않아요.
- 내가 산 물건에 쓴 후기예요. 평점, 글, 보여 주기로 한 이름이고, 그 후기가 나온 주문에 묶여 있어요. 내가 삭제하거나 상품이나 쇼핑몰 자체가 삭제될 때까지 보관해요.
- 소유자가 자기 상품에 붙이려고 만든 작은 라벨('신상품', '세일')과 그 색상이에요. 구매자에 관한 사실이 아니고, 쇼핑몰이 있는 동안 보관해요.
- 그 라벨 하나의 한 언어 문구예요. 소유자가 직접 쓴 것이지 구매자가 쓴 게 아니고, 라벨이 있는 동안 보관해요.
- 어떤 라벨이 어떤 상품에 붙어 있는지만 담아요. 둘 다 있는 동안 보관해요.
- 소유자가 자기 상품 두 개 사이에 직접 고른 ‘이런 상품도 좋아하실 거예요’ 목록이에요. 구매자에 관한 사실이 아니고, 두 상품이 모두 있는 동안 보관해요.
- 품절된 상품이나 사이즈가 다시 들어오면 알려 달라고 한 주소예요. 어느 상품인지, 어느 언어인지, 신청을 취소하는 무작위 링크를 담아요. 쇼핑몰에서는 ‘N명이 기다려요’라는 숫자 외에는 누구에게도 보이지 않아요. 받을 수 있는 이메일 한 통이 나가는 순간, 또는 답이 없으면 90일 뒤 중 먼저 오는 때에 삭제돼요.
- 이메일 링크로 여기에 로그인한 구매자예요. 이메일 주소, 읽는 언어, 처음과 마지막으로 로그인한 때예요. 링크를 요청만 했을 때가 아니라 링크를 실제로 쓰는 순간 만들어져요.
- 진행 중인 로그인 링크예요. 보낸 이메일 주소, 쓰인 언어, 무작위 링크의 해시이고 링크 자체는 아니에요. 만료되거나 사용된 지 하루 뒤에 삭제돼요.
- 구매자가 로그인한 브라우저예요. 쿠키에 든 무작위 토큰, 어느 구매자에 속하는지, 시작되고 만료되는 때예요. 만료되는 순간 삭제돼요.
- 구매자가 여기 자기 계정에 저장해서 다음에 결제가 저절로 채워지게 하는 주소예요. 이름, 전화번호, 주소 자체, 어느 것이 기본인지예요. 구매자당 최대 10개예요. 그 주소로 한 주문은 자기 사본을 영구히 가지고 있어서, 나중에 저장된 주소를 고치거나 지워도 영향이 없어요.
- 로그인한 구매자가 자기 위시리스트에 저장한 상품과 저장한 때예요. 구매자의 로그인이 유지되는 동안(마지막으로 본 뒤 24개월) 보관하고, 그 뒤에 로그인과 함께 삭제돼요.
- 소유자가 자기 상품을 위해 만든 재사용 가능한 속성('소재', '방수')과 그 유형이에요. 구매자에 관한 사실이 아니고, 쇼핑몰이 있는 동안 보관해요.
- 그 속성 하나의 한 언어 문구예요. 소유자가 직접 쓴 것이지 구매자가 쓴 게 아니고, 속성이 있는 동안 보관해요.
- ‘목록에서 고르기’ 속성의 선택지 하나('빨강', '여름')예요. 소유자가 직접 쓴 것이고, 속성이 있는 동안 보관해요.
- 그 선택지 하나의 한 언어 문구예요. 소유자가 직접 쓴 것이지 구매자가 쓴 게 아니고, 선택지가 있는 동안 보관해요.
- 소유자가 자기 상품에 자기 속성의 어떤 값을 줬는지예요. 구매자에 관한 사실이 아니고, 둘 다 있는 동안 보관해요.
- 판매자가 자기 상품을 직접 고르거나(또는 나중에 규칙으로) 묶은 그룹이에요. '선물 아이디어', '여름 세일'처럼 자기 페이지가 있고 소유자가 정한 순서로 보여요. 구매자에 관한 사실이 아니고, 쇼핑몰이 있는 동안 보관해요.
- 컬렉션 이름, 상품 위의 글, SEO 제목과 설명이에요. 판매자가 쓰는 언어마다 한 세트이고, 쇼핑몰 안에서 열리는 주소도 있어요. 판매자가 쓰고 구매자가 읽어요.
- 판매자의 어떤 상품이 어떤 컬렉션에 들어 있는지와 소유자가 정한 순서예요. 상품은 여러 컬렉션에 동시에 들어갈 수 있어요. 판매자가 정하고, 컬렉션을 둘러보는 구매자가 읽어요.
- 수령 시 결제, 계좌 이체, 카드 외에 판매자가 직접 정한 결제 방법이에요. PayPal, Revolut, 장터 현금 등이고, 각각 켜져 있는지와 보여 주는 순서를 담아요. 판매자가 정하고, 구매자가 결제에서 읽어요.
- 판매자 자신의 결제 방법 하나의 이름과 안내예요. 판매자가 쓰는 언어마다 한 세트이고, 예를 들면 ‘anna@yourpaypal.com으로 보내 주세요’ 같은 글이에요. 판매자가 쓰고 구매자가 읽어요.
- 주문 확인 이메일의 주문 요약 위아래에 들어가는 판매자의 글이에요. 판매자가 쓰는 언어마다 한 세트이고, 판매자가 쓰고 구매자가 읽어요.
- 이름을 바꾼 상품, 카테고리, 컬렉션, 페이지의 옛 주소예요. 옛 링크가 계속 열리게 하고, 몇 번 쓰였는지와 마지막으로 쓰인 때를 담아요. 가리키던 대상과 함께 삭제돼요.
- 판매자가 직접 쓴 쇼핑몰 홈 페이지의 Google 제목과 설명이에요. 판매자가 쓰는 언어마다 한 쌍이에요. 판매자가 쓰고 검색 엔진이 읽어요.
- 판매자가 자기 페이지로 보내기로 정한 옛 주소예요. 몇 번 쓰였는지와 마지막으로 쓰인 때를 담아요. 판매자가 삭제할 때까지 보관해요.
- 판매자가 상품에 정한 수량 할인이에요. 몇 개부터, 얼마나 할인하는지이고, 구매자에 관한 사실은 아니에요. 상품이 있는 동안 보관해요.
- 판매자가 발행한 기프트 카드예요. 코드, 통화, 처음 잔액과 남은 잔액, 받는 사람의 이메일 주소와 이름, 판매자의 메시지, 있다면 마지막 날, 꺼졌는지를 담아요. 받는 사람의 이메일과 이름은 카드가 있는 동안, 즉 판매자의 쇼핑몰이 있는 동안 보관해요.
- 기프트 카드의 모든 사용 내역이에요. 잔액이 발행되고, 쓰이고, 돌아오고, 직접 바뀌고, 꺼지고 다시 켜진 때와 금액, 그리고 판매자의 팀원이 했다면 누구인지예요.
- 판매자의 공지 바예요. 색상, 선택 링크, 보여 주는 기간, 켜져 있는지를 담아요. 구매자의 정보는 전혀 담지 않아요.
- 공지 바의 글이에요. 쓴 언어마다 글 자체와, 링크가 있다면 링크에 쓰이는 말이에요.
- 판매자의 팝업이에요. 선택 사진과 버튼 링크, 열리는 방식, 다시 보이는 빈도, 보여 주는 기간, 켜져 있는지를 담아요. 구매자의 정보는 전혀 담지 않아요.
- 팝업의 글이에요. 쓴 언어마다 제목, 글, 버튼이 있다면 버튼에 쓰이는 말이에요.
- 쇼핑몰 주인이 연결한 외부 분석이나 광고 도구예요. 있다면 Google Analytics 4, Meta Pixel, TikTok Pixel의 ID와, 구매자가 본 상품, 장바구니에 담은 상품, 산 상품이에요. 이름, 이메일, 주소, 전화번호는 절대 담지 않아요.
- 판매자가 쇼핑몰에서 기프트 카드를 팔도록 한 스위치예요. 켜져 있는지, 제공하는 정해진 금액, 구매한 카드의 유효 기간이에요. 판매자가 정하고, 구매자가 /gift-card에서 읽어요.
- 누가 기프트 카드를 샀고 누구를 위한 것인지예요. 금액, 받는 사람의 이름과 이메일, 구매자가 쓴 메시지, 보내는 사람의 이름이에요. 주문 자체가 있는 동안, 즉 판매자의 쇼핑몰이 있는 동안 보관해요.
- 주인이 자기 쇼핑몰을 닫을 때 묻는 선택 사항인 원클릭 이유와 메모예요. 왜 닫는지와 우리에게 하고 싶은 말이에요. 그 쇼핑몰이 나중에 삭제되면 메모도 함께 삭제되고, 그 줄은 더 이상 어떤 쇼핑몰의 이름도 담지 않아요. 우리가 배울 수 있도록 이유, 날짜, 쇼핑몰이 존재한 기간, 상품과 주문 수만 남아요.
- 다운로드로 파는 상품 뒤의 파일 하나예요. 원래 이름, 크기, 바이트의 체크섬이라서 바뀐 파일이 구매자가 결제한 파일로 오해되지 않아요. 바이트 자체는 데이터베이스 밖에 있고 짐작할 수 있는 주소로는 절대 제공되지 않아요.
- 결제된 주문의 비공개 다운로드 링크예요. 아무도 짐작할 수 없는 무작위 토큰, 사용된 횟수와 허용 횟수, 만료되거나 취소된 때를 담아요. 만료되거나 취소된 지 30일 뒤에 삭제해요. 낯선 사람이 나중에 오래된 이메일에서 찾아 여전히 쓸 수 있는 토큰은 두지 않아요.
- 판매자의 블로그 글이에요. 글마다 웹 주소, 게시 여부와 시각, 표지 사진, 만든 때와 마지막으로 바꾼 때예요.
- 그 글들의 제목, 발췌, 본문이에요. 언어마다 한 세트이고, 판매자가 쓰고 글이 게시된 뒤 구매자가 읽어요.
- 판매자의 어떤 상품이 어떤 블로그 글 아래에 보이는지와 소유자가 정한 순서예요. 상품은 여러 글 아래에 동시에 있을 수 있어요. 판매자가 정하고, 글을 읽는 구매자가 읽어요.
- 판매자가 쇼핑몰의 법적 페이지에서 사업에 관해 구매자에게 알리는 내용이에요. 등록된 이름, 등록 번호와 세금 번호, 이용 약관, 개인정보 처리방침, 반품 페이지가 각각 우리 템플릿을 쓰는지 직접 쓴 글을 쓰는지, 마지막으로 바뀐 때예요.
- 판매자가 우리 템플릿 대신 직접 쓰기로 했을 때의 이용 약관, 개인정보 처리방침, 반품 페이지 글이에요. 문서와 언어마다 하나이고, 판매자가 쓰고 구매자가 읽어요.
창업자의 자체 키
데이터베이스에 없어요. 플랫폼 자체의 Paddle과 Stripe 키는 각각 실행 중인 앱만 읽을 수 있는 파일 하나에 보관하고, 환경 변수나 코드에는 절대 넣지 않아요. Paddle 키로는 쇼핑몰의 구독을 청구하고 웹훅을 검증해요. Stripe 키로는 쇼핑몰이 자기 Stripe 계정으로 바로 카드 결제를 받게 하고 그 웹훅을 검증해요. 두 파일 모두 비밀번호도, 카드 번호도, 당신이나 특정 쇼핑몰에 관한 어떤 것도 담지 않아요.
쿠키
우리가 설정하는 쿠키는 모두 자체 쿠키이고, 하나하나가 여러분이 요청한 기능만 해요. lang은 고른 언어를 1년 동안 기억해요. storefront.ninja 자체에서는 이래요. sn_a는 로그인이 진행되는 동안의 상태를 15분 동안 담고, sn_s는 쇼핑몰 관리 화면에 로그인된 상태를 30일 동안 유지해요. mx_account는 이 브라우저에서 mixtape 계정으로 로그인한 적이 있다고 400일 동안 기록해서, 다음 방문 때 묻지 않고 다시 로그인할 수 있게 해요. mx_silent는 그걸 한 번 시도했다고 브라우저를 닫을 때까지 기록해요. sn_demo는 공개 데모 관리 화면을 2시간 동안 열어 주고, sn_demo_refused는 데모에서 변경 사항이 저장되지 않았다고 다음 페이지에서 알려 주기 위해 2분 동안만 남아요. sn_preview는 디자인 편집기가 쇼핑몰 주인에게 저장하지 않은 변경 사항을 주인 본인의 브라우저에서 보여 주도록 2시간 동안 쓰여요. 쇼핑몰에서는 이래요. sn_cart는 그 쇼핑몰의 장바구니에 담은 것(어느 쇼핑몰인지, 어떤 상품이 몇 개인지. 다른 사람이 고쳐 쓰지 못하게 서명되어 있고, 가격은 절대 담지 않아요)과, 캠페인 링크를 타고 와서 첫 상품을 담았다면 그 캠페인이 무엇이었는지(어떤 페이지를 봤는지는 담지 않아요)를 기억해요. sn_coupon과 sn_giftcard는 입력한 할인 코드나 기프트 카드 코드를 주문하거나 지울 때까지 기억해요(코드만이에요. 얼마의 가치인지는 매번 서버에서 다시 계산해요). sn_ck와 sn_gcbk는 각각 무작위 숫자 하나를 담아 결제 양식이나 기프트 카드 구매 양식을 내 브라우저에 묶어 줘요. 그래서 다른 곳에서 양식을 보낼 수 없고, 버튼을 두 번 눌러도 같은 주문이 두 번 들어가지 않아요. sn_compare는 나란히 비교하려는 상품을 최대 4개까지, 비우거나 전부 삭제를 누를 때까지 기억해요. 이 쿠키들은 길어야 30일이고 다른 곳으로 보내지 않아요. sn_shopper는 그 쇼핑몰 한 곳의 내 계정에 로그인된 상태를 30일 동안 유지하고, 다른 쇼핑몰로 보내지 않아요. sn_view는 상품을 그리드로 볼지 목록으로 볼지를 1년 동안 기억해요. 이 모두는 꼭 필요한 쿠키이고, 누구와도 공유하지 않아요. 쇼핑몰 주인은 Google Analytics 4, Meta 픽셀, TikTok 픽셀을 연결할 수 있어요(설정 → 트래킹). 하나라도 연결하면 그 쇼핑몰의 페이지에 쓰는 도구를 그대로 적은 쿠키 배너가 뜨고, 수락을 누르기 전에는 그 도구의 어떤 것도 불러오지 않아요. 그 선택은 어떤 도구에 해당하는지와 함께 sn_consent라는 쿠키에 180일 동안 기억돼요. 나중에 다른 도구를 연결하면 다시 물어봐요. 그 쇼핑몰 푸터의 '쿠키 설정'으로 언제든 배너를 다시 열 수 있고, 거기서 거부를 누르면 sn_consent와 그 쇼핑몰이 설정했던 다음 쿠키가 삭제돼요. Google Analytics 자체 쿠키, Meta의 _fbp와 _fbc, TikTok의 _ttp예요. 이 쿠키들은 해당 도구 말고는 누구와도 공유되지 않고, 수락한 뒤에만 쓰여요. 쇼핑몰에 팝업이 있다면, 쿠키가 아니라 브라우저 자체 저장소에 sn_popup_closed라는 키 하나로, 마지막에 닫은 팝업의 id와 닫은 시각을 기억해요. 그래서 판매자가 정한 기간(다시 보이지 않음, 또는 7일이나 30일 뒤에 다시) 동안은 다시 보이지 않아요. 이 정보는 우리 서버로 보내지 않아요. 쇼핑몰 페이지에는 동영상 블록이 있을 수 있어요. 구매자가 재생을 누르기 전에는 아무것도 불러오지 않고, 재생을 누르면 YouTube(youtube-nocookie.com)에서 영상을 불러오며, YouTube가 자체 쿠키를 설정할 수 있어요. 쇼핑몰 주인이 요금제를 고를 때도 같은 규칙이에요. /admin/plan에서 주인이 Pro 선택이나 Max 선택을 누르기 전에는 Paddle에서 아무것도 불러오지 않아요. 누르면 Paddle의 결제 스크립트(cdn.paddle.com)를 불러오고, Paddle이 그 결제와 사기 확인을 위해 자체 쿠키를 설정하거나 브라우저에 자체 데이터를 보관할 수 있어요. 무엇을 얼마나 오래 보관하는지는 우리가 아니라 Paddle의 개인정보 처리방침에 나와 있어요. 쇼핑몰 주인이 보는 방문 수는 페이지를 보여 줄 때 우리 서버가 직접 세요. 쿠키도 쓰지 않고 여러분의 주소도 보관하지 않아요(무엇을 보관하는지는 위의 분석 표 두 개에 정확히 적혀 있어요). 그래서 여기서는 쿠키를 수락하라고 묻지 않아요.
우리 페이지의 방문
우리 공개 페이지(이 페이지, 첫 페이지, 요금, 약관, 환불)가 하루에 몇 번 열렸는지, 방문이 어느 사이트에서 왔는지(사이트 이름만), 어느 나라에서 왔는지(네트워크 제공업체 Cloudflare가 부르는 두 글자 코드), 폰인지 태블릿인지 컴퓨터인지를 세고, 이 숫자를 mixtape.works의 Studio와 공유해요. 하루에 서로 다른 사람이 몇 명 오는지 알기 위해, 우리 서버는 너의 IP 주소와 브라우저 종류를 매일 바뀌고 그 뒤 삭제되는 무작위 키로 코드로 바꿔요. 주소와 브라우저 종류는 저장하지 않고, 이 코드로는 너가 누구인지 알 수도, 다른 날의 방문을 서로 연결할 수도 없어요. 쿠키는 쓰지 않고 너의 기기에는 아무것도 저장하지 않아요. 법적 근거는 우리 페이지가 어떻게 쓰이는지 알고자 하는 우리의 정당한 이익이에요(GDPR 제6조 제1항 (f)호). 쇼핑몰 자체 페이지는 해당되지 않아요. 그 방문은 그 쇼핑몰 주인을 위해 따로 세요(위의 분석 표 두 개에 무엇을 보관하는지 정확히 나와 있어요).
뉴스레터
페이지 맨 아래에서 Storefront Ninja 뉴스레터를 구독하면, mixtape 계정 서비스가 이메일 주소, 고른 목록, 언어, 확인하거나 구독을 끊은 날짜를 보관해서 그 목록의 소식을 보내요. 체크했다면 mixtape 소식도 보내요. 이메일로 보낸 링크로 확인하기 전에는 아무것도 보내지 않고, 모든 메일에 구독 해지 링크가 있으며, 메일은 EU의 Amazon SES(Amazon Web Services EMEA SARL)를 통해 나가요. 구독을 끊으면 끊었다는 기록만 남겨서 다시는 메일이 가지 않게 해요.
지원 채팅
페이지에서 제공하는 곳에서는 AI 도우미에게 Storefront Ninja에 대해 물어볼 수 있어요. 입력한 내용, 질문한 페이지의 주소와 언어는 답을 쓰는 AI 모델을 가진 Anthropic(Anthropic, PBC, 미국)에 가요. Anthropic은 상업용 약관에 따라 우리를 위해 처리하고, 이 약관에는 전송을 위한 EU 표준 계약 조항이 들어 있으며, 이 내용으로 모델을 학습시키지 않아요. 대화 기록은 보관하지 않아요. 대화는 탭을 닫을 때까지 브라우저 탭에만 있어요. 서버에는 하루 단위 집계(대화 수, 메시지 수, 비용)와, 방문자 한 명이 보낼 수 있는 메시지 수를 제한하기 위해 최대 하루 동안 메모리에만 두는 IP 주소와 브라우저가 가진 무작위 숫자만 남아요. 대화를 사람에게 보내기로 하면 답장할 수 있게 내 이메일 주소와 함께 support@mixtape.works로 이메일이 가요. 법적 근거는 제품에 대한 질문에 답하는 우리의 정당한 이익(GDPR 제6조 1항 (f))이고, 사람에게 넘길 때는 내 요청(제6조 1항 (b))이에요.
보관 기간
세션은 저절로 끝나고, 로그아웃하면 바로 끝나요. 쇼핑몰이 닫히면(주인이 직접 닫았든 우리가 수동으로 닫았든) 다시 열 수 있도록 30일 동안 보관하고 그 뒤에 삭제해요. 삭제할 때 주인이 나가면서 남긴 메모도 함께 삭제돼요. 준 이유, 날짜, 쇼핑몰이 존재한 기간, 상품과 주문 수만 이름 없이 남아요. 더 빨리 삭제해 달라고 하면 삭제해 드려요. 방문 수는 약 1년 동안 보관한 뒤 삭제해요.
보관 위치
EU 안에 있는 핀란드 데이터 센터의 Hetzner Online GmbH(Industriestr. 25, 91710 Gunzenhausen, 독일)에서 빌린 서버의 데이터베이스 파일 하나에 보관해요. 트래픽은 Cloudflare가 전달해요. 주문에 관한 이메일은 Amazon Web Services(Amazon Web Services EMEA SARL, EU 안에 있는 독일 프랑크푸르트 데이터 센터)가 전달하므로 주소, 이름, 주문 내용이 그곳에 가요. AWS가 메시지를 받지 못하면 대신 Resend(Plus Five Five, Inc., 미국)가 전달하고, 그때만 이 정보가 EU를 떠나요. 위의 지원 채팅 외에는 다른 것이 EU를 떠나지 않아요. 카드 결제를 받는 쇼핑몰은 자기 Stripe 계정(Stripe Payments Europe, Limited, 아일랜드)을 연결해요. 구매자의 카드 정보는 우리가 아니라 Stripe로 바로 가고, 돈은 판매자 자신의 Stripe 계정으로 바로 정산돼요. 유료 요금제의 쇼핑몰은 판매자(merchant of record)로서 구독을 판매하는 Paddle.com Market Limited가 청구해요. 구독과 고객으로서의 나에 대한 Paddle 자체 id는 그쪽에 가지만, 쇼핑몰에서 한 판매에 관한 건 가지 않아요. 아무것도 팔지 않고, 서비스를 돌리는 데 필요하지 않은 누구에게도 넘기지 않아요.
내 권리
나에 대해 가진 모든 정보의 사본을 요청하거나, 잘못된 것을 고치거나, 삭제해 달라고 할 수 있어요. support@mixtape.works로 알려 주시면 처리해 드려요. 여기 쇼핑몰에서 물건을 샀다면 먼저 그 쇼핑몰에 요청하세요. 내가 그 쇼핑몰에 준 정보는 그 쇼핑몰의 것이에요. 여기 쇼핑몰에 내 이메일 링크로 로그인했다면, 그 쇼핑몰 사이트에서 그 계정을 직접 내려받거나 삭제할 수 있어요.
마지막 업데이트 2026년 11월 4일.