How to Give Your OpenAI Dot Its Own Email Address

OpenAI launched dots on October 1, 2026: always-on agents inside ChatGPT that take on ongoing work and keep making progress between conversations. A dot can chase an unsent invoice, collect quotes, and run a morning review of your calendar. What it cannot do at launch is have an email address of its own. This guide gives it one in about two minutes, signed in with OAuth, no key to paste. Then it goes one step further than an inbox: it makes a new email wake the dot up, so "when they reply, do X" actually happens.

The short version: in ChatGPT, add https://api.deadsimple.email/mcp as a custom MCP server with OAuth, sign in to Dead Simple and click Allow, then tell your dot to get its own inbox. The condensed reference lives on the dots integration page.

What a Dot Is

A dot is a long-running agent with its own cloud computer and browser. You give it a goal, connect the apps it needs through OpenAI's plugin ecosystem (around 4,000 at launch), and decide what it may do on its own. You can talk to the same dot from ChatGPT, a Slack thread or Teams, and it carries context across all three. A dot is included with ChatGPT Pro and Business Premium.

Three controls matter for email. Custom Rules assign each action one of four behaviours: take action without asking, take action if pre-approved, ask before taking action, or hand off to you. Auto-review checks actions such as sending an email against your instructions and rules before they run, and cannot be turned off. The Activity View shows what the dot did in the background, with a Scheduled tab for recurring work. Hold on to those; they come back in the guardrails section.

Why Not Just Connect Your Gmail

Connecting your personal email is the default, and for reading your own mail it is fine. For the work that needs an agent to have an address, it is the wrong shape.

Everything goes out as you. Three quote requests to printers, sent from your personal account, are you asking. The replies, the follow-ups and the newsletter signups that come with them are now your correspondence and your sender reputation.

The blast radius is your whole mailbox. A dot that needs to chase one supplier can read every message you have ever received. Least privilege says give it a mailbox with nothing in it but its own work.

The thread is stuck with you. Once a supplier knows the dot by your address, you cannot hand that relationship to a colleague or another agent without the supplier noticing.

A Dead Simple inbox is the other kind of address. The dot creates it with one call, owns it, and works from it. Anything that goes wrong is scoped to that address. Keep your personal email connected for reading your own mail if you like; the two are not in conflict.

Two-Minute Setup

Step 1: Add a custom MCP server

In ChatGPT, open Plugins at chatgpt.com/plugins, select + and choose Add custom MCP server. Name it Dead Simple Email, choose the MCP server URL connection, enter https://api.deadsimple.email/mcp, and pick OAuth. Accept the notice about custom servers and select Create as a plugin.

Step 2: Sign in and approve

ChatGPT sends you to a Dead Simple sign-in. Log in, or create a free account there (no card), and click Allow. That consent mints a token scoped to your account, and ChatGPT stores it. Nothing secret goes into the chat, and the dot never sees a credential.

Step 3: Ask for an address

to your dot
Get your own Dead Simple Email inbox called "dot", then send me a
test email at you@example.com so I have your address.

The dot lists its inboxes, finds none, creates one and sends the test. With auto-review on you see the email before it leaves. Reply to it from your phone, then ask the dot what you said; it reads the thread back. On the shared domain the address gets a short suffix, something like dot_ab12@deadsimplemail.com. Connect a custom domain and it can be exactly dot@yourcompany.com.

Make New Mail Wake the Dot

An inbox the dot has to remember to check is half a feature. A supplier replies at 4pm, and the dot finds out at its next scheduled run, or when you happen to ask. Dots solve this for plugins with MCP Events: a plugin's MCP server advertises the events it can emit, ChatGPT subscribes on the dot's behalf, and an event starts the dot's work the moment it happens.

Dead Simple's MCP server speaks MCP 2026-07-28 and advertises two events:

  • message.received, with optional inbox_id, from_contains and subject_contains filters. The dot gets inbox_id, message_id, thread_id, from, to, subject, snippet and received_at, enough to decide whether to open the full message.
  • message.bounced, with an optional inbox_id, so a dead address surfaces immediately instead of as a reply that never comes.

You never write any of this by hand. You say "Whenever a printer replies, add their quote to the table and tell me when all three are in", and ChatGPT turns it into a subscription. On the wire, it calls our server like this:

ChatGPT → api.deadsimple.email/mcp
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "events/subscribe",
  "params": {
    "name": "message.received",
    "arguments": {
      "inbox_id": "18ba669f-4366-4deb-aa8c-983cf5a25925",
      "subject_contains": "quote"
    },
    "delivery": {
      "mode": "webhook",
      "url": "https://<chatgpt callback>",
      "secret": "whsec_<signing key>"
    },
    "cursor": null
  }
}

We check the subscription against the account ChatGPT signed in as (you can only watch inboxes you own), verify the callback with a one-time challenge, and answer with a subscription id and a refreshBefore time that ChatGPT renews automatically. The same identity always maps to the same subscription, so a retried subscribe never doubles your deliveries. When a matching email lands, we POST this to the callback, signed with Standard Webhooks HMAC (webhook-id, webhook-timestamp, webhook-signature):

Dead Simple → ChatGPT callback
{
  "eventId": "evt_6f1c...",
  "name": "message.received",
  "timestamp": "2026-10-07T16:05:12Z",
  "data": {
    "inbox_id": "18ba669f-4366-4deb-aa8c-983cf5a25925",
    "message_id": "b0b5febb-bcaf-478b-9efb-38b2435987e0",
    "thread_id": "9d2e...",
    "from": "orders@printshop.example",
    "to": ["dot_ab12@deadsimplemail.com"],
    "subject": "Re: Quote for 500 A5 flyers",
    "snippet": "Happy to help. 500 double-sided A5 on 170gsm comes to...",
    "received_at": "2026-10-07T16:05:11Z"
  },
  "cursor": null
}

The dot wakes in the conversation where you set it up, reads the full thread with read_thread if the snippet is not enough, and carries on. Retries keep the same eventId, so a slow network never makes the dot act twice. The filters run on our side, so a newsletter landing in the same inbox does not wake the dot for nothing.

If you already run your own agents, none of this is new: it is the same event stream our webhooks have always carried, in the envelope ChatGPT expects.

Four Things to Try First

Signup concierge. "Sign up for the free trial of that analytics tool with your own address and finish the email verification." The dot fills the form in its browser, then calls get_verification_code or get_verification_link, which wait for the email and hand back the code or link already extracted. Your personal inbox never sees the signup.

Quote collector. "Email three local printers for a quote on 500 A5 flyers, double sided, by Friday. Put the replies in a table." Three sends from one inbox, one message.received subscription, and each reply updates the table as it arrives. Follow-up questions get answered in-thread with reply_to_message.

Triage desk. Give the dot's address to people, or forward mail to it. "File what arrives, summarise it, draft replies, never send without asking." With sending set to ask first, you approve each reply from wherever you talk to the dot, including Slack and Teams. PDF and document attachments arrive with their text extracted server-side.

Bounce watcher. "If anything you send bounces, find the right address and try again, but check with me first." One message.bounced subscription and the dot hears about a failed delivery when the receiving server rejects it.

Guardrails to Set Before It Runs Unattended

Dots review their own actions; that is a good control, and it lives inside OpenAI's stack. Put a second one on the inbox, where it holds regardless of what the model decides.

  • In the dot: set sending email to Ask before taking action in Custom Rules until you have watched it work for a week.
  • On the inbox: turn on require_draft_approval so outgoing mail waits in the Dead Simple dashboard for your click. Add an allow-list of recipient domains and an hourly send cap while you are there. All three are enforced by our API, not by asking the agent nicely.
  • On inbound: every email is scored for prompt injection before the dot reads it, and the score travels with the message. Tell the dot to ignore instructions inside high-risk mail. Anyone can email an agent, and some of them will be writing to the model rather than to you.

What About OpenAI's Own Email for Dots?

A teardown of the ChatGPT desktop app suggests OpenAI is building native addresses for dots, with permanent handles. If that ships and covers what you need, use it. A Dead Simple inbox is a different trade: it can live on your own domain with your own DKIM, it works identically from Claude, Cursor, Codex, a script or any other agent, and it comes with the REST API, webhooks, threads, attachments, calendar invites and injection scoring a production agent eventually needs. If the work outgrows ChatGPT, the address goes with it.

Troubleshooting

The dot says it has no email tools. Check the plugin is enabled for the dot, not just for your chats, and that you finished the Allow step. If you closed the consent tab, remove and re-add the server.

The dot made a second inbox. Tell it which address is its own; it lists inboxes before creating one, but a brand-new conversation sometimes forgets. Delete the spare from the dashboard.

A reply did not wake the dot. Ask the dot what it is subscribed to and check the filters. A from_contains of @acme.com will not match a reply from acme.co.uk.

A 402 error. The account hit a plan limit. Free is 5 inboxes and 5,000 emails a month; the usage page shows which.

Frequently Asked Questions

Can an OpenAI dot have its own email address?

Not natively at launch. OpenAI's guidance is to connect your personal email for the dot to use. Adding Dead Simple as a custom MCP server lets the dot create and own an inbox, send from it, and receive replies and verification codes in it.

How does a new email wake a dot?

Through MCP Events. Our MCP server advertises message.received. When you tell the dot what to do with new mail, ChatGPT calls events/subscribe with a callback URL and signing secret, and we post each matching email to that callback, signed with Standard Webhooks HMAC.

Do I need to paste an API key into ChatGPT?

No. The MCP server supports OAuth 2.1, so ChatGPT opens a Dead Simple consent screen and holds a scoped token. No secret appears in the chat.

What does it cost?

Dead Simple's free tier is 5 inboxes and 5,000 emails a month with no card; paid plans start at $5 a month. Dots come with ChatGPT Pro and Business Premium.

The Bottom Line

A dot is built to keep working while you are not watching, and email is where most of the world still answers. Give it an address of its own instead of yours, let replies wake it instead of hoping it checks, and put the approval step somewhere the model cannot talk its way past. Two minutes, one Allow, and the dot can get on with the printers.

Give your dot an inbox it owns

One custom MCP server, one Allow, two minutes. Five inboxes free, no card.