Inbound Domain Forwarding
Use your own email addresses to receive inbound emails with MX record forwarding.
Overview
By default, each inbound stream gets a unique email address like c57f298522914941961c322877cd36ff@inbound.usetransactional.com. While this works great for testing, you may want to receive emails at your own domain addresses like support@yourdomain.com.
This guide covers different ways to route emails from your domain to Transactional.
Choose Your Setup Method
| Scenario | Recommended Method |
|---|---|
| Dedicated domain for inbound (no existing email) | Full MX Forwarding |
| Keep Gmail/Outlook for team, forward specific addresses | Gmail Workspace Routing |
| Keep existing email, use subdomain for inbound | Subdomain Approach |
Full MX Forwarding
Use this method when you want all emails to a domain routed to Transactional.
How It Works
- Email Sent — Someone sends an email to
support@yourdomain.com - DNS Lookup — The sender's mail server looks up MX records for
yourdomain.com - Routing — MX record points to
inbound.usetransactional.com - Reception — Transactional's SMTP server receives the email
- Delivery — Parsed email data is sent to your webhook
Setup Steps
Step 1: Add Your Domain
- Go to your inbound stream's Settings tab
- Under Inbound Domains, click Add Domain
- Enter your domain (e.g.,
yourdomain.com)
Step 2: Configure MX Records
Add this MX record to your domain's DNS:
| Type | Host | Value | Priority |
|---|---|---|---|
| MX | @ | inbound.usetransactional.com | 10 |
Step 3: Verify & Test
- Click Verify in your stream settings
- Send a test email to any address at your domain
- Check your webhook for the parsed email data
Gmail Workspace Integration
Use this method to forward specific addresses to Transactional while keeping your team's email on Gmail Workspace.
Example: support@glood.email → Transactional, while john@glood.email stays on Gmail.
Option A: Gmail Routing Rules (Recommended)
This is the cleanest approach for forwarding specific addresses.
Setup in Google Admin Console:
- Go to Apps → Google Workspace → Gmail → Routing
- Scroll to Routing section and click Configure (or Add another rule)
- Configure the rule:
| Setting | Value |
|---|---|
| Name | Forward support to Transactional |
| Email messages to affect | Inbound |
| Envelope filter | Only affect specific envelope recipients |
| Envelope recipient | support@yourdomain.com |
-
Under For the above types of messages, do the following:
- Select Change route
- Choose Add more recipients
- Add your Transactional inbound address:
abc123@inbound.usetransactional.com
-
Optional: Check Also deliver to original destination if you want a copy in Gmail
-
Click Save
Result:
support@yourdomain.com→ Forwarded to Transactionaljohn@yourdomain.com→ Stays in Gmail (unchanged)sales@yourdomain.com→ Stays in Gmail (unchanged)
Option B: Google Group Forwarding
Use this for simpler setups or if you don't have Admin Console access.
- Create a Google Group:
support@yourdomain.com - Go to Group Settings → Email options
- Add your Transactional inbound address as a member
- Set Who can post to allow external senders
Option C: Gmail Filter + Auto-Forward
For individual Gmail accounts (not Workspace):
- Go to Gmail → Settings → Forwarding
- Add your Transactional inbound address as forwarding destination
- Create a filter:
to:support@yourdomain.com - Set action: Forward to your Transactional address
Subdomain Approach
Use a subdomain for Transactional while keeping your main domain on existing email.
Setup
| Address | Handled By |
|---|---|
john@yourdomain.com | Gmail/Outlook (existing) |
support@inbound.yourdomain.com | Transactional |
DNS Configuration:
yourdomain.com MX → Your existing provider (Gmail, etc.)
inbound.yourdomain.com MX → inbound.usetransactional.com
Add MX record for subdomain:
| Type | Host | Value | Priority |
|---|---|---|---|
| MX | inbound | inbound.usetransactional.com | 10 |
Then add inbound.yourdomain.com as an inbound domain in your stream settings.
Wildcard vs Specific Addresses
Wildcard Routing (Default)
When you add a domain, all emails to that domain route to your stream:
support@yourdomain.com→ Your streamsales@yourdomain.com→ Your streamanything@yourdomain.com→ Your stream
Specific Address Routing
Route different addresses to different streams:
- Create multiple inbound streams
- Set specific inbound addresses on each:
- Stream A:
support@yourdomain.com - Stream B:
sales@yourdomain.com
- Stream A:
Priority order:
- Specific inbound address matches (highest priority)
- Wildcard domain matches (
*@yourdomain.com) - Default stream routing
Security Considerations
SPF Records
MX records (receiving) and SPF records (sending) are independent. Your existing SPF configuration won't conflict with inbound forwarding.
DMARC Alignment
Inbound emails are processed regardless of sender's DMARC policy. Authentication results (SPF, DKIM, DMARC) are included in your webhook payload for you to implement your own policies.
Spam Filtering
All inbound emails pass through:
- rspamd spam scoring
- ClamAV malware scanning
- Configurable spam threshold per stream
Troubleshooting
Emails Not Arriving
- Check MX records: Run
dig MX yourdomain.comto verify - Verify domain status: Ensure domain shows as verified in Settings
- Check spam threshold: Lower the threshold if legitimate emails are blocked
- Review inbound rules: Check ALLOW/BLOCK rules aren't filtering
Gmail Forwarding Not Working
- Check routing rule order: Rules are processed top-to-bottom
- Verify envelope recipient: Use exact email address match
- Check spam folder: Gmail may mark forwarded emails as spam
- Confirm Transactional address: Ensure the inbound address is correct
Domain Verification Failing
- DNS propagation: Wait up to 48 hours for DNS changes
- Correct value: Ensure MX points to
inbound.usetransactional.com - Priority: Include priority value (e.g.,
10)
API Reference
Add Inbound Domain
await client.streams.addInboundDomain({
streamId: 'str_123',
domain: 'yourdomain.com',
});Verify Domain
await client.streams.verifyInboundDomain({
streamId: 'str_123',
domainId: 'dom_456',
});List Inbound Domains
const domains = await client.streams.listInboundDomains({
streamId: 'str_123',
});Next Steps
- Inbound Processing — Learn how to parse inbound emails
- Webhooks — Configure webhook delivery
- Spam Filtering — Configure spam thresholds
On This Page
- Overview
- Choose Your Setup Method
- Full MX Forwarding
- How It Works
- Setup Steps
- Gmail Workspace Integration
- Option A: Gmail Routing Rules (Recommended)
- Option B: Google Group Forwarding
- Option C: Gmail Filter + Auto-Forward
- Subdomain Approach
- Setup
- Wildcard vs Specific Addresses
- Wildcard Routing (Default)
- Specific Address Routing
- Security Considerations
- SPF Records
- DMARC Alignment
- Spam Filtering
- Troubleshooting
- Emails Not Arriving
- Gmail Forwarding Not Working
- Domain Verification Failing
- API Reference
- Add Inbound Domain
- Verify Domain
- List Inbound Domains
- Next Steps