我們盡量少保留與你相關的資料。此頁列出你使用 EvoMap 時裝置上可能寫入的每一個 Cookie、localStorage 與 sessionStorage 項目,說明用途、有效期及處理它的法律依據。你可以隨時透過任何頁面頁腳的「Cookie 偏好」連結重新檢視或更改選擇。
1.嚴格必要類#
這些項目是網站正常運作所必需。無論你在 Cookie 橫幅中如何選擇都會寫入;拒絕它們會讓登入、安全、防濫用或第一方效能分析失效。本節亦包括錯誤監控:崩潰與失敗報告會傳送給第三方處理者 Sentry,它亦會收到普通頁面載入耗時的抽樣數據。它同樣不受橫幅選擇控制;下表中以 Sentry 命名的幾行列明了它會收到什麼。
| 名稱 | 類型 | 用途 | 有效期 | 法律依據 |
|---|---|---|---|---|
| evomap_sid | Cookie | Login session token | 30 days (Max-Age in src/lib/cookie.js) | GDPR Art. 6(1)(b) — contract performance |
| evomap_user | localStorage | User profile cache (reduces /me request frequency) | Persistent (cleared on logout) | Art. 6(1)(b) |
| evomap_auth_ts | localStorage | 401 grace-period timestamp (prevents short-network-blip logout) | Persistent | Art. 6(1)(b) |
| evomap_chunk_reload | sessionStorage | Auto-recovery from post-deploy chunk-load errors | Session (cleared on tab close) | Art. 6(1)(f) — legitimate interest (deployment stability) |
| evomap_chunk_reload_reported | sessionStorage | Marks the reload above as already reported, so one post-deploy recovery produces one diagnostic event instead of one per document | Session (cleared on tab close) | Art. 6(1)(f) — legitimate interest (deployment stability) |
| sentryReplaySession | sessionStorage (Sentry SDK) | Session Replay id. The SDK keeps a rolling recording of roughly the last 60 seconds in your browser's memory and it stays there: nothing is uploaded unless a JavaScript error happens, and then that buffered minute is sent so we can see what led up to the crash. An ordinary visit that never errors uploads no replay at all. Throughout, the SDK's masking defaults are left on: every text node and every form input is replaced with a placeholder and all media is blocked, so what we receive is layout and interaction timing, not what you typed or read | Session (cleared on tab close) | Art. 6(1)(f) — legitimate interest (diagnosing crashes) |
| sentry_performance_trace | Third-party transmission to Sentry (sentry.io) — not browser storage | Separately from the error reporting below, a sample of ordinary page loads and in-app navigations (20% in production) is timed and sent to Sentry so we can see when the site gets slower. A trace carries the page URL, timings and the same anon_id / session_id, not page content — no replay is recorded and nothing you typed is included | Per the Sentry project's retention setting; deletable on request | Art. 6(1)(f) — legitimate interest (service performance) |
| sentry_error_event | Third-party transmission to Sentry (sentry.io) — not browser storage | When a page crashes, or a critical path fails for a reason on our side (login, page load, an API call our server could not complete), we send Sentry the error type and stack trace, the page URL, your browser and OS, the preceding interaction breadcrumbs, and the identifiers evomap_anon_id / evomap_session_id plus your account id when you are signed in — the same identifiers our own analytics uses, so one report can be matched to one session. A failure caused by your own input, such as a wrong password or a rate limit, does not create a report of its own; it can still appear as one line of context inside a later report, because we record every failure as a breadcrumb before deciding which ones to send. Sentry's privacy policy: https://sentry.io/privacy/ | Per the Sentry project's retention setting; deletable on request | Art. 6(1)(f) — legitimate interest (service reliability and security) |
| evomap_ai_chat_quota | localStorage | Anti-abuse rate limit for the AI chat surface | Persistent | Art. 6(1)(f) — anti-abuse |
| evomap_storage_warned | sessionStorage | Storage-error telemetry dedupe (≤ 1 warn per 24h per tab) | 24h cooldown; cleared on tab close | Art. 6(1)(f) |
| evomap_consent | localStorage | Your cookie-preference decision (so we don't re-ask every visit) | 90 days | GDPR Art. 7 — consent record |
| evomap_consent_expired | localStorage | Single-shot marker so we know to re-prompt after TTL expiry | Short-lived (cleared on next banner mount) | Art. 7 |
| evomap_exp_evox_beta | Cookie (HttpOnly) | Keeps you on one version of the EvoX download page across visits and languages while we compare two layouts — first-party, anonymous, never shared with third parties | 90 days | Art. 6(1)(f) — first-party content variant (D-7 Plan X, extended) |
| evomap_anon_id | localStorage | Anonymous identifier for site performance improvement. It is not shared with advertising or analytics third parties, and it is never sold; the one processor that receives it is our error monitor (see the sentry_error_event row), so that a crash report can be matched to the session it came from | Persistent | Art. 6(1)(f) — first-party analytics (ICO / AEPD position) |
| evomap_im_ref | Cookie | First-party Impact.com affiliate click id (`im_ref`) for last-click conversion attribution — never shared with third parties from the browser; forwarded only on our own auth/billing requests. When an attributed conversion completes, our server submits the click id together with conversion identifiers and amounts to Impact.com's conversion reporting API, to settle the partner's commission. | 90 days | Art. 6(1)(f) — first-party attribution (affiliate conversion) |
| evomap_session_id | sessionStorage | First-party session identifier — rotates every 30 min of inactivity | 30 minutes idle; cleared on tab close | Art. 6(1)(f) |
| evomap_session_ts | sessionStorage | Last-activity timestamp paired with evomap_session_id (drives idle rotation) | 30 minutes idle; cleared on tab close | Art. 6(1)(f) |
| evomap_utm | sessionStorage | Marketing-campaign entry attribution — current session only | Session (cleared on tab close) | Art. 6(1)(f) |
| evomap_pending_credit_purchase | sessionStorage | Temporary checkout-return context for credit top-ups: selected credit amount, USD amount, and Hub order id. It never stores card numbers, payment tokens, or provider secrets. | Session; removed after the credit-purchase result return is processed | Art. 6(1)(f) — payment attribution and support diagnostics |
2.功能性#
儲存你主動選擇的偏好項目(語言、主題、AI 聊天記錄)。
| 名稱 | 類型 | 用途 | 有效期 | 法律依據 |
|---|---|---|---|---|
| evomap_locale | Cookie + localStorage | Your selected language | 1 year | Art. 6(1)(a) — user-initiated preference |
| evomap_theme | Cookie + localStorage | Your selected theme | 1 year | Art. 6(1)(a) |
| evomap_ai_chat | localStorage | AI chat history (local only — never uploaded) | Persistent | Art. 6(1)(b) — user-generated content |
| evomap_onboarding | localStorage | Onboarding-tour completion state | Persistent | Art. 6(1)(f) |
3.分析(第三方,可關閉)#
Google Analytics 4 Cookie。嚴格地區預設拒絕(歐盟 / EEA / 英國 / 瑞士、EU 微國家、英國王室屬地、巴西、韓國、日本、土耳其、以色列,以及國家無法解析的訪客);其他地區預設允許且不顯示橫幅。嚴格地區訪客透過 Cookie 橫幅切換;其他地區訪客可透過頁腳的「Cookie 偏好」連結開啟面板。我們亦會將你註冊時填寫郵箱的不可逆雜湊值存入我們自己的第一方資料庫,用於轉化漏斗分析;該雜湊永不分享給 Google。
| 名稱 | 類型 | 用途 | 有效期 | 法律依據 |
|---|---|---|---|---|
| _ga | Cookie (Google SDK, written on our domain) | Google Analytics 4 visitor identifier | 2 years | Art. 6(1)(a) — explicit consent (banner) |
| _ga_<id> | Cookie (Google SDK, written on our domain) | Google Analytics 4 property-scoped session | 2 years | Art. 6(1)(a) |
| _gid | Cookie (Google SDK, written on our domain) | Google Analytics 4 short-term visitor distinguisher | 24h | Art. 6(1)(a) |
| analytics_event_client_ip | Server-side database field (evomap_behavior_events.properties.client_ip — plaintext IP address) | The visitor IP address our edge resolved for the request that reported the event, stored so abuse and traffic-quality investigations can identify the originating network. Recorded only when the ingress can vouch for the address; internal and gateway addresses are never stored. Not forwarded to Google. | Retained for the analytics table's retention window; deletable on request | Art. 6(1)(f) — legitimate interest (fraud prevention and service security) |
| analytics_event_geo_country | Server-side database field (evomap_behavior_events.geo_country — ISO alpha-2) | Country our edge resolved for the request that reported the event, used for traffic-quality and funnel analysis by region. | Retained for the analytics table's retention window; deletable on request | Art. 6(1)(f) — legitimate interest (product analytics) |
| analytics_event_email_hash | Server-side database field (evomap_behavior_events.properties.email_sha256 — irreversible SHA-256 hash) | Irreversible hash of the email entered at registration intent / completion (register_button_click, register_create_account_result) for conversion-funnel analysis. Stored only in our first-party database; the plaintext email is never persisted to analytics and never forwarded to Google. | Retained until account deletion; deletable on request | Art. 6(1)(f) — legitimate interest (product analytics) |
4.廣告(第三方,可關閉)#
Google Ads 轉化追蹤 Cookie(拆分為 Google Consent Mode v2 三個獨立維度:ad_storage、ad_user_data、ad_personalization,可分別切換),以及 Meta Pixel Cookie(_fbp、_fbc)。預設策略同分析類。Meta 是獨立的資料控制者,不在 Google Consent Mode 之內,因此在 ad_storage 維度上由它自己的開關控制:關閉「廣告」會同時撤回 Meta 的同意。與上面的 Google Cookie 不同,_fbp 與 _fbc 的用途正是把你在本站的行為與你在 Meta 平台上的廣告點擊做跨網站配對。
| 名稱 | 類型 | 用途 | 有效期 | 法律依據 |
|---|---|---|---|---|
| _gcl_aw | Cookie (Google Ads SDK) | Google Ads conversion attribution | 90 days | Art. 6(1)(a) |
| _gcl_au | Cookie (Google Ads SDK) | Google Ads conversion linking | 90 days | Art. 6(1)(a) |
| _gcl_dc | Cookie (Google Ads SDK) | Google Ads display network | 90 days | Art. 6(1)(a) |
| _fbp | Cookie (Meta Pixel) | Meta ads conversion attribution — browser identifier | 90 days | Art. 6(1)(a) |
| _fbc | Cookie (Meta Pixel) | Meta ads click attribution — set when arriving via an ad click | 90 days | Art. 6(1)(a) |
5.第三方帳號連接器(Google Drive、Gmail)#
當你在 EvoX 控制台把 Google Drive 或 Gmail 帳號連接到 EvoMap 帳號時,我們會透過 Google 的 OAuth 授權頁向你申請明確列出的權限,你在授權頁上可以逐項查看並決定是否同意。連接只在你主動點擊「連接」時發生,隨時可以斷開。
- 我們存取哪些資料:Google Drive —— 檔案的中繼資料、內容與權限,唯讀(drive.readonly);以及由本應用自己建立或開啟的檔案(drive.file),該權限也使 EvoX 能在你要求時於你的 Drive 中建立和複製檔案。Gmail —— 郵件串、郵件正文、標籤與草稿的唯讀存取(gmail.readonly);EvoX 無法傳送、修改或刪除你的郵件。我們還會取得你的 Google 帳號電子郵件地址(openid、email),僅用於標示該連接,以便你區分已連接的多個帳號。這些資料只在你於 EvoX 中發起相關任務時按需讀取,且僅用於完成該任務;任何會變更你 Drive 內容的操作,每次都需要你單獨確認。
- 存在哪裡:授權權杖由 EvoMap 伺服器端加密保存,不寫入你的裝置,也不會出現在任何日誌中。讀取到的檔案與郵件內容只在處理你的請求時經過我們的伺服器端,伺服器端不會持久保存這些內容;伺服器端只記錄操作的稽核摘要(雜湊),不記錄內容本身。連接記錄本身會保存你的帳號電子郵件標示、你已授予的權限,以及最近一次使用的時間。工具傳回的內容會出現在你的對話記錄中,該記錄保存在你本機的 EvoX 應用內。
- 保留多久:存取權杖與更新權杖在你斷開連接之前一直保留,用於讓你在所有裝置上免重複授權。斷開連接時兩者立即從我們的系統中清除。
- 如何撤銷:你可以隨時在 EvoX 控制台「插件」頁點擊「斷開」。我們會先清除我方保存的權杖,再請求 Google 撤銷該授權;若 Google 拒絕,我們會明確告知你,而不會把沒有真正完成的斷開顯示為已完成。你也可以直接在 Google 帳號的「第三方存取權限」頁面撤銷。斷開之後我們不再持有任何可用的存取權杖或更新權杖。
- 不與第三方共享:從 Google API 取得的資料不會出售、出租或提供給任何第三方,也不用於廣告。EvoMap 對從 Google API 取得的資訊的使用和向其他應用的傳輸,將遵守 Google API 服務使用者資料政策,包括其中的「有限使用」(Limited Use)要求。
6.你的權利#
依據 GDPR,你可隨時撤回同意、申請資料副本、申請刪除,並可向監管機構投訴。任何資料請求請電郵 [email protected]。
7.聯絡方式#
營運主體:EVOMAP PTE. LTD.。一般查詢與資料請求:[email protected]。