Basecamp
The Basecamp integration connects Timesheet to your Basecamp projects. Your Basecamp to-dos appear in Timesheet as todos you can track time against, and the todos you create in Timesheet appear in Basecamp. Changes can flow in both directions.
Basecamp sells its own time tracking as a paid Timesheet upgrade. This integration does not require it. Without the upgrade, to-dos sync and your hours stay in Timesheet. With the upgrade, tracked time is also written into Basecamp as timesheet entries.
The Basecamp integration requires a Pro plan or above. See the Plans page for the full comparison.
Before you start
- A Basecamp account. Any plan works, including the free one.
- Access to the Basecamp projects you want to sync.
- A Timesheet Pro plan.
Basecamp client users cannot manage webhooks. If you connect with a client account, real-time inbound sync is unavailable and the integration falls back to the scheduled sync.
Install and connect
In the web app, open Integrations, select Browse Marketplace, and install Basecamp. Open the integration and select Connect, then sign in to your Basecamp account and authorize access.
The connection uses OAuth, so Timesheet never sees your Basecamp password. If your login has access to more than one Basecamp account, the integration uses the first Basecamp account on the authorization.
Once connected, the header shows Connected and Sync Enabled, with Sync Now and an Actions menu. The integration is organized into five tabs: Sync Dashboard, Settings, Triggers, Mappings, and Logs.
Choose how it syncs
On the Settings tab, set the direction and what gets written.
- Sync Direction: bidirectional (both ways), timesheet-to-basecamp (Timesheet to Basecamp only), or basecamp-to-timesheet (Basecamp to Timesheet only).
- Write time entries to Basecamp: auto writes tracked time into Basecamp on projects that have the Timesheet upgrade, and skips projects that do not. off disables time writing entirely and keeps only to-do sync.
- To-do list: the name of the Basecamp to-do list new to-dos are created in. Leave it empty to use the project's first list.
Select Save to apply.
Map your projects
On the Mappings tab, pair each Timesheet project with a Basecamp project. Only mapped projects sync.
Select + Add to create a pair, then Save. Map your projects before your team starts tracking, so every entry lands in the right place.
Map your team
The same tab has a User Mapping section that pairs each Timesheet user with a Basecamp person. It is optional, and you can skip it if you work alone.
Map your team when more than one person tracks time. Each member's time then appears under their own name in Basecamp instead of under the account that connected the integration, and to-do assignments stay in step on both sides.
The list offers the people on your mapped Basecamp projects. Basecamp clients are not shown, because they cannot own time entries.
Two things are worth knowing before you map:
- Once you map anyone, time logged in Basecamp by a person you have not mapped is no longer imported. This keeps their hours from landing on the wrong Timesheet member. Map everyone who logs time, or leave the user mapping empty.
- Mapping someone later does not move time that was already imported. Only new entries pick up the mapping.
When it syncs
The Triggers tab controls what starts a sync. You can turn each trigger on or off.
- Todo Changed: syncs
todo.create,todo.update, andtodo.deleteto Basecamp as they happen. - Time Entry Changed: writes
task.create,task.update, andtask.deleteto Basecamp timesheet entries. - Basecamp Webhook: receives inbound to-do changes from Basecamp automatically.
- Scheduled Full Sync: sends anything Timesheet did not get to send earlier, by default daily at 02:00 UTC.
- Scheduled Inbound Sync: brings Basecamp changes into Timesheet, by default every six hours.
- Manual Sync: runs when you select Sync Now or Run Full Sync.
- Register Webhooks: creates the Basecamp webhooks for the projects you mapped.
Basecamp webhooks are created one per mapped project. When you add a new project mapping, run Register Webhooks to set up its webhook right away, or wait for the next inbound sync to do it for you.
How to-dos map
A Timesheet todo and a Basecamp to-do stay paired one to one:
- The todo name becomes the to-do content, and the description carries over.
- A due date on the todo becomes the Basecamp due date.
- Completing on either side checks off the other.
- Deleting a todo in Timesheet moves the Basecamp to-do to the trash. Basecamp has no permanent delete for to-dos.
- Trashing or archiving a to-do in Basecamp removes the matching Timesheet todo, either right away through the webhook or with the next inbound sync.
- With your team mapped, assignees carry over both ways. People assigned in Basecamp who have no Timesheet account keep their assignment.
How time reaches Basecamp
Tracked time is written to Basecamp only when two things are true:
- The Basecamp project has the Timesheet upgrade. It is included on Basecamp Pro Unlimited, sold separately on the per-user Pro plan, and not available on Free. Projects without it are skipped, and to-do sync continues normally.
- The Timesheet entry is linked to a todo. A Basecamp timesheet entry has to attach to a to-do, so entries with no todo stay in Timesheet only.
When both apply, the entry appears on the matching Basecamp to-do with the tracked duration in hours, the start date, and your description. Break time is subtracted first. Running timers are not written until they are stopped.
The entry is filed under the member's own Basecamp person when you mapped your team, and under the account that connected the integration when you did not. Basecamp only accepts this for people who are members of that project, so add everyone to the Basecamp project as well.
With bidirectional sync, time logged directly in Basecamp comes back as a Timesheet task on the mapped project. Basecamp does not send webhooks for timesheet entries, so inbound time arrives with the scheduled inbound sync rather than in real time. Deleting a time entry in Basecamp does not remove the Timesheet task, because Basecamp offers no way to see which entries were deleted.
Write time entries to Basecamp only controls what Timesheet sends. To stop reading Basecamp time as well, set the sync direction to Timesheet to Basecamp.
Monitor syncs
The Sync Dashboard shows the health of the integration: how many of the recent runs succeeded or failed, how many items synced, the connection state, the scheduled sync time, and the last sync result. Select Run Full Sync to reconcile everything now.
The Logs tab lists each run with its status, trigger, date, and duration, so you can see exactly what synced and when.
Remove the integration
Use the Actions menu in the header, or the Uninstall Integration option on the integration page. This removes the integration and its mappings in Timesheet. To-dos and time already synced stay in Basecamp, so remove them there if you no longer want them.
Troubleshooting
The integration shows as disconnected. Open the integration and select Connect again. Basecamp access tokens expire after two weeks and are normally refreshed automatically, but a long gap without syncing can require reconnecting.
To-dos are not appearing in Basecamp. Check that the project is mapped and that the sync direction allows Timesheet to write to Basecamp. Confirm the Basecamp project has its To-dos tool enabled and contains at least one to-do list. Open the Logs tab to look for failed runs.
Changes in Basecamp arrive late. Real-time inbound sync needs a webhook on that project. Run Register Webhooks from the settings, and check that you did not connect with a Basecamp client account, which cannot create webhooks. Until then, changes arrive with the scheduled sync.
Time is not appearing in Basecamp. Confirm the Basecamp project has the Timesheet upgrade, that Write time entries to Basecamp is set to auto, and that the time entry is linked to a todo. Entries with no todo are not written.
Time shows under the wrong person in Basecamp. Map that member on the Mappings tab, and add them to the Basecamp project. Basecamp only accepts time for people who are members of the project, and falls back to the connected account for everyone else.
Time logged in Basecamp is missing in Timesheet. Once you map any user, only people you mapped are imported. Add the missing person to the user mapping. Their earlier entries are imported the next time they change.
A sync run was throttled. Basecamp limits how many requests an application can make in a short window. The integration waits and retries automatically, and the next scheduled sync picks up anything that was missed.
For anything else, contact support@timesheet.io with your Timesheet account email and Basecamp account name.
See also
- Integrations: install integrations and manage API keys and webhooks.
- Google Calendar: sync tracked time with Google Calendar.
- Plans: compare what each plan includes.