KamoCRM

EmailService sends, links and names the platform as kamouniverse.com

FeatureEmailService
Shipped
September 28, 2026 at 6:11 PM UTC
Author
Kamo
Commit
abe0e60

The platform's primary apex is kamouniverse.com; kamocrm.com stays served in full. What EmailService writes today now names the primary apex, and what it recognises still accepts both. Sender and fallbacks (C1, C3) - platform.mail.domain defaults to PlatformDomains.PRIMARY_APEX (k8s already set kamouniverse.com; the code default no longer disagrees with it). The NoReply audit defaults to the same. - The theme host of last resort for letter logos is **************** (theme.kamouniverse.com serves every org's folder byte-for-byte like theme.kamocrm.com). - HostTester's test-send From and MessageIds' no-domain fallback use the primary apex. - The platform organization holds both apexes; with shared-lib 0e8cf90f its preferred root (OrgPrimaryDomain -> OrgApiHosts.preferred) is kamouniverse.com, so its letters go out From NoReply@kamouniverse.com with Reply-To NoReply@kamouniverse.com — never the legacy apex. Tests updated from "the platform keeps kamocrm.com" to the primary apex, and pinned. Links (C2) - Campaign/article-share opt-out and open/click tracking links are minted on api.kamouniverse.com (k8s/configmap.yaml + application.yml). api.kamocrm.com serves the same paths, so every link already sent keeps working (GET, one-click POST and tracking verified identical on both hosts); signatures never included the host. - The article-share sign-up link is register.<primary apex>/member. Its article link stays on www.kamocrm.com: the shareable article exists only there (www.kamouniverse.com: 404). Recognition stays add-only (K4) - TrackingLinks.isOurs and the composer's opt-out exclusion recognise their base on EVERY platform apex (new util PlatformUrls), so a legacy-apex tracked or opt-out link pasted from an earlier campaign is not wrapped a second time. - The NoReply audit records NoReply@ on either platform apex, not only the configured one. - Sending domains: a tenant may not add a domain under kamouniverse.com as well as kamocrm.com **************** whole labels — notkamouniverse.com is fine). - KamoMailDomainValidator's apex list is PlatformDomains.APEXES. Brand name (C4): the user-facing outbound-host and sending-domain messages say KamoUniverse. Kept: OAuth redirect URIs on api.kamocrm.com (K1); hello.kamocrm.com, contact.kamocrm.com, unsubscribe@hello.kamocrm.com, mail.kamocrm.com (K2); Feedback-ID "campaign:kamocrm" and the kamocrm-com theme folder (K8); legacy-apex test fixtures (K7). Verified: mvn clean test against shared-lib origin/main (0e8cf90f): 2863 tests, 0 failures. The same suite on origin/main had exactly 3 failures — the tests the shared-lib primary-apex change broke (ComposeAssetUrls, the preference page's logo host, OrgPrimaryDomain) — updated here to the primary apex, with legacy-apex cases kept beside them.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing