Flowli-Email compile vos templates, vérifie l'origine de la requête et relaie l'envoi vers votre SMTP, Resend, SendGrid ou Twilio. Les réponses entrantes reviennent dans vos conversations et alimentent votre carnet de contacts.
Une balise <script> ou un import npm. init(), send(), sendForm() — email, SMS et WhatsApp.
SMTP, Resend, SendGrid pour l'email ; Twilio pour les SMS et WhatsApp, avec numéros E.164 validés.
Webhooks Twilio idempotents, fil de conversation, réponse en un clic et règles d'auto-réponse.
Contacts créés automatiquement, import CSV, tags, blocage, fusion de doublons et journal d'audit.
Les envois transitoirement en échec sont rejoués automatiquement, sans perdre de requête.
Identifiants Twilio et providers chiffrés au repos (AES-256-GCM) et testables depuis le dashboard.
Whitelist CORS, clés publiques révocables, clés secrètes pour vos appels serveur.
Quota horaire par compte, statut du provider, origine, IP et latence pour chaque envoi.
Syntaxe {{ variable }}, conditions et boucles, prévisualisation et compteur de segments SMS.
Créez un service d'envoi, écrivez un template avec des variables{{ variable }}puis appelez le SDK. L'API répond{ status: 200, text: 'OK' }.
<script src="https://votre-app.lovable.app/sdk/flowli-email.js"></script>
<script>
flowli.init("pk_votre_cle_publique");
// Email
flowli.send("service_id", "template_id", {
from_name: "Ada Lovelace",
message: "Bonjour depuis le navigateur !"
});
// Email avec pièce jointe (id stocké, base64 ou URL https)
flowli.send("service_id", "template_id", { message: "Votre facture" }, null, {
attachments: [
{ id: "att_123" },
{ filename: "facture.pdf", content_base64: "JVBERi0x..." }
]
});
// SMS / WhatsApp (numéro validé en E.164), média MMS optionnel
flowli.send("service_twilio", "template_sms", {
to: "+15145550123",
message: "Votre code est 4821"
}, null, {
attachments: [{ url: "https://exemple.com/image.png" }]
}).then(function (res) {
console.log(res.status, res.text); // 200 OK
});
</script>Les trois formats sont combinables dans un même appel : id d'un fichier déjà stocké, contenu base64 inline, ou URL https publique.
curl -X POST https://votre-app.lovable.app/api/public/v1/send \
-H "Content-Type: application/json" \
-d '{
"service_id": "svc_smtp_principal",
"template_id": "tpl_facture",
"public_key": "pk_votre_cle_publique",
"channel": "email",
"to": "client@exemple.com",
"template_params": {
"first_name": "Ada",
"message": "Voici votre facture du mois."
},
"attachments": [
{ "id": "att_9f3c21" },
{
"filename": "facture-2026-08.pdf",
"content_type": "application/pdf",
"content_base64": "JVBERi0xLjcKJcTl8uXrp..."
},
{
"url": "https://cdn.exemple.com/cgv.pdf",
"filename": "cgv.pdf"
}
]
}'
# Réponse
# { "status": 200, "text": "OK", "log_id": "log_2f81c4", "attachments": 3 }