TaskDash/Integrations

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.

7 webhook eventsSigned with HMAC-SHA256
4 API scopesstatus, time, activity, payroll
Developer roleAPI access without admin rights

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 signatures

REST API

Status, time entries, activity by category and payroll, as JSON. Keys can only read.

Endpoints

Google 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.

Planned

Telegram

Daily summaries and alerts in a chat or channel.

Planned

Discord

Status changes posted to the server your team lives in.

Planned

WhatsApp

Payout and break notices for people who live on their phone.

Planned

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.