模組 9 — 收 email 名單目錄  

MODULE 9

收 email 名單:
行銷人最該先做的一件事

報名頁 + 真的存起來的後端 + 看得到、匯得出的後台。全部免費 tier。

為什麼最實用

社群觸及是來的,
email 名單是你自己的。

兩條路,先選難度

A. 不部署任何東西B. 自己的 Worker + 資料庫
做法Google 表單 / Formspree / TallyCloudflare Worker + D1
名單存哪那個服務的後台 / Sheet你自己的資料庫,完全掌控
適合只想快、量不大要客製、名單自己擁有、要接系統

先說 A,因為它可能就夠你用了。

路線 A:零部署

路線 B 架構(模組 6 的延伸)

報名頁(GitHub Pages)──POST email──> Worker ──寫入──> D1 資料庫
                                        ↑
你的後台頁 ──GET ?token=管理密碼────────┘ ──回傳名單──> 看 / 匯 CSV

部署(wrangler,同模組 6)

wrangler d1 create sanwu-signups        # 建庫,記下 database_id
# 把 database_id 填進 wrangler.toml
wrangler d1 execute sanwu-signups --remote --file ./schema.sql
wrangler deploy                         # 部署 Worker
wrangler secret put ADMIN_TOKEN         # 設後台密碼(自己想一組長字串)

ADMIN_TOKEN 是後台鑰匙,藏在 Worker Secret,永遠不寫進任何網頁。

後台登入:三種防護

做法一 token做法三 Google 登入做法二 CF Access
門檻一把共享密碼每人 Google 實名每人實名
要域名嗎不用不用要(Cloudflare)
加/踢人換 token 全員重給改白名單即時移除即時
成本零,已內建零(建個 Client ID)後台搬上 Cloudflare

基本功:密碼走 Authorization 標頭別放網址。沒域名又想實名 → 做法三 Google 登入(前端只需公開的 Client ID、不用 secret;Worker 驗簽+查白名單,改白名單即時加人/踢人)。

做法三:建 Google OAuth Client ID

先懂:一個帳號可多專案,每專案一個同意畫面 = 一個品牌。「App 名稱」就是登入彈窗顯示的品牌名;選到舊專案會帶出舊品牌 → 想要乾淨品牌就新開專案

前端用 GSI 登入拿 ID token → Worker 驗簽+查 ALLOWED_EMAILS 白名單

名單拿到了,然後呢

常見坑

對照:demos/09-email-signup(報名頁 + admin.html 後台,接真的 D1)

動手做