Files
upstream-twenty/packages/twenty-docs/user-guide/calendar-emails/how-tos/forward-a-shared-inbox-from-microsoft-365.mdx
upstream-mirror e7da97194a
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 3s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

144 lines
5.1 KiB
Plaintext

---
title: Forward a Shared Inbox from Microsoft 365
description: Send mail from a Microsoft 365 shared mailbox into a Twenty email channel.
---
An email channel gives your workspace a shared address, like `contact@yourcompany.com`. Mail sent to that address has to reach Twenty somehow. You do that by forwarding the mailbox to the private address Twenty gives you.
Setup has two halves: create the channel in Twenty, then point Microsoft at it.
## Part 1: Create the channel in Twenty
1. Go to **Settings → Communication**.
2. Click **Add email channel**.
<img
src="/images/user-guide/emails/inbound-channels/03-twenty-add-email-channel.png"
style={{ width: '100%' }}
/>
3. In **Source Email Address**, type the shared address you want to receive mail at, for example `contact@yourcompany.com`.
4. In **Display Name**, type the name recipients see, for example `Twenty Contact`.
5. Click **Save**.
<img
src="/images/user-guide/emails/inbound-channels/04-twenty-new-channel-form.png"
style={{ width: '100%' }}
/>
6. Twenty now shows a **Forwarding address**. It looks like `ch_2cd282d193b5@inbound.twenty.com`. Click **Copy**.
<img
src="/images/user-guide/emails/inbound-channels/05-twenty-forwarding-address.png"
style={{ width: '100%' }}
/>
<Note>
Each channel gets its own forwarding address. Never point two mailboxes at the
same one, or their mail will land in the same place.
</Note>
## Part 2: Create the shared mailbox
Skip this part if `contact@yourcompany.com` already exists in Microsoft 365.
1. Open the [Exchange admin center](https://admin.cloud.microsoft/exchange).
2. Go to **Recipients → Mailboxes**.
3. Click **Add a shared mailbox**.
<img
src="/images/user-guide/emails/inbound-channels/01-exchange-add-shared-mailbox.png"
style={{ width: '100%' }}
/>
4. Fill in the **Display name**.
5. Fill in the **Email address** and pick your domain.
6. Click **Create**. It takes a minute to appear in the list.
<img
src="/images/user-guide/emails/inbound-channels/02-exchange-shared-mailbox-form.png"
style={{ width: '100%' }}
/>
## Part 3: Forward the mailbox to Twenty
1. In **Recipients → Mailboxes**, click the mailbox to open it.
2. Click **Email forwarding**.
<img
src="/images/user-guide/emails/inbound-channels/06-exchange-email-forwarding-link.png"
style={{ width: '100%' }}
/>
3. Turn **Forward all emails sent to this mailbox** on.
4. Choose **Forward to an external email address** and paste the forwarding address you copied from Twenty.
5. Tick **Deliver message to both forwarding address and mailbox** so your team keeps a copy in Outlook.
6. Click **Save**.
<img
src="/images/user-guide/emails/inbound-channels/07-exchange-manage-forwarding.png"
style={{ width: '100%' }}
/>
<img
src="/images/user-guide/emails/inbound-channels/08-exchange-forwarding-saved.png"
style={{ width: '100%' }}
/>
Microsoft says changes can take up to 5 minutes to apply.
## Part 4: Allow forwarding to external addresses
This step is easy to miss. Without it, no mail reaches Twenty.
By default, Microsoft 365 blocks automatic forwarding to addresses outside your organization. The mail is rejected and the original sender receives a bounce that reads:
```
5.7.520 Access denied, Your organization does not allow external forwarding.
```
To allow it:
1. Open the [Microsoft Defender portal](https://security.microsoft.com).
2. Go to **Email & collaboration → Policies & rules → Threat policies → Anti-spam**.
3. Open your **Anti-spam outbound policy**, or create a new one that applies only to your shared mailboxes.
4. Click **Edit protection settings**.
5. Set **Automatic forwarding rules** to **On - Forwarding is enabled**.
6. Save.
<Warning>
Turning this on for your whole tenant lets any compromised account forward
mail out. Create a policy scoped to only the shared mailboxes you are
connecting, rather than editing the default one.
</Warning>
## Part 5: Test it
Send an email from an outside address (a personal Gmail works) to `contact@yourcompany.com`. It should appear in Twenty within a minute or two.
## Troubleshooting
<Accordion title="Senders get a 5.7.520 bounce">
External forwarding is still blocked. Repeat Part 4 and confirm the policy you
edited applies to this mailbox.
</Accordion>
<Accordion title="Nothing arrives, and there is no bounce either">
Compare the forwarding address in Exchange character for character with the
one in Twenty. A single wrong character means the mail is delivered nowhere
useful and silently dropped.
</Accordion>
<Accordion title="Mail no longer appears in Outlook">
**Deliver message to both forwarding address and mailbox** was left unticked.
Tick it and save.
</Accordion>
<Accordion title="The channel receives mail but cannot send">
Receiving and sending are separate. Sending requires your domain to be
verified under the channel's **Sending domain** section, which means adding
the DNS records Twenty lists there.
</Accordion>
Using a different provider? See [Google Workspace](/user-guide/calendar-emails/how-tos/forward-a-shared-inbox-from-google-workspace) or [any other mail provider](/user-guide/calendar-emails/how-tos/forward-a-shared-inbox-from-any-mail-provider).