RedChurn

Configuration Resend

RedChurn envoie les e-mails de récupération des paiements, de sauvegarde à l'annulation et de win back via votre propre compte Resend (BYOK). Chaque app possède sa propre clé API, URL webhook et secret de signature. Les événements d'engagement mettent à jour les timelines abonnés dans RedChurn.

Avant de commencer

Vous devez disposer d'un compte Resend avec un domaine d'envoi vérifié si vous souhaitez une délivrabilité en production. RedChurn n'héberge pas vos e-mails de rétention sur un domaine partagé en production — vous apportez votre propre clé API Resend par app.

Créez d'abord votre app dans le tableau de bord RedChurn. Resend se configure sous Tableau de bord → Apps → API keys & webhooks → Resend (email). Rien n'est partagé entre les apps : chaque app possède sa propre clé, adresse d'expéditeur, URL webhook et secret de signature.

  • Un compte Resend (resend.com)
  • Une app RedChurn créée
  • Un domaine d'envoi vérifié sur Resend (recommandé pour la production)
  • Un fournisseur de facturation connecté (RevenueCat ou Polar) pour que les flux puissent déclencher des e-mails

Ce que RedChurn envoie via Resend

Lorsqu'un flux de rétention s'exécute sur le canal e-mail, RedChurn rend le modèle depuis votre tableau de bord et l'envoie via votre clé API Resend. Chaque envoi est journalisé dans RedChurn avec l'identifiant e-mail Resend pour corrélation avec le tableau de bord Resend.

La récupération des paiements, la sauvegarde à l'annulation et le win back ont chacun leurs propres séquences e-mail. Activez-les sous Tableau de bord → Scenarios → Email et ajustez les délais et textes par flux.

  • Récupération des paiements → e-mails de relance après un paiement échoué
  • Sauvegarde à l'annulation → e-mails après une intention d'annulation
  • Win back → e-mails de réactivation après churn
  • E-mails de test → vérification de connexion depuis Intégrations → Resend

1. Connecter votre clé API

Ouvrez Tableau de bord → Apps → API keys & webhooks → Resend (email). Créez une clé API Resend avec l'accès Send (Full access n'est pas requis) et collez-la dans RedChurn avec l'adresse e-mail d'expéditeur.

Le domaine de l'e-mail d'expéditeur doit correspondre à un domaine vérifié sur votre compte Resend. RedChurn liste vos domaines Resend après connexion pour confirmer leur statut de vérification.

  • Clé API : stockée par app, masquée après enregistrement
  • E-mail d'expéditeur : ex. billing@yourdomain.com
  • Importer depuis une autre app : réutilisez la même clé si plusieurs apps partagent un compte Resend

2. Vérifier votre domaine d'envoi

Dans le tableau de bord Resend, ajoutez et vérifiez le domaine depuis lequel vous envoyez (enregistrements DNS pour SPF, DKIM et éventuellement DMARC). Tant que le domaine n'est pas vérifié, Resend peut bloquer ou limiter la livraison.

Après la connexion dans RedChurn, envoyez un e-mail de test depuis Intégrations → Resend pour confirmer que la clé et l'adresse d'expéditeur fonctionnent de bout en bout.

3. Webhook d'engagement (ouvertures et clics)

Pour afficher la livraison, les ouvertures et les clics sur chaque timeline abonné, configurez un webhook Resend pointant vers le point de terminaison RedChurn spécifique à votre app. Copiez l'URL depuis Intégrations → Resend (visible après connexion de la clé API).

L'URL suit ce modèle et doit utiliser HTTPS en production :

text
https://app.redchurn.io/api/webhooks/resend/{your-app-slug}

4. Sélectionner les événements webhook

Dans Resend : Webhooks → Add endpoint → collez votre URL RedChurn. Activez uniquement les événements d'engagement ci-dessous. RedChurn ignore tous les autres types d'événements.

  • email.delivered → définit delivered_at sur l'enregistrement d'envoi
  • email.opened → définit opened_at (première ouverture uniquement)
  • email.clicked → définit clicked_at et incrémente click_count

5. Secret de signature (par app)

Lors de la création du point de terminaison webhook, Resend affiche un secret de signature (commence par whsec_). Copiez-le immédiatement — Resend ne l'affichera plus.

Collez le secret dans RedChurn sous la même section Intégrations → Resend, dans le champ Signing secret. Il est stocké par app en base de données, comme les secrets webhook Polar et RevenueCat. Ce n'est pas une variable d'environnement de plateforme.

Une fois enregistré, RedChurn vérifie les signatures Svix sur les requêtes webhook entrantes. Si le secret est incorrect, les événements d'engagement sont rejetés avec 401 jusqu'à sa mise à jour.

Où l'engagement apparaît dans RedChurn

Une fois le webhook actif, l'engagement met à jour la ligne email_sends correspondant à l'identifiant e-mail Resend et limitée à votre app. Les ouvertures et clics apparaissent sur les timelines abonnés (vues détaillées récupération des paiements, sauvegarde à l'annulation, win back).

Le flux d'activité Scenarios → Email liste les envois avec statut sent / failed et un lien vers le journal Resend. Il n'affiche pas les badges ouverture/clic — utilisez les timelines abonnés ou le tableau de bord Resend pour le détail d'engagement.

  • Timeline abonné : libellés opened / clicked / not opened par étape e-mail
  • Flux d'activité e-mail : statut d'envoi + lien vers resend.com/emails/{id}
  • Tableau de bord Resend : analyses complètes de livraison et d'engagement

6. Activer les séquences e-mail

Connecter Resend n'envoie pas d'e-mails à lui seul. Activez le canal e-mail pour chaque flux sous Tableau de bord → Scenarios → Email, importez ou personnalisez les séquences, et confirmez que le flux est activé pour les événements de votre fournisseur de facturation.

RedChurn planifie les étapes (jour 0, 3, 7, etc.) depuis votre configuration de modèles. Le job cron traite la file d'attente et envoie via votre clé Resend.

Développement local

Les webhooks Resend nécessitent une URL HTTPS publique. localhost ne fonctionnera pas dans le tableau de bord Resend. Utilisez un tunnel (ngrok, Cloudflare Tunnel, etc.) et définissez NEXT_PUBLIC_WEBHOOK_URL sur l'origine du tunnel pour que RedChurn affiche la bonne URL webhook dans Intégrations.

bash
# Example
ngrok http 3000
# .env.local
NEXT_PUBLIC_WEBHOOK_URL=https://your-subdomain.ngrok.app

Dépannage

Si les e-mails partent mais que les ouvertures et clics n'apparaissent jamais, le webhook d'engagement est généralement absent, pointe vers le mauvais slug d'app, ou le secret de signature n'a pas été enregistré dans RedChurn.

Si les e-mails échouent entièrement, vérifiez la vérification du domaine Resend, le domaine de l'adresse d'expéditeur, et que le flux est activé sur le canal e-mail.

  • 401 sur webhook : secret de signature incorrect — recopiez depuis Resend ou régénérez le point de terminaison
  • Aucun engagement sur les timelines : l'URL webhook doit inclure le bon slug d'app
  • E-mails non envoyés : domaine Resend non vérifié ou canal e-mail désactivé
  • Données d'app incorrectes : chaque app nécessite sa propre URL webhook et son secret
  • Secret whsec_ perdu : supprimez et recréez le point de terminaison dans Resend, puis enregistrez le nouveau secret