Inviting Employees
How to invite employees to log in via a one-click magic link, and why this is the recommended path
The invite flow is the recommended way to onboard an employee onto Hopshift. It produces a clean, fully-linked account in one click, and avoids the orphan states that can occur when employees try to sign in on their own without their record being prepared.
Don't tell employees to "go to hopshift.app and log in." Send an invite. The invite link does the matching for you and guarantees they land in the right workspace. Self-signup works, but it depends on the employee entering the exact email already on their employee record - any drift creates a manual cleanup task.
Prerequisites
Before inviting, the employee record must already exist:
- Employee row exists in the right company. See Adding an Employee.
Emailfield is set to the address the employee will actually use. This is the address the magic link is sent to and the address the auth account is created for.
If the employee changes their email later, see Changing an Employee's Email below.
How to invite
Bulk invite (recommended for onboarding multiple employees)
- Go to Group → Employees.
- Tick the checkbox next to each employee you want to invite.
- Click Send Invites (top-right, appears once you have selected at least one row - the count in brackets matches your selection).
- Confirm in the dialog.

Magic links are sent in one batch. Each employee's Invited At field is updated.
Single invite (one employee at a time)
- Open the employee's profile (Group → Employees → click the employee).
- Click the Invite button (top-right of the profile header).
- Confirm the email address shown matches the employee's real address.
- Click Send Invite.
The magic link is sent immediately. The button changes to Invite Sent and the employee record's Invited At field is updated.
You can also click Copy Link instead of Send Invite to get the magic link without sending an email. Useful when you want to deliver it via Line, WhatsApp, or another channel.
What the employee receives
A branded email from noreply@hopshift.app with:
- A short greeting addressed to the employee by name
- The company name they've been invited to
- A single button labeled "Sign in to Hopshift" - clicking it opens the magic link
The link is one-time-use and expires after 1 hour. If the employee doesn't click it in time, just send a new invite - the previous link is silently superseded.
What happens when they click
Behind the scenes, the click triggers the full account-setup chain:
- The link verifies the employee's email with our auth provider.
- A user record is created (if it didn't already exist).
- The auth account is linked to the Employee row by email.
- A
CompanyMembershipis created for the invited company. - A
GroupMembershipis created (if the company belongs to a group). - The employee is redirected to their workspace, signed in.
The whole chain happens in under a second. Employees see only "loading…" then their dashboard. No password, no signup form.
Troubleshooting
"The link has expired"
Magic links last 1 hour. Send a new invite - the old one is automatically invalidated by the new one.
Employee doesn't see the email
Check spam folder first. If still missing, verify the email on the employee record is spelled correctly and re-invite. The button on the employee profile shows the address being sent to.
Employee already has a Hopshift account at another company
That's fine - the invite recognizes the existing account, adds them to your company, and sends a "you've been added" email instead of a "create your account" email. They sign in with their existing credentials and the new company appears in their company switcher.
Employee says they "logged in but don't see anything"
Usually one of:
- They self-signed-up with a different email than the one on their employee record. Check the Auth Email field on their profile vs the Employee Email field. If they differ, they may have created a parallel orphan account. Reach out to engineering (
/api/cron/auth-reconciliationruns hourly and surfaces these). - Their Employee record is at a different company than they expect. Check Company on their profile.
Changing an Employee's Email
Edit the Email field on the employee profile and save. Future invites will go to the new address. If they've already signed in under the old email, their existing access is preserved (the link is by user ID, not by email - so changing the field doesn't break anything).
Re-inviting a terminated employee
Not allowed. The invite flow refuses to send a magic link to a terminated employee. To restore access, first re-activate the employee record (via the rehire flow), then invite as normal.
Why this is preferred over self-signup
| Invite flow | Self-signup | |
|---|---|---|
| Account is correctly linked at sign-in? | Always - the employee record is matched by ID and email at the moment the invite is generated | Only if the employee enters the exact email on their record. Typos, capital letters, missing dots, or an alternate address all create orphans. |
| Membership and group access are set up? | Yes, immediately on click | Not always - autoLink is best-effort. If something goes wrong, the user lands in an empty workspace. |
| Recoverable from a typo? | Just re-invite. Nothing else changes. | Engineering has to manually reconcile auth account against employee records. |
| HR has visibility? | Yes - the Invited At field shows when invites were sent. | No - until the employee actually logs in successfully, there's no signal. |
For bulk onboarding, use the import flow (see Importing Employees) which can send invites at the end of the import.