Personal-mailbox connects send the api.kamouniverse.com redirect
The owner has added **************** to the platform Google and Microsoft consoles, keeping the api.kamocrm.com one. Both hosts serve the path.
The platform's Gmail, Microsoft 365 and Zoho connects send api.kamouniverse.com redirects
The owner added **************** (Google) and **************** (Microsoft, Zoho) to the platform apps' consoles and kept the api.kamocrm.com ones, so both are v...
The platform organization's letters are signed KamoUniverse, not its legal name
The platform org's title is the company's legal name, "KamoCRM Inc.", and it stays in legal text. Its letters now carry the brand, its short title "KamoUniverse...
EmailService sends, links and names the platform as kamouniverse.com
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 recogn...
Dovecot push authoritative for KamoMail; NEW_EMAIL no longer self-raisable
POST /api/notifications/self is removed with SELF_RAISABLE: NEW_EMAIL is raised by NewMailAnnouncer and CHAT_MESSAGE by MediaService, so a browser has nothing l...
An emailed invitation keeps its recurrence, edited and cancelled instances
An invitation to one date of someone else's series stays the event it describes instead of being refused as an orphan instance, and a series whose organiser mov...
Guests hear about one moved or cancelled instance; invitations state the repeat
The instance's ics names the whole guest list and goes to every guest already told; a cancelled instance outranks every notice sent about it; an all-day invitat...
Provision an AI member's mailbox for the SP02 MAILBOX hire step
POST **************** (spec E6, §4.12) behind KAMOAI_INTERNAL_SECRET: KamoMail creates <first.last>@<verified domain> (base, base2 … base99), other providers as...
Read ics from Google, Outlook and Apple — zones, dates, series and instances
Dovecot push endpoint; push-covered KamoMail mailboxes stop holding IMAP IDLE
One ics writer for invitations, CalDAV and export — series, exceptions, zones
Watch active AI members' mailboxes for arrivals
AiMailboxWatcher keeps a pod-local "ai" IDLE claim on every active AI member's IMAP-reachable mailbox (ARTIFICIAL, record active, membership ACTIVE), skips mail...
Meeting emails wear the organizer's compose template; escape event fields
Invite, update, cancel and RSVP bodies are wrapped for the sending member and their data: images leave as cid: parts (InlineImageTransport). **************** su...
Free/busy that never widens visibility, and a slot finder over working hours
No transaction across the members (a Yugabyte read restart is transparent only as a transaction's first statement), one guest read for every member, zero-length...
Send and drafts return Message-ID and UIDs, thread, wrap, dry-run, supersede drafts
Working hours from the timecard schedule, the AI charter, or the org default
A schedule set today counts for all of today, a day ending at its start is a 24-hour shift, only the window's own holidays are reported, and an unreachable Secu...
Server-side threading, quotes, forwards and the outgoing pipeline
Replies thread on the server (In-Reply-To/References from the original, capped at 20 ids), default their recipients and subject, and set \Answered after the sen...
Server-built mail carries its icons as PNG parts and its data: images as cid: parts
The API reads and writes occurrences by key, with scopes, recurrence and IANA zones
Event windows bind as Instants, so a whole-second or offset instant is read (a Date read only the millisecond form, and its failure answered 404); a malformed q...
Minted Message-IDs, Sent/Draft UIDs via UIDPLUS, MIME sends to Microsoft 365
Phone mirror for cards, chat cards raised server-side, calendar lines through chat's fan-out
Body formats, email-safe sanitiser and signature stripper for server-side compose
The sanitiser also drops a style attribute that runs code, as it does a style block, and drops <title> and <template> whole: jsoup's Cleaner keeps the text of a...
Inline pre-sized PNG logos; footer badges served at the drawn height
Transactional emails only inlined a logo when the original was an SVG under 512 KB. A PNG logo org's email linked the whole upload instead — crm's 2.2 MB logo-f...
Sending mail needs a seat, for people and AI members alike
A member without a licensed seat is refused with the shared 403 SEAT_REQUIRED body before anything is sent: POST /api/email/send, the shared-mailbox send, and t...
Read the composer's alias-domain default from org_alias_domains
**************** used one hardcoded domain (platform.mail.domain, kamouniverse.com) as a synthetic send-as default, and only for the platform org **************...
Move system mail and the platform org's own send domain to kamouniverse.com
platform.mail.domain now defaults to kamouniverse.com (config value, no code default change) and gates every unverified-domain org's transactional fallback From...
DKIM-sign transactional mail sent as an org's own domain
Once SecurityService confirms a domain's DKIM record is published (org_domains.dkim_verified), password resets, invitations and other transactional letters sent...
Narrow a campaign's all-leads audience and drip triggers by market, vendor, product and state
The campaign editor's "All Leads" box and the drip trigger's lead filter could only match every lead the sender can see, with no way to target a market, vendor,...
A lead who writes in is named by the correspondent resolver
The mailbox list headed a lead's message with the part of their address before the @ ("jlrivera1984") when their mail client sent no display name, although the ...
A lead who writes in is named by the correspondent resolver
The mailbox list headed a lead's message with the part of their address before the @ ("rodarisdolgovanton") when their mail client sent no display name, althoug...
Who caused a notification travels with it, so the bell can draw them as a member
- NotificationRequest gains actorMemberId/actorName; the old constructor stays for every producer that predates them. - raise() keeps the pair only when both ...
A member can put a checklist on their calendar, once
Checklists live in KBService and the calendar owns only WHEN, so a scheduled checklist is an ordinary member event carrying sourceType CHECKLIST, the checklist ...
The deliverability history names the member behind each change
Settings → Email → Deliverability shows an address's opt-out history with who made each change, but HistoryView sent only the actor's name, so the page could no...
An opt-out row carries the member behind its last change
The opt-out list named who made each address's last change (lastActorName) but not who they are, so the settings page could not open their member card. Each row...
Drip campaigns
A drip is an automated sequence of emails a person enters when something happens: a lead arrives (by hand, imported, or from an integration), a lead's status or...
A campaign's replies go to NoReply, the member's e-mail, or a custom address — NoReply by default
The editor's Reply-To becomes three choices (CampaignReplyTo), kept in the existing reply_to column. No DDL. - NO_REPLY (empty column, the default): Reply-To: N...
Bounces to org sending domains come home, test sends are signed, and the relays' DNS is read
Async bounces. A campaign's envelope sender is its From at the organization's sending domain, whose MX (through the CNAME to contact.kamocrm.com) is the shared ...
Campaign mail is signed as, sent from, and routed by its verified sending domain
A campaign may name its own From on a verified domain; otherwise it goes as the org's bulk sender — which must itself be on a verified domain (saveSender refuse...
Domain Setup's API, the shared relay's sender map, and a sweep that confirms records live
**************** GET the tab (VIEW_BULK_EMAIL), GET lookup for the add form, POST add, POST {id}/check, DELETE (MANAGE_BULK_EMAIL); every write answers with the...
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.
