独自の Web サイトからサインアップを収集します。
店内の QR コードはすでに会員を獲得しています。これは Web でも同じで、HTML フォームをコピーして任意のページにドロップします。同じ キャプチャ パイプライン にポストするため、Web サイトのサインアップは同一の同意レコード、ウェルカム クーポン、ボット防御、および QR スキャンとしての CCPA 処理を取得します。キーも SDK もバックエンドもありません。
1 つのフォーム、1 つのエンドポイントに投稿
フォーム POST は、ストアのキャプチャ エンドポイントへの小さな JSON 本文です。エンドポイントは CORS 対応であるため、フォームは独自のドメインから機能します。ユーザー側でプロキシやサーバー コードを使用する必要はありません。
ショートコードを取得する
すべての店舗の QR コードにはショート コードがあります (店舗 → ストアを開く → QR コード)。これをエンドポイント URL で使用します。これにより店舗とブランドが識別され、キーは必要ありません。
フォームを貼り付けます
自己完結型スニペットを任意のページにドロップします。フォームをレンダリングし、ボット防御を実行し、送信時に投稿します。
残りは Flash が行います
1 つの統合連絡先が作成または更新され、同意が記録され、QR コードにウェルカム クーポンがある場合は、店内キャプチャとまったく同じようにクーポンが発行されます。
YOUR_SHORT_CODEを設定して貼り付けてください。
自己完結型 - 外部スクリプトや依存関係はありません。サイトに合わせてスタイルを調整してください。website ハニーポットと _t timestamp は隠しておいてください。これらはボット対策です。また、ストア → QR コード → 「ウェブサイトに埋め込む」で、特定のストア向けにこのスニペットを生成することもできます。
<!-- SocialHub signup form — paste anywhere in your site's HTML -->
<form class="flash-signup" style="max-width:340px;font-family:sans-serif">
<input type="email" name="email" required placeholder="Email address"
style="width:100%;padding:10px;margin-bottom:8px;border:1px solid #ccc;border-radius:6px" />
<label style="display:block;font-size:13px;margin-bottom:8px">
<input type="checkbox" name="opt_in" checked /> Send me offers and updates
</label>
<!-- honeypot: real people never fill this; bots do -->
<input type="text" name="website" tabindex="-1" autocomplete="off"
style="position:absolute;left:-9999px" aria-hidden="true" />
<button type="submit" style="width:100%;padding:10px;border:0;border-radius:6px;background:#111;color:#fff;cursor:pointer">Sign up</button>
</form>
<script>
(function () {
var f = document.currentScript.previousElementSibling;
var t = Date.now(); // render time — the min-fill-time bot check
f.addEventListener("submit", function (e) {
e.preventDefault();
fetch("https://flash.socialhub.ai/api/flash/capture/YOUR_SHORT_CODE", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email: f.email.value,
opt_in: f.opt_in.checked,
_t: String(t),
website: f.website.value // honeypot value
})
})
.then(function (r) { return r.json(); })
.then(function (d) { f.innerHTML = d && d.success ? "<p>Thanks — you're signed up!</p>" : "<p>Sorry, something went wrong.</p>"; })
.catch(function () { f.innerHTML = "<p>Sorry, something went wrong.</p>"; });
});
})();
</script>JSONボディ
application/json を送信します。応答は、受け入れられた場合は { success: true, couponCode?, couponExpiresAt?, isRepeat } であり、それ以外の場合はエラー コードを含む success:false です。
| 分野 | タイプ | 注意事項 |
|---|---|---|
email | string | 購読者の電子メール。必須。 |
opt_in | boolean | チェックボックスからのマーケティング同意。キャプチャーで記録しました。 |
_t | string | フォームがレンダリングされたときのミリ秒エポック — min-fill-time ボット チェックを強化します。必須。 |
website | string? | ハニーポットフィールド。非表示にして空欄のままにしてください。値が入力されている場合はボットとして扱われます。 |
fp | string? | ユーザーが生成するオプションのデバイス フィンガープリント。 |
組み込まれたボット防御機能
ショート コードは公開されている (ページ ソース内にある) ため、エンドポイントはサーバー側で自身を防御します。これは、店舗内キャプチャ フローと同じ保護です。
レート制限・常時稼働
エンドポイントは 1 つのソースが送信できるサインアップの数を制限するため、コピーされたショート コードがリストに溢れることはありません。
ハニーポット + タイミング
非表示のウェブサイト フィールドと _t レンダリング timestamp は、非表示のフィールドに入力したり、即座に送信したりするスクリプトによる送信を検出します。
使い捨てメール + 二重ガード
使い捨てドメインは拒否され、同じストアで繰り返されるメールは二重にカウントされるのではなく、重複が排除されます。
限界について正直に
これらは公的形式の基準を引き上げます。高機密の取り込みの場合は、代わりに認証された API を介してサーバー間で送信します。
単なるアドレスではなく同意を取得する
オプトインは記録されます
opt_in チェックボックスはキャプチャとともに保存されるため、ダウンストリームは訪問者がマーケティングに同意したかどうかを尊重します。
CCPA 対応
QR フローと同じ開示処理 - カリフォルニア州の訪問者はサーバー側で必要な通知を受け取ります。
ページに秘密はありません
公開されているショートコードのみが公開されます。サイトには漏洩する API キーはありません。
まずは同意バナーを
同意マネージャーを使用する場合は、その背後でフォームをゲートして、権利のある場所のみを収集できるようにします。