Branch8

HubSpot 香港黑色星期五行銷自動化排程設定教學

Matt Li
November 9, 2026
13 mins read
HubSpot 香港黑色星期五行銷自動化排程設定教學

Key Takeaways

  • 固定檔期必須用「Delay until 特定日期時間」,不可用相對延遲。
  • 帳戶時區鎖定 Asia/Hong_Kong,API 的 publishDate 一律用 UTC。
  • 用 Custom Code Action 集中多市場語言、幣別與折扣分層邏輯。
  • 抑制雙 11 已購買者,避免退差價客訴與垃圾郵件回報。
  • 上線前跑完測試入列、時區換算、渲染與反向抑制六項檢查。

在 HubSpot 設定香港黑色星期五排程,核心是三件事:把入口(Workflow)的時區鎖定在 Asia/Hong_Kong、用固定日期型 Workflow 搭配「延遲至特定時間」動作控制發送時刻,並以 Custom Code Action 處理多市場語言與折扣碼分流。以下是完整步驟。

開始前:你需要準備什麼

這份教學假設你在 HubSpot 上有以下條件。缺一項,後面某幾步會卡住。

  1. Marketing Hub Professional 或 Enterprise。Workflows(工作流程)與排程式行銷郵件屬於 Professional 以上功能;Starter 版只有簡易的 Email 自動化,無法做日期型分支與延遲。
  2. Operations Hub Professional(選用但強烈建議)。Custom Code Action(自訂程式碼動作)綁在 Operations Hub Professional 以上,依 HubSpot 開發者文件,支援 Node.js 與 Python 執行環境。沒有它,多市場分流就得靠大量 if/then 分支硬刻。
  3. 已驗證的寄件網域與 DMARC 設定。Google 與 Yahoo 自 2024 年 2 月起對每日寄送超過 5,000 封郵件的寄件方要求 SPF、DKIM 與 DMARC 並存,退訂須支援一鍵處理(依 Google Email sender guidelines)。黑色星期五正是你最容易踩中這道門檻的一週。
  4. Private App Access Token(若要用 API 建立或排程郵件)。到 Settings → Integrations → Private Apps 建立,勾選 content、crm.objects.contacts.read、automation 等 scope。
  5. 一份已清洗的聯絡人資料:至少包含國家/市場、偏好語言、最近一次互動日期、行銷同意狀態(marketing contact 與 subscription type)。

先確認你的「黑色星期五」到底是哪一天

2025 年的黑色星期五是 11 月 28 日(美國感恩節翌日),2026 年則是 11 月 27 日。但在亞太,這個日期不是孤立的:中國大陸與香港、台灣市場的雙 11(11 月 11 日)與雙 12(12 月 12 日)會把整個 Q4 的收件匣壓力拉成一條長達五週的高原,而不是單一尖峰。排程時要把「上一波活動的疲勞度」當成輸入條件,而不是從零開始。

為什麼香港的黑色星期五排程特別棘手

三個結構性原因,值得在動手前先理解。

時區錯位。 香港是 UTC+8,紐約在 11 月底是 UTC-5,相差 13 小時。如果你的品牌同時服務美國與香港客戶,美國時間週四晚上開跑的促銷,在香港是週五上午 9 點——剛好是上班通勤時段,對 B2C 其實不壞,但對 B2B 的開信率就不理想。HubSpot 的 Workflow 延遲動作預設採用「帳戶時區」或「聯絡人時區」,兩者結果會差一整個工作天。

多市場、多語言、單一 Portal。 多數在亞太營運的品牌會把香港、新加坡、台灣、馬來西亞放在同一個 HubSpot Portal,靠屬性區分。這代表同一個 Workflow 必須同時處理繁體中文、簡體中文、英文三種內容,以及 HKD、SGD、TWD、MYR 四種幣別的折扣門檻。

合規不是單一法域。 香港的《個人資料(私隱)條例》第 VIA 部對直接促銷有明確規範,首次使用個人資料作直接促銷前須取得資料當事人的同意,並提供免費的拒絕途徑(香港個人資料私隱專員公署)。新加坡的 PDPA 有 Do Not Call Registry 的額外要求(新加坡個人資料保護委員會),澳洲則受 Spam Act 2003 規管(澳洲通訊及媒體管理局)。一個跨境 Workflow 若不分流,等於用最寬鬆的標準服務最嚴格的法域。

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.

第一步:鎖定帳戶時區與營業時間

進入 Settings → Account Defaults → Time zone,確認設為 (GMT+08:00) Hong Kong。這個設定會影響:

  • Workflow 中「Delay until a specific time」的解讀基準
  • 排程式行銷郵件的發送時間顯示
  • 報表的日界線(這點在跨日促銷結算時很關鍵)

如果你的團隊分散在香港、新加坡與雪梨,建議把 Portal 時區固定在 HK,然後在 Workflow 層用聯絡人屬性處理在地化,而不是讓每個使用者各自解讀。否則雪梨同事在 UI 上看到的「9:00 AM」與香港同事看到的不是同一個時刻。

同時到 Settings → Objects → Activities → Business Hours 設定營業時間。後續的「只在營業時間執行」選項會引用這組設定。

驗證方式

建立一個測試 Workflow,加入一個 Delay until 的動作,設 2025-11-28 09:00。儲存後查看動作摘要,應顯示類似 Delay until November 28, 2025 at 9:00 AM GMT+8。若顯示的是 UTC 或其他偏移量,表示帳戶時區未正確套用。

第二步:建立黑色星期五的受眾分段

不要用一張大名單打天下。至少切出四段,對應不同的訊息節奏。

分段 A:高意圖近期活躍者

篩選條件(Active List):

1Last page seen is known
2AND Time of last session is less than 30 days ago
3AND Marketing contact status is equal to Marketing contact
4AND Email subscription — Promotional is not Unsubscribed

分段 B:購物車放棄者(接 E-commerce 資料)

若你用 HubSpot 的 Shopify 整合或自建的 Custom Object:

1Abandoned cart date is more than 2 days ago
2AND Abandoned cart date is less than 60 days ago
3AND Lifecycle stage is not equal to Customer within last 7 days

分段 C:雙 11 已轉換者(抑制用)

這段的用途是排除,不是發送。在亞太市場,11 月 11 日剛下單的客人在 11 月 28 日收到更深的折扣,會直接觸發客服退差價的詢問。

1Last order date is after November 9, 2025
2AND Last order date is before November 14, 2025

分段 D:沉睡名單(低頻、單封再喚醒)

1Time of last session is more than 180 days ago
2AND Marketing email opens is less than 1 in last 180 days

對分段 D 要特別小心。黑色星期五期間大量寄給長期不互動的收件人,是觸發 Gmail 垃圾郵件率門檻最快的方式——Google 的寄件方指南把垃圾郵件回報率上限定在 0.3%,並建議維持在 0.1% 以下。

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.

第三步:用固定日期型 Workflow 控制發送時刻

建立 Workflow 時選 Contact-based → Start from scratch,然後在 Enrollment triggers 使用你在第二步建立的清單成員身分。

接著是關鍵設定:在 Workflow 的 Settings → Schedule 分頁中,

  1. 勾選 Allow actions to execute only on certain days or times
  2. 設定允許時段,例如週一至週日 08:00–21:00(HKT)
  3. 在 Unenrollment and suppression 分頁,把分段 C 設為抑制清單

然後 Workflow 主體結構如下(文字示意):

  1. Delay until — 2025-11-27 21:00 HKT(香港時間週四晚上,對應美東週四早上 08:00,搶在美國品牌大量投遞前)
  2. Branch: If/then — 以 Preferred language 分流到 zh-Hant / zh-Hans / en 三條路徑
  3. 各路徑 Send email(對應語言版本的促銷郵件)
  4. Delay — 20 小時
  5. Branch: If/then — Marketing email opened is false
  6. Send email — 重寄版本(僅改主旨行)
  7. Delay until — 2025-12-01 10:00 HKT(Cyber Monday 收尾)
  8. Branch — 未購買者發送「最後 12 小時」郵件

「Delay until」與「Delay for」的差別

  • Delay for a set amount of time:相對延遲。聯絡人在 11 月 20 日入列,延遲 3 天就是 11 月 23 日——對固定日期的活動完全錯誤。
  • Delay until a specific date and time:絕對延遲。不論何時入列,都等到那一刻才繼續。黑色星期五必用這個。

這是最常見的設定錯誤:用相對延遲做固定檔期,結果早入列的人提前兩週收到促銷,晚入列的人活動結束後才收到。

第四步:用 Custom Code Action 處理多市場分流

如果你要支援四個市場、三種語言、各自的幣別門檻,用 If/then 分支會長成一棵難以維護的樹。改用一個 Custom Code Action,把分流邏輯集中在一處。

在 Workflow 中加入 Custom code 動作,執行環境選 Node.js,然後:

1const hubspot = require('@hubspot/api-client');
2
3exports.main = async (event, callback) => {
4 const market = (event.inputFields['market'] || 'HK').toUpperCase();
5 const lang = event.inputFields['hs_language'] || 'zh-hant';
6 const ltv = parseFloat(event.inputFields['total_revenue'] || '0');
7
8 // 各市場的幣別、免運門檻與活動開跑時刻(以 UTC 儲存,前端再本地化)
9 const config = {
10 HK: { currency: 'HKD', freeShip: 500, launchUtc: '2025-11-27T13:00:00Z' },
11 SG: { currency: 'SGD', freeShip: 80, launchUtc: '2025-11-27T13:00:00Z' },
12 TW: { currency: 'TWD', freeShip: 2000, launchUtc: '2025-11-27T13:00:00Z' },
13 AU: { currency: 'AUD', freeShip: 100, launchUtc: '2025-11-27T11:00:00Z' }
14 };
15
16 const c = config[market] || config.HK;
17
18 // 分層折扣:以歷史消費決定折扣碼前綴
19 let tier = 'BF15';
20 if (ltv >= 20000) tier = 'BF30';
21 else if (ltv >= 5000) tier = 'BF25';
22
23 const code = `${tier}-${market}-${Math.random().toString(36).slice(2, 8).toUpperCase()}`;
24
25 callback({
26 outputFields: {
27 bf_discount_code: code,
28 bf_currency: c.currency,
29 bf_free_ship_threshold: c.freeShip,
30 bf_launch_utc: c.launchUtc,
31 bf_locale: lang
32 }
33 });
34};

在動作設定中,把 market、hs_language、total_revenue 加為 Input fields(對應聯絡人屬性),並宣告五個 Output fields。後續的 Copy property value 動作可以把 bf_discount_code 寫回聯絡人屬性,郵件再用個人化權杖引用。

預期輸出:在 Workflow 的測試面板執行後,應看到 JSON 回應,例如 {"bf_discount_code":"BF25-SG-K7X2P9","bf_currency":"SGD",...}。若回傳 Execution timed out,表示你的程式碼超過了 HubSpot 對 Custom Code Action 的執行時間上限(依 HubSpot 開發者文件,單次執行有秒級上限,且回傳值大小有限制)——把外部 API 呼叫移出 Workflow,改用非同步的 Webhook 模式。

郵件端的 HubL 在地化

在行銷郵件中,用 HubL 條件式處理貨幣與門檻,避免為每個市場複製一整封郵件:

1{% if contact.bf_currency == 'HKD' %}
2 <p>滿 HK${{ contact.bf_free_ship_threshold }} 免運,輸入碼 <strong>{{ contact.bf_discount_code }}</strong></p>
3{% elif contact.bf_currency == 'TWD' %}
4 <p>滿 NT${{ contact.bf_free_ship_threshold }} 免運,輸入碼 <strong>{{ contact.bf_discount_code }}</strong></p>
5{% else %}
6 <p>Free shipping over {{ contact.bf_currency }}{{ contact.bf_free_ship_threshold }} — code <strong>{{ contact.bf_discount_code }}</strong></p>
7{% endif %}

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.

第五步:用 API 批次建立與排程郵件

若你每年要為多個品牌、多個市場建立數十封郵件,手動複製會出錯。HubSpot 的 Marketing Emails API(v3)支援程式化建立與排程。

建立一封排程郵件的範例:

1curl -X POST \
2 'https://api.hubapi.com/marketing/v3/emails' \
3 -H "Authorization: Bearer $HUBSPOT_PRIVATE_APP_TOKEN" \
4 -H 'Content-Type: application/json' \
5 -d '{
6 "name": "BF2025 — HK — Tier A — zh-Hant",
7 "subject": "黑五限定:全站低至 7 折,今晚 9 時開跑",
8 "sendOnPublish": false,
9 "publishDate": "2025-11-27T13:00:00Z",
10 "language": "zh-hk",
11 "businessUnitId": 0
12 }'

注意 publishDate 必須是 UTC(ISO 8601)。2025-11-27T13:00:00Z 等於香港時間 11 月 27 日 21:00。把時區換算寫進部署腳本,不要在 UI 上心算。

列出所有已排程郵件以做最後檢查:

1curl -X GET \
2 'https://api.hubapi.com/marketing/v3/emails?limit=100&sort=-publishDate' \
3 -H "Authorization: Bearer $HUBSPOT_PRIVATE_APP_TOKEN" \
4 | jq '.results[] | {name, state, publishDate}'

預期輸出:每封郵件的 state 應為 SCHEDULED(而非 DRAFT)。任何停留在 DRAFT 的,到了檔期都不會發出去。

留意 API 速率限制

依 HubSpot 的 Usage Guidelines,Private App 在 Professional 與 Enterprise 方案下的標準速率為每 10 秒 190 次請求,每日亦有總量上限。批次建立 50 封郵件時,加入節流:

1const sleep = (ms) => new Promise(r => setTimeout(r, ms));
2for (const payload of emailPayloads) {
3 await createEmail(payload);
4 await sleep(120); // 約 8 req/s,安全餘裕充足
5}

第六步:設定抑制、頻率上限與退訂

這一步最容易被跳過,也最容易在檔期中炸掉名單健康度。

  1. 全域頻率上限:Settings → Marketing → Email → Subscriptions → Email frequency safeguards。為促銷類訂閱型別設定每週上限(例如 4 封)。這會在 Workflow 層自動攔截超額發送。
  2. Workflow 抑制清單:在每個黑五 Workflow 的 Settings 中加入「近 7 日已購買」「客服處理中」「已退款」三張清單。
  3. 一鍵退訂標頭:確認 Settings → Marketing → Email → Configuration 中已啟用 List-Unsubscribe 支援。Google 與 Yahoo 的 2024 年寄件方要求對大量寄件者強制此項。
  4. 本地法域分流:對新加坡聯絡人,若你同時發送 SMS 或 WhatsApp,須先核對 DNC Registry;對澳洲聯絡人,Spam Act 2003 要求每封商業電子訊息包含可識別的寄件人資訊與有效退訂機制。

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. Workflow 測試入列:用 Workflow 右上角的 Test 功能,選一個真實聯絡人(不要用 team 內部信箱,Gmail 對內部域名的處理不同)。確認每個動作的預覽結果都正確。
  2. Custom Code 單元測試:在程式碼編輯器內直接 Test,分別代入 HK/SG/TW/AU 四種 market 值,檢查輸出的幣別與門檻。
  3. 時區雙重驗證:在 HubSpot UI 看到的排程時間,與你用 date -u -d '2025-11-27 21:00 HKT' 算出的 UTC 值比對。
  4. 郵件渲染:用 HubSpot 的 inbox preview 檢查繁體中文在 Outlook(Windows)的字型回退——這是中文郵件最常見的破版來源。
  5. 抑制邏輯反向測試:手動把一個測試聯絡人加進抑制清單,確認它無法入列。
  6. 乾跑(dry run):把 Workflow 的日期改成明天,用 20 人的內部清單跑一次完整流程,再改回正式日期。

常見問題與排解

聯絡人沒有入列

檢查順序:(a)聯絡人是否為 Marketing contact?非行銷聯絡人不會收到行銷郵件;(b)是否被抑制清單攔截?(c)Workflow 是否勾選了「只入列一次」而該聯絡人去年已入列過同一個 Workflow?黑五 Workflow 建議每年新建,而非複用去年的。

郵件發出時間比預期晚了幾小時

最常見原因是 Workflow 的執行時段設定(Schedule 分頁)把動作推遲到下一個允許時段。若你刻意要在晚上 21:00 發送,允許時段必須涵蓋該時刻。

Custom Code Action 回傳 MISSING_SCOPES

在 Custom Code 內使用 HubSpot API Client 時,需在動作設定中綁定一個具備對應 scope 的 Private App Token,並以 process.env.YOUR_SECRET_NAME 引用,而不是硬寫在程式碼中。

折扣碼重複

上面範例用 Math.random() 產生後綴,在大量執行下有碰撞風險。正式環境應改為呼叫你的電商平台 API 取號,或預先產生一批唯一碼寫入 Custom Object,再由 Workflow 逐一指派。

報表數字對不上電商後台

HubSpot 的歸因預設有 cookie 有效期與歸因模型設定;電商後台多半用 last-click。檔期前先統一雙方的時區與歸因窗口定義,否則事後對帳會花掉整個 12 月。

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.

跨時區團隊如何守住檔期夜

黑色星期五在香港時間是週五凌晨到週五白天最熱鬧,而美國總部那時正在下班。這是亞太團隊的結構性優勢:當歐美團隊休息時,香港、新加坡與台北的營運團隊正值上班時段,可以即時處理發送失敗、折扣碼耗盡、落地頁 500 錯誤這類問題。

實務上值得建立的安排:

  • 值班窗口分配:雪梨(UTC+11)覆蓋亞太清晨,香港/台北(UTC+8)覆蓋亞太日間,再交棒給歐洲或美東。
  • 監控而非輪詢:為關鍵 Workflow 設定 HubSpot 的 Workflow error notifications,並把錯誤推到 Slack 頻道,而不是靠人每小時刷後台。
  • LLM 輔助的事故分類:把 Workflow 錯誤日誌與郵件退信原因丟給一個預設 prompt 的分類器,讓值班人員先看到「這 43 筆是硬退信、這 7 筆是 Custom Code 逾時」,而不是一堆原始 JSON。這類輔助不取代判斷,但能把值班夜的認知負荷壓下來。

Branch8 曾協助一家在香港與台灣同時營運的多品牌零售集團整理 Q4 的 HubSpot 自動化:原本每個品牌各有一套手工複製的 Workflow,改為以單一 Custom Code Action 做市場與語言分流、郵件內容以 HubL 條件式共用模板,維護面從十幾條流程收斂到三條。這不是效能魔法,而是把重複邏輯從 UI 搬進程式碼後的必然結果——代價是團隊需要有人能讀懂並維護那段 JavaScript。

檔期結束後要做的三件事

  1. 匯出完整事件資料:用 Marketing Events / Email Events API 取出 open、click、bounce、unsubscribe 的原始事件,存進你的倉儲(BigQuery、Snowflake 皆可)。HubSpot UI 的報表保留期與粒度有限,原始事件才能支撐明年的分段。
  2. 更新抑制與偏好:把檔期中退訂、硬退信、標記垃圾郵件的聯絡人移出 Marketing contact,直接影響下個計費週期的席位成本。
  3. 歸檔 Workflow 而非刪除:複製一份改名為 BF2025 — ARCHIVED,關閉入列。明年要還原邏輯時,你會慶幸自己留了下來。

如果你正在把 HubSpot、電商平台與跨市場 CDP 串成一套能撐過 Q4 尖峰的架構,Branch8 在香港、新加坡、台北與雪梨都有熟悉 HubSpot Operations Hub 與跨境資料合規的實作團隊——歡迎帶著你現有的 Workflow 結構來聊,我們可以從審視入列與抑制邏輯開始。

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

Starter 版只有簡易的 Email 自動化,無法建立含日期分支、延遲與抑制清單的完整 Workflow。要做固定檔期的多步驟排程,至少需要 Marketing Hub Professional;若要使用 Custom Code Action 做多市場分流,還需要 Operations Hub Professional。

About the Author

Matt Li

Co-Founder & CEO, Branch8 & Second Talent

Matt Li is Co-Founder and CEO of Branch8, a Y Combinator-backed (S15) Adobe Solution Partner and e-commerce consultancy headquartered in Hong Kong, and Co-Founder of Second Talent, a global tech hiring platform ranked #1 in Global Hiring on G2. With 12 years of experience in e-commerce strategy, platform implementation, and digital operations, he has led delivery of Adobe Commerce Cloud projects for enterprise clients including Chow Sang Sang, HomePlus (HKBN), Maxim's, Hong Kong International Airport, Hotai/Toyota, and Evisu. Prior to founding Branch8, Matt served as Vice President of Mid-Market Enterprises at HSBC. He serves as Vice Chairman of the Hong Kong E-Commerce Business Association (HKEBA). A self-taught software engineer, Matt graduated from the University of Toronto with a Bachelor of Commerce in Finance and Economics.