Hashoff

Using Hashoff

Everything you need, in the order you will need it. Most teams are set up in about ten minutes.

Installing

Any Slack workspace admin can install Hashoff from the install link. You will be asked to approve the permissions it needs.

As soon as it is installed, your whole team is imported from Slack. Nobody is added by hand. The person who installs it becomes the first administrator, and anyone who is a Slack workspace owner or admin starts with the matching role in Hashoff.

People who leave your Slack workspace are deactivated, not deleted. Their leave history stays attached to their record — they simply stop appearing as active staff and can no longer sign in.

Setting it up

Open Setup in Hashoff. The checklist there tells you what is still missing and links straight to it. New to Hashoff? The getting started guide walks the same steps in order. Three things matter:

  • Teams. A team decides who approves that team's leave, so everyone needs one before they can request anything. New workspaces get a Global team, which is enough for a small company. Deleting a team moves its people there.
  • Leave policies. Paid Time Off, Sick Leave and Unpaid Leave are created for you with sensible defaults. Change the allowances on the Policies page, or add your own types.
  • Locations and holidays. Give each team a country on the Teams page, then import that country's public holidays. Everyone on a team observes its country's holidays; without a country they see only the holidays you add for the whole company.

Teams and approvers

A team answers one question: who decides this person's leave. Open Teams to create one, add people to it, and tick who approves for it.

  • Any one approver can decide. Name two or three so requests are not stuck behind one person's holiday. The first to press Approve settles it.
  • An approver needs no particular role. A team lead can approve for their team without being able to administer the company.
  • An approver does not have to be on the team — one person often approves for several.
  • Owners and admins can approve anything, as a way out when an approver is away or has left. They are only notified about teams they are actually assigned to, so a four-team company does not message its admins about everything.
  • Nobody approves their own leave. It goes to another approver on the team, then to any owner or admin.

Choosing members or approvers opens a panel where nothing is applied until you press Save, so a mis-click costs nothing.

If you used Hashoff before September 2026: approvers used to be worked out from roles — the first manager, admin or owner on the team. Everyone who could approve then still can, but promoting somebody to Manager in Slack no longer grants approval rights on its own. Tick them on the Teams page instead.

Leave policies

A leave policy is a type of leave and an allowance: Paid Time Off, 25 days. Policies belong to the company, not to a team, so moving somebody between teams never changes their balance or hides the days they have already taken.

Each leave type has its own page. Change what you need and press Save once — the allowance, who gets it and the rules are all one document.

Who gets it

Everyone by default. Narrow it to specific teams, or to named people for something like maternity leave. Anyone outside the list does not see the type at all, on the web or in Slack, rather than seeing it with nothing left.

Individual allowances

Give one person a different number of days — for seniority, a contract difference, or a local statutory minimum. A personal allowance beats the policy's. Only the people who differ are listed.

Rules

Per leave type: whether half days are allowed, whether it may run into other leave to make one longer break, and a cap on how many requests a month. Sick leave usually wants full days only; paid leave usually does not.

Carry over

Unused days are lost at year end unless you turn carry-over on, with an optional cap on how many days move.

Each policy can also carry a note, shown to people at the moment they pick that leave type — in Slack and on the web. It is the place for the rule that is not obvious from the name: “needs four weeks' notice”, or “attach a doctor's note beyond three days”.

Requesting leave

From Slack

Open the Hashoff app from your sidebar and press Request Leave on its Home tab, or type a command anywhere. A bare /hashoff lists them.

  • /hashoff request — book time off. The dialog shows each leave type with how many days you have left, so you are not choosing blind, along with any note your administrator has attached. The dates start on today, and it tells you who the request will go to before you send it.
  • /hashoff balance — days you have left
  • /hashoff who — who's away today
  • /hashoff holidays — public holidays you observe

From the web

Sign in and use the form on My leave. Pick a range in one calendar — weekends and the public holidays you observe are shaded, so you can see they will not be deducted.

Either way the same rules apply. If something is wrong you are told immediately, against the field that is wrong: overlapping dates, not enough days left, or a range with no working days in it.

To see approved leave in Google Calendar, Apple Calendar, or Outlook, subscribe once from My leave. How to add your leave to a calendar.

Cancelling

You can cancel any leave that has not started yet, and the days go straight back to your balance. Once leave has begun it cannot be cancelled — those days were taken. If that happened by mistake, ask an administrator to adjust your balance so there is a record of the correction.

Approving

When someone requests leave, their team's approvers get a direct message with Approve and Deny. One click decides it, the requester is told straight away, and the message is rewritten in place so the buttons cannot be pressed twice.

The same queue is on the Approvals page in the web app, showing who asked, which dates, and how many days it actually costs — so you can decide without opening each one. A decision in one place closes it in the other.

Approvers and admins also get a short message each morning listing who is off that day across the teams they cover. If nobody is off, nothing is sent.

If a request was withdrawn after the message was sent, pressing a button tells you so.

How days are counted

This is the part worth understanding, because it is where leave trackers usually disagree with people.

  • Only working days count. Book Friday to Monday and you are charged two days, not four.
  • Public holidays you observe are free. Which ones depends on your team's country, so two people booking the same week can be charged different amounts.
  • Half days count as half, at either end. You can be off from Wednesday afternoon until Friday morning in a single request. A policy can switch half days off, which is usually what you want for sick leave.
  • Pending requests are held against your balance so you cannot accidentally book the same days twice over.
  • The leave year is the calendar year. A booking that crosses New Year is split, and each day counts against the year it falls in.

For administrators

Different allowances for different people

Open the leave type on the Policies page and add an individual allowance. Only the people who differ are listed — everyone else gets the policy's figure.

Different holidays for different countries

Set each team's country on the Teams page, then import that country's holidays. Put people who observe different calendars on different teams. You can also add custom company holidays, including ones that repeat every year — a holiday with no country applies to everybody.

Keeping the roster current

Press Sync from Slack on the People page after someone joins or leaves. Roles you have changed are never overwritten by a sync.

Coming from another leave system

Your people arrive from Slack, but their balances do not — those live in whatever you are leaving behind. We load opening balances for you from your export. How switching works covers what moves, and why your old system's day counts probably will not match ours.

When something looks wrong

  • A leave type is missing for someone. Open that policy and check Who gets this — it may be limited to certain teams, or to named people.
  • The day count looks wrong. Check the country on that person's team, and that its holidays are imported. A team with no country observes only company-wide holidays.
  • Nobody was notified about a request. That team has no approvers, so it fell to your owners and admins. Name approvers on the Teams page.
  • A new joiner is missing. Press Sync from Slack on the People page.
  • Nothing arrives in Slack at all. Check the Slack connection on the Setup page.

Anything else, write to Support.

Common questions

How does Hashoff count a leave request?

Only working days are charged. Weekends are free, and so are the public holidays that particular person observes, which come from the country set on their team. A half day counts as half, and can fall at either end of a request.

Who approves leave in Hashoff?

Each team names its own approvers on the Teams page. Any one of them can decide a request. Owners and admins can approve anything as a fallback, so nobody is stuck when an approver is away, and nobody approves their own leave.

Can different teams have different leave allowances?

A leave policy is defined once for the company. You choose which teams get it — a team that is left out does not see that leave type at all. Where an individual differs, give that person their own allowance on the policy.

Does Hashoff need Slack?

Yes. Hashoff installs into a Slack workspace and people sign in with Slack, which is also how your roster is imported. The product itself is a full web app — policies, reporting and the team timeline live there — and Slack is where requests and approvals happen.

What Slack commands does Hashoff have?

/hashoff request books time off. /hashoff balance, /hashoff who and /hashoff holidays answer without a form. A bare /hashoff lists the commands.

What happens when someone leaves the company?

Removing them from your Slack workspace and running Sync from Slack deactivates them in Hashoff. They are deactivated rather than deleted, so their leave history stays attached to their record and your reporting for past years does not change.