網站表單合規 5 步:從同意聲明到刪除請求的 GDPR 與個資法實務

網站上的聯絡表單、報名表單、訂閱欄位,幾乎每個站台都有,但多數站長對它收集的資料怎麼處理、要留多久、使用者可不可以要求刪除,心裡並沒有明確的答案。這不是有沒有在意的問題,而是台灣《個人資料保護法》(以下簡稱個資法)與歐盟《一般資料保護規則》(GDPR)都有具體規定,忽略的後果是可舉報的違規,而非抽象的道德壓力。

實務上,有對象在歐洲的台灣站台,同時受兩套法規約束。即使訪客全在台灣,個資法仍要求網站說清楚收集用途,並保障當事人的查詢、更正、刪除權利。本文從最常見的表單場景出發,整理一份可直接對照的合規參考,並說明 WordPress 外掛端如何設定,將自動化機制接上去。

表單必備的同意聲明要寫什麼

表單送出前,使用者需要知道的事集中在三件:誰在收集資料、用來做什麼、同意或拒絕後會發生什麼。個資法第 8 條要求在蒐集時告知蒐集機關(即網站本身)、蒐集目的、使用範圍,以及當事人的各項權利。GDPR 的要求稍微更細,必須同時說明保存期限與資料控管者的聯絡方式。

聲明不需要做成長篇隱私政策的連結。最直接的做法是在送出按鈕上方加一段簡短說明,約兩到三句,再連結到完整的隱私政策頁面。以下三項是聲明裡不能省的核心內容。

  • 蒐集目的說明:具體說明這份表單收集資料的用途,例如「本表單資料僅用於回覆您的詢問,不會轉交第三方」,比泛稱「優化服務」更具體、也更合規。
  • 同意勾選框:不能預先打勾,必須讓使用者主動勾選表示同意。GDPR 明確要求同意行為必須是「明確、自願、具體且知情」的積極動作,預先勾選一律不算有效同意。
  • 撤回說明:告知使用者可透過寄信或帳號設定撤回同意,並說明撤回後網站會在多少天內刪除其資料。

同意聲明的文字愈具體,合規程度愈高。「本網站遵守相關法令」這類空洞承諾,對使用者沒有意義,對監管機關也沒有保護效果。

個資保存期限的上限在哪裡

個資不能無限期保存,但實務上很多站台從未清理過表單收件匣裡的資料。個資法第 11 條要求:蒐集目的消失或期限屆滿後,應主動或依請求刪除個資。GDPR 的「儲存限制原則」(Storage Limitation)同樣要求不得超過必要期間持續保存可識別身份的資料。

問題在於「必要期間」究竟是多長。法律沒有給固定數字,而是要求與蒐集目的掛鉤。幾個常見的表單類型,業界慣例與合理推估如下。

表單類型 合理保存期 依據邏輯
聯絡詢問(未成交) 6 個月 詢問未成案,蒐集目的於回覆後消滅
聯絡詢問(已成交) 5 年 消費者保護法規範的消費爭議時效
電子報訂閱 訂閱有效期間 目的存續中;退訂後立即刪除
活動報名 活動結束後 3 個月 活動服務完成,蒐集目的消滅
求職應徵 最長 1 年 勞動市場慣例,超過需重新取得同意

這個表格的數字是「不踩底線的參考上限」,不是說保存到這些天數就一定合規。如果有業務上的理由需要保存更久,必須在隱私政策裡明確說明,並確保後台有對應的處理紀錄。

使用者的刪除請求,站台必須做到哪些事

個資法第 11 條第 3 款與 GDPR 第 17 條(被遺忘權)都賦予使用者請求刪除的權利,差別在 GDPR 的範圍更廣、時限更嚴格。通常的規範要求是收到請求後 30 個日曆天內完成刪除,GDPR 允許延長至 90 天,但必須書面告知延遲原因。

對站長來說,「刪除」不只是把某筆表單記錄從後台移除,還涵蓋幾個容易被遺漏的位置。

  • 電子郵件通知信件:Contact Form 7(聯絡表單 7)或 WPForms 等外掛送出後通常會寄一封通知信到管理員信箱,這封信本身也含有個資。刪除後台記錄之後,信件那份資料也需要一併處理。
  • 外掛整合的第三方系統:表單若有串接客戶關係管理系統(CRM)或電子郵件行銷平台,刪除請求必須同步傳至那些系統,單獨刪除 WordPress 端並不完整。
  • 備份檔案:主機備份會把已刪除的資料保留一段時間。需在流程上明確訂定定期清除備份中的個資,或在備份到期後不再還原特定使用者資料。

收到刪除請求時,建議在信件裡或站台後台記一筆處理記錄,包含請求日期、回覆日期、刪除完成日期。這不是多餘的行政工作,而是面對查核時能夠舉證的唯一方式。

WordPress 表單外掛的自動清除與資料匯出設定

手動管理大量表單記錄容易遺漏,靠外掛的自動化功能才是可持續的做法。主流表單外掛在這方面的功能分布如下。

WPForms 的記錄到期設定

WPForms Pro 版有「Entry Expiration」設定,可以針對每個表單指定自動刪除的天數。設定路徑在 WPForms → Settings → GDPR Enhancements,以及各表單的 Settings → General 底部。啟用後,到期的送出記錄會在 WordPress cron 觸發時自動清除,不需人工介入。

同欄位頁面還有「Disable User Cookies」與「Disable User Details」兩個開關:前者關掉送出時自動記錄的 Cookie,後者停止紀錄 IP 位址與使用者代理字串(User Agent)。兩者對降低資料庫中可識別身份資訊的密度很有幫助,尤其對沒有正當業務需要記錄 IP 的聯絡表單,應預設關閉。

資料匯出方面,WPForms 可以在送出記錄列表選取特定記錄後匯出為 CSV,供收到存取請求時使用。

Gravity Forms 的保存期設定與個資匯出

Gravity Forms 的自動清除在 Forms → Settings → GDPR 底下,稱為「Retention Period」,同樣可以對每個表單獨立設定。超過保存期的記錄會標記為待刪,在下次排程作業執行時清除。

該外掛另有「Personal Data」欄位標記機制,可以在表單欄位設定中將某欄標記為含有個人資料。收到刪除請求時,進入 Forms → Personal Data → Erasure Requests 輸入使用者 Email,系統會自動搜尋所有含有該地址的送出記錄並逐一清除,同時可以跳過法律依據上需要保留的記錄,例如已完成的訂單記錄。

存取請求(使用者要求查看自己的資料)走 Forms → Personal Data → Export Requests,操作邏輯相同。

Contact Form 7 搭配外掛補足記錄功能

Contact Form 7 本身不保存送出記錄,資料只走 Email,這讓自動清除的必要性降低,但也讓存取請求的回覆更難處理。如果需要在後台保存記錄,必須搭配 Flamingo 外掛;有了記錄,才能搭配像是 GDPR for Contact Form 7 這類外掛,加入同意勾選框與自動清除邏輯。

對每月送出量不多的小站,Contact Form 7 加 Flamingo 的組合相對輕量。對表單流量大、需要完整稽核軌跡的站台,WPForms 或 Gravity Forms 的原生功能支援則更完整。

從風險高低決定動工順序

知道要做什麼之後,接下來要判斷哪些先動。風險最高的是同意聲明——這是個資合規要求中最直接可見、也最容易被使用者主動舉報的部分。每個現有表單的送出按鈕前,是否有具體說明蒐集目的、是否要求主動勾選而非預設打勾,應優先逐一檢查。

同意聲明需要連結到隱私政策頁面。若站台沒有獨立的隱私政策頁,或內容沒有說明保存期限、使用者權利、聯絡方式,這個缺口應與聲明同步補上,否則連結指向空處,反而形成更明顯的漏洞。

外掛設定層面,依照前述各外掛的設定路徑,對聯絡表單設定不超過 6 個月的保存期,對電子報訂閱表單設定退訂後立即清除的觸發邏輯。同時評估是否有正當理由保留 IP 記錄,如無必要則關閉,減少可識別資料的儲存量。

最後一步是刪除請求的處理流程。在後台或內部文件裡訂定一套簡單的作業方式——從哪裡收到請求、由誰確認、多少天內完成、完成後記錄在哪裡。流程本身比工具更關鍵,沒有人執行的自動化設定,遇到查核時仍舉不出有效的處理紀錄。

相關文章
標籤: WordPress, GDPR, 個資法, 表單, 合規