Pilote d'auto-hébergement des pages de capture Resident Paraguay. Sert les pages de capture sur notre infra (à terme sur go.resident-paraguay.fr en gardant les mêmes URLs), avec tracking détaillé + relais des leads dans systeme.io (contact + tags + campagne) pour que les séquences email systeme.io continuent de tourner.
Contexte projet : workspace/RP-migration-SPEC.md (spec complète), workspace/RP-migration-pages-backlog.md, workspace/RP-systemeio-audit-2026-09-09.md.
apps/formation-plan-b/app.py.PORT env).PORT=8110 python3 app.pyrp-capture.service (à créer au déploiement).rp-capture.panelbay.com (avant bascule DNS de go.).GET /<slug> : sert une page de capture (slugs définis dans PAGES, ex. procedure).GET /confirmation : page de remerciement (étape suivante).POST /api/track : beacon vue de page (JSON : page, session_id, utm_*, referer).POST /api/subscribe : soumission formulaire → log lead + relais systeme.io + renvoie {ok, redirect}.GET /stats : vues, opt-ins, taux de conversion, opt-ins par source (JSON).GET /healthz.https://api.systeme.io/api, header X-API-Key = SYSTEMEIO_API_KEY (lu depuis /root/aios/.env, source unique).POST /contacts (email + fields) → si existe, GET /contacts?email= → POST /contacts/{id}/tags par tag → tentative POST /contacts/{id}/campaign-subscriptions.PAGES (app.py). Page procedure : tags FR (968798) + Formation gratuite PY (970208), campagne CAMPAGNE LEAD MAGNET (1056351), étape suivante /confirmation.data/capture.db : table events (vues) + leads (chaque inscription avec source/UTM, appareil, IP, id contact systeme.io, statut relais). Aucun lead perdu même si le relais échoue (statut loggé).website)./root/aios/.env.rp-capture.panelbay.com (expose-webapp : systemd + nginx + DNS + SSL).go.resident-paraguay.fr vers notre serveur + proxy des pages non migrées vers systeme.io.bolivie ajoutée (layout leadmagnet, champs prénom + email uniquement, tag systeme.io Bolivie id 2189266, pas de campagne, étape suivante /bolivie-merci). But : inscription pour être tenu au courant des infos Bolivie. Page merci bolivie-merci (kind=thankyou avec body personnalisé, nouveau champ optionnel supporté par next.html). Tag Bolivie créé côté systeme.io RP. Testé de bout en bout : opt-in réel -> contact 444553671 (email de test matt.bouthors+bolivietest@gmail.com) créé avec tag Bolivie, relais ok(tags=1)./etc/nginx/sites-enabled/bolivie.panelbay.com.conf : un bloc location = / proxy_pass vers http://127.0.0.1:8110/bolivie sert la page Bolivie à la RACINE (le reste des chemins, /bolivie-merci /api/* /static/*, passe par le location / normal). Si on relance expose.py (--force) ou unexpose, RE-AJOUTER ce bloc location = /. rp-capture.panelbay.com/bolivie reste valide aussi./procedure fidèle à l'originale + /confirmation, backend tracking + relais systeme.io). Testé en local (page OK, tracking OK)./ = 404 (normal, l'app sert /procedure). Bascule DNS de go.resident-paraguay.fr = étape ultérieure..videobox), liens Telegram (pages next.html kind=telegram). Champs par page : leadmagnet = prénom+email (procedure = +pays+WhatsApp) ; vsl = prénom+email+WhatsApp./video-residence-fiscale + /video-residence-fiscale-54294d09) = MP4 servi direct depuis le CDN systeme.io (CloudFront, pas de réhébergement). Plan B (/video-planb) = iframe YouTube RCAly1_fosc. next.html rend maintenant un vrai lecteur (video mp4 ou iframe YouTube selon video_mp4/video_yt). Bouton "RÉSERVER UN APPEL"/"CONSULTATION GRATUITE" pointe vers iClosed (ICLOSED_URL = https://app.iclosed.io/e/paraguay/residence), rendu si cta_url présent.