Export columns

The working-time record export (see Access to and copy of the record) has stable columns: each column name is an English key that is not translated and doesn't change from one language to another. If you want to import the file into another system, you can rely on them: when a column is added it goes at the end of its section, and none is renamed or removed.

What the file looks like

  • The CSV is a single file with all the sections. Its first column is section (entry, change, day_total or month_total), followed by the columns of the four sections one after another; those that don't apply to a row are left empty. It carries a BOM (it opens correctly in Excel) and cells that could be read as a formula are neutralised.
  • The Excel (XLSX) has an info sheet (company, tax ID, range, time zone, view and download date) and one sheet per section: entries, changes, day_totals and month_totals, each with only its own columns.
  • Instants are in ISO 8601 with the offset of the company's time zone (2026-10-15T09:00+02:00), days as YYYY-MM-DD and months as YYYY-MM. Durations are whole minutes, booleans are true or false and enumerated values appear as their code.
  • What doesn't apply or wasn't recorded is left empty: People doesn't invent data.
  • In the minimised view for the workers' representatives, the tax ID, the IPs and the conciliation measures (key and text) are still columns, but empty, so the file has the same shape for everyone.

Segments: entries (entry)

One row per segment (the start entry and, if there is one, the one that closes it). Voided segments are also included, marked.

ColumnWhat it contains
employee_idThe person's identifier
employee_last_nameLast name
employee_first_nameFirst name
employee_tax_idTax ID (empty in the minimised view)
dateDay of the start, in the company's time zone
kindSituation: WORK (working day), BREAK, WAITING, ON_CALL or DISCONNECTION_INTERRUPTION
startStart instant
endEnd instant (empty if there is no clock-out)
duration_minutesDuration of the segment in minutes
start_clocking_idIdentifier of the start entry
end_clocking_idIdentifier of the end entry
start_channelChannel the start was made through: WEB, MCP, CHAT, SYSTEM, TECHNICAL_INCIDENT or LEGACY (before the history existed)
end_channelChannel of the end, with the same values
modalityON_SITE or REMOTE
hours_natureORDINARY, OVERTIME or COMPLEMENTARY
overtime_compensationREST or PAY, for overtime
force_majeuretrue if the hours are due to force majeure
conciliation_measure_keyKey of the conciliation measure (empty in the minimised view)
conciliation_measure_textDetail of the measure (empty in the minimised view)
automatic_endtrue if the end was set by the automatic closing that predates this record
incompletetrue if it is a clock-in with no clock-out on a day that has ended
voided_atInstant the segment was voided
end_voided_atInstant only the clock-out was voided
has_conciliation_measuretrue if the segment carries a measure (the only thing the representatives see)

Changes: changes (change)

One row per applied revision and per change proposal, with who proposes, who authorises, the disagreement and the "after closing" and technical-incident marks.

ColumnWhat it contains
employee_id, employee_last_name, employee_first_nameThe person concerned
recordrevision (applied change) or proposal
idIdentifier of the row
proposal_idThe proposal a revision comes from
clocking_idEntry concerned
actionCREATE, MOVE (time change), VOID or RECLASSIFY
atInstant of the change
statusPENDING, ACCEPTED, REJECTED or WITHDRAWN
channelChannel it was made through
technical_incidenttrue if it is a technical incident
after_closetrue if it is after the month closed
reasonReason for the change
before, afterHow the entry was and how it is now (in JSON)
authorWho made the change
author_ipIP it was made from (empty in the minimised view)
proposed_byWho proposed
proposed_forOn behalf of which party: EMPLOYEE or COMPANY
proposer_ipIP of whoever proposed
decided_byWho decided
decided_forOn behalf of which party they decided
decided_atInstant of the decision
decider_ipIP of whoever decided
decision_reasonReason for the decision, if it was rejected
employee_discrepancyThe person's disagreement
discrepancy_atWhen they left it
applied_atWhen it was applied to the record
representation_notified_atWhen the workers' representatives were notified

Daily totals: day_totals (day_total)

One row per person and day. All times are in minutes.

ColumnWhat it contains
employee_id, employee_last_name, employee_first_nameThe person
dateThe day
worked_minutesEffective work (includes interruptions of disconnection)
ordinary_minutesOf which, ordinary
overtime_minutesOf which, overtime
complementary_minutesOf which, complementary
unclassified_minutesOf which, unclassified (only what is stored counts, not the proposal)
break_minutesBreaks
waiting_minutesWaiting times
on_call_minutesOn-call time
disconnection_minutesInterruptions of disconnection (already included in effective work)
incompletetrue if there are clock-ins with no clock-out that day
workday_regimeFULL_TIME or PART_TIME, per the contract in force
part_time_percentagePercentage of the part-time working day
schedule_modeFIXED or FLEXIBLE
ordinary_limit_exceededtrue if the daily maximum of ordinary hours is exceeded
short_rest_minutesMinutes of rest since the previous working day, if it was less than 12 hours

Monthly totals: month_totals (month_total)

One row per person and month. It repeats the nine minute columns of the daily totals (worked_minutes … disconnection_minutes), now added up per month, and adds:

ColumnWhat it contains
employee_id, employee_last_name, employee_first_nameThe person
monthThe month (YYYY-MM)
days_workedDays with work
incomplete_daysIncomplete days
flexible_target_minutesMonth's target on a flexible schedule
flexible_worked_minutesWorked in the month on a flexible schedule
flexible_excess_minutesExcess over the target (never negative)
flexible_deficit_minutesShortfall against the target (never negative)

The flexible count only appears for whole months within the downloaded range. The balance is split into excess and deficit, two columns that are never negative.

Export columns