メール購読フォームを手軽に作る方法を模索しています。今回はZapierとSendGridを使ってみました。データベースも使わず、SendGridのContactsに直接登録してみました。
POST先のURLを作成
Zapierで作ります。
「Webhooks」を選択します。
「Catch Hook」を選んで「Save + Continue」を押します。
URLが発行されたらHTTPリクエストの送信を試します。
今回はcurlで以下のようなリクエストを実行しました。
curl -X POST https://hooks.zapier.com/hooks/catch/xxx/yyy/ -d '{"email" : "hoge@example.com"}
successの応答後「Ok,I did this」を押すとZapierが受信したリクエストがみれます。
続いて以下のリンクをクリックしてActionを作成します。
SendGridのContactに登録
受信したメールアドレスをSendGridのWeb APIでContactに登録します。
「Webhooks」を選びます。
「POST」を選んで「Save + Continue」
POSTで送る内容を登録します。
以下の内容を入力します。
URL:https://api.sendgrid.com/v3/contactdb/recipients
Payload Type:JSON
Data:
Key:email
Value:下図を参照
Wrap Request In Array:yes
Headers:
Key:Authorization
Value:Bearer SG.xxx(SendGridのAPIキー)
DataのValueはTriggerのテストで受けたEmailを選択します。
Send Test To Webhooks by Zapierを押してテストします。
以下の成功メッセージが表示されたら成功です。
Zapの名前を付けて登録します。
実行
再度curlでリクエストを実行します。
curl -X POST https://hooks.zapier.com/hooks/catch/xxx/yyy/ -d '{"email" : "hoge@example.com"}
Actionが実行されてSendGridのContactsに登録されれば成功です。
あとは画面のフォームを用意するだけです。本来はダブルオプトインにするべきなので、もう一工夫必要そうです。