Event Webhook

SendGrid の Event Webhook は、SendGrid経由でメールを送信する際に発生するイベントを、指定したURLにPOSTすることができます。 このデータの用途は、配信停止アドレスの削除、迷惑メール報告への対応、エンゲージできなかった受信アドレスの判定、バウンスされたメールアドレスの特定、メールプログラムの高度な分析などです。ユニーク引数やカテゴリパラメータを使用して、動的なデータを挿入することができるため、あなたのメールのシャープでクリアなイメージを構築するのに役立ちます。

我々のカスタマーがどうやってEvent Webhookを利用しているかは、Leveraging SendGrid’s Event APIを参照してください

Webhookが送信するイベントを簡単に扱えるようにするため、いくつかのライブラリが存在します。Webhookライブラリを参照してください

セットアップ

Event Webhook をセットアップするには、SendGridにログインし、Mail Settingsページで Event Notification をクリックして、”edit”をクリックします。WebサーバにPOSTしたいイベントのチェックボックスをONにしてください。そして、イベントが発生したときに、SendGridからのPOSTを受け取るURLを設定してください。

また、Event WebhookはFilter Settingsエンドポイントを使ってセットアップすることもできます。

Event Webhook は HTTP のBasic認証をサポートしています。この認証を使用する場合は、Settings画面で、認証情報を含めたURLを HTTP Post URL に指定してください。

1
http(s)://username:password@domain/foo.php

暗号化されたPOSTを受信する場合、コールバックURLがTLS 1.2をサポートしている必要があります。

要求

1回のリクエストに複数のイベントがJSON配列として含まれた形で HTTP POST を受信します。POSTはEvent Notification Appに設定したURLに対して送信されます。

イベントは現状30秒毎またはバッチサイズが768KBに達するか、いずれか早いタイミングでPOSTされます。これはサーバごとのため、Webhook URLは毎秒数十回のPOSTを受信する場合があります。

イベントPOSTの例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[
  {
    "sg_message_id":"sendgrid_internal_message_id",
    "email": "john.doe@sendgrid.com",
    "timestamp": 1337197600,
    "smtp-id": "<4FB4041F.6080505@sendgrid.com>",
    "event": "processed"
  },
  {
    "sg_message_id":"sendgrid_internal_message_id",
    "email": "john.doe@sendgrid.com",
    "timestamp": 1337966815,
    "category": "newuser",
    "event": "click",
    "url": "https://sendgrid.com"
  },
  {
    "sg_message_id":"sendgrid_internal_message_id",
    "email": "john.doe@sendgrid.com",
    "timestamp": 1337969592,
    "smtp-id": "<20120525181309.C1A9B40405B3@Example-Mac.local>",
    "event": "group_unsubscribe",
    "asm_group_id": 42
  }
]

Event Notificationの設定画面で 「Test Your Integration」 ボタンをクリックしてエンドポイントのテストをすることができます。SendGridはコールバックURLにテスト用のPOSTを送信します。

SendGridは、HTTPステータスコード 2xx が返されるのを待ちます。指定されたURLから 2xx 以外のコードが返された場合は、24時間リトライします。リトライキューの最大数は 100,000 です。キューが一杯になった場合は、古いリクエストから順に削除されます。リトライ期間内に送信されなかったイベントや、キューから削除されてしまったイベントは、そのまま失われてしまいます。

メールトラフィックが沢山のイベントを生成した場合、適切な設定が行われていなければ、受信データは簡単にWebサーバを過負荷状態にしてしまいます。無料のloader.ioで、エンドポイントの負荷テストをすることができます。

イベントの重複

Event WebhookによりPOSTされたデータのイベントは重複する可能性があります。

この重複イベントを処理もしくは保存する場合、sg_event_idを使用して各イベントを識別することを推奨します。このIDは各イベントにおいてユニークです。

イベントタイプ

以下はSendGridにより生成されるイベントのリストです:

イベント 基準
Processed メッセージを受信し、メールの配信準備が整いました。
Dropped 次のような理由でメールがドロップされました。
  • 無効なSMTPAPIヘッダ
  • 迷惑メールコンテンツ(Spam Checker が有効な場合)
  • 配信停止されたメールアドレス
  • バウンスされたメールアドレス
  • 迷惑メール報告されたメールアドレス
  • 無効なメールアドレス
  • 宛先アドレス数が通数上限超過
Delivered メッセージが受信側メールサーバへ正常に配信されました。
Deferred 受信側メールサーバから一時的に拒否されました。
Bounce 受信側メールサーバが受信できない、もしくは受け入れませんでした。
Open 受信者がHTMLメールを開封しました。このイベントを受け取るには開封トラッキングを有効化する必要があります。
Click 受信者がメール内のリンクをクリックしました。このイベントを受け取るにはクリックトラッキングを有効化する必要があります。
Spam Report 受信者がメールを迷惑メールと判定しました。
Unsubscribe 受信者は「Opt Out of All Emails」リンク(配信停止管理リンクをクリックするとクリック可能)をクリックしました。このイベントを受け取るには配信停止トラッキングを有効化する必要があります。
Group Unsubscribe 受信者はリンクをクリックするかまたはプリファレンス画面からあるグループからのメールを配信停止にしました。このイベントを受け取るには配信停止トラッキングを有効化する必要があります。
Group Resubscribe 受信者はプリファレンス画面からあるグループからのメール配信を再開するよう設定変更しました。このイベントを受け取るには配信停止トラッキングを有効化する必要があります。

以下にメールが処理される中で各イベントがどこで発生するかを示します。:

配信系イベントのデフォルトパラメータ

配信系イベント(bounce、deferred、delivered、dropped、processed)では次のパラメータが送信されます。いくつかのイベントは追加のパラメータが含まれます。

引数 説明
event 次のいずれか:bounce、deferred、delivered、dropped、processed
email 宛先メールアドレス
timestamp UNIXタイムスタンプ
smtp-id システムによって付与されたメッセージID
ip メールの送信元IPアドレス
tls メール送信にTLSが使用されたか否か
cert_err 受信側で認証エラーが発生したか否か

エンゲージ系イベントのデフォルトパラメータ

エンゲージ系イベント(click、open、spamreport、unsubscribe)では次のパラメータが送信されます。いくつかのイベントは追加のパラメータが含まれます。

引数 説明
event 次のいずれか:click、open、spamreport、unsubscribe
email 宛先メールアドレス
timestamp UNIXタイムスタンプ
useragent イベントに関連するユーザエージェント。例:”Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36”
ip イベント発生の元となったIPアドレス
tls メール送信にTLSが使用されたか否か
cert_err 受信側で認証エラーが発生したか否か

ユニーク引数とカテゴリ

SendGridによって生成されるイベントにはユニーク引数を含めることができます。URLがカスタムパラメータを受け取るためには、SMTP APIunique_args 引数を指定してメールを送信する必要があります。例えば、あなたのアプリケーションで、ユーザIDやメールテンプレート名のようなカスタムパラメータを受信したい場合は、SMTPヘッダにX-SMTPAPIを含めるか、Web APIでx-smtpapiパラメータとして以下の内容を含めてください。

設定されたユニーク引数は応答内に「キー-値」の組み合わせで含まれます。

1
2
3
4
5
6
7
8
9
10
11
[
  {
    "sg_message_id":"sendgrid_internal_message_id",
    "email": "john.doe@sendgrid.com",
    "timestamp": 1337966815,
    "event": "click",
    "url": "https://sendgrid.com",
    "userid": "1123",
    "template": "welcome"
  }
]

SendGridが定義する予約語(”event”や”email”など)をキーとしてユニーク引数を設定することができますが、この場合、Webhookの要求には設定したユニーク引数の値は設定されず、SendGridが設定するデフォルト値が設定されるため注意が必要です。

予約語をユニーク引数で使用したケース

1
2
3
4
5
6
7
8
9
10
//for this example, assume we're sending to john.doe@sendgrid.com
{
  "unique_args": {
    "customerAccountNumber": "55555",
    "activationAttempt": "1",
    "New Argument 1": "New Value 1",
    "email": "jane.doe@sendgrid.com",
    "event": "SendEmail"
  }
}

Webhookの要求

1
2
3
4
5
6
7
8
9
10
[
  {
    "event": "Processed",
    "timestamp":"123456789",
    "customerAccountNumber": "55555",
    "activationAttempt": "1",
    "New Argument 1": "New Value 1",
    "email": "john.doe@sendgrid.com"
  }
]

注:eventとemailは上書きされません。”event”と”email”はSendGridの予約語であるためです。

配信停止グループ

SMTP APIを通じてUnsubscribe Groups が設定された場合、Event Webhookで次のようなイベントが取得できます:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  {
    "status":"5.0.0",
    "sg_event_id":"sendgrid_internal_event_id",
    "sg_message_id":"sendgrid_internal_message_id",
    "event":"bounce",
    "email":"email@example.com",
    "timestamp":1249948800,
    "smtp-id":"<original-smtp-id@domain.com>",
    "unique_arg_key":"unique_arg_value",
    "category":["category1", "category2"],
    "reason":"500 No Such User",
    "type":"bounce",
    "asm_group_id": 1
  }

カテゴリ

カテゴリについては、SendGridは送信されたものを返します。一つのカテゴリが配列として設定された場合、Event Webhookは配列として返します。一つのカテゴリが文字列として設定された場合、Event Webhookは文字列として返します。

SMTPAPIを通じてカテゴリが設定された場合、Event Webhookは次のような値が返されます:

カテゴリ文字列

一つのカテゴリを文字列として返します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
  {
    "email": "john.doe@sendgrid.com",
    "timestamp": 1337966815,
    "category": "newuser",
    "event": "open"
  },
  {
    "email": "jane.doe@sendgrid.com",
    "timestamp": 1337966815,
    "category": "olduser",
    "event": "open"
  }
]

カテゴリ配列

複数のカテゴリを配列として返します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[
  {
    "email": "john.doe@sendgrid.com",
    "timestamp": 1337966815,
    "category": [
      "newuser",
      "transactional"
    ],
    "event": "open"
  },
  {
    "email": "jane.doe@sendgrid.com",
    "timestamp": 1337966815,
    "category": "olduser",
    "event": "open"
  }
]

次のPHPのサンプルはWebhookのリクエストを /tmp/dump.log に保存します。

1
2
3
4
5
6
7
8
9
10
11
<?php
$fh = fopen('/tmp/dump.log', 'a+');
if ( $fh )
{
// Dump body
fwrite($fh, print_r($HTTP_RAW_POST_DATA, true));
fclose($fh);
}

echo "ok";
?>

IP Pools

IPプールを指定した送信した場合、Processedイベントで指定されたIPプールを確認することができます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
    {
        "email": "john.doe@sendgrid.com",
        "smtp-id": "<14c583da911.2c36.1c804d@ismtpd-073>",
        "timestamp": 1427409578,
        "pool": {
            "name": "new_MY_test",
            "id": 210
        },
        "sg_event_id": "RHFZB1IrTD2Y9Q7bUdZxUw",
        "sg_message_id": "14c583da911.2c36.1c804d.filter-406.22375.55148AA99.0",
        "event": "processed"
    }
]

パラメータ詳細

以下にイベント種別ごとにPOSTされる可能性のある全てのパラメータについて示します。

SMTPAPIを利用してカテゴリやユニーク引数などを含むカスタムパラメータを追加することができます。ユニーク引数はそれぞれ分離されたPOSTパラメータとしてPOSTされます。以下に示されたカテゴリと似ていますが、独自の名称をセットすることができます。

以下に示すJSON文字列は実際には配列内の要素としてPOSTされてきます。各フィールドの順番は固定ではありません。

Bounce

event email status reason type category
bounce メッセージの宛先 ステータスコード。例:5.5.0 MTAが返したバウンスの理由 bounce/blocked/expired 設定したカテゴリ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
  "status":"5.0.0",
  "sg_event_id":"sendgrid_internal_event_id",
  "sg_message_id":"sendgrid_internal_message_id",
  "event":"bounce",
  "email":"email@example.com",
  "timestamp":1249948800,
  "smtp-id":"<original-smtp-id@domain.com>",
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "newsletter": {
    "newsletter_user_list_id": "10557865",
    "newsletter_id": "1943530",
    "newsletter_send_id": "2308608"
  },
  "asm_group_id": 1,
  "reason":"500 No Such User",
  "type":"bounce",
  "ip" : "127.0.0.1",
  "tls" : "1",
  "cert_err" : "0"
}

Click

event email url category
click メッセージの宛先 クリックされたURL 設定したカテゴリ

url_offsetはクリックされたリンクについてより詳細な情報を提供します。各リンクは0から始まる数字でインデクスされます。indexによりクリックされたリンクを識別することができます。typeはリンクのタイプを示します。リンクのタイプはテキスト、HTML、もしくはヘッダなどを表します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
  "sg_event_id":"sendgrid_internal_event_id",
  "sg_message_id":"sendgrid_internal_message_id",
  "ip":"255.255.255.255",
  "useragent":"Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53",
  "event":"click",
  "email":"email@example.com",
  "timestamp":1249948800,
  "url":"http://yourdomain.com/blog/news.html",
  "url_offset": {
    "index": 0,
    "type": "html"
  },
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "newsletter": {
    "newsletter_user_list_id": "10557865",
    "newsletter_id": "1943530",
    "newsletter_send_id": "2308608"
  },
  "asm_group_id": 1
}

Deferred

event email response attempt category
deferred メッセージの宛先 MTAの応答 配信を試みた回数 設定したカテゴリ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
  "response":"400 Try again",
  "sg_event_id":"sendgrid_internal_event_id",
  "sg_message_id":"sendgrid_internal_message_id",
  "event":"deferred",
  "email":"email@example.com",
  "timestamp":1249948800,
  "smtp-id":"<original-smtp-id@domain.com>",
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "attempt":"10",
  "newsletter": {
    "newsletter_user_list_id": "10557865",
    "newsletter_id": "1943530",
    "newsletter_send_id": "2308608"
  },
  "asm_group_id": 1,
  "ip" : "127.0.0.1",
  "tls" : "1",
  "cert_err" : "0"
}

Delivered

event email response category
delivered メッセージの宛先 MTAの応答 設定したカテゴリ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
  "response":"250 OK",
  "sg_event_id":"sendgrid_internal_event_id",
  "sg_message_id":"sendgrid_internal_message_id",
  "event":"delivered",
  "email":"email@example.com",
  "timestamp":1249948800,
  "smtp-id":"<original-smtp-id@domain.com>",
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "newsletter": {
    "newsletter_user_list_id": "10557865",
    "newsletter_id": "1943530",
    "newsletter_send_id": "2308608"
  },
  "asm_group_id": 1,
  "ip" : "127.0.0.1",
  "tls" : "1",
  "cert_err" : "1"
}

Drop

event email reason category
dropped メッセージの宛先 ドロップの理由 設定したカテゴリ
1
2
3
4
5
6
7
8
9
10
11
{
  "sg_event_id":"sendgrid_internal_event_id",
  "sg_message_id":"sendgrid_internal_message_id",
  "email":"email@example.com",
  "timestamp":1249948800,
  "smtp-id":"<original-smtp-id@domain.com>",
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "reason":"Bounced Address",
  "event":"dropped"
}

Open

event email category
open メッセージの宛先 設定したカテゴリ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "email":"email@example.com",
  "timestamp":1249948800,
  "ip":"255.255.255.255",
  "sg_event_id":"sendgrid_internal_event_id",
  "sg_message_id":"sendgrid_internal_message_id",
  "useragent":"Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)",
  "event":"open",
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "newsletter": {
    "newsletter_user_list_id": "10557865",
    "newsletter_id": "1943530",
    "newsletter_send_id": "2308608"
  },
  "asm_group_id": 1
}

Processed

event email category
processed メッセージの宛先 設定したカテゴリ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "sg_event_id":"sendgrid_internal_event_id",
  "sg_message_id":"sendgrid_internal_message_id",
  "email":"email@example.com",
  "timestamp":1249948800,
  "smtp-id":"<original-smtp-id@domain.com>",
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "event":"processed",
  "newsletter": {
    "newsletter_user_list_id": "10557865",
    "newsletter_id": "1943530",
    "newsletter_send_id": "2308608"
  },
  "asm_group_id": 1,
  "send_at":1249949000
}

Spam Report

event email category
spamreport メッセージの宛先 設定したカテゴリ
1
2
3
4
5
6
7
8
9
10
{
  "sg_event_id":"sendgrid_internal_event_id",
  "sg_message_id":"sendgrid_internal_message_id",
  "email":"email@example.com",
  "timestamp":1249948800,
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "event":"spamreport",
  "asm_group_id": 1
}

Unsubscribe

event email category
unsubscribe メッセージの宛先 設定したカテゴリ
1
2
3
4
5
6
7
8
9
{
  "sg_message_id":"sendgrid_internal_message_id",
  "email":"email@example.com",
  "timestamp":1249948800,
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "event":"unsubscribe",
  "asm_group_id": 1
}

Group Unsubscribe

event email asm_group_id category
group_unsubscribe メッセージの宛先 配信停止されたASMグループのID 設定したカテゴリ
1
2
3
4
5
6
7
8
9
10
11
12
{
  "sg_message_id":"sendgrid_internal_message_id",
  "email":"email@example.com",
  "timestamp":1249948800,
  "asm_group_id": 1
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "event":"group_unsubscribe",
  "asm_group_id":1,
  "useragent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36",
  "ip":"255.255.255.255"
}

Group Resubscribe

event email asm_group_id category
group_resubscribe メッセージの宛先 配信再開するよう設定変更されたASMグループのID 設定したカテゴリ
1
2
3
4
5
6
7
8
9
10
11
{
  "sg_message_id":"sendgrid_internal_message_id",
  "email":"email@example.com",
  "timestamp":1249948800,
  "unique_arg_key":"unique_arg_value",
  "category":["category1", "category2"],
  "event":"group_resubscribe",
  "asm_group_id":1,
  "useragent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36",
  "ip":"255.255.255.255"
}

Marketing Campaigns

Marketing Campaign機能を通じて送信されたメールについては、Marketing Campaign特有のパラメータがイベントに追加されます。marketing_campaign_nameと`marketing_campaign_idはUnique Argsのように表示されます。

キャンペーン送信時の標準的(A/Bテスト機能を利用しない)なイベントデータの例:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "category": [],
  "email": "email@example.com",
  "event": "processed",
  "marketing_campaign_id": 12345,
  "marketing_campaign_name": "campaign name",
  "post_type": "event",
  "sg_event_id": "sendgrid_internal_event_id",
  "sg_message_id": "sendgrid_internal_message_id",
  "sg_user_id": 12345,
  "smtp-id": "",
  "timestamp": 1442349428
}

A/Bテスト機能を利用した場合のイベントデータの例:

marketing_campaign_versionはA/Bテストの一部であることを示すためにイベントデータに含まれます。marketing_campaign_versionにはA, B, Cなどのような値が設定されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "category": [],
  "email": "tadpole_0010@stbase-018.sjc1.sendgrid.net",
  "event": "processed",
  "marketing_campaign_id": 23314,
  "marketing_campaign_name": "unique args ab",
  "marketing_campaign_version": "B",
  "marketing_campaign_split_id": 13471,
  "post_type": "event",
  "sg_event_id": "qNOzbkTuTNCdxa1eXEpnXg",
  "sg_message_id": "5lFl7Fr1Rjme_EyzNNB_5A.stfilter-015.5185.55F883172.0",
  "sg_user_id": 939115,
  "smtp-id": "<5lFl7Fr1Rjme_EyzNNB_5A@stismtpd-006.sjc1.sendgrid.net>",
  "timestamp": 1442349848
}

A/Bテスト機能でWinnerが決定された場合のイベントデータの例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "category": [],
  "email": "tadpole_0001@stbase-018.sjc1.sendgrid.net",
  "event": "delivered",
  "marketing_campaign_id": 23314,
  "marketing_campaign_name": "unique args ab",
  "post_type": "event",
  "response": "250 Ok ",
  "sg_event_id": "X2M1IUfMRhuAhWM0CbmFqQ",
  "sg_message_id": "fPJrJPIRTxC_obpgfTy74w.stfilter-015.5185.55F883564.0",
  "sg_user_id": 12345,
  "smtp-id": "",
  "timestamp": 1442349911
}

マーケティングメールの配信停止

旧マーケティングメール機能を通じて送信された場合、配信停止イベントは次のようになります:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[
  {
    "email": "nick@sendgrid.com",
    "timestamp": 1380822437,
    "newsletter": {
      "newsletter_user_list_id": "10557865",
      "newsletter_id": "1943530",
      "newsletter_send_id": "2308608"
    },
    "category": [
      "Tests",
      "Newsletter"
    ],
    "event": "unsubscribe"
  }
]

トラブルシューティング

WebサーバがSendGridサーバに対してHTTPステータスコード 2xx を返していることを確認してください。それ以外のコードが返された場合、SendGridサーバはHTTPステータスコード 2xx が返されるか、上限時間が経過するまでPOSTし続けます。全てのイベントは、イベントが発生してから24時間リトライされます。 あなたのサーバにPOSTしようとしているSendGridのIPアドレスをブロックしてしまっていないか確認してください。なお、SendGrid はサーバを適宜増強していますので、IPアドレスの変更にご注意ください。

Event Notification の Settings画面にある 「Test Your Integration」 をクリックすることで、コールバックURLのテストを行うことができます。また、cURLを使って、シェルからPOSTすることもできます。

1
curl -X POST -H "Content-Type: application/json" -d '[{"email":"john.doe@sendgrid.com","timestamp":1337197600,"smtp-id":"<4FB4041F.6080505@sendgrid.com>","event":"processed"},{"email":"john.doe@sendgrid.com","timestamp":1337966815,"category":"newuser","event":"click","url":"https://sendgrid.com"},{"email":"john.doe@sendgrid.com","timestamp":1337969592,"smtp-id":"<20120525181309.C1A9B40405B3@Example-Mac.local>","event":"processed"}]'