SocialHub.AI
Centre de développement · Formulaire d'inscription Web

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.

01 — Comment ça marche

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é :

POST https://flash.socialhub.ai/api/flash/capture/YOUR_SHORT_CODE

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.

02 — Installation

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 ».

index.html
<!-- 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>
03 — Demande de contrat

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.

ChampSaisirRemarques
emailstringAdresse e-mail de l'abonné. Obligatoire.
opt_inbooleanConsentement marketing de votre case à cocher. Enregistré avec la capture.
_tstringMillisecondes d'affichage du formulaire — alimente la vérification du temps de remplissage minimal par le bot. Obligatoire.
websitestring?Champ « Honeypot ». Laissez-le caché et vide ; toute valeur renseignée sera considérée comme un bot.
fpstring?Empreinte digitale facultative de l'appareil que vous générez.
04 — Protections

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é.

05 — Consentement et confidentialité

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é.