Skip to content

Request an integration

Tell us which system you want to connect. We review every request weekly and publish a step-by-step guide or build the connection.

Inbox (client timesheets)

Office guide: receive client timesheets by email or upload, let TimeTracking read them, and review what it could not apply automatically.

Last updated: · Markdown version

Clients often send hours as Excel, CSV, PDF or a plain email. "Inbox urenstaten" (Inbox) reads them and records the hours as client hours ("Opdrachtgever (mail)"). Clear rows are applied automatically; uncertain rows wait for you.

Developer details: Inbound email.

Set up

  1. Your inbox address is shown at the top of "Inbox urenstaten": uren+<your-organisation>@in.timetracking.tech. Ask clients to send timesheets there, or forward them yourself.
  2. Link the client's email domain. In "Opdrachtgevers" (Clients), fill "E-maildomeinen voor urenmails" (email domains for timesheet mails), e.g. vdl-montage.nl. Only mail from these domains is read automatically.
  3. Employee numbers help. Rows are matched to people by employee number first, then by name. Make sure "Personeelsnummer" is filled in "Medewerkers".

What is read

Sent as Result
.xlsx, .csv Read directly. Long lists (one row per person per day) and week grids (columns ma/di/wo… or dates) both work
Photo or PDF Read with AI, on paid plans only, max 5 per email
Plain email text ("Jan 32 uur") Weekly totals per person, compared with the app hours
Old .xls Not read: ask the client for .xlsx or .csv

Recognised column names include "naam"/"medewerker", "personeelsnummer", "datum", "uren"/"totaal", "begin"/"van", "eind"/"tot", "pauze".

Document statuses

Status Meaning
"Ontvangen" (received) Being processed
"Verwerkt" (processed) All rows applied
"Te controleren" (to check) Some rows need you
"Quarantaine" (quarantine) Not read: sender domain belongs to no client, or the sender could not be verified (forged sender protection)
"Mislukt" (failed) File could not be processed

Review rows

  1. Open "Inbox urenstaten". Rows under review show the extracted name, date and hours and why they were not applied (low confidence, no matching person, "Weektotaal wijkt af" = weekly total differs from the app).
  2. For each row choose the person ("Kies medewerker…"), check date and hours, and click "Vastleggen" (apply). The hours are recorded as client hours for that day.
  3. Or click "Negeren" (ignore) when the row is not relevant (totals line, someone not yours).
  4. If client hours differ from the employee's hours, a conflict appears in the weekly overview. Solve it there (Weekly close).

Upload by hand

Got a file outside email? Use "Bestand handmatig uploaden" (upload file manually): choose the client, "Week (maandag)" (week, Monday) and the file ("Bestand (.xlsx, .csv, foto of PDF)"), then "Uitlezen" (read). Same processing as email.

Common problems

Problem Fix
Mail in quarantine: domain belongs to no client Add the domain under "E-maildomeinen voor urenmails"; ask the client to resend or upload the file by hand
Mail in quarantine: sender not verified The client's mail server failed authentication (DMARC). Upload the file by hand
Hours on the wrong week Mail without dates is placed in last week (Mon–Wed) or this week (Thu–Sun). Upload by hand with the right week
Person not recognised Add the employee number to the client's sheet, or check the name spelling in "Medewerkers"
PDF not read AI reading needs a paid plan

Automate it

List and apply review items over the API: GET /inbox, POST /inbox/items/{id}/apply, POST /inbox/items/{id}/ignore (API reference), or tt inbox in the CLI.