Skip to content
TWINJAM

Time tracking integration

See which Harvest hours the contract actually pays for.

Pulls Harvest time entries by project and task, splits hours into contracted and uncontracted work, and syncs approved change orders back as billable budget.

Last reviewed Oct 26, 2026
Harvest logo
Vendor
Harvest (Iridesco LLC)
Plan
Agency and Scale plans
Authentication
Harvest OAuth 2.0 (Harvest ID)
Setup time
About 4 minutes
Sync
Every 15 minutes (Harvest has no time entry webhooks), plus on demand from the dashboard

Overview

How TWINJAM works with Harvest

Harvest tells you how many hours went into a project. It cannot tell you how many of those hours were for work the client agreed to pay for. TWINJAM reads Harvest time entries for the projects you connect and attributes each entry to a contracted deliverable or to a flagged scope item, using the task, the notes and the linked ticket where there is one.

The result is the split finance teams ask for: contracted hours, uncontracted hours already spent, and hours recovered through approved change orders. Margin telemetry uses this split to forecast project margin and realization rate week by week, and the client creep scorecard uses it to show which clients consistently ask for unbilled work.

When a change order is signed, TWINJAM can add the approved hours and fee to the Harvest project budget, so the project manager's budget view and the contract stay in step. That write-back is optional and scoped to budgets only.

In practice

Thirty-one hours, named and dated

In week 44, Harvest shows 213.5 hours on the Halvorsen app. TWINJAM splits them: 182.5 contracted, 31 uncontracted, 18 already recovered through a signed change order. Finance sees the gap before month-end close, not at the project post-mortem.

The payload on the right is the event TWINJAM emits to your triage feed and to outbound webhooks, so you can route it into your own reporting.

Example event, Harvestapplication/json
{
  "type": "margin.uncontracted_hours.updated",
  "id": "mgn_H6q9Le2B",
  "workspace": "HFX-APP",
  "source": {
    "tool": "harvest",
    "project": "Halvorsen Freight App",
    "period": "2026-W44"
  },
  "hours": {
    "contracted": 182.5,
    "uncontracted": 31,
    "recovered_by_change_orders": 18
  },
  "realization_rate": 0.91,
  "top_unbilled_item": {
    "flag": "flg_8Q2mHX41",
    "hours": 9.5,
    "label": "CSV export with custom columns"
  }
}

Permissions

Scopes requested, and why.

ScopeWhy TWINJAM needs it
harvest:{account_id}Access the single Harvest account you choose. Harvest scopes access per account.

Events

What triggers a check.

  • Poll: GET /v2/time_entries?updated_since=

    Fetches new and edited time entries for connected projects.

  • Poll: GET /v2/projects/{id}/task_assignments

    Keeps task-to-deliverable mapping current.

  • PATCH /v2/projects/{id} (optional)

    Adds approved change order hours and fees to the project budget.

Setup

Connect Harvest in about 4 minutes.

An admin connects once. PMs never need to re-authenticate, and you can revoke access from TWINJAM or the vendor's admin console at any time.

  1. 1Choose Connect Harvest and sign in with a Harvest administrator or project manager.
  2. 2Pick the Harvest account and map projects to contract workspaces.
  3. 3Map Harvest tasks to SOW deliverables. TWINJAM proposes a mapping from task names.
  4. 4Decide whether signed change orders should update Harvest budgets automatically.

FAQ

Harvest integration questions

Time entries for connected projects: hours, task, notes, date, billable flag. Project budgets and task assignments. Linked external references (Jira, Asana) where present. It never reads: projects not mapped to a contract; expenses, receipts and invoices; personal timesheet approvals or capacity data.

Optional: updates project budget hours and fee after a change order is signed. Every action that could reach a client requires a PM to approve it first.

Agency and Scale plans: Agency ($899/mo billed annually), Scale (from $1,800/mo billed annually). Every plan starts with a 14-day free production trial.

Every 15 minutes (Harvest has no time entry webhooks), plus on demand from the dashboard. Setup takes about 4 minutes.

Put Harvest on the same page as your SOW.

Connect it during a 14-day free production trial and see the first flags from your live projects within days.