Harbour · Helpdesk
Keep every conversation moving.
Bring email, text and chat into one support desk. Give every request a clear owner, keep service promises visible, and help your team respond with the customer’s history at hand.
Harbour brings together the details a busy support team depends on: account cover, business-hour service levels, collision protection, multilingual conversations and privacy controls.
144 features across 17 areas. Built with 22 reusable Osy# kits and Harbour’s own application logic, with 1,110 tests across the app and its kits.
Built for the realities of support.
- Every channel, one conversationTurn incoming email into tickets, answer texts from the desk, and let chat continue by mail when a customer leaves.
- A desk that keeps upMove through tickets from the keyboard, keep several conversations open, and make bulk changes without losing your place.
- Service promises that fit your customersSet first-reply, next-reply and resolution targets by tier, priority and channel, with clocks that respect business hours and holidays.
- Account ownership with reliable coverOffer work to the account owner first, then the backup, pod and queue. Absence and unclaimed offers keep work moving.
- Reply together with confidenceSee who is viewing or replying. If a colleague answers while you write, Harbour stops your reply and tells you who got there first.
- Keep team discussions internalWrite customer replies and internal notes in the same timeline, with internal messages and their files kept on the team’s side.
- Support across languagesRead incoming messages in English and deliver replies in the customer’s language, with originals preserved and translations clearly marked.
- Privacy with a clear processPlan and approve erasure, record what must be retained and why, and carry the decision through messages, original mail and the attachments marked as being about the person.
Explore what’s included.
From the first incoming message to resolution, reporting and retention, explore how Harbour handles the work around every ticket.
Where a test is named, you can read the behavior it checks. Not every feature names one.
Agent workspace 11
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Live view counts | See where the work is at a glance. Mine, Offered to me, Unassigned, At risk, All open, Waiting and Done, plus your queues and team views, each count as work moves. With no ticket open, the desk shows how much of the view is late, at risk or waiting. | Inbox | the desk at real volume shows its views with live counts and a dense list |
| Compact ticket list | Keep a busy queue readable. Hundreds of open tickets sit in compact rows, due first, each showing the requester, company, priority and assignee. | Inbox | the desk at real volume shows its views with live counts and a dense list |
| Keyboard navigation | Work through the queue without reaching for the mouse. J and K move between tickets, Enter opens one, X selects it for bulk actions, and ? shows the shortcuts. | Inbox | the keyboard works the list without the mouse |
| Command menu | Act without leaving the keyboard. ⌘K assigns a ticket, sets its status or jumps to a ticket by number. | Harbour | the command menu sets the open tickets status |
| Ticket tabs | Keep several conversations open at once. Each ticket sits in its own tab and keeps its half-written reply while you work on another. | Harbour | |
| Bulk actions | Update many tickets in one move. Select them, then assign them or set their status; Harbour tells you which it could not change and why. | Harbour | bulk assign and bulk status move every ticket they can |
| Saved list layout | Pick up where you left off. The list’s sort order and density stay as you set them in this browser. | Inbox | the lists order and density are remembered in this browser |
| Team views | Give the whole team the same view of the work. A lead saves a view, such as urgent tickets from your top tier, and it appears in everyone’s sidebar. | Inbox | a shared view lands in the rail and lists what it asks for |
| Personal views | Save the filters you use daily, by queue, tier, priority and language, alongside the team’s views. | Inbox | a saved view filters by queue tier priority language and the apps own filter |
| Mobile desk | Answer from anywhere. On a phone, the list and the ticket each get a full screen, with the same actions. | Inbox | on a phone the list and the ticket are one screen each |
| Guided first steps | Know what to do on day one. A new desk explains where tickets will come from, and a teammate in no queue is told why they cannot take a ticket and who can change that. | Harbour | an empty desk says where tickets come from and a teammate in no queue is told |
Tickets 15
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Complete ticket timeline | See the whole story in one place. Messages, internal notes and each change of status, priority, type, tags, assignee or merge appear in order, with who made it. | Harbour | every change is on the timeline with who made it |
| Replies and internal notes | Talk to the customer and to your team from the same composer. Notes are clearly marked and stay on the team’s side of the timeline. | Harbour | a reply and a note land on the one timeline and the note is marked |
| Ticket lifecycle | Keep each ticket’s state meaningful: new, open, pending, on hold, solved and closed. A ticket cannot return to new, or be closed before it is solved. | Harbour | a ticket cannot go back to new or close before it is solved |
| Custom statuses | Describe your own process. Add statuses such as Waiting on a refund within the standard categories, so reports and service clocks still know what each one means. | Harbour | the status page saves only on save discards on discard and undoes one change |
| Automatic closing | Keep the queue tidy without chasing. A solved ticket closes after a quiet period, and a reply from the customer before then reopens it. | Harbour | a solved ticket closes by itself unless the customer writes back |
| Priority and ticket type | Separate the urgent from the routine. Set priority from low to urgent. A ticket's type is the form it was asked on: start with a question, something broken, an outage and a task, then rename them and add your own. | Harbour | the form is the tickets type and an outage asks for its root cause |
| Incident root cause | Close incidents with what you learned. A type that asks for a root cause, like an outage, can be solved once the cause is on record. | Harbour | an incident is not solved until its root cause is on record |
| Tags | Label tickets freely. A tag is created the first time you use it, and a ticket carries each tag once. | Harbour | tags are made on first use and a ticket carries each once |
| Ticket followers | Stay informed about the tickets you care about. Follow a ticket to hear what happens to it, and unfollow when you are done. | Harbour | following a ticket and stopping |
| Merge duplicate tickets | Answer the same request once. Merging closes the duplicate and adds its requester to the ticket that remains. | Harbour | merging a duplicate closes it and copies its requester on the survivor |
| Split and link tickets | Separate issues that arrived together. Split a message into a ticket of its own, and link tickets that are related. | Harbour | |
| Problem management | Fix the cause once for everyone affected. Link incidents to a problem; solving the problem solves each incident, with an entry on its timeline. | Harbour | |
| Custom fields and forms | Capture the details your team needs. Add fields to tickets, people and companies, and group them into forms for each kind of request. | Fields | a client books and the server keeps only what the form asks them |
| CC management | Bring the right people into the conversation. Add or remove a CC by hand, and a CC’d person who replies joins the conversation as a CC. | Conversations | a ccd person replying joins as cc |
| Side conversations | Get help from outside the ticket without exposing it. Email a third party or start an internal thread from the ticket; it shows on the timeline, and the third party sees nothing of the ticket. | Conversations | dev is mailed on the side and never sees olivias ticket |
Composer 7
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Send and set status | Reply and move the ticket on in one step: send your answer and set the ticket’s status together. | Harbour | |
| Saved replies | Answer common questions consistently. Reusable replies fill in placeholders such as the customer’s name and the ticket number. | Composer | |
| Macros | Handle routine requests in one click. A macro applies a reply, a status, a priority and tags together. | Composer | |
| Rich formatting | Write clear, structured replies with Markdown: lists, links, code and emphasis. | Composer | |
| Autosaved drafts | Keep replies in progress safe. A half-written reply is saved for each ticket as you type. | Composer | |
| Agent signatures | Sign off consistently. Each agent’s signature is added to their replies. | Composer | |
| Composer shortcuts | Write without reaching for the mouse. R starts a reply, N a note, Shift+M opens the macros and L adds a tag. | Composer |
Email, text and chat 14
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Email to ticket | Turn your support address into a queue. Each email to it opens a ticket with its attachments, and the customer’s reply continues the same ticket. | Harbour | a mail to support opens a ticket with its files and a reply continues it |
| Threaded email replies | Keep the conversation tidy in the customer’s inbox. Replies go out from the address they wrote to, with the headers their email program threads by. | Conversations by mail | a reply goes from the address it came to and threads in the customers mail |
| Reliable email threading | Keep replies on the right ticket when a thread breaks. An answer that lost its thread headers still finds its ticket by the reply address and the reference in the subject. | Conversations by mail | an answer that dropped every thread id finds its conversation by the plus address |
| Quoted text trimmed | Read only the new part of each reply. The email is kept in full, and the ticket shows what was new in it rather than the quoted history. | Conversations by mail | a mail from the watched mailbox lands with only what was new and keeps the rest |
| Auto-reply and bounce handling | Avoid answering an autoresponder. Out-of-office replies are recorded and left unanswered, and a bounce marks the delivery as failed. | Conversations by mail | an out of office is recorded and never answered |
| Duplicate message protection | See each message once. The same email or text delivered twice becomes a single message. | Mail receiving | the same message seen twice is one message |
| Visible delivery holds | Keep unsent replies visible. If no mail sender is ready, Harbour holds the reply and explains why; failed receiving attempts are retried. | Conversations by mail | with no mail sender ready the reply is held and says why |
| Connected mailboxes | Use the mailboxes you already have. Connect a Gmail or Microsoft 365 inbox, or an IMAP mailbox, and replies go out from it. | Gmail mailbox | mail added to the inbox is fetched whole and kept and sent mail is not |
| Text messaging (SMS) | Reach customers on their phones. A text to your number opens or continues a conversation, and replies from the desk are sent as texts, with delivery reports. | Conversations by text | a text received becomes a message from that number |
| Text length check | Avoid texts that arrive cut short. A reply too long for a text message is refused as you write it, before it is sent. | Conversations by text | a reply too long for a text is refused when it is written |
| Web request form | Let anyone ask for help without an account. A signed-out visitor sends a request from the help page and is told its ticket number. | Harbour | a signed out visitor sends a request from the help page |
| Live chat widget | Talk to visitors while they are on your site. Live chat on your help centre and portal, and the conversation is kept across a page reload. | Conversations | the widget starts a conversation signed out and keeps it after a reload |
| Chat follow-up by email | Keep the conversation going after the customer leaves. A chat reply left unread is emailed after ten minutes, and answering that email continues the same conversation. | Conversations | an unread chat reply is mailed after ten minutes with everything unread |
| Reply on the customer’s channel | Answer customers where they are. A reply goes out on the channel the customer last wrote on. | Conversations | a reply goes out on the channel the customer last wrote on |
Files 6
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Ticket attachments | Keep the evidence with the request. Screenshots and files sent by email arrive on the ticket, shown with the message they came with. | Harbour | the agent sees the mailed screenshot and code on the ticket |
| Inline screenshots | See the problem without downloading anything. A pasted screenshot is a message of its own, shown inline. | Conversations | a screenshot alone is a message |
| Code previews | Read technical reports comfortably. A source file previews with syntax highlighting, and a fenced snippet in a message displays as code. | Conversations | a code file is previewed with its lines coloured |
| Internal attachments | Share files with colleagues alone. A file on an internal note is visible to the team and hidden from the customer. | Conversations | a customer reads the screenshot on a reply and never the one on a note |
| File type and size checks | Accept files safely. A file is identified by what it contains rather than its name, and an oversized file is refused with its name, its size and the limit. | Conversations | a name that claims a picture the bytes are not is refused with a sentence |
| Drag-and-drop attachments | Add files the quick way: drop or paste them into a reply or a note. | Composer |
Queues and assignment 10
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Queues | Divide the work by team. Billing, Security, Onboarding: each queue has its own members, and a restricted queue stays out of sight, and out of the counts, for everyone outside it. | Inbox | restricted queue items are invisible and uncounted for agents outside it |
| Routing rules | Send each new ticket to the right place automatically. Rules, applied in order, set where it goes, how urgent it is, what it needs and who gets it, and can add a tag; the ticket says which rule acted. | Inbox | a routing rule assigns prioritises and tags a matching new ticket and says so |
| Round-robin assignment | Share work fairly. Each available team member is offered work in turn, and anyone away is skipped. | Inbox | round robin offers each member in turn and skips the away |
| Capacity-based assignment | Balance the load. Work goes to whoever has least needing attention, up to their capacity, and freed capacity pulls in the oldest waiting ticket. | Inbox | nobody is given more than their capacity |
| Skills and language routing | Match each ticket with the right person. A required skill limits who may hold it; someone who speaks its language is preferred, then anyone after a wait. | Inbox | a speaker of the items language is preferred |
| Take, release and reassign | Keep ownership clear as work changes hands. Take a ticket, release it to the queue, or hand it to someone who may hold it, with each change and its reason recorded. | Inbox | taking an item puts your name on it and records why |
| Routing explanations | Understand each assignment. The ticket shows which route and which service level put it where it is. | Inbox | |
| Unclaimed ticket alerts | Catch work nobody has picked up. A ticket left unclaimed past its pickup time is raised with the team leads. | Inbox | an unclaimed item past pickup tells the leads |
| Team workload | See capacity at a glance: who is at capacity, who is away and who covers them, on one page. | Inbox | team load shows who is at capacity |
| Agent availability | Control when work reaches you. Set yourself available, busy or away, and routing follows your status. | Inbox | my status is what routing reads |
Service levels 11
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| First reply, next reply and resolution targets | Track each promise you make. A ticket carries three service targets, first reply, next reply and resolution, each counting down on the list and on the ticket. | Harbour | the desk keeps its promises through the inbox |
| SLA policies by tier, priority and channel | Promise each customer the service they are entitled to. The most specific policy applies, so a premium company can be covered around the clock with tighter targets. | Inbox | the policy is chosen by the most specific match |
| Business hours and holidays | Measure service fairly. Clocks run in your business hours and stop for weekends and holidays. | Inbox | a business hours clock does not run over the weekend or a holiday |
| Pending pauses the clock | Stop the clock while the customer has the next move. Pending pauses the clocks; the customer’s answer reopens the ticket and starts them again. | Harbour | pending pauses every clock and the customers answer reopens it |
| Customer-triggered reply targets | Start the next-reply clock when the customer writes, so the promise measures when your team actually owes an answer. | Harbour | the next reply is owed only after the customer writes |
| Auto-solve after silence | Close the loop on stalled conversations. A pending ticket that stays silent for a week is solved. | Harbour | a week of silence while pending solves the ticket |
| Priority-based targets | Tighten the promise when urgency changes. Raising a ticket’s priority retargets its clocks. | Harbour | raising the priority tightens the promise |
| At-risk warnings | Act before a target is missed. A ticket turns at risk at a set fraction of its target, on the list and in its own view. | Inbox | at risk fires once at the policys fraction |
| SLA escalation | Respond to breaches automatically. A breach escalates to the next level and can notify the assignee, alert the leads, raise the priority or move the ticket, once per clock cycle. | Inbox | the escalation actions do what they say |
| Breach history | Report honestly on missed targets. A breach is recorded when it happened, and the ticket carries on. | Inbox | a breach is recorded and the item carries on |
| Imported ticket history | Bring your history with you. A ticket brought in from another system keeps its real dates and clocks. | Inbox | an imported item keeps its real history |
Accounts and cover 8
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Account teams | Give each customer company a named team. A company has an owner, a backup and a pod, and its people can see who looks after them. | Organizations | the account team has one owner and a backup and the companys people see who looks after them |
| Account-based routing | Send a company’s tickets to the people who know it. Work is offered to the account owner first, then the backup, the pod and the queue, each step on time and within the queue’s hours. | Inbox | an offer falls through to the backup then the pod then the queue on time |
| Automatic account cover | Keep account support moving when the owner is unavailable. Away owners are skipped immediately, and declined offers pass straight to the next person in the cover chain. | Inbox | dedicated never means stuck |
| My accounts | Keep an eye on your customers: your companies, with their open and at-risk work. | Inbox | my accounts lists my organisations with their open and at risk work |
| Tiers and entitlements | Deliver what each customer is entitled to. A company’s own contract applies first, then its tier, and VIP contacts are marked. | Organizations | an organisation is entitled to its own contract first then its tiers |
| Absence cover | Take time off without leaving customers waiting. Going away hands your assigned work to cover and withdraws your open offers; a planned absence does this when it starts, and ends by itself. | Inbox | going away hands held work to cover and withdraws offers |
| Follow-the-sun handover | Keep tickets moving across time zones. An unanswered ticket whose assignee’s working day has ended is handed to someone on shift, halfway to its first-reply target. | Inbox | off hours cover at half the first response target |
| Working hours by time zone | Route work to people who are actually working. Who is on shift is read from each person’s working hours in their own time zone. | Inbox | on shift is read from working hours in their zone |
Team collaboration 7
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Live presence | Know who else is on a ticket. Its header shows colleagues viewing or replying, live. | Collaboration | a seat says who and what they are doing and who is stamped by the platform |
| Private presence | Share activity, not drafts. Presence shows what a colleague is doing, not what they are writing. | Collaboration | a seat carries an activity and never what anybody wrote |
| Reply collision protection | Avoid sending competing answers. If a colleague replies while you compose, Harbour stops your send and names the person who answered. | Harbour | a colleagues reply that lands while you write stops yours with their name |
| Simultaneous action handling | Settle races cleanly. When two agents take the same ticket or reply to it at once, the second is told who got there first. | Harbour | two agents taking one ticket the second is told who was first |
| Assignment conflict protection | Keep ownership clear when two agents act at once. A ticket already held by a colleague cannot be taken, and Harbour tells you who holds it. | Inbox | two agents taking one item one wins and the other is told who |
| @mentions | Bring a teammate in with a word. Mention them in a note and they are notified. | Notifications | |
| Notifications | Stay on top of what concerns you, with an in-app bell and an email digest of what you missed. | Notifications |
Customers and the portal 8
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Customer portal | Give customers one place to follow up. They sign in to read their requests, answer them and start new ones. | Harbour | a customer reads and answers their request and never sees a note |
| Company-wide tickets | Keep a whole company informed. A customer sees their company’s tickets when the company shares them. | Harbour | a customer reads their companys tickets only when it shares them |
| Company matching by email domain | Group customers automatically. A customer whose verified address is on a company’s domain joins that company; public email services belong to no company. | Organizations | a public mail service is nobodys domain |
| Verified access to email history | Connect earlier email conversations to the customer’s portal only after their email address has been verified. | Harbour | an unproven address never reaches the conversations someone started by mail |
| Customer context panel | Answer with the full picture. Beside the ticket: the person, their company and plan, their other tickets and the company’s notes for the team. | Harbour | a customer reads neither company notes nor the desks configuration |
| Duplicate contact merging | Keep one record per person. The desk suggests records that are probably the same person; a teammate merges them and can undo the merge. | Harbour | a teammate merges a duplicate record and can undo it |
| Mobile portal | Let customers follow up from anywhere, with requests and replies laid out for a phone. | Harbour | the portal on a phone |
| Customer satisfaction ratings | Hear how you did. After a ticket is solved, the customer rates it good or bad, with a comment, from the email or the portal. | Harbour | a solved ticket mails its customer a notice that asks how it went |
Multilingual support 5
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Translated replies | Support customers in their own language. A customer writes in their language and reads your team’s English reply in it, marked as translated. | Conversations | an english reply reaches a swedish customer in swedish marked as translated |
| Original text preserved | Keep each message faithful. A message keeps its original text and gains an English copy, and an agent can show the original. | Conversations | a swedish message keeps its swedish and gains an english copy |
| Delivered translation history | Keep a record of the translated text the customer actually received alongside the original message. | Conversations | the text the customer received is recorded as delivered |
| Bring your own model | Run translation on your own AI model account. | Conversations | |
| Localized portal and email | Speak the customer’s language beyond the ticket: the portal, help centre and notification emails are shown in it. | Harbour |
Knowledge base and help centre 6
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Knowledge base articles | Write an answer once and reuse it. Articles in Markdown, in categories and sections, with drafts, versions, review before publishing and internal-only articles. | Knowledge base and help centre | a draft is written sent for review and published by a reviewer |
| Help centre | Let customers find answers themselves: your articles as a searchable help centre on your own domain, in your look. | Knowledge base and help centre | a customer reads the help centre and never a playbook |
| Article suggestions | Answer questions before they become tickets. The help page suggests articles while a customer describes the problem. | Knowledge base and help centre | the help form suggests articles as the subject is typed |
| Help centre search in the chat | Let customers find the answer before they ask. The chat searches your help centre above its first message, and only articles customers may read. | Knowledge base and help centre | the chat searches the help centre and its first message opens a ticket |
| Multilingual articles | Publish each article in several languages, with a fallback to the default language. | Knowledge base and help centre | a reader reads their language and falls back to the original |
| Semantic search | Find related work when the words differ. Search tickets by what they mean, and see similar tickets beside the one you are on. | Conversations |
Automations and API 5
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Triggers | Automate the routine. When a ticket is created or updated, a customer writes, a status changes or a target is at risk, set its status, priority or tags, assign it, notify the team or email the customer. | Automations | a ticket that says urgent is tagged the leads told and the timeline says which rule did it |
| Time-based automations | Follow up on tickets that have sat in a state for a while. An hourly rule acts once for each wait, such as three days waiting on the customer. | Automations | a ticket waiting three days on its customer is told to whoever holds it once |
| Ordered, traceable automations | Know what your automations did. Rules run in order, protected against loops, and each rule that fires is recorded on the ticket. | Automations | two rules that undo each other each run once and the loop is on the record |
| REST API | Connect Harbour to your own tools. Tickets, replies and statuses are available over a REST API, and each key reads only what its person may. | Harbour | the api reads and writes only what the caller may in the desk |
| Outbound webhooks | Tell your other systems what happened. Signed events are delivered to them, with retries, and an endpoint that keeps failing is paused and the admins told. | Webhooks | a new ticket and its status change are sent signed as the api answers them |
Reports 3
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Support overview | Understand performance at a glance: volume, backlog, first reply, resolution, SLA attainment and satisfaction, by agent, group, channel and company. | Reports | |
| Custom reports | Answer your own questions. Group by any field over time, and export to CSV. | Reports | |
| Service by tier and account team | See how each tier and each account team is being served. | Reports |
AI assistance 7
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| AI reply drafts | Start from a draft rather than a blank page. New and updated tickets get a reply draft waiting in the composer, citing the articles and past answers it used. | Agents | |
| Human-approved AI replies | Review and edit AI drafts before sending. The draft stays internal, and the sent reply links back to it. | Conversations | an approved ai draft becomes a new message and the draft stays internal |
| Suggested clarifying questions | Get the missing details sooner. When a ticket is unclear, the assistant proposes a question for the customer, which an agent approves. | Agents | |
| Suggested actions | Move faster with a person in charge. The assistant proposes a status, field values, merges or problem links, each applied once a person approves it. | Agents | |
| Clearly marked AI content | See at a glance what AI wrote. AI-written entries have their own colour on the timeline, and the customer’s side marks them plainly. | Conversations | |
| AI cost per ticket | Keep AI spending visible: the model cost of each ticket, in the ticket’s panel and in reports. | Agents | |
| Card number redaction | Keep payment card data out of your desk. Card numbers are removed before a message is stored or a model sees it. | Conversations | a card number in a web chat or a desk reply is never stored either |
Team, roles and sign-in 10
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Agent, Lead and Admin roles | Give each person the access their job needs. Agents work tickets, leads also run views and cover, and admins run the desk. | Harbour | an agent is offered only the settings an agent may open |
| First-run admin setup | Get started straight away. Whoever signs up first is the admin; everyone after is a customer until given a role. | Harbour | the first account runs the desk and everyone after is a customer |
| Team invitations | Bring your team in securely. Invite a teammate with their role, from any email domain; the link works once, is followed by a reminder and expires. | Invitations | the link works once |
| Team management | Manage your team from one page. Search the team, grant and revoke roles, deactivate accounts and sign someone out everywhere, each change recorded with who and why. | People | a manager grants and revokes an offered role and each change is recorded |
| Protected admin access | Keep someone responsible for the desk. Role and account changes cannot leave Harbour without an active administrator. | Harbour | the desk is never left without an admin |
| Two-factor authentication | Protect the accounts that matter most. Sign-in with an authenticator app and recovery codes, required of leads and admins. | Accounts | an account the app requires it of sets it up before it is given any ticket |
| Second-factor recovery | Help a locked-out colleague safely. A people manager resets their second factor with a written reason; the person is signed out and told. | People | resetting a lost second factor needs a reason clears it signs out and tells the person |
| Password reset by email | Let people recover access on their own with a single-use reset link, valid for an hour. | Accounts | a reset link is mailed and sets a new password once |
| Sign-out on password change | Close old sessions when a password changes: the account’s other browsers are signed out. | Accounts | a password change signs the accounts other browsers out and nobody elses |
| Audit log | See who changed access and settings, and when. Available to admins. | Harbour |
Privacy 11
| Feature | What it does | Built with | Behavior test |
|---|---|---|---|
| Controlled erasure | Review an erasure plan by data category, separating what can be erased, what must remain restricted until a stated date, and what is currently blocked. | Privacy | an erasure plans erase for the account and notes and keeps the voucher restricted |
| Erasure response | Close each request with a clear answer. The response says what was erased, what was kept, on which legal basis and until when. | Privacy | an approved erasure erases keeps the voucher for the books until the right day and says so |
| Erasure across messages and mail | Erase thoroughly. Erasure reaches the person’s messages, the email they sent and received with its original copies, and files marked as being about them. | Conversations by mail | erasing an address reaches the mail received from it |
| Readable history after erasure | Keep the record intact without the personal data. Erased words are blanked, and the timeline says what was erased. | Privacy for conversations | an erasure erases her other conversations and keeps the complaint restricted saying until when |
| Admin-approved privacy requests | Only an admin starts a privacy request for a customer, and nothing is erased until its plan is approved. | Harbour | only an admin starts a privacy request and nothing is erased until its plan is approved |
| Legal holds | Pause erasure when the law requires it. Freeze erasure for a person or a case, with a reason and a review date. | Privacy | |
| Self-service privacy requests | Let customers ask directly. They file access and erasure requests themselves, and each reaches the team as work with the legal deadline on its clock. | Privacy | the deadline is one calendar month moved past a weekend |
| Access and portability exports | Answer access requests completely: an access export with each category’s purpose, legal basis and retention, and a portable export. | Privacy | an access export carries every category with its purpose basis and retention |
| Configurable retention | Set retention periods within the limits each data category declares, with presets per country. | Privacy | a period below the kits minimum is refused with the reason |
| Records of processing | Know what you hold: what is kept about people, on which basis and for how long, derived from the application itself. | Privacy | the records of processing list every category with its basis and period |
| Automatic daily purge | Data past its retention period is purged each day, and the purge is recorded. | Privacy | every category of every holder is purged and recorded |
Nothing matches. Try fewer words.
A complete application. Reusable foundations.
Harbour combines 22 reusable Osy# kits with its own helpdesk logic. Conversations, assignment, identity, notifications and privacy provide foundations that other applications can use too.
Start with Harbour, adapt it to your team, or use the same kits to build something different.