Branch8

香港 PDPO 電商像素合規設定:Meta 與 Google 同意管理實戰

Matt Li
August 29, 2026
14 mins read
香港 PDPO 電商像素合規設定:Meta 與 Google 同意管理實戰

Key Takeaways

  • PDPO 下線上識別碼可構成個人資料,受 DPP1、DPP3、DPP4 約束。
  • 所有廣告類標籤預設 denied,由 CMP 觸發 Consent Mode v2 更新。
  • Meta 需獨立處理:`fbq('consent')` 加上 CAPI 的伺服器端同意判斷。
  • Shopify 站必須同步呼叫 Customer Privacy API,否則原生頻道會繞過 CMP。
  • 以歐盟 opt-in 作全球基準線,再用 region 覆寫,維護成本最低。

想在香港合規部署第三方像素,核心做法是:先盤點所有標籤、以 PDPO 第一原則寫清楚 PICS、再用 CMP 驅動 Google Consent Mode v2 與 Meta fbq('consent'),令所有行銷標籤預設封鎖、獲得同意後才觸發,並保留同意記錄以供查核。

這篇教學會由零開始,帶你完成一套可審計的電商同意管理架構:從資料盤點、PICS 撰寫、CMP 部署、Google Tag Manager 的 consent gating、Meta Pixel 與 Conversions API 的同意傳遞,到驗證方法與常見錯誤排查。內容同時考慮香港以外的市場差異——新加坡 PDPA、台灣個資法、澳洲 Privacy Act 與歐盟 GDPR——方便跨境電商用同一套技術骨幹服務多個市場。

PDPO 對第三方像素究竟管什麼?

香港《個人資料(私隱)條例》(PDPO, Cap. 486) 並沒有像 GDPR 那樣設立獨立的 Cookie 條文,但這不等於像素可以隨便裝。私隱專員公署 (PCPD) 的指引一貫立場是:當線上識別碼(cookie ID、廣告 ID、雜湊電郵、IP 加裝置指紋組合)可合理地識別到一名可辨識的個人時,它就是個人資料,受六項保護資料原則 (Data Protection Principles) 約束。

實務上,三條原則對像素設定影響最大:

  1. DPP1(收集目的及方式)——收集必須公平、與功能直接相關,並在收集時或之前告知資料當事人收集目的、可能轉移的接收者類別。這正是「收集個人資料聲明」(PICS) 的法律基礎。
  2. DPP3(使用限制)——資料不得用於原本收集目的以外的新目的,除非取得當事人「明確而自願的同意」。把結帳時收集的電郵雜湊後上傳做 Meta Custom Audience,如果 PICS 沒寫過,就是典型的 DPP3 風險。
  3. DPP4(保安)——包括你交給第三方處理者(廣告平台、CDP、標籤管理供應商)的資料,必須以合約或其他方式確保保障水平。

另外要留意 2021 年 10 月生效的 PDPO 修訂,把「起底」行為刑事化,並賦予專員刑事調查與發出停止披露通知的權力,PCPD 的執法姿態比十年前主動得多。對電商而言,更常見的風險不是罰款,而是投訴、查詢與媒體壓力——尤其當品牌同時服務歐盟客人時,同一條像素可能同時觸發 GDPR 責任。歐盟 GDPR 的最高行政罰款是全球年營業額 4% 或 2,000 萬歐元(取較高者),據歐盟委員會公布的條文;新加坡 PDPA 自 2022 年 10 月起,對本地年營業額超過 1,000 萬新元的機構,最高罰款可達本地年營業額的 10%,根據 PDPC 公布的修訂。跨境電商的合規基準線,實際上是被最嚴格的市場拉高。

一個實務判斷:PDPO 要「明示同意」還是「告知即可」?

PDPO 對首次收集(DPP1)的要求是「充分告知」,不是全面 opt-in 同意;真正需要「明確自願同意」的是新目的使用(DPP3)與直接營銷(第 VIA 部)。條例第 35C 條要求:機構在使用個人資料作直接營銷前,必須告知並取得資料當事人的「同意」(包括不表示反對的書面指示),且必須提供免費的 opt-out 渠道。

因此香港的穩健做法是:

  • 必要 / 功能性 cookie:告知即可,可預設載入。
  • 分析類:以告知 + 易用的 opt-out 為底線,建議走 opt-in 以便同一套設定覆蓋歐盟訪客。
  • 廣告 / 再營銷 / 客戶名單上傳:走 opt-in,並保留同意記錄。這既滿足 DPP3 與第 VIA 部,也是 Meta 與 Google 商業條款自身的要求。

開工前的準備清單

動手之前先備齊以下項目,否則中途會卡住:

  1. 完整的網站標籤清單(包括開發人員手加的 hardcoded 腳本,不只 GTM 內的)。
  2. GTM 容器管理員權限,以及 GA4、Google Ads 的編輯權限。
  3. Meta Business Manager 的 Pixel 與 Dataset(CAPI) 權限,以及一組 System User Access Token。
  4. 一個支援 Google Consent Mode v2 與 TCF 的 CMP(例如 Cookiebot、OneTrust、Osano、Usercentrics,或自建方案)。Google 自 2024 年 3 月起要求向歐洲經濟區用戶投放廣告的客戶必須整合 Consent Mode v2,根據 Google Ads Help 公布的政策。
  5. 法務或私隱顧問對 PICS / Privacy Policy 文本的覆核——技術設定不能取代文本。
  6. 一個 staging 環境。切勿直接在生產環境改同意預設值。
  7. Google Tag Assistant 與 Meta Pixel Helper(Chrome 擴充),加上瀏覽器 DevTools。

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.

步驟一:做一次像素與資料流盤點

先量度,再改動。目標是產出一張「標籤 × 目的 × 資料欄位 × 接收方 × 同意類別」的清單。

用 DevTools Console 快速抓出頁面上所有第三方請求的網域:

1// 在 Console 執行,列出所有跨網域資源
2const hosts = new Set(
3 performance.getEntriesByType('resource')
4 .map(r => new URL(r.name).hostname)
5 .filter(h => !h.endsWith(location.hostname))
6);
7console.table([...hosts].sort());

再檢查已寫入的 cookie 與 storage:

1console.table(document.cookie.split('; ').map(c => {
2 const [k, ...v] = c.split('=');
3 return { name: k, valueLength: v.join('=').length };
4}));
5console.log('localStorage keys:', Object.keys(localStorage));

預期輸出:典型香港電商站會出現 15–40 個第三方網域,常見包括 connect.facebook.netgoogletagmanager.comanalytics.tiktok.comsc-static.net(Snap)、static.criteo.net、以及客服 widget 與 A/B 測試工具。留意兩類「意外發現」:

  • 未申報的像素——多年前某個代理商加上、無人記得的腳本。這些是最大的合規漏洞,因為 PICS 不可能已披露它們。
  • 透過 tag piggybacking 載入的第四方標籤——某些聯盟或 DSP 標籤會再載入其他供應商。這類必須向供應商索取完整清單,否則你無法在 PICS 誠實列出「接收者類別」。

把盤點結果直接映射到四個同意類別:necessaryanalyticsmarketingpreferences。這個分類會貫穿之後所有設定。

步驟二:把 PICS 與同意分層寫清楚

PCPD 對 PICS 的期望是「具體、易明、在收集時或之前提供」。技術團隊常忽略的三件事:

  1. 接收者類別要具名到有意義的程度。「第三方營銷服務供應商」太空泛;寫「社交媒體廣告平台(如 Meta、Google)、電郵營銷服務供應商」更穩妥。
  2. 雜湊不等於匿名。把電郵做 SHA-256 上傳 Meta Advanced Matching,在 PDPO 下仍屬個人資料的轉移,因為接收方能重新識別。PICS 必須涵蓋此用途。
  3. 同意橫幅的「拒絕」與「接受」必須對稱。只有「接受全部」而沒有同等顯眼的「拒絕全部」,在歐盟已被多次裁定無效;在香港雖無同等判例,但這是低成本的風險減免。

Banner 文案(繁中)建議結構:標題說明用途 → 兩個對等按鈕 → 「管理設定」連結 → PICS / 私隱政策連結。避免在按鈕文字使用誘導語(例如「接受以獲得最佳體驗」)。

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.

Consent Mode v2 的關鍵是:Google 標籤仍然載入,但在未獲同意時不寫入 cookie、不傳送識別碼。這比「完全封鎖標籤」保留更多建模數據,同時符合預設拒絕的原則。

這段必須在 GTM 容器程式碼之前,以同步方式放在 <head> 最前:

1<script>
2 window.dataLayer = window.dataLayer || [];
3 function gtag(){dataLayer.push(arguments);}
4
5 // 香港、新加坡、台灣、澳洲及歐盟一律預設拒絕
6 gtag('consent', 'default', {
7 ad_storage: 'denied',
8 ad_user_data: 'denied',
9 ad_personalization: 'denied',
10 analytics_storage: 'denied',
11 functionality_storage: 'granted',
12 personalization_storage: 'denied',
13 security_storage: 'granted',
14 wait_for_update: 500
15 });
16
17 // 未同意時移除廣告點擊識別碼,並以 URL 傳遞維持歸因
18 gtag('set', 'ads_data_redaction', true);
19 gtag('set', 'url_passthrough', true);
20</script>

若你要對不同地區採用不同預設值(例如香港分析類走 opt-out),可用 region 參數疊加,後宣告者優先:

1<script>
2 // 基礎:全球預設拒絕(見上方)
3 // 例外:香港與台灣允許分析類預設開啟(需業務與法務同意)
4 gtag('consent', 'default', {
5 analytics_storage: 'granted',
6 region: ['HK', 'TW']
7 });
8</script>

注意:區域差異化會讓數據比較與 QA 複雜化。我們的實務建議是,除非流量結構真的需要,否則全球統一 opt-in,換取單一可解釋的架構。

3.2 CMP 回傳同意時更新狀態

CMP 的 callback 內呼叫 update,並同步推一個自訂事件供 GTM 觸發器使用:

1function applyConsent(choice) {
2 gtag('consent', 'update', {
3 ad_storage: choice.marketing ? 'granted' : 'denied',
4 ad_user_data: choice.marketing ? 'granted' : 'denied',
5 ad_personalization: choice.marketing ? 'granted' : 'denied',
6 analytics_storage: choice.analytics ? 'granted' : 'denied',
7 personalization_storage: choice.preferences ? 'granted' : 'denied'
8 });
9
10 window.dataLayer.push({
11 event: 'consent_updated',
12 consent_marketing: !!choice.marketing,
13 consent_analytics: !!choice.analytics,
14 consent_timestamp: new Date().toISOString(),
15 consent_version: 'pics-2026-01'
16 });
17}

consent_version 這個欄位很重要:當你日後修改 PICS 或新增像素,你需要知道某位訪客同意的是哪一版文本。PDPO DPP1 的告知義務是針對「當時」的目的,舊同意不能自動延伸至新目的。

3.3 在 GTM 為每個標籤設定同意檢查

GTM 內建 Consent Overview(容器 → 管理 → 同意設定)。逐個標籤設定「需要額外同意才能觸發」:

  • GA4 Configuration / Event → analytics_storage
  • Google Ads Remarketing / Conversion → ad_storage, ad_user_data, ad_personalization
  • Meta Pixel(自訂 HTML)→ ad_storage, ad_user_data
  • TikTok / LinkedIn / Criteo → ad_storage

對於自訂 HTML 標籤,除了在 UI 勾選,建議在程式碼層再加一道保險:

1<script>
2 (function () {
3 var dl = window.google_tag_data && window.google_tag_data.ics;
4 var granted = dl ? dl.getConsentState('ad_storage') === 1 : false;
5 if (!granted) { return; } // 雙重防護:UI 設定被誤改時仍不觸發
6
7 !function(f,b,e,v,n,t,s){/* Meta base code */}(window,document,'script',
8 'https://connect.facebook.net/en_US/fbevents.js');
9 fbq('init', '{{Meta Pixel ID}}');
10 fbq('track', 'PageView');
11 })();
12</script>

步驟四:Meta Pixel 與 Conversions API 的同意處理

Meta 提供獨立的同意 API,與 Google 的機制不互通,必須分別處理。

4.1 瀏覽器端:先 revoke,後 grant

如果你選擇讓 Pixel 載入但不追蹤(方便日後即時開啟),用 revoke:

1<script>
2 fbq('consent', 'revoke'); // 必須在 init 之前
3 fbq('init', '1234567890');
4 fbq('track', 'PageView'); // 會被暫存,不會發送
5</script>

獲得同意後:

1fbq('consent', 'grant');
2fbq('track', 'PageView');

根據 Meta for Developers 的 Pixel 文件,revoke 狀態下 Pixel 不會發送事件,直到收到 grant。要留意:revoke 只影響追蹤發送,fbevents.js 本身仍會由 connect.facebook.net 載入。如果你的法務立場是「未同意前不得向第三方發出任何請求」,就必須改用完全封鎖(即步驟 3.3 的 early return 寫法)。這是一個真實的取捨:完全封鎖更保守,但會失去 Meta 的部分建模與去重能力。

4.2 伺服器端:CAPI 不會自動繼承同意

最常見的嚴重錯誤,是前端做足同意管理,後端 Conversions API 卻照樣把每一筆訂單推去 Meta。伺服器端事件必須由你自己攜帶同意狀態。

做法:在結帳時把同意快照寫入訂單記錄,CAPI worker 讀取後決定是否發送:

1// Node.js:只在 marketing 同意為 true 時發送 CAPI 事件
2import crypto from 'node:crypto';
3
4const sha256 = (v) =>
5 crypto.createHash('sha256').update(String(v).trim().toLowerCase()).digest('hex');
6
7async function sendPurchase(order) {
8 if (!order.consent?.marketing) {
9 return { skipped: true, reason: 'marketing_consent_denied' };
10 }
11
12 const payload = {
13 data: [{
14 event_name: 'Purchase',
15 event_time: Math.floor(Date.parse(order.createdAt) / 1000),
16 event_id: order.id, // 與前端 eventID 一致以便去重
17 action_source: 'website',
18 event_source_url: order.checkoutUrl,
19 user_data: {
20 em: [sha256(order.email)],
21 fbp: order.fbp || undefined, // 未同意時不會存在
22 client_ip_address: order.ip,
23 client_user_agent: order.userAgent
24 },
25 custom_data: { currency: order.currency, value: order.total }
26 }]
27 };
28
29 const res = await fetch(
30 `https://graph.facebook.com/v19.0/${process.env.META_DATASET_ID}/events`,
31 {
32 method: 'POST',
33 headers: { 'Content-Type': 'application/json' },
34 body: JSON.stringify({ ...payload, access_token: process.env.META_TOKEN })
35 }
36 );
37 return res.json();
38}

用 curl 在 staging 驗證(記得加 test_event_code,可在 Events Manager 的 Test Events 分頁取得):

1curl -sS -X POST \
2 "https://graph.facebook.com/v19.0/${DATASET_ID}/events" \
3 -H "Content-Type: application/json" \
4 -d "{\"data\":[{\"event_name\":\"Purchase\",\"event_time\":$(date +%s),\"action_source\":\"website\",\"user_data\":{\"em\":[\"$(printf '[email protected]' | shasum -a 256 | cut -d' ' -f1)\"]},\"custom_data\":{\"currency\":\"HKD\",\"value\":388}}],\"test_event_code\":\"TEST12345\",\"access_token\":\"${META_TOKEN}\"}"

預期輸出:{"events_received":1,"messages":[],"fbtrace_id":"..."}。若 events_received 為 1 但 Events Manager 沒顯示,通常是 test_event_code 不符或 dataset 選錯。

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.

步驟五:在 Shopify 等平台層面收口

如果站在 Shopify(含 Plus)上,除了 GTM,還要處理平台自身的 Customer Privacy API,否則 Shopify 原生的 Meta / Google 頻道會繞過你的 CMP。

1// 在 CMP callback 內同步 Shopify 的追蹤同意
2window.Shopify.loadFeatures(
3 [{ name: 'consent-tracking-api', version: '0.1' }],
4 (error) => {
5 if (error) { console.error('Shopify consent API load failed', error); return; }
6 window.Shopify.customerPrivacy.setTrackingConsent(
7 {
8 analytics: choice.analytics,
9 marketing: choice.marketing,
10 preferences: choice.preferences,
11 sale_of_data: choice.marketing
12 },
13 () => console.log('Shopify consent applied')
14 );
15 }
16);

驗證:

1window.Shopify.customerPrivacy.currentVisitorConsent();
2// 預期:{ marketing: "no", analytics: "no", preferences: "no", sale_of_data: "no" }

根據 Shopify.dev 的 Customer Privacy API 文件,Web Pixels 與部分 App 會讀取這個同意狀態來決定是否觸發,所以這一步不能省。若使用 Magento / Adobe Commerce 或自建 Next.js 前台,對應做法是在 SSR 層讀取同意 cookie,決定是否在 HTML 中注入第三方腳本——這樣連 script 標籤都不會出現在回應中,是最保守的實作。

步驟六:驗證與可審計性

合規不只是「設定過」,而是「能證明」。建立以下驗證程序:

  1. 無同意基準測試——無痕視窗開站,不點任何按鈕,用 DevTools Network 過濾 facebookgoogle-analyticsdoubleclick。預期:沒有 tr/?id= 請求,GA4 的 collect 請求若出現,參數應含 gcs=G100(即 ad_storage 與 analytics_storage 皆 denied)。
  2. 同意後測試——接受全部,重新檢查應出現 gcs=G111
  3. 拒絕後持久性測試——拒絕後重載三次,確認沒有標籤悄悄恢復。
  4. 撤回測試——從私隱設定入口改為拒絕,確認 ad_storage 回到 denied,且既有 _fbp_ga cookie 被刪除。很多實作只停止新事件,卻沒清 cookie。

清理範例:

1function purgeMarketingCookies() {
2 ['_fbp', '_fbc', '_gcl_au', '_ttp'].forEach((name) => {
3 document.cookie =
4 `${name}=; Max-Age=0; path=/; domain=.${location.hostname.split('.').slice(-2).join('.')}`;
5 });
6}
  1. 同意記錄——把每一次同意寫入你自己的資料庫(時間戳、選擇、PICS 版本、頁面、雜湊後的裝置識別),而不是只依賴 CMP 供應商。若日後 PCPD 查詢或客戶投訴,你需要自行舉證。

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.

香港以外:同一骨幹如何覆蓋多市場?

跨境電商最省成本的做法,是用同一套技術骨幹配置區域規則,而不是為每個市場另建一套。

新加坡 (PDPA)

PDPC 的 Advisory Guidelines 承認「視為同意」(deemed consent) 與合法利益例外,但直接營銷與 Do Not Call 名冊有獨立規則。技術上與香港一致,文本需另寫。

台灣(個人資料保護法)

第 8 條對告知事項的列舉相當具體(蒐集目的、個資類別、利用期間地區對象方式、當事人權利)。實務上台灣站的 PICS 需要比香港版更長、更逐項。

澳洲 / 紐西蘭

澳洲 Privacy Act 1988 的 APP 7 對直接營銷有明確條文,且 2024 年起推動的改革方向包括加強線上追蹤透明度——建議澳洲流量直接採用歐盟級 opt-in。

歐盟 / 英國

ePrivacy Directive 要求非必要 cookie 事前同意,並須整合 TCF v2.2 與 Google Consent Mode v2。若你有任何歐盟流量,把歐盟設定當成全球基準線,反而比維護兩套邏輯便宜。

這也是我們在亞太多地團隊(香港、新加坡、台灣、澳洲)交付時的標準做法:一個 GTM 容器、一套 consent 類別、以 region 覆寫差異,再由各地法務只審 PICS 文本。曾有一個在多個亞太市場營運的多品牌零售集團,原本每個市場的代理商各自安裝像素,盤點後才發現同一個 Meta Pixel ID 被三個容器重複載入——問題不在法規理解,而在治理缺位。

用 AI 輔助維護同意治理

同意設定最難的不是初次部署,而是三個月後有人加了新標籤。可自動化的部分:

  • 每日 headless 掃描:用 Playwright 在「未同意」狀態載入關鍵頁面,把所有第三方網域與 cookie 寫入 baseline,出現新網域即發 Slack 警報。
1npx playwright test tests/consent-baseline.spec.ts --project=chromium
2# 預期輸出:1 passed — 若出現 "unexpected third-party host: xxx" 即為新標籤未經審批
  • LLM 輔助 PICS 差異檢查:把盤點清單(供應商 + 目的)與現行 PICS 文本一併餵給模型,要求列出「清單中有但文本未涵蓋」的接收者類別。模型不是法律意見,但能把人手覆核的範圍縮小到值得法務看的幾行。
  • GTM 容器版本 diff:用 GTM API 匯出容器 JSON,在 CI 中比對新增標籤是否都設定了 consent 類型,未設定則 fail build。

這類自動化的價值,在於把合規從「一次性專案」變成持續執行的檢查,而不需要按比例增加人手。

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.

常見問題排查

GA4 報表在上線 CMP 後暴跌,但 gcs=G111 正常。 檢查 wait_for_update 是否過短。若 CMP 載入慢於 500ms,首次 page_view 會以 denied 狀態發送。可調至 2000ms,或把 CMP 腳本改為同步載入。

Meta Events Manager 顯示重複 Purchase。 前端 fbq('track','Purchase',{},{eventID:...}) 與 CAPI 的 event_id 必須完全一致(建議用訂單號)。若前端因未同意而未發送,後端也不應發送,否則歸因與同意狀態不一致。

同意橫幅出現但標籤照舊觸發。 九成是 hardcoded 在 theme 檔案中的腳本,不受 GTM 管制。回到步驟一的 Network 盤點,搜尋 theme 原始碼中的 connect.facebook.net

gcs 參數完全不出現。 表示 default consent 沒有在 Google 標籤之前執行。確認該 script 是同步的、放在 GTM snippet 之上,且沒有被 tag manager 自己注入。

Shopify Web Pixel 仍在收集。 確認已呼叫 setTrackingConsent,且 Shopify 後台的 Customer Privacy 設定沒有把香港/亞太地區排除在「需要同意的地區」之外。

Consent Mode 建模沒有數據。 根據 Google Analytics Help 的說明,行為建模需要達到一定的流量門檻才會啟動;小型站點可能長期看不到建模數據,這是設計上的限制,不是設定錯誤。

收尾:把設定變成制度

技術設定只佔合規工作的一半。建議把以下三件事寫進流程:任何新增第三方腳本必須先分類到同意類別才可上線;PICS 每次修改遞增版本號並記錄;每季執行一次完整盤點與無同意基準測試。這樣即使團隊或代理商更換,架構仍站得住。

Branch8 的亞太團隊(香港、新加坡、台灣、越南、馬來西亞、印尼、菲律賓、澳洲)為跨境電商品牌交付同意管理與追蹤架構,涵蓋 GTM 治理、CAPI 伺服器端部署與多市場 PICS 技術對接。如果你的站點正面對多地私隱法規、或懷疑像素設定已失控,歡迎聯絡我們安排一次追蹤與同意架構檢視。

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

PDPO 沒有像歐盟 ePrivacy Directive 那樣的明文 cookie 條文,因此法律上不強制彈出式同意橫幅。但當 cookie ID 或雜湊電郵可識別個人時,DPP1 的告知義務、DPP3 的新目的同意要求,以及第 VIA 部的直接營銷同意規則都會適用,實務上橫幅加 PICS 是最容易舉證的做法。

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.