Docs

Le code, les noms de menus et d’API restent en anglais, comme dans le code lui-même.

Wavelynks, en une page

Wavelynks est une plateforme autonome d’optimisation de la conversion, où Echo, son compagnon IA, fait le travail. Un petit script applique les variantes approuvées et enregistre des analyses anonymes ; l’Echo Agent trouve les problèmes et prépare les tests ; le Studio permet de construire et d’affiner les variantes sur votre page en ligne ; et le moteur de résultats vous dit quoi mettre en ligne.

La boucle : scanner → construire → approuver → faire tourner une période planifiée → mettre le gagnant en ligne ou conclure → apprendre.

Installation

Ajoutez une ligne le plus haut possible dans le <head> de chaque page. Votre clé de site se trouve dans Connexions.

index.html
<script src="https://www.wavelynks.com/echo.js" data-site="YOUR_SITE_KEY"></script>

Le script est volontairement synchrone : lors d’une première visite, il masque la page au plus ~900 ms pendant le chargement des variantes, puis met la configuration en cache pour que les pages suivantes appliquent les changements avant l’affichage, sans scintillement. Utilisez Vérifier l’installation sur la page Connexions pour confirmer l’arrivée des événements.

Shopify : Online Store → Themes → Edit code → layout/theme.liquid, collez juste après <head>. Next.js : un simple <script> dans le <head> du layout racine. GTM : fonctionne, mais charge plus tard (un peu de scintillement).

Suivre les achats (Wavelynks Pixel)

Déclarez le chiffre d’affaires sur votre page de confirmation de commande, pour que les tests se mesurent en argent, pas en clics :

thank-you page
<script>
  window.echo = window.echo || [];
  echo.push(["purchase", { value: 84.50 }]);   // works before echo.js loads
</script>

L’ajout au panier est détecté automatiquement pour les paniers qui appellent /cart/add (Shopify, WooCommerce, la plupart des thèmes). Vous pouvez aussi passer un objectif en mode Visite de page dans Réglages → Conversions, par exemple tout chemin commençant par /checkout/thank-you.

API JavaScript

browser
echo.track("newsletter_signup")              // custom goal (event mode)
echo.track("purchase", { value: 120 })         // purchase with revenue
echo.purchase({ value: 120 })                  // shorthand
echo.variant("exp_123")                        // → variant id this visitor sees, or null
echo.consent(true)                             // release events held for consent
echo.visitor                                   // anonymous visitor id

<button data-echo-goal="size_guide_open">Size guide</button>   // click goal, no JS

Déboguez n’importe quelle page avec ?echo_debug=1. Prévisualisez une variante brouillon sur votre site avec ?echo_preview=VARIANT_ID (le bouton Aperçu du Studio génère le lien et un QR code).

Règles de ciblage

Un groupe de ciblage est un ensemble réutilisable de règles d’URL. Chaque règle se lit : le chemin respecte / ne respecte pas [opérateur] [valeur]. Combinez avec ET / OU et imbriquez les groupes.

  • exact, simple: le chemin est égal à la valeur (les paramètres d’URL sont toujours ignorés)
  • starts_with, ends_with, contains
  • wildcard: /products/*, /collections/*/sale
  • regex: expressions régulières complètes, insensibles à la casse

Le panneau de portée estime les visites des 7 derniers jours et la période planifiée avant de vous engager. Les groupes plus larges aboutissent plus vite.

Comment tournent les tests

Chaque test A/B est une répartition fixe et égale, lue à la fin d’une période planifiée. La période est fixée avant le lancement d’après votre vrai trafic :

  • 2 semaines si les pages peuvent envoyer ~5 000 visiteurs à chaque variante, 4 semaines s’il faut plus longtemps, et 6 semaines au maximum.
  • Les chiffres restent masqués tant que chaque variante n’a pas 350 visiteurs et 50 conversions.
  • Aucun leader n’est nommé avant la fin de la période. Les coups d’œil prématurés multiplient les faux positifs.
  • Chance de gagner (bayésienne, bêta-binomiale), face à votre seuil (95 % par défaut ; 80, 85 ou 90 % dans les Réglages) : au seuil ou au-dessus sur la conversion ou le revenu par visiteur, c’est un gagnant ; un peu en dessous, c’est prometteur ; et l’original gagne quand la chance de la variante passe sous 100 % moins le seuil.
  • Le revenu par visiteur compte dès que l’original et la variante ont chacun 50 commandes. Une variante qui convertit plus mais rapporte moins par visiteur n’est jamais désignée gagnante.
  • Un perdant net (moins de 1 % de chance de gagner) peut être arrêté tôt, mais seulement après 7 jours, pour que les variations de la semaine ne puissent pas le déclencher.
  • La hausse est donnée avec un intervalle à 95 %. Planifiez sur la borne basse, pas sur l’estimation ponctuelle.
  • Les ventilations par appareil et par canal apparaissent dès que chaque segment a 500 visiteurs par variante. Ne mettez en ligne que là où ça a gagné.

L’affectation est déterministe (hachage FNV-1a du test et du visiteur, comme dans GrowthBook) et conservée dans le localStorage, pour que les visiteurs gardent la même variante d’une page et d’une visite à l’autre. Essayez les calculateurs pour planifier un test.

Studio & types de changements

Les variantes sont des listes d’opérations DOM appliquées par-dessus votre page d’origine. Votre code n’est jamais modifié, et la mise en pause annule tout instantanément.

change types
text      replace an element's text
html      replace inner HTML
style     inline CSS on the element        { "background-color": "#1f9d47" }
attr      set an attribute                  href, src, aria-label…
hide      hide the element
insert    insert HTML  beforebegin | afterbegin | beforeend | afterend
css       add a global stylesheet           @media (max-width: 767px) { … }
move      move the element next to another
redirect  split-URL test

Dans le Studio, cliquez pour sélectionner un élément, double-cliquez sur un texte pour le modifier sur place, ou décrivez le changement à l’agent de test. ⌘Z / ⇧⌘Z annulent et rétablissent ; les changements s’enregistrent tout seuls.

Audiences & pubs

Une page d’audience (une personnalisation) montre une version modifiée d’une page à une seule audience, avec un groupe témoin (10 % par défaut) qui continue de voir l’original pour mesurer la hausse. Champs d’audience : utm_source, utm_medium, utm_campaign, referrer, device, visitor (nouveau / fidèle) et query.

Les balises UTM sont lues à l’arrivée du visiteur et conservées toute la visite, pour qu’un visiteur venu d’une pub garde sa page en naviguant. Un lien avec une balise utm_ démarre une nouvelle attribution. Les pubs écrites dans Wavelynks ont leur propre utm_campaign (une par pub), pour compter les visites et commandes de chaque pub et cibler exactement ses visiteurs avec sa page assortie.

Sondages clients

Un sondage est une question (choisir une réponse, une note de 1 à 5, de 0 à 10 ou les mots du client) affichée par le même script, il n’y a donc rien d’autre à installer. Chaque sondage a son moment (au départ, après une commande, après un temps ou un défilement, après un ajout au panier), ses pages, appareils et visiteurs, la fréquence à laquelle un même client peut le voir, et son apparence.

  • Au plus un sondage par visite, jamais pendant le paiement, et un sondage s’arrête pour un client dès qu’il a répondu (sauf si vous en décidez autrement).
  • Les clients voient le sondage dans la langue de leur page (anglais, néerlandais, français, allemand, espagnol, italien ou portugais) si vous l’avez ajoutée ; sinon dans la langue choisie par défaut.
  • Les réponses comptent pour des raisons (prix, livraison, taille, retours, confiance, informations, photos, paiement) ; une raison qui revient souvent devient une idée de test.

Voyez un sondage sur votre boutique avant sa publication avec ?echo_survey=SURVEY_ID (le bouton « Le voir sur votre boutique » du sondage crée le lien). Il s’affiche tout de suite, et rien de ce que vous y répondez n’est compté.

Confidentialité & consentement

Le script ne stocke que des identifiants aléatoires et des affectations aux tests dans un stockage propriétaire : echo_<site>_vid, _sid, _asg, _exp, _cfg. Il ne dépose aucun cookie et ne collecte aucune donnée personnelle. Activez Attendre le consentement pour retenir les événements jusqu’à ce que OneTrust (C0002), Google Consent Mode analytics_storage ou echo.consent(true) l’accorde. Les variantes s’affichent quand même, pour une expérience cohérente.

Si vous utilisez une Content Security Policy, autorisez cet hôte pour script-src et connect-src.

Serveur MCP

Interrogez votre boutique depuis Claude, ChatGPT ou tout client MCP, et faites de la réponse un test brouillon. Créez une clé API dans Réglages → API & MCP, puis :

Claude Code
claude mcp add --transport http echo https://www.wavelynks.com/api/mcp \
  --header "Authorization: Bearer YOUR_KEY"

Outils : list_sites, list_experiments, get_experiment_results, get_page_scorecard, get_site_analytics, list_opportunities, create_experiment (toujours un brouillon, qu’un humain doit lancer).

Auto-hébergement sur des services gratuits

Wavelynks est une seule app Next.js. Chaque dépendance a une offre gratuite :

  • Hébergement : Vercel Hobby (ou tout hôte Node)
  • Base de données : Neon Postgres (offre gratuite)
  • Connexion : Better Auth (intégré, e-mail + mot de passe ; GitHub/Google en option)
  • IA : facultative. Le moteur de règles fonctionne sans clé ; ajoutez une clé Anthropic pour utiliser Claude.
  • E-mail : en option l’offre gratuite de Resend pour les réinitialisations de mot de passe
terminal
npm install
cp .env.example .env.local      # set BETTER_AUTH_SECRET and DATABASE_URL (Neon)
npm run dev                     # runs migrations against your Neon database, then starts