KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

19,290
Total Changes
7,053
Features
5,846
Fixes
30
Projects
Filter by project
All Projects19,290AIService291APIService184BillingService169ConversionService125DaemonService153DocsService284ESigService106EmailService678InitializerService359KBService167KlusterServices783MCPGatewayService283MediaService644RAGService80SecurityService2,131TranslateService62VOIPService279VectorService11kamo-apps31kamo-asterisk-support32kamo-capcha17kamo-capcha-widget4kamo-internal9,024kamo-login362kamo-marketing642kamo-nowww20kamo-register224kamo-shared-library1,951kamo-signer-monorepo73kamolos121
Filter by type
All TypesBuild23CI528Chore810Docs3,305Feature7,053Fix5,846Other1,009Performance176Refactor286Revert23Style46Test184Upgrade1
September 16, 2026
FeatureEmailService

The campaigns widget reads by stage, the stages the campaigns screen files by

The launchpad widget's read now groups and counts campaigns by the stages /marketing/email's tabs use: In-Progress (sending), Not Started (draft or scheduled), ...

Kamo·2mo ago
Featurekamo-internal

The campaigns list follows what colleagues do to a campaign, live

BulkEmailWorkspace takes the change frames useEmailCampaignsWebSocket now delivers (onChanged, d0b56adf). A frame names a campaign and what happened to it, neve...

Kamo·2mo ago
Featurekamo-internal

The Email Campaigns widget, live on the launchpad

A new home widget, email.campaigns, on the launchpad of everybody who can open the campaigns. Its five rights (EMAIL_CAMPAIGNS_WIDGET, 321-325) hang off VIEW_BU...

Kamo·2mo ago
Featurekamo-internal

In-Progress, Not Started, Paused, Complete and Archived tabs, and the ⋮ opens its menu

/marketing/email splits the campaigns into five sub-tabs, each with a live count, and every campaign is under exactly one: - In-Progress: sending - Not Started...

Kamo·2mo ago
FeatureEmailService

Archive a campaign, and the widget leaves archived ones out

POST **************** and /unarchive (MANAGE_BULK_EMAIL) set and clear the campaign's archivedAt, and CampaignDTO carries it. The /marketing/email screen files ...

Kamo·2mo ago
Featurekamo-shared-library

A campaign can be archived

EmailCampaignEntity gains archivedAt (archived_at): when a member archived the campaign, null while it is not. The /marketing/email screen gets an Archived tab ...

Kamo·2mo ago
FeatureEmailService

A live read and live frames for the Email Campaigns home widget

GET /api/email/widget/campaigns is the launchpad widget's one read, built for a pane that sits on every campaign viewer's home page all day: lean rows with no b...

Kamo·2mo ago
FeatureSecurityService

The Email Campaigns widget arrives on for everyone who can open the campaigns

EMAIL_CAMPAIGNS_WIDGET and its ADDED, OPTIONAL and MOVABLE policies seed from VIEW_BULK_EMAIL on the boot that introduces them, so the pane lands on the launchp...

Kamo·2mo ago
Featurekamo-shared-library

The Email Campaigns home widget's five rights

EMAIL_CAMPAIGNS_WIDGET (321) and its four policy children (322-325), hung off VIEW_BULK_EMAIL: every read behind the widget, the campaign list, its counters and...

Kamo·2mo ago
Featurekamo-internal

Email Campaigns is the first Marketing tab

The Marketing Tools tab strip now reads Email Campaigns, Marketing Materials, Social Media, Tracking Codes. Bulk Email moves to the front under its new name, an...

Kamo·2mo ago
Featurekamo-marketing

Solutions moves under Resources, one level down

The top row carried five categories before the phone number, the language selector and three CTAs. Solutions is now the first item inside Resources, above the t...

Kamo·2mo ago
Featurekamo-marketing

Application development, web design and web marketing

**************** argues that a business paying an agency per seat is paying for software the agency did not build, host, or keep running. It ends by asking who ...

Kamo·2mo ago
Featurekamo-marketing

An article on counting your software subscriptions, and the banner points to it

/all-in-one-business-software asks how many subscriptions a business is paying for: a checklist that counts them and totals the month and the year as the reader...

Kamo·2mo ago
Featurekamo-internal

The launchpad bands open into the bar's own dropdown surface

The administrator bar and the pinned-app bands are painted with the top bar's gradient, and then answered a hover with something from another app entirely: a wh...

Kamo·2mo ago
September 14, 2026
Featurekamo-marketing

Embed homepage marketing video on white-label CRM fees article

Give readers the same product reel from the homepage after the intro, before the resold-software section.

Kamo·2mo ago
September 13, 2026
Featurekamo-shared-library

WebinarNotifyMember, an organization's Additionally Notified list

One row per (organization, team member) in webinar_notify_member, created by KamoInitializerService's WebinarNotifyMemberMigration and already applied. The repo...

Kamo·2mo ago
FeatureMediaService

Blind-copy the Additionally Notified team members on presenter emails

GET/PUT /api/webinar/notify-members (MANAGE_SUPPORT) read and replace an organization's Additionally Notified list; every id must be a team member of that organ...

Kamo·2mo ago
FeatureEmailService

Blind copies on the service-to-service template send

SendTransactionalRequest takes an optional bcc list, carried through sendToUser and deliver onto the SMTP envelope — including the platform-address retry — so a...

Kamo·2mo ago
FeatureInitializerService

Webinar_notify_member, the team members copied on presenter emails

One row per (organization, team member): the Additionally Notified list on the Scheduled Webinars settings tab. MediaService blind-copies these addresses on eve...

Kamo·2mo ago
Featurekamo-internal

Let an admin choose who is copied on presenter emails

The Scheduled Webinars tab gains an "Additionally Notified" section beside the list of webinar types. The team members chosen there get a blind copy of every au...

Kamo·2mo ago
Featurekamo-shared-library

Canonical templates for every webinar booking letter

Seven meet.webinar_* templates — the presenter's booked / attendee joined / attendee cancelled notices, the attendee's confirmation and cancellation, the sessio...

Kamo·2mo ago
Featurekamo-marketing

Let a visitor cancel their registration from the emailed link

/webinar/cancel/<token> is where a webinar confirmation email sends someone who can no longer make it. It looks the registration up through the public webinar A...

Kamo·2mo ago
FeatureKlusterServices

Sign Feedback-ID in DKIM signatures

Gmail counts a campaign message toward its Feedback Loop only when the Feedback-ID header is covered by the sending domain's DKIM signature. local.d/dkim.conf k...

Kamo·2mo ago
FeatureKlusterServices

Receive postmaster@/abuse@stack.loans on k3m1 for the bulk IP's checks

47.181.8.87's reverse DNS is mail.stack.loans and the router forwards its port 25 to k3m1, but nothing there accepted mail, so a provider verifying who runs the...

Kamo·2mo ago
FeatureEmailService

Name the recipient in a header that headers-only complaint reports keep

Microsoft's feedback-loop reports now carry only the original message's headers, with anything shaped like an address masked. Every campaign message carries X-K...

Kamo·2mo ago
Featurekamo-internal

Open and click rates, tracking choices, 10,000+ outbox counts, person-asked on leads

- Campaign card: opened and clicked, as a share of delivered mail (or "Not tracked"). - Deliverability > Campaign rules: open and click tracking, the platform's...

Kamo·2mo ago
FeatureEmailService

Open and click tracking, complaint reports by email, capped outbox counts

- Tracking: the composer wraps a campaign's web links in a signed redirect (<base>/c/<token>?u=&s=) and adds an open pixel (<base>/o/<token>), as each org c...

Kamo·2mo ago
FeatureSecurityService

Lead opt-out panel passes personAsked to the ledger

The lead page's opt-out update takes an optional personAsked flag and hands it to the ledger, which now refuses to lift a person's own unsubscribe, complaint or...

Kamo·2mo ago
Featurekamo-shared-library

The ledger keeps a person's unsubscribe unless they asked to rejoin

An unsubscribe, a complaint or a pause is the person's own choice. A member may now lift one only when the change says the person asked to be emailed again (Opt...

Kamo·2mo ago
FeatureKlusterServices

Route fbl@/abuse@hello.kamocrm.com complaint reports to EmailService

Spam-complaint feedback-loop reports (ARF, RFC 5965) and abuse reports sent to fbl@ and abuse@hello.kamocrm.com are rewritten to complaints-mail.invalid and han...

Kamo·2mo ago
FeatureEmailService

One eligibility engine decides who a campaign may mail

Every list add (a member's, an audience's, a copy) and the send itself ask one engine whether an address may receive the campaign, cheapest check first: syntax,...

Kamo·2mo ago
Featurekamo-internal

See who a campaign reaches, and why not everyone

- Campaign preflight card: "1,000 selected · 742 eligible · 258 skipped", with each reason (unsubscribed, bounced before, disposable, role address…) opening...

Kamo·2mo ago
Featurekamo-internal

An organizations-created icon beside every member and team member

The Members and Team Members tabs on /account get a column beside Name: a filled building in the brand colour with a count for somebody who has created organiza...

Kamo·2mo ago
FeatureSecurityService

The organizations each member created, on the member lists

GET **************** and /team-members-contractors now carry createdOrgs per person: the names of the organizations they own (orgs.user_id_owner, set once by PO...

Kamo·2mo ago
FeatureSecurityService

An organization's and a member's own page transition

The page transition is now chosen at three levels, resolved member, then organization, then platform — for the choice of transition and, one transition at a tim...

Kamo·2mo ago
Featurekamo-internal

An organization's and a member's own page transition

The page transition is now chosen at three levels. The platform's stays on Platform Administration → Transitions; an organization can choose its own on Behavior...

Kamo·2mo ago
FeatureInitializerService

Page_transition_overrides, an organization's and a member's own page transition

One row per owner (ORG with the org id, MEMBER with the member id): a catalogue token or NULL to follow the level above, and properties for only the transitions...

Kamo·2mo ago
Featurekamo-internal

Five more page transitions, each with its own properties

Aperture, Curtain Split, Venetian Blinds, Liquid Wipe and Shatter join Tile Dissolve. Every transition is now an effect in app/lib/transitions/effects, drawn by...

Kamo·2mo ago
September 12, 2026
Featurekamo-internal

Add recipients and Send to latest on a campaign that has gone out

- A campaign's progress page has Add recipients: the recipients step in a dialog (upload, IDs, the All boxes, addresses), saved in slices as the editor save...

Kamo·2mo ago
FeatureEmailService

Running campaign counts, and Send to latest

Counts: - Every status change moves a campaign's counts by exactly what it changed: a send +1 sent, a later bounce report -1 sent +1 bounced, an add +n, a r...

Kamo·2mo ago
Featurekamo-internal

Tile Dissolve's tile size and tile colour, set per transition on the Transitions tab

Each transition now carries its own properties, stored per transition beside the active one, so switching transitions keeps each one's choices. Tile Dissolve ha...

Kamo·2mo ago
FeatureSecurityService

Tune each page transition, tile size and colour to start

GET and PUT /api/security/page-transition answer options for every catalogue id, normalised from PAGE_TRANSITION_OPTIONS: a missing, unreadable or out-of-range ...

Kamo·2mo ago
FeatureInitializerService

**************** beside the transition

A TEXT column holding each transition's properties as JSON keyed by transition id. No backfill: null means every transition's defaults, like page_transition bes...

Kamo·2mo ago
Featurekamo-shared-library

Each page transition's properties, kept per transition

**************** maps PAGE_TRANSITION_OPTIONS, a JSON object keyed by transition id, e.g. **************** Keyed by transition so tuning one survives switching ...

Kamo·2mo ago
Featurekamo-internal

Shorten admin bar labels to Billing, Stats, Roles, Block, Log

The panel heading keeps each screen's full name via titleKey, as White Labeling and Apps already do.

kamo·2mo ago
Featurekamo-internal

The page cover and its Tile Dissolve reveal, in place of the loading screen

Between pages the main view area (never NavTop or NavPri) is now covered in the organization's primary colour with its full logo centred on it, painted with the...

Kamo·2mo ago
Featurekamo-internal

A Transitions tab to choose and preview the page transition

Platform Administration → Configuration → Transitions, gated by the new MANAGE_PLATFORM_TRANSITIONS platform right and registered everywhere a console tab is: t...

Kamo·2mo ago
Featurekamo-internal

The campaign recipient list is paginated, with totals

The recipients grid on a campaign now pages like a list of billions should: First, Previous, Next and Last, rows per page, "101–150 of 3,916" and "Page 3 of 79"...

Kamo·2mo ago
FeatureEmailService

A campaign's recipient list pages both ways, with totals, at any size

The list was already read a page at a time, but only forwards, as an endless scroll with no total — and a status filter found its rows by walking the list in ad...

Kamo·2mo ago

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