Skip to main content

Pending Invitations: Track, Resend, and Cancel Team Invites

· 6 min read
VolatiCloud Team
VolatiCloud

You invite a teammate to your trading org, they never see the email — spam filter, typo, or it just expired after a week — and now you're stuck. Cancel the invite and send a new one? That's two separate operations, and if the invitee had a role other than the default, there's nothing forcing the second invite to carry it over. VolatiCloud's People & Access hub closes that gap with a dedicated Pending Invitations tab and a resend action that reissues the invite in one atomic step, role intact.

VolatiCloud People & Access hub, Members tab showing the organization's member list with role, workspace scope, status, and an Invite User button

Why "Cancel, Then Re-Invite" Was Never a Real Fix

Before this feature shipped, an admin who wanted to redo a stale invitation had exactly one option: cancel it and open the invite form again. That sounds equivalent to a resend, but it isn't:

  • It's two operations, not one. If the cancel succeeds and the re-invite fails — network blip, session timeout, someone closes the tab — the org is left with no record that the person was ever invited.
  • The role isn't preserved automatically. Nothing about "cancel + re-invite" guarantees the second invite carries the same role as the first. An admin has to remember it, and busy admins forget.
  • There's no visibility into what's outstanding. Without a dedicated view, "who have we invited but who hasn't joined yet" is a question you can only answer by asking around.

None of these are edge cases. They're the normal cost of running team invitations as an implicit, two-step manual process instead of a first-class feature.

The People & Access Hub

VolatiCloud consolidated organization membership into a single People & Access hub under Organization, replacing the older split between a users list and a separate resource-groups view. The hub has two tabs every admin sees, and a third gated by an experimental flag not yet in general availability:

TabWhat it shows
MembersEveryone who has joined the org, their role, and actions like changing role or removing access
Pending InvitationsEvery invite that's been sent but not yet accepted, with status and per-row actions

The Pending Invitations tab only appears for members with the invite-user scope — the same permission gate discussed in the team management overview. If you can't invite people, you don't see who's been invited, which keeps the tab from leaking membership intent to viewers.

What the Pending Invitations Tab Shows

VolatiCloud Pending Invitations tab, showing the empty state that appears when an organization has no outstanding invites — the tab that populates with a row per invite once someone is invited

When there's nothing outstanding, the tab shows a simple empty state — as soon as you invite someone, a row appears here and stays until it's accepted or expires. Each row lists:

  • The invitee's email (and name, if they supplied one before accepting)
  • When the invite was created, shown as a relative timestamp
  • StatusPending or Expired, as a colored badge

From the row menu, an admin can:

  1. Resend — re-issue the invitation with a fresh link and a reset expiry window, without touching the invitee's assigned role
  2. Cancel — revoke the invite outright, removing it from the list (with a confirmation dialog, since this can't be undone)

Resend is deliberately a single click with no confirmation dialog — it's non-destructive, it just sends another email — while Cancel asks you to confirm, because it permanently discards the invitation.

Resend Is Atomic, and That's the Point

Under the hood, resendOrganizationInvitation is a single backend mutation, not a client-side cancel-then-invite pair. The distinction matters for two reasons:

It can't fail halfway. The Keycloak-backed invitation service re-issues the invite — new ID, fresh link, reset expiry — inside one transaction. There's no window where the old invite is gone but the new one hasn't landed yet.

The role travels with it, server-side. The invitee's originally assigned role is read authoritatively from the existing invitation record and reapplied to the reissued one. The client never has to know or resend the role — which also closes a subtle failure mode: the invitation-listing API doesn't echo roles back to the browser at all, so a client-driven "cancel and re-invite" would have had no way to preserve a non-default role even if someone remembered to try.

Invitations Still Expire After 7 Days

The expiry window from the original team management post hasn't changed — invitations still lapse after 7 days if unaccepted. What's new is that you can now see when that's happened instead of finding out only when the invitee asks "did you actually invite me?" three weeks later. An expired row shows the Expired badge; Resend on that row generates a brand-new link with a fresh 7-day window, so you don't need to Cancel first.

Where This Fits for Trading Teams

For a fund desk or a two-person trading partnership, onboarding friction is invisible until it happens to you. A junior analyst's invite email lands in quarantine, three days pass, and now the person you wanted looking at bot performance today is still locked out. With the Pending Invitations tab, the admin who sent the invite can check the hub, see the invite is still Pending, and either wait it out or resend immediately without guessing whether a second invite would silently downgrade the analyst back to a default role.

Combined with the view-secrets scope separation covered in the team management guide, the full picture is: invite precisely, verify the invite landed, and know that exchange API keys stay hidden from anyone who hasn't been explicitly granted access — whether they joined five minutes ago or five months ago.

Getting Started

  1. Open Organization → People & Access in the console
  2. Use the Members tab to see who's already in the org and their role
  3. Switch to Pending Invitations to see outstanding invites — anyone who hasn't accepted yet
  4. Resend a stale invite in one click, or Cancel it if the person no longer needs access

Pending Invitations requires the invite-user scope, available to organization admins by default.


Open your organization's People & Access hub to see who's still pending. Open the console →