# get_site_email_settings

Source: https://modulify.ai/docs/mcp/emails/get-site-email-settings

Reads how a site sends email, from its address, usage and limits to its own email domains and where mail sent to it is forwarded.

- Title: Read the email settings of a site
- Scope: `config:read`
- Access: Read only

`enabled` says whether sending is on, which it is by default for every site, and `available` whether email sending is available on the platform at all, with `availabilityMessage` when it is not. When the site's own `EMAIL_URL` or `EMAIL_PRIVATE_KEY` secret keeps its email off, `secretConflict` names that secret and `secretConflictMessage` says to rename or delete it in Secrets, because Modulify never writes over it.

`fromAddress` is the full address the site sends from right now, `fromLocal` the part in front of its `@` and `effectiveDomain` the domain after it. `sendingDomain` is the site's built-in sending domain, and `selectedDomain` the email domain chosen to send from, null while none is chosen. `fromFallback` is true while that chosen domain is not verified, so email goes out from the built-in address instead, and `fromPaused` says whether that is because the email domains are [paused](https://modulify.ai/docs/automations/emails#when-your-plan-ends). The part in front of the `@` is changed with `update_site_email_settings`, and the domain after it with `set_site_email_sending_domain`.

`repliesForwarded` says whether a reply to the sending address reaches Modulify's forwarding, which passes it to the site's confirmed forwarding addresses only while `forwarding.enabled` is true. It is false when the site sends from its own domain without receiving on it, or before that domain's MX record points here, so replies reach that domain's own mailboxes. `repliesDiscarded` says whether such a reply is discarded instead, because receiving is off for the domain the site sends from while its MX record already points here. Turning on receiving, setting a reply-to or pointing the MX record back fixes that.

`fromName` is the sender name shown beside the address in an inbox, and `fromNameFollowsSiteName` says whether it is the site's own name, followed when the site is renamed, rather than a custom one. `replyTo` is the reply-to address when one is set. `trackEngagement` says whether open and click tracking is on for the site, which it is by default, and `trackingAvailable` whether tracking is set up on the platform at all.

`disabledReason`, `disabledSource` and `disabledAt` say why, by whom and when sending was turned off, and `needsPublish` says whether the live site still needs a publish before its email works. When sending was turned off on its own because too many of the site's messages bounced or got marked as spam, `disabledSource` reads `reputation`, and only you can turn it back on, from the **Emails** tab.

`usage` is this calendar month's usage with how many sends are left, the same usage `get_site_email_usage` reads on its own, `limits` holds the per message limits and `apiUrl` is the API URL the site's code sends to. Every recipient counts as one send, so one message to five people uses five, and a test email is free and never counts. A single message goes to at most 50 recipients, and at most 60 sends go out a minute.

A site includes 50 sends a calendar month on Free, 10,000 on Starter, 30,000 on Pro and 50,000 on Enterprise. Past that a paid plan keeps sending, every further block of 2,000 sends costs 8 credits on Starter and Enterprise and 4 on Pro, charged automatically the moment a send crosses the line, and sending pauses once there are no credits left, while Free stops at its limit. `usage.paused` is set while sending is paused, with its `reason` (`no-credits` or `plan-limit`), `since` and `refused`, the number of sends refused so far, and it clears on its own with the next send that goes through, once credits are added or the month resets.

## Email domains

`emailDomains` describes the site's own email domains. `items` lists each one with its `id`, the `domain`, its `status` (`pending` until it is verified, `verified`, or `failing` when it stopped working after it was verified), its `dkimStatus`, whether it is the domain chosen to send from (`selected`), whether receiving is turned on for it (`receiveEnabled`), and whether receiving is on and the domain is verified, so mail that reaches Modulify for it is forwarded (`receiving`).

Each item also says whether its MX record points here (`mxValid`), whether another site holds it (`heldElsewhere`, with that site's name in `heldBy` when it is in the same workspace), whether every required record was found (`recordsFound`), and whether this site's ownership record was found at the last check (`ownershipFound`). `needsOwnershipRecord` is true while this site does not hold the domain and the record is not found, and again when the domain has been `failing` for over 24 hours while its ownership record is not found. The tool tells the client to ask you to add that record only when `ownershipFound` is false.

`canRestart` says whether the domain's verification can be restarted, and `paused` whether the domain is paused, which means it neither sends nor receives until the workspace is on a paid plan again and cannot be chosen to send from. `records` lists the DNS records to add at the domain's DNS host, each with its `purpose`, `type`, `name`, `value`, `priority`, whether it is `required` and its `status`.

Next to the list, `paid` says whether the workspace can add an email domain, which needs a paid plan, and `paused` whether the site's email domains are paused because the workspace has no paid plan any more. `limit` is how many a site can have, 3. `canManage` says whether you may change them, which needs the **Manage domains** permission, and `canManageReceiving` whether you may turn receiving on, which needs the **Delete projects** permission.

`recommended` is a domain worth suggesting because the site already uses it, taken from the site's primary custom domain without `www.`, or from the first custom domain added while none is connected, and `builtInDomain` is the built-in sending domain. `add_site_email_domain`, `check_site_email_domain`, `remove_site_email_domain`, `set_site_email_sending_domain`, `set_site_email_domain_receiving` and `restart_site_email_domain_verification` work on them.

## Forwarding

`forwarding` says what happens to mail sent to the site. While `forwarding.enabled` is true, which it is by default, mail to any address at `sendingDomain`, and at each verified email domain with receiving on, replies to a sending address on those domains included, is forwarded to the site's confirmed forwarding addresses and never to anyone else. Forwarding keeps running while sending is off. A forward comes from a Modulify forwarding address, one for each original sender, and its reply-to is the original email's reply-to, or the original sender when it had none.

`forwarding.available` is false when forwarding is not set up on the platform. `forwarding.recipients` lists the site's forwarding addresses, each with its `id`, its `email`, with most of it hidden like `b***@gmail.com` unless you have the **Delete projects** permission, and its `status`: `verified` once confirmed, or `pending` while the confirmation link sent to it has not been opened, and nothing is forwarded to it until then. Each also carries `addedAt`, `verifiedAt`, `sentAt`, when its latest confirmation link went out (null while none could be sent), and `expiresAt`, when that link stops working for a pending address. `forwarding.limit` is how many a site can have, 5.

Every site starts with the workspace owner's account email on the list, confirmed at once when the owner's sign-in confirms that address, through a verified email or a Google or GitHub sign-in, and otherwise `pending` with no link sent until `resend_site_email_forward_address` sends one. When the site moves to another workspace, the list starts over with that workspace owner's account email, and when its workspace gets a new owner, the new owner's account email takes the previous owner's place. An address you add gets a confirmation link, except your own account email when your sign-in confirms it and an address at one of the site's own domains, which count as confirmed at once. An address whose forwards bounce for good, or that marks one as spam, is taken off the list on its own, and while no address is confirmed, mail sent to the site is dropped.

`forwarding.address` is the built-in pattern of addresses that forward, `*@` followed by `sendingDomain`, like `*@prj-xxxxxxxxxxxxxx.modulify.website`. `forwarding.addresses` lists every pattern that forwards, the built-in one first, then one for each email domain whose `receiving` is true, like `*@example.com`. `set_site_email_forwarding` turns forwarding on or off, and `add_site_email_forward_address`, `resend_site_email_forward_address` and `remove_site_email_forward_address` change the forwarding addresses, each with the **Delete projects** permission, like **Forwarding** on the **Settings** tab of the **Emails** tab. `set_site_email_domain_receiving` only turns receiving on or off for one email domain. See [Forwarding addresses](https://modulify.ai/docs/automations/emails#forwarding-addresses).

## Inputs

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `projectId` | string | Yes | The site id. |