Timely connects to five kinds of external systems:
- Square — POS + employee + timecard sync
- Gusto — payroll (push hours, PTO)
- QuickBooks Online — labor cost reporting
- Calendar feeds (Google, Apple, Outlook) — read-only ICS subscriptions
- ADP RUN / Paychex Flex — payroll, via a downloadable CSV rather than a live connection (see below)
All live at Settings → Integrations. Each one has its own page with its current connection state, sync history, and configuration.
What syncs where
| Integration | Direction | What flows |
|---|---|---|
| Square | Square → Timely | Employee roster (one-time + repeatable) |
| Square | Square → Timely | Timecards (ongoing weekly sync, used for Labor dashboard) |
| Gusto | Timely → Gusto | Hours, OT, PTO (manual push per pay period) |
| Gusto | Gusto → Timely | Active employees + pay rates (one-time pull) |
| QuickBooks | Timely → QuickBooks | Labor cost summary (manual push per period) |
| Calendar | Timely → external app | Read-only schedule feed (live updates) |
| ADP RUN / Paychex Flex | Timely → file, you → provider | Hours CSV, downloaded and uploaded by hand each pay period |
The data model is not fully bi-directional on purpose — Square is the source of truth for employees and timecards, Timely is the source of truth for the schedule, and Gusto is the source of truth for payroll.
CSV-only providers (no live connection)
ADP RUN and Paychex Flex don't offer a self-serve API for a product at Timely's scale to connect to — ADP's is gated behind a Marketplace partner application, and Paychex's own import path (Standard Payroll Import) is a file upload, not an API call. There's no OAuth step and nothing to "Connect": each provider's settings page just holds the account-specific config it needs to format the file correctly, plus a manual employee-ID mapping (there's no external roster to fetch and match against — you type in the ID your ADP/Paychex account uses for each person). See their own pages for exact fields and column layouts:
How OAuth works
The rest of this page — OAuth, disconnecting, mapping, multi-location, sync history — describes Square, Gusto, QuickBooks, and Calendar feeds. ADP RUN and Paychex Flex have no OAuth connection to disconnect and no sync history to audit; skip ahead to their own pages above.
Each integration uses OAuth 2.0. Click Connect, redirect to the provider, grant permission, redirect back. We store the access token + refresh token server-side; nothing sensitive ever lands in the browser.
If you change your password on the provider side, the access token is invalidated and you'll see a "Reconnect" prompt next time you open the integration page.
Disconnecting
Settings → Integrations → click the integration → Disconnect. This:
- Revokes Timely's OAuth access at the provider
- Stops all future syncs
- Leaves historical data intact (synced employees stay, past labor records stay)
If you want to start clean — delete all synced data — there's a "Disconnect and remove synced data" option for each integration. Use carefully; this can't be undone.
Mapping employees
When you sync a roster from Square or Gusto, you see a mapping screen: existing Timely employees on the left, external records on the right. Match each pair manually, or use the auto-match button (matches by email + phone exactly, name fuzzy).
Mappings are sticky across syncs. The next time you sync, mapped employees update in place; new external employees show as "ready to import."
Multi-location
Each integration is connected at the org level, not per location. So one Square OAuth grant covers all your locations. Square employees are tagged with their Square location and Timely uses that to map them to the correct Timely location at import time.
Sync history
Every sync writes a row to the integration history (visible on the integration's page). Includes timestamp, what was synced, and any errors. Useful for "did the Tuesday timecard pull actually fire?" auditing.
Specific integration pages
For setup details and provider-specific quirks: