Savings Methodology
「対策なし時の想定被害額」と「防御貢献分」の出し方
ダッシュボードの 2 つの金額 — 上限 (反実仮想) と下限 (AdFraud Shield 防御貢献分) — の計算式と限界を完全開示します。営業 / 顧客が「この数字、どう出してるの?」と聞かれた時の唯一の参照先です。
最終更新: 2026-05-07 (Gemini × Codex 3 ラウンド議論で 2 数値モデルへ刷新)
1. なぜ 2 つの数字を出すのか
AdFraud Shield は「ボットを X 件ブロックしました」というだけでは、ECマーケターにとって価値が抽象的です。広告費換算で示すことで、サブスク料金との比較が容易になり、ROI を即座に判断できます。
ただし、bot 検知のうち **初回アクセス時のクリックは既に課金済み** であり、また判定スコアが除外閾値 (85) 未満の bot や IPv6 等は Google Ads 除外対象になりません。「節約」と「もし対策しなかった場合の被害」は厳密には別物です。
そこで 2 つの数字を併記する形に変更しました: ① 上限 = 「対策なし時の想定被害額」 (もし AdFraud Shield が無かったら) ② 下限 = 「うち AdFraud Shield 防御貢献分」 (実際にブロックリスト経由で防げたであろう値の保守的推定)。透明性を最優先しています。
2. 計算式
潜在被害 = SUM(bot 判定 × site の avg_cpc) 防御貢献 = SUM(bot 判定 × avg_cpc) FILTER 当該 IP が excluded_ips に≥1h 前から登録済
- bot 判定数: 期間内 (24h / 7d / 30d) に判定エンジンが bot と判定した件数。verdicts テーブルから集計。
- avg_cpc: Google 広告 API から取得した weighted CPC。30 → 90 → 180 日カスケードで実支出データを優先的に使用 (詳細は技術仕様書)。実支出ない場合は ¥100 (日本 EC 中央値) フォールバック。
- マルチサイト owner では、サイトごとの bot 判定数 × そのサイトの avg_cpc を SQL JOIN で per-site 加重合算しています。代理店モデルで複数 EC を管理する場合も精度が崩れません。
- 防御貢献分の追加条件: 当該訪問者の IP が excluded_ips テーブルに **訪問の 1 時間以上前** から登録されていたもののみカウント。Cloud Scheduler が毎時 Google Ads に IP リスト同期するため、最悪ケースの 1 時間ラグを引いて「確実に Google Ads 側で除外が反映されていた」範囲に絞ります。
3. 数字の限界 (誠実な開示)
**「対策なし時の想定被害額」は反実仮想の上限**: 「もし対策しなかったら」を仮定した推定上限であり、Google 広告の請求書減額分とは異なります。実態としては、初回アクセス時のクリックは既に課金されています (本番実測で全 bot 判定の約 21% が初回検知)。
**「防御貢献分」も完全な実測ではない**: Google Ads がリスト適用後に実際にクリックを弾いた数は API 経由で観測できないため、「リスト登録から 1 時間以上経過した IP からの bot 判定」を保守的推定として用いています。IP ローテーション bot は対策困難です。
**±30% の CPC 誤差**: avg_cpc は平均値。bot が高単価キャンペーンに集中していれば実保護額はもっと大きく、低単価なら小さくなります。
**全 bot が広告経由とは限らない**: SEO・リンク経由のオーガニック bot もカウントされる可能性があります (確率は低いが除外不能)。
**Google 側自動防御との重複**: Google Ads 自身も invalid_clicks として一部を返金しています。AdFraud Shield の事前ブロックと Google の事後返金は別の防壁ですが、件数は加算ではなく並走 (詳細: /integrations の二段防御パネル)。
4. 顧客が実額を検証する 4 つの方法
数字を信じる必要はありません。以下の方法で誰でも独立検証できます。
Level 1 — ダッシュボードを見る
そのままの値。即時、追加作業ゼロ。説得力: 弱-中。
Level 2 — Google Ads の「無効クリック数」推移を確認
/integrations ページの「二段防御」パネルに Google Ads `invalid_clicks` を表示しています。AdFraud Shield 導入後、Google 側の試行自体が減るので invalid_clicks も減少傾向のはず。説得力: 中。
Level 3 — Google Ads 管理画面で CPA 推移を比較
Google Ads → キャンペーン → 同じキャンペーンで「sync 開始前 4 週」と「sync 開始後 4 週」の CPA を比較。改善していれば、それは bot 除外による直接効果です (季節性等の要因を排除して 1 ヶ月程度のデータ蓄積必要)。説得力: 強。
Level 4 — A/B test (キャンペーン半分だけ sync 適用)
AdFraud Shield 適用キャンペーン群と非適用キャンペーン群を Google Ads で並行運用、CPA / コンバージョン率を比較。統計的に決着可能。説得力: 最強。手間: 大。
5. 数字の更新頻度
- bot_count: リアルタイム (新規判定が起きた瞬間に集計反映)
- protected_count (防御貢献分): 当日分はリアルタイム live 集計、過去日は日次 aggregator (毎日 03:05 JST) で確定。avg_cpc 改定時は両指標が同じ最新 CPC で再計算されるので、防御貢献率は常に整合的。
- avg_cpc: 毎時 sync (Google Ads API から実支出データ pull)
- Google invalid_clicks (二段防御パネル): 毎時 sync
- ダッシュボード上の数字: Redis キャッシュ TTL 5 分なので、最新でも 5 分前のデータです (頻繁な更新でレートリミット枯渇を避けるため)。