What's new

Notable changes in HumanixOS — features, improvements, and fixes.

Offer event timeslots on a form, and let people check themselves in

One event can now run at several times, and people can pick the time that suits them.

Set the times up front. When you create an event you can add its timeslots right there, instead of saving the event and adding them afterwards. A single timeslot is filled in for you, so an event that runs once is no more work than before.

Put the real times on your form. A registration form linked to an event can now offer that event's timeslots. The list comes straight from the event, so there is no second copy to keep up to date, and a time you change or remove changes on the form too. Each option shows how many spots are left, and a full timeslot says so.

Both ways of checking in. Staff can check someone into the specific timeslot they registered for, and people can still check themselves in. Every check-in now records how it happened, and attendance that someone recorded for themselves is labelled, so you can see at a glance which attendance was observed by your team.

One person can register for several timeslots of the same event, which is what a weekly class or a multi-day workshop needs.

A roster you can read. Because one person can now hold several registrations, the attendee list groups by person: one line each, with their timeslots underneath. You can search it, narrow it to one timeslot, and filter by how much of it someone attended, including who came to every timeslot. The count above the list tells you how many people you have and how many registrations they hold between them.

Volunteer shifts follow the event. Creating a shift for an event now offers that event's timeslots. Pick the ones the shift covers and you get a shift for each, already set to that timeslot's time and place, instead of typing the same dates and addresses again.

Funder dashboard loads for very large organizations

Funding partners whose portfolio includes a very large organization (hundreds of thousands of clients) were seeing "We couldn't load your dashboard" instead of their numbers. The dashboard, the organizations list and each organization's page now load in a few seconds regardless of size.

Part of how this works: the demographic breakdowns, the service breakdown and the impact figures are now computed on a schedule, once an hour, instead of on every page view. The dashboard shows when those figures were last computed. An organization attached to your partnership since the last run is listed as pending in those sections until the next hourly refresh, rather than appearing with zeros. Activity, new-client counts, and organization summaries remain live.

Funding partners can now see delivery over time

The funding partner portal has a new Trends over time section, on both the main dashboard and each organization's page.

Until now every figure in the portal was a lifetime total, a single calendar year, or a this-week snapshot. That tells you how much, but not whether it is growing, when it happened, or which organization it came from.

What is new:

  • A chart of delivery over time. Pick any of the metrics you already see as tiles: service records, people served, value of goods distributed, items distributed, events held, or volunteer hours.
  • A period that matches your grant, not the calendar. Last 12 months, last 24 months, year to date, or your own start and end dates. Group by month, quarter or year.
  • A comparison across your organizations. Who delivered the most this period, what share of the total each represents, and whether they are up or down against the period before.
  • Export to CSV, so the numbers can go straight into a board memo or an annual report.

The period you choose is part of the page address, so you can send a colleague a link to exactly the view you were looking at, and it follows you when you click into a single organization.

Totals in the new section match the impact figures above them for the same window, including "people served", which counts each person once no matter how many months they appear in.

As always, the portal shows aggregate figures only. No individual client information is ever visible to a funding partner.

Funding partners can see how their organizations use the system

Alongside the new delivery trends, the funding partner portal now shows a How they use the system section on the dashboard and on each organization's page.

Delivery numbers say what an organization achieved. This says whether HumanixOS is actually part of how they work:

  • Active days and the typical gap between them. Steady weekly use and one big catch-up session can produce the same number of records, and they mean very different things.
  • Visits, counted whenever someone signs in and uses the system, whether or not they record anything while they are there.
  • People active, against how many accounts the organization has. One person carrying all the data entry is worth knowing about.
  • What they use it for, with a share for each part of the product and when it was last touched.
  • Switched on, but not used, listing features an organization has enabled and recorded nothing in during the period.

All of it respects the same period and grouping controls as the delivery trends, and exports to CSV.

Two deliberate limits. Where usage was never measured, the portal says so rather than showing zeros, because "we did not measure this" and "they stopped using it" are very different statements. And as everywhere else in the portal, these are counts only: a funding partner never sees who did what, only how many people were active.

The page toolbar no longer disappears on Link Clients

The sticky toolbar that sits at the top of every dashboard page was missing on two service pages: Link Clients and Service Templates. Opening Link Clients from a service made the toolbar vanish, which looked like a glitch.

Both pages now carry the toolbar, with a clear way back to where you came from.

More of the app now follows your language setting

If you use HumanixOS in French or Spanish, a number of screens were still showing English. This release closes most of those gaps.

The dashboard home tiles, the notification center, the email campaign area (the campaign builder, the automation editor, list filters and the new-campaign pages), the board portal tab titles, the integrations page, the import wizard's field list, and the pickers for team members and ledger accounts now render in your chosen language. Success and error messages in the grants, donors, forms and SMS areas are translated too, and the "delete saved block" confirmation in the email builder is now a proper in-app dialog instead of a browser popup.

Dates across the app now respect your language as well. Month and weekday names, "3 days ago" style timestamps, the auto-save indicator, and dates in exported spreadsheets used to come out in English, or followed your browser's language rather than the one you picked in HumanixOS.

The standard client field names (First Name, Date of Birth, ZIP Code and the rest) are now translated wherever they appear: table headers, the client profile card, the import wizard, exports, and the email editor. If your organization has renamed one of these fields, your own name is always shown exactly as you entered it.

As before, anything your organization typed in, such as campaign names, subject lines, saved views, category names, or custom field labels, is never translated.

Filtering by a multi-select field works again

Filtering a table by a multi-select field (a custom field where a record can have several options ticked) returned no rows at all, and the "Is empty" and "Is not empty" checks on those fields gave the wrong answer. Both are fixed on the People list, on organization record contact lists, and in generated reports.

On a service's client list, filters on the service's own fields were being ignored entirely, so the list stayed unfiltered no matter what you chose. Those filters now apply.

Filtering by a value that contains a comma or parentheses, such as "Food, Pantry (weekly)", also used to fail with an error. That works now too.

Service pages now explain why a page will not open

If you did not have permission to link people to a service, the page used to say the service could not be found. The service was there the whole time, and the message sent people looking for a missing record instead of asking for access.

Service pages now tell you what is actually happening:

  • If you do not have edit access, the page says so and tells you to ask an administrator.
  • If something went wrong loading the service, you get an error you can retry, instead of being told it does not exist.
  • While a service is still loading, you see it loading.
  • "Not found" now means the service really is not there.

The button that opens the client picker is also hidden when you do not have edit access, so you are no longer invited into a page that will turn you away.

Donation imports create donors for first-time givers

Importing gifts used to require that every donor already existed. A gift from someone new failed its row with "import your donors first", so recording a handful of donations from first-time givers meant adding each of them by hand before the file would go in.

Now a donation import creates a donor for anyone it doesn't recognise. Before it does, it checks your clients: if the giver is already a client, the new donor is linked to that client record instead of starting a second, separate identity for the same person. When someone gives more than once in the same file, they get one donor, not one per gift.

The import tells you how many donors it created and how many linked to a client, and that note is kept on the import record, so nothing appears without explanation. If you undo the import, the donors it created are undone with it.

Two things deliberately did not change. A gift naming someone that two of your donors already share still fails that row and says so, because choosing one of them would attribute the money to the wrong person and only you can say which was meant. And rows with no amount, the subtotal and placeholder lines that donor exports are full of, are still skipped rather than turned into donors.

If you are moving from another system and have a donor export, importing it first is still the better order. Donors created from a gifts file start with just a name, since that is usually all a gifts file carries.

Find your newest form, and read every answer

Two changes to the forms area, both from watching people use it.

Your forms list now starts with the newest. Previously the list led with forms that had submissions waiting, which meant a form you had just created could land near the bottom, below everything with activity on it. Now the most recently created form is first, so a form you just made is right where you expect it. If you liked the old order, it is still there under the Priority sort option, and whichever sort you pick now sticks with you as you move around instead of resetting every time you open a form.

Long answers are readable. Responses used to be cut off after a single line with no way to see the rest, which made long-form questions almost pointless. Answers now wrap onto several lines, longer ones have a Show more link that opens the whole thing, and questions that ask for a paragraph get more room on the page. Line breaks people typed into their answers are kept as well.

Sort your forms by service

If you run a lot of intake forms across several services, the forms list now has a Service sort option. Pick it and your forms group together by the service each one is linked to, in alphabetical order, with forms inside a service listed by name.

Forms that aren't tied to a service are gathered together at the end of the list, so nothing gets scattered. It's a small addition, but it makes finding every form for a given program much quicker.

Import in-kind donations, with their value and what was given

Gifts of goods and services can now come in through a donation import along with everything else.

Set the donation type to "In Kind" and map your file's amount column as usual. In-kind value is held separately from cash so that goods and money stay distinguishable, and the import puts it in the right place for you rather than making you know that. It says how many rows it moved. If your file keeps cash and fair-market value in separate columns, there is now a column for that too.

Donations of goods also carry what was actually given — "Gift basket and gift card for raffle", "four hours of legal advice". You can map it from your file's gift note or memo column, and it is there when you add an in-kind donation by hand as well. It shows with the gift, so a year later the record says more than a dollar figure. An amount with no description is not something you can write a thank-you letter from.

Type columns are also more forgiving now. "In Kind", "in-kind", "Credit Card" and "credit_card" are all understood, so a file exported for humans to read no longer has to be rewritten for us.

If your donated goods enter your stock and get handed out, keep receiving them through Inventory — that tracks items, quantities and per-unit values, which a donation record does not.

Number columns are easier to spot

If you have a column set up to hold numbers, it now looks like one. Numbers line up along the right edge of the column the way they do in a spreadsheet, so you can scan down a column and compare figures at a glance. Column headings for these columns are marked too, so you can tell what a column expects before you start typing in it.

There's one more change worth knowing about. A number column has always refused letters, but it used to refuse them silently, which made the cell look like it had stopped responding. Now, if you type a letter into a number cell, the cell tells you it only takes numbers. What you can enter hasn't changed at all, but you'll no longer be left guessing why nothing happened.

Importing organization records works again

Importing organization records from a spreadsheet was failing for everyone with a "you do not have permission" message, even for account owners. That's fixed — you can now import organization records as expected, and the import respects your organization's permissions like every other import.

Drag grant cards between columns

The grant opportunities board now works the way it looks like it should: drag a card from one column to another to change its status. Until now the board only grouped opportunities — changing a status meant opening the card's menu.

The grant pipeline board got the same treatment. Both boards now use one drag implementation, which means:

  • Dragging works on a phone or tablet. Press and hold the grip handle on the left of a card to pick it up, then drop it in another column. A plain swipe still scrolls the board, so you can browse without moving anything by accident.
  • It works from the keyboard too. Tab to a card's grip, press Space to pick it up, use the arrow keys, then Space again to drop.
  • The card moves right away, and slides back to where it started if the change doesn't save — with a message telling you what went wrong.
  • Clicking a card still opens it. The grip handle on the left of each card is what starts a drag.
  • Only people who can edit grants can drag. If your role is view-only, the boards look the same but the cards stay put.

One deliberate exception: on the opportunities board, the Promoted column doesn't accept drops. Promoting an opportunity creates a real grant in your pipeline, so it still goes through the Promote action on the card's menu.

Event custom fields now appear in event reports

If you collect extra information from event attendees — dietary needs, a t-shirt size, which session someone picked — that information now travels with your event reports.

  • One column per custom field, named the way you named the field, in the order you arranged it on the event.
  • Included in every export: CSV, Excel and PDF.
  • Visible in the report preview, in a table built for attendee rosters rather than the generic one it used to fall back on.
  • Available to charts. Ask for a visualization of an event report and the AI can now group and count by your own fields, using the field type you chose rather than guessing from the values.

A field you defined but nobody filled in still gets its column, so a gap in the data looks like a gap rather than a missing column.

Reports you generated before today keep working exactly as they did — they just don't have the new columns, because the information wasn't captured in them at the time.

One thing to know: event custom fields aren't covered by the report's "include personal information" toggle, which controls attendee names, emails and phone numbers. If a custom field holds something sensitive, that's worth keeping in mind when you share the report.

Fix an item's type before stock arrives

Picked the wrong type when you added an inventory item? You can now change it — as long as nothing has been received against that item yet. Open the item, edit it, and choose the right type.

Once stock has been received, the type locks for good. Everything on the shelf is described in terms of the type it arrived under — sizes, expiry dates, lot numbers — so changing it later would quietly rewrite your history. The edit dialog now says which of the two situations you are in, instead of only telling you the type is fixed.

Getting the type right matters beyond tidiness: it decides which category an item's distributions appear under in your reports and funder summaries.

The funder dashboard now tells you when it can't load

If something went wrong fetching your organizations' numbers, the funding partner dashboard used to show zeros and empty tables — which looks exactly like a portfolio that hasn't recorded anything yet. There was no way to tell "nothing happened" from "we couldn't ask".

Now it says so, and gives you a retry. If only part of the page is affected — impact, goods distributed, or organization activity — the rest still loads and a note names what's missing, so you know which numbers to trust.

Funding partner Team page now shows your whole team

The Team page on a funding partner account was only ever showing one person — you. Anyone else on the account was invisible, which also meant an owner had no way to remove a member they hadn't added themselves, and inviting a teammate who was already on the account failed with "already a member" while the page showed no such person.

The roster now lists everyone on the funding partner, for every member of it. If you do try to invite someone who is already on the team, the message points you at the Members list instead of contradicting it.

Households get their own home — and can now give

Households are no longer tucked inside Inventory. They now have their own place in the sidebar, their own on/off switch in Settings → Modules, and their own permissions — so your team can manage client families even if you never use inventory.

What's new:

  • A real household page. Click any household to see its members, their roles, custom fields, and quick links to each person's record.
  • Member roles. Every household member can be marked as a Guardian, Child, or Adult. Assign the guardian role to whoever fills it in that family — parents, grandparents, aunts and uncles. A child's guardians are always visible from their record.
  • Donations from a household. When recording a donation, you can now pick a household as the donor — perfect for joint gifts from spouses. The gift is counted once in your totals, shows up on both partners' donor pages as household giving, and thank-you letters address both names ("Dear Maria & José Rivera").
  • Household custom fields moved to Settings → Households, and keep working whether or not inventory is enabled.

Existing links to household pages keep working, and everything you already set up carries over automatically.

Organizations is available to every account

Signing up used to ask whether you serve individuals, other organizations, or both. That answer did one thing: it decided whether the Organizations area appeared in your sidebar — a question most people had no way to answer before they'd used the product.

The question is gone, and Organizations is now available to everyone. If you don't track organization records or corporate partners, you can switch the module off under Settings → Modules, along with anything else you don't use.

Accounts that previously had it hidden now have it available. If you had deliberately turned it off yourself, it stays off.

Client data now follows your permission settings everywhere

Permissions for client records are now enforced consistently, including when you ask the AI assistant.

Previously, a few places checked only that you belonged to the organization — so someone whose access to client records had been turned off could still reach that data through the assistant or a direct request, even though the buttons and menus were correctly hidden from them. The permission settings you configure now apply everywhere the data can be reached.

What this means day to day:

  • Finding and merging duplicate clients — including asking the assistant to find duplicates — now requires the same permission as merging them. If you can act on a duplicate, you can still find one; if you couldn't merge before, you'll now see a message explaining what access you need instead of results.
  • Exporting a client's record requires the export permission.
  • Viewing client lists requires the view permission.

Owners and admins are unaffected. The one real change is for roles that can't merge clients — managers and members by default: asking the assistant to find duplicates now returns the same answer the Find duplicates menu already gave them, which is that they don't have access. Anyone blocked now sees a clear explanation of what to ask an administrator for, rather than a generic error.

Link donations to the program they support

Donations can now be attributed to a specific service or program.

  • In-kind receiving: when you record received goods and create the donation on the spot, you can pick which program the gift supports. The link is saved on the donation record.
  • Recording a donation: the Record Donation form now has an optional service picker alongside Campaign and Fund, so cash gifts can carry the same attribution.
  • Where you'll see it: the Donations list and each donor's giving history now show the linked program.

The link is optional, and it never changes donation amounts or fair-market values — it's attribution only.

Duplicate scan now catches name changes

When someone comes back to you under a new surname — after a marriage, say — their intake form creates a second record rather than quietly overwriting the first. That is deliberate: rewriting one person's record with another's details is the kind of mistake that is very hard to undo.

The catch was that the duplicate scan couldn't see those pairs, because it never compared Social Security numbers. Two records for the same person with nothing in common but an SSN simply didn't show up.

They do now. If your organization collects SSNs, the scan on the clients page flags a pair whose numbers match exactly, tagged SSN, ready to merge.

The number itself is never involved in any of this: the comparison happens on the server against a one-way fingerprint, and no SSN — or anything derived from one — is ever sent to your browser or shown on screen. The badge tells you the two records agree, and nothing more.

One deliberate exception: Select all ≥ 90% skips pairs whose names don't match, so a matching SSN under two different names isn't swept up by that shortcut. Those pairs are listed like any other and you can tick them yourself, and if a bulk merge does include one, the confirmation step now tells you how many of the pairs you're about to merge carry two different names.

Exact matches now take priority in client matching

When HumanixOS looks for existing clients — during imports, form submission review, or duplicate scans — records that match exactly now always rank above near matches.

  • A client whose name, date of birth, and phone all match your file exactly is linked with full confidence, even when a similarly-named client exists.
  • A close-but-not-exact name (for example "Jon" vs "John") no longer scores the same as a perfect match. During imports, those rows are held for your review instead of being linked automatically.
  • Some exact combinations — like matching date of birth and phone together — were previously scored too low and are now weighted correctly, so real duplicates surface more reliably.

Filters now follow through to your reports

Two fixes to how filtering by Organization, Service or Household behaves.

Reports respect those filters. Filtering your client list by a service and then choosing "Create Report" used to produce a report covering every client in your organization — the filter was quietly dropped on the way, and nothing on screen told you. The report now covers exactly the clients you were looking at.

Large services filter correctly. If a service had more than 1,000 people enrolled, filtering by it only ever matched the first 1,000 — again silently, with a total that agreed with the wrong number. All matching clients are now found, however many there are. The same fix applies to filtering by organization and by household.

If you have saved views or reports built on these filters, they will start returning the complete set. A report generated before today keeps the numbers it was generated with; re-run it to pick up the corrected results.

A clearer funding partner portal

The funding partner portal got a round of improvements focused on making a portfolio easier to read at a glance.

See what was actually distributed. Alongside the goods value totals, funders can now see a per-item breakdown of goods distributed — each item with its quantity and retail value — both across the whole portfolio and on each organization's page. Items without a recorded price still appear with their quantities.

Impact totals expand by organization. Each impact metric on the dashboard (service records, clients served, volunteer hours, and the rest) can now be expanded to show how much each organization contributed to the total.

Activity you can rank — and trust. "Last active" now reads as an exact day count — "Active 12 days ago" instead of "about 2 months ago" — capped at 90+ days. The organizations list also opens sorted by recent activity, in a single column so the order reads straight down, and the day shown always matches when the work happened, whatever timezone you view it from. Activity itself got more honest too: an organization now counts as active when its people sign in or update existing records, not only when they create new ones, and entering a backdated donation or volunteer hours counts as activity on the day it was entered.

Polish. The portal shows loading placeholders instead of appearing empty while data arrives, organization pages put the organization's name in the page header, and the numbers on the detail cards line up properly.

Import notes now stick around

When an import brings in records that couldn't be linked to something you already have — for example, donors whose names didn't match an existing client — HumanixOS explains what happened. Until now that explanation only appeared as a brief pop-up message, and once it disappeared there was no way to get it back.

Those notes are now saved with the import itself. On the Imports page, any import that has notes shows a Notes button that opens the full list, so you can review what needs follow-up whenever you're ready. If you download the import's error file, the notes are included there too.

Mention teammates in client notes

You can now tag a teammate in a note on a client's page. Type @ in the note box and pick a teammate from the list — their name appears highlighted in the saved note, and they get an in-app notification that takes them straight to that client.

A few details we took care of:

  • Mentions always show the teammate's current name, even if they change it later.
  • Only members of your organization can be mentioned.
  • Editing a note only notifies people you newly mention — nobody gets pinged twice.
  • You can turn these notifications off under Settings → Notifications.

Print public forms to fill out on paper

Public forms can now be printed for paper intake. A new Print blank form button on every public form produces a clean, clipboard-ready version: ruled lines sized for handwriting, every dropdown and multi-select choice printed with a checkbox or circle next to it, and clear space for dates and longer answers.

The printout carries your organization's name and the form's title, skips anything that only makes sense on a screen (like file uploads, which become a short instruction instead), and prints in whichever language the visitor has selected — so a family reading the form in Spanish gets a Spanish printout.

This makes one link the single source of truth for a form, whether it's filled out online, at a community event with no wifi, in a waiting room, or during a home visit. You can also use the button with your browser's "Save as PDF" option to keep blank copies on hand.

A better recipient picker for distributions

Recording a distribution now opens a proper search window for choosing who received it — whether that's a person, a household, or a partner organization.

  • Recently served first. The people and households you serve most often appear before you type anything — regular weekly pickups are now two clicks.
  • Search that matches how you identify people. Typing a name, client ID, phone number, or email finds the right person — and no longer surfaces unrelated matches from addresses or other fields.
  • Tell namesakes apart. Every result shows the person's date of birth and client ID under their name, so twenty "Maria Garcia"s are no longer a guessing game.
  • Households by member name. Search for a household by the household's name or by anyone in it — "Garcia" finds Maria Garcia's household.
  • Short surnames work now. Clients named "Li", "Ng", or "Wu" can finally be found by typing their surname.
  • Big lists stay reliable. Organizations with many households or partner agencies no longer risk records silently missing from the end of a long dropdown.

Clearer Stripe donation settings, with a pause option

Setting up Stripe donations is clearer, and the settings page now does a few things it should have been doing all along.

No more "setup incomplete" when nothing is missing. After you finish setting up Stripe, Stripe spends a few minutes checking your details. The page used to say Stripe still needed information from you, which made a finished setup look like a failed one. It now says your details are being checked, tells you there's nothing to do, and updates on its own the moment you're ready to accept donations.

You can pause donations instead of disconnecting. If you need to stop taking donations for a while, you can now pause them and turn them back on whenever you're ready. Your Stripe account stays exactly as it is.

Disconnecting now asks first. Disconnecting closes your Stripe account for good, so it now asks you to confirm and explains what happens: monthly donations stop, your donation records stay in HumanixOS, and setting Stripe up again later means starting over with a new account. If your account still holds money that hasn't reached your bank, we'll tell you before you decide. And if Stripe can't close your account, we say so plainly instead of reporting success.

See where your money is. The settings page now shows what's available, what's on the way to your bank, and your recent payouts, with a link straight into your own Stripe account for everything else.

Clearer upgrade prompts for SMS & AI on the free trial

The free trial has always been described as including everything except SMS & AI. Those limits are now applied consistently: if your organization is on the free trial and you try to send a text message, set up SMS, or use one of the AI-powered tools, you'll see a clear message with a one-click path to upgrade — instead of a confusing error or, in some cases, no restriction at all.

Everything else in your trial works exactly as before, and nothing changes for paid or sponsored organizations.

Consistent ethnicity breakdowns across reports and dashboards

Demographic breakdowns no longer split one ethnicity category into two rows when older imported records spelled it differently (for example "Black/African American" next to "Black or African American"). Reports, dashboards, funder views, and AI demographic answers now all merge these into the same category, and new imports automatically resolve these spelling variants as they come in.

Clearer guidance when there's nothing to report on

Create Report now tells you up front when the current view has nothing in it: the action is disabled with an explanation when no records match your filters, instead of letting you walk through the whole flow and end up with an empty report — or hitting a generic error message. Saved reports that genuinely contain zero records (a legitimate finding, like "no intakes this quarter") now carry a "No matching records" badge in your reports list so they're recognizable at a glance.

Ethnicity is now check-all-that-apply

The built-in Ethnicity field now lets you select every category that applies, matching how people actually self-identify. The client form, client profile, spreadsheet-style grid, and public intake forms all offer checkboxes instead of a single dropdown, and records imported with multiple ethnicities can now be edited without losing values.

Reports, dashboards, and funder views count clients in each of their selected categories, and filters find a client whenever any of their selected ethnicities match.

More room for service descriptions, with a live character count

Service descriptions can now hold up to 5,000 characters — more than double the previous limit — and every place you edit one now shows a live character count as you approach the limit, so the box never just "stops typing" without telling you why.

Group your services with tags

Services no longer have to live as one flat list. You can now create tags — like "Food", "Housing", or "Emergency" — and apply them to your services.

  • Tag any service with one or more tags, each with an optional color.
  • Filter the services list by tag to see just the programs you care about, such as everything in your food program.
  • Rename a tag once and every service using it updates instantly — no more "Food" vs "food" drift.

Tags are shared across your whole organization, so your team builds one common vocabulary for program areas. You'll find the new tag filter on the Services page, and a "Tags…" option in each service's menu.

Take donations with Stripe

Your donation pages can now take card and bank payments through Stripe, alongside PayPal. Connect a Stripe account from Settings then Integrations, finish the short verification with Stripe, and the Stripe button appears on your donation pages straight away. If you already use PayPal you can keep it. Donors will see both options and pick whichever they prefer.

The money goes directly into your organization's own Stripe account. HumanixOS is never in the middle of it and takes no cut of what your donors give.

Bank payments are offered alongside cards where Stripe has approved your account for them. On a large gift the difference matters: a bank payment costs a few dollars where a card would cost over a hundred.

Donors can also set up monthly giving where your donation page allows it. Each month's payment is recorded against the same recurring gift, so a monthly donor shows up once in your donor list with their giving adding up over time, rather than as a new record every month.

Every gift is recorded when the payment actually succeeds, not when the donor clicks the button, and each donor is emailed a receipt in your organization's name with your tax ID on it. Stripe's processing fee is recorded on the donation too, so your books show what you actually received. You can add your tax ID in Settings then Organization.

Edit and delete donors

You can now correct a donor's details from the donor's page. A misspelled name, a changed email address, a wrong donor type or status — open the donor, choose Edit, and save. Previously there was no way to change a donor record once it had been created.

Donors created by mistake can be deleted from the same place.

Donors who have given are protected. A donor's donations, pledges and recurring gifts are part of their record, so deleting a donor would take that giving history with them. Once a donor has any giving on file, the delete is refused and tells you what is attached. To retire a donor you no longer want in your active list, edit them and set their status to Lapsed or Deceased instead — their history stays intact.

Editing and deleting each follow your organization's permissions, so team members only see the actions they are allowed to use.

Activity history now names the person who made each change

The activity history was crediting your teammates' work to "System". Only your own actions showed a name. Now every action shows the person who performed it, so you can see at a glance who edited a client, changed a setting, or removed a record.

"System" still appears where it belongs — public form submissions, check-ins, text messages, and scheduled jobs. And on the rare occasion a person's account can no longer be found, that now reads "Unknown user" instead of quietly looking like an automated action.

Event check-in forms now show your branding

Public event check-in pages now render your logo, colors, and font — exactly as the form builder's Style preview shows them. Previously, check-in forms ignored branding entirely, so attendees saw a plain page even when the form was fully styled.

A full activity history on every client page

The client page's SMS history card is now a full Activity history — one feed of everything that's happened with that person, newest first.

Text messages, emails, notes, service entries, form submissions, donations, event registrations and record edits all appear in one place, each with when it happened. Filter chips narrow the feed to one kind of activity — choosing SMS gives you exactly the view the old card did — and older activity loads as you ask for it.

You only see the kinds of activity you have access to: if donations aren't part of your role, they're not in your feed. The Send SMS button and the consent panel are unchanged.

The client activity history now shows who did it

The activity history on a client page told you what happened and when, but never who. Now each entry names the person behind it, so "address changed on 12 August" reads "address changed on 12 August by Maria".

Notes, service entries, donations, event registrations, record edits and the text messages your team sends all carry the name of the person who did them. Things the client did themselves, like submitting a public form or texting you back, are labelled that way instead of being left blank. On the rare occasion an account can no longer be found, the entry says so rather than pretending nobody was involved.

Create a client straight from a donor's page

When a donor starts receiving services, you no longer have to retype everything. The donor page's Linked Client card now has a "Create client from donor" button that opens the add-client form prefilled with the donor's name, email, phone, and address — all editable before saving — and links the new client to the donor automatically. If someone similar is already a client, we show the likely matches first so you can link them instead of creating a duplicate.

Arrange the client page your way

The cards on a client's page can now be arranged to fit how you work.

A Customize button on the client page opens a panel listing the page's cards — services, events, items received, giving history, notes, activity history, SMS consent. Hide the ones you don't use and drag the rest into the order you want; keyboard reordering works too. Reset to default puts everything back.

Your layout is yours alone — it follows you across sessions, and doesn't change what anyone else sees. Cards your role doesn't have access to aren't in the panel at all, and when we add new cards to the page they'll appear at the end of your layout rather than being hidden by it.

Tag inventory distributions with a service

When distributing items, you can now optionally tag which service program the distribution belongs to — this bag of groceries is part of "Food Pantry". The tag shows on the distributions list, the distribution detail, and the client's items-received history, and it lays the groundwork for reporting goods distributed under each program. Existing distributions are unaffected, and the tag is never required.

Section headers in the form builder

You can now add section headers to your public forms. A section header is a title with an optional description that appears between questions, so long intake forms can be broken into clear, readable sections like "Contact information" or "Household details".

To add one, open the form builder and choose Section Header from the Add Question panel. Drag it anywhere in your form, give it a title and an optional description, and it will appear on the public form exactly where you placed it. Section headers are display-only: they never ask the person filling out the form for anything, and they're translated along with the rest of your form.

Google Forms import: available everywhere, and now maps onto your existing fields

Importing a Google Form just got a lot more useful:

  • Import from the form builder. The "Import Google Form" button now also appears in the builder whenever you start a new, empty form — including when you create a service form directly from a service page. Previously the import was only offered on the form-type selection screen.
  • Match imported questions to your existing fields. After an import, a new matching step suggests which of your existing fields each imported question corresponds to — standard client fields like First Name or Email, your custom fields, and (on service forms) the service's own fields. Accept a match, pick a different field, or keep the question as-is. Matched questions fill in the real field on the client or service record when someone submits the form, instead of arriving as separate answers you'd have to copy over.

Available in English, French, and Spanish.

Link clients to households right from the clients page

Household linking now lives where you work with clients. Select one or more clients in the grid and use the new "Add to household" button to place them in an existing household or create a new one on the spot — with optional relationships like Spouse or Child. A new Household column shows each client's household at a glance and filters like the Organizations and Services columns, and the client page gains a Household card listing the other members, each one a click away.

Import rollback now available for 7 days

You now have a full week to undo an import, up from 24 hours — plenty of time to catch a Friday mistake on Monday. And when a rollback isn't available, the button now explains why instead of disappearing: the window has passed, or the import predates rollback tracking.

Receive and Distribute straight from an item's page

Looking at an item and want to act on it? The item detail page now has Receive and Distribute buttons alongside Adjust stock. Both open their form with that item already filled in on the first line — no more navigating away and re-finding the item you were just looking at.

Record a donation without leaving the donor's page

Logging a gift for someone whose page you were already looking at meant going to the donations list, opening the form there, and finding the same person all over again. There is now a Record Donation button on the donor's own page, and it opens with that donor already filled in.

The gift shows up straight away in their giving history, and their lifetime giving, gift count and last gift date update at the same time, so there is nothing to refresh.

The donor page also picks up the same bar the rest of the donor pages use, so moving between the donor list, donations, campaigns and funds no longer changes the shape of the page underneath you.

Barcode scanning serial numbers now works on receive

Entering per-unit serial numbers on the inventory receive form no longer drops focus after each character. Barcode scans now land in full, pressing Enter after a scan jumps straight to the next serial box, and typing serials by hand no longer requires clicking back into the field.

Feedback forms can now be tied to a service

You can now run per-program surveys. When creating a feedback form, optionally pick the service it's about — or start one directly from the service page's actions menu, pre-linked to that service. Responses stay anonymous, and the forms list, the responses view, and the service's details panel all show which service a feedback form belongs to, with response counts at a glance.

More accurate donor, grant, and form totals

We fixed an issue where the summary totals on the Donors, Grants, and Forms dashboards could under-count once an organization had a large amount of history. Donation totals, grant pipeline value, and form submission counts are now calculated in full, so the headline numbers stay exact no matter how much data you have.

Auto-add forms now actually add

If you set a public form to add submissions automatically, it does — including for people you've served before.

Until now, a form set to Add automatically would still hold a lot of submissions for review. The reason was invisible: someone who already exists in your records, filling in their name and email, looked "similar enough to need a human" but not "certain enough to link". Since returning clients are the normal case on a service form, auto-add ended up reviewing almost everything, and there was nothing on screen explaining why.

Now a submission that matches an existing client — same person's name, plus a matching email, phone or date of birth — is linked to that client, and everything else creates a new one. A shared household email or phone number on its own is never enough to treat two people as the same person. Nothing waits for review. If a duplicate does slip through, the duplicate-detection tools will find it and you can merge the two records.

If you'd rather keep an eye on the close calls, there's a new middle option: Add automatically, but review likely matches. New people are added straight away, and only submissions that look like someone you already have wait for you to confirm.

Every submission that is waiting now tells you why. Whether it matched an existing client (and how closely), whether your duplicate-detection setting asked for it, whether the form updates an existing entry and so always needs review, or whether something went wrong saving it.

That last one used to be invisible: if adding the client failed, the submission just sat there looking like nobody had got to it yet.

Forms that update or complete an existing entry still always require review — a form link on its own can't change a record you already have — and the form builder now says so instead of offering a setting that could never apply.

Billing emails, finally

Until now, paying for HumanixOS was a silent experience. You subscribed and heard nothing. You were charged every month and heard nothing. If your card was declined, the first sign was usually something in the product not working.

That changes today. There are now four emails, all sent to the person listed as your organization's owner.

When you subscribe, you get a confirmation with your plan, what you're paying, how often, and when the next payment is due.

Every time we charge you, you get a receipt with a link to the invoice itself, so you can download it for your books or hand it to your board.

If a payment is declined, we tell you straight away, while nothing has changed yet and your account is still fully active. Most declines are just an expired or replaced card, and updating it takes a minute. If we still can't collect after several tries, we send one more note before your access is affected. Two emails per problem, not one per attempt.

When you start a free trial, you now get an email confirming it, how long you have, and when it ends. Previously the first billing email a trial user ever saw was the one saying the trial was ending, which read like we'd lost the first message.

All four arrive in English, French or Spanish, matching your language setting, with amounts and dates formatted the way you'd expect to read them.

Choice questions can offer "Other"

Dropdown and checkbox questions on your forms can now let people write in their own answer.

Turn on Allow an "Other" answer when editing the question. On the form, choosing Other reveals a box where the respondent types their answer, and what they type is recorded as their answer — so it reads normally in the submission, not as "Other" with a footnote. On checkbox questions, Other can be ticked alongside the regular choices.

If someone picks Other and leaves the box empty, the form asks them to fill it in before submitting.

Imported Google Forms keep their "Other" too. Until now, a Google Form with "Other: ___" imported as a plain Other choice with nowhere to type — people could pick it, and it recorded nothing. Now the fill-in comes across with the rest of the form.

Forms you built before this are unchanged, including any that already have an option simply labelled "Other" — that keeps working as an ordinary choice.

Imported Google Forms can be service forms

Importing a Google Form now asks what kind of form it should be, instead of quietly deciding for you.

Before, pressing Import Google Form before choosing a form type produced a feedback form. The questions came across correctly, but a form's type — and the service it belongs to — is fixed when the form is created, so there was no way to turn it into a service form afterwards. You had to delete it and start again, and nothing on screen suggested that picking the type first would have made the difference.

Now the import brings your questions in and leaves the type picker up, telling you how many questions arrived. Choose Client, Service, Event or Feedback as usual — and for a service form, the service — and continue into the builder with everything imported.

If you'd already chosen a type before importing, nothing changes: you go straight to the builder as before.

Imported questions on a service form now record their answers against the service, the same as questions you add by hand. Previously they were collected but never written to the service record.

Sign people out automatically after inactivity

You can now have HumanixOS sign people out when they've stopped using it.

If your organization works on a shared computer — a front desk, a laptop that moves between rooms — a session left open is a real risk: client records and donor details sit behind it. Some funders ask about this directly in their security questionnaires.

Under Settings → Security, choose how long to wait: 15 minutes, 30 minutes, an hour, four hours, or never. A minute before the time is up, a message appears with a Stay signed in button, so nobody loses work mid-sentence.

Working in any open tab counts, so having a client record open in one tab and a report in another won't sign you out of either.

This is off by default and nothing changes until you turn it on. Only people who can change your organization's settings can set it, and it applies to everyone in the organization.

One report across several services

You can now build a single report covering two or more of your services — "Food Pantry plus Coat Drive, third quarter" as one document, instead of two reports stitched together by hand.

When creating a report from a service page, use Include other services to tick the ones that belong in it. The report shows combined totals — entries, active count, and unique people served, counted properly: someone helped by two programs counts once — plus a per-service breakdown, so it answers both "how much did we do" and "which program did it".

Entries are grouped by service, each with its own columns, since different services record different things. Exports carry a Service column on every row and the combined and per-service numbers in the summary.

The date range and the personal-information setting apply across everything in the report, and the option only offers services you have access to.

Form questions can become service columns

A question you add to a service form can now feed the service itself, instead of only living on the submission.

When you're building a form for a service, questions have a Save answers to the service option. Turn it on and the question becomes a column on that service, so approved answers land in the service grid next to everything else you record — the same as if you'd added the field to the service first and then placed it on the form.

The column is created when you save the form, using the question's own wording as its heading, and choice questions bring their options with them.

Questions imported from a Google Form work the same way, so a form you built elsewhere can feed your service data without rebuilding it by hand.

A few question types have no matching column type and stay on the form only — the option is shown but switched off for those, so you can see why rather than wondering where the setting went.

See what your volunteer hours are worth

Your volunteers' hours have been recording automatically since shifts and check-in arrived. Now you can get them back out.

There's a new Reports tab in the Volunteers section. Pick any date range and you'll see total hours for that period, how many volunteers contributed, and what those hours are worth in dollars. Below that, a breakdown by how the hours were recorded (scheduled, checked in, self-reported, or added by hand) and a list of every volunteer with their own total.

Hours still awaiting your approval are shown separately, so they never quietly inflate the number you report to a funder. You can also switch the report to include them, or to look at any other status, whenever you want the fuller picture.

Export for grant reports. One button gives you a spreadsheet file ready to attach to a grant application or a board packet. It opens with a summary of exactly what it covers: the dates, which hours were counted, and the hourly rate used. Anyone reading it can tell where the number came from.

The dollar value. By default we use the national value of volunteer time published by Independent Sector, currently $36.14 an hour. If a funder requires you to use a different rate, you can set your own under Volunteers then Settings, and every dollar figure updates to match. Leave it blank to stay on the national rate, which we update each year.

The report reads from the same records your funder portal does, so the numbers in both will always agree.

Donor imports can link donors to the clients they already are

If the people you serve are also the people who give, your donor import can now connect the two.

Donor records have always been able to point at a client record — there's a client picker in the Add and Edit Donor dialogs — but the import had no column for it. So an organization that imported its constituent list and then its donor list ended up with the same people in the system twice, unconnected, and the only way to join them up was one at a time by hand.

The donor import now has a Client (Name, Email or ID) column. Map it to whatever your file uses — a client's name, their email address, or the client ID you assigned them — and each donor is linked to the matching client as it imports.

It links to clients you already have and never creates new ones. If a value doesn't match anybody, or matches two people with the same name, the donor still imports — just without a link. The import then tells you how many donors came in unlinked and why, with an example of each, so you know whether it's a handful to fix by hand or a column worth remapping. We'd rather leave a link blank than attach someone's giving history to the wrong person's record.

You'll need permission to view clients to use the column, since matching means reading your client list.

Email campaigns now send reliably

Sending an email campaign to a larger list now works the way it always should have.

Previously, campaigns going to ten or more recipients were accepted and shown as queued, but were never actually delivered. Smaller campaigns sent normally, which is why the problem was easy to miss. Anything queued is now delivered automatically, and campaigns move from "sending" to "completed" on their own.

We also fixed the email builder. Designs you create there are now saved with the campaign and sent exactly as you built them. Before, the builder looked right on screen but the design was not stored, so what went out did not match what you designed. Test sends now use the same design as the real send, so what you check is what your recipients get.

A few smaller improvements came with it:

  • You can save a campaign while you are still working on it, even if you have not yet chosen an image or filled in a button link.
  • Duplicating a campaign or template now copies its design too.
  • If a send is interrupted, it is recorded as failed and can be retried, rather than leaving the campaign stuck part way through.
  • A large mailing from one organization no longer holds up everyone else's email.

Forms only offer languages they can actually show

If a public form hadn't been translated, its language menu still listed every language — and a visitor who picked one got an English form with no explanation. Confusingly, the buttons and labels around the form did switch language, so it looked like translation was working and the form itself was simply ignoring the choice.

A form now offers a language only when it genuinely has that translation. Nothing else changes for forms that are already translated.

If one of your forms is missing a language it should have — because it was built before translation existed, imported from elsewhere, or created while our translation service was briefly unavailable — saving and republishing it will translate it. Get in touch if a form still looks wrong afterwards.

Donation imports tell you what they need up front

Importing gift history links each gift to a donor who already exists in HumanixOS — it doesn't create donors from a gifts file, because a gifts export rarely holds enough to identify someone safely.

That's always been true, but you only found out after the import had failed. Now the import tells you when you choose what your file contains, and it checks that you've mapped a donor column and a gift date before you import rather than after.

We've also corrected several help articles that described things the app doesn't do — an Appeals page that doesn't exist, duplicate detection during imports, and a list of import steps that didn't match the actual wizard.

Imports tell you what happened to every row

Several changes to how imports report themselves.

Gift rows with no amount no longer break the import. Donor exports often carry rows with a blank amount — pledge placeholders, subtotal lines, half-finished entries. Those used to stop the import before it started, with "Amount is required", which made an otherwise clean file look broken.

Now a blank amount is a decision rather than an error. If the row names a donor we can match, it's brought in as a $0 gift. If it doesn't — a subtotal line reading "TOTALS", say — the row is skipped, and that count shows in the Skipped column on your import history. Either way the rest of the file imports normally, and the review step tells you up front how many rows this applies to.

When rows don't import, you can see why. Previously you got a count — "37 rows didn't import" — and the wizard closed, taking the reasons and your column mapping with it. Now the rows that failed are listed with the reason for each, and the wizard stays open so you can read them. If some rows did import, the reminder to undo within 24 hours stays on screen with the list.

Those reasons are also kept with the import, so you can come back to them later: your import history now offers a Download errors file listing each failed row and why it didn't import. It covers client, service-record and donation imports alike, and if an import had a very large number of failures the file says how many of them it's showing.

Re-importing the same gifts no longer duplicates them. If your export includes its own gift or transaction ID, map it to the new Gift ID column. It's your previous system's ID, kept as you sent it — nothing is generated for you, and it's stored separately from the IDs our payment integrations use. Gifts you've already imported under that ID are skipped instead of being brought in a second time — so if an import partly fails, you can fix the file and run it again without doubling the rows that worked.

See exactly which records an import created

Your import history has always told you how many records came in. It couldn't tell you which ones — so after importing 412 gifts, the only answer to "where did they go?" was "somewhere in your donations list".

Every finished import now has a View rows button. It opens a list of everything that import added, grouped by type — donors, donations, grants, clients, and so on — with a link straight to each record where there's a page to link to. If an import brought in more than fifty of something, the list shows the first fifty and tells you how many there are in total.

You'll only see the types you have access to. If you can't open the donors area, an import's donors won't be listed for you either.

Inbound webhooks now work

Receiving data from another system through a webhook works now. Creating one used to fail every time, and requests sent to the address we gave you never reached us. Both are fixed, so an external system can post data to HumanixOS and have it create records.

Setting one up is also much easier to work through. The setup form is organised into clear sections, it no longer scrolls awkwardly behind the buttons at the bottom, and every option explains what it does right where you choose it.

A few other improvements:

  • You can now edit a webhook after creating it. Previously the only way to correct a mistake was to delete it and start again, which changed the address and lost its history.
  • Generate a strong random key or signing secret with one click. It is copied to your clipboard so you can paste it into the system that will be sending you data.
  • If you receive data without a credential, you can list the IP addresses allowed to send it. Addresses are checked as you enter them, so a typo is caught immediately instead of quietly turning away every request.

If you use SMS, inbound text messages and delivery receipts were affected by the same underlying problem and are now getting through as well.

See a client's giving history on their profile

If a client is also one of your donors, their giving now appears on their client profile: total given, when they last gave, and their most recent gifts, with a link straight to the donor record.

Until now that connection only worked one way — from a donor you could open the person's client record, but from the client you had no idea they gave.

The card only appears for clients who are linked to a donor record, so profiles of everyone else look exactly as they do today. It follows your donor permissions, so team members who can't see donor information don't see it here either. In-kind gifts show their fair-market value, matching the donor page.

Two import fixes

Donation imports need a gift date

If you imported gift history without mapping the date column, every gift was recorded as received today — quietly, with no warning. Years of giving history could end up dated the day you imported it, and you would usually only notice much later, in a report that looked wrong.

Donation imports now ask you to map the date column before you can import, and if a single row's date is blank, that row is reported as a problem while the rest of the file still imports.

Undo works for client imports

The Undo button on your import history wasn't appearing at all. It now shows on any import you can still undo — including client imports, which were additionally excluded for a reason that stopped being true a while ago. The confirmation also explains that undoing an import removes supporting records it created — a fund or campaign, say — as long as nothing else has started using them.

Donation imports now connect to your donors

Importing a gifts spreadsheet — like the export from Little Green Light or similar donor software — now actually works.

Gifts find their donors

Map your file's donor column (a name or an email) and each gift links to the matching donor record. Names match flexibly: "John Bowen", "Bowen, John", and john@example.com all find the same person, and organization donors match by their organization name. Import your donors first, then your gifts.

If a gift's donor can't be found — or two donors share the same name — that row is skipped with a clear message telling you exactly which one and why, instead of the whole import failing cryptically.

Campaigns, funds, and appeals come along

Columns naming a campaign, fund, or appeal now link each donation to the right one — and if it doesn't exist yet, it's created for you. Undoing the import cleans those up too, unless you've already started using them.

Faster column mapping when importing

Three small quality-of-life improvements to the import mapping screen, all from the same feedback: wide spreadsheets were tedious to map.

Skip a column in one click

Every column row now has a Skip button — no more opening the field dropdown and scrolling to the bottom for each column you don't want. Skipped columns dim so you can see what's off at a glance, and Undo restores the automatic suggestion. There's also a "Skip all unmapped columns" button for when the automatic matching has done its job and everything left over is junk.

Honest value counts on every column

Each column now shows how many rows actually have values — "142 of 500 rows have values" — on every column, not just sparse ones. And a column is only called "(empty)" when the entire file has no values in it, not just the first rows we peeked at.

Rename a field before it's created

When the importer creates a new field from a column, you can now edit the field's name in the creation dialog instead of being stuck with the spreadsheet's heading. "Svc Nm 2024" can become "Service Name" before it's saved — which matters, because a field's name and type are permanent once it exists.

Form builder improvements

Several updates to the form builder and public forms.

Translated forms are more complete

Dropdown and multi-select choices on service fields stayed in English even when the rest of the form was translated. They now translate along with everything else. Existing translated forms pick up the missing text the next time you save them.

Placeholder hints are also translated now — and worth a look before your next save: on most field types, placeholder text you set used to be ignored on the live form, so anything you typed there was invisible to visitors. It now appears in the field as intended, in whichever language the visitor is reading.

Choose your logo size

The logo on a public form used to render at one fixed size no matter how large the image you uploaded. The style panel now offers Small, Medium, and Large, previewed live as you pick. Forms you've already built keep the size they have today.

Preview your form at phone size

Most people open a public form on their phone — from a QR code or a texted link. The Preview tab now has a Desktop / Phone toggle so you can see the form at phone width before you publish it.

Easier drag and drop

Moving fields around meant aiming at a small grip icon. Now you can grab a field anywhere on its card, and the drop zones between rows grow while you're dragging, so dropping a field onto its own row is much easier to hit. Clicking a field still just selects it.

Small fixes across forms and custom fields

A batch of small quality-of-life fixes:

Your last dropdown choice no longer disappears

When adding choices to a dropdown or multi-select field, typing a choice and clicking Save without pressing Add used to silently discard it. Every field editor now keeps that typed choice when you save.

Yes/No fields edit as a checkbox

Editing a Yes/No custom field on a client showed a dropdown with "Not set / Yes / No" — inconsistent with everywhere else. It's now a simple checkbox, matching the rest of the app.

Form submissions display multi-select answers properly

Some submission views showed multi-select answers as raw code like ["Volunteer","Donor"]. All submission views now show them as a clean comma-separated list, with the same formatting for files, time slots, and checkboxes everywhere.

Google Form imports get the right name

Importing a Google Form from its public link sometimes named the imported form after its description instead of its title. Titles and descriptions now land in the right places, and if a form can't be reached, the error explains that a published (public) form link is required.

Confirm buttons stay visible when linking clients

On the New Service Entry screen, the Cancel and Link buttons sat at the bottom of a potentially very long client list. They now stay at the top of the page, always visible while you scroll and select.

Imports now connect people to organizations and services

Three more import improvements, all about references in your spreadsheets pointing at real records.

Employer and organization columns actually link

If your sheet has an organization, employer, company, or agency column, you can now map it when importing people. The importer finds the matching organization record — or creates it if it's new — and links each person to it. Fifty rows naming the same organization create one record with fifty links, not fifty copies.

Service names that don't exist yet get created

A row referencing a service you haven't set up no longer fails. Before the import runs, the review screen lists any service names that don't exist yet — so you can catch a typo — and then creates each one as a blank service with just its name, ready to flesh out later.

The importer knows your words

If your organization renamed Services to "Programs" (or People to "Participants"), your own spreadsheets say so — and the importer now recognizes your words when detecting what a file contains and matching its columns. The standard words keep working too, so files from other systems import the same as always.

And if you undo an import, anything it created — organizations and services included — is cleaned up, unless you've already started using it.

Call things what your organization calls them

The Clients area is now called People.

The old name kept suggesting the list was only the people you serve, when it is really everyone your organization works with — participants, members, families, partner contacts, the lot. "People" says that without anyone having to explain it.

And you can pick your own word

If your organization says participants, members, residents, guests or something else entirely, you can now set that yourself — and the same goes for Services, which plenty of organizations call programs, classes or offerings.

Go to Settings → Branding and fill in what you call each one, singular and plural. Your wording then shows up everywhere: the sidebar, page headings, buttons, empty states, confirmation messages, the permissions screen and your dashboard tiles.

Leave a box empty to go back to the standard wording. You can change your mind as often as you like.

Nothing else moves

This changes wording only. Your links still work, your saved views and filters still work, your import mappings still match, your permissions are untouched, and your exports keep the same column names. Renaming is safe to try.

One note: your own word is used exactly as you type it and is never translated, because it is your organization's word. The standard wording still appears in French and Spanish for anyone using the app in those languages.

Imports understand your columns much better

Importing spreadsheets just got a lot less fiddly, especially for columns that hold choices.

Multi-choice columns finally import as multi-choice

A cell like Ally;Community Member;Volunteer used to land as one long text value. Now the importer recognizes lists — separated by semicolons, commas, or pipes — creates a Multi Select field with the right choices, and each person gets their actual selections. It works out the separator on its own, and choices that contain a comma (like "Washington, DC") stay intact.

Check the field type before it's created

A field's type can't be changed once it exists, so the importer now shows you the type it's about to use — and lets you change it — before creating anything. No more discovering after 500 rows that your choices column became plain text.

Add missing choices on the spot

When a spreadsheet value doesn't match any of a field's existing choices, you can now add it as a new choice right from the import screen — alongside the existing options to map it, keep it as-is, or skip it. (Admins with edit access only.)

See what's in each column while you map

Every column now shows a few real values from your file right on its mapping row, and tells you when a column is empty or mostly empty — no more scrolling back up to the preview to remember what "Ref" contained.

One-column-per-choice spreadsheets

Some systems export one column per option — an "Asian" column, a "White" column, and so on, filled with 1s and 0s or Yes/blank. The importer now spots that pattern, offers to combine those columns into the matching field, and brings each person's marks in as proper selections. When people marked more than one choice, the importer makes sure they all land in a field that can hold them — it will ask you to use a multi-choice field rather than quietly dropping anyone's answers.

Funders can now see who you served in a given year

The city, ethnicity and gender cards on the funding partner dashboard used to group people by the date their record was created. For organizations that brought their history across from a spreadsheet, every record carries the upload date, so choosing an earlier year showed nothing at all.

Those cards now group people by the years they were actually served, taken from the service records themselves. A funder can ask a real question, such as how many people you served in Providence in 2026, and get a real answer.

Two things follow from that. Someone you served in more than one year is counted in each of those years, and counted only once when no year is selected. And someone on your client list who has never been in a service does not appear in these cards, because they describe people served rather than the size of your list. Your total client count is shown separately.

Funders can see whether your delivery is rising, and all of your services

When a funding partner opens one of your organizations, the page now shows how many clients you served and how many services you delivered in the last 30 days, alongside the change against the 30 days before that.

The service list on that page is no longer cut to the top three. Every service you run is listed, including ones nobody has been entered into yet, which show a count of zero.

One figure has also been corrected. "Last service entry" was showing the last time a service was set up, not the last time you recorded delivering one. It now shows the latter, which is what it always read like.

The funding partner dashboard now shows only what you delivered

The impact section of the funding partner dashboard has been trimmed to the work an organization does, rather than the money and goods coming in to support it.

Three figures have been removed. Funds Raised is gone, so a funding partner no longer sees your donation totals. Donated Goods Received is gone for the same reason, since it reported the value of in-kind gifts arriving rather than anything you gave out. And the raw unit count for goods distributed has been removed, because the value of those same goods is shown right beside it and is easier to compare.

None of these are hidden from view while still being sent. They are no longer calculated at all, so the figures never leave your database.

What remains describes delivery: services delivered, unique clients served, total clients, the value of goods distributed, events held, and approved volunteer hours.

Picking a year on the funding partner dashboard now shows your earlier work

Choosing a past year on the funding partner dashboard could leave most of the page blank, even when there was plenty of work to show. Organizations were being matched to a year by the date they joined, so an organization that signed up this year vanished from every earlier year, taking its imported history with it.

The result was a page that contradicted itself: the impact figures at the top reported services delivered in that year while the tables below showed nothing and the organization count read zero.

Organizations are no longer filtered by when they joined. Every year now shows the work recorded in it, whenever the records happened to be entered.

Goods you hand out are visible to funders even without prices

The funding partner dashboard values the goods you distribute using retail prices. If you had not set prices on your items, that figure could not be worked out, and nothing appeared at all. To a funder your organization looked identical to one that does not handle goods.

When some of your distributed goods have no price recorded, the dashboard now shows the number of items handed out instead, so the work is visible even though its value cannot be calculated. If everything is priced, you see the value on its own, as before.

Imported service history now counts in the year it happened

When a funding partner looked at your organization and picked a year, the dashboard was counting services by the day the record was entered rather than the day the service was provided.

For organizations entering work as they go, those are the same day and nothing looked wrong. But if you brought your history across from a spreadsheet, all of it was counted in the year you uploaded it. A funder choosing an earlier year saw nothing, even though you had been doing the work, and the upload year looked far larger than it was.

Service dates were always saved correctly. The dashboard now uses them, so every service counts in the year it was actually delivered.

Nothing about what counts has changed. Adding someone to a service is still one service delivered, and your overall totals are the same. Only the year each one falls into has moved. If a funder saved or exported a report before today, the yearly figures they have will not match what they see now. The new ones are the accurate picture of your work.

Top Services now shows how much of each service you delivered

The Top Services card on the funding partner dashboard was showing 1 next to every service, so it ranked nothing. It was counting the services themselves rather than how many times people were entered into them.

It now shows the real figures, so a funder can see where your work actually goes rather than a list of names all tied at one.

Choosing a year now works the way you would expect too. Services are grouped by when they were delivered, taken from the service records, rather than by when the service was first set up. A service you have set up but not yet delivered still counts toward your total number of services.

Billing settings now make sense during your free trial

If you were on a free trial, the Billing page had very little to say. Your plan showed as "No Plan", and both your payment method and billing history showed a red "No active subscription found" warning, even though your trial was running perfectly well.

Billing now shows what is actually true while you are on a trial:

  • Your plan reads "Premium Trial", along with how many days you have left and the date your trial ends.
  • There is a Choose a plan button, so you can move to a paid plan whenever you are ready. Previously there was no way to subscribe from this page at all.
  • The payment method and billing history sections explain that there is nothing to show yet instead of displaying a warning. You add a card when you choose a plan.

When you pick a plan with more than a couple of days of trial left, you now choose when billing starts. By default you keep every remaining day of your free trial and are not charged until it ends. If you would rather begin your billing period straight away, you can choose to start billing today.

Starting a free trial also asks you to confirm first, and shows you what is included, so it is no longer a single click with no review.

You're signed in right after resetting your password

Resetting your password used to drop you back at the login screen and ask you to type the password you had just created. Now you go straight to your dashboard.

We also fixed a confusing error. If you reset your password to the one you were already using, you would get a message saying your reset link had already been used and you needed to request a new one. That link was fine. Setting your password to what it already was now simply works, and signs you in like any other reset.

If your organization uses two-step verification, you will still be asked for your code before you reach the dashboard.

Remove images from your email library

The email image library only ever grew. Once you uploaded an image there was no way to take it back out, so a wrong file or an old logo stayed in the picker for good.

You can now delete an image from the library. Hover a thumbnail and use the control in its corner, then click once more to confirm — deleting is permanent, so it asks twice rather than acting on a single stray click.

Deleting needs the Email Builder → Delete permission, so you can decide who on your team is able to remove shared images. If an image is the one your organization's logo points at, it is kept — change the logo in Settings first.

Images already used in emails you have sent are not affected.

Light-colored logos now stay readable

If your organization's logo is white or very pale artwork, it could disappear into the background of the dashboard header — in dark mode it sat on a light backdrop meant for dark logos, and in light mode it blended into the page itself.

There is now a "My logo is light-colored" switch in Settings → Branding, right under your logo. Turn it on and the header adapts: in light mode your logo appears on a dark backdrop so it stands out, and in dark mode it sits directly on the dark header where it is naturally readable.

Nothing changes for logos with dark artwork — the switch is off unless you turn it on.

Your logo now fills the header properly

We fixed how your organization's logo displays in the dashboard header.

Previously, most logos appeared smaller than intended, floating in an oversized space with an awkward gap before the divider line. Now the header fits itself to your logo's actual shape, so the divider sits right next to your artwork — the way it should.

Logos also display a little larger than before, and dark mode no longer shrinks your logo.

If you uploaded your logo a while ago, re-uploading it in Settings → Branding will give you the smoothest result on page load.

Volunteer hours, recorded automatically

Volunteer hours now record themselves. When a shift ends, everyone who was confirmed for it is credited the scheduled hours automatically. There is nothing to set up and no check-in process required.

If you do want hours to reflect actual arrival and departure times, check-in is there when you need it:

  • Tap the roster. Open a shift on the Scheduling page and check volunteers in and out as they come and go.
  • Kiosk mode. Leave the kiosk screen open on a tablet at your site. Volunteers scan the personal QR code from their portal to check themselves in and out.

A few more things that come with this:

  • No-shows. Mark a volunteer as a no-show, even days after the shift, and their hours for it are removed. Changed your mind? Clear it and the hours come back.
  • Self-reported hours. Volunteers can log time given outside of shifts from their portal. It waits in your approval queue on the new Hours page until you approve it.
  • A Hours page. Everything in one place under Volunteers: pending approvals, every recorded entry with where it came from, and a way to add hours by hand.
  • The portal shows it. Volunteers see their credited hours, per organization, right in their portal.

Your logo now appears on new email headers

Adding a header block to an email is meant to bring your organization's logo in automatically, using the logo from Settings → Branding. It never did — the logo was set aside and then dropped, so every new header started blank and you had to paste the image URL in by hand.

New header blocks now arrive with your logo already in place. Headers you have already built are untouched, and you can still change or remove the logo on any block.

If you have not uploaded a logo yet, the header simply starts without one.

Public forms now use your organization's branding

When you style a form, the builder shows it using your organization's logo, colours and font as the starting point. The published form did not use them — a form you had not styled individually appeared to visitors without any of your branding, even though the preview showed it.

Published forms now fall back to your organization's branding exactly as the preview does. Anything you have set on an individual form still wins, and it applies field by field: giving one form its own logo keeps your organization's colours and font on it.

Nothing about your existing forms changed — they simply now look the way the builder said they would.

Your logo in the dashboard header

Your organization's logo can now appear at the top of every page in HumanixOS, in place of ours. If you have not added a logo, nothing changes and you will keep seeing the HumanixOS logo as before.

To add one, go to Settings, open the Branding tab, and upload your logo. It shows up in the header right away, for everyone on your team. You can replace it or remove it at any time, and removing it puts the HumanixOS logo back.

A few practical notes:

  • PNG, JPEG, and WebP files are accepted, up to 2 MB.
  • A wide logo with a transparent background looks best in the space available.
  • Your logo is placed on a light background when your team uses dark mode, so a dark logo stays readable either way. For the same reason, a logo made of white or very pale artwork will not show up well. Use a version with darker artwork if you have one.
  • Owners and administrators can change the logo. Everyone else sees it but cannot change it.

Your logo is also used as the starting point for the branding on new forms you create, so you do not have to upload it twice.

The Branding tab also holds your brand colors and font, which are used as defaults in the email builder and on new forms. Those have not changed.

Funding partners can see the full picture of your work

This affects organizations linked to a funding partner. If yours is not linked to one, nothing here changes for you.

Until now, the view your funding partner sees measured your work by two things: client records and service records. If your team spends its days distributing goods, running events, or coordinating volunteers, none of that reached them. An organization handing out 40,000 pounds of food a month could look quiet.

Now they can see how actively your organization uses HumanixOS across everything you do, when you were last active, and which parts of the platform your team actually works in. Alongside that, a short set of totals: services delivered, clients served, goods distributed and their estimated retail value, donated goods received, events held, volunteer hours, and funds raised.

Everything shared is a total for your organization. Individual records are never shared, and where a breakdown would cover too few people to stay anonymous, it is hidden rather than shown.

Two numbers were wrong, and are now fixed

"Services delivered" was counting your list of services, not your work. An organization with 8 services set up showed 8, whether it had served 6 people or 6,000. It now counts actual deliveries, and the number of services you offer is shown separately as its own figure.

"Clients served" was counting clients added to your records, not clients who received something. An organization that serves 400 long-standing clients every week but adds no new ones would have shown close to zero. Clients served and clients added are now two separate numbers, each labelled for what it is.

Expect these figures to move. Activity totals will generally go up, because work that was previously invisible is now counted.

Updated Terms of Service

We have updated our Terms to describe exactly what a funding partner can see. If your organization is linked to one, an administrator will see a notice with a link to the updated section.

Forms can now update or finish an existing service entry

Service forms have always added a new entry every time someone submitted one. That works for a one-off, but not for a service that runs over months — a housing case, a training programme, ongoing case management. What should have been one engagement, updated as it progressed, ended up as a stack of separate entries.

A service form can now be set to act on an entry that already exists instead. When you build the form, choose what a submission should do:

  • Create a new service entry — how service forms have always worked, and still the default. Nothing about your existing forms changes.
  • Update an existing entry — record progress against an engagement already in flight.
  • Finish an existing entry — close it out, with the end date set for you.

To use one, open the service entry, choose Edit, and copy its update link. Send that link to whoever should fill it in — the client themselves, a partner agency, a caseworker in the field. They do not need a HumanixOS account. The link points at that one entry, so there is no guesswork about which record a submission belongs to.

Nothing changes on the record until you approve it. Submissions land in Form submissions like any other, showing which entry they are about. You read it, you approve it, and the entry updates then — recorded in your activity log under your name. That is true even if the form is set to add records automatically.

Updating only changes what the form actually asks about; anything else on the entry stays exactly as it was.

You can rotate an entry's link if you need a fresh one, or revoke it to stop every link you have already shared.

Add selected clients to a service in one step

Select any number of clients on the client list, click "Add to service", pick the service (and optionally a service date), and everyone lands on it at once — no more visiting the service page and re-finding the same people. If someone was already enrolled, we tell you rather than creating confusion.

The AI field creator can now propose several fields at once

Describe everything you want to track — "housing status, move-in date, and monthly rent" — and the AI field creator proposes all of it in one go, each field with the right type and choices. Review the cards, apply one to the form to tweak it, or add all of them with a single click. Duplicates of existing fields are flagged before anything is saved.

Generate service fields with AI

The AI field creator now works on services, not just clients. Describe what a service should capture — "session date, hours delivered, and a referral source dropdown" — and it proposes each field with the right type and choices. Review the cards, add them all at once, or pull one into the form to adjust it first. Anything that would duplicate a field the service already has is flagged before you save.

Clients in a household can be deleted again

Deleting a client who belonged to a household used to fail with no way forward. Now the delete just works: their household memberships are removed for you, and if the person was the head of household, the next member on the record takes over. The confirmation window tells you what will happen before you confirm.

Two cases are still refused, on purpose, and both say why up front: a client who heads a household with nobody else in it (remove the household from Inventory first), and a client with inventory distribution history — that record is what lets you trace who received a recalled item.

Tell Find Duplicates when a match isn't one

Siblings at the same address, a father and son sharing a name — some suggested duplicates are genuinely different people. You can now mark a pair "Not a duplicate" and it stays out of every future scan. Changed your mind? "Show ignored" lists every dismissed pair — searchable, with who dismissed it and when — and one click restores it.

Imports skip blank rows automatically

Spreadsheets often carry invisible baggage — rows of empty cells, stray separators, leftover formatting. The import wizard now removes rows that are completely blank before anything else happens, and tells you how many it skipped, so your imported client count matches the people actually in your file — no more empty records to clean up afterwards.

Choosing clients to add to a service is easier to work with

Adding clients to a service now opens its own page instead of a cramped window. The filters — age range, gender, ethnicity, city, state, ZIP and date — sit beside the list rather than on top of it, so you can leave them open while you pick. Whatever you have filtered on shows up as a row of tags under the search box; click one to drop that filter.

"Select all" still selects everyone matching your filters, not just the names loaded on screen, and services with hundreds of clients already attached no longer fail to load the remaining ones.

Merge two clients straight from the client list

Spotted two entries for the same person while scrolling your client list? Select both rows and click "Merge selected" — the familiar merge review opens so you can choose which values to keep, and the duplicate is folded into the surviving record on the spot. No need to run a full duplicate scan for a pair you can already see.

Services with repeated fields show their columns again

A service could end up with the same field listed more than once, which made its client table report hundreds of columns and show none of them. Those services now display normally, and the repeat is cleaned up the next time anyone saves the service — fields with genuinely different names, including ones that differ only by capitalisation, are left exactly as they are. Building a public form that saves answers to a service can no longer create the repeat in the first place.

Import service records and match them to your clients

Service records can now be imported. Pick the service the file belongs to — or create it right there — instead of needing a column that spells the service name exactly. Each row is then matched to an existing client by email, phone, or a close name match: confident matches attach on their own, anything uncertain is listed for you to pick from, and rows that match nobody wait for your decision to create a client or skip them. Nothing is attached or created until you choose, so an import can no longer quietly produce duplicate clients.

Filter clients by services and organizations

The Services column on the clients table has a filter — and now it actually filters. Pick one or more services to see exactly the clients enrolled in them, choose "empty" to find clients not receiving any service yet, or "not empty" for everyone with at least one. The Organizations column gets the same upgrade: select one or more organizations from a list instead of typing a name, or find clients not linked to any organization at all. Great for building program lists or spotting clients who still need to be connected.

Field names can use symbols and any language

Name a field "Amount ($)", "% Attendance", "Café location", or 予算 and it now shows exactly that — on the client and service forms, in table headers, on detail pages, and in exports. Behind the scenes each field still gets a plain, machine-safe key, so filtering, sorting, and reports keep working; two fields whose names look similar no longer end up sharing one another's data. Fields you already have are untouched.

Bulk delete and bulk edit now work on hundreds of clients

Deleting or editing a large selection of clients (200+) used to time out — and when it did, nothing was deleted at all. Both operations now process in batches and complete reliably at scale. Clients that can't be deleted because they belong to a household or have inventory distribution records are skipped and listed with the reason, while the rest of your selection is still deleted.

Merge duplicate clients in bulk

Find Duplicates no longer makes you merge one pair at a time. Select any number of duplicate pairs — or use "Select all ≥ 90%" to grab the confident matches — and merge them in one action. For each pair, the older record is kept and filled in with values from the newer one, and connected duplicates are handled automatically. The results list also stays open after each merge now, so you can work through duplicates without rescanning.

Reports and dashboards now group values regardless of capitalization

Charts and report summaries used to treat "PROVIDENCE" and "Providence" as two different cities, splitting your counts across separate bars. Grouping now ignores capitalization and extra spaces everywhere — dashboard cards, report visualizations, and AI report summaries — and each group is labeled with the spelling most common in your data.

Drag to fill — copy a cell value up or down its column

Data tables now have a spreadsheet-style fill handle: select a cell and a small square appears at its corner. Drag it down or up to copy that value into the cells you cover — great for setting the same city, status, or custom field value across many rows at once. One undo reverts the whole fill, and "Fill down" is also available in the right-click menu.

Imports now match values like "1. Male" to your field options

When a spreadsheet column maps to a field with a fixed set of choices — like gender or a custom dropdown — imported values are now matched to those choices automatically, even when the source file uses numbered options ("2. Female" imports as "Female"). Multi-select columns are split and de-duplicated too. Values that don't match anything are shown during the import for you to resolve, instead of being stored as-is silently.

In-kind donations: recorded at the door, counted like real money

When someone shows up with donated goods, you can now record everything in one step: receive the items and create the donation together, choosing the donor on the spot — an organization, a household, a client, or anonymous. Per-unit values prefill from your retail prices, and the donation's total is calculated for you.

Just as importantly, in-kind gifts now read as real money across the Donors area. A $500 donation of goods no longer shows as $0.00 — it appears at its fair-market value in the donations list (with a "Physical goods" tag), in each donor's lifetime giving, and in your fundraising totals, with the cash-versus-goods split still visible where it matters. Click the tag on any in-kind donation to see exactly which items were received.

Inventory: variants, retail values, and the reports you asked for

Inventory now tracks the way real shelves work.

One item, many variants. "T-Shirt" is now a single item — sizes, colors, and other details are captured when stock arrives, and each combination keeps its own count. Expand an item in the list to see the full breakdown at a glance, and pick the exact variant when distributing.

Retail prices and inventory value. Every item (and each variant, if you like) can carry a retail price. Your inventory page now shows the total value of what's on hand, and donated goods automatically pick up their value from it.

Serial numbers, one per unit. Receiving ten laptops now asks for ten serial numbers — type them, or paste a scanned list. Each unit is tracked individually from then on.

Two new reports. On hand shows everything you currently have — by variant and location, valued at retail, exportable and printable for your board or auditor. Distributed totals what you've given away over any date range, broken out by item, month, and type.

Built-in item types are now editable. Rename them, tweak their fields — your changes apply only to your organization, and a "Reset to default" puts everything back.

Purchase orders can also record a shipping cost now, so the order total matches what you actually pay.

Distributions with pick sheets — private by default

Distributions no longer have to happen all at once. You can now stage a distribution, print a pick sheet for whoever pulls the items, and mark it fulfilled when the goods actually leave the shelf — recording exactly what was taken, even if it's less than planned. Staged distributions stay visible so nothing gets forgotten, and cancelling one never touches your stock.

Pick sheets are de-identified by default: a volunteer runner sees your own reference fields, the item list, and where to grab each thing — not who it's for. You can include recipient details per print, or change the default in settings.

Speaking of reference fields: you can now add your own custom fields to households and distributions (an "MR Number", a program code — whatever your organization uses), managed in inventory settings and shown on forms and pick sheets.

Select All in the add-clients dialog now selects every matching client

When adding clients to a service, the Select All button used to select only the clients already loaded in the list — the first 50 — even when many more matched your search. It now selects all clients matching your current search and filters, no matter how many pages are loaded, and shows a spinner while it gathers them.

Safer, more capable service field editing

Editing a service's fields is now consistent and safe everywhere. You can change a field's type from the service page (with a heads-up when records already hold values), reorder fields in both editors, and rename fields freely — renames now change only the display label, so existing client records always keep their data. Deleting a field asks for confirmation, shows how many records hold values, and cleans up stored data properly.

Service renames now show up everywhere immediately

Renaming a service used to leave the old name showing on the service's own page and on linked client profiles until you reloaded the page. Renames (and deletes) now propagate everywhere right away — including when a teammate makes the change from another device.

Fix a count in two clicks — and run full physical audits

When the shelf says 9 and the system says 10, you no longer have to fake a distribution to fix it. Every item page now has Adjust stock: pick the variant and location, enter the change or the new count, choose a reason (damaged, lost, found, expired…), done. Every adjustment is logged for your auditors.

For the big counts, there's a full physical audit workflow: start an audit for a location, work through the count sheet (searchable, keyboard-friendly, pause and resume whenever), review the variances, and commit — the system reconciles itself to what you actually counted. Past audits are kept with a full variance report you can export.

Select every row in a table with one click

Data tables — clients, services, and staff — now have a select-all control in the top-left corner, just like a spreadsheet. Click it to select every loaded row (click again to clear), or press Ctrl/Cmd+A while the table has focus. Bulk actions like delete work on the full selection.

Refined dashboard cards update instantly

Refining an AI dashboard card (for example, changing "all cities" to "top 5 cities") used to update the title right away but keep showing the old chart until you reloaded the page. The chart now refreshes immediately after a refine — and the rest of your dashboard stays visible while the new data loads instead of flashing loading placeholders.

Zip codes keep their leading zeros

Spreadsheets love turning zip codes into numbers — so 02906 (Providence) became 2906 on import. Since US zips are always five digits, we now restore the missing zeros automatically, on imports and everywhere else zip codes are entered. ZIP+4 codes get the same treatment and are stored in the standard 12345-6789 form.

We've also repaired existing records that were affected — if your imported addresses were missing their leading zeros, they're fixed.

Choosing a plan now takes you straight to setting up your organization

Picking a plan on the pricing page and signing up used to leave you on your profile page, with no clear sign of what to do next. Getting to checkout meant finding and clicking "New Organization" yourself, and it was easy to assume something had gone wrong.

Now, once you confirm your email, you go straight to setting up your organization. When that's done, checkout opens on the plan and billing period you already chose — no need to pick again.

The same applies if you already have an account: choose a plan, sign in, and you'll go directly to creating the new organization.

Your choice of plan also sticks around much longer than it used to, so taking a day to get back to the confirmation email in your inbox no longer means starting over.

French and Spanish now cover the whole app shell

If you use HumanixOS in French or Spanish, a handful of screens were still showing English no matter which language you picked. Those are now translated:

  • The create-organization wizard and the rest of the onboarding flow, including joining an organization with an invitation code.
  • The account menu in the top bar — Profile, Logout — and the Feedback menu next to it, along with the Bug Report and Feature Request forms.
  • The Back to Profile links on the account and join-organization pages.
  • The default dashboard tiles — Total Clients, Total Services and Serviced Clients.

Dashboard tiles you have renamed yourself stay exactly as you named them. The same goes for tiles you created by asking for them in your own words — your wording is yours, and we don't translate it.

We also fixed a related problem: when a funder requires certain client fields, saving a client with one of those fields empty is blocked again, and the field is marked so you can see which ones your funder needs. That check had stopped working, so the funder requirement was showing but not being enforced.

Switching between organizations no longer breaks when one has a lapsed plan

If you belong to more than one organization, there was a way to get stuck. Selecting an organization whose trial had ended or whose subscription had been cancelled sent you back to your profile page with your organization list missing entirely. With nothing left to click, there was no way to switch to another organization you still had access to. Logging out and back in was the only way out, and nothing on screen said so.

Your profile page now always shows every organization you belong to, whatever state their plans are in, so you can move between them freely.

Choosing an organization whose plan has lapsed also gives you a straight answer now. Instead of dropping you somewhere with no explanation, it takes you to plan selection, where you can pick a plan and restore access to that organization. Your other organizations are unaffected and stay available the whole time.

Buy a plan without booking a call

Until now, the only way to sign up for Basic, Pro, or Premium was to book a demo and wait for someone to get back to you. That made sense early on, but it also meant an organization ready to start today had to wait for a calendar slot first.

You can now buy any plan directly from the pricing page. Pick the one you want, create your account, and go straight to payment. The plan you chose comes with you, so you are not asked to pick it a second time at checkout.

Booking a demo is still there if you would rather talk to someone first, and the 60 day free trial is unchanged. Nothing about existing subscriptions changes.

Annual pricing is clearer too. Switching to annual billing used to show a lower monthly figure without ever telling you the yearly total, which made it hard to know what you would actually be charged. The pricing page now shows the full yearly price for each plan, along with the exact amount you save compared with paying monthly.

If you need more users or records than Premium includes, get in touch and we will put together a plan that fits.

Build client fields by describing them

Setting up client fields used to mean a lot of typing, especially for dropdown questions. A household income field might need a dozen income ranges, each one entered by hand, in the right order, with no gaps between them.

Now you can just describe what you want. In the Custom Fields area of your client settings, click "Generate with AI" and type something like "a dropdown for household income with salary ranges". You get back a complete field, ready to review: a name, the right field type, and a full list of options in a sensible order.

Nothing is saved until you say so. The suggestion drops straight into the normal Add Field form, so you can rename it, change the type, edit or reorder the options, or delete any you don't want. It works exactly like a field you built yourself, because by the time you save it, it is one.

If the first suggestion isn't quite right, you can ask for changes in plain words. Try "make the brackets go up to $200k" or "add a Prefer not to answer option" and it will adjust what's already there rather than starting over.

A few things worth knowing. The suggestions take your existing fields into account, so they match the names you already use and warn you if you're about to create a duplicate. Only your field names and types are used to make a suggestion, never any of your client records. And if you'd rather build a field the usual way, nothing has changed: the Add Field button works just as it always has.

This is available on paid plans for anyone who can already create client fields.

Formula fields that can sort clients into categories

Formula fields used to do one thing: add up or average a few number fields. Useful, but it couldn't answer the questions most organizations actually ask of their data — things like whether a client counts as low income, which age band they fall into, or what's left after expenses.

Formula fields can now do all of that.

Threshold tables handle the classic case where the answer depends on two fields at once. Pick the field that chooses the row (household size, say), pick the field to measure against it (income), fill in the limit for each row, and name the two outcomes. Every client is then labelled automatically — "Low income" or "Not low income" — and the label updates the moment either number changes. The same pattern covers rent bands, fee scales, and anything else that works off a lookup table. You enter the figures yourself, so they're always the ones your programs actually use, and you can update them whenever the guidelines change.

If / then rules let you branch on any field. Under 18 is a Minor, under 65 an Adult, everyone else a Senior — as many rules as you need, in the order you want them checked, with an "otherwise" for anything left over. Rules can produce text, a number, or a simple Yes/No.

Rules can also compare dates — everyone enrolled before a cut-off date lands in one group, everyone after in another — and they can act on missing information: "is blank" and "is not blank" let you flag the records that still need a figure filled in, which is often the report a programme manager actually wants.

More math. Alongside sum and average you now get subtract, multiply, divide, minimum, maximum, count, and percentage-of, and you can mix in fixed numbers as well as fields — monthly income from an annual figure, or expenses as a percentage of income.

Formulas can build on formulas. Work out net income in one field, then band it in another. If you ever set up a loop by accident, you'll be told before it saves rather than seeing a broken column later.

Results show up on the client detail page, in the clients table, and in exports, and they're recalculated live — nothing to refresh, nothing to re-run.

If describing what you want is easier than building it, click "Generate formula with AI" and type something like "mark the client as low income if their income is under the poverty line for their household size". The suggestion loads into the builder for you to check and adjust, and nothing is saved until you say so. Only your field names and types are used to make a suggestion, never any client records. When something genuinely can't be expressed as a formula, you'll be told that plainly, along with the closest thing that can — no invented answers. AI assist is available on paid plans; the builder itself is available to everyone.

Two things worth knowing. Existing sum and average fields keep working exactly as they did, with nothing to update or re-save. And when a formula can't be worked out for a client — a missing figure, a divide by zero — the cell is simply left blank rather than showing an error.

HumanixOS now speaks French and Spanish

Pick French or Spanish in your account settings and the whole app follows: grants, donors, volunteers, events, clients, services, inventory, forms, imports, reports, and every settings page.

What else changed with it:

  • Dates and amounts read naturally in your language. A grant of $1,234.56 shows as "1 234,56 $ US" in French. Amounts are never converted, only formatted, so the numbers themselves are unchanged.
  • Emails arrive in the recipient's language. Team members get email in the language they picked; people you serve get theirs based on the language on file, falling back to your organization's default.
  • AI writes back in your language. Report summaries, generated email drafts, impact narratives, and thank-you letters follow the reader, while names and other data stay exactly as entered.
  • Organization default language. Owners and admins can set one under Settings, then Organization. New team members start there until they choose their own.

Your own content is never translated: client records, custom field names, service names, and form questions stay exactly as you wrote them.

Rename built-in client fields and move them into your own sections

Built-in client fields (first name, email, phone, and the rest) are no longer locked into the Base Fields group. From the client configuration editor you can now:

  • Rename any built-in field to match your organization's vocabulary — call "First Name" "Preferred Name" and the new label shows up everywhere: the client page, table headers, form builder, and import mapping.
  • Move a built-in field into any of your sections (or General). The client detail page and the clients table group it right alongside your custom fields, and you can move it back at any time.

Renames and moves are display-only — your data stays exactly where it was, and existing imports, forms, and integrations keep working unchanged. If you don't touch anything, nothing changes.

New: Services column on the Clients table

The Clients table now shows a Services column listing every service each client is currently enrolled in, so you can see enrollment at a glance without opening each client.

  • Long lists truncate cleanly with a "+N more" badge.
  • Filter the table to clients enrolled in a specific service.
  • Show or hide the column like any other — your choice is remembered in saved views.
  • Included when you export the table to CSV.

If your role is limited to specific services, the column and filter only show services you have access to.

Reorder dropdown options with drag-and-drop

You can now change the order of the choices in your Dropdown and Multi Select fields — no more deleting and re-adding options just to fix their order.

  • Drag to reorder. Every option row in the field editor now has a drag handle. Drag an option to its new spot and save.
  • Up/down buttons. Prefer clicking (or using the keyboard)? Each option also has up and down arrows.
  • Sort A–Z. One click alphabetizes the whole list — handy for long lists like counties or languages.

The new order shows up everywhere your field appears: the clients table, client detail pages, public forms, and imports. Reordering never changes what's already recorded for your clients — an answer stays the same answer no matter where its option sits in the list.

Reordering is available in the client Custom Fields manager and the service field editor.

Event registration and check-in forms now translate fully

Two more public form surfaces now follow your form's language setting:

  • Event registration questions (labels, descriptions, dropdown choices, and placeholder hints) are now included when form translations are generated. Re-save a form that has event questions to generate translations for them.
  • The event check-in page is now fully translated, including the walk-in flow and confirmation messages, and it now has the same language picker as regular forms.

New: Import your transaction history into the Ledger

Switching from a spreadsheet to the Ledger? You no longer have to re-type every past transaction by hand — Finance Transaction is now an option in the import wizard.

  • Map date, type (income/expense), payee, description, amount, category, payment method, and reference columns — same wizard as every other import.
  • No type column? If your amounts are signed, a negative amount is treated as an expense and a positive one as income automatically.
  • Categories in your spreadsheet are matched to your existing ones by name, regardless of capitalization. Anything new is created for you.
  • An optional grant-name column links transactions to existing grants; anything that doesn't match is imported without a link rather than blocking the row.
  • Rows with an invalid date or amount are flagged individually — one bad row won't stop the rest of the import.

Only visible if your organization has the Ledger module enabled.

Better translation coverage on public forms

If your intake forms are used in Spanish, French, Haitian Creole, Portuguese, Chinese, or Arabic, several pieces of the form previously stayed in English no matter which language a visitor selected. That's fixed: the dropdown "Select an option" placeholder, file upload controls, date and time pickers, time-slot availability messages, SMS consent choices, the Social Security Number privacy notice, event unavailable notices, error messages, and the thank-you confirmation all now display in the visitor's chosen language.

French and Spanish across the core screens

Choosing French or Spanish as your language now translates much more of the app: the sidebar and navigation, the settings pages (including modules and the permissions matrix), sign-in, registration, password reset and email verification, and the Clients and Services pages.

Organization admins can also set a default language for their whole organization under Settings, then Organization. New team members see that language until they pick their own.

Dropdown fields created during import come ready to use

When you create a new dropdown field while mapping an import, HumanixOS now reads the column and proposes its distinct values as the dropdown's options. Review the list, remove anything that shouldn't be a choice, add anything missing, and create the field in one step. Columns with too many distinct values are flagged as a sign the field should stay free text.

Imported values are also matched to your dropdown options regardless of capitalization, so "ged", "GED", and "Ged" in a spreadsheet all land as the same choice.

Imports is back

The Imports section was unintentionally hidden along with a recent change and has been restored. The sidebar item, the import wizard on the Clients page, and all import tools work exactly as before — including the new ability to import ledger transactions.

Ledger column headers no longer cut off

Column headers on the Finance Ledger (Date, Type, Payee / Source, Amount, Method, and Ref #) were rendering cut off once the sort and filter controls took their space. Columns now size themselves so every header label is fully visible, and any column widths you adjust yourself are still remembered.

Editing service fields no longer reloads the page

Adding, renaming, reordering, removing, or changing the type of a field in a service's configuration now updates the page instantly — without reloading the whole service view.

Previously, every change you made in the service configuration panel caused the entire page to refresh: the client table would flash and reload, your scroll position jumped back to the top, and any active filters or row selections were disrupted.

Now the new column simply appears (or updates) in place. Your scroll position, filters, sorting, and selected rows all stay exactly where you left them while you fine-tune your service's fields.

Dropdown lists now scroll with the mouse wheel wherever your pointer is

When you opened a long dropdown — like the Data Type list when adding a service field — scrolling with the mouse wheel or trackpad did nothing unless your pointer was directly over the open list. Since the pointer usually sits on the field you just clicked, the list often felt stuck and options at the bottom seemed unreachable.

Dropdowns now scroll with the wheel or trackpad no matter where your pointer is while the list is open, so every option is always within reach. This applies to all dropdowns across HumanixOS, including those inside dialogs.

Tooltips for the collapsed sidebar

When you collapse the sidebar down to icons, it can be hard to remember which icon is which — especially if your organization has renamed menu items.

Now, hovering over any icon in the collapsed sidebar shows a small tooltip with its name, including your custom names if you've renamed items. This covers every menu item, the Settings and Knowledge Base links at the bottom, and the expand button itself.

Prefer a quieter sidebar? Open the sidebar's customize mode (the pencil icon) and switch off "Icon tooltips". Your choice is remembered the next time you sign in.

Choose your language

HumanixOS is becoming multilingual. Account Settings now has a Language option where you can choose English, Français, or Español as your interface language. Your choice follows you across sessions and devices.

This first release lays the groundwork: the language settings themselves are fully translated, and the rest of the application will switch over screen by screen in the coming releases, starting with navigation, clients, and services. Public intake forms already support six languages and are not affected by this setting.

Set up role permissions in bulk

Configuring what a role can do no longer means flipping dozens of switches one at a time. The permissions grid is now grouped into the same sections as the Modules settings (Core, Financial, Outreach, Operations), with bulk controls built in:

  • Section toggles: each section header has one switch per action, so you can grant or revoke, say, Delete across all of Financial in one click.
  • Per-feature toggles to grant or revoke every action for one feature at once.

Bulk switches show in a distinct color so they are easy to tell apart from the individual ones. Bulk changes stage just like individual edits: nothing is saved until you hit Save Changes, and the change counter only counts switches that actually differ from their current setting.

One safety change alongside this: admins can no longer edit their own role's permissions (the tab shows read-only with a note). Only owners and super admins can change what the admin role is allowed to do, which prevents accidentally locking yourself out mid-edit.

Turn feature areas on and off with Modules

You can now tailor HumanixOS to exactly what your organization uses. Settings has a new Modules section with four pages: Core, Financial, Outreach, and Operations.

  • Financial lets you switch each money-related page on or off individually: Grants, Donors, Funds, Campaigns, Financials, and Ledger.
  • Outreach covers the Email Builder and SMS.
  • Operations covers Volunteers, Inventory, Organizations, and the Board Portal. Modules with their own configuration (like Inventory and SMS) link straight to it from their row.
  • Core lists the always-on foundation (Clients, Services, Events, Reports, Imports, Calendar, and Forms). These can't be turned off.

Turning a module off hides it everywhere: the sidebar, its pages, and its controls, so your team sees a cleaner app focused on the work they actually do. Nothing is deleted; your data stays put and comes right back when you re-enable the module.

We also cleaned up the permissions screen: each feature now shows only the actions that actually apply to it, instead of a grid of toggles that didn't all do something.

Recurring events now sync to your connected calendar

If you've connected a Google or Microsoft 365 calendar, events created from a recurring schedule now show up on it automatically — just like one-off events already did. Occurrences appear on your external calendar right after you save the schedule, and new occurrences that roll in over time are added on their own.

Previously you had to open and re-save each recurring occurrence to get it onto your calendar. That's no longer necessary.

A better board meeting minutes workflow

Taking and sharing board meeting minutes is now much smoother:

  • Rich text editing — format minutes with headings, lists, and emphasis instead of a plain text box. New minutes start from a ready-made agenda structure (Call to Order through Adjournment).
  • Draft with AI — paste your rough notes and generate a formatted first draft that pulls in the meeting's attendance, motions, and action items. You stay in control: review and edit before saving.
  • Share a draft for review — email draft minutes to board members before the approval vote so everyone can read them ahead of time.
  • Approval notifications — when minutes are approved, board members are automatically emailed with a summary and a link.
  • Reopen approved minutes — officers can now unlock approved minutes to fix a mistake, instead of being permanently stuck.
  • Complete PDF export — the exported minutes PDF now includes action items alongside motions and attendance.
  • Access for admins — organization admins can be granted access to view and export board minutes without being board members.

New: Finance Ledger

If your organization keeps its books in a spreadsheet, the new Ledger page is for you. Find it in the sidebar under Finance.

  • Record income and expenses in a spreadsheet-style grid: click a cell to edit, and add a batch of empty rows at the bottom to keep entering, just like a spreadsheet. Rows you never fill in are never saved.
  • Categorize every entry. Your organization starts with a sensible set of nonprofit categories, and you can rename or add your own.
  • Filter and sort by any column, and see income, expense, and net totals for exactly what you've filtered.
  • Export the ledger (or a filtered slice of it) to CSV or Excel any time.

Who can see and edit the ledger follows your existing Financials permissions, so viewers can review the books without changing them.

No more "you don't have permission" when you actually do

Some pages used to greet you with a message saying you did not have permission, then replace it with the page a moment later. Nothing was wrong with your access. The page was still checking what you were allowed to see, and it treated "not sure yet" as "no".

This has been fixed everywhere it happened. Pages now show a brief loading indicator while they check, then either the page or, if you genuinely do not have access, a clear explanation of what you are missing and who can grant it.

The screens affected included all of the SMS pages, events and event templates, comms templates, GL account access, activity history, the financials page, data export, inventory, and dashboard cards.

One group of people saw this more than anyone else. If your role does not include a feature by default but your administrator granted it to you specifically, some pages were checking only your role and had not yet caught up with the permission you were given. Those pages now wait for the full answer, so a permission your administrator sets for you behaves like one from the first moment the page opens.

We also found and fixed several inventory pages that were doing this, including when recording a distribution, receiving stock, or starting a purchase order. If you had permission for those actions, you were briefly told you did not. The QuickBooks setup page did the same thing, telling owners for a moment that only owners and admins could connect an integration.

Renaming a dropdown option no longer breaks past records

Editing the label of a dropdown option, in a service or in a client custom field, used to quietly disconnect every answer already recorded against that option. Fixing a spelling mistake was enough to do it. Afterwards the affected records showed a raw code instead of the answer, or nothing at all. That code showed up in exports too, and the records stopped matching email segment filters built on that field. Nothing warned you, and nothing looked wrong at the time.

This is fixed. You can now rename an option freely. The new label appears everywhere, including on records saved before the change, and the answers stay attached.

If some of your records were already affected, they will still show a code rather than an answer. We are sorry to say those cannot be repaired automatically, because nothing in the system kept a record of what the option was called before it was renamed. Where you can tell what the answer should have been, you can set it by choosing the option again on that record.

Adding options in other languages works far better now. Labels written in scripts such as Chinese, Russian, Arabic or Greek used to fail on services, rejected on save with a message about a missing value that pointed at nothing you could see. They save normally.

One more thing, on the permissions side. If the app could not load your permissions because of a connection or server problem, it used to tell you that you did not have access. Now it says it could not check, and gives you a Retry button. It also no longer lets a failed check hand back access your organization had removed.

Template dropdown options now work in any language

If your organization works in more than one language, you can now build service templates that reflect that. Dropdown options written in any script, such as 是, Да, or نعم, save correctly. Previously these options looked like they were added but blocked the template from being created, with an error message that pointed at something you were never shown.

Options that read differently now stay separate too. If you add both "Yes!" and "yes" to the same dropdown, they are kept as two distinct choices instead of quietly merging into one. Adding the exact same option label twice is now refused right away, so you find out in the moment rather than after saving.

We also fixed the Templates page. If it ever had trouble loading your templates, it used to show the "No templates yet" message, which understandably looked like everything had been deleted. It now tells you clearly that something went wrong loading them, reassures you that nothing was lost, and gives you a Retry button.

Finally, the page no longer shows a permission warning for a moment while it is still checking your access. You will see a brief loading indicator instead, and the Templates button on the Services page no longer jumps into place after the page has already appeared.

Events are now live the moment you create them

Events no longer need to be published. As soon as you create an event, it's live — its registration form accepts signups right away, and if you've connected a Google or Microsoft calendar, the event appears there immediately.

Previously, new events started in a hidden "planning" stage, and registration links didn't work until you clicked Publish on the event page. Many of you shared a signup link, only to have registrants see "This event isn't open yet" with no clue why. That dead end is gone.

The Publish button has been removed, and any events you had in the planning stage are now live. If you're not ready for signups on an event, simply hold off on sharing its registration link — or use Cancel on the event page, and Reopen it when you're ready.

Save any service as a reusable template

If you run the same program every year or every cohort, you no longer need to rebuild its service from scratch. Choose Save as template on any service to capture its full field setup — field names, types, labels, and dropdown options. You can also build a template from scratch: open Services → Templates and click New Template to define a reusable field setup directly.

When the next cycle comes around, click New service on a template. The creation form opens pre-filled with everything from the template, ready for you to rename and tweak before saving. Keeping the same fields across cycles also keeps your year-over-year reporting consistent.

Templates are just starting points: you can edit a template's name, description, and fields at any time, but changes never affect services you already created from it, and no client information is ever stored in a template.

We also fixed a small issue where custom field labels were lost when duplicating a service — labels now carry over.

Clearer Activity History entries

Activity History now shows exactly what changed — and nothing else.

  • Custom fields show their real names. When someone edits a custom field, the activity entry now says the field's name (for example, "updated Preferred Language") instead of a generic "Custom Fields" label.
  • Only the field that changed is shown. Editing one custom field used to display every custom field on the record in the before/after view. Now you see just the field that was actually edited.
  • Internal bookkeeping no longer appears. Some entries used to include a "Search Text" row containing behind-the-scenes search data. That row is gone from both new and older entries.

Smarter, safer data imports

Importing spreadsheets just got more reliable:

  • International dates import correctly. When your file uses day/month/year dates (like 25/12/2024), the import now detects it, shows a clear notice before you continue, and reads those columns correctly instead of mixing up the day and month.
  • One bad row no longer blocks the rest. If a single row fails during an import, the remaining rows still import, and error messages point at the exact rows that need fixing.
  • Your custom event types work in imports. Event imports now accept the event types you've defined in Settings — not just the built-in ones — and undoing an import also cleans up any event types it created.
  • Same-day events import. An event that starts and ends on the same date now imports as running through the end of that day.
  • Better file-encoding detection. Files saved as UTF-16 (a less common spreadsheet export format) are now read correctly instead of appearing as garbled text.

Accepted team invitations no longer show as pending

Fixed an issue where a teammate who already had an account would join your organization correctly, but their invitation kept showing as "pending" in your team settings. Invitations are now marked accepted as soon as they're accepted, so your pending-invites list stays accurate.

Void donations instead of deleting them

Entered a donation by mistake? You can now void it — the accounting-friendly way to correct errors without losing history.

  • Voiding removes the donation from giving totals, campaign progress, and reports.
  • The record stays in your donations list with a Voided badge, so there's always a trail of what was corrected and why.
  • Add an optional reason when voiding; it's kept with the record and in your activity log.
  • If a thank-you was already sent for the gift, we'll remind you before you void.

Adding many clients at once is faster and more reliable

When you use the "Add Clients" screen to enter or copy several clients at once and click Done, they now save in a single batch instead of one at a time — so large additions are noticeably faster.

We also fixed a quiet failure: if one of the rows couldn't be saved, it used to be dropped silently, so that client would be missing later (including from reports) with no warning. Now you get a clear message telling you exactly how many were added and how many need another try.

Client search now finds everyone — including accented names

The search box at the top of the Clients page has been rebuilt to search your entire client list, fixing several ways it could come up empty:

  • It now searches all of your clients, not just the rows that had already loaded on screen. Previously, in larger organizations, searching for a client further down the list could show no results at all.
  • Accents no longer matter. Searching "Garcia" finds "García", "Jose" finds "José", and vice versa — type it either way.
  • Full names work. Searching "Maria Garcia" now matches first and last name together instead of coming up empty.

Results also stay fast as your client list grows, thanks to a new search index.

Duplicate a service in one click

Setting up next year's version of a service no longer means rebuilding it from scratch. Every service now has a Duplicate button that creates a copy with all of its fields and settings carried over.

  • The copy opens prefilled so you can rename it (for example, "Food Pantry 2027") and tweak anything before saving.
  • Only the service's structure is copied — enrolled clients and their data stay with the original.

AI Grant Finder can now target federal and international funders

The AI grant research tool (Grants > Opportunities > Research) now lets you choose which kinds of funders to search: foundations, corporate giving programs, state & local government, federal programs, or international funders.

Pick "Federal" to get real federal opportunities (grants.gov programs and agency funding notices), or "International" to include funders outside the US even when your organization is based in a US city. You can combine several types, and leaving the selection empty searches everything, just like before.

Each result now also shows the funder type, and it's saved with the opportunity when you add one to your list.

Clearer table controls with hover tips

The small icons in table column headers now show a helpful tip when you hover over them, so it's easy to see what each one does:

  • Filter — narrow the table to matching rows
  • Pin — keep a column visible while you scroll sideways
  • Hide — remove a column from view (bring it back anytime)
  • Sort — order rows A to Z, Z to A, or clear the sort

Choose exactly what goes into report exports

Exporting a report now opens a small options dialog instead of downloading everything at once. You can pick which sections to include in a PDF or Excel export: the summary, the visualizations, the data table, or any combination. Sending a board packet with just the summary and charts, or pulling a data-only spreadsheet, is now one click. CSV exports stay data-table only, as before.

If a report contains personal client information, you will also see an "Exclude PII" option. Turn it on and the exported file leaves out names, contact details, birthdates, and any custom fields you have marked private, so you can share a clean version of an internal report without regenerating it.

The defaults match the old behavior exactly: all sections included, data as generated. If you never open the options, exports work just like they always have.

One more improvement: PDF exports of large reports used to be blocked over 1,500 rows. That limit now applies only when the data table is included, so a summary-and-charts PDF works no matter how big the report is.

More private, more insightful AI report summaries

AI-generated report summaries are now built entirely from anonymous, aggregated statistics. No client names, contact details, birthdates, or other personal information is ever included when a summary is generated, no matter what settings you choose. Custom fields you mark as Private are always left out as well.

Summaries also got smarter. They now draw on a much richer picture of your data, including:

  • Geographic patterns (top cities and states)
  • How complete each field in your records is
  • Breakdowns of your organization's custom fields
  • Client intake trends over time

The result is a summary that reads like a real analyst wrote it: specific observations about your client base, data quality, and where to focus outreach, instead of a generic recap.

New Super Admin role for shared leadership

Organizations now have a Super Admin role. A Super Admin can do everything the owner can do: manage members and their roles, edit permissions and custom roles, handle billing and the subscription, connect integrations, export data, and more. The only things reserved for the owner are transferring ownership and anything that changes the owner's own membership.

This is built for executive directors, deputy directors, and other trusted leaders who need full control of the organization without being the owner of record. No more sharing the owner's login.

A few details worth knowing:

  • Owners and Super Admins can grant or revoke the Super Admin role. Regular admins cannot, and they also cannot change or remove a Super Admin.
  • Nobody can change the owner's role or remove the owner. That protection is unchanged.
  • Super Admins appear with their own badge in your team list, and their permissions page shows full access, just like the owner's.
  • System role names (Owner, Super Admin, Admin, Member) are now reserved, so custom roles can no longer be created with those names.

Dropdowns inside pop-ups no longer close the whole window

Fixed a frustrating issue that affected pop-up windows throughout the app. When a pop-up contained a dropdown menu, choosing an option — or clicking anywhere near the dropdown — could unexpectedly close the entire pop-up, losing whatever you were working on.

Now dropdowns behave the way you'd expect: opening one and picking a value keeps the pop-up open. The pop-up only closes when you actually click outside it, press Escape, or use its close button.

Register your organization from anywhere in the world

Organizations outside the United States can now sign up for HumanixOS. Registration and your organization settings now include a country selector, and when your organization is based outside the US, the address fields adapt: you can enter your state, province, or region as free text, and postal codes accept international formats like "SW1A 1AA" or "2196".

Nothing changes for US organizations — your registration and settings work exactly as before, with the country pre-set to United States.

A much more complete activity log

The activity log (Settings → Security & Access → Activity) now records far more of what happens in your organization, and access to it is properly locked down.

Now recorded:

  • Team and security changes: role and permission edits, member invitations and removals, ownership transfers, password and two-factor changes
  • Data exports: whenever someone exports organization data, a client profile, a proposal, or volunteer analytics
  • Donor records, staff records, services, and custom field deletions
  • Imports, with a clear note when some rows failed
  • Automated activity: scheduled tasks, text-message opt-outs, and updates arriving through connected integrations — labeled so you can tell automation from people
  • Volunteer application decisions, board minutes approvals, and calendar or payment integration connections

Access changes:

  • Viewing the activity log is now limited to owners and admins by default. You can grant access to other roles from Settings → Permissions ("Activity Log").
  • Public form submissions and check-ins now show up correctly, labeled as coming from the public form.

Housekeeping: the filter menus now match exactly what's recorded (including events), and very old "viewed" entries are cleaned up automatically after a year — every change to your data stays in the log permanently.

Custom base fields now display correctly

Two fixes for organizations that add their own fields to the Base Fields group:

  • On a client's profile page, custom fields marked as base fields now appear inside the Base Fields card, right where you'd expect them — instead of under a strange separate heading.
  • On the Clients page, the colored group headers above the table now always line up with the correct columns. Previously, adding a custom field to the Base Fields group could shift the headers so values appeared under the wrong group, and collapsing a group could hide the wrong columns.

Also fixed: if you turned on SSN collection after arranging your field order, the SSN column could be missing from the Clients page. It now appears at the end of the Base Fields group.

Record collection drives and set default storage locations

Two improvements for organizations that track inventory:

Collection drives. You can now record goods that come in through a drive, like a food drive or coat drive. Set up your drives under Inventory, then Manage, then Drives, and pick the drive as the source when you receive the donated goods. Every receipt stays linked to its drive, so you can see what each drive brought in.

Default storage locations. Items can now remember where they are stored. Set a default location on an item, and received stock is placed there automatically instead of your main storage area. Items without a default keep working exactly as before.

Send a campaign to multiple email lists at once

You can now send a single email campaign to more than one email list.

  • Pick as many lists as you need. In the campaign's Recipients section, "Use an Email List" now lets you check off multiple lists — donors, volunteers, board, and more — for one send.
  • No duplicate emails. If someone appears on more than one of the selected lists, they only receive the email once. We de-duplicate recipients automatically before sending.
  • Unsubscribes still respected. Anyone who has unsubscribed is removed from the combined audience, just like before.

No more sending the same email several times to cover overlapping lists.

Easier navigation for funding partners

The funding partner portal now has a navigation menu on the left side of every page, just like the main dashboard. You can jump straight to your Dashboard, Organizations, Partner Codes, or Settings from anywhere, without going back to the home page first.

The menu can be collapsed to give your data more room, and it remembers your preference. On phones and tablets, tap the menu button in the top corner to open it.

Forms jump to the first error on submit

When you submit a form that has a missing or invalid field, the page now scrolls to the first problem field and places your cursor in it.

Previously on long forms, the error message could be off-screen — it looked like nothing happened when you clicked save. Now you land right where the fix is needed, and screen readers announce the field's error message.

Import more of your data

The Import Wizard now supports six new data types, so you can bring more of your existing records into HumanixOS from CSV or Excel files:

  • Grant content library — reusable proposal content like templates, boilerplate, and snippets
  • Campaigns — fundraising campaigns with goals, dates, and status
  • Funds — gift designation funds with restrictions and GL codes
  • Appeals — solicitations with type, goals, and costs
  • Volunteer opportunities — roles, locations, schedules, and capacity
  • Events — event details including type, date and time, location, and capacity

As with other imports, the wizard detects the data type from your file's columns, suggests field mappings, validates each row, and lets you roll back an import within 24 hours if something goes wrong.

Alongside the removal of the Staff section, staff records are no longer an import option.

Volunteer shifts sync at the right time

Your organization now has a timezone setting (Settings → Organization), and volunteer shift times use it everywhere they leave HumanixOS.

Previously, a shift scheduled for 9:00 AM could show up hours off on a synced Google or Microsoft calendar, or in a subscribed calendar feed, because there was no way to know your organization's timezone. Set it once and shift times land at the correct local time on external calendars and feeds.

Organizations that haven't picked a timezone yet keep the previous behavior until they do.

Staff section removed

We've removed the Staff section from the app. The Staff entry no longer appears in your sidebar, and the Staff page is no longer available.

If you relied on staff records, reach out to support — your existing data has not been deleted, and we're happy to help you export it.

Funding partners can edit their details and invite teammates

Funding partners now have more control over their account from the funding partner dashboard.

  • Edit your organization details. Owners can update their funding partner's name, email, phone, website, address, and description right from Settings — no need to ask us to make changes for you.
  • Invite your team. A new Team page lets owners invite colleagues by email. Invitees get a branded email with a secure link; when they accept, they land directly in the funding partner portal.
  • Manage who has access. See everyone on your team and any pending invitations in one place. Owners can revoke invitations that haven't been accepted yet and remove members who no longer need access.

Invitations expire after 7 days, and only owners can invite, remove, or edit details — so your account stays in the right hands.

Creating a new organization now opens the right dashboard

Fixed a bug where creating a new organization while already signed in to another one could drop you back into your previous organization's dashboard. After you create an organization, the dashboard now reliably opens the new one, with the sidebar, org switcher, and data all scoped to it.

Let registrants bring guests to events

Events can now let each person bring additional guests (+1s) when they register.

When you create or edit an event, set Guests allowed per registrant to the number of +1s each person may bring (leave it at 0 to not allow guests). When someone registers, they can add up to that many guests.

You also control whether those guests count toward the event's attending total and capacity with the Count guests toward the attending total switch. Turn it off to keep a headcount of guests without having them fill seats — handy when guests don't affect your capacity planning.

The roster shows the total number of guests alongside your attendees, and capacity and waitlisting account for the full party size when guests are counted.

Events now appear on the unified calendar

Your scheduled events now show up on the main Calendar alongside grants, board meetings, volunteer shifts, and services — with a new "Events" source you can toggle on or off. Draft and cancelled events are hidden, matching what syncs to your connected Google or Microsoft calendar.

Clear confirmation when you redeem a funding partner code

Redeeming a funding partner code from the plan selection page now takes you to a confirmation page that shows your code was accepted and names the partner funding your subscription. Previously you were sent straight to your dashboard with no confirmation, which left many of you wondering whether the code had worked.

See donated items right on client and organization profiles

If your organization uses the Inventory module, client and organization profiles now include an Items Received section showing everything you have distributed to them - what was given, how much, and when.

No more switching over to inventory reports to answer "have we given this family a food box this month?" The full history is right on the profile, newest first, and visible to anyone on your team who can view inventory.

Funding partner codes work again on the plan-selection page

Fixed a bug where entering a valid funding partner code on the plan-selection page always failed with an "Invalid input" error. The page now shows the data-sharing consent step (as it already does elsewhere) and redeems the code correctly once you confirm.

Grant opportunity panel no longer closes on an accidental click

The grant opportunity detail panel used to close if you clicked anywhere outside it — easy to trigger by accident and lose your place. It now stays open until you deliberately close it with the X button or the Escape key.

Phone numbers with a leading "1" now format correctly

Fixed a bug where entering or autofilling a phone number that included the country code — like 1 (800) 555-1234 or +1 800 555 1234 — mangled the number, shifting the 1 into the area code and dropping the last digit. The leading 1 is now handled correctly, so the number formats and saves as a valid 10-digit phone number.

Your events, meetings, and shifts now sync to Google and Microsoft calendars

If you've connected a Google or Microsoft calendar, your scheduled items now sync there automatically — events, volunteer events, board meetings, and volunteer shifts. Publish or schedule something and it shows up on your calendar; reschedule or edit it and the calendar entry updates; cancel or delete it and it's removed. Connected to both Google and Microsoft? Everything syncs to both. Nothing to turn on — it just works alongside your existing calendar connection.

Email lists: segment on any client field, including custom fields

Email list segmentation just got a lot more powerful. When building an email list, you can now filter on any client field — not just name, city, state, zip, and phone — and on your organization's custom fields too.

  • All standard fields: gender, ethnicity, date of birth, birth year, street, client ID, and the date a client was added are now available alongside the original fields.
  • Your custom fields: every dropdown, date, number, yes/no, and text field you've defined for clients can now drive a list.
  • Smarter filters: the filter options match the field's type. Date fields offer before/after/between with a date picker, number fields offer greater/less-than comparisons, and dropdown fields show their actual options so typos can't quietly empty your list.
  • Pick multiple values: use "is any of" / "is none of" to match several values in one rule.
  • Live preview: see how many clients match while you're still building the list — before you save it.

Existing email lists keep working exactly as before, no changes needed.

Table filters no longer crash the page

Filtering your tables works reliably again.

  • Fixed a crash when filtering by values. Choosing values like Gender or a dropdown field in a column filter could make the whole table disappear behind an error message. That's fixed — check the values you want, hit Apply, and the table filters as expected.
  • Checkboxes in filters now respond cleanly. Clicking a value row or its checkbox toggles it exactly once, whether you're on the clients, services, or staff table.

Photo and file access now shows in your activity log

Your activity log now keeps track of who looks at client photos and files.

  • Every view is recorded. When someone on your team opens a client's photo or file — from the clients table or a client's profile page — the activity log records who viewed it, which client it belongs to, and when.
  • Downloads are tracked separately. Downloading a file creates its own entry, so you can tell the difference between someone previewing a photo in the app and someone saving a copy to their computer.
  • Easy to find. Head to Settings > Activity and use the new "File Viewed" and "File Downloaded" filters to see file access at a glance.

This gives you a complete record of who accessed sensitive client materials — useful for internal accountability and for funders who ask how client information is protected.

Fixed keyboard input in the organization selector on the clients table

Searching for an organization from the clients table works properly with the keyboard again. When you click the Organizations cell on a client row, the cursor now lands in the search box right away, and every key behaves the way you'd expect — Backspace deletes characters, and the arrow keys move through your text instead of jumping the table selection around behind the popup.

Previously, the popup would accept typed letters but ignore Backspace, and arrow keys would silently move the highlighted cell in the table underneath — so closing the popup could leave you on a different row than the one you were editing. Both problems are fixed, on the clients table and on the service instances table.

Save the Privacy Policy and Terms of Service as a PDF

You can now save a clean copy of our Privacy Policy and Terms of Service. A print button at the top of each page opens your browser's print dialog, where you can save the document as a PDF or send it to a printer.

The saved file contains just the document itself — the title, the last-updated date, and the full text — without the website's navigation, footer, or background. It's handy for compliance binders, board packets, and grant applications where you need a copy of our terms on file.

Address autocomplete when entering addresses

Entering an address is now faster and more accurate. As you type a street address, real address suggestions appear — pick one and the city, state, and ZIP fill in automatically, so you spend less time typing and stop storing typos.

It works across the app wherever you enter an address: the client form and the client data grid, organization sign-up and settings, events, volunteer opportunities, and public intake forms.

If an address can't be looked up for any reason, the field simply works as a normal text box, so you can always enter an address by hand.

Birth year fills in automatically from date of birth

When you enter a client's date of birth, their birth year now fills in automatically, so you don't have to type it twice and the two always agree.

  • Entering or changing a date of birth in the client form or the clients table updates the birth year to match.
  • Changing the date of birth later updates the birth year too.
  • You can still enter a birth year on its own when you only know the year and not a full date of birth.

This applies everywhere clients are added — manual entry, spreadsheet imports, and public intake forms — so birth year stays consistent no matter how a client comes in.

Fixed PDF exports failing

We fixed a bug that caused PDF downloads to fail with a generic error.

This affected the client resume export, board meeting minutes export, and the board giving report export. All three now generate and download reliably. No action needed — just try the export again.

Quick-start links on an empty Reports page

The Reports page no longer shows a blank "no reports yet" message when you're just getting started. Instead, it now offers quick links to create each kind of report:

  • Client report, Service report, Event report, and Volunteer reports — each takes you straight to where that report is created.
  • Choosing Client report opens the report builder for you right away.

Once you have reports, the page looks and works exactly as before.

Fixed the form builder failing to load

We fixed a bug that could cause the Create form page to show an "Oops! Something went wrong" error instead of loading the builder.

The page now opens reliably so you can build client, service, event, and feedback forms without interruption. No action is needed on your part — if you hit this error before, just reload and you're good to go.

Offer an event at multiple timeslots

A single event can now run at several timeslots, and you can track who is registered and who showed up for each one.

  • Add multiple timeslots to an event (for example a recurring class or a multi-track program), each with its own time, location, and capacity.
  • When adding an attendee, choose which timeslot they're registering for — or leave them event-wide if timeslots don't apply.
  • Each timeslot shows its own registered count and capacity, and warns you when a slot is full so you can waitlist.
  • Check-in is recorded against the attendee's timeslot, so attended counts are accurate per session.
  • Removing a timeslot keeps its attendees — they simply move back to event-wide rather than being deleted.

Events with a single time keep working exactly as before — timeslots are optional.

Confirm data-sharing consent when linking a funding partner

Linking your organization to a funding partner now asks for your explicit agreement, not just an acknowledgement.

  • When you enter a partner code — during registration or from your settings — you'll now check a box confirming you've read the Funding Partner Data Sharing terms and consent to sharing your organization's anonymized, aggregate data and contact details with that partner.
  • You can't complete the link until the box is checked, and we record the consent (who agreed, and when) so there's a clear, durable record for your organization.

If you don't use a partner code, nothing changes — there's no extra step.

Split a grant's share of each GL account

Grant burn-rate now reflects exactly how much of each account belongs to a grant.

  • When you map a grant to its General Ledger accounts, you can now set a percentage of each account's actuals that counts toward that grant : so a shared account like Salaries can be split (say 60% to one grant, 40% to another) instead of counting in full toward both.
  • You can also set an optional dollar cap per account, for funders who only cover a fixed amount of a category.
  • Existing mappings are unchanged : they continue to count the full account until you set a split.

This makes the By-Grant view and burn-rate accurate for organizations that share cost accounts across multiple grants.

Clearer disclosure of funding partner data sharing

We've made it clearer what linking your organization to a funding partner means for your data.

  • Our Terms of Service now include a dedicated Funding Partner Data Sharing section that spells out exactly what a funding partner can see when your organization is linked: anonymized, aggregate information about your clients and services (like total counts and demographic summaries) and your organization's own contact details. Individual client information — names, contact details, addresses, dates of birth, or case notes — is never shared.
  • When you enter a partner code, either during registration or from your settings, you'll now see this disclosure right next to the code field, with a link to the full terms.

Nothing about how funding partners see your data has changed — this update makes the existing behavior transparent at the moments it matters.

Map grants to GL accounts and scope per-user access

The QuickBooks Budget views can now be set up entirely from the app — no more asking us to wire things up behind the scenes.

A few highlights:

  • Map grants to GL accounts. Open any grant and pick its General Ledger accounts from a searchable list. Once a grant is mapped, its budget-vs-actuals and burn-rate fill in automatically.
  • Jump straight to the fix. On the Budget page's By Grant tab, the "Not mapped to GL accounts" note is now a link that takes you right to that grant's GL accounts.
  • Per-user GL access. Owners and admins can choose exactly which GL accounts each team member can see on the Budget page, so program staff see their program's spending without the org's full financial picture.
  • A cleaner Budget page. We tightened up the spacing and tables so everything is easier to scan, including on smaller screens.

You'll find the new GL accounts section on each grant, and per-user access under Settings → Integrations → QuickBooks.

Inventory gets multi-source funding, eligibility rules, and a deliberate override workflow

The inventory module just got the three pieces that turn "track what's on the shelf" into "report on every dollar of grant compliance, end to end." All three are off by default — flip on fund tracking in Settings → Inventory when you're ready to use them, and your existing inventory keeps working exactly as before until you do.

Declare funding sources for your inventory. A new Funding Sources page lets you record where your inventory dollars come from — grant-backed (linked to any grant you've already created in Grants) or fund-backed (linked to any donor fund). The platform always keeps an auto-created Unrestricted source as the fallback, so you can never accidentally delete the safety net.

Split a receipt across multiple sources. When fund tracking is on, every line on the Receive inventory form gets an Allocations sub-form. Say a 100-case beans receipt came from 60 CDBG dollars and 40 in-kind: declare it that way at receipt time, and from that moment on every can of beans that leaves the shelf reports back to the right source.

Plan purchases ahead with purchase orders. A new Purchase Orders page lets you draft and track POs with line-level fund allocations. When the goods arrive, you can pre-populate a receipt from the PO and edit before finalizing — the receipt is the truth, the PO is intent.

Configure eligibility rules per funding source. On any operator-created source's detail page, an Eligibility rules editor lets you constrain who that source can serve — by income bracket, recipient kind (client / household / partner agency / anonymous), service category, ZIP prefix, or age range. Constraints AND-compose; an empty rule set is unrestricted (everyone is eligible). At distribute time, eligibility rules filter which sources can fund a recipient — so a grant only ever pays for the recipients it's allowed to pay for.

Decide what happens when eligibility fails. Same detail page, a When rules fail selector lets you pick the per-source behavior when eligibility excludes a source from a distribution:

  • Hard block — the distribution fails. Strictest compliance posture.
  • Soft warning (default) — the operator sees a confronted alert at distribute time with the exact rules that excluded the source and the recipient's context. To proceed, the operator supplies a written override reason that gets logged to the audit trail. The override decision is deliberate, not a click-through.
  • Auto fallback — the unrestricted source pays automatically, no operator prompt. Useful for "fall back to general dollars" policies where eligibility is a preference, not a hard rule.

The override audit trail. Every overridden distribution writes an override eligibility activity event recording which source was overridden, which rules failed, the operator's reason, and the recipient context — visible in Settings → Activity. Auditors get the exact "who decided to override this rule, when, why" trail they ask for.

What stays the same. If you don't turn on fund tracking, none of this appears in your inventory UI. Receive and distribute work exactly as they did before — every receipt lands on the unrestricted source, every distribution consumes from there, no allocations field, no eligibility rules, no override prompt. The feature is additive at every layer; the off state is the prior state.

Pick your free trial when you're ready

Your 60-day free trial now starts when you decide it should.

  • Trial is a choice, not a default. When you create an organization, you'll see four options side by side — Basic, Pro, Premium, and Free Trial. Pick Free Trial and the 60-day clock starts then; pick a paid plan and you skip the trial entirely. No credit card required for the trial.
  • A countdown that stays out of your way. The old full-width trial banner is gone. In its place, a small pill next to the notification bell shows the days left at a glance — it turns red in the final week, and clicking it takes you straight to plan selection.
  • Inactivity check. If no one on your team opens HumanixOS for 10 or more days during the trial, the trial ends early and you'll need to choose a plan to continue. We email the account owner a few days ahead so it's never a surprise — and simply logging back in resets the clock.

Changelog launched

We've launched a public changelog so you can keep up with what's new in HumanixOS. From now on, when we ship a notable feature or fix, we'll post it here.

Automated event reminders and scan-to-check-in

Stop manually batching reminder emails the morning of an event.

  • Configurable reminders. On any event, open the new Reminders tab and pick a channel (email or SMS), an offset relative to the event start, and a template. We send to every registered attendee at the right time, with consent handled automatically (a STOP on marketing won't suppress an event reminder).
  • Per-attendee QR codes. Reminder templates can include a {{check_in_qr}} or {{check_in_url}} merge key — each attendee gets a unique code with no name lookup needed at the door.
  • Scan-to-check-in. Open Check in on the event detail page, point your phone's camera at an attendee's QR, and they're marked attended. Re-scans show "already checked in" instead of double-marking.
  • Three-purpose consent. Email and SMS consent now splits into transactional, event alerts, and promotional. STOP on a promotional message stops promotional only — registrants keep getting the reminder for the event they actually signed up for. STOPALL stops everything.

Available with the existing Email and SMS plans.

Multi-session events and two-way Google Calendar sync

Events get a few much-asked-for upgrades.

  • Define your own event types. No more being stuck with the six built-in categories. Add "Mentoring Session," "Pitch Scrub," "Office Hours," whatever you actually run. Edit names, recolor, archive — all from Settings → Event types. The picker on every event lets you add a new type inline if you don't want to switch screens.
  • Sessions inside an event. Multi-day or multi-track events — galas, festivals, summit days — can now be split into sessions. Each session has its own time, location, capacity, and (soon) attendance. Add them from the new Sessions tab on any event detail page.
  • Custom fields surface in the form builder. Add a custom field to an event (a "venture stage" dropdown, an allergy text box) and it now appears as a draggable question in the event's registration, check-in, or survey form — no more re-creating fields you already defined.
  • Pull events from Google Calendar. Connect Google Calendar in Settings → Integrations, then open the new Two-way sync screen to set title patterns. Anything matching ("initial meeting", "intake", whatever you choose) gets imported automatically. Events you push out from HumanixOS aren't re-imported.
  • Post-event surveys. A new Event Survey form type lets you collect feedback after an event without re-purposing your registration form. Wire it up to a reminder for an automatic post-event invite.

Available everywhere events live in HumanixOS.

Funds and Campaigns get their own sidebar entries — and a new way to handle "preferred" donations

A few finance-related changes you'll see right away.

Funds and Campaigns now live in the Finance sidebar. Both used to be tucked inside Donors. Now they're top-level entries under Finance, alongside Donors, Grants, and Budget. URLs are unchanged — only the navigation moved.

Allocate a grant across multiple funds. Open any grant detail page and you'll find a new Fund Allocations section. Split an awarded grant across one or more funds with explicit dollar amounts. If your allocations don't add up to the awarded total, you'll see a friendly heads-up — but you can still save and adjust later.

Link a campaign to multiple funds. When editing a campaign, you can now associate it with as many funds as you'd like. Useful for year-end appeals or any campaign that legitimately raises dollars across more than one program.

Donation pages can now accept a "preferred but unrestricted" gift. A donor who wants to support a specific program with their gift legally restricts those dollars to that program — which is how money gets stranded (e.g. the leftover-from-a-disaster-appeal problem). On any donation form, you can now flip on "Allow donor to express fund preference (non-binding)". With that on:

  • The form's existing fund becomes the legal unrestricted bucket the gift is applied to.
  • A "preferred area" dropdown appears on the public page so the donor can express where they'd like the money to go.
  • A short disclaimer makes the legal status clear.

The disclaimer copy ships as a placeholder marked for legal review — please have your legal counsel sign off on the wording before turning the toggle on for any of your forms.

Form follow-up emails and delayed sequences

Configure follow-up communications directly on a form — no workflow tool required.

  • Thank-you on submit. Send an email or SMS the moment someone submits, rendering an org-defined template against the submitted values.
  • Delayed steps. Add follow-ups that fire minutes, hours, or days later. Build the classic four-step intake nurture in one place: confirmation now, +2 weeks, +3 weeks, +4 weeks.
  • Per-step recipient resolution. Each step picks which submitted field carries the recipient's email or phone, so you can target the right address even when a form has multiple contact people.
  • Consent gating. Every send goes through the unified consent layer — opted-out recipients are skipped and logged, never sent silently.

Open the new Follow-ups page on any form to configure. Conditional branching ("only send to mentors", "skip if role = X") is supported by the underlying engine; the visual builder for it ships in a follow-up release.

AI extraction from grant documents

Upload an executed grant agreement on the grant detail page and we'll suggest the financial structure for you. The new AI extraction panel reads the document and pulls out:

  • Fund allocations. Suggested splits of the awarded amount across your existing funds, with a smart match against your fund list. Mismatched names are flagged so you can map them manually rather than disappearing silently.
  • Line-item flexibility. The percent of the budget you're allowed to shift between buckets without donor permission, plus any caveats from the agreement.
  • Reporting deadlines. Each scheduled report with its due date and required artifacts.

Extraction is suggestion, not authority — you review, edit, and confirm before anything writes to the grant. Each section applies independently, so you can accept the deadlines and tweak the funds.

After you confirm the deadlines, click Sync to calendar and they'll land in your connected Google or Microsoft calendar alongside the existing grant key dates. As reminders change in HumanixOS, the calendar events update too.

Available on the grant detail page for any user with the Edit grants permission.

QuickBooks integration & new Finance section

You can now connect your QuickBooks Online account to HumanixOS and see your chart of accounts and grant burn-rate against actuals — no more re-keying numbers between systems.

We've also reorganized the sidebar so anything finance-related lives under a new Finance group: Donors, Grants, and the new Budget page are all in one place.

A few highlights:

  • Read-only by design. HumanixOS only reads from QuickBooks; we never create or modify your accounting records.
  • Grant burn-rate. Map your grants to GL accounts once, then watch budget vs. actuals on the Budget page.
  • Per-user GL access. Owners and admins can grant program managers visibility into specific GL accounts so they see their program's spending without seeing the org's full P&L.
  • Pull on demand. Open a finance page and you see fresh numbers — no waiting on background syncs.

Owners and admins can connect QuickBooks under Settings → Integrations → QuickBooks.