How to export a site diary to CSV for payroll and invoicing
One download per project. Open diary_entries.csv in any spreadsheet and total the hours for payroll or your client invoice.
To export a project's site diary from Foreman, open the project, tap Download at the top of the page and choose Project data export (zip). You get a ZIP file. Inside it, diary_entries.csv has one row per diary entry with the date, crew member, hours and description, ready to open in Excel, Google Sheets or Numbers.
Admins can export any project. A Site Manager can export the projects they manage. Site Crew can't export.
How to export the diary
- Open Projects and tap the project you want.
- Tap Download in the top right of the project page. On a phone it shows as a download icon.
- Under Export, tap Project data export (zip). It shows "Preparing…" for a moment while the file is built.
- Open the downloaded ZIP. It's named after the project and today's date.
- Open
diary_entries.csvin your spreadsheet app.
The export is a CSV file rather than an Excel workbook. Every spreadsheet app opens CSV files, and they drop cleanly into most payroll and billing tools.
What's in the diary CSV
One row per entry, with these columns:
| Column | What it holds |
|---|---|
id | The entry's unique ID |
entry_date | The day the entry covers |
user_id | The crew member's unique ID |
crew_member_name | The crew member's name |
hours | Hours as a decimal, to four places |
description | What they wrote |
photo_count | How many photos are attached |
submitted_at | When the entry was actually saved |
If your business has Geolocation turned on, four more columns are added: latitude, longitude, location_accuracy_m and site_location (on_site, off_site or missing).
There's no project column, because the whole file is for one project.
Reading the hours column
Hours are decimals, so 8h 38m exports as 8.6333. Four decimal places means you can always get back to the exact minute (multiply by 60). A shift that closed itself after 12 hours with no check-out has an empty hours cell, not a zero. Nobody recorded those hours, and a zero would wrongly say nobody worked. A spreadsheet sum skips the blank, and Foreman's own totals leave it out too, so set the real hours in Foreman first and export again before you run payroll.
Using it for payroll and invoicing
The export covers every entry on the project, not a date range. To get one fortnight:
- Filter
entry_dateto the pay or billing period. - For payroll, total
hoursbycrew_member_name. A pivot table does this in a few clicks. - For invoicing a client, total
hoursfor the period. That's the time spent on the job.
Want to check the numbers before you export? Open the project's Site diary and tap View all. You can filter by date range and crew member, and the summary line shows the total entries and hours for what you've filtered.
What else is in the ZIP
The same download includes the rest of the project as separate CSVs: the project details, team, tasks, form submissions, induction register and document list. There's also a README.txt that lists how many rows each file holds. If a section has no data yet, its CSV is still there with just the header row.
Good to know
- Photos and files aren't in the export. Photos appear as a count. View them in Foreman.
- Marks like No check-in and Possible duplicate aren't columns. Check for them in the diary before you export.
- Deleted entries are gone from future exports. Edited entries export with their current values.
- Archived projects can still be exported.
- There's no export across all projects at once. Export each project, or ask an AI assistant connected to Foreman for hours across every job. See asking your AI assistant about your site.
- Foreman records hours, not dollars. Rates and pay are worked out in your own payroll or accounting software.
For how the hours get into the diary in the first place, see logging a site diary entry and check in and check out, or read more about Foreman's site diary.