ミーティングリンクブロック
オンラインまたはハイブリッド形式のイベントへの参加情報です: プロバイダーラベル、参加用URL、開始時刻、そして開始何分前から参加リンクをライブとして表示するかです。これはウェビナーやリモート会議の招待における「ここをクリックして参加」という瞬間の背後にあるブロックで、受信者がメールを1週間前に開いても、通話開始の30秒前に開いても、常に正確であるように作られています。
仕組み
プロバイダーフィールド(Zoom、Google Meet、Microsoft Teams、またはカスタム)はラベルにすぎません — これらのいずれともOAuthやアカウント連携はなく、自分で貼り付けるプレーンなURLがあるだけです。これは参加ボタンの文言を決めるために存在します(「Zoomで参加」対、カスタムの場合の汎用的な「ミーティングに参加」)、それ以上の意味はありません。
送信されるHTMLは、カウントダウンブロックや商品ブロックが使う「送信時点で静的」という同じ規則で、参加ボタンを常に実際にクリックできるリンクとしてレンダリングします。ミーティングの開始時刻が近づくにつれてメールを再取得することはできないため、そこで制限をかける方法はありません。
ボタンの横には、カウントダウンを追跡するステータス行とバッジがあります。startsAtが未来である間は「あとXd Xh Xm」(1日未満になると「Xh Xm」)と表示され、カウントダウンブロックが使っているのと同じカウントダウン画像技術で作られた小さなサーバー側レンダリングのGIFが併記されます。この画像はリクエストごとに新しく再生成される静止画像であり、クライアント側でアニメーションしているわけではないにもかかわらず、開封をまたいで正しくカウントを続けます。開始時刻を過ぎると、バッジはさらなるカウントダウンなしで「配信中」に切り替わります。
ホスティングされたライブビューは、このブロックが実際に参加コントロールに制限をかける唯一の場所です。送信されたメールと異なり、ライブビューは訪問ごとに新しく取得されるためです。そこでは、レンダリング時刻がstartsAtからopensMinutesBefore分以内になった時点でのみ参加ボタンが表示されます。その時間枠が開く前は、受信者は動作するリンクの代わりに、「開始N分前に開きます」(opensMinutesBeforeが0の場合は「まだ開いていません」)と表示された操作不可のグレーのチップを目にします。これはブロック自身のプロパティと現在時刻を照らし合わせて同期的に計算されます — Firestoreの読み取りも、保存された回答状態も不要です — そのため、ライブビューのレンダリングごとに実行しても負荷は軽微です。startsAtが一切設定されていないブロックは、メールとライブビューの両方で常に開いた状態になります。制限をかける対象が何もないためです。
任意のダイヤルイン行は、入力されていれば、どのティアでも参加ボタンの横にプレーンテキストとしてレンダリングされます — これ自体はリンクではなく、音声のみで参加する人向けの電話番号です。
設定可能なフィールド:
- プロバイダー — Zoom、Google Meet、Microsoft Teams、またはカスタム(ラベルのみ)。
- 参加用URL — ボタンのリンク先。
- 開始時刻 — ミーティングの開始時刻。「あと…」バッジとライブビューの制限も、これが基準になります。
- ダイヤルイン(任意) — プレーンテキストとしてレンダリングされる電話番号。
- 参加リンクを開始何分前から開くか — ライブビューの制限の時間枠(既定は15分。0の場合、リンクは開始の瞬間まで正確に操作不可のままになります)。
- カード自体の背景色、パディング、ボーダー、ボーダーの角丸。
- ステータスラベルの色/サイズ、そして参加ボタンの色/背景色の上書き。
ミーティングリンクブロックには回答すべきものが何もありません — これはライブで更新されるコンテンツであり、質問ではないため — そのため回答ダッシュボードやCSVエクスポートには一切表示されません。参加のクリック自体は、プレーンなリンクを持つすべてのブロックが共有する汎用のクリック追跡スロットを通じて、他のリンクと同様にブロック単位のクリックヒートマップで追跡されます。
例
Subject
Your seat is booked — join link inside
ウェビナーの招待では、ミーティングリンクブロックをメールのさらに上にあるカウントダウンと組み合わせます — カウントダウンが数日前から緊張感を高め、瞬間が近づくとミーティングリンクのバッジが正確な「あと…」の表示に引き継ぎます。ハイブリッドイベントでは、ミーティングリンクと会場ブロックの両方を同じメールに配置することで、リモート参加者と現地参加者がそれぞれ自分に該当するコントロールを受け取れます。「イベント」のプロジェクト用途は、まさにこの組み合わせから始まります — イベントとウェビナーを参照してください。opensMinutesBeforeを10や15程度に設定しておくと、早くクリックした人がほとんど誰もいない通話に参加してまだ何も始まっていないのを見つける、という事態を防げます。
静的フォールバックの見え方
<div style="margin:12px 0;background-color:transparent">
<p style="margin:0 0 6px;font-size:13px;font-weight:600;color:#111827">Starts in 2h 14m</p>
<img src="https://mailinapp.com/api/countdown?t=1753401600000&c=111827&s=9f2a..." width="220" height="40" alt="Starts in 2h 14m"
style="display:block;max-width:100%;height:auto;margin-bottom:8px" />
<a href="https://zoom.us/j/123456789"
style="display:inline-block;padding:10px 20px;background-color:#4f46e5;color:#ffffff;
border-radius:6px;text-decoration:none;font-size:14px;font-weight:600">
Join on Zoom
</a>
<p style="margin:8px 0 0;font-size:13px;color:#4b5563">Dial in: +1 415 555 0100</p>
</div>
これはメールに送信されるティアです: ライブのカウントダウンバッジ、ミーティングのURLへ常にクリック可能な参加リンク、そしてプレーンテキストのダイヤルイン行です — メールは送信時点で静的であるため、制限は一切かかりません。