Integrations

Warren connects with Clockify, Toggl Track, Timely, and Harvest for time tracking; Slack for conversational hour logging; and Microsoft Teams for weekly reporting. Timesheet sync runs natively in Warren — no server required. Slack and WiFi/VPN Sync run on a self-hosted server (code and app manifest available on Gumroad). MS Teams uses an incoming webhook. All integrations are optional — use what fits your team.

👤
Role required: Admin — All integrations are configured in Settings. Only Admins can access Settings.

Overview

⏱ Clockify — timesheet sync
⏱ Toggl Track — timesheet sync
⏱ Timely — timesheet sync
⏱ Harvest — time entries & invoices
đŸ’Ŧ Slack — hour logging & summaries
đŸŸĻ Microsoft Teams — weekly reports

Timesheet Sync

Warren's Timesheet Sync Engine imports time entries from Clockify, Toggl Track, Timely, and Harvest directly into your workspace — no server or middleware required. Entries from the last 30 days are fetched on demand and matched against open projects by name.

🔑
Your API key is stored exclusively in your macOS Keychain using the data-protection keychain (kSecUseDataProtectionKeychain). It is never sent to Warren's servers — all requests go directly from your Mac to the provider's API.

The general setup flow is the same for every provider:

1

Open Settings → Integrations → Timesheets

Press ⌘, to open Settings, navigate to Integrations, then select the Timesheets tab.

2

Select your provider

Choose Clockify, Toggl Track, Timely, or Harvest from the provider picker.

3

Paste your API key and choose a workspace

Each provider has a different place to generate the key — see the provider-specific sections below. After pasting the key, Warren fetches your available workspaces so you can select the right one.

4

Hit Sync Now

Warren imports entries from the last 30 days and matches them to open projects. You can re-sync at any time with the â†ģ Sync Now button.

Clockify

Clockify is a free time tracker. To connect it:

  1. In Clockify, go to Profile Settings → API and copy your API key.
  2. In Warren, open Settings → Integrations → Timesheets, select Clockify, and paste the key.
  3. Choose the Clockify workspace to sync from, then click Sync Now.

Warren matches Clockify time entries to Warren projects by project name. Entries without a matching project are imported into an Unmatched holding list where you can assign them manually.

Toggl Track

Toggl Track's personal API token is used (not OAuth). To find it:

  1. Log in to Toggl Track, click your avatar → Profile, scroll to the bottom, and copy the API token.
  2. In Warren, open Settings → Integrations → Timesheets, select Toggl Track, and paste the token.
  3. Select the Toggl workspace to sync from, then click Sync Now.

Toggl time entries are matched to Warren projects by project name. Descriptions are imported as the log note.

Timely

Timely uses a personal API access token. To generate one:

  1. In Timely, go to Settings → Integrations → API Access and create a new token.
  2. In Warren, open Settings → Integrations → Timesheets, select Timely, and paste the token.
  3. Choose the Timely account to sync from, then click Sync Now.

Timely's AI-logged hours and manual entries are both imported. Memory entries (Timely's automatic tracker) are included if they've been confirmed in Timely.

Connecting Harvest

Harvest is a time tracking and invoicing tool. When connected, Warren imports time entries as logs and pulls invoices into the Invoices section — making it the most deeply integrated of the timesheet providers.

What you'll need

1

Open Settings → Integrations → Timesheets → Harvest

Press ⌘, to open Settings, navigate to Integrations, select the Timesheets tab, then choose Harvest as the provider.

2

Enter your credentials

Paste your Harvest Account ID and Personal Access Token. Warren stores these in your macOS Keychain — they're never sent to any server except Harvest's.

3

Test the connection

Click Connect. Warren fetches your Harvest projects to verify the credentials work.

4

Map your users

Warren shows each Harvest user and asks you to match them to a Warren team member. This is how time entries get attributed to the right person.

Time sync

Once Harvest is connected, Warren can sync time entries in both directions:

DirectionWhat happens
Harvest → Warren Time entries logged in Harvest appear as Warren time logs. Useful if your team already uses Harvest's timer.
Warren → Harvest Hours logged in Warren (or via the Slack bot) are pushed to Harvest. Keeps your Harvest reports accurate.

Sync runs automatically in the background, or you can trigger it manually with the â†ģ Sync button in the Invoices toolbar.

âš ī¸
The first sync imports all historical Harvest entries. Depending on your Harvest history, this can take a minute. Do it when you're not mid-session.

Invoices from Harvest

Warren pulls invoices directly from Harvest and displays them in the Invoices section. You can:

💡
Linking invoices to projects feeds their amounts into the burn rate calculation. An invoiced amount is shown separately from unbilled hours so you can see exactly what's been billed vs. what's still outstanding.

User & project mapping

Warren maintains a mapping table that links Warren team members and projects to their Harvest equivalents. You can review and edit these in Settings → Harvest → Mappings.

If a team member logs hours in Warren but they're not mapped to a Harvest user, those entries won't sync to Harvest. Check the mapping table if you notice missing entries.

Connecting Slack

The Warren Slack bot lets your team log hours directly in Slack without opening the app. It also sends weekly burn rate summaries to a channel of your choosing.

â„šī¸
Warren uses a self-hosted Slack app model — each workspace creates their own private Slack app using Warren's configuration. Your tokens stay on your Mac and are never sent to any Warren server.

What you'll need

1

Create a new Slack app from the Warren manifest

Go to api.slack.com/apps → Create New App → From an app manifest. Choose your workspace, then paste the YAML below into the manifest editor and click Next.

display_information:
  name: Warren
  description: Log hours and track project burn rate from Slack
  background_color: "#5B4FE9"
features:
  bot_user:
    display_name: Warren
    always_online: true
oauth_config:
  scopes:
    bot:
      - chat:write
      - im:history
      - im:write
      - app_mentions:read
      - users:read
      - channels:history
settings:
  event_subscriptions:
    bot_events:
      - message.im
      - app_mention
  interactivity:
    is_enabled: true
  socket_mode_enabled: true
  token_rotation_enabled: false
2

Install the app to your workspace

Review the summary and click Create. Then go to Settings → Install App and click Install to Workspace. Approve the permissions.

3

Copy your Bot Token

After installing, go to OAuth & Permissions. Copy the Bot User OAuth Token — it starts with xoxb-.

4

Generate an App-Level Token

Go to Basic Information → App-Level Tokens → Generate Token and Scopes. Name it anything (e.g. "Warren Socket"), add the connections:write scope, and click Generate. Copy the token — it starts with xapp-.

5

Add both tokens to Warren

Open Warren → ⌘, Settings → Slack. Enable the Slack Bot toggle, paste your Bot Token (xoxb-) and App Token (xapp-), then click Save Tokens.

6

Link your team members

Go to Team, open each team member's profile, and set their Slack Member ID. This tells Warren who is logging when someone sends a message. To find a Slack Member ID: in Slack, click the person's name → View full profile → three-dot menu → Copy member ID.

âš ī¸
Team members without a linked Slack ID can still send commands, but their hours won't be saved to any project. Warren will warn them in Slack to ask a manager to link their profile.

Linking team members to Slack

Warren matches incoming Slack messages to team members using their Slack Member ID. Without this, hours logged in Slack won't be attributed to anyone.

To link a member: go to Team → open the team member → set their Slack Member ID.

To find someone's Slack Member ID: in Slack, click their name → View full profile → three-dot menu → Copy member ID. It looks like U012AB3CD.

Logging hours via Slack

Once connected, team members can log hours by mentioning the bot in any channel or DMing it directly.

Basic syntax

Example messageWhat it does
@warren log 3h brand refreshLogs 3 hours to a project matching "brand refresh"
@warren log 1.5h on pitch deck todayLogs 1.5 hours today
@warren log 2h discovery yesterdayLogs 2 hours to the previous day
@warren hoursShows your logged hours for the current week
@warren helpLists available commands
â„šī¸
Warren matches the project name you type against your active projects. If there's ambiguity, the bot will ask you to clarify by number. You can also set a Slack alias for each team member in their Warren profile so the bot knows who's logging.

Streak tracking

Warren tracks each person's daily logging streak and celebrates milestones in Slack. Streaks encourage consistent time logging across the team — a common pain point in design studios.

Weekly burn rate summaries

Warren can post a weekly burn rate summary to a designated Slack channel. It shows:

To configure: Settings → Slack → Weekly Summary → choose a channel and a day/time to post.

WiFi/VPN Sync

WiFi/VPN Sync is Warren's local-first synchronization solution. It lets you keep Warren data in step across multiple Macs on the same network or company VPN without a server.

â„šī¸
WiFi/VPN Sync uses peer-to-peer discovery via Bonjour and iCloud. It works best for teams in the same office or connected via VPN.

What you'll need

1

Open Settings → WiFi/VPN Sync

Press ⌘, to open Settings, then navigate to WiFi/VPN Sync.

2

Set your Group Code

Choose a unique code for your studio (e.g. studio-2026) and enter it on every device. This ensures you only sync with your own team.

3

Enable and Sync

Toggle sync On. Warren will browse for peers. When a peer appears, click Sync to exchange the latest data.

Client share links

Once WiFi/VPN Sync is configured, you can generate read-only project URLs for your clients. Each link can be password-protected and given an expiry date.

To create one: open a project → click Share → set optional password and expiry → Generate Link. See Client share links for more.

💡
WiFi/VPN Sync uses a last-write-wins strategy. Warren pushes a full snapshot after every save and pulls on launch. Let one device finish saving before starting work on another to avoid overwriting work.

Microsoft Teams reporting

Warren can post the same weekly report to a Microsoft Teams channel. Configuration is in Settings → Integrations → Microsoft Teams.

You'll need a Teams Incoming Webhook URL from your Teams workspace. Paste it into Warren and Warren will send reports to that channel on your chosen schedule.