Answer customer emails with your agent
Give your intoCHAT agent its own email address, forward your support address from Gmail or Microsoft 365, optionally send from your own domain, and let the agent answer whole email threads with hand-off to your team.
Your agent can answer email. It gets its own email address: customers write to it directly, or you forward your existing support address to it, and the agent answers each email in its thread with the same knowledge, instructions, actions and rules as in the widget. Every email thread appears on the agent's Conversations tab with an Email badge, and your team can take a thread over and reply from intoCHAT.
Plan
The agent's email address is available on Starter and up. Sending from your own domain (see below) is available on Pro and up; on Starter, replies come from the agent's address.
Each AI reply by email counts on your plan exactly as in the widget: one message with the default model, more with a larger model. Your team's replies don't count. When your messages run out, the customer gets the widget's own notice by email ("Message limit reached…"), at most once an hour. See Plans and limits.
After a downgrade to Free, the address is kept but emails to it aren't answered until you upgrade again. After a downgrade from Pro to Starter, replies come from the agent's address instead of your domain.
Create the address
- Open your agent, go to the Share tab and find the Email card.
- Enter the address name, for example
acme. The card shows the full address: the name, then intoCHAT's email domain. A name has 3 to 40 letters, digits, dots, hyphens or underscores, and each address is unique across intoCHAT. Names such assupport,info,adminorpostmasterare reserved. - Click Create address.
Send the address an email from your own mailbox to try it. The reply arrives in the same thread.
On the card you can also:
- switch Answer emails sent to this address off and on. While it is off, emails to the address are ignored;
- change the From name of the replies (the agent's name when empty);
- change the address name. The old address stops working at once, so update any forwarding that points at it;
- Remove email address. Its conversations stay on the Conversations tab.
An address name you rename or remove stays reserved for your account: customers may still reply to the old address, so no other intoCHAT account can ever take that name, and emails to it aren't answered by anyone. Any agent in your account can use the name again later.
Creating, changing and removing the address and the sending domain is for the account owner and admins (and custom roles with Manage on Integrations). Everyone in the account sees the address and the DNS records. See Team members and roles.
Forward your support address
Customers can email the agent's address directly. To have the agent answer the address your customers already use, such as support@yourcompany.com, forward that mailbox to the agent's address. The customer still writes to your address; the agent's reply goes to them in the same thread.
Gmail and Google Workspace
- In Gmail, open Settings (the gear), See all settings, then Forwarding and POP/IMAP.
- Click Add a forwarding address and enter the agent's address.
- Google sends a confirmation code to the agent's address. It appears on the Email card shortly after, with Google's confirmation link (reload the page if needed). Enter the code in Gmail, or open the link.
- Choose Forward a copy of incoming mail to the agent's address, and click Save Changes.
On Google Workspace, an administrator may need to allow automatic forwarding first (Admin console, Apps, Google Workspace, Gmail, End User Access).
Microsoft 365 and Outlook
- In Outlook on the web, open Settings, Mail, then Forwarding.
- Turn on Enable forwarding, enter the agent's address, and keep a copy of forwarded messages.
- Click Save.
For a shared mailbox, an administrator sets forwarding in the Microsoft 365 admin center (Teams & groups, Shared mailboxes, the mailbox, Email forwarding). Microsoft 365 blocks forwarding to addresses outside your organization by default; an administrator can allow it in Microsoft Defender, in the outbound spam filter policy (Automatic forwarding rules).
Send from your own domain
On Pro and up, replies can come from an address on your own domain, such as support@yourcompany.com, instead of the agent's address.
- In the Email card, under Send from your own domain, enter your domain, such as
yourcompany.com, and click Add domain. Public mailbox domains such asgmail.comcan't be used. - The card lists the DNS records to add at your DNS provider, each with a copy button:
- a TXT record for DKIM at
resend._domainkey.yourcompany.com, which signs your emails; - a TXT record for SPF and an MX record (with its priority) at
send.yourcompany.com, which handle bounces. They sit on thesendsubdomain, so your own mailboxes and MX records aren't affected.
- a TXT record for DKIM at
- Click Check again once the records are in place. DNS changes can take from a few minutes to a few hours. The card shows the domain's status and each record's.
- When the domain shows Verified, enter the part before the @ under Send from, such as
support, and click Use this address.
The card then says where replies come from. They always carry Reply-To set to the agent's address, so the customer's answer comes back to the agent even when the reply came from your domain. Click Use the agent's address to go back, or Remove domain to remove it. Domains are verified and sent through Resend, our email provider.
A domain can be added by one intoCHAT account. Several agents of the same account can use the same domain. An account holds a domain it added for 72 hours while it isn't verified; after that, if it still isn't verified, another account can add it, and the first account's unverified setup is removed (its card says so, and its replies come from the agent's address). A verified domain stays with its account.
What the agent answers
- It reads the customer's new words: the plain-text part of the email (or the HTML version as text), without the quoted earlier emails ("On … wrote:", Outlook's "From: / Sent:" block, lines starting with ">") and without a signature after the standard "-- " line or a "Sent from my iPhone" line, and without a closing sign-off at the end such as "Thanks, Anna" or "Kind regards" with a name (a message that is only "Thanks!" is kept). Forwarded emails inside the message are kept. On the first email of a thread, the subject goes along too. At most 8,000 characters are read.
- Attachments aren't read. The message in the transcript says how many there were, such as "(2 attachments not read)".
- It answers with your sources, instructions and guardrails, and with your API actions, procedures and order lookups, as in the widget. Forms, the lead form, booking times, rich replies, the cart, client actions, follow-up questions and source links aren't used, since an email can't show them. Buttons and product cards from your actions are written as links.
- The reply is a simple formatted email with a plain-text version, and a short last line saying it was answered by your agent's AI assistant, in the conversation's language (English, German, French, Italian or Spanish).
Some emails are never answered:
- automatic replies and out-of-office messages, mailing-list and bulk mail;
- bounces and delivery reports;
- emails from intoCHAT agent addresses or from your own sending address, and replies the agent itself sent, so two mailboxes can't answer each other in a loop;
- emails whose sender fails DMARC (the From domain publishes a DMARC policy and the email doesn't pass it), which usually means the From line was forged. They are saved on the Conversations tab for your team, but the agent doesn't reply, so nobody can make it email an address they don't own. Your team can still reply from the transcript.
Threads
Each email thread is one conversation. A reply in the thread (matched by its In-Reply-To and References headers) continues the same conversation, so the agent sees the thread so far. The agent's replies have the subject "Re: " and the original subject and stay in the customer's thread in Gmail, Outlook and Apple Mail.
A reply in the thread from a different address, or a new email without those headers, starts a new conversation. The person who wrote becomes the conversation's contact, with their name and address.
Hand-off and your team's replies
With hand-off by email on, the agent offers to pass the thread to your team when the customer asks for a person, with the address they wrote from as the one to reply to. The conversation enters the inbox, and the hand-off email reaches your team as usual.
Open an email conversation on the Conversations tab or in the Inbox. Below the transcript:
- the reply box sends your message to the customer by email, in the thread, from the agent's sending address with your first name and the From name, for example "Anna (Acme)". It is saved in the transcript with your name, and it pauses the AI. Each reply is sent once, even if Send is clicked twice;
- Pause AI stops the agent from answering the thread; new emails are saved for your team. Resume AI hands it back.
The AI stays silent on the thread for 72 hours after the last pause or reply from your team, or until you resume it or mark the conversation Solved in the inbox. Pausing, resuming and replying are for everyone who may handle conversations: the owner, admins and editors.
If your team is outside its shifts when a thread enters the inbox, the outside-hours auto-reply is sent in the thread too.
Limits
- One sender can send up to 20 emails per hour to one agent's address (and up to 60 per hour to all intoCHAT agents together), and one address takes up to 300 emails per hour. Emails over these limits are ignored: not saved and not answered.
- An email sent to several agent addresses at once is answered by each of them (up to three), side by side. A reply that takes longer than about 40 seconds to write isn't sent.
- A private agent doesn't answer email; the card says so after the first email.
- When a reply can't be written, the customer gets a short apology by email, at most once an hour. When a reply can't be sent, the card shows why.
- Email conversations show
channelasemailin the REST API, the MCP server, the Channel filter and Ask.
Privacy
- The sender's address and the name in their From line become a contact with the source "Email". An existing contact with the same address gets the conversation instead, and its details stay as they are. An email's sender can be forged, so this contact is never treated as a verified visitor, and an email that fails DMARC isn't added to any contact.
- The email's text is saved as the conversation's messages, like a chat. Attachments are neither downloaded nor stored.
- For threading, intoCHAT keeps each email's Message-ID and subject with the conversation. The Message-IDs of emails that weren't kept (automatic replies, bounces, emails over a limit) are deleted after 30 days.
- Incoming and outgoing emails pass through Resend, our email provider. Deleting a conversation deletes its messages and threading data.
For the platform owner: Resend and environment
This section is for whoever runs the intoCHAT server, not for agent owners.
Environment variables (names only; never put the values in code):
| Variable | What it is |
|---|---|
INBOUND_EMAIL_DOMAIN | The domain agent addresses live on, such as a subdomain you own (agents.yourdomain.com) |
RESEND_WEBHOOK_SECRET | The signing secret (whsec_…) of the receiving webhook in Resend |
RESEND_API_KEY | Fetches received emails, sends the replies and manages sending domains (also used for intoCHAT's own emails) |
CRON_SECRET | Signs the server's internal chat turns (falls back to NEXTAUTH_SECRET) |
Without the first three, the card says email isn't set up and the webhook answers 404.
In Resend:
- Add the inbound domain under Domains, verify it for sending, and enable receiving: add its MX record at your DNS provider with the lowest priority value on that (sub)domain. Use a subdomain without other mail.
- Under Webhooks, add a webhook to
https://<your domain>/api/integrations/email/inboundfor the event email.received, and copy its signing secret intoRESEND_WEBHOOK_SECRET.
Every webhook delivery is checked against its Svix signature (within five minutes of its timestamp) before anything is read. If the email can't be fetched from Resend, the webhook answers 503 so Resend delivers it again.