Content is user-generated and unverified.
4.8K

広告パフォーマンスレポート

対象期間: 2026年4月1日 〜 6月30日(91日間) 対象: 4キャンペーン(ブランド検索 / リタゲ_既存顧客 / ディスプレイ_新規 / 動画_認知) データソース: ads.csv(日付・キャンペーン・費用・CV の4カラム) 作成日: 2026年7月24日


1. サマリー

期間全体でCVは895件 → 1,137件(+27%)に増加した一方、費用も915,550円 → 1,149,230円(+26%)に増えており、口座全体のCPAは1,023円 → 1,011円とほぼ横ばいである。伸びているように見えて、効率は改善していない。

内訳は二極化している。リタゲ_既存顧客がCPA −42%と大幅に改善し、ブランド検索も −17%と改善。一方でディスプレイ_新規がCPA +87%と悪化し、この1キャンペーンが改善分をほぼ食い潰している。さらにディスプレイは費用シェアを35%→44%に拡大しており、効率が落ちている枠に予算が集中する形になっている点が本レポートの最大の論点である。


2. 前提とデータ品質

集計にあたり以下の処理を行った。

項目内容
元データ365行
重複削除1行(2026-04-26 / ブランド検索 が完全重複。末尾に追記された形跡)
欠損除外5行(費用のNaN 3件、CVのNaN 2件)
集計対象359行
日付の欠落なし(91日すべて存在)

CPAの計算基準について

CV=0の日をCPA計算から除外する場合、その日の費用も同時に除外しないと分母だけが小さくなり数字が歪む。本レポートでは以下2基準を併記する。

  • 全行基準: すべての有効行の費用 ÷ CV(実際に使った金額に対する効率)
  • CV0除外基準: CV>0の日のみの費用 ÷ CV(CVが発生した日に限った効率)

この2基準で全体の結論が変わる。

費用(全行)CVCPA(全行)CPA(CV0除外)CV=0の日の費用
4月915,5508951,02393876,190
5月1,071,8701,0611,01092194,530
6月1,149,2301,1371,011892135,530

CV0除外基準では938円→892円と改善して見えるが、これは除外している「CVがゼロだった日の費用」が76,190円→135,530円と1.8倍に膨らんでいるためである。実際に使った金額ベース(全行基準)では横ばい。意思決定には全行基準を用いるべきである。

本データで測れないもの

インプレッション、クリック、CTR、CPC、ROAS、配信面、クリエイティブ、フリークエンシー、新規/リピート区分はいずれもデータに存在しない。したがって本レポートの因果推論には限界があり、後述の仮説は検証されていない。


3. キャンペーン別 月次実績

キャンペーン費用CVCPA日平均費用日平均CVCV=0の日
ディスプレイ_新規4月323,6803071,05411,16110.60
5月421,3702811,50014,0469.41
6月506,4102402,11016,8808.02
ブランド検索4月142,4502425894,9128.30
5月163,8603085325,2869.90
6月151,7803094915,05910.30
リタゲ_既存顧客4月272,0303058929,06810.20
5月287,6704306699,58914.30
6月286,7705495229,55918.30
動画_認知4月177,390414,3276,1171.413
5月198,970424,7376,4181.413
6月204,270395,2386,8091.315

※CPAは全行基準。4月は日数29〜30日(重複・欠損除外の影響)のため、月合計の比較には日平均を併記した。

CPA変化(4月 → 6月、全行基準)

キャンペーン4月6月変化判定
ディスプレイ_新規1,0542,110+100%悪化
動画_認知4,3275,238+21%評価対象外(後述)
ブランド検索589491−17%改善
リタゲ_既存顧客892522−42%改善

4. 改善しているキャンペーン

リタゲ_既存顧客 — CPA −42%

最も健全な動きをしている。日平均費用は9,068円→9,559円とほぼ横ばいのまま、日平均CVが10.2件→18.3件と1.8倍に増加した。費用を増やさずCVが伸びており、純粋な効率改善である。

にもかかわらず費用シェアは29.7% → 25.0% に低下している。効率が最も改善している枠の予算が相対的に縮小しているのは、配分として合理的でない。

ブランド検索 — CPA −17%

CPA 589円→491円、CV 242→309件。単価が最も安い枠で、費用は横ばい。ただしブランド検索は指名検索の需要量に上限が規定されるため、予算を積んでも伸びる余地は構造的に限られる。現状で健全に回っており、積極的な介入は不要と判断する。


5. 悪化しているキャンペーン: ディスプレイ_新規

何が起きているか

CPA 1,054円 → 2,110円(+100%)。悪化の内容は一貫している。

  • 日平均費用: 11,161円 → 16,880円(+51%
  • 日平均CV: 10.6件 → 8.0件(−24%
  • 費用シェア: 35.4% → 44.1%
  • CV=0の日: 0日 → 2日

費用を5割増やしてCVが2割減っている。 増額分がCVを生んでいないだけでなく、CVの絶対数そのものが減少している。

週次推移

悪化は特定の週に発生した断絶ではなく、13週間かけた連続的な劣化である。

週(開始日)日平均費用CVCPA
3/309,92046863
4/0610,50974994
4/1311,404761,050
4/2011,867711,170
4/2711,874571,458
5/0413,004721,264
5/1114,163621,371
5/1814,491651,561
5/2515,477651,667
6/0116,096631,788
6/0816,151522,174
6/1517,283512,372
6/2217,804592,112
6/2917,535152,338

費用水準とCVの関係

日次データで費用とCVの相関は −0.36、費用とCPAの相関は +0.84。費用を多く使った日ほどCVが少なく、CPAが高い。費用帯別に区切ると単調な関係が出る。

日次費用帯日数平均費用平均CVCPA
〜10,000円79,61410.6909
10,000〜13,000円2611,61310.01,161
13,000〜16,000円3114,5179.31,563
16,000円〜2517,2888.22,098

さらに、日次CVの最大値は4月13件 → 6月11件と低下している。予算を1.5倍にしてもCVの天井が上がっていない。

要因の仮説

仮説A: 予算増による限界効率の逓減(費用側の要因)

到達しやすい層を4月時点で取り切っており、増額分が関連性の低いオーディエンスや配信面に流れている。ディスプレイは予算を上げると入札単価と配信面が自動的に拡張されるため、この形は典型的。費用帯別のCV単調減少と整合する。

仮説B: クリエイティブ疲弊 / オーディエンス飽和(時間側の要因)

同一の新規向け訴求を3カ月継続した結果、フリークエンシーが上昇して反応率が低下している。予算を増やしてもCVの天井が上がらない点はこちらを支持する。

仮説C: 計測側の変化

3カ月にわたる連続的な劣化は、CVタグの欠落やアトリビューション設定の変更でも生成される。他3キャンペーンのCVが同期間に増加しているため口座全体の計測障害は考えにくいが、ディスプレイ固有のタグ・CV定義の変更履歴は確認すべき。

仮説AとBは現データで区別できない

これが本レポートの最重要の留保である。 週次の日平均費用は9,920円から17,804円へほぼ単調に増加しており、費用の水準と経過日数がほぼ完全に相関している。つまり統計的に交絡している。

  • 「費用を上げたからCPAが悪化した」(仮説A)
  • 「時間経過でCPAが悪化し、たまたま同時に費用を上げていた」(仮説B)

この2つは観測データ上まったく同じ形に見える。費用帯別テーブルの単調性も、費用の効果ではなく時間の効果を反映している可能性がある。したがって施策の第一手は、この識別を目的に設計すべきである。


6. 動画_認知はCPA評価に適さない

CPAは4,327円 → 5,238円と表面上悪化しているが、この枠をCPAで評価することは避けるべきである。

  • 91日のうち 41日がCV=0(45%)
  • CVが発生した日でも1〜4件のみ(最大4件
  • 月次CVは39〜42件

この規模では日次CPAのノイズが大きすぎ、月次差を「悪化」と判定する統計的精度がない。CV=0の日の費用が月76,190円→135,530円へ膨らんでいる主因もこの枠である。

認知目的の枠として、インプレッション、リーチ、フリークエンシー、動画視聴完了率、あるいは指名検索・リタゲ側への間接貢献で評価する設計に切り替える必要がある。現状のデータには、その評価に必要なカラムが1つも存在しない。


7. 予算配分の論点

予算がCPAトレンドと逆方向に動いている。

キャンペーンCPAトレンド費用シェア 4月→6月整合性
ディスプレイ_新規悪化(+100%)35.4% → 44.1%逆行
リタゲ_既存顧客改善(−42%)29.7% → 25.0%逆行
ブランド検索改善(−17%)15.6% → 13.2%逆行
動画_認知評価不能19.4% → 17.8%

配分を修正すれば全体CPAは改善余地がある。ただし1点の留保がある。

ディスプレイ_新規は新規獲得枠、リタゲは既存顧客枠である。 リタゲのCPA改善の一因が「ディスプレイが連れてきた新規流入によってリタゲの母集団が拡大したこと」にあるなら、ディスプレイを絞るとリタゲの効率も遅れて低下する。本データには新規/リピート区分がないため、この供給関係は判定できない。したがって配分変更は、後述の実験結果を見てから確定すべきである。


8. 打ち手

#施策目的期待インパクト工数優先度
1ディスプレイ_新規の予算を4月水準に戻す仮説AとBの切り分け即時
2分解データの取得(配信面・クリエイティブ・フリークエンシー別)原因の局在化即時(並行)
3予算をリタゲ_既存顧客へ再配分全体CPA改善実験1の結果待ち

打ち手1: ディスプレイ_新規の予算を4月水準に戻して2週間観察(即時)

日予算を11,000円前後(現状比 約−35%)に戻す。

  • CPAが1,050円付近まで戻る → **仮説A(予算起因)**が主因
  • 2,000円近辺に留まる → **仮説B(疲弊・飽和起因)**が主因

費用と時間の交絡を解く唯一の方法であり、他のすべての打ち手の前提になる。この判定を経ずにクリエイティブを作り直すと、原因が予算だった場合に工数が無駄になる。仮に仮説Aが正しければ、この操作だけで月20万円弱の費用削減とCPA半減が同時に得られる。

測定設計: 他キャンペーンの予算は動かさない(変数を1つに保つ)。観察期間は最低2週間(週次のCV変動幅が50〜76件あるため、1週間では判定できない)。同時にリタゲのCVも記録し、打ち手3の判断材料とする。

打ち手2: 分解データの取得(即時・並行)

現状の4カラムでは「ディスプレイ_新規」が1つの塊で、内訳が見えない。取得すべきは以下。

  • 配信面別(プレースメント)の費用・CV
  • クリエイティブ別の費用・CV・CTR
  • フリークエンシーとリーチの推移
  • インプレッション・クリック(CTRとCPCの分解のため)
  • 新規/リピート別CV(打ち手3の留保を解消するため)

悪化が特定の配信面やクリエイティブに集中しているなら、キャンペーン全体を絞るより除外・差し替えのほうが安く効く。逆にフリークエンシーが全体的に上昇しているなら仮説Bの裏付けとなる。CTRが落ちていればクリエイティブ側、CTRが横ばいでCVRが落ちていればLP・オーディエンス側と、切り分けが一段進む。

打ち手3: 予算をリタゲ_既存顧客へ再配分(実験1の結果を見て判断)

ディスプレイで削減した予算をCPA522円で改善中のリタゲに移せば、全体CPAは計算上大きく下がる。ただし前述の供給関係の留保があるため、打ち手1の2週間でリタゲのCVがどう動くかを確認してから確定する

  • ディスプレイを絞ってもリタゲのCVが維持される → 供給関係は弱く、安全に移管可能
  • リタゲのCVも連動して落ちる → ディスプレイは新規供給として一定量を維持する必要がある。その場合はディスプレイのCPAを「新規獲得コスト+リタゲへの供給価値」として評価し直す

なお、リタゲの予算を増やしても同じCPAが維持されるとは限らない。リタゲは母集団の上限が明確な枠であり、ディスプレイと同じ限界効率の逓減が起きうる。増額は段階的に行い、CPAの反応を見ながら進めるべきである。


9. 本レポートで答えられなかった問い

意思決定の精度を上げるため、以下は追加データなしには判断できない。

  1. ディスプレイ_新規の悪化は予算起因か疲弊起因か(打ち手1で識別可能)
  2. 悪化が特定の配信面・クリエイティブに局在しているか(打ち手2で判明)
  3. リタゲの改善はディスプレイの新規流入に依存しているか(新規/リピート別CVが必要)
  4. 動画_認知は認知枠として機能しているか(インプレッション・リーチ・間接貢献の指標が必要)
  5. CV1件の価値(売上・LTV)— CPAの絶対水準が許容範囲かの判断に必須。現状はキャンペーン間の相対比較しかできない
  6. 各キャンペーンの目標CPA — 目標値がないため「悪化/改善」は前月比の相対評価にとどまる

付録: 集計方法

python
import pandas as pd

df = pd.read_csv('ads.csv').drop_duplicates(['日付', 'キャンペーン'])
df['月'] = pd.to_datetime(df['日付']).dt.strftime('%Y-%m')
valid = df.dropna(subset=['費用', 'CV'])

# 全行基準
a = valid.groupby(['キャンペーン', '月']).agg(
    費用=('費用', 'sum'), CV=('CV', 'sum'), 日数=('日付', 'count'))
a['CPA'] = a['費用'] / a['CV']

# CV0除外基準(費用も同時に除外)
b = valid[valid['CV'] > 0].groupby(['キャンペーン', '月']).agg(
    費用=('費用', 'sum'), CV=('CV', 'sum'))
b['CPA'] = b['費用'] / b['CV']
Content is user-generated and unverified.