BurrowTime docs

Export to Timetable

Send completed BurrowTime entries to Timetable with project mapping, an editable review, and safe retries.

Install the connector

Timetable export is optional. The latest release archive includes BurrowTime and its connector. With Go, install both commands and keep them on yourPATH.

go install github.com/fabean/BurrowTime/cmd/burrowtime@latest
go install github.com/fabean/BurrowTime/cmd/burrowtime-timetable@latest

Connect your Timetable account

Create a personal token in Timetable Settings. Get your user ID fromGET /api/me with that token. BurrowTime saves the environment variable name, not the token. The default site URL ishttps://timetable.bluedroplabs.com.

export TIMETABLE_TOKEN='your-personal-token'
burrowtime timetable configure --user YOUR_TIMETABLE_USER_ID
burrowtime timetable projects
burrowtime timetable map 'client portal' TIMETABLE_PROJECT_UUID

For another Timetable deployment, add --url https://your-hostto configure. Use --token-env NAME if your token lives in a different environment variable. The projects command lists accessible project IDs with their clients.

Preview, then upload

burrowtime timetable sync --today --dry-run
burrowtime timetable sync --today
burrowtime timetable status

Sync selects completed entries from today by default. In a terminal, it suggests destinations for unmapped local projects, then lets you review descriptions, destinations, and durations before confirming. A dry run makes no uploads or receipt changes. For automation, map projects first, inspect a dry run, and pass --yes to upload.

Use --from YYYY-MM-DD --to YYYY-MM-DD for an inclusive local-date range, or --all for all completed history. Nothing syncs in the background, and local frames remain unchanged.

How entries appear in Timetable

Timetable receives exact start and end timestamps by default. BurrowTime sorts the frame's tags into its description: +PORTAL-42 becomesPORTAL-42. Timetable has no billable field in this API, so the export does not send one.

Rounding is off by default. If needed, set --rounding up and--increment 15m when configuring, or override rounding for one mapping. Rounding changes only the exported end time.

Retry safely

Every upload carries source=burrowtime and the frame's stable ID as external_id. If a response is lost after Timetable creates the entry, rerunning sync sends the same request and Timetable returns the existing entry. A changed body with the same ID causes a conflict, which needs manual review. Synced frames are skipped on later runs; changes to a synced local frame are flagged rather than uploaded again.

Timetable and Clockify can both receive the same local project. Their mappings and receipts are separate. Keep integration-sync.jsonwhen backing up or moving your BurrowTime data.

See the full connector referenceand Timetable API guide.