Invitations expire

Every invite link is good for 48 hours, after which it stops granting access and shows as expired in the pending list.

What it is

The invitation row stores an explicit expiry timestamp computed at creation. Accept and validate both check it, and the pending list renders relative time until expiry so an admin can see which invites are about to lapse.

Also called: invite expired · old invite link still works · invite timeout

See it
Invitations expire
CustomerBuildingAmountStatus
Gideon Alt30×40 Garage$14,690Sent
Ronan PetschHobby Shop$2,720Approved
Ivy Brubaker30×40 Garage$5,950Paid
Ronan Petsch40×64 Shop$13,740Approved
Sutter KlineRiding Arena$3,480Paid
A pending invitation row showing 'sent 3h ago · expires in 45h' with the status dot. Sample data — no customer information appears here.
How it works
  1. 1computeExpiresAt() stamps now + 48 hours onto the invitation row.
  2. 2isExpired() gates the accept path and drives the UI badge.
  3. 3Pending invitations show time-since-sent and time-until-expiry.
Why we built it

An invite link is a bearer credential that grants a named role inside a company's account. A link forwarded in a group text or left in an inbox for a year is an open door, so the token has a short life and a visible clock.

The problem
  • Invitation links were long-lived bearer credentials with no visible lifetime.
Sound familiar?
What you get
A forwarded or leaked invite link stops working quickly.
The pending list shows at a glance which invites need resending.

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →