TW 季度募款報表 — Q1 + APR 2026(BigQuery 版)

資料來源:GA4(TW property 251984551,僅 Petition Page Views)+ BigQuery gpea-data.report_table(其餘)
產生時間:2026-05-26 | 市場:Taiwan | 期間:Q1 = 1/1–3/31、APR = 4/1–4/30
Leads/Call Case/Eligible 三欄每格顯示兩種付費分類:UTM=我們自訂的 UTM 分法(主數字)、lead_type=BigQuery 原生分類(只有 Paid/Organic、無 Offline)。其餘欄位:BigQuery 新值原本=CRM(Salesforce)舊值/Δ。
來源色標: GA4 BigQuery · conversion_funnel BigQuery · web_performance BigQuery · Donor Type=New
Δ 顏色:🟢 |Δ|≤5%/≤1pp 🟡 5–20%/1–5pp 🔴 ≥20%/>5pp · Δ 為「UTM 版 vs 原本」。

Q1 2026(1/1 – 3/31)

Petition Page Views Leads
UTM / lead_type
Call Case
UTM / lead_type
Eligible
UTM / lead_type
CPL Daisy Chain RGDaisy Chain SGTTL Giving CVR AC SpendNew RGNew SGCPRG
Spend=Spend÷Leads(Paid)=ACSpend÷NewRG(Paid)
Paid
124,351
原本 124,351
Δ 0 同 GA4
UTM 4,294
lead_type 3,827
原本 4,760
Δ −9.8%
UTM 3,291
lead_type 2,938
原本 3,683
Δ −10.6%
UTM 76.6%
lead_type 76.8%
原本 77.4%
Δ −0.8pp
47
原本 46
Δ +2.2%
61
原本 61
Δ 0
14.4%
原本 12.7%
Δ +1.7pp
234
原本 226
Δ +3.5%
366
原本 361
Δ +1.4%
Other
6,489
原本 6,489
Δ 0
UTM 1,022
lead_type 3,826 Organic*
原本 1,137
Δ −10.1%
UTM 662
lead_type 3,007 Organic*
原本 751
Δ −11.9%
UTM 64.8%
lead_type 78.6% Organic*
原本 66.1%
Δ −1.3pp
5
原本 10
Δ −50%
9
原本 9
Δ 0
21.7%
原本 19.6%
Δ +2.1pp
91
原本 82
Δ +11.0%
126
原本 134
Δ −6.0%
Offline (額外)
5,020
原本 5,020
Δ 0
UTM 2,337
lead_type — 無此分類
原本 2,595
Δ −9.9%
UTM 1,992
lead_type —
原本 2,096
Δ −5.0%
UTM 85.2%
lead_type —
原本 80.8%
Δ +4.4pp
1
原本 0
1
原本 1
Δ 0
0.1%
原本 0.0%
1
原本 0
1
原本 1
Δ 0
Total (P+O)
130,840
原本 130,840
Δ 0
UTM 5,316
lead_type 7,653 P+Org
原本 5,897
Δ −9.8%
UTM 3,953
lead_type 5,945 P+Org
原本 4,434
Δ −10.8%
UTM 74.4%
lead_type 77.7%
原本 75.2%
Δ −0.8pp
52
原本 56
Δ −7.1%
70
原本 70
Δ 0
15.8%
原本 14.0%
Δ +1.8pp
325
原本 308
Δ +5.5%
492
原本 495
Δ −0.6%
* lead_type 只有 Paid / Organic 兩類、無 Offline,Organic = 所有非付費(含我們 UTM 版的 Other + Offline)。故 Organic 數字會比 UTM 版的 Other 大很多,不可逐列對等。

APR 2026(4/1 – 4/30)

Petition Page Views Leads
UTM / lead_type
Call Case
UTM / lead_type
Eligible
UTM / lead_type
CPL Daisy Chain RGDaisy Chain SGTTL Giving CVR AC SpendNew RGNew SGCPRG
Spend=Spend÷Leads(Paid)=ACSpend÷NewRG(Paid)
Paid
68,444
原本 68,444
Δ 0
UTM 1,496
lead_type 1,800
原本 1,683
Δ −11.1%
UTM 1,198
lead_type 1,414
原本 1,395
Δ −14.1%
UTM 80.1%
lead_type 78.6%
原本 82.9%
Δ −2.8pp
10
原本 10
Δ 0
12
原本 12
Δ 0
11.6%
原本 10.2%
Δ +1.4pp
63
原本 62
Δ +1.6%
105
原本 105
Δ 0
Other
8,437
原本 8,437
Δ 0
UTM 842
lead_type 1,074 Organic*
原本 940
Δ −10.4%
UTM 540
lead_type 792 Organic*
原本 669
Δ −19.3%
UTM 64.1%
lead_type 73.7% Organic*
原本 71.2%
Δ −7.1pp
7
原本 7
Δ 0
8
原本 8
Δ 0
10.3%
原本 13.2%
Δ −2.9pp
35
原本 59
Δ −40.7%
49
原本 62
Δ −21.0%
Offline (額外)
1,213
原本 1,213
Δ 0
UTM 536
lead_type — 無此分類
原本 596
Δ −10.1%
UTM 468
lead_type —
原本 523
Δ −10.5%
UTM 87.3%
lead_type —
原本 87.8%
Δ −0.5pp
0
原本 0
Δ 0
0
原本 0
Δ 0
0.4%
原本 0.2%
0
原本 0
Δ 0
2
原本 1
Total (P+O)
76,881
原本 76,881
Δ 0
UTM 2,338
lead_type 2,874 P+Org
原本 2,623
Δ −10.9%
UTM 1,738
lead_type 2,206 P+Org
原本 2,064
Δ −15.8%
UTM 74.3%
lead_type 76.8%
原本 78.7%
Δ −4.4pp
17
原本 17
Δ 0
20
原本 20
Δ 0
11.1%
原本 11.3%
Δ −0.2pp
98
原本 121
Δ −19.0%
154
原本 167
Δ −7.8%
* lead_type 只有 Paid / Organic、無 Offline,Organic = 所有非付費(含 UTM 版的 Other + Offline);不可與 UTM Other 逐列對等。
① 為什麼 Leads/Call Case/Eligible 要並列兩種分類?
UTM 版(主數字)=我們自訂規則(socialpaid/pmax/adwords… 視為 Paid)。lead_type 版=BigQuery 原生欄位,但它只把 FB/IG 社群付費算 Paid,漏掉所有 Google 付費(PMax/AdWords),且沒有 Offline。對照最明顯處:Q1 Leads·Paid 我們 UTM 4,294 vs lead_type 3,827(少的 ~467 就是被 lead_type 誤判成 Organic 的 Google 付費)。並列是為了拿這個差異去推動內部 tagging 統一。

每個數字的算法(含資料來源)

來源徽章:GA4 Google Analytics 4 BigQuery 倉儲 gpea-data.report_table CRM Salesforce 直查(SOQL,即「原本」欄) 衍生 由上述數字計算 手動 人工填入。表格每格的大字/UTM/lead_type 一律來自 GA4 或 BigQuery;「原本」欄一律來自 CRM
GA4Petition Page Views = GA4(TW property 251984551)中 pagePathpetitionsessions,依 sessionMedium 套 bucketUtm 分桶;排除 test/preview 頁。與原本同源(皆 GA4),Δ=0。
BigQueryLeadsconversion_funnel)= COUNT(DISTINCT cm_id)market='Taiwan' AND comparison='Actual' AND pet_signup_date ∈ 期間UTM 版bucketUtm(utm_medium) 分 Paid/Other/Offline;lead_type 版用 BigQuery 原生 lead_type 欄位分 Paid/Organic。CRM「原本」欄=Salesforce 直查(CampaignMember,同條件)。
BigQueryCall Caseconversion_funnel)= 同 Leads 但 casenumber IS NOT NULL(已指派電訪個案的 lead);同樣 UTM/lead_type 兩版本。CRM「原本」欄=Salesforce 直查(Case Sub_Category='Petition Conversion')。
衍生Eligible = Call Case ÷ Leads(同分類、同桶;分子分母皆 BigQuery)。「原本」欄=CRM 對應比值。
BigQueryDaisy Chain RG / SGweb_performance)= COUNT(*)theme LIKE '%petition%' OR '%thankyou%' AND signup_date ∈ 期間type Regular→RG / Oneoff→SG;依 bucketUtm(utm_medium)(捐款本身的 UTM)。CRM「原本」欄=Salesforce 直查(Donation__c,Theme 同條件)。
衍生TTL Giving CVR = unique(是 Daisy Chain ∪ 是 New) ÷ Leads,每桶各算(聯集去重);分子來自 BigQuery web_performance、分母來自 BigQuery conversion_funnel
BigQueryNew RG / New SGweb_performance,Donor Type=New)= COUNT(*)type=Regular|Oneoff AND past_donation_type 為空(終身首捐)AND signup_date ∈ 期間;依 bucketUtm(utm_medium)。終身首捐=曾捐過者(含一年以上回流)不計入。CRM「原本」欄=Salesforce 直查(Recurring_Donation__c / Donation__c,Channel='Website' + 12 個月未捐規則)。
bucketUtm 分桶規則(套 utm_medium,GA4 與 BigQuery 共用):'offline'→Offline;含 wv+engager→Other;開頭 socialpaid/pmax/adwords∈(ppc,cpc,paid_social,paid)→Paid;空值或其他 →Other
手動衍生CPL = Spend ÷ Leads(Paid)CPRG = AC Spend ÷ New RG(Paid)。Spend/AC Spend 由人工填入(廣告花費 TWD)。

來源與定義註解

③ Leads / Call Case / Eligible(conversion_funnel):比直查 CRM 約少 10%(見每格 Δ)。已排除 9 項常見原因,差距均勻分布,研判源自 BigQuery ETL 建表邏輯,實際原因待 Report 團隊確認
④ Daisy Chain(web_performance):APR 兩月與 CRM 完全相同;Q1 RG 因定捐 UTM 取自捐款記錄(非 CampaignMember)而差幾筆。
⚠️ ⑤ New RG / New SG 定義變更:本版採「終身首捐」(不含回流),與舊 CRM「12 個月未捐(含回流)」不同 → New 較舊版低(如 APR New RG 121→98、Other −40.7%),差額為回流捐款者,非衰退。對外溝通請一併說明。
資料驗證(2026-05-26):所有 BigQuery 原始計數已重新對照 conversion_funnel / web_performance 查詢(30 項全相符);衍生欄位(Eligible、TTL Giving CVR、Total、Δ)程式重算無誤。「原本」欄=CRM/SOQL 舊報表值。完整定義與算法見 docs/reporting/tw-quarterly-report-data-sources.md
📋 查詢 SQL(點擊展開)— 產生上述數字的實際 BigQuery 查詢

① Leads / Call Case(conversion_funnel,UTM + lead_type 兩版本)

-- ① Leads / Call Case(conversion_funnel)— UTM 分桶 + lead_type 兩版本
WITH cf AS (
  SELECT lead_type, casenumber, cm_id,
    CASE WHEN SAFE.PARSE_DATE('%Y-%m-%d', pet_signup_date) < '2026-04-01' THEN 'Q1' ELSE 'APR' END AS period,
    CASE
      WHEN utm_medium IS NULL OR utm_medium = '' THEN 'Other'
      WHEN LOWER(utm_medium) = 'offline' THEN 'Offline'
      WHEN LOWER(utm_medium) LIKE '%wv+engager%' THEN 'Other'
      WHEN LOWER(utm_medium) LIKE 'socialpaid%' OR LOWER(utm_medium) LIKE 'pmax%'
        OR LOWER(utm_medium) LIKE 'adwords%'
        OR LOWER(utm_medium) IN ('ppc','cpc','paid_social','paid') THEN 'Paid'
      ELSE 'Other' END AS utm_bucket
  FROM `gpea-data.report_table.conversion_funnel`
  WHERE market = 'Taiwan' AND comparison = 'Actual'
    AND SAFE.PARSE_DATE('%Y-%m-%d', pet_signup_date) BETWEEN '2026-01-01' AND '2026-04-30'
)
SELECT period, CONCAT('UTM:', utm_bucket) AS grp,
       COUNT(DISTINCT cm_id) AS leads,
       COUNT(DISTINCT IF(casenumber IS NOT NULL, cm_id, NULL)) AS call_case
FROM cf GROUP BY period, grp
UNION ALL
SELECT period, CONCAT('lead_type:', lead_type),    -- BigQuery 原生分類
       COUNT(DISTINCT cm_id),
       COUNT(DISTINCT IF(casenumber IS NOT NULL, cm_id, NULL))
FROM cf GROUP BY period, grp
ORDER BY period DESC, grp;

② Daisy Chain RG/SG + New RG/SG + TTL CVR 聯集(web_performance

-- ② Daisy Chain RG/SG + New RG/SG + TTL CVR 聯集(web_performance)
WITH wp AS (
  SELECT type, theme,
    COALESCE(NULLIF(TRIM(past_donation_type), ''), '') AS pdt,
    SAFE.PARSE_DATE('%Y-%m-%d', signup_date) AS sd,
    CASE
      WHEN utm_medium IS NULL OR utm_medium = '' THEN 'Other'
      WHEN LOWER(utm_medium) = 'offline' THEN 'Offline'
      WHEN LOWER(utm_medium) LIKE '%wv+engager%' THEN 'Other'
      WHEN LOWER(utm_medium) LIKE 'socialpaid%' OR LOWER(utm_medium) LIKE 'pmax%'
        OR LOWER(utm_medium) LIKE 'adwords%'
        OR LOWER(utm_medium) IN ('ppc','cpc','paid_social','paid') THEN 'Paid'
      ELSE 'Other' END AS bucket
  FROM `gpea-data.report_table.web_performance`
  WHERE market = 'Taiwan'
),
f AS (
  SELECT *,
    CASE WHEN sd < '2026-04-01' THEN 'Q1' ELSE 'APR' END AS period,
    (theme LIKE '%petition%' OR theme LIKE '%thankyou%') AS is_dc,
    (pdt = '') AS is_new          -- Donor Type = New(終身首捐:past_donation_type 為空)
  FROM wp WHERE sd >= '2026-01-01' AND sd < '2026-05-01'
)
SELECT period, bucket,
  COUNTIF(is_dc  AND type = 'Regular') AS dc_rg,
  COUNTIF(is_dc  AND type = 'Oneoff')  AS dc_sg,
  COUNTIF(is_new AND type = 'Regular') AS new_rg,
  COUNTIF(is_new AND type = 'Oneoff')  AS new_sg,
  COUNTIF(is_dc OR is_new)             AS union_dc_new   -- TTL Giving CVR 分子
FROM f GROUP BY period, bucket ORDER BY period DESC, bucket;
-- TTL Giving CVR = union_dc_new ÷ Leads(同桶,來自查詢①的 UTM 版)
-- Eligible      = call_case ÷ leads(同桶,查詢①)

③ Petition Page Views(GA4,非 SQL)

Petition Page Views 不是 SQL,而是透過 GA4 Data API(analytics-mcp)查詢:property 251984551(Greenpeace Taiwan);維度 sessionMedium、指標 sessions;篩 pagePathpetition、排除 test-/nd-test/preview- 測試頁;再用與上方相同的 bucketUtm 規則把 sessionMedium 分成 Paid / Other / Offline。