Inbound Email
Automatically create cases from incoming customer emails using SendGrid Inbound Parse — setup, email flow, reply tracking, and troubleshooting.
Overview
Omnium can automatically create Cases from incoming customer emails. When a customer sends an email to a designated support address (e.g., support@incoming.yourcompany.com), Omnium receives the email via SendGrid's Inbound Parse webhook, identifies the tenant, and creates a new Case with the email content as the first note.
Replies to case notifications are automatically threaded back to the original case as new comments, enabling full email-based conversations between your support team and customers.
Prerequisites
Before setting up inbound email case creation, ensure:
- You have admin access to your SendGrid account
- You have admin access to Omnium Tenant Settings
- You have access to your DNS provider to create MX records
- The Cases module is enabled for your tenant (requires the "cases" access claim)
- SendGrid is configured as your email provider in Omnium (Email Client Settings → Type: Sendgrid)
Part 1: SendGrid Configuration
Step 1: Set Up MX Records
For SendGrid to receive emails on your behalf, you need to point a subdomain's mail exchange (MX) records to SendGrid.
-
Log in to your DNS provider (e.g., Cloudflare, Azure DNS, GoDaddy)
-
Create a new MX record for the subdomain you want to use for inbound email:
Field Value Type MX Host/Name incoming.yourcompany.comValue mx.sendgrid.netPriority 10 TTL 3600 (or default) -
Wait for DNS propagation (can take up to 48 hours, but typically 15–30 minutes)
-
Verify the MX record is active:
You should see
mx.sendgrid.netin the response.
Use a subdomain (e.g., incoming.yourcompany.com) rather than your root domain. This prevents SendGrid from intercepting all email to your domain.
If you have multiple environments (e.g., dev, test, production), create separate subdomains for each:
incomingdev.yourcompany.com→ Developmentincomingtest.yourcompany.com→ Testincoming.yourcompany.com→ Production
Step 2: Configure SendGrid Inbound Parse
-
Log in to SendGrid
-
Navigate to Settings → Inbound Parse
-
Click Add Host & URL
-
Configure the following:
Field Value Receiving Domain incoming.yourcompany.com(must match your MX record)Destination URL https://api.omnium.no/api/InboundParse/rawSpam Check Unchecked (optional) Send Raw Checked (required) -
Click Add
The Destination URL must use HTTPS. Omnium requires HTTPS for all API endpoints. SendGrid does not follow HTTP-to-HTTPS redirects.
Send Raw must be checked. The /raw endpoint expects the full MIME message in raw format. Without this, the email content will not be parsed correctly.
Part 2: Omnium Configuration
Step 3: Configure Inbound Email Domains
Omnium needs to know which email domains belong to your tenant so it can route incoming emails correctly.
The InBoundEmailDomains setting is currently not available in the Email Client Settings UI. It must be configured via the JSON editor in Tenant Settings.
- Navigate to Administration → Tenant Settings
- Open the JSON editor (click the JSON/code view toggle)
- Locate the
EmailClientSettingssection - Add the
InBoundEmailDomainsarray:
Key fields:
| Field | Purpose | Example |
|---|---|---|
InBoundEmailAddress | Reply-to address included in outbound case notifications | support@incoming.yourcompany.com |
InBoundEmailDomains | Domains that route inbound emails to this tenant | ["incoming.yourcompany.com"] |
StandardEmailAddress | Sender address for outbound emails | noreply@yourcompany.com |
InBoundEmailDomains can also be configured at the Market or Market Group level if you have different support email addresses per market. The domain matching follows this priority: Market → Market Group → Tenant.
Step 4: Configure the Inbound Email Address
The Inbound Email Address is the reply-to address that Omnium includes in outbound email notifications. This allows customers to reply directly to case notifications.
- Navigate to Administration → Tenant Settings
- Go to Notifications → Email Client Settings
- Set the Inbound Email Address field (e.g.,
support@incoming.yourcompany.com) - Click Save
Step 5: Enable Cases and Configure Case Settings
- Navigate to Administration → Tenant Settings
- Go to Customer Settings → Case Settings
- Toggle Enabled to on
- Configure statuses, priorities, and default values as described in Configuration
Step 6: Configure Inbound Email From Name (Optional)
You can configure a display name for outbound case emails at the Market or Market Group level:
- Navigate to Administration → Tenant Settings
- Go to the relevant Market or Market Group settings
- In Email Client Settings, set the Inbound Email From Name field
- Click Save
How It Works
New Case Creation
- A customer sends an email to
support@incoming.yourcompany.com - SendGrid receives the email and POSTs it to the Omnium webhook
- Omnium extracts the recipient domain and matches it to your tenant via
InBoundEmailDomains - A new Case is created:
- Subject — from the email subject line
- Source — set to "Email"
- Customer — matched by sender email (searches Private Customers, then Business Customers)
- Status — set to the configured Status New
- Priority — set to the configured Default Priority
- Related Order — if the subject or body contains
#12345, the order is automatically linked
- The email body and any attachments are added as the first Case Note
Reply Tracking
When a case notification email is sent to a customer, Omnium embeds a tracking reference in the email headers. When the customer replies:
- Omnium detects the tracking reference in the reply headers
- The reply is added as a new comment on the original Case
- If the case was closed, it is automatically reopened to the Status Reopen status
Customer Matching
When an inbound email arrives, Omnium searches for the sender by email address:
- First searches Private Customers
- Then searches Business Customers
- If a match is found, the case is linked to that customer
- If no match is found, the case is still created but without a customer link
Important Notes
- HTTPS Required — The Omnium webhook URL must use HTTPS
- Raw Mode Required — "Send Raw" must be enabled in SendGrid for correct parsing
- Domain Caching — Omnium caches the domain-to-tenant mapping for 5 minutes. Changes to
InBoundEmailDomainsmay take up to 5 minutes to take effect - Attachments — File attachments in inbound emails are automatically uploaded and attached to the Case Note
- Inline Images — Inline images (e.g., from email signatures) are extracted and stored as file attachments
- Unassigned Cases — Cases created from inbound email have no assigned user. Assign cases manually or configure automation rules
Troubleshooting
| Issue | Solution |
|---|---|
| Emails not arriving at Omnium | Verify MX records: run nslookup -type=MX incoming.yourcompany.com |
| "No tenant found for email domain" | Add the domain to InBoundEmailDomains in Tenant Settings JSON. Wait up to 5 minutes for cache refresh |
| "No email content to process" | Ensure Send Raw is checked in SendGrid Inbound Parse settings |
| Cases not created (no errors) | Verify Case Settings → Enabled is on |
| Cases created without customer link | Sender email doesn't match any customer in Omnium |
| Customer replies not threaded | Ensure Inbound Email Address is configured in Email Client Settings |
| SendGrid shows failed webhook delivery | Verify the URL uses HTTPS (not HTTP) |
| Duplicate domains warning | Same domain configured for multiple tenants — each domain can only map to one tenant |
Configuration Checklist
- DNS: MX record for inbound subdomain pointing to
mx.sendgrid.net - DNS: MX record propagation verified with
nslookup - SendGrid: Inbound Parse entry with correct domain and HTTPS webhook URL
- SendGrid: "Send Raw" / "Post the raw, full MIME message" is checked
- Omnium:
InBoundEmailDomainsconfigured in Tenant Settings JSON - Omnium:
InBoundEmailAddressset in Email Client Settings - Omnium: Case Settings → Enabled is on
- Omnium: At least one status configured with Status New set
- Omnium: Default Priority is set
- Test: Send a test email and verify a Case is created
