August 2026

Week of August 31, 20266 updates

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.

Week of August 24, 202631 updates

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.

Week of August 17, 202626 updates

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.

Week of August 10, 20261 update

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.

Week of August 3, 202632 updates

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.

All months