Collectez les inscriptions directement depuis votre site web.
Vos codes QR en magasin permettent déjà d'enregistrer les membres. Le principe est le même pour le web : un formulaire HTML à copier-coller que vous intégrez à n'importe quelle page. Il est envoyé au même pipeline de capture — ainsi, l'inscription sur un site web bénéficie du même enregistrement de consentement, du même coupon de bienvenue, des mêmes protections anti-bots et du même traitement CCPA qu'un scan de code QR. Aucune clé, aucun SDK, aucun backend.
Un formulaire, envoi vers un seul point de terminaison
Le formulaire POST envoie un petit corps JSON au point de terminaison de capture de votre boutique. Le point de terminaison est compatible CORS, le formulaire fonctionne donc depuis votre propre domaine — aucun proxy ni code serveur n’est requis de votre côté :
Obtenez votre code court
Chaque code QR de magasin possède un code court (Magasins → ouvrir un magasin → Codes QR). Utilisez-le dans l'URL du point de terminaison : il identifie le magasin et la marque, sans clé supplémentaire.
Collez le formulaire
Intégrez ce fragment de code autonome sur n'importe quelle page. Il génère le formulaire, intègre les protections anti-bots et le soumet.
Flash fait le reste
Un seul contact est créé ou mis à jour, le consentement est enregistré et, si le code QR contient un coupon de bienvenue, celui-ci est émis, comme lors d'un achat en magasin.
Définissez YOUR_SHORT_CODE et collez-le.
Autonome — aucun script externe ni dépendance. Personnalisez-le pour qu'il s'intègre à votre site ; conservez le honeypot website caché et le _t timestamp — ce sont les protections contre les bots. Vous pouvez également générer cet extrait de code pour une boutique spécifique dans Boutiques → Codes QR → « Intégrer sur votre site web ».
<!-- 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>Corps JSON
Envoi de application/json. La réponse est { success: true, couponCode?, couponExpiresAt?, isRepeat } en cas d'acceptation, ou success:false avec un code d'erreur dans le cas contraire.
| Champ | Saisir | Remarques |
|---|---|---|
email | string | Adresse e-mail de l'abonné. Obligatoire. |
opt_in | boolean | Consentement marketing de votre case à cocher. Enregistré avec la capture. |
_t | string | Millisecondes d'affichage du formulaire — alimente la vérification du temps de remplissage minimal par le bot. Obligatoire. |
website | string? | Champ « Honeypot ». Laissez-le caché et vide ; toute valeur renseignée sera considérée comme un bot. |
fp | string? | Empreinte digitale facultative de l'appareil que vous générez. |
Protection anti-bots intégrée
Le code court est public (il se trouve dans le code source de votre page), ce qui permet à l'endpoint de se protéger côté serveur – les mêmes protections que pour le flux de capture en magasin :
Limitation du débit · toujours activée
Le point de terminaison limite le nombre d’inscriptions qu’une source peut envoyer, de sorte qu’un code court copié ne peut pas inonder votre liste.
Pot de miel + timing
Le champ caché du site Web et le rendu _t timestamp interceptent les soumissions scriptées qui remplissent des champs cachés ou sont soumises instantanément.
Email jetable + gardes en double
Les domaines jetables sont rejetés et les e-mails répétés pour une même boutique sont dédupliqués, et non comptabilisés deux fois.
Transparence quant aux limites
Celles-ci placent la barre plus haut pour une forme publique ; pour une ingestion à haute sensibilité, envoyez plutôt de serveur à serveur via le API authentifié.
Obtenir le consentement, pas seulement une adresse
L'inscription est enregistrée.
Le opt_in La case à cocher est enregistrée avec la capture, ce qui permet aux services en aval de vérifier si le visiteur a consenti au marketing.
CCPA-connaissant
Traitement des informations identique à celui du flux QR : les visiteurs californiens reçoivent l’avis requis côté serveur.
Aucun secret dans la page
Seul le code court public est exposé. Aucune clé API ne risque de fuiter sur votre site.
Votre bandeau de consentement s’affiche en premier
Si vous utilisez un gestionnaire de consentement, assurez-vous que le formulaire soit accessible uniquement lorsque vous y êtes autorisé.
Capturez l'intégralité du parcours de vos clients.
En magasin via QR, et maintenant sur votre site Web : chaque inscription atterrit dans le même profil de membre unifié.