Three paths to populate your roster, in increasing speed:
1. One at a time
/dashboard/team → Employees tab → Add Employee. The fields:
| Field | Required? | Purpose |
|---|---|---|
| Name | Yes | What shows on the schedule grid + in messages |
| First / last name | No | If you want to address them by first name in templates |
| Designation | No (default: Employee) | Role label (e.g. "Server", "Lead Bartender") |
| Employment type | No (default: full_time) | full_time / part_time / contractor — used for payroll + rules |
| No | Required if you want them on the publish email list | |
| Phone | No | Required for SMS shift alerts and Text-to-Timely |
| Notes | No | Internal notes — visible to managers, not employees |
| Hourly rate | No | Cents per hour for labor cost calculations |
| Pay type | No | hourly / salary / none |
| Tags | No | See Tags |
After save, the employee appears in the schedule grid immediately. You can start assigning shifts right away.
2. CSV import
For more than ~5 employees, CSV is fastest. /dashboard/team → Employees tab → Upload CSV.
The expected format:
name,email,phone,employment_type,hourly_rate
Sarah Chen,sarah@example.com,+15551234567,full_time,18.00
Mike Patel,mike@example.com,+15555551111,part_time,16.50
Tara Moss,,+15555550000,part_time,
A few notes:
- Headers required. The first row must be column names.
- Name is the only required column — everything else is optional. Empty cells are fine.
- Phone format — we normalize on import.
(555) 123-4567,5551234567, and+15551234567all work. - Dedupe — if a row's email or phone matches an existing employee, the row is treated as an update, not a duplicate.
- Tags — pass tag names comma-separated in a
tagscolumn. Tags that don't exist yet are auto-created.
You'll see a preview before committing the import. Common mistakes (a phone number that didn't parse, a duplicate name) show inline so you can fix the CSV and re-upload.
3. Sync from an integration
If you already use Square POS or Gusto, you can pull the roster automatically.
Square — Settings → Integrations → Square → Connect → after OAuth completes, "Import Employees" button appears. Click it; Timely pulls the list and shows a mapping screen where you can match Square team members to existing Timely employees (or create new ones).
Gusto — same flow under Integrations → Gusto. Pulls active employees with their employment types and pay rates. PTO balances are also synced if you connect the optional PTO scope during OAuth.
After the initial import, you can re-sync any time — new employees added on the integration side appear in a "ready to import" list. Existing mapped employees stay linked across syncs.
Removing employees
Two options, depending on what you mean:
- Soft remove — toggle the employee to "inactive" on the Team page. They keep their data + schedule history but stop appearing in the schedule grid for new weeks.
- Hard delete — Team page → click employee → Delete. Removes the employee row entirely. Schedule history is retained for analytics (the rows are tagged with the employee's id even after deletion), but the employee disappears from the UI.
Hard delete also unsubscribes them from any SMS, removes their tags, and disconnects them from any integration mappings. There's no undo — re-add them as a new employee if you need to.