Connect TaskDash to the tools you already run.
A read only REST API with scoped keys, signed webhooks, CSV and PDF exports, and Google sign-in. Chat notifications and imports are next.
Available now
Set these up in the panel under Developers. Owners can give anyone the Developer role so they can build and test without touching the rest of the team settings.
Webhooks
A POST to your endpoint when someone starts or stops, takes a break, pauses screenshots or gets paid.
Events and signaturesREST API
Status, time entries, activity by category and payroll, as JSON. Keys can only read.
EndpointsGoogle sign-in
On the web and in the app. The app signs in through your browser and comes back by itself.
PDF bills
One bill per person or a single file for the whole team, with bill numbers and your company details.
CSV exports
Reports and payroll download as CSV for spreadsheets or your accounting tool.
GitHub releases
The download page reads TrueDuty builds straight from GitHub, so it is never out of date.
Check a webhook in a few lines
Each request carries X-TrueDuty-Signature: sha256=<hex>, the HMAC-SHA256 of the raw body with your signing secret. Compare it before you trust the payload.
- Use the raw request body, not a re-encoded copy.
- Compare in constant time.
- Reply within five seconds. Slow endpoints are not retried.
import hmac, hashlib
def valid(raw_body: bytes, header: str, secret: str) -> bool:
mac = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest("sha256=" + mac, header)
import crypto from "node:crypto";
export function valid(rawBody, header, secret) {
const mac = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
const a = Buffer.from("sha256=" + mac), b = Buffer.from(header || "");
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
Coming next
Built on the same events the webhooks send today.
Telegram
Daily summaries and alerts in a chat or channel.
Discord
Status changes posted to the server your team lives in.
Payout and break notices for people who live on their phone.
Jira and Slack imports
Move boards and history over when TaskDash boards and channels ship.
Build on your own time data.
Create a key in Developers, read the reference, and send your first request in a minute.