toggl2jira
CLI application to replicate toggl time entries to Jira worklogs
Install
- Install toggl2jira from pypi
# we recommend pipx to install
pipx install toggl2jira
# otherwise you can install with pip in a virtual environment. YMMV
python3 -m .venv
source .venv/bin/activate
pip install toggl2jira
- Configure application (see below)
- (optional) Setup a regular task to fully automatic sync your tasks
Usage
Start each Toggl entry with a Jira issue reference followed by a slash to enable worklog sync for this time entry.
Example:
MYPROJECT-1337/This text will also be synced to Jira
Just run the sync script to sync all time entries within the configured sync window. This action is idempotent and can be executed multiple times without problems.
Configuration
Configure by setting environment variables or creating a toggl2jira.env file in of the following locations. See .env.example for a template.
- Current working directory
~/.config- Location of the script
| Config | Default | Description |
|---|---|---|
JIRA_URL |
required | Base URL to your Jira Server Instance (e.g. https://jira.example) |
JIRA_ACCESS_TOKEN |
required | Jira personal access token. See Jira Docs |
JIRA_PROJECT_SLUG |
required | Jira project slug that is considered for sync |
TOGGL_URL |
"https://api.track.toggl.com" |
Toggl API base URL |
TOGGL_API_KEY |
required | Toggl API key. See Toggl Docs |
SYNC_WINDOW_SIZE |
1 |
Amount of days, the sync will look in the past |
Setup Examples
launchd (MacOS)
- Create LaunchAgent config
<!-- /Users/###user###/Library/LaunchAgents/com.github.schlakob.toggl-jira-sync.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.github.schlakob.toggl-jira-sync</string>
<key>ProgramArguments</key>
<array>
<string>/Users/<<user>>/.local/pipx/venvs/toggl2jira/bin/python</string>
<string>/Users/<<user>>/.local/bin/toggl2jira</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
<key>StandardOutPath</key>
<string>/path/to/code/toggl-jira-sync/out.log</string>
<key>StandardErrorPath</key>
<string>/path/to/code/toggl-jira-sync/err.log</string>
</dict>
</plist>
- Enable and start LaunchAgent
launchctl bootstrap gui/$(id -u) /Users/<<user>>/Library/LaunchAgents/com.github.schlakob.toggl-jira-sync.plist
launchctl kickstart -k gui/$(id -u)/com.github.schlakob.toggl-jira-sync
Metadata
Release files for toggl2jira 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| toggl2jira-2.0.0.tar.gz | 6.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| toggl2jira-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.9 kB
Release files / toggl2jira-2.0.0.tar.gz
| Download URL | toggl2jira-2.0.0.tar.gz |
|---|---|
| Size | 6.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
96d781972f4d141efb01070ed3d371be0a8955d65d8bc34e9e9f9d5e917bfca4
|
|
BLAKE2b-256 checksum How to use checksums |
c602d31b2f281ff9ff420aeeff58e5f8edc1a24e868c25cab9aff41bb2334e7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2025.
Transparency logRelease files / toggl2jira-2.0.0-py3-none-any.whl
| Download URL | toggl2jira-2.0.0-py3-none-any.whl |
|---|---|
| Size | 7.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e710cb4c7d1cd6ff36d6ffd41aa9149f021e5160d61558e79baa894756c9bca9
|
|
BLAKE2b-256 checksum How to use checksums |
24cf95cb0002b1de8507d558de5109ce12be4f92dd179979cc3bf956b1fc83ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2025.
Transparency log