Files
upstream-twenty/packages/twenty-docs/user-guide/calendar-emails/overview.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 2s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

136 lines
6.8 KiB
Plaintext

---
title: Calendar & Emails
description: Connect your email and calendar accounts to Twenty.
---
## Connection Options
### Google Account (Gmail & Google Calendar)
1. Go to **Settings → Accounts**
2. Click **Add account**
3. Select **Continue with Google**
4. Authorize Twenty to access your Gmail and Google Calendar
5. Configure email sync settings (visibility, auto-creation) → click **Next**
6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
7. Your emails and calendar events will start syncing automatically
### Microsoft Account (Outlook & Microsoft Calendar)
1. Go to **Settings → Accounts**
2. Click **Add account**
3. Select **Continue with Microsoft**
4. Authorize Twenty to access your Outlook and Microsoft Calendar
5. Configure email sync settings (visibility, auto-creation) → click **Next**
6. Configure calendar sync settings (visibility, auto-creation) → click **Add Account**
7. Your emails and calendar events will start syncing automatically
### IMAP/SMTP/CalDAV Setup (Other Providers)
For other email and calendar providers:
1. Go to **Settings → Accounts**
2. Configure IMAP settings to sync incoming email and SMTP settings to send email
3. Configure CalDAV settings for calendar
4. Test the connection
<Note>
**Self-hosting on an internal network**: By default, Twenty refuses outbound connections to private/internal IP addresses (SSRF protection). If your mail, calendar or identity provider server runs on a local/private IP (e.g. an on-premise server on a LAN), connections to it will be blocked. To allow them, list the hostnames or IP literals in the following environment variable on the server:
```
OUTBOUND_HTTP_ALLOWED_INTERNAL_HOSTS=mail.internal,keycloak,192.168.1.10
```
Entries are matched on the hostname only (`keycloak`, not `http://keycloak:8080/realms/…`), without wildcards. Every other outbound request (HTTP workflow actions, webhooks, SSO and IMAP/SMTP/CalDAV connections) stays protected, and even an allowed host can never reach the cloud metadata address range. Set it to `*` to disable the protection entirely, which is only appropriate on trusted, isolated networks. If you previously set `OUTBOUND_HTTP_SAFE_MODE_ENABLED=false`, remove it: while it is set, the protection stays fully off and the list is ignored.
</Note>
### Multiple Mailboxes
- **Unlimited Accounts**: Connect multiple email accounts per user
- **Account Management**: Switch between different mailboxes
- **Sync Settings**: Configure different settings per mailbox
<Warning>
Only true mailboxes can be connected (e.g., support@domain.com with its own inbox). Email aliases that forward to another mailbox cannot be connected to Twenty.
</Warning>
## Email Configuration
### Message Visibility
Choose different levels of visibility for your emails:
- **Metadata Only**: Share only basic information (sender, recipient, date, time)
- **Subject and Metadata**: Share subject line along with metadata
- **All Email Content**: Share entire email content including attachments
### Contact Auto-Creation
- **Deactivated**: No automatic contact creation
- **For messages sent and received**: Create contacts for all external email interactions
- **For messages sent only**: Create contacts only for emails you send
- **Note**: By default, internal emails (where all participants share your domain) are not synced to protect privacy
<Note>When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.</Note>
<Note>
**Syncing internal emails**: The "internal emails not synced" behavior is the default, but it can be turned off. The toggle lives in advanced settings:
1. Open **Settings** and enable the **Advanced** toggle at the bottom of the settings page
2. Go to **General → Security**
3. Enable the **Sync Internal Emails** toggle to include emails where all participants share the same domain
This is a workspace-wide setting (useful for universities or shared-domain organizations).
</Note>
### Control which emails get synced with Message Folder Selection
Control which email folders sync with Twenty:
1. Go to **Settings → Accounts** and select your connected email account
2. Choose which folders to sync:
- **Inbox**: Primary incoming emails
- **Sent**: Outgoing emails you've sent
- **Custom Folders**: Any specific folders you want to include
- **Exclude Folders**: Skip folders like Spam, Trash, or personal folders
This gives you precise control over which emails appear in your CRM without syncing everything.
**What Gets Synced:**
- **External Emails**: All emails with external contacts from selected folders
- **Internal Emails**: Not synced by default (same domain emails remain private). Enable the **Advanced** toggle at the bottom of **Settings**, then turn on **Sync Internal Emails** under **General → Security** to include them workspace-wide.
- **Attachments**: Coming in H1 2026
**Note**: We don't provide a CC email address for selective syncing. Instead, use the Message Folder feature above to achieve the same level of control over which emails sync with Twenty.
## Calendar Configuration
### Event Visibility
Choose what will be visible to other users in your workspace:
- **Everything**: The whole event's details will be shared with your team
- **Metadata**: Only date and participants will be shared with your team
### Contact Auto-Creation for Meetings
- **Yes**: Automatically create contacts for meeting participants not in your CRM
- **No**: Only link meetings to existing contacts
<Note>When enabled, contacts are automatically linked to their Company records based on their email domain. If the company doesn't exist yet, Twenty creates it for you.</Note>
### Control which events get synced
- **Meeting Import**: Automatically import calendar events
- **Contact Linking**: Link meetings to People and Company records
**What Gets Synced:**
- **Meetings**: Calendar events with external participants
- **Contact Linking**: Events automatically linked to CRM records
- **Team Events**: Shared calendar visibility
## Sync Frequency
**Updates every 5 minutes**: Both email and calendar data sync automatically every 5 minutes after the initial import.
<Note>
**Initial sync timing**: Calendar sync completes quickly (usually within minutes), while email sync takes longer for large mailboxes. Twenty imports emails at approximately **400 messages per minute** (limited by Gmail API rate limiting), so a mailbox with 10,000 emails takes about 25 minutes. Don't worry if you see contacts from calendar events appearing before your email contacts; this is normal behavior.
</Note>
## Next Steps
- [Mailbox capabilities](/user-guide/calendar-emails/capabilities/mailbox)
- [Troubleshoot missing emails](/user-guide/calendar-emails/how-tos/i-dont-see-emails-on-records)