Cette page t'a-t-elle aidé ?
Cette page t'a-t-elle aidé ?
Guide
Forwarde un mail à Gilbert avec ton intent en une ligne, il te renvoie un brouillon prêt à envoyer.
Dernière mise à jour : 22 juillet 2026
Cette page s'adresse à l'équipe ITqui déploie Gilbert pour des collègues opérationnels (commerciaux, gestionnaires, support client). L'utilisateur final n'a presque rien à apprendre. Toi, tu configures une fois la forward address au niveau du workspace, tu autorises les membres à l'utiliser, et chaque membre forwarde depuis sa boîte habituelle.
Si tu cherches plutôt à embarquer Gilbert comme un chatbot dans ton produit, lis Embed iframe. Pour des tâches LLM planifiées par cron (briefing matinal, code review hebdo), lis Routines.
C'est le point à comprendre avant de configurer quoi que ce soit. Le forward email est multi-tenant par design :
solve-ai--acme-direction@solveholding.com), la signature template, le mode de sortie (réponse directe ou brouillon Gmail), le rate cap, et la clé LLM (BYOLLM).Conséquence concrète : une même adresse de forward peut servir 5 membres d'une même équipe. Marie forwarde, Gilbert répond avec le style de Marie ; Pierre forwarde, Gilbert répond avec le style de Pierre. Les deux signent avec la signature de l'équipe.
Trois minutes, à faire une seule fois par workspace. Pré-requis : être admin du workspace.
/console/workspaces/<id>/mails. Le hero affiche l'adresse de forward dérivée du nom de l'assistant et du slug du workspace, par exemple solve-ai--acme-direction@solveholding.com pour un assistant par défaut sur le slug acme-direction(le préfixe suit le nom si l'assistant est personnalisé en marque blanche). Si la row gilbert.forward_addresses n'existe pas encore, un admin peut la provisionner depuis la page : Gilbert crée alors la vraie adresse que le webhook Postmark saura résoudre.direct_reply: Gilbert répond par mail au sender, en te mettant en copie. Idéal V1 pour démarrer (pas besoin d'OAuth Gmail).gmail_draft : Gilbert crée un brouillon dans ton Gmail (OAuth Gmail du membre requis via /console/me/integrations). Tu le retrouves dans Brouillons, adressé à toi-même en V1. Corrige le champ À :vers l'expéditeur original avant d'envoyer. Si le membre n'a pas connecté Gmail, le run est marqué skipped:no_gmail_oauthet rien n'est livré.both : Gilbert envoie la réponse email via Postmark et crée un brouillon Gmail (OAuth requis). Utile pour garder une trace dans la boîte du membre.can_forward. Coche les membres concernés.forward_alias_email côté membership pour que le webhook matche correctement.Si tu préfères piloter en SQL (admin avancé / Supabase Studio) :
-- Cas A : ton email Gilbert = ton email pro
-- Pas besoin d'alias séparé, le lookup tombe sur auth.users.email.
UPDATE gilbert.workspace_members
SET can_forward = true, forward_alias_email = NULL
WHERE workspace_id = '<workspace-uuid>'
AND user_id = '<user-uuid>';
-- Cas B : ton email Gilbert (login Google perso) ≠ ton email pro
-- Set forward_alias_email pour matcher le From entrant.
UPDATE gilbert.workspace_members
SET can_forward = true,
forward_alias_email = '<email-pro>'
WHERE workspace_id = '<workspace-uuid>'
AND user_id = '<user-uuid>';Côté membre, c'est 60 secondes :
/console connecté./console/me/integrations. Sans ça, Gilbert répond par mail (mode direct_reply). Avec ça, Gilbert peut drafter dans son Gmail directement.L'ergonomie tient en un geste. Tu reçois un mail, tu cliques « Transférer », destinataire = solve-ai--<workspace>@solveholding.com, et tu écris en haut du corps du mail ce que tu veux répondre. Exemple :
À : solve-ai--acme-direction@solveholding.com
De : marie@acme-immo.fr
Sujet : Tr: Demande de visite · 12 rue de Lyon
Réponds-lui qu'on peut faire jeudi 14h ou vendredi 10h, et qu'on a besoin
de sa pièce d'identité avant la visite.
--- Forwarded message ---
De : Sophie L. <sophie.l@gmail.com>
À : marie@acme-immo.fr
Sujet : Demande de visite · 12 rue de Lyon
Bonjour,
J'ai vu votre annonce sur SeLoger pour le T3 rue de Lyon.
Possible de visiter cette semaine ?
SophieTu envoies. Sous 90 secondes, Gilbert te renvoie un brouillon pro polish. En mode direct_reply, il arrive par mail dans ta boîte. En mode gmail_draft, il apparaît directement dans tes brouillons Gmail (OAuth Gmail requis).
Pour les curieux et les IT qui auditent. Le chemin d'un forward du moment où il quitte ta boîte jusqu'au brouillon reçu :
solveholding.comroute l'adresse de forward vers Postmark, qui dépose le mail dans son endpoint inbound./api/webhooks/email/inboundavec une signature qu'on vérifie côté serveur. Replay window de 5 minutes.gilbert.lookup_forwarding_user(workspace_id, from_email) résout le Fromdu forward vers l'user_id du membre (via forward_alias_email ou auth.users.email). Si le membre n'est pas autorisé, le forward est rejeté avec un mail d'erreur.gilbert-email-inbound-polish (3 retries avec backoff exponentiel pour les 5xx Anthropic / Postmark intermittents). Idempotency via Message-ID dans forward_processed_ids.getLLMClient(supabase, workspaceId, { tier: "smart" }) pour respecter la config LLM du workspace. Un workspace sur Google Gemini paie Google ; un workspace sur Anthropic paie Anthropic. Pas de bypass silencieux vers la clé centrale Gilbert.direct_reply, la réponse est envoyée via Postmark (EmailReplyTransport). En mode gmail_draft, le transport fonctionne en capture-only (pas d'envoi Postmark) et gmailCreateDraft (Gmail API) crée le brouillon dans le compte Gmail du membre (OAuth Gmail connecté obligatoire). Le To est adressé à toi-même (V1). En mode both, Postmark envoie la réponse ET un brouillon est créé dans Gmail. Le run est loggé dans gilbert.forward_runs.Trois choses à savoir si ton service achats ou ton DSI te pose la question :
gilbert.forward_runsn'est lisible que par executing_user_id = auth.uid() (le membre qui a forwardé) ou par un admin du workspace. Un autre membre du même workspace ne voit pas tes forwards.forward_runs (subject_enc, intent_excerpt_enc, draft_preview_enc) sont chiffrées en DB sous FORWARD_ENC_KEY. Un dump de la base sans la clé n'est pas lisible. Le from_email reste en clair (nécessaire pour le lookup).gmail_draft, les tokens Google du membre sont chiffrés sous GOOGLE_TOKEN_KEYet scopés à son user, jamais partagés avec d'autres membres du workspace.Plus de détails sur la posture sécurité globale (CASA Tier 2 ASVS 64/86 ✅) sur le changelog 28 mai 2026.
La V1 fait volontairement moins que ce qui est possible : on déploie progressivement pour éviter les surprises.
| Capacité | V1 (aujourd'hui) | À surveiller |
|---|---|---|
| Mode de sortie | direct_reply, gmail_draft ou both | Affinage UX |
| OAuth Gmail | Optionnel, requis pour gmail_draft | Reconnexion si scopes incomplets |
| Rate cap | 10 / heure / membre | Configurable |
| Style apprenant | Profil global per-user (« Former mon Gilbert ») | Idem, étendu aux 100 derniers Sent |
| Multi-membres | Oui (workspace = contexte) | Idem |
| Anti-patterns | Le persona reject les mails contentieux / RH / paie | Classification configurable par workspace |
/console/workspaces/<id>/mails : la timeline affiche received, polishing, delivered, error avec le message. From du forward ne matche aucun membre du workspace avec can_forward = true. Si tu te connectes à Gilbert avec un email différent de ton email pro, il faut set forward_alias_email sur ta membership (voir Setup admin).