Workplace & Facilities package

Car-pool & fleet booking

Book a pool car on a themed form: service and clash checks, a decision table for long, multi-day or weekend trips, coordinator approval and a confirmation email.

OfficialNo integrations neededStarts from a formStarter~10 min setupv1.0.1

About this package

What it does

Car-pool & fleet booking replaces the key cabinet sign-out sheet. People open the Pool car booking start form, pick a vehicle from the list (seats and EV are in the name), give the pick-up and return times, destination, rough distance and how many are travelling.

The workflow reads the vehicle from the Vehicles table and stops straight away if it is in service. It then looks for confirmed bookings in the Bookings table that overlap the requested times, and a clash is declined with the clashing booking reference. Otherwise the Booking approval decision table decides whether the fleet coordinator must approve: more people than seats, trips of 300 km or more, more than three days, or weekend use.

Standard bookings are confirmed at once. The others give the coordinator an Approve / Reject task with a reminder and escalation. Every booking is recorded, and the driver gets a confirmation with where the keys are and the fuel or charge card, or an email saying why it could not go ahead. Everything is built in.

Starts from a form

Starts from a form: open the Pool car booking workflow and use Run (or share its start form); each submission is one booking.

Someone fills in a form to start it: the workflow start form (Run dialog in the app, or your own portal posting to the API) or a standalone form page (/f/<id>) whose Form submitted trigger starts the workflow. People complete User Task forms along the way.

The flow

Step by step

  1. 1

    Book

    The driver fills in the themed start form: vehicle, times, destination, distance and passengers.

  2. 2

    Check the car

    Vehicles in service are declined; confirmed bookings that overlap the times are a clash.

  3. 3

    Apply the rules

    The Booking approval decision table flags too many passengers, long, multi-day or weekend trips.

  4. 4

    Approve when needed

    The fleet coordinator approves or rejects with a comment; standard bookings are confirmed at once.

  5. 5

    Confirm

    The booking is recorded and the driver is emailed the keys location and the fuel or charge card.

Pool car booking — A booking from the themed start form: the vehicle is checked for service and clashes, the Booking approval decision table decides whether the fleet coordinator must approve, and the driver is emailed. The same canvas you get in the designer after installing.

Forms

The start form and the task forms

The workflow inputs are the start form: the Run dialog renders them on its grid and theme, and your own portal can post the same fields. User Tasks show their fields and outcome buttons to the assignee.

Start form

Pool car booking

Filled in by whoever starts the process

Driver * requester_name · textYour name (the person driving)
Email * requester_email · emailname@company.comWhere the confirmation goes
Vehicle * rego · select
Hyundai Kona Electric · 5 seats · EV · EVA101Tesla Model Y · 5 seats · EV · EVB202Toyota Corolla Hybrid wagon · 5 seats · HYB303Toyota Hiace van · 3 seats · VAN404Kia Carnival people mover · 8 seats · PEO505MG4 Electric · 5 seats · EV · EVC606
Which pool vehicle you would like
People travelling * passengers · number0Including the driver
Pick up * pickup_at · datetimeYYYY-MM-DD HH:mmWhen you collect the car
Return * return_at · datetimeYYYY-MM-DD HH:mmWhen the car is back in its bay
Destination * destination · textWhere you are going
Return distance (km) * distance_km · number0Rough total distance; 300 km or more needs approval
Purpose * purpose · select
Client meetingSite visitEventTrainingEquipment transportOther
What the trip is for
Notes notes · textAnything the fleet coordinator should know (child seat, roof racks, charging)

User Task

Approve the booking

Approve car booking: {{rego}} for {{requester_name}} ({{approval_reason}}) · 2-column grid · own header and theme

Comment for the driver comment · textarea
Mileage to be recharged to a project mileage_claim · boolean
Project code project_code · text
ApproveReject

From your code

Start a run over the API

Every workflow can be started over REST, MCP or the CLI, whatever its trigger, with the sample input below. Runs start straight away on the published version; replace <workflow id> with the id the install created.

REST

shell
curl -X POST "$USERTASKS_URL/api/v1/workflows/start" \
  -H "Authorization: Bearer $USERTASKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_id":"<workflow id>","variables":{"requester_name":"Daniel Okafor","requester_email":"daniel.okafor@example.com","rego":"HYB303","passengers":3,"pickup_at":"2026-11-13T07:30","return_at":"2026-11-15T18:00","destination":"Napier regional office","distance_km":640,"purpose":"Site visit","notes":"Taking display stands; roof racks please."}}'

CLI

shell
usertasks workflows inputs <workflow id>          # the start form: keys, types, required
usertasks workflows run <workflow id> --input requester_name="Daniel Okafor" --input requester_email=daniel.okafor@example.com --input rego=HYB303 --input passengers=3 … --wait

Inbound webhook

shell
usertasks webhooks create <workflow id>          # prints the hook slug and secret once
curl -X POST "$USERTASKS_URL/api/webhooks/inbound?hook=<slug>" \
  -H "Authorization: Bearer <webhook secret>" -H "Content-Type: application/json" \
  -d '{"requester_name":"Daniel Okafor","requester_email":"daniel.okafor@example.com","rego":"HYB303","passengers":3,"pickup_at":"2026-11-13T07:30","return_at":"2026-11-15T18:00","destination":"Napier regional office","distance_km":640,"purpose":"Site visit","notes":"Taking display stands; roof racks please."}'

What's included

6 assets, ready to adapt

TypeNameDetails
Email templateBooking confirmedSent to the driver when the booking is confirmed.
Email templateBooking not confirmedSent to the driver when the booking is rejected, clashes or the vehicle is unavailable.
Data tableBookingsEvery booking request: the vehicle, the dates, whether it needed approval and the outcome. Confirmed rows block the vehicle for other bookings.
Data tableVehiclesThe pool fleet: registration, seats, EV or not, range and where the keys are. Set status to Service to stop bookings.
Decision tableBooking approval5 rules — When a pool car booking needs the fleet coordinator's approval. First matching rule wins; the last rule is the default.
WorkflowPool car booking25 steps — A booking from the themed start form: the vehicle is checked for service and clashes, the Booking approval decision table decides whether the fleet coordinator must approve, and the driver is emailed.

Bookings · 1 sample rows

BookingRegistrationVehicleDriverDriver emailPick upReturnDestinationDistance (km)People travellingPurposeApproval needed becauseStatusCoordinator comment

Vehicles · 6 sample rows

RegistrationVehicleSeatsElectricRange (km)Pick-up locationStatusFuel / charge cardNotes

Requirements

What you connect it to

Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.

Needs

  • Email (optional) — Email delivery configured for the instance (EMAIL_PROVIDER), used for notifications.

After installing

  1. Nothing to configure: install it and share the Pool car booking start form.
  2. Replace the sample rows in Vehicles with your fleet. Keep the Vehicle list on the start form in step: edit the options of the rego input on the workflow (value = registration).
  3. Approvals go to the person who installed the package (the fleet coordinator). Change the assignee on the "Approve the booking" step to route them elsewhere.
  4. Adjust the Booking approval decision table (distance, days, weekend), and set EMAIL_PROVIDER so drivers receive the emails.

Asked for on install

Nothing: it installs complete.

Install

Install it in your workspace

Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.

In the app

  1. Download fleet-booking-1.0.1.utpkg.
  2. Open Automations → Packages and drag the file onto the page (or choose Import package). Browse gallery there lists every gallery package without downloading by hand.
  3. Pick the file. The wizard verifies the checksum, every file hash and the signature, and shows the readme.
  4. Review the changes (what is created) and the data rows.
  5. Fill in the requirements, or tick Keep incomplete and finish later with Complete setup.
  6. Done: the workflow is published and active once setup is complete.

With the CLI

shell
curl -fLO https://usertasks.com/gallery/fleet-booking-1.0.1.utpkg
usertasks packages inspect fleet-booking-1.0.1.utpkg       # offline: checksum, hashes, signature
usertasks packages install fleet-booking-1.0.1.utpkg --dry-run
usertasks packages install fleet-booking-1.0.1.utpkg       # prompts for each requirement
usertasks packages install fleet-booking-1.0.1.utpkg --keep-incomplete --yes   # in CI; finish with:
usertasks packages complete fleet-booking -f values.yaml

Verify the download

File SHA-256
8a839caeff5b52e2c8344fa7125885a947533035189d03bf4304c4f4bcf98ebe
Package checksum (what is signed)
sha256:e68500d1db8c976e98609987f34feca9f03acc274ab4a99bf6343c8e3896cc7b
Signer
Unsigned preview build — compare the SHA-256 above

shasum -a 256 fleet-booking-1.0.1.utpkg should print the file SHA-256. How gallery packages are signed.

Versions

Version 1.0.1

  1. v1.0.12026-10-28Steps for the coordinator who set the package up are assigned to the workflow owner (workflow_owner_id), now that workflow_started_by names the person who started the run.
  2. v1.0.02026-10-28First release.

Installing a newer version upgrades in place: local credentials and requirement values are kept, and changes you made are flagged first. How packages work

More packages

Related

Browse the whole gallery