| ↓ | Name | Type | Instance | GoDaddy | GSuite/HMail | Created | Action | Retention |
|---|---|---|---|---|---|---|---|---|
| ▼ | example-outreach.com | GSuite | SoPro GSuite | ACTIVE | Verified | 2026-06-01 | ||
| ▼ | client-mail.net | Outlook | Outlook Prod | ACTIVE | Not set | 2026-07-10 | ||
| ▼ | send-postal.io | Postal | Postal Server 1 | Not set | Not set | 2026-07-14 |
Used by both Domains/EditDomain.cshtml and DomainFlow/_InitDomain.cshtml. Nearly identical except Hmail is hidden in Domains grid.
| Scenario | What Happens |
|---|---|
| Domain IS on GoDaddy | → Add GoDaddy infra (emails CNAME, DMARC, redirect, BrandSSL) → type-specific setup (GSuiteSetup/OutlookSetup/PostalSetup/HMailSetup) |
| Domain NOT on GoDaddy + NameServerChange (1) | → Add to CloudFlare + InsertDomain in provider |
| Domain NOT on GoDaddy + DNSRecord (2) | → BrandSSL + generate DNS HTML + SendDomainDnsRecords email to client |
| Domain NOT on GoDaddy + SMTPDetails (3) | → BrandSSL + tracking CNAME only + InsertDomain in provider |
| Domain NOT on GoDaddy + SubdomainNsRecord (4) | → Amazon Route53 hosted zone + nameservers email + BrandSSL + InsertDomain |
| Step | Action | API / Service |
|---|---|---|
| 1 | Add 5 Google MX records + SPF TXT to GoDaddy | IGoDaddyAPIService.AddDnsRecords |
| 2 | Register domain in local GSuiteDomain table | IGSuiteDomainService.AddOrUpdate |
| 3 | Get GSuite verification code | IGoogleGSuiteAdminService.GetVerificationCode |
| 4 | Add verification TXT record to GoDaddy | IGoDaddyAPIService.AddDnsRecords |
| 5 | Wait 80 seconds for DNS propagation | SleepAndMessage(80) |
| 6 | Verify domain with Google | IGoogleGSuiteAdminService.Verify |
| Record | Type | Name | Value |
|---|---|---|---|
| MX 1 | MX | @ | aspmx.l.google.com (priority 1) |
| MX 2 | MX | @ | alt1.aspmx.l.google.com (priority 5) |
| MX 3 | MX | @ | alt2.aspmx.l.google.com (priority 5) |
| MX 4 | MX | @ | alt3.aspmx.l.google.com (priority 10) |
| MX 5 | MX | @ | alt4.aspmx.l.google.com (priority 10) |
| SPF | TXT | @ | v=spf1 include:_spf.google.com ~all |
| Tracking | CNAME | emails | {TrackingDomain} |
| DMARC | TXT | _dmarc | v=DMARC1; p=quarantine; |
| Verification | TXT | @ | Google verification code |
| Step | Action | Retries |
|---|---|---|
| 1 | Add domain to Azure AD | — |
| 2 | Get service config DNS records from Graph API | 5 × 60s wait |
| 3 | Get verification TXT record from Graph API | — |
| 4 | Deduplicate + Push DNS records to GoDaddy | — |
| 5 | Verify domain in Azure AD | 5 × 60s wait |
| 6 | Get DKIM signing config from Exchange Online | 5 × 60s wait |
| 7 | Delete old DKIM CNAMEs + Add selector1/selector2 CNAMEs | — |
| 8 | Wait 80s → Enable DKIM signing | 5 × 60s wait |
| 9 | Update DomainRecords table | — |
| Record | Type | Name | Value |
|---|---|---|---|
| MX | MX | @ | From Graph API or {domain}.mail.protection.outlook.com |
| SPF | TXT | @ | v=spf1 include:spf.protection.outlook.com -all |
| Autodiscover | CNAME | autodiscover | autodiscover.outlook.com |
| DKIM s1 | CNAME | selector1._domainkey | Tenant-specific from Graph |
| DKIM s2 | CNAME | selector2._domainkey | Tenant-specific from Graph |
| Tracking | CNAME | emails | {TrackingDomain} |
| DMARC | TXT | _dmarc | v=DMARC1; p=quarantine; |
| Verification | TXT | @ | Microsoft verification code |
| Step | Action |
|---|---|
| 1 | Register domain in Postal: IPostalService.AddDomain |
| 2 | Read GeneralSettings for SPF, MX, ReturnPath records |
| 3 | Read PostalDomains for DKIM keys (identifier + public key) |
| 4 | Push SPF TXT, DKIM TXT, MX, Return Path CNAME to GoDaddy |
| Record | Type | Name | Value |
|---|---|---|---|
| MX | MX | @ | {PostalMxRecord} (pri 10) |
| SPF | TXT | @ | {PostalSpfRecord} |
| DKIM | TXT | postal-{id}._domainkey | v=DKIM1; t=s; h=sha256; p={key} |
| Return Path | CNAME | psrp | {PostalReturnPath} |
| Tracking | CNAME | emails | {TrackingDomain} |
| DMARC | TXT | _dmarc | v=DMARC1; p=quarantine; |
| Step | Action |
|---|---|
| 1 | Add domain to HMail server: IHMailServerService.AddNewDomain |
| 2 | Read HMailServerDomain for SPF parameter + DKIM public key |
| 3 | Push SPF TXT, DKIM TXT (k=rsa), MX to GoDaddy |
| Record | Type | Name | Value |
|---|---|---|---|
| MX | MX | @ | mx.soproserver.co.uk |
| SPF | TXT | @ | From Logins.Parameters2 |
| DKIM | TXT | @ | v=DKIM1; t=s; k=rsa; p={key} |
| DMARC | TXT | _dmarc | v=DMARC1; p=quarantine; (base flow) |
OtherSendingMechanism from CampaignDomain is used for DomainRecords population.
| Field | GSuite | Outlook | Postal | Hmail |
|---|---|---|---|---|
MX | 5 Google ASPMX | Graph API or fallback | GeneralSettings | mx.soproserver.co.uk |
SPF | include:_spf.google.com | include:spf.protection.outlook.com | GeneralSettings | HMail params |
DKIM | google._domainkey | selector1/selector2 CNAMEs | RSA-SHA256 TXT | RSA TXT |
DMARC | p=quarantine | p=quarantine | p=quarantine | p=quarantine |
CNAME | Tracking domain | Tracking domain | Tracking domain | — |
CNAME2-5 | — | autodiscover, DKIM s1/s2 | Return path | — |
Completed | ✅ true | ✅ true | ✅ true | ✅ true |