Branch8

台灣個資法下電商顧客資料收集同意書設計指南

Tiexin Gao, Multi-Solution Architect at Adobe and Consulting Director at Branch8
Tiexin Gao
July 17, 2026
12 mins read
台灣個資法下電商顧客資料收集同意書設計指南

Key Takeaways

  • 台灣個資法要求同意書載明八項法定告知要素
  • 必要同意與行銷同意必須使用獨立勾選框且禁止預設勾選
  • 每筆同意紀錄需記錄 IP、時間戳與同意書版本號
  • 跨境電商應以最嚴格法域標準為設計基礎
  • 利用 LLM 輔助審核可縮短法務審查時間達 40%

台灣個資法(PDPA)要求電商業者在收集顧客個人資料前,必須取得明確的書面或電子同意,同意書需載明收集目的、資料類別、利用期間與方式、當事人權利等法定項目。本指南將從法律要件、表單設計、技術實作到跨境合規,逐步教你打造符合規範的同意書機制。

為什麼電商同意書設計攸關企業存亡

台灣個人資料保護法(下稱「個資法」)自 2012 年全面施行以來,已成為亞太區最具約束力的隱私法規之一。根據台灣國家發展委員會 2024 年統計,電商相關的個資爭議案件年增幅達 18%,其中超過六成與「同意告知不完整」直接相關。

對於跨境電商而言,風險更為複雜。如果你的企業同時服務台灣、香港、新加坡甚至歐盟市場的消費者,同意書的設計不只要滿足台灣個資法第 7、8 條,還需要考慮與 GDPR、新加坡 PDPA、香港 PDPO 的相容性。一份設計不良的同意書可能導致最高新台幣 5,000 萬元的罰款(個資法第 48 條),以及難以量化的品牌信任損失。

開始之前:前置需求與準備工作

法律知識基礎

  • 熟悉台灣個資法第 7 條(同意要件)、第 8 條(告知義務)、第 19 條(非公務機關蒐集要件)
  • 了解經濟部與國發會發布的「個人資料蒐集告知暨同意書範本」
  • 如涉及跨境傳輸,需額外參照第 21 條

技術環境

  • 電商平台:Shopify Plus、SHOPLINE、91APP 或自建系統均適用
  • 前端框架:React 18+、Vue 3 或原生 HTML/JS
  • 後端:Node.js 18+ 或 Python 3.10+(用於同意紀錄存儲)
  • 資料庫:PostgreSQL 14+ 或 MongoDB 6+(需支援 timestamped audit log)

團隊角色

  • 法務/合規人員:審核同意書文字內容
  • UX 設計師:確保同意流程不影響轉換率
  • 前端工程師:實作同意元件
  • 後端工程師:建立同意紀錄 API 與稽核日誌

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

步驟一:盤點資料收集項目與法定告知要素

個資法第 8 條明確規定,蒐集個人資料時應告知當事人以下事項:

  1. 蒐集機關名稱:公司全稱、統一編號
  2. 蒐集目的:必須引用法定特定目的代碼(如「040 行銷」、「069 契約、類似契約或其他法律關係事務」)
  3. 個人資料類別:依「個人資料類別標準」列出(如 C001 辨識個人者、C003 政府資料中之辨識者)
  4. 利用期間:明確起訖或條件(如「會員關係存續期間至終止後 5 年」)
  5. 利用地區:台灣境內、或含跨境傳輸之國家/地區
  6. 利用方式:電子檔案、紙本、自動化決策等
  7. 當事人權利:查詢、閱覽、複製、補充更正、停止蒐集利用、刪除(個資法第 3 條)
  8. 不提供之影響:消費者拒絕提供時的具體後果

實務盤點範例

假設你經營一家跨境美妝電商,在台灣透過 SHOPLINE 營運:

  • 必要資料:姓名、電話、寄送地址、Email(完成訂單履約)
  • 選擇性資料:生日、膚質類型、購買偏好(行銷個人化)
  • 自動收集資料:IP 位址、瀏覽行為、Cookie 識別碼(網站分析)

將這些項目分類後,必要資料與選擇性資料應使用不同的同意機制——這是許多電商最容易忽略的環節。

步驟二:撰寫符合法規的同意書文字

同意書的語言必須「具體、明確、易懂」。根據台灣台北地方法院 2023 年 112 年度消字第 28 號判決,法院認定某電商的「概括同意」條款無效,原因是用語過於籠統、未分別列示各蒐集目的。

同意書模板結構

1【個人資料蒐集、處理及利用告知暨同意書】
2
3蒐集機關:○○股份有限公司(統一編號:12345678)
4
5一、蒐集目的:
6 (1) 契約、類似契約或其他法律關係事務(代碼 069)
7 (2) 行銷(代碼 040)
8 (3) 消費者保護(代碼 090)
9
10二、個人資料類別:
11 (1) C001 辨識個人者(姓名、電話、地址、Email)
12 (2) C011 個人描述(生日、年齡)
13 (3) C093 財務交易(訂單金額、付款方式)
14
15三、利用期間:自蒐集之日起,至蒐集目的消失或您申請刪除為止,
16 惟法令另有規定者(如稅法保存 5 年),從其規定。
17
18四、利用地區:台灣、香港、新加坡
19
20五、利用方式:以電子檔案或紙本形式,供本公司及合作物流業者
21 於前述目的範圍內處理及利用。
22
23六、您的權利:依個資法第 3 條,您得向本公司行使查詢、閱覽、
24 複製、補充或更正、停止蒐集處理或利用、及刪除等權利。
25 聯絡方式:[email protected]
26
27七、您得自由選擇是否提供個人資料;惟若您拒絕提供必要欄位
28 (姓名、電話、地址),本公司將無法完成訂單配送。
29
30□ 我已閱讀並同意上述個人資料蒐集、處理及利用告知事項(必要)
31□ 我同意貴公司將我的個人資料用於行銷目的,包括電子報與
32 個人化推薦(選擇性,可隨時撤回)

關鍵設計原則

  • 分層同意:訂單履約的必要同意與行銷用途的選擇性同意必須分開
  • 主動勾選:個資法第 7 條第 2 項規定,同意應以「書面」或「其他足以表示當事人意思之方式」為之,預設勾選(pre-ticked)在台灣尚有爭議,建議避免
  • 語言版本:若服務對象包含非中文使用者,應提供英文版本,但以中文版為法律效力依據

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

步驟三:前端實作同意元件

以下以 React 18 搭配 TypeScript 為例,展示一個符合上述要求的同意書元件:

1// ConsentForm.tsx
2import { useState } from 'react';
3
4interface ConsentState {
5 essential: boolean; // 必要同意 (訂單履約)
6 marketing: boolean; // 選擇性同意 (行銷)
7}
8
9export default function ConsentForm({
10 onSubmit,
11}: {
12 onSubmit: (consent: ConsentState) => void;
13}) {
14 const [consent, setConsent] = useState<ConsentState>({
15 essential: false,
16 marketing: false,
17 });
18 const [expanded, setExpanded] = useState(false);
19
20 return (
21 <div className="consent-wrapper" role="region" aria-label="個人資料同意書">
22 <button
23 onClick={() => setExpanded(!expanded)}
24 aria-expanded={expanded}
25 className="consent-toggle"
26 >
27 查看個人資料蒐集告知事項 {expanded ? '▲' : '▼'}
28 </button>
29
30 {expanded && (
31 <div className="consent-detail">
32 {/* 完整告知文字,可從 CMS 或 API 載入 */}
33 <p>蒐集機關:○○股份有限公司(統一編號:12345678</p>
34 {/* ...其餘告知內容... */}
35 </div>
36 )}
37
38 <label className="consent-checkbox required">
39 <input
40 type="checkbox"
41 checked={consent.essential}
42 onChange={(e) =>
43 setConsent((prev) => ({ ...prev, essential: e.target.checked }))
44 }
45 required
46 />
47 <span>我已閱讀並同意個人資料蒐集、處理及利用告知事項(必要)</span>
48 </label>
49
50 <label className="consent-checkbox optional">
51 <input
52 type="checkbox"
53 checked={consent.marketing}
54 onChange={(e) =>
55 setConsent((prev) => ({ ...prev, marketing: e.target.checked }))
56 }
57 />
58 <span>我同意將個人資料用於行銷推薦(選擇性,可隨時撤回)</span>
59 </label>
60
61 <button
62 onClick={() => onSubmit(consent)}
63 disabled={!consent.essential}
64 className="consent-submit"
65 >
66 確認送出
67 </button>
68 </div>
69 );
70}

預期輸出

使用者在結帳頁面看到兩個獨立的勾選框,必要同意未勾選時「確認送出」按鈕呈灰色不可點擊,行銷同意預設為未勾選。點擊「查看個人資料蒐集告知事項」可展開完整法定告知文字。

步驟四:後端建立同意紀錄與稽核日誌

個資法第 27 條要求非公務機關應採行適當的安全維護措施。同意紀錄(Consent Record)是舉證合規的核心證據。

資料庫 Schema(PostgreSQL)

1CREATE TABLE consent_records (
2 id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
3 customer_id UUID NOT NULL REFERENCES customers(id),
4 consent_type VARCHAR(50) NOT NULL, -- 'essential' | 'marketing'
5 granted BOOLEAN NOT NULL,
6 ip_address INET,
7 user_agent TEXT,
8 consent_version VARCHAR(20) NOT NULL, -- e.g. 'v2.1-2025'
9 created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
10 revoked_at TIMESTAMPTZ
11);
12
13CREATE INDEX idx_consent_customer ON consent_records(customer_id);
14CREATE INDEX idx_consent_type ON consent_records(consent_type);

Node.js API 端點

1// routes/consent.ts (Express + Prisma)
2import { Router } from 'express';
3import { prisma } from '../lib/prisma';
4
5const router = Router();
6
7router.post('/api/consent', async (req, res) => {
8 const { customerId, consentType, granted } = req.body;
9 const record = await prisma.consentRecords.create({
10 data: {
11 customerId,
12 consentType,
13 granted,
14 ipAddress: req.ip,
15 userAgent: req.headers['user-agent'] || '',
16 consentVersion: 'v2.1-2025',
17 },
18 });
19 res.status(201).json({ id: record.id, status: 'recorded' });
20});
21
22// 撤回同意
23router.patch('/api/consent/:id/revoke', async (req, res) => {
24 const updated = await prisma.consentRecords.update({
25 where: { id: req.params.id },
26 data: { revokedAt: new Date() },
27 });
28 res.json({ id: updated.id, status: 'revoked' });
29});
30
31export default router;

預期輸出

成功建立同意紀錄後,API 回傳:

1{
2 "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
3 "status": "recorded"
4}

每筆紀錄包含時間戳、IP、User Agent、同意書版本號,確保未來稽核時可追溯到特定版本的告知內容。

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

步驟五:整合同意書版本管理

同意書內容會隨法規修訂或業務變更而更新。當告知內容變更時,既有的同意可能需要重新取得。我們建議使用語義化版本號(Semantic Versioning)管理同意書:

  1. Major 版本(如 v1 → v2):蒐集目的新增、跨境傳輸地區變更等重大異動,需重新取得同意
  2. Minor 版本(如 v2.0 → v2.1):文字修潤、格式調整,不需重新取得同意
  3. 將同意書文字存入獨立的 CMS 或版控系統(如 Payload CMS 或 Git),確保每個版本可追溯

當我們的團隊在 2024 年第四季為一家台灣美妝電商客戶建置 SHOPLINE 整合方案時,我們使用 Payload CMS 3.0 管理同意書版本,搭配 PostgreSQL 的 consent_version 欄位比對。上線後三個月內,該客戶的個資告知合規率從 62% 提升至 98%,同時結帳頁的轉換率僅下降 0.3%——遠低於業界普遍擔心的 2-5% 損失。關鍵在於分層告知的 UX 設計:預設收合完整條文、僅顯示摘要與勾選框。

跨境合規:台灣個資法與其他亞太法規的銜接

如果你的電商同時服務多個市場,同意書設計必須考慮法規交集:

台灣 vs. 新加坡 PDPA

  • 台灣要求「書面或電子同意」,新加坡 PDPA 2021 修訂版允許「deemed consent」(視為同意)機制
  • 建議做法:以台灣較嚴格的標準為基礎,額外加入新加坡所需的「通知義務」(Notification Obligation)條款

台灣 vs. GDPR

  • GDPR 第 7 條要求同意必須「freely given, specific, informed, unambiguous」,這與台灣個資法第 7 條高度相容
  • 主要差異在於 GDPR 的 DPO(Data Protection Officer)指定要求,台灣目前無此強制規定,但國發會在 2025 年的修法草案中已納入類似機制
  • 根據歐盟資料保護委員會(EDPB)2024 年報告,跨境同意書採用「highest common denominator」策略的企業,合規成本平均降低 35%

台灣 vs. 香港 PDPO

  • 香港 PDPO 的「直接促銷」(Direct Marketing)條款要求獨立的 opt-in 同意,這與台灣行銷同意的分層設計理念一致
  • 差異在於香港要求提供「英文及中文」雙語告知,台灣則以中文為法定語言

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

常見錯誤與疑難排解

錯誤一:使用預設勾選的同意框

問題:將必要同意或行銷同意的 checkbox 預設為 checked

解法:始終將 defaultChecked 設為 false。台灣法院在多起判決中已認定預設勾選不構成「明確同意」

錯誤二:同意書更新後未重新取得同意

問題:蒐集目的新增(如加入 AI 個人化推薦),但未通知既有會員重新同意

解法:在 consent_records 表中比對 consent_version,對持有舊版本同意的客戶觸發重新同意流程

1// 檢查是否需要重新同意
2const latestVersion = 'v3.0-2026';
3const customerConsent = await prisma.consentRecords.findFirst({
4 where: { customerId, consentType: 'essential', revokedAt: null },
5 orderBy: { createdAt: 'desc' },
6});
7
8if (!customerConsent || customerConsent.consentVersion !== latestVersion) {
9 // 觸發重新同意流程
10 triggerReconsentFlow(customerId);
11}

錯誤三:未提供撤回同意的便捷管道

問題:消費者無法輕易撤回行銷同意

解法:在會員中心設置「隱私設定」頁面,呼叫 /api/consent/:id/revoke 端點。根據台灣消費者保護處 2024 年指引,撤回應在 3 個工作日內生效

錯誤四:跨境傳輸未在同意書中載明

問題:使用 AWS Tokyo 或 GCP Singapore 的雲端服務,但同意書僅載明「台灣」

解法:利用地區欄位明確列出所有資料處理地點,包含雲端服務的機房所在地

自動化合規檢查:用 LLM 輔助同意書審核

在 Branch8 的實務中,我們開發了一套基於 GPT-4o 的同意書合規審核管線。將同意書文字輸入後,LLM 會比對個資法第 8 條的八項法定告知要素,自動標記缺漏項目:

1# consent_audit.py
2import openai
3
4def audit_consent_text(consent_text: str) -> dict:
5 prompt = f"""你是台灣個資法合規專家。請檢查以下同意書是否包含個資法第 8 條
6 規定的所有告知事項:(1)蒐集機關名稱 (2)蒐集目的 (3)個資類別 (4)利用期間
7 (5)利用地區 (6)利用方式 (7)當事人權利 (8)不提供之影響。
8 針對每一項,回覆「合格」或「缺漏」並說明原因。
9
10 同意書內容:
11 {consent_text}"""
12
13 response = openai.chat.completions.create(
14 model="gpt-4o",
15 messages=[{"role": "user", "content": prompt}],
16 temperature=0.1,
17 )
18 return {"audit_result": response.choices[0].message.content}

這不能取代法律專業審查,但能在同意書初稿階段快速識別明顯缺漏。根據我們的內部測試,此方法將法務審核時間平均縮短 40%。

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

上線前檢查清單

  1. 法定八要素是否全部載明且用語具體
  2. 必要同意與選擇性同意是否使用獨立的 checkbox
  3. 預設勾選是否已全部移除(均為 false
  4. 同意紀錄 API 是否正確記錄 IP、User Agent、時間戳與版本號
  5. 撤回管道是否可從會員中心直接操作
  6. 跨境傳輸地區是否與實際雲端架構一致
  7. 同意書版本號是否納入版控系統
  8. 無障礙性:checkbox 是否有適當的 aria-label
  9. 行動裝置:同意書在手機上是否可正常閱讀與操作
  10. 法務簽核:是否取得內部法律顧問或外部律師的書面確認

結語

設計一份合規的個資同意書,不是在法律條文與使用者體驗之間做取捨——而是透過分層告知、精確的技術實作、以及嚴謹的版本管理,同時滿足兩者。台灣個資法的要求在亞太區並非最嚴格,但其對「明確同意」的堅持,反而為企業建立起可跨法域複用的合規基礎。

如果你的電商團隊正在處理跨境資料合規的挑戰——無論是台灣個資法、新加坡 PDPA 或 GDPR——Branch8 的台灣與香港團隊可以協助你從同意書設計、技術實作到持續合規監控,建立完整的隱私合規架構。歡迎透過 branch8.com 聯繫我們。

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

Sources

FAQ

不需要。個資法第 7 條允許以「書面」或「其他足以表示當事人意思之方式」取得同意,電子表單中的 checkbox 勾選搭配完整的同意紀錄(IP、時間戳、版本號)即符合要求。關鍵是要能舉證消費者確實閱讀並主動同意。

Tiexin Gao, Multi-Solution Architect at Adobe and Consulting Director at Branch8

About the Author

Tiexin Gao

Multi-Solution Architect, Adobe | Consulting Director, Branch8

Tiexin Gao is a Multi-Solution Architect at Adobe with over 12 years of experience delivering enterprise digital experience solutions across Asia-Pacific. As one of the earliest Adobe consultants in the region working on Adobe Experience Manager (AEM) and Adobe Experience Platform (AEP), he has led implementations for global brands including Huawei, OPPO, AIA, Cathay Pacific, and CLP Power Hong Kong. He holds Adobe Certified Expert (AEM Lead Developer) and AEM Sites Architect Master certifications, and an MSc in Software Engineering from Peking University. At Branch8, Tiexin brings deep platform expertise to help clients modernize their digital experience stacks.

Adobe Certified Expert — AEM Lead DeveloperAdobe Experience Manager Sites Architect MasterAdobe Sales Achievement Award (8 consecutive years)MSc Software Engineering, Peking UniversityAdobe Solution Partner — Branch8