Employees vs. profiles

Why the person who signs in and the person who gets scheduled are two different records.

Timely models the human side of your business as two separate things:

  • Profile — someone who logs in. Has an email, a password, and a role (owner, manager, employee).
  • Employee — someone who gets put on the schedule. Has a name, a phone number, optional wages, tags, and a location.

These overlap, but they're not the same thing.

Why two records?

Three real-world cases force the split:

  • An employee with no login. A part-time barista who only needs SMS shift alerts shouldn't have to create a Timely password. They have an employee record but no profile.
  • A profile with no schedule. The owner of a small franchise might handle the books but never work a shift. They have a profile (and full admin access) but no employee row.
  • A manager who also works shifts. They get both — one profile for login + permissions, one employee for scheduling.

When you invite a team member, Timely creates a profile. When you add someone to the roster, it creates an employee. They're linked by phone number / email when there's overlap, but each can exist without the other.

Practical consequences

A few things this distinction changes:

Question Answer
"Why doesn't this employee show up in the Members list?" They have an employee row but no profile — they don't have login credentials. To give them login access, invite them as a team member from the Team page.
"Why doesn't this team member appear in the schedule?" They have a profile (login) but no employee row. To put them on the schedule, add them as an employee.
"Can I delete a team member but keep their schedule history?" Yes. Removing a profile (revoking login access) leaves the employee row and any historical shifts intact.
"Why isn't an employee getting SMS alerts even though they're opted in?" Phone number is on the employee record, not the profile. Make sure it's set on the row in the Team page (Employees tab), not under team-member account settings.

In code (for the curious)

If you're filing a support ticket and want to be precise:

  • The profile record is the login identity. It owns the role (org_role) and any fine-grained permissions.
  • The employee record is the scheduling identity. It optionally references a profile when the same person both logs in and gets scheduled, but neither side requires the other to exist.

So an "employee with no login" is an employee row with no linked profile, and a "team member who doesn't get scheduled" is a profile with no linked employee row.

Found a typo or something missing? Let us know.