Time Tracking & Harvest
Harvest integration provides time tracking, project management, and budget monitoring for tickets. Time entries logged in Harvest are synced to tickets and displayed in the timeline.
Overview
The Harvest integration connects ticket work to billable time:
Agent works on ticket
→ Logs time in Harvest against the linked project
→ Sync cron imports entries into ticket system
→ Timeline shows interleaved time entries and ticket events
→ Budget utilization calculated and displayed
→ Over-budget triggers lock if threshold exceeded
Viewing Time Data on a Ticket
Sidebar Fields
| Field | Description |
|---|---|
| Harvest Project | Linked Harvest project name (click to open in Harvest) |
| Budget Hours | Total allocated hours for this work |
| Quoted Hours | Hours originally quoted to the client |
| Hours Used | Total time entries from Harvest |
| Utilization | Percentage: Hours Used / Budget Hours |
Timeline View
Navigate to the ticket's Timeline tab (or scp/timeline/):
- Shows thread entries (messages, responses, notes) interleaved with time entries
- Time entries show: who logged, hours, date, and notes
- Entries are ordered chronologically for a complete picture of work
- Color-coded: thread entries vs. time entries are visually distinct
Logging Time
From the Ticket Page (Direct Entry)
You can now log time directly to Harvest from the reply and note forms — no need to switch to the Harvest app.
When you open a ticket that has a linked Harvest project, a Log Time to Harvest panel appears at the bottom of both the reply and note forms.
First-Time Setup: Connect Your Harvest Account
- The panel shows a Connect button on first use
- Click Connect — a popup opens to Harvest's authorization page
- Log in with your Harvest credentials and authorize the ticket system
- The popup closes automatically and the panel activates
- You can also connect from Profile → Harvest tab
Using the Timer
- Check the Log Time to Harvest checkbox to expand the panel
- Click ▶ Start — a running timer begins (synced to Harvest's native timer, persists across tabs/devices)
- Work on the ticket and write your reply or note
- Click ⏹ Stop — elapsed time displays with a green checkmark
- Submit your reply/note — the timer's hours and your notes are pushed to Harvest
Manual Hours
If you prefer to enter hours manually instead of using the timer:
- Check the Log Time to Harvest checkbox
- Enter hours in the Hrs field (minimum 0.25, increments of 0.25)
- Optionally select a specific task from the dropdown
- Submit your reply/note
AI Note Generation
Click the ✦ (magic wand) button next to the note field to auto-generate a concise description from your reply/note text using AI. The AI summarizes your full message into a 2–8 word Harvest-friendly time entry note.
Tab Switching
If you start filling in the Harvest panel on the Note tab and then switch to the Reply tab (or vice versa), all Harvest settings — checkbox, hours, timer state, task selection, and notes — transfer automatically to the active tab.
In Harvest Directly
- Open Harvest (web or desktop app)
- Select the project linked to the ticket
- Log your time with descriptive notes
- Entries will sync to the ticket on the next cron run
Project Linking
Automatic Project Creation
When certain conditions are met, a Harvest project is automatically created:
- Ticket reaches a certain status
- Staff triggers project creation from the ticket
- Budget hours are assigned
Manual Project Linking
If a Harvest project already exists:
- Open the ticket
- Edit the Harvest Project ID custom field
- Enter the Harvest project ID
- Save — the system will start syncing entries from that project
Budget Monitoring
Budget Fields
| Field | Set By | Description |
|---|---|---|
| Budget Hours | PM or admin | Total hours allocated |
| Quoted Hours | PM | Hours quoted to client |
| Hours Used | Automated (sync) | Sum of Harvest time entries |
Utilization Display
The budget utilization percentage is calculated:
Utilization % = (Hours Used / Budget Hours) × 100
Displayed with color coding:
- 🟢 0–75% — On track
- 🟡 75–90% — Approaching limit
- 🟠 90–100% — Near budget
- 🔴 100%+ — Over budget (locked)
Over-Budget Alerts
When utilization exceeds the threshold, the system:
- Locks the ticket (prevents further responses without PM unlock)
- Sends notification to assigned PM
- Shows "Over Budget" badge on the ticket
See Over-Budget Locking for the complete workflow.
Sync Schedule
| Cron | Frequency | What |
|---|---|---|
tools/harvest-times-used-import.php | Periodic | Imports new time entries, updates budgets |
Sync Behavior
- Only imports entries newer than the last sync
- Deduplicates using Harvest entry IDs
- Updates budget utilization after import
- Triggers over-budget check for affected tickets
Common Scenarios
"Where's my time entry?"
If you logged time in Harvest but don't see it on the ticket:
- Wait for the next sync cycle (runs periodically)
- Verify you logged against the correct Harvest project
- Check the Harvest Project ID field on the ticket matches
"Budget shows 0 hours"
The PM or admin needs to set the Budget Hours field:
- Open the ticket
- Edit the Budget Hours custom field
- Enter the allocated hours
- Save
"Ticket shows wrong project"
- Open the ticket
- Check the Harvest Project ID custom field
- Correct it to the right project ID
- Entries from the wrong project will remain until cleaned up manually
Troubleshooting
| Issue | Solution |
|---|---|
| No time entries showing | Check Harvest project is linked; wait for sync |
| Budget not calculated | Verify Budget Hours field is set (not 0) |
| Old entries missing | Sync only pulls recent entries; historical import needed |
| Duplicate entries | Should be prevented by UNIQUE key; report to admin |
| Timeline not loading | Check JavaScript console; try hard refresh |