All integrations

Time registration Available

Timeon

A cutover that takes months is not a bridge but two systems both being used. An import script only goes one way and only creates, so a correction made here gets overwritten or doubled. This integration keeps track of both sides, and turns the rule that an invoiced hour is a record into a mechanism rather than a ban.

What you need

  • The Uren (time) module is on; pairing projects works better with the Projects module too, but is possible without
  • An API key for your Timeon organisation, found in Timeon under Settings
  • Clients carrying the same client number on both sides: that is what they are paired on, never on name
  • The timeon.settings.manage permission to set the connection up; admin only by default

How to connect it

  1. 1 Switch Timeon on under Instellingen → Integraties and open Instellingen → Timeon. Choose Organisatie koppelen (connect organisation) and paste the API-sleutel. Both directions start off.
  2. 2 Press Controleren (verify). The answer names the organisation and its size, for example 7 employees, 108 clients, 159 projects: not just that the key works, but which books it opens.
  3. 3 If you imported hours earlier, set Niets aanraken tot en met (touch nothing up to and including) to the day of that import. Your old history then stays out of reach.
  4. 4 Open Synchronisatie openen and press Alleen koppelen (pair only). That run pairs what already exists on both sides and writes nothing.
  5. 5 Choose a direction per kind under Wat er gesynchroniseerd wordt (Ophalen uit Timeon pull, Sturen naar Timeon push, or Twee richtingen two-way) and run a Proefrun (dry run). Read the result: what would be pulled, pushed, protected and skipped.
  6. 6 Only then Synchroniseren, and only then Automatisch synchroniseren with the frequency your cutover needs.

A pairing carries two fingerprints, not a flag

Every paired row remembers what it looked like on both sides the last time they agreed. If only one side moved, that change travels in the direction you chose. If both sides moved, that is a conflict, and a conflict is a stored decision: keep this version, take Timeon's, or may differ. A difference you chose to keep is not proposed again every night, because a queue that keeps showing the same twelve rows is one nobody reads after three weeks. And a difference no direction can resolve, such as a Timeon project with no counterpart here, is not a conflict per hour but one warning per run you can act on.

Timeon does not know when an hour changed, so the window is the sync

Timeon's hours carry no timestamp of their last change, so 'what changed since yesterday' is not a question its API can answer. Every run therefore re-reads a period and compares, 45 days back by default: long enough to catch a correction made while preparing last month's invoice. Which period a run read is shown with it, because a change outside it is not noticed and that should not be implicit. An hour that seems gone is only treated as deleted when the whole period was read completely and the hour is also gone when asked for by its number: an hour moved to another month has not vanished. Syncing more often than daily reads a shorter stretch on the in-between rounds, and the full period on the first run of the day.

Projects travel too, field by field

Name, status, billable by default and budget travel in the direction you choose for projects, and with create missing projects on, so does a project that does not exist on the other side yet. Two-way, fields are merged one by one against what last agreed: a budget raised here and a project closed there are two changes by two people, and both arrive. Where it cannot be established who changed what, the screen asks which side is right instead of guessing. Timeon has no budget that restarts per period; that is reported, not translated.

A cutover ends

That is why Timeon is deliberately not in the main menu and not on the client page. The sync page is reached from settings, and the hours page only shows a count when conflicts are waiting for you. The day Timeon is switched off you set both directions to off or delete the connection: the key, the pairings and the runs go, the hours already carried over stay.

Permissions

Grant these to the role that manages this integration (Settings → Roles). Admin-only by default, and never to the client role.

  • timeon.settings.manage Set the connection up: key, directions, window, safeguards and the automatic schedule. Admin only by default.
  • timeon.sync.run Run and follow syncs, see the pairings and the queue, and see the open-conflict count on the hours page. Admin only by default.
  • timeon.sync.write Let the sync write and decide conflicts, always together with the write permission on hours. Admin only by default; a dry run writes nothing and does not need it.

What it deliberately does not do

  • Not carried: contacts, Timeon invoices as documents, tasks, categories, mileage, rates and the separately billable duration. An hour that is billed for less than was worked in Timeon arrives here with its full worked duration.
  • Mileage, expenses and the category are carried along unchanged on a push, because Timeon replaces an hour whole when it saves; a description correction must not delete an expense claim.
  • Invoice state is guarded in both directions and carried in neither. That holds as long as nobody invoices in Timeon any more; if you do, this is a double-billing risk.
  • An employee with no account here is reported and skipped, never put on someone else's name, unless you switch on create missing users.
  • Reading has been run against a real Timeon organisation. Pushing has only been tested against a stand-in: start with a dry run on a period holding one hour nobody minds, and compare that hour in Timeon field by field.
  • A time of day for automatic sync is met within a quarter of an hour, not to the minute.

Where to find it Instellingen → Timeon (also via Instellingen → Integraties) for the key and the policy; the Timeon-synchronisatie page for runs, pairings and the queue. When conflicts are open, the hours page says so with a count.

Read the guide

Other integrations