[{"data":1,"prerenderedAt":640},["ShallowReactive",2],{"announcements":3,"blog-/blog/cancel-change-approved-time-off":28,"blog-related-/blog/cancel-change-approved-time-off":184},[4],{"id":5,"title":6,"active":7,"body":8,"description":14,"extension":19,"link":20,"linkText":21,"meta":22,"navigation":7,"order":23,"path":24,"seo":25,"stem":26,"__hash__":27},"announcements/announcements/v1-0-15-leave-cancellation-and-dashboards.md","v1.0.15 · Cancel or change time off after approval, a redesigned expenses overview, and a smarter dashboard",true,{"type":9,"value":10,"toc":15},"minimark",[11],[12,13,14],"p",{},"v1.0.15 closes the loop on the leave workflow. Employees can now edit or cancel a request that's still pending, and — when plans change after it's already approved — send a cancellation request straight to their manager to approve or decline, all from the dashboard or calendar instead of an off-system email. Approvers get a live badge counting everything waiting on them right in the sidebar, can see each requester's own local time before they decide, and spot a pending cancellation at a glance on the calendar. The expenses list gains a redesigned overview — a clickable status funnel and an interactive spend chart you can flip between monthly and daily — and the dashboard now surfaces the people you actually work with first, remembering your filters between visits. Rounding things out: a consent-first cookie banner and proactive reminders before a white-label domain is due to expire.",{"title":16,"searchDepth":17,"depth":17,"links":18},"",2,[],"md","https://changelog.bookyourpto.com/","See what's new",{},12,"/announcements/v1-0-15-leave-cancellation-and-dashboards",{"title":6,"description":14},"announcements/v1-0-15-leave-cancellation-and-dashboards","fOAAtUu1UA--6s7IzYUyobFwFKQN9-hRD4h83d1hlxg",{"id":29,"title":30,"author":31,"body":32,"date":172,"description":173,"extension":19,"image":174,"meta":175,"navigation":7,"path":176,"readTime":177,"seo":178,"stem":179,"tags":180,"__hash__":183},"blog/blog/cancel-change-approved-time-off.md","What to Do When an Employee Needs to Cancel Approved Time Off","AnHourTec Team",{"type":9,"value":33,"toc":165},[34,42,47,50,66,69,73,76,89,99,103,106,139,143,150,154,157],[12,35,36,37,41],{},"Most leave guides stop at the moment a request is approved, as if the story ends there. It doesn't. A child gets sick the day before a holiday. A project slips and someone wants to give back two of their five booked days. A trip gets cancelled outright. What happens ",[38,39,40],"em",{},"after"," approval is where a lot of leave systems quietly fall apart — and where balances start to drift away from reality.",[43,44,46],"h2",{"id":45},"the-problem-with-just-email-me","The Problem With \"Just Email Me\"",[12,48,49],{},"When plans change, the path of least resistance is an email: \"Hey, can you cancel my Thursday and Friday?\" It feels harmless. But that one message creates a chain of manual steps someone has to remember to do:",[51,52,53,57,60,63],"ul",{},[54,55,56],"li",{},"The manager has to acknowledge it.",[54,58,59],{},"Someone has to remove it from the team calendar.",[54,61,62],{},"Someone has to add the days back to the employee's balance.",[54,64,65],{},"Payroll has to be told if anything already flowed through.",[12,67,68],{},"Miss any one of those and you get the classic dispute three months later: the employee swears they cancelled, the balance says otherwise, and nobody can prove what happened. Multiply that across a team and your leave data is no longer trustworthy — which defeats the entire point of tracking it.",[43,70,72],{"id":71},"pending-vs-approved-two-different-situations","Pending vs. Approved: Two Different Situations",[12,74,75],{},"The right way to handle a change depends on where the request is in its lifecycle.",[12,77,78,82,83,88],{},[79,80,81],"strong",{},"If the request is still pending,"," the fix should be trivial: the employee edits the dates or withdraws it themselves, before anyone has approved anything. No manager involvement, no balance math — it never became real in the first place. A good ",[84,85,87],"a",{"href":86},"/leave-management","leave management"," tool lets people edit or cancel their own pending requests directly.",[12,90,91,94,95,98],{},[79,92,93],{},"If the request is already approved,"," it's different. The booking is live, the calendar shows it, the balance is committed, and coverage decisions may have been made around it. An employee shouldn't be able to silently un-book approved time — but they also shouldn't have to send an off-system email. The clean answer is a ",[79,96,97],{},"cancellation request",": the employee asks to cancel, the manager approves or declines, and only on approval does the system return the balance and clear the calendar.",[43,100,102],{"id":101},"what-good-looks-like","What \"Good\" Looks Like",[12,104,105],{},"A cancellation flow that actually keeps your data clean has a few properties:",[107,108,109,115,121,127,133],"ol",{},[54,110,111,114],{},[79,112,113],{},"Self-serve initiation."," The employee starts the change from the calendar or dashboard, not from your inbox.",[54,116,117,120],{},[79,118,119],{},"Manager in the loop for approved leave."," Cancelling something already approved routes back to the approver, so coverage stays a conscious decision.",[54,122,123,126],{},[79,124,125],{},"Automatic balance return."," When a cancellation is approved, the days come back to the right bucket automatically — no spreadsheet edit, no rounding errors.",[54,128,129,132],{},[79,130,131],{},"A visible trail."," Everyone can see the request was made, who acted on it, and when. The history is the proof that ends disputes.",[54,134,135,138],{},[79,136,137],{},"One source of truth."," The calendar, the balance, and the notification all update from the same action, so they can never disagree.",[43,140,142],{"id":141},"why-managers-should-welcome-it","Why Managers Should Welcome It",[12,144,145,146,149],{},"Some managers worry that making cancellation easy will turn the calendar into churn. In practice the opposite happens. When cancelling is a structured, visible action instead of a quiet email, managers get ",[38,147,148],{},"more"," control, not less — they see every change, approve the ones that matter, and end up with a calendar that reflects reality instead of a best guess. A team view that always tells the truth is worth far more than one that's \"mostly right.\"",[43,151,153],{"id":152},"make-change-a-non-event","Make Change a Non-Event",[12,155,156],{},"The goal is the same as it is for requesting time off in the first place: make it boring. Plans change constantly, and your leave system should absorb that without anyone chasing anyone. When editing a pending request takes one click and cancelling an approved one is a clean two-step approval, the days reconcile themselves and your balances stay accurate all year.",[12,158,159,160,164],{},"That accuracy is the whole game. A ",[84,161,163],{"href":162},"/pto-tracking-software","PTO tracking system"," is only as valuable as the trust you have in its numbers — and that trust is won or lost in exactly these after-approval moments.",{"title":16,"searchDepth":17,"depth":17,"links":166},[167,168,169,170,171],{"id":45,"depth":17,"text":46},{"id":71,"depth":17,"text":72},{"id":101,"depth":17,"text":102},{"id":141,"depth":17,"text":142},{"id":152,"depth":17,"text":153},"2026-05-27","Plans change. Here's how to handle cancelling or editing already-approved leave without lost balances, awkward emails, or a manager guessing what's still booked.","https://images.unsplash.com/photo-1554224155-6726b3ff858f?w=1200&h=630&fit=crop",{},"/blog/cancel-change-approved-time-off","5 min read",{"title":30,"description":173},"blog/cancel-change-approved-time-off",[87,181,182],"approvals","self-service","LAlmLkCvXaVnpyd6E3CUbEKeKyYkK3tBNzRj_Ts-hmg",[185,323,479],{"id":186,"title":187,"author":31,"body":188,"date":311,"description":312,"extension":19,"image":313,"meta":314,"navigation":7,"path":315,"readTime":177,"seo":316,"stem":317,"tags":318,"__hash__":322},"blog/blog/connect-hr-data-to-ai-assistants-mcp.md","Ask Your HR Data Questions: Connecting BookYourPTO to AI Assistants with MCP",{"type":9,"value":189,"toc":304},[190,193,201,205,208,215,219,222,248,251,255,262,265,269,281,285,288],[12,191,192],{},"Every HR platform has a dashboard. The trouble with dashboards is that they answer the questions the designer anticipated, in the order they decided, behind the clicks they laid out. Real questions don't work that way. \"Who's off the week of the product launch?\" \"How much sick leave has the warehouse team taken this quarter compared to last?\" \"Does anyone have a certification expiring before our next site visit?\" Those are the questions managers actually ask — and they rarely map cleanly to a chart.",[12,194,195,196,200],{},"The Model Context Protocol (MCP) changes the shape of that interaction. Instead of hunting through screens, you ask your AI assistant in plain language, and it pulls the answer from your live BookYourPTO data. You can read more on our ",[84,197,199],{"href":198},"/mcp","MCP integration"," page, but here's why it matters.",[43,202,204],{"id":203},"what-mcp-actually-is","What MCP Actually Is",[12,206,207],{},"MCP is an open standard for connecting AI assistants to real tools and data sources. Think of it as a universal adapter: instead of every app building a bespoke AI integration, a tool exposes its capabilities through MCP, and any MCP-capable assistant can use them. It's the same idea that made USB useful — one connector, many devices.",[12,209,210,211,214],{},"For an HR platform, that means your leave balances, schedules, approvals, expenses, and team data become things an assistant can ",[38,212,213],{},"query on your behalf"," — securely, with your permissions, against live data rather than a stale export.",[43,216,218],{"id":217},"what-you-can-actually-do-with-it","What You Can Actually Do With It",[12,220,221],{},"The point isn't novelty; it's removing clicks from questions you ask constantly. A few examples:",[51,223,224,230,236,242],{},[54,225,226,229],{},[79,227,228],{},"Coverage at a glance."," \"Who's on leave next week, and is anyone on the support team out at the same time?\"",[54,231,232,235],{},[79,233,234],{},"Trend questions."," \"How does this month's absence compare to last month?\" — the kind of cross-cutting question that's tedious to assemble by hand.",[54,237,238,241],{},[79,239,240],{},"Quick lookups."," \"How much annual leave does Priya have left?\" without opening her profile.",[54,243,244,247],{},[79,245,246],{},"Drafting on top of data."," \"Summarize who's out this week for the team standup note,\" produced from the real calendar.",[12,249,250],{},"The assistant does the fetching and the formatting; you stay in the flow of whatever you were already doing.",[43,252,254],{"id":253},"why-this-beats-a-traditional-integration","Why This Beats a Traditional Integration",[12,256,257,258,261],{},"Classic integrations are rigid: someone decides in advance which fields sync to which other tool, and anything outside that pipe requires an engineer. An MCP connection is ",[38,259,260],{},"conversational"," — the range of questions isn't fixed up front, because the assistant composes the request at the moment you ask. You're not limited to the reports someone pre-built; you're limited only by what you can think to ask.",[12,263,264],{},"It also keeps your data where it belongs. Rather than copying HR records into yet another system to make them \"AI-ready,\" the assistant reads from BookYourPTO directly, under the same access rules that already govern your account. The data doesn't sprawl.",[43,266,268],{"id":267},"security-stays-in-charge","Security Stays in Charge",[12,270,271,272,275,276,280],{},"Connecting an AI assistant to HR data raises the obvious question — ",[38,273,274],{},"who can see what?"," The answer is that MCP access rides on top of your existing permissions, not around them. An assistant acting on behalf of an employee sees what that employee is allowed to see, and nothing more. The same role boundaries, the same organization scoping, and — as covered in our piece on ",[84,277,279],{"href":278},"/blog/why-every-business-needs-an-audit-log","audit logs"," — the same recorded trail of sensitive actions. AI access is a new front door to your data, not a bypass of the locks.",[43,282,284],{"id":283},"where-to-start","Where to Start",[12,286,287],{},"You don't need to overhaul anything to try it. Connect a single MCP-capable assistant, start with read-only questions about leave and coverage, and notice how many small lookups disappear from your week. Most teams find the value isn't one dramatic workflow — it's the steady erosion of \"let me go check and get back to you.\"",[12,289,290,291,294,295,298,299,303],{},"The broader trend is clear: the interface to business software is shifting from ",[38,292,293],{},"navigating"," to ",[38,296,297],{},"asking",". Pairing a capable ",[84,300,302],{"href":301},"/integrations","HR platform"," with an AI assistant over MCP is one of the most practical ways to get there today — and a genuinely modern answer to questions your team has been asking all along.",{"title":16,"searchDepth":17,"depth":17,"links":305},[306,307,308,309,310],{"id":203,"depth":17,"text":204},{"id":217,"depth":17,"text":218},{"id":253,"depth":17,"text":254},{"id":267,"depth":17,"text":268},{"id":283,"depth":17,"text":284},"2026-06-10","Who's off next week? How much vacation has the design team used? With the Model Context Protocol, you can ask your AI assistant — and get answers straight from your live HR data.","https://images.unsplash.com/photo-1611926653458-09294b3142bf?w=1200&h=630&fit=crop",{},"/blog/connect-hr-data-to-ai-assistants-mcp",{"title":187,"description":312},"blog/connect-hr-data-to-ai-assistants-mcp",[319,320,321],"ai","mcp","integrations","4pvqm4HXRLlagcvR-R4efXVn4bQ1w8fPQ8YwDiT18WI",{"id":324,"title":325,"author":31,"body":326,"date":469,"description":470,"extension":19,"image":471,"meta":472,"navigation":7,"path":278,"readTime":177,"seo":473,"stem":474,"tags":475,"__hash__":478},"blog/blog/why-every-business-needs-an-audit-log.md","Why Every Business Needs an Audit Log — Even Small Ones",{"type":9,"value":327,"toc":463},[328,331,346,350,365,368,372,378,388,398,402,405,441,449,453,460],[12,329,330],{},"Most of the time, an audit log does nothing. It sits there, recording. Then one day someone asks \"who changed this person's leave balance?\" or \"when was this employee's access revoked?\" or \"did we actually approve that expense?\" — and the audit log is the only thing in your entire system that can answer without a guess. That asymmetry is the whole argument for it: cheap to keep, priceless the day you need it.",[12,332,333,334,337,338,340,341,345],{},"For years, audit logging was sold as an enterprise feature — the thing you paid extra for once you were big enough to have a compliance officer. That framing is backwards. Smaller teams have ",[38,335,336],{},"less"," process and ",[38,339,148],{}," shared access, which means they need a reliable record of who did what even more than large ones do. So we moved audit logs into every plan, including ",[84,342,344],{"href":343},"/pricing","Free",". Here's the thinking.",[43,347,349],{"id":348},"what-an-audit-log-actually-is","What an Audit Log Actually Is",[12,351,352,353,356,357,360,361,364],{},"An audit log is an append-only record of security- and data-relevant actions: a user created, a role changed, a balance adjusted, an approval granted, a document signed, an account deleted. Each entry captures ",[79,354,355],{},"who"," did it, ",[79,358,359],{},"what"," changed (ideally with before-and-after values), and ",[79,362,363],{},"when",". Crucially, it's not editable after the fact — the value of the record is precisely that no one can quietly rewrite it.",[12,366,367],{},"It's not the same as your activity feed or your notifications. Those are conveniences. An audit log is evidence.",[43,369,371],{"id":370},"three-reasons-it-matters-sooner-than-you-think","Three Reasons It Matters Sooner Than You Think",[12,373,374,377],{},[79,375,376],{},"1. Disputes end in seconds, not hours."," \"I never got those days back.\" \"I did approve that.\" \"Someone deleted my entry.\" Without a log, these become he-said-she-said arguments that drain an afternoon and damage trust. With one, you open the record, read the timeline, and move on. The time saved on a single serious dispute usually justifies the feature on its own.",[12,379,380,383,384,387],{},[79,381,382],{},"2. Accountability changes behavior."," When people know that sensitive actions are recorded — not surveilled, ",[38,385,386],{},"recorded"," — the careless edits and the \"I'll just fix it directly in the database\" shortcuts drop off. A visible audit trail is one of the cheapest internal controls a small company can adopt, and it requires no extra headcount.",[12,389,390,393,394,397],{},[79,391,392],{},"3. Compliance and due diligence get easier."," The moment you handle employee data, you inherit obligations: data-protection rules, customer security questionnaires, the occasional \"show us your access controls\" from a larger client. \"Yes, every privileged action is logged with the actor and timestamp\" is a far better answer than a shrug. And if you ever raise money or get acquired, someone ",[38,395,396],{},"will"," ask.",[43,399,401],{"id":400},"what-makes-an-audit-log-trustworthy","What Makes an Audit Log Trustworthy",[12,403,404],{},"Not all logs are created equal. A useful one is:",[51,406,407,413,419,425,435],{},[54,408,409,412],{},[79,410,411],{},"Append-only."," Entries can't be edited or deleted, including by admins. Tamper-resistance is the point.",[54,414,415,418],{},[79,416,417],{},"Attributed."," Every entry ties to a specific user, not a vague \"system.\"",[54,420,421,424],{},[79,422,423],{},"Detailed."," Before-and-after values for changes, not just \"something was updated.\"",[54,426,427,430,431,434],{},[79,428,429],{},"Scoped and access-controlled."," In a multi-tenant system, you see ",[38,432,433],{},"your"," organization's log and only yours, and only the right roles can read it.",[54,436,437,440],{},[79,438,439],{},"Exportable."," You can pull a range to CSV when an auditor, a client, or your own investigation needs a copy.",[12,442,443,444,448],{},"In BookYourPTO, audit logs are organization-scoped and restricted to executives — so a free team's own leadership can review their own history, and nothing leaks across organizations. You can see the full picture on the ",[84,445,447],{"href":446},"/features","features"," page.",[43,450,452],{"id":451},"were-too-small-for-this","\"We're Too Small for This\"",[12,454,455,456,459],{},"That's the most common objection, and it's exactly the trap. Small teams run on trust and shared logins and \"just ask Sam, she'll remember.\" That works right up until Sam is on holiday, or leaves, or two people remember the same event differently. An audit log is institutional memory that doesn't depend on anyone being available — and the best time to start keeping one is ",[38,457,458],{},"before"," you need it, because a log only helps from the moment it starts recording.",[12,461,462],{},"That's why it's free. A record of who did what shouldn't be a feature you have to grow into. It should be on from day one — for everyone.",{"title":16,"searchDepth":17,"depth":17,"links":464},[465,466,467,468],{"id":348,"depth":17,"text":349},{"id":370,"depth":17,"text":371},{"id":400,"depth":17,"text":401},{"id":451,"depth":17,"text":452},"2026-06-06","An audit log answers the only question that matters in a dispute: who did what, and when? Here's why it's no longer an enterprise luxury — and why we made ours free on every plan.","https://images.unsplash.com/photo-1450101499163-c8848c66ca85?w=1200&h=630&fit=crop",{},{"title":325,"description":470},"blog/why-every-business-needs-an-audit-log",[476,477,279],"security","compliance","ABiAmUZwkKRVMKnEnkMxPaPuBRqukd_Duaiv_DzYlLU",{"id":480,"title":481,"author":31,"body":482,"date":628,"description":629,"extension":19,"image":630,"meta":631,"navigation":7,"path":632,"readTime":633,"seo":634,"stem":635,"tags":636,"__hash__":639},"blog/blog/managing-pto-across-time-zones-remote-teams.md","Managing PTO Across Time Zones for Remote and Distributed Teams",{"type":9,"value":483,"toc":621},[484,487,491,502,505,509,515,526,529,533,539,569,573,585,589,592,618],[12,485,486],{},"Hire one person in another country and a quiet new category of bug enters your HR data: the off-by-one date. A holiday that lands on the wrong day. A leave request that the calendar shows starting a day early. A clock-in stamped \"yesterday.\" None of it is malicious and none of it is the employee's fault — it's what happens when software treats \"a day\" as a moment in time instead of a date on someone's calendar. For distributed teams, getting this right is the difference between a leave tracker people trust and one they quietly stop believing.",[43,488,490],{"id":489},"why-time-zones-break-leave-tracking","Why Time Zones Break Leave Tracking",[12,492,493,494,497,498,501],{},"A calendar day — your birthday, a public holiday, the start of a vacation — has no time of day. It's just ",[38,495,496],{},"July 1st",". But computers love to store dates as precise instants, and an instant is always in ",[38,499,500],{},"some"," time zone. Store \"July 1st\" as midnight in one zone and read it back in another, and it can silently become June 30th. Now Canada Day shows up on the wrong square, and someone's one-day leave looks like it spans two.",[12,503,504],{},"This is the single most common class of bug in any system that handles dates across regions, and it shows up everywhere leave software touches a calendar: the day a holiday falls, whether a leave has \"started yet,\" how a half-day is counted, and which day a clock-in belongs to.",[43,506,508],{"id":507},"whose-today-counts","Whose \"Today\" Counts?",[12,510,511,512],{},"The question that resolves most of these bugs is deceptively simple: ",[79,513,514],{},"whose calendar are we talking about?",[12,516,517,518,521,522,525],{},"When you ask \"has this person's leave started?\", the answer depends on the ",[38,519,520],{},"employee's"," time zone, not the viewer's. A manager in London looking at a teammate in Vancouver should see that teammate's leave status according to Vancouver's clock — otherwise the manager sees someone as \"off\" eight hours before they actually are. The rule of thumb: ",[79,523,524],{},"the time zone that matters is the one belonging to the person the decision is about",", not the person looking at the screen and not the server.",[12,527,528],{},"Get that one principle right and a surprising number of date problems simply disappear.",[43,530,532],{"id":531},"what-to-look-for-in-a-tool","What to Look For in a Tool",[12,534,535,536,538],{},"You shouldn't have to think about any of this — the software should. When evaluating ",[84,537,87],{"href":86}," software for a distributed team, check that it handles:",[51,540,541,551,557,563],{},[54,542,543,546,547,550],{},[79,544,545],{},"Region-aware public holidays."," A statutory holiday in one country isn't one in another. People should see ",[38,548,549],{},"their"," holidays, and leave math should deduct accordingly.",[54,552,553,556],{},[79,554,555],{},"Per-employee time zones."," Each person has their own zone, with a sensible fallback to the organization's default — not one global setting that's wrong for half the team.",[54,558,559,562],{},[79,560,561],{},"Calendar-day correctness."," A one-day leave is one day for everyone, everywhere. No drift, no double-counting at the edges.",[54,564,565,568],{},[79,566,567],{},"Local-time context for approvers."," When a manager approves a request, seeing the requester's own local time removes the mental arithmetic and the \"wait, is that their Monday or mine?\" pause.",[43,570,572],{"id":571},"clock-ins-have-the-same-problem","Clock-Ins Have the Same Problem",[12,574,575,576,580,581,584],{},"If you also track hours, the same logic applies to ",[84,577,579],{"href":578},"/time-tracking","time tracking",". A clock-in at 11pm needs to land on the right ",[38,582,583],{},"date"," for the employee, or your timesheets and overtime calculations quietly skew. Monthly and yearly counters — leave accruals, usage resets, scan limits — should roll over based on a consistent, intended time zone, not wherever the server happens to live. Otherwise a reset that should happen on the 1st fires on the 31st for some of your team.",[43,586,588],{"id":587},"practical-advice-for-distributed-teams","Practical Advice for Distributed Teams",[12,590,591],{},"You can't fix your software's internals, but you can set your team up well:",[107,593,594,600,606,612],{},[54,595,596,599],{},[79,597,598],{},"Set each employee's time zone correctly"," at onboarding, and treat it as real data, not a cosmetic preference.",[54,601,602,605],{},[79,603,604],{},"Pick an organization default"," that makes sense as a fallback — usually your headquarters or incorporation country.",[54,607,608,611],{},[79,609,610],{},"Talk in dates, not times,"," for anything leave-related: \"off on the 14th,\" not \"off from 14th 00:00.\"",[54,613,614,617],{},[79,615,616],{},"Let holidays be local."," Don't force everyone onto one country's holiday calendar; it frustrates people and corrupts balances.",[12,619,620],{},"Distributed teams are now the norm, not the exception. The leave and time tools that earn long-term trust are the ones where \"a day off\" means the same thing whether you're in Toronto, London, or Sydney — and where nobody on the team has ever had to argue about which day it actually was.",{"title":16,"searchDepth":17,"depth":17,"links":622},[623,624,625,626,627],{"id":489,"depth":17,"text":490},{"id":507,"depth":17,"text":508},{"id":531,"depth":17,"text":532},{"id":571,"depth":17,"text":572},{"id":587,"depth":17,"text":588},"2026-06-03","When your team spans continents, 'today' means different things to different people. Here's how to track leave, holidays, and clock-ins across time zones without off-by-one errors.","https://images.unsplash.com/photo-1524661135-423995f22d0b?w=1200&h=630&fit=crop",{},"/blog/managing-pto-across-time-zones-remote-teams","6 min read",{"title":481,"description":629},"blog/managing-pto-across-time-zones-remote-teams",[637,87,638],"remote work","time zones","sejEMfG_CVvaLnqqCdfm4h8vkd8U3gkZU_X3eB0OyXc",1781122563597]