Native SAML Logout: Closing the Loop on Session Consistency for Mautic Integrations
Today, the Helpifyr stack closes a critical gap in SAML-based integrations by implementing a true native Service Provider logout for Mautic, ensuring that user sessions are reliably terminated across both application and identity layers. This shift removes persistent session ghosts, eliminates cache confusion, and unlocks a foundation for secure, auditable sign-out flows across the platform.

At a glance
136
merged changes
21
code projects involved
Most changes in
- jhf-deployment15
- jhf-openclaw-env13
- jhf-warp10
Underlined terms are explained: just hover or tap.
Picture a user logging out of a CRM, expecting their session to be fully terminated. Instead, a subtle flaw leaves their authentication session alive, allowing the next browser visit to slip past what should be a hard stop. For operators and auditors, this is more than an inconvenience-it’s a compliance and data boundary risk. Until today, our Mautic SAML integration used a browser callback to simulate logout, but couldn’t guarantee that both the Service Provider (Mautic) and the Identity Provider (Keycloak) agreed on the session’s termination. The result: unpredictable cache states, lingering authentication cookies, and a sign-out flow that sometimes worked, sometimes didn’t. That ambiguity ends now.
01Why it matters
Why This Day Mattered
With the native SAML Service Provider logout now wired into Mautic, operators gain a reliable guarantee that user sign-out is enforced at both the application and identity layers. This eliminates the risk of session persistence after logout, closes the window for privilege escalation or session replay, and ensures that audit trails reflect the true state of user access. For developers, it means integrations and downstream automation can depend on a single, canonical logout event-no more compensating for partial sign-outs or cache desynchronization. For end users, it translates to a predictable, secure experience: when they log out, they stay logged out.
The closed UTC day 2026-08-24 resolved into 136 merged PRs across 21 repos, led by jhf-deployment (15), jhf-openclaw-env (13), jhf-warp (10).
02What changed
What Actually Changed
The stack now issues a native SAML logout request from Mautic to the Identity Provider (Keycloak), completing the full SAML logout protocol instead of relying on a browser callback or partial session cleanup. The deployment layer emits the correct Assertion Consumer Service (ACS) URL in SAML AuthnRequests, and the router cache is invalidated as part of the logout flow, ensuring that no stale session data lingers. Ownership of cache entries is now preserved during logout, preventing cross-user leakage and ensuring that the cache state matches the authenticated user context. The logout callback is fully SP-initiated and native, not just a UI redirect.
03Why it holds better now
Why It Holds Better Now
By adopting the true SAML SP logout flow, the system now guarantees that both Mautic and Keycloak agree on the session’s lifecycle. This closes the door on session ghosts-users cannot be unexpectedly reauthenticated via a lingering IdP session or browser artifact. The explicit cache invalidation and ownership preservation mean that stale authentication artifacts are eliminated, and the risk of session fixation or replay is removed. The logout event is now a single, auditable point of truth, making both operational monitoring and compliance reporting straightforward and reliable.
04Food for thought
Want to Know More?
How might this full-fidelity logout flow enable secure, cross-application session management for future product integrations? Could we extend this guarantee to OAuth and other federated protocols for a unified sign-out experience across the platform?
Terms in this post
- PR
- Pull request: a reviewed code change that gets merged into the project.
- repo
- Repository: a code project under version control.
- CRM
- Customer relationship management: contacts, requests and sales opportunities.
- operator
- The person or team running the system.
What would this look like in your company?
A pilot shows it with a real process.
More on Identity and access
See all
Identity and access4 min
Operator-First Identity Bootstrapping: Breaking the Vendor Dependency Loop
Today marks a fundamental shift in how customer environments on the Helpifyr / JaddaHelpifyr stack are initialized: first-owner identity and access are now established by the deploying operator, not by a pre-seeded vendor artifact. This closes a multi-year gap in source-of-truth guarantees for customer deployments, enabling operators to create, verify, and assert initial superadmin authority without shadow credentials or vendor-side initialization. The stack now guarantees that the very first root authority is provably local, auditably bound to the operator's actions, and never hidden in a vendor-controlled bootstrap script.
Read
Identity and access4 min
Identity Bootstrapping Without Vendor Shadows: Operator-First Realm Initialization for Customer Deployments
Today’s engineering work unlocks direct, vendor-neutral identity bootstrapping for new customer environments. By decoupling realm initialization from vendor image artifacts and shifting to attested, customer-bound Keycloak provider packs, operators gain unmediated control over Helpifyr’s identity layer. This change eliminates the last vestiges of vendor reference leakage during customer onboarding, providing operators and downstream integrators with a clean, auditable, and policy-compliant path from first boot to live realm configuration.
Read
Identity and access2 min
Live Authentication Parity: Platform-Plane Auth Survives Any Redeploy, Now Verified in Real Time
A brittle edge in platform-plane authentication is now closed: any redeploy path leaves no window for stale or mismatched auth state. This shift replaces TTL-based expiry with live, source-attested checks, and lands runtime guarantees that operators and developers can trust, even through complex rollouts.
Read