メール配信の到達率・開封率計算ツール
このメール開封率計算ツールは、キャンペーンで一般的に使われる3つの集計値を、比較しやすい2つの割合に変換します。送信したメール数、正常に到達したメール数、開封されたメール数を入力すると、到達率と、到達メールを基準にした開封率を算出します。計算式は明確で、各件数の関係に矛盾がないかを確認し、結果を小数第2位まで返します。キャンペーンの簡易確認、定期レポート、配信サービスから書き出した数値の検証にご活用いただけます。
無料で実行
同じ条件で集計した件数をご用意ください
同一のキャンペーン、配信対象、集計期間に基づく数値をご使用ください。送信数は配信事業者が送信を試みたすべてのメール、到達数はバウンスなどで届かなかったメールを除いた数、開封数は到達したメールのうち開封として記録された数です。累計送信数と7日間だけの開封数を組み合わせると、見た目は正確でも意味のない割合になります。そのため、本ツールは件数の流れを検証します。到達数が送信数を超えることや、開封数が到達数を超えることはできません。また、メールの件数を扱うため、各値は0以上の整数である必要があります。送信数が0の場合は分母が0となり、到達率を計算できないためエラーになります。配信事業者がユニーク開封数と総開封数の両方を提供している場合は、レポートの目的に合う指標を選び、比較するすべてのキャンペーンで統一してください。一般的なキャンペーン概要では、同じ受信者による複数回の操作で値が増えないユニーク開封数が分かりやすい指標です。
2つの割合の意味をご確認ください
到達率は、到達したメール数を送信したメール数で割り、100を掛けて求めます。送信を試みたキャンペーンのうち、配信エラーとして記録されず受信側システムに届いた割合を示します。開封率は、開封されたメール数を到達したメール数で割り、同じく100を掛けて求めます。到達数を分母にすることで、配信上の問題と受信者の反応を分けられます。バウンスしたメールは開封できないため、反応の指標を重ねて下げるべきではありません。到達数が0の場合、開封可能なメールがないため開封率は0となりますが、到達率はキャンペーンの結果をそのまま示します。どちらも小数第2位に丸めます。数値は状況と併せてご判断ください。到達率はリストの品質や送信者評価、記録される開封数はプライバシー機能、画像の読み込み、追跡方式などの影響を受けます。本ツールは算術結果を正確に示しますが、開封イベントだけで受信者が本文を読んだことまでは証明できません。
レポートや比較に結果をご活用ください
第三者が計算を再現し、キャンペーン規模を把握できるよう、算出した割合とともに元の件数も記録してください。ごく小さな配信対象で得た高い開封率は、大規模配信での同じ割合と単純には比較できません。件名、セグメント、配信日を比較する場合は、配信事業者の指標定義と観測期間をそろえてください。到達データは早く確定することが多い一方、開封は最初のレポート後も増える場合があるため、集計時点を明記すると明確です。返される項目は、ダッシュボード、表計算、品質確認、自動レポートに利用できます。書き出しデータの誤りも検出でき、到達数が送信数を超える場合や、開封数が到達数を超える場合は、誤解を招く割合を出さずに入力を拒否します。計算は決定的で、配信事業者への接続、受信者情報の確認、メール送信は行いません。集計済みの件数だけをご入力ください。単発の確認はブラウザで行え、反復処理では1リクエスト$0.002のAPIをご利用いただけます。
活用例
キャンペーン概要の確認
書き出した送信数・到達数・開封数を、レポート用の一貫した割合に変換できます。
ダッシュボード数値の検証
公開前に割合を別途計算し、成立しない件数の関係を検出できます。
配信セグメントの比較
すべての対象に同じ式と丸め方を適用し、公平に比較できます。
よくある質問
到達率はどのように計算しますか?
到達メール数を送信メール数で割って100を掛け、小数第2位に丸めます。
開封率はどのように計算しますか?
開封メール数を到達メール数で割って100を掛け、小数第2位に丸めます。
送信メール数が0の場合はどうなりますか?
到達率の分母に0を使用できないため、無効な入力としてエラーを返します。
1通も到達しなかった場合はどうなりますか?
開封数も0であれば、到達率と開封率はいずれも0になります。
ユニーク開封数と総開封数のどちらを入力しますか?
レポートの目的に合う指標を選び、一貫してご使用ください。反応の比較には通常ユニーク開封数が適しています。
APIでの計算料金はいくらですか?
APIは1リクエスト$0.002です。同じ決定的な計算をブラウザでも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/biz/email-open-rate-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"emails_sent":10000,"emails_delivered":9600,"emails_opened":2304}'const res = await fetch("https://api.kit.forhosting.com/biz/email-open-rate-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"emails_sent": 10000,
"emails_delivered": 9600,
"emails_opened": 2304
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/email-open-rate-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"emails_sent": 10000,
"emails_delivered": 9600,
"emails_opened": 2304
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/email-open-rate-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"emails_sent":10000,"emails_delivered":9600,"emails_opened":2304}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"emails_sent":10000,"emails_delivered":9600,"emails_opened":2304}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/email-open-rate-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"emails_sent": 10000,
"emails_delivered": 9600,
"emails_opened": 2304
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.email_open_rate_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |