Skip to main content

Integration Types & When to Choose

An email connection is the account or provider that actually sends and/or receives mail on your behalf. The type you choose decides three things:

  • Can it send campaigns? (bulk newsletters)
  • Can it receive inbound email? (customers emailing you)
  • Can it reply to / send support email? (one-to-one conversational replies)

Pick the connection type by the job you need, not by brand preference.

Capability matrix​

Connection typeCampaignsReceive inboundReply / send support
SendSeven Managed (recommended, powered by SendGrid)YesNoYes (after domain verification)
SendGrid (your API key)YesNoYes (after domain verification)
Mailgun (your API key)YesNoYes (after domain verification)
GmailNoNo (send-only)Yes
SMTP / IMAPNoYesYes
Email Proxy (forwarding)NoYesOnly if an outbound provider is linked

A few consequences worth internalizing:

  • Delivery and tracking events are signature-checked. For SendGrid and Mailgun connections, SendSeven enables the provider's signed event notifications when it configures the event webhook (SendGrid Signed Event Webhook, Mailgun HTTP webhook signing key) and rejects every event it cannot verify. A BYOK API key therefore needs permission to manage event webhooks (SendGrid) or to read the account's webhook signing key (Mailgun private API key); otherwise delivered/open/click statistics stay empty.
  • Provider connections (Managed / SendGrid / Mailgun) cannot receive inbound email. They are built for sending. To run a support inbox where customers email you, use Email Proxy or SMTP / IMAP.
  • Gmail is send-only on SendSeven — it can send and reply, but it does not poll for inbound mail.
  • Provider connections become reply-capable only once a sending domain is verified. Until then they can be created but not used to send.

When to choose which​

Your goalRecommended connection
Send newsletters / marketing campaignsSendSeven Managed (simplest), or SendGrid / Mailgun if you already own an account and want to keep your own sending reputation
Run a support inbox (customers email in, you reply in a conversation)Email Proxy (forward your existing address to SendSeven) or SMTP / IMAP
Both campaigns and supportAdd two connections — a provider connection for campaigns and a receiving connection (Proxy or IMAP) for support
Send transactional/support email from a Gmail accountGmail (send/reply only)
Managed vs. bring-your-own (BYOK)

Managed and BYOK (SendGrid / Mailgun with your own API key) cost the same per email. BYOK is about owning your sending reputation and provider relationship, not a lower rate. There is no Amazon SES option for customer accounts.

Setting up a connection​

  1. Log in to SendSeven.
  2. Go to Settings > Email Configuration.
  3. Add a connection and choose a type from the list above.
  4. For a sending connection (Managed / SendGrid / Mailgun), verify your sending domain by adding the DNS records SendSeven generates — three CNAME records (mail, dkim1, dkim2). SPF and DMARC records remain yours to manage. Optional link-branding adds two more CNAMEs.
Inbound needs no domain verification

Receiving email (Proxy / IMAP) does not require pointing an MX record at SendSeven or verifying a domain. Domain verification is a sending-domain concern only.

SMTP / IMAP mailbox options​

An SMTP / IMAP connection has four per-mailbox options. Set them when you create the connection with POST /api/v1/email-integrations (integration_type: "smtp_imap") and change them later with PATCH /api/v1/email-integrations/{integration_id}. GET /api/v1/email-integrations/{integration_id} returns them. For other connection types they are ignored and returned as null.

FieldTypeDefault on createWhat it does
initial_sync_hoursinteger, 0 to 2160168 (7 days)How far back to import existing email on the first sync, in hours. The app offers 0 (from now only), 1, 3, 7, 14, 30, 60 and 90 days. Imported history does not trigger auto-replies, bots, flows or notifications. Only takes effect before the first sync; a later change is ignored and never starts a new import. A value outside 0 to 2160 returns 422.
imap_mark_as_readbooleantrueMark fetched emails as read on your mail server. With false, SendSeven reads them without changing their read state.
imap_sync_sent_folderbooleanfalseAlso import emails you sent from another mail client (your Sent folder) into the matching conversation. They are never sent again and never billed. Turning it on later imports only mail sent from that moment on.
imap_delete_on_originbooleanfalseWhen a conversation or a single email is deleted in SendSeven, also delete the original email on your mail server. See Deleting mail on your server.

The response also includes the read-only imap_sent_folder_name: the Sent folder SendSeven found on your server, or null until it has been found. Omitting a field on PATCH leaves it unchanged.

curl -X PATCH "https://api.sendseven.com/api/v1/email-integrations/int_123" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"imap_mark_as_read": false, "imap_sync_sent_folder": true}'

Creating and updating connections needs the email_integrations:create and email_integrations:update scopes; reading needs email_integrations:read.

Deleting mail on your server​

With imap_delete_on_origin on, these deletes also remove the original email from your mail server. This applies whether they come from the app or from the API (including API tokens):

  • DELETE /api/v1/conversations/{conversation_id} (see Delete a Conversation) for every email in the conversation
  • DELETE /api/v1/email-integrations/email-messages/{email_message_id} for a single email (needs messages:delete; see Delete a single email)

How it behaves:

  • The email is moved to the Trash folder on your server. If the server has no Trash folder, the email is only flagged as deleted, and your mail client decides when to purge it.
  • It runs asynchronously, after the API call has returned. A failure on the mail server never blocks or undoes the delete in SendSeven.
  • It is never triggered by data-retention clean-up, GDPR or contact deletion, deleting a workspace or account, or removing the connection.
  • Both received emails and emails imported from your Sent folder (with imap_sync_sent_folder) are deleted: a sent email is moved to Trash from your server's Sent folder.
  • Emails sent by SendSeven itself are never deleted on your server.
  • An email is only deleted when SendSeven can identify it on the server unambiguously; otherwise it is left untouched.

Manual sync during the first import​

POST /api/v1/email-integrations/{integration_id}/sync fetches new mail on demand. While the first import of an SMTP / IMAP mailbox (the initial_sync_hours window) is still running, it returns HTTP 200 without fetching anything:

{
"integration_id": "int_123",
"status": "import_in_progress",
"message": "The first import of this mailbox is still running. New emails will appear automatically when it finishes.",
"emails_found": 0
}

This is not an error and there is nothing to retry: new mail appears automatically once the import finishes. Other status values are completed, queued and error.

Switching a connection off​

PATCH /api/v1/email-integrations/{integration_id} with "is_active": false pauses a connection without deleting it. Its credentials are kept. When it is switched off:

  • Mailboxes that send only through this connection are deactivated and lose their default flag.
  • Email settings that pointed at it are cleared: the support connection (support_integration_id), the default support and campaign mailboxes, the double opt-in mailbox, and the support From address when it belonged to this connection. No new default is picked.
  • It is no longer offered as a sender. A send that names it returns 422 SENDER_INACTIVE (see Sending email).

Switching it back on ("is_active": true) re-activates the mailboxes that were deactivated when it was switched off. Mailboxes you deactivated yourself stay off. Defaults are not restored, so set them again under PUT /api/v1/tenant-email-settings.

GET /api/v1/tenant-email-settings returns support_integration_id: null while the stored connection is switched off or deleted. If a client sends that stale id back unchanged on PUT, it is cleared instead of rejected.

Next steps​