Brevo API を活用した SMS マーケティング術

Ashley Innocent

Ashley Innocent

24 3月 2026

Brevo API を活用した SMS マーケティング術

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

要点

Brevo APIを使用すると、マーケティングメール、トランザクションメール、SMSメッセージをプログラムで送信できます。APIキーで認証し、api.brevo.comにリクエストを送信し、Webフックを使用して配信とエンゲージメントを追跡します。テストには、Apidogを使用してペイロードを検証し、Webフックハンドラをテストし、統合がバウンスと購読解除を正しく処理することを確認します。

はじめに

Brevo(旧Sendinblue)は、50万以上の企業のために毎日数百万通のメールを処理しています。マーケティングキャンペーン、トランザクションメール、SMSマーケティング、自動化ワークフローを扱っています。

メールAPIはシンプルに見えます。メッセージを送信すれば完了です。しかし、本番のメールシステムでは、バウンス、スパム報告、購読解除、配信タイミングなどを処理する必要があります。Brevoは、これらの複雑さを管理してくれるため、ユーザーがその手間をかける必要はありません。

このAPIは、主に3つのユースケースに対応しています。

💡
アプリにメールを統合する場合、Apidogはテンプレートのテスト、Webフックペイロードの検証、および統合が様々なメールクライアントで機能することを確認するのに役立ちます。開発中にBrevoの応答をモックしたり、実際にメールを送信せずにエラー処理をテストしたりできます。
button
button

認証とセットアップ

APIキーの取得

  1. Brevoにログインします。
  2. 「SMTP & API」→「APIキー」に移動します。
  3. 適切な権限を持つ新しいキーを作成します。
  4. それを安全に保管します。

APIキーはapi-keyヘッダーに含めます。

curl -X GET "https://api.brevo.com/v3/account" \
  -H "accept: application/json" \
  -H "api-key: your-api-key-here"

APIベースURL

すべてのリクエストは以下に送信されます。

https://api.brevo.com/v3/

レート制限

Brevoはプランによってリクエストを制限します。

使用状況を追跡するには、X-RateLimit-Remainingヘッダーを確認してください。

トランザクションメールの送信

トランザクションメールは、ユーザーのアクションによってトリガーされる個別のメッセージです。パスワードのリセット、注文確認、ウェルカムメールなどを想像してください。

シンプルなメールの送信

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "accept: application/json" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": {
      "name": "Your App",
      "email": "noreply@yourapp.com"
    },
    "to": [
      {
        "email": "user@example.com",
        "name": "John Doe"
      }
    ],
    "subject": "Welcome to Our Platform",
    "htmlContent": "<html><body><h1>Welcome!</h1><p>Thanks for signing up.</p></body></html>",
    "textContent": "Welcome! Thanks for signing up."
  }'

応答:

{
  "messageId": "<20260324123456.123456@relay.brevo.com>"
}

テンプレートの使用

Brevoのビジュアルエディターでテンプレートを作成し、IDで送信します。

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "templateId": 15,
    "to": [
      {
        "email": "user@example.com",
        "name": "John Doe"
      }
    ],
    "params": {
      "name": "John",
      "order_number": "ORD-12345",
      "tracking_url": "https://tracking.example.com/ORD-12345"
    }
  }'

テンプレート変数は二重括弧を使用します。

<p>こんにちは {{params.name}} 様、</p>
<p>ご注文番号 {{params.order_number}} の商品が発送されました。</p>
<p><a href="{{params.tracking_url}}">荷物を追跡する</a></p>

添付ファイル付きで送信

const response = await fetch('https://api.brevo.com/v3/smtp/email', {
  method: 'POST',
  headers: {
    'api-key': process.env.BREVO_API_KEY,
    'content-type': 'application/json'
  },
  body: JSON.stringify({
    sender: { name: 'Your App', email: 'noreply@yourapp.com' },
    to: [{ email: 'user@example.com' }],
    subject: 'Your Invoice',
    htmlContent: '<p>請求書を添付いたしました。</p>',
    attachment: [
      {
        name: 'invoice.pdf',
        content: base64EncodedPdfContent
      }
    ]
  })
})

マーケティングキャンペーン

マーケティングメールは、連絡先リストに送信されます。Brevoは購読解除リンク、スケジュール設定、分析を処理します。

キャンペーンの作成

curl -X POST "https://api.brevo.com/v3/emailCampaigns" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "name": "March Newsletter",
    "subject": "What'\''s New in March",
    "sender": {
      "name": "Your Brand",
      "email": "newsletter@yourbrand.com"
    },
    "type": "classic",
    "htmlContent": "<html><body>Newsletter content here...</body></html>",
    "recipients": {
      "listIds": [12, 15]
    },
    "scheduledAt": "2026-03-25T09:00:00+00:00"
  }'

即時送信

curl -X POST "https://api.brevo.com/v3/emailCampaigns/{campaignId}/sendNow" \
  -H "api-key: your-api-key"

キャンペーン統計の取得

curl -X GET "https://api.brevo.com/v3/emailCampaigns/{campaignId}" \
  -H "api-key: your-api-key"

応答に含まれるもの:

{
  "statistics": {
    "delivered": 4850,
    "opened": 1455,
    "clicked": 291,
    "unsubscribed": 12,
    "bounces": 150
  }
}

連絡先管理

連絡先は、メールを送信する相手です。連絡先をリストに整理し、カスタム属性を追加します。

連絡先の作成

curl -X POST "https://api.brevo.com/v3/contacts" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "email": "new.user@example.com",
    "attributes": {
      "FIRSTNAME": "Jane",
      "LASTNAME": "Smith",
      "PLAN": "premium"
    },
    "listIds": [12, 15],
    "updateEnabled": true
  }'

updateEnabled: trueフラグは、既存の連絡先を更新し、失敗を防ぎます。

連絡先の詳細の取得

curl -X GET "https://api.brevo.com/v3/contacts/user@example.com" \
  -H "api-key: your-api-key"

リストに追加

curl -X POST "https://api.brevo.com/v3/contacts/lists/12/contacts/add" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "emails": ["user1@example.com", "user2@example.com"]
  }'

リストから削除

curl -X DELETE "https://api.brevo.com/v3/contacts/lists/12/contacts/remove" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "emails": ["user@example.com"]
  }'

連絡先の購読解除

curl -X PUT "https://api.brevo.com/v3/contacts/user@example.com" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "emailBlacklisted": true
  }'

SMSマーケティング

BrevoはSMS APIを通じて、世界中でSMSメッセージを送信します。

SMSの送信

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": "YourApp",
    "recipient": "+15551234567",
    "content": "Your verification code is: 123456",
    "type": "transactional"
  }'

マーケティングSMSの送信

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: your-api-key" \
  -H "content-type: application/json" \
  -d '{
    "sender": "YourBrand",
    "recipient": "+15551234567",
    "content": "Flash sale! 50% off today only. Reply STOP to unsubscribe.",
    "type": "marketing"
  }'

SMS統計の取得

curl -X GET "https://api.brevo.com/v3/transactionalSMS/statistics?startDate=2026-03-01&endDate=2026-03-31" \
  -H "api-key: your-api-key"

追跡のためのWebhook

Webフックは、配信済み、開封済み、クリック、バウンス、購読解除など、メールイベントについてアプリに通知します。

Webhookの設定

Brevoダッシュボード内: 設定 → Webhook → Webhookを追加

追跡するイベント:

Webhookペイロードの処理

app.post('/webhooks/brevo', (req, res) => {
  const event = req.body
  
  switch (event.event) {
    case 'delivered':
      console.log(`Email ${event.messageId} delivered to ${event.email}`)
      break
    case 'opened':
      console.log(`Email opened by ${event.email} at ${event.date}`)
      break
    case 'bounced':
      console.log(`Bounce: ${event.email} - ${event.reason}`)
      // Mark contact as invalid
      markContactBounced(event.email)
      break
    case 'spam':
      console.log(`Spam complaint from ${event.email}`)
      // Remove from all lists
      removeFromAllLists(event.email)
      break
    case 'unsubscribed':
      console.log(`Unsubscribed: ${event.email}`)
      break
  }
  
  res.status(200).send('OK')
})

Apidogでのテスト

メールAPIには複雑な障害モードがあります。テンプレート、バウンス、Webフックをテストする必要があります。Apidogが役立ちます。

Apidogを使用したBrevo APIテストのインターフェース

1. メール送信のモック

開発中は、実際のメールを送信しないでください。応答をモックします。

pm.test('Email API accepts valid payload', () => {
  const response = pm.response.json()
  pm.expect(response).to.have.property('messageId')
  pm.expect(response.messageId).to.match(/<.*@relay\.brevo\.com>/)
})
Apidogでのメール送信のモック設定の例

2. Webhook処理のテスト

ApidogでモックWebフックペイロードを作成します。

{
  "event": "bounced",
  "email": "invalid@example.com",
  "messageId": "<12345@relay.brevo.com>",
  "reason": "hard_bounce",
  "date": "2026-03-24T12:00:00Z",
  "subject": "Welcome to Our Platform"
}

これをWebフックエンドポイントに送信し、コードが正しく処理することを確認します。

3. テンプレートの検証

テンプレートペイロードを保存し、変数が正しく置き換えられていることをテストします。

pm.test('Template variables are valid', () => {
  const payload = pm.request.body.toJSON()
  pm.expect(payload.params).to.have.property('name')
  pm.expect(payload.params).to.have.property('order_number')
})

4. 環境の分離

# Development
BREVO_API_KEY: xkeysib-dev-xxx
BREVO_SENDER: dev@yourapp.com

# Production
BREVO_API_KEY: xkeysib-prod-xxx
BREVO_SENDER: noreply@yourapp.com

ApidogでBrevoメールAPIをテスト - 無料

よくあるエラーとその解決策

400 Bad Request - 必須フィールドの欠落

原因: ペイロードに必須フィールドが欠落しています。

修正: エラーメッセージで詳細を確認してください。

{
  "code": "invalid_parameter",
  "message": "sender.email is required"
}

401 Unauthorized (認証なし)

原因: APIキーが無効であるか、欠落しています。

修正: api-keyヘッダーが正しく設定されていることを確認してください。キーが取り消されていないか確認してください。

402 Payment Required (支払いが必要)

原因: アカウントが制限を超過しているか、クレジットが不足しています。

修正:

429 Too Many Requests (リクエストが多すぎます)

原因: レート制限を超過しました。

修正: 指数バックオフを実装してください。

async function sendWithRetry(email, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const response = await sendEmail(email)
    if (response.status === 429) {
      await sleep(Math.pow(2, i) * 1000)
    } else {
      return response
    }
  }
  throw new Error('Rate limit exceeded')
}

404 Contact not found (連絡先が見つかりません)

原因: 存在しない連絡先を更新しようとしています。

修正: 連絡先を作成する際にupdateEnabled: trueを使用してください。

{
  "email": "new@example.com",
  "updateEnabled": true
}

これにより、連絡先が作成または更新されます。

代替サービスと比較

機能 Brevo SendGrid Mailchimp Postmark
料金 1日300通まで無料 1日100通まで無料 1ヶ月500通まで無料 1ヶ月100通まで無料
マーケティングメール はい はい はい いいえ
トランザクションメール はい はい 限定的 はい(特化型)
SMS はい いいえ いいえ いいえ
自動化 はい はい はい 限定的
テンプレートエディター ビジュアル + コード コード ビジュアル コード

Brevoは、メールとSMSの統合サポートを競争力のある価格で提供することで際立っています。

実際の使用例

Eコマースの注文フロー。 オンラインストアはBrevoを次のように使用しています: 注文確認(トランザクション)、発送通知(トランザクション)、カート放棄回復(マーケティング自動化)、および週刊プロモーション(マーケティングキャンペーン)。これらすべてを1つの統合から行います。

SaaSオンボーディング。 プロジェクト管理ツールは、ウェルカムメール、パスワードリセット、チーム招待をトランザクションAPI経由で送信します。マーケティングメールは、オプトインユーザーに新機能を告知します。

SMS認証。 フィンテックアプリは、BrevoのSMS APIを二要素認証コードに使用しています。トランザクションSMSエンドポイントは数秒以内にコードを配信し、Webフックは再試行ロジックのために配信失敗を追跡します。

結論

学んだことは次のとおりです。

次のステップ:

  1. Brevoアカウントを作成し、APIキーを取得します。
  2. 最初のトランザクションメールを送信します。
  3. ビジュアルエディターでテンプレートを作成します。
  4. バウンスと購読解除のWebフックハンドラを設定します。
  5. 開発中にApidogでテストします。

ApidogでBrevoメールAPIをテスト - 無料

button

よくある質問

BrevoとSendinblueの違いは何ですか?同じ製品で、新しい名前です。Sendinblueは2023年にBrevoにブランド変更しました。APIは引き続きapi.brevo.comを使用しますが、古いドキュメントにはSendinblueの記述が見られます。

無料で何通のメールを送信できますか?無料プランでは1日300通のメールを送信できます。これは1ヶ月あたり9,000通です。さらに多く送信するには、20,000通で月額25ドルから始まる有料プランにアップグレードしてください。

Brevoをコールドメールに使用できますか?技術的には可能ですが、リスクが伴います。コールドメールはバウンス率とスパム率が高くなります。Brevoは送信者の評判を監視しています。高い苦情率の場合、アカウントが停止されることがあります。まずドメインをウォームアップし、メールのベストプラクティスに従ってください。

メールのバウンスはどのように処理しますか?bounced Webフックをリッスンしてください。ハードバウンス(無効なメール)は連絡先を永久に削除すべきです。ソフトバウンス(メールボックスがいっぱい、一時的な問題)は再試行できます。バウンス率を追跡してください。5%を超えると、送信者の評判が低下します。

マーケティングメールとトランザクションメールの違いは何ですか?トランザクションメールは、ユーザーのアクション(購入、サインアップ)によってトリガーされ、1人の受信者に送信されます。マーケティングメールは、同時に多くの受信者に送信されるキャンペーンです。Brevoは、配信可能性とコンプライアンスの理由からこれらを区別しています。

購読解除リンクを追加するにはどうすればよいですか?Brevoは、マーケティングメールに購読解除リンクを自動的に追加します。トランザクションメールには、独自のリンクを追加してください。

<a href="{{ unsubscribe_url }}">購読解除</a>

自分のドメインからメールを送信できますか?はい。SPF、DKIM、DMARCレコードを設定してください。Brevoは設定 → 送信者とIPで値を提供します。適切な認証がないと、メールがスパムとして扱われることがあります。

特定のタイムゾーンでメールをスケジュールするにはどうすればよいですか?scheduledAtパラメータをISO 8601タイムスタンプとともに使用します。

{
  "scheduledAt": "2026-03-25T09:00:00-05:00"
}

レート制限に達するとどうなりますか?429エラーが発生します。応答には、リセットまでの秒数を示すX-RateLimit-Resetヘッダーが含まれています。指数バックオフを実装するか、メールを後でキューに入れます。

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる