Skip to content

Goboko CSV format

The Goboko CSV path is a specialised import flow for bookings exported from Goboko. When you upload a file, Syndik8 looks at the file’s bytes to decide whether it is a Goboko export or an arbitrary CSV — and if it is Goboko, the column mapping step is skipped entirely.

Goboko exports are UTF-16 encoded and have a fixed 16-column header. Both facts are used to detect the format automatically. You never choose “Goboko” from a menu; you upload the file you got from Goboko and Syndik8 recognises it.

Admin and owner of a syndicate. The import wizard is hidden from regular members.

  • Syndicate settings → Import bookings.
  • Route: /syndicates/:syndicateId/settings/import-bookings.
CheckExpected value
Byte-order markUTF-16LE (FF FE) or UTF-16BE (FE FF) at the start of the file.
Header rowStarts with #,Start Time,End Time,TimeZone.

A file that does not meet both of those is classified as a generic CSV instead.

The importer reads a subset of Goboko’s 16 columns:

Column indexColumn nameWhat Syndik8 uses it for
1Start TimeBooking start (dd/MM/yyyy HH:mm:ss in the row’s timezone).
2End TimeBooking end (same format).
3TimeZoneIANA timezone name, used to convert the start/end times to UTC.
4Booking Made ForMember display name. Also the maintenance marker — see below.
5Booked By (email)Member email for matching.
6AircraftAircraft registration.
8ProvisionalY if the row is a waitlist / provisional booking. Mapped to pending on import.
10Flight TimeHours flown (kept as metadata; not used to populate usage logs).
15NotesFree-text notes. Copied onto the booking.

Columns 0, 7, 9, 11, 12, 13, 14 are read past but not used.

The wizard has six numbered steps across the top. For a detected Goboko file:

  1. Upload — choose the file.
  2. Columnsskipped automatically. Goboko’s columns are known.
  3. Members — confirm each unique member in the CSV maps to an existing syndicate member, an invite to send, or an aircraft-maintenance entry.
  4. Assets — confirm each unique aircraft registration in the CSV maps to an existing asset.
  5. Review — see the counts (created / skipped / warnings) before committing.
  6. Done — the import completes and the bookings appear on the calendar.
  • Detection is on the file, not on a menu choice. There is no “Is this a Goboko export?” toggle.
  • UTF-16 decoding is mandatory. If Goboko ever ships a UTF-8 export, Syndik8 will route the file through the generic CSV path instead — the detection check requires the UTF-16 BOM.
  • Times are converted to UTC. Each row carries its own timezone; Syndik8 converts dd/MM/yyyy HH:mm:ss in that timezone to UTC before saving.
  • Unknown timezones fall back to UTC. If the timezone column holds a name the system’s tz database does not recognise, the time is saved as if the timestamp were already UTC rather than rejecting the row.
  • Maintenance convention. A row whose “Booking Made For” is Maintenance (case-insensitive) with no email is auto-classified as an aircraft maintenance booking, not a member’s booking. On the member matching step it is surfaced with the label “Will be imported as aircraft maintenance” and you can revert it to a member assignment if the detection was wrong.
  • Custom maintenance labels are preserved. If a Goboko row says “50 hr check” with no email, you can mark it as maintenance on the member matching step — the label “50 hr check” is carried onto the booking’s maintenance description. The generic word “Maintenance” is treated as redundant and left blank.
  • Provisional rows are saved as pending. Confirmed rows land as confirmed.
  • Registration normalisation. G-BBBN and GBBBN in the CSV are treated as the same aircraft when matching against asset registrations (Syndik8 strips non-alphanumeric characters and compares case-insensitively).
  • Single-asset inference. If the syndicate has only one asset, all rows match that asset regardless of the CSV’s registration column.
  • Re-running an import is safe. Fingerprint-based deduplication skips rows already imported.