Skip to main content

PBJ CRM — Changelog

Current release: 1.76.0 (August 2026)

1.76.0 — 29 August 2026

All nine screens that were still only in the website admin now open in the CRM. Setup checklist, Merge duplicates, Imports, Sync review, Reports, Add-ons, Apps & Assistants, Shortcodes and Explainers each have a home under Settings, and the PBJ CRM page in your website admin no longer lists them – it points at the CRM instead. Nothing was moved out of your reach: every old address still works, so bookmarks and links keep going where they always went.

Two things stay in the website admin on purpose, and both say so on screen. Choosing a file to import is a file upload, which the CRM’s settings have no way to carry, so the import wizard opens there and the history of every import that has run is in the CRM. And your assistant address is never printed on the Apps & Assistants screen, because it is a web address with a key inside it – yours is on My settings, behind a button you press yourself.

Also fixed: the note at the bottom of Settings appeared once more every time you opened the screen. A request still in flight from a previous visit was painting into the current one.

1.75.0 — 29 August 2026

Every refusal explains itself. The three shared permission checks sitting behind 39 routes were still answering “Only a CRM owner or a site administrator can do that.” – a level, with nobody named to ask and nothing offered instead. They now build the same refusal card the rest of the suite has used since 1.66.0: what the act is, who on your team can do it, and what you can do right now. Nobody’s access changes; only the wording of a refusal does. The check for somebody with no CRM access at all is deliberately left plain – there is no level above them to name and nothing inside the CRM to offer them.

1.74.0 — 29 August 2026

  • “Who can do what” is a screen now. Settings carries a new page listing every act in the suite against the four levels – employee, manager, owner and administrator – with a plain-English note on each and where the setting lives. It answers the question that used to be a phone call: can this person do that?
  • Everybody gets an answer, sized to them. An owner or an administrator sees the whole table and can filter it to Money, to People, lists and records, or to Mail and tickets. A manager sees the same rows with one column: their own. An employee gets one sentence about their level plus a card of what they can and cannot do, money first.
  • On a phone the table becomes one card per level, money first, because a wide table is no use on a small screen.
  • Every row says where its answer came from. A row marked Read names the permission the code actually requires; a row marked Inferred does not, and says so rather than looking equally certain. Rows the code has no answer for at all – recording a refund, writing off a debt – are listed under “Not settled yet” instead of being left blank, because a blank cell reads as “no”.
  • The screen shows you a real refusal. Not an illustration: it builds one for something you personally cannot do, naming the level, naming somebody here who holds it, and offering what you can do instead.
  • Add-ons contribute their own rows, so the table grows as the suite does rather than being a list somebody has to remember to update. The help desk and invoicing supply theirs in this release.

1.73.0 — 29 August 2026

  • The website admin is one menu with five screens. PBJ Suite holds Connections (your sign-ins and mailboxes), Money (payment keys), Mail (how email leaves, who must never be written to, and how long stored mail is kept), Danger, and Licences. Everything on those five screens is something that can spend money, break a connection, change where your mail comes from, or destroy data. Everything else is in the CRM with the rest of your settings.
  • The CRM’s nine-tab bar is retired. The page now says plainly that your settings moved into the CRM, links you to them, and lists by name the handful of screens that still live in the website admin. No screen was removed and no address stopped working – a bookmark, a link inside another screen, and the return journey baked into a live Google or Microsoft sign-in all still land where they should.
  • Every screen says where the rest went. Money links to getting paid in the CRM, Mail links to the shared inbox, and Danger carries a “Not here, on purpose” card naming the destructive things that are recoverable and are therefore in the product instead.
  • The two settings that cannot be undone are quarantined on Danger, behind a confirmation that asks you to type the name of this site, and both are written into the settings change log with your username. They are: whether deleting the plugin also deletes every record, and whether the help desk takes its staff list from this CRM. The second was a setting that had quietly disappeared some releases ago while the help text on the old page went on describing it; it is back, it is on, and the screen says in plain words what turning it off would cost.
  • An add-on can contribute a row to one of the five screens rather than having a menu of its own, and can say what its licence is doing so the Licences screen can show it. The CRM decides the screen, the heading and the order; the add-on supplies only its own fields.
  • Two smaller fixes worth naming: the list of everything this website signs in to now describes the screen it is actually on, instead of listing accounts whose forms had moved elsewhere; and the Licences screen names each part of the suite the way you bought it rather than the way the product labels it.

1.72.0 — 29 August 2026

  • Add-on settings can now carry formatted text. A new kind of settings field understands bold, italic and lists, so an add-on whose wording is formatted – a saved reply, for example – can be edited in the CRM instead of only in the website admin. Editing one here keeps exactly the formatting it always had.
  • Add-ons can ask this CRM what kinds of setting it is able to draw, so an add-on built against a newer CRM keeps its website-admin link on an older one instead of showing you half a screen.
  • Nothing about what may cross to the front end changed. Anything that can break a connection or change where your mail comes from – a mailbox, a connected account, a payment key, a password – still stays in the website admin, refused by name with the reason printed.

1.71.0 — 29 August 2026

  • Who sees what, widened from a word to a word-plus-exceptions. The site default (Scoped or Open) now carries per-record-type exceptions. Anything not listed follows the site default, so an upgrade changes nothing: no exceptions are stored until you choose one. Contacts, Companies, Tasks and Deals can each be set separately.
  • New: the settings change log. Who changed which setting, when, and from what to what — written automatically whenever settings are saved in the portal. Settings > Change log, owner rung.
  • A change to anything held in your website admin — a payment key, a connected account, a mailbox — is recorded as having changed, never with its value. Secrets stay write-only.
  • Ticket, visit and invoice exceptions are not offered yet: those record types join in their own add-on updates.

1.70.0 — 29 August 2026

  • Access Ladder Phase 26 part A – the workspace settings move into the CRM. Settings is now one list in one order: Who sees what, Records & housekeeping, Notifications & marketing, Add-on settings, Theming, Merge duplicates, Imports, Sync review, Setup checklist, Site & connections.
  • The CRM now declares its own settings through the same schema seam it gives every add-on, rather than growing a second settings screen – so there is one settings renderer on the site and the CRM is the first thing using its own contract.
  • Crossed over as editable fields: who sees which records, custom fields, deal stages, how long the recycle bin keeps things, file limits, map links, the phone home screen, the portal and login pages, the site notification defaults for all eight notices, the daily task reminder, the postal footer and the marketing status imported people start at.
  • Deliberately NOT crossed, and each says so on screen: how fast marketing email goes out (an administrator’s setting), who marketing email comes from (it belongs to the connected account that sends it), and delete-everything-on-uninstall (the one irreversible switch, which stays in the website admin).
  • Nothing changed about WHO may change any of this – every one of these was already the owner’s, and the website admin forms all still work and write the same place.
  • Custom fields and deal stages now follow one set of rules whichever screen you edit them on, and an existing deal stage keeps its id for ever so no deal is orphaned by a rename.
  • No database change.

1.69.0 — 29 August 2026

  • Access Ladder Phase 25 – the #/group screen. One screen per group a manager runs: the group’s notification defaults, who is in it, which ticket categories land there, and who picks up unclaimed work.
  • Every read and every write re-checks the group by id, so a manager can only ever reach a group they actually run.
  • Membership saves through the one group writer, with the per-person ceiling re-checked row by row: employees and managers, never owners, and never somebody above you.
  • NEW – a group’s default assignee: nobody, round robin, or one named person, and anybody marked away is skipped.
  • NEW – modules can declare their own per-group settings; PBJ Helpdesk uses it to surface which ticket categories land in a group.
  • Services contract 21.

1.68.0 — 29 August 2026

  • My settings finishes: a notification choice is now one answer per way of telling you (in app, email, browser) instead of one answer for all three, and quiet hours hold everything outside your working day until the morning.
  • Overdue warnings are never held. A module says which of its notices are urgent; the help desk marks its two running-late warnings.
  • Your working days, working hours and Away live on your staff profile, so the people who need them can read them: auto-assign skips somebody who is away and says why.
  • Light, dark or match my device, row height, and where you land when you sign in are yours. The site’s own look stays the owner’s — choosing Dark gets the dark half of the palette they picked, not a different one.
  • A preference stored for a plugin that happens to be switched off is left alone rather than quietly deleted.

1.67.1 — 29 August 2026

  • FIXED: My settings was missing a row. The My helpdesk card drew “My canned replies” and not “My working preferences” — canvas 5c draws both, and the phase’s own list of what to collect names the helpdesk working preferences by name. The card was checked for being in the right PLACE and not for having the right controls in it.
  • Both rows open the helpdesk’s own personal screen, which is where they already lived.
  • ⚠️ Written down rather than quietly worked around: that screen edits notification choices through the SAME per-person store the notifications card at the top of My settings writes. Two editors for one store is the duplication this suite keeps removing, so it is a candidate for retirement once #/me is the one place — but nothing is removed here, because this phase collects what exists and a module’s screen is not the CRM’s to delete.
  • ⚠️ Also written down: the CRM should not know the `/profile` segment of a module’s route. The correct seam is the helpdesk DECLARING a personal entry point the way it already declares a section; that is a module-side change and this phase is CRM-only. One place in the code knows it, and it says so.
  • No schema change; DB stays 23.

1.67.0 — 28 August 2026

  • NEW SCREEN: My settings at `#/me` — the one screen a person owns (Access Ladder Phase 24, part A). Everyone gets it, at employee level.
  • It COLLECTS what already existed. Until now a person’s own settings were spread across four places — the account menu, their own record, the help desk and Apps & Assistants — and the problem was never that any of them were wrong, it was that there was no screen. Nothing here is a new setting and nothing here is a new store: every value is still written by the thing that owns it.
  • Your eight notification choices now say WHERE THE ANSWER CAME FROM — yours, your group’s, the site’s, or nothing set anywhere. “I turned that off” and “nobody ever set it” stop being the same answer on screen.
  • One line telling you what your level means, read off the same declaration the refusal messages use — so the sentence on your settings screen and the sentence in a refusal can never drift apart.
  • Also here: your screen layout memory with a Reset layout button, your calendar feed, your assistant connection, your own phone line, your own canned replies, the vault, mobile view and the how-it-works boxes.
  • ⛔ Your calendar link and your assistant address are NOT fetched when the screen opens, and that is deliberate: asking for either MINTS one the first time. Opening My settings must not quietly create a live calendar feed for every member of staff who looks at it, so the address arrives when you press Show my link.
  • ⛔ MY phone line means yours. The row reports a connection in YOUR name; the shared business line is the owner’s and is refused here by name, which is the design.
  • A row for something this site has not got is not drawn at all rather than greyed out. A module that IS installed with nothing connected for you keeps its row, because that row is the only thing that says a connection is possible.
  • “My settings” is back in the account menu. It was removed because it pointed at the SITE’s settings; it now points at a screen that is actually yours.
  • ⚠️ Quiet hours, one choice per channel, working hours, working days, away, light-versus-dark, row height and the landing screen are part B and are NAMED on the screen rather than left out.
  • No schema change; DB stays 23.

1.66.0 — 28 August 2026

  • THE OWNER CAN NOW FINISH SETTING UP THEIR OWN CRM. Imports and sync review moved from the administrator bar to the OWNER rung (Access Ladder 23.1). The person the product calls Owner could not import a contact list on day one; that was the complaint the settings work started from.
  • The move is applied to the ROUTE, the admin screen and the handler together — eleven guards across the imports and sync traits plus their REST permission callbacks. A route that opens while its handler still refuses is worse than either.
  • Deleting a campaign moved to the OWNER rung too, behind a typed confirmation: the campaign name has to be typed back exactly (23.2). Deleting one takes the record of who it went to with it, which is why it is not a manager’s.
  • NEW class PBJ_CRM_Refusal, and every refusal in the suite now names the rung, names somebody who actually holds it, and offers the thing this person CAN do (23.3) — “An owner imports a contact list. You can add people one at a time… Ask Mindy to run the import.” The old “You do not have permission” dead ends are gone.
  • The rung map behind it is a DECLARATION, deliberately: executing a permission callback out of context returns a confident wrong answer, so the rung is declared once and read by the refusal copy, by the rung sentence coming to #/me, and by the matrix screen after that.
  • PBJ_CRM_Services contract 18 -> 19: refusal(), refusal_message() and holds_rung() are the module half. If two modules would write the same refusal, the line is the core’s.
  • NOT MOVED, and verified by grep rather than assumed (23.5): connected accounts, mailboxes, delivery, the suppression list and every payment credential still refuse below administrator. Only their wording changed.
  • No schema change; DB stays 23.

1.65.2 — 28 August 2026

  • Translation template regenerated. No code change.

1.65.1 — 28 August 2026

  • An action a module marks as primary is now THE primary button and can never fall into the More menu. Below 782px the ticket’s Close had been pushed into the overflow by Hand over and Convert.

1.65.0 — 28 August 2026

  • Agenda (was “Needs me”): the day is grouped by what the work is waiting on — Late, Due today, New work, Waiting response, Backlog.
  • Focused works one state at a time; Board shows all five side by side and a column head opens that state in Focused.
  • “My day” moved to the breadcrumb, with an employee picker for managers; the Focused/Board switch sits opposite it.
  • The phone gets the same five states as a scrolling chip row. Board is not offered there.
  • The phone’s separate Agenda screen is gone: it grouped the same work a third way. ‘#/m/agenda’ now opens the one Agenda, and the calendar-subscribe control moved with it.
  • Cards on the Agenda are the full card, not the compact management row.
  • “Needs attention” and “Day at a glance” are removed – both duplicated what the five states and the tab counts now say.

1.64.2 — 29 August 2026

  • The portal notices when the server has moved past the build the browser loaded, and offers a reload. It rides the header poll, so there is no new request and no new timer — and it never reloads on its own, because the composer may be holding a draft nobody has sent.
  • A field may declare who else reads its value (`audience: internal|customer`); the core supplies the wording and the colour, so two modules cannot word the same warning differently.
  • The customer chooser reads as one line — label, control, then the promise — and its + takes the accent.

1.64.1 — 29 August 2026

  • The CRM’s customer lookup now resolves a name from an id, so a module that only has an id no longer writes a placeholder where the customer’s name belongs.
  • Every conversation thread opens newest first — tickets, visits, tasks and the unified inbox reading pane.
  • A work record’s Details card is drawn as a horizontal bar above the reading pane instead of a tall column beside it.
  • Form sections on plain forms put their label in a left rail; a choice of three or more answers is drawn as a row of pills; new “what the customer sees” callout element.

1.64.0 — 28 August 2026

  • Convert now asks what should happen to the record you converted from. It used to make the new thing and leave the old one standing, so the same job sat in two places and both kept counting as work.
  • The answer takes effect when the new record is saved, not when you press Convert. Convert opens a blank form with the customer filled in — closing the source at that moment would close a ticket for a visit nobody ever books. Leave the form without saving and the record you came from is untouched.
  • “Leave it open” is always offered. Sometimes one job really is splitting in two.
  • Each kind of work names its own answer, because “Cancel this visit” is not “Close this ticket” and only the module knows which is honest.

1.63.21 — 28 August 2026

A field-test day: the suite was used live and fixed as it was used. Everything below landed between 1.62.0 and 1.63.21.

  • An unnamed line item no longer breaks a record. An invoice carrying a line with no description used to take the whole screen down to “did not load”. A row is shown as long as it has something to show.
  • A save button that refuses now says so where you pressed it. The message used to be written to the top of the form while the button sits in the header, so on a long page it landed below the fold and the button looked dead.
  • The customer finder opens the right question. A second customer field on the same sheet could open its own picker over the first one — a people-only list headed “Choose a customer”, with the real control frozen behind it. Each field now names its own question (“Choose a recipient”), and only the field being asked about opens itself.
  • Searching for people at a business really is scoped to that business instead of listing everybody.
  • A small Change button beside a customer’s name on work records, with “Just <business>” as a real answer when a business has nobody named at it.
  • Details cards read one fact per line, label left, value right, stacking on a phone; machine-shaped values (references, timestamps, phone numbers) are set in a monospaced tone.
  • Conversations and activity feeds can be read newest-first, with a subtle toggle showing which way you are reading.
  • Photos in a text message appear as photos.
  • The Inbox is what is waiting on you. Work you have already answered stands in Needs me; a customer reply brings it back. A task stays in the Inbox until you tick its first checklist item.
  • Accessibility: small icon-style buttons now announce what they change rather than just their label.

1.62.0 — 26 August 2026

  • The CRM builds a record’s message channels itself. Every module used to assemble the same bar out of the same CRM answer, and each copy could miss something — dispatch’s never handled the phone channel, so a visit with a number on file offered no way to log a call. A module now says what it can do; the CRM decides which channels exist, their order and labels, which carry a subject, and which are drawn struck through.
  • “Log a call” is a first-class channel — a record of a conversation, with nothing sent.
  • One Customer card and one Details card on every work item, built by the CRM from the fields a module already declares. A fact you can act on belongs to the customer; a fact you can edit belongs to the item.
  • Every work item has a Thread, derived from the record’s own timeline rather than declared separately.
  • Composer: it closes again — its own control, Escape, or a click outside. The sending line sits inline on the subject row, an AUTOFILLED badge marks a subject the thread wrote, Cc and Bcc appear only where the channel can carry them, and Send shows the Cmd/Ctrl-Return shortcut, which now works.
  • A search-first field waits for you to type instead of opening with the whole list printed underneath it.
  • Record navigation reads Events again.

1.61.0 — 26 August 2026

  • A work item’s facts panel is a set of controls, not text. Click a fact, change it, and blur or Enter saves it; Esc reverts; there is no Save button on the page. A failed save keeps your value on screen with Retry rather than reverting silently.
  • Relational fields search existing records first and never create one by accident.
  • Work records gained a three-column shape — facts, conversation, history — that merges to one column on a narrow screen. Contact and business profiles are deliberately untouched.

1.60.0 — 25 August 2026

  • Completed the shared component surfaces that current and future CRM modules build on.
  • Retired the item reader’s properties aside, which was still being built and painted into as a detached node behind six unreachable stylesheet rules.
  • The record hero’s two overflow lists became one derivation, so the More sheet is exactly what the visible row did not take.
  • Stopped the daily queue sending an edit destination identical to the row’s own link.

1.59.0 — 24 August 2026

  • Contact and business records now share the guide-matched CRM record anatomy while retaining their existing routes, writes and module tabs.
  • Open Work is now CRM-owned and accepts scoped, normalized work from installed modules without giving modules control of card or reader markup.
  • Compact item rows remain 46 pixels high and shared workspaces can shrink to a 160-pixel stream while preserving the core icon, type, title and right-edge selection control.
  • Contact photo attachments now use the existing private file store, and the Calendar uses an additive event-provider registry while remaining available only when Dispatch is active.

1.58.0 — 24 August 2026

  • One compact card and reader design now covers Inbox, daily work, tasks, people, businesses and ordinary items supplied by installed modules.
  • Desktop lists and reading panes resize and scroll independently, the saved width follows each signed-in user, and narrow screens return to one page flow.
  • Selection and contextual actions live in the breadcrumb footer; composers, explainers, checklists and form inputs now use CRM-owned UI primitives.
  • The shared Calendar registry now includes future tasks, past tickets and invoice milestones, while contact and customer labels prefer real names over technical numbers.

1.57.0 — 22 August 2026

New: five tabs across the top instead of nine, and the second row of pills is gone — Work, Customers, Field, Money and Insight. Everything that was there is still there. It is grouped by what you are trying to do rather than by which part of the system it came out of.

New: a rail down the left-hand side of every screen, 206 pixels wide, holding the places you move between most, so you are not hunting through a menu for them.

New: a bar fixed along the bottom of the window, 34 pixels tall, carrying a breadcrumb of where you are, a Back button, and a pager for stepping from one record straight to the next without going back to the list first.

New: a jump box. Press Cmd+K (Ctrl+K on Windows) anywhere and start typing where you want to go.

New: a Create menu in the header — start a new anything from one place.

New: an account menu at the top right. Settings has moved into it.

New: a Midnight colour preset, and a new layer of colour settings sitting underneath the presets, so the new navigation takes its colours from the theme you already chose instead of inventing its own.

New: a Theming screen on the front end, for owners and managers — change how the portal looks without going into the website admin at all.

New: contacts are one list. Businesses and people sit together, small chips mark which is which, tick boxes and a bar let you do one thing to several at once, and merging two records now shows you a review screen first.

New: a merge can be undone for up to 30 days. A merge now leaves a record of what was merged, and a suggestion you dismiss for a business stays dismissed for good rather than coming back next week.

New: a settings seam. Another PBJ module can now describe its settings to the CRM as plain data, and the CRM draws them itself inside the portal — no separate admin screen, no second look and feel. Twelve of the sixteen module settings panels now render inside the portal instead of sending you out to the website admin.

New: an optional service worker for the app shell, off unless you turn it on. It caches the frame of the app so it comes back faster. It never caches your data.

Fixed: the keyboard shortcuts. There were three separate causes, all independent of one another, and all three are fixed.

Fixed: the page was 28 pixels taller than the window. Padding on the canvas was doing it, which let content slide underneath the header when you scrolled.

Fixed: four module panels had no way to close them. They all have one now.

Database version 23.

1.56.0 — 20 August 2026

One rule now decides what the bell counts, everywhere. Something is on your bell when it is due today or earlier, when it is open with no due date, or when it is sitting in an inbox — unread mail, texts and calls still in the inbox folder. A visit booked for Friday is not on the bell on Tuesday; it appears on its own day. Work that was due yesterday and is still open stays on the bell, because a job going quiet is worse than a badge that nags.

The bell, the Inbox screen and the Notifications menu now show the same number. They are worked out in one place, so they cannot drift apart. An open ticket counts once — “waiting on a reply” is shown on the row, never added to it.

Changed: the Notifications menu row for tasks is now “Tasks needing you”, and it counts what the bell counts. It used to count every open task including ones due weeks away, which is why it never matched the badge.

Fixed: on a very short Inbox list, an item could still appear twice. The duplicate was being taken out after the list had been cut short, so the row that should have hidden it had already been trimmed off the end. It is done before the cut now.

New: dismiss a duplicate suggestion. When the finder offers two records that are genuinely two different people, you can remove that suggestion and it stays gone — and a “show suggestions” control brings the dismissed ones back if you change your mind. Nothing about either record is changed and nothing is merged; it is a note about the pair.

New: tick several records and act on all of them at once — merge two, delete (to the recycle bin), file them under a business, add them to a ticket, hide or unhide. Every record is checked individually, so anything you are not allowed to change is skipped and named rather than silently done or silently dropped. A business is never filed under another business, and more than 500 at a time is refused outright rather than quietly doing the first 500.

New: sort people, businesses and your team by name, phone or email, from the same “in what order” box you already use. The sorting is done by the server, so it covers the whole list and not just the page you are looking at.

New: a Merge tab, sitting beside People, Businesses and Team. Joining two records that are the same person is now somewhere you can walk to, instead of something buried in Setup. It takes you through it a field at a time — pick which record stays, then decide each line — and it only asks about the lines that actually have something in them.

New: a “create +” button next to the search box on desktop. It offers the same things the phone’s create screen does: a person, a business, a task, a deal, and whatever the installed add-ons offer. It is deliberately desktop-only, because the phone already has its own.

Fixed: phone numbers on a contact or business page ignored your colour theme. They came out in the browser’s plain grey, while the email address and website beside them looked right. The phone number became a button when click-to-call arrived, and the colour rule had only ever applied to links. This looked like a phone add-on problem and never was.

Fixed: the People search box said it searched by company and did not. It does now — typing a firm’s name finds the people who work there, whether they are filed under it directly or linked to it as one of several businesses. Nothing else about the search changed and the list is no slower.

Fixed: a refusal that arrived too late and in the wrong words. A manager could see the Merge button on a selection, and merging is a CRM-owner job — so the refusal only arrived once the merge was already under way, in wording meant for a developer. Anything you are not allowed to do is now refused straight away, in plain English, with nothing changed. Deleting a selection behaves the same way.

Database version 22: one new table remembering dismissed duplicate suggestions, and the missing index on the phone column so sorting a big customer book by phone is fast. Nothing existing is changed and no data is rewritten.

1.55.1 — 19 August 2026

Fixed: the business/person split could not be reached on a record that was already a business. The split wizard only opened when turning a person into a business — so on an imported record already marked as a business, the exact case the split was built for, the only control was unticking “This is a business”, which is the plain turn-back-into-a-person switch and rightly refuses while invoices are attached. Unticking now opens the same two-way chooser as ticking: turn it back into a person, or split it into a business and a person. The business keeps the record, and everything attached to it stays exactly where it is.

Changed: when turning a business back into a person is refused because records are still attached, the refusal now also points you at Split — the way to pull the person out without moving anything off the business. Portal script only; no database change.

1.55.0 — 19 August 2026

The biggest release since the portal itself: guided imports, the business/person split, and one card design across everything.

  • Imports are guided and reviewable. When an import matches somebody already in your CRM it no longer changes them silently — each match waits for you, and you approve it person by person, field by field. Every run has a viewable history showing exactly what it created, updated, held or blocked.
  • Businesses are never changed by an import or by sync. Not by Google, not by Square, not by a CSV. A business record only changes when a person changes it.
  • Split one record into a business and a person. Many imported contacts carry both. The split walks each detail — the business keeps it, both get it, or it moves to the person — and each connected service then follows the right half, so the next import updates the right record.
  • One card design everywhere. People, businesses, tickets, tasks, visits, invoices, the Inbox and the phone screens all draw the same card: an icon for what it is, a colour for who it concerns (red — a client is waiting; yellow — open internal work; green — done), the type colour on the left edge and how-late on the right. A legend on the Setup screen explains it all, in your own theme colours.
  • Completing a task is always a button. Checkboxes only ever mean checklist lines; a task card shows its 3/5 progress and asks before finishing with lines still open.
  • The timeline reads the way it should. The area is called Activity; Everything shows everything; Communication, Work and Info are the filters, each with its own sub-filters.
  • The back button really goes back to the screen you were on — never somewhere random, never out of the site.
  • Designed campaign emails. Headings, buttons and pictures with a preview — plain text stays the standard, HTML is a deliberate switch. The builder and the drip-pace setting (minutes between campaign emails) come with PBJ Helpdesk.
  • The forward calendar now comes with PBJ Dispatch & Appointments. With it active nothing changes; a CRM running alone keeps history, tasks and today’s queue.
  • Fixed: admin notice text was nearly invisible on dark admin themes, and the timeline’s Invoices / Visits / Vault filters always came back empty.

1.54.0 — 19 August 2026

One list for everything that needs you. The notification number, the Notifications menu and the unified Inbox now all come from the same de-duplicated list, so a ticket that is waiting on a reply counts once — never twice — and the number on the bell always matches what the Inbox shows. The Inbox also loads in one request now. On people and business screens the tab group is now called Activity, the Timeline tab shows everything, and adding a note has its own block between Add Work and the timeline.

1.53.0 — 18 August 2026

The Inbox now covers everything the notification count counts. Your open tickets and tasks list below the items waiting on you, on desktop and on the phone’s Agenda Inbox tab. Optional desktop notifications can be turned on from the Notifications menu, and a waiting-on-a-reply dot marks Today, Agenda and Triage rows.

The note box sits above Add Work on every profile, Add Work can raise an invoice for people with invoice access, the phone’s New task form takes a checklist, Note & photos accepts several photos, the calendar-subscribe control is a small icon, the logo goes to the phone home on a phone, and the desktop menu button no longer leaks into the phone view. No database change.

1.52.0 — 18 August 2026

One Inbox for everything that needs your attention. A new Inbox screen gathers new emails, texts, calls and voicemail, and tickets waiting on a reply from every installed module, and the top bar’s separate counters are now one Notifications menu. On a phone, the search icon sits in the top bar, the notification count opens the Inbox, and the Agenda has two tabs — Inbox and Timeline.

Profile screens are regrouped into Activity Timeline, Communication, Work and Info, newest first, and communication history now appears in the Everything timeline. Managers and owners get a Team list under Companies & People showing each agent with their WordPress user ID. The Today screen gains a needs-attention side panel, and the admin theme switch is marked as a Beta feature. Services contract 14; no database change.

1.51.0 — 18 August 2026

A sync correctness fix. The inbound-sync cursor no longer advances past a record that failed to persist, so nothing can be silently skipped. No database change.

1.50.0 — 18 August 2026

Faster lists on big databases. Additive sort indexes on people, businesses and deals remove a filesort from the everyday list screens, and staff lookups are narrowed to actual role-holders. Database version 20 (additive only — nothing to redo).

1.49.0 — 17 August 2026

Mobile Create and Find now show only actions the signed-in person may use. Queue and Triage keep full task checklists with inline editing, while checklist history stays on the customer record rather than an agent’s Everything feed.

Task cards have one completion checkbox and a separate Select control. Tickets and visits may carry a separate resolution/completion date plus safe View or Create invoice actions supplied by their owning modules. Services contract 13; no database change.

1.48.1 — 17 August 2026

Communication providers can now use visible People and Businesses phone choices, including second phone numbers. Clicking a CRM phone may offer Text message, Phone call or Cancel without making the CRM depend on a specific provider. Text messages and Calls & voicemail are first-class Communication sections. Services contract 12; no database change.

1.48.0 — 17 August 2026

The CRM now owns shared and personal communication connections, immutable inbound origins and append-only actual-channel events. Replies can default to email, text or phone from the way the work arrived; when there is no usable origin the agent must choose.

Apps & Assistants gained the protected RingCentral installer and provider-neutral seams used by tickets, invoices and dispatch. Database 19 adds three new tables without altering existing ones.

1.46.0 — 16 August 2026

Admin is simpler and the controls now live where their names say they do. The empty Tasks, Tickets and Invoices & Orders setup tabs are gone. Viewing rules are gathered under Settings → Permissions, and legacy links still lead to the right replacement screen.

Reports are now one searchable, module-driven screen. Tickets and invoices appear when their add-ons are installed, future add-ons can register their own reports, and an absent module leaves no empty report behind.

Admin and portal tabs now switch to the same nested hamburger navigation at the same screen width, including subtabs. The old phone message about Desktop being remembered has been removed. Services contract 9; no database change.

1.45.0 — 16 August 2026

The chosen suite theme now owns the whole WordPress admin when admin theming is enabled. Core pages and installed plugins use the same surfaces, stripes, notices, selections, figures and menu highlights, instead of keeping white panels or WordPress blue underneath a painted cover.

Named palettes are complete light-and-dark looks. Choosing one warns that it will clear fine-tuned colours, then it takes over all theme tokens. The palettes are more distinct; Florida remains Florida and Miami is a separate neon option; Notebook is handwritten paper; Rustic is a light whiteboard or dark chalkboard. Preview buttons, colour dots and the Handwritten and Marker font choices now show and apply their real defaults.

Everything now means everything. A staff profile can include its tasks, current tickets, invoices, visits and safe Vault metadata. Staff manage their own Notification settings, while owners keep site and group rules in admin.

Tabs and subtabs become nested hamburger menus at smaller widths, including in admin. The toolbar renders one supplied logo or one “PBJ CRM” text fallback—never both—and its notification count refreshes after every CRM page change. Services contract 9; no database change.

1.44.0 — 16 August 2026

Vault records now follow the same identity rules as the rest of CRM. A record pinned to a business appears on that business, while client people and members of staff use their own proper records.

If somebody is both a client and a member of staff, their client and staff Vault records can appear together without duplicates. Every record still has to pass both the Vault security settings and the CRM rules for who may open that person or business.

Your name in the top bar now opens your own CRM profile and timeline. It no longer leads to a dead or settings-only address.

1.43.1 — 15 August 2026

Task lists on a phone are readable again. A task’s words were coming down the screen one character at a time beside a tall coloured stripe. Tick boxes and radio buttons are tick-box sized again on every simplified phone list.

1.43.0 — 15 August 2026

Dialogs, overlays and pop-up panels now follow your chosen theme. This includes the preview showing what a business can see, on every light and dark look.

The empty second menu row is gone; screens no longer repeat the tab you are already standing on; tasks and deals in Today open properly; Reports has its own menu item; and Setup is now Settings, gathering installed add-ons in one place.

Four new looks and six colour palettes were added, and your logo now links to your own home screen.

1.42.1 — 15 August 2026

An add-on declaring a malformed kind of record is now refused immediately. It is no longer quietly registered under a different name and allowed to fail later. The same check covers notification events, merge-token contexts and assistant fields and filters. Services contract 7; no database change.

1.42.0 — 15 August 2026

Tasks, notes and files can now be attached to records throughout the PBJ suite. Work attached to a ticket follows it when it becomes a visit and comes back if it becomes a ticket again, keeping its original history rather than being copied.

Unattached work appears on the customer record, with the business taking precedence when both a person and their business could claim it. Adds one attachment table; no existing table is changed.

1.41.1 — 14 August 2026

The dates on tickets your timeline already had are put right. The previous release stopped new lines being stamped with the moment the automatic catch-up ran — but the lines already written kept that stamp, so tickets opened weeks ago sat together under the day you updated.

Every one of them is moved back to the day its own ticket was opened, automatically, a minute or two after this update. Nothing is added, nothing is removed, and a line that already had the right date is left exactly as it is.

1.41.0 — 14 August 2026

The history got finer controls, because it really is everything now. “What has happened” carries every kind of entry a record can have — notes, emails you sent, marketing emails, support tickets, tasks, deals, anything brought in from a file and anything added automatically — and until now you could only narrow it to four of those. There is now a row of Just: buttons under the view chooser, one for each kind. Choosing one keeps you in the history and shows only that kind.

On a phone the same choices sit in the one Timeline view dropdown, grouped under “Narrow what has happened”, with the record’s own sections under “Sections of this record” — so the two questions that dropdown answers are labelled instead of jumbled together.

Fixed — tickets added by the automatic catch-up were dated the day it ran. A ticket opened three weeks ago now sits on the timeline under the day it was opened, not under today. Only newly added lines were affected; a line moved from one record to another has always kept its original date.

1.40.0 — 14 August 2026

A ticket you raised now appears on your own record. It only ever appeared for the person it was from, the business behind them, and whoever it was assigned to — so if you logged a ticket and gave it to somebody else, you had nothing to show for it. Whoever raised a ticket is now on it too.

Tickets you already have are brought up to date automatically, a minute or two after you update. Nothing is duplicated and no date is changed.

1.39.0 — 14 August 2026

You can now actually open a staff member’s record. 1.38.0 gave everybody on your team a record and 1.38.1 filled it with their work — but because those records are hidden, nothing anywhere linked to them, so the only way in was to dig through the hidden list in Manage everything and type the address by hand. Every place that lists your team now carries a direct link to that person’s record.

1.38.1 — 14 August 2026

Fixes 1.38.0 so it actually finishes the job. Staff got a record of their own, but the work already on your system had been filed before that record existed — so an agent’s history was empty. Existing tickets are now put onto the agent’s history too, automatically, a couple of minutes after the update. Nothing is duplicated and no date is changed.

1.38.0 — 14 August 2026

Your staff now have a record of their own, so work shows up on it. A ticket assigned to somebody already appears on the customer’s history and their business’s history — now it appears on the agent’s history too, which is what “everyone who touches a ticket sees it” was always meant to mean.

These staff records are hidden. They do not appear in your contact list, your business list, the people pickers or the duplicate finder, and they are never included in a marketing email because they have never been asked to subscribe.

If a member of staff is already in your contact book — because they are also a customer — that record is used as it stands. Nothing about it is hidden, changed or unsubscribed, and no second copy of them is created.

Existing staff are set up automatically a minute after you update. Nothing for you to do.

1.37.0 — 14 August 2026

Tickets now show up on every record that touches them. A ticket filed to a business appears on the business’s timeline as well as the person’s, and on the agent who owns it — before, it only ever appeared on one record, so a business you had carefully filed tickets under showed an empty history.

The Support tickets list on a record reads the ticket’s own customer fields instead of guessing from the email address. Filing a ticket under a customer now actually puts it on that customer.

Two people who share an email address no longer see each other’s tickets on their records.

Existing tickets are put onto the timelines they were missing from, automatically and in the background, once after updating.

1.36.3 — 14 August 2026

Housekeeping only. The translation template shipped inside 1.36.2 was one version out of date, because it was regenerated after the release file had already been built. Nothing on screen changes and nothing you do changes. No database change.

1.36.2 — 14 August 2026

On a phone, a contact or business page could show BOTH the Timeline view dropdown AND the full row of section buttons at the same time.

Whether it happened depended on which tab style your site is set to under the look settings: sites on Segment got both, sites on Underline did not — which is why it took a real phone to catch. The phone now shows the dropdown only, whichever tab style you use. Nothing changes on a computer. No database change.

1.36.1 — 14 August 2026

There was still a second way to choose what you were looking at on a contact or business, and it made the page read as though it had two timelines. The row of sections along the middle and the “Show me” dropdown under the note box both picked what the page showed, and four of the choices — Support tickets, Tasks, Deals and Marketing emails — appeared in both.

There is now ONE control. It carries everything: the whole history, the four ways to narrow it down (notes, emails you sent, things brought in from a file, things added automatically), and every section of the record. Nothing has been taken away — the four choices that were in both lists now open the fuller section view instead of a filtered feed. No database change.

1.36.0 — 14 August 2026

The contact and business page has been rebuilt, and the Mobile/Desktop switch has moved.

There is now ONE “Desktop” button, in the top bar beside your logo, and its background tells you which version you are on — solid when you are on the desktop version, outlined when you are on the phone screens. It replaces the pair of buttons that used to sit at the end of the menu row.

On a contact or a business, everything about the record is now in one block on the left: the photo, the name, a much smaller business/person switch, the labels, and the contact details. Those details now show ONLY what somebody has actually filled in — no more columns of “Not set” — with an Edit button that brings the empty ones back when you want to add one. “Start something” is now called “Add Work”, and on a phone it becomes a dropdown instead of a row of buttons.

The row of history tabs is unchanged on a computer, and on a phone it collapses into a single “Timeline view” dropdown, because ten tabs ran off the side of the screen.

Everything that used to be the unnamed column down the right is now called Attributes. On a computer it sits at the top of that column; on a phone it moves to the bottom and starts closed. The marketing email setting has moved into it. At the top of it is a new Show as client button, which shows you what that customer sees when they sign in to your portal — read-only, and built from what each part of the system says a client may see, never from a fresh look at the raw records.

The whole page now fits on a phone in one column with nothing running off the edge. No database change.

1.35.2

Finished work no longer appears on your day at all. The previous release stopped a completed job being called overdue, but left it in the list – so a visit marked Done and dated two days earlier still showed under “Due, across everything” in Triage. It is now removed where the list is built rather than at each screen that reads it, so every screen gets it.

1.35.1

Fixes work vanishing from the Agenda on a phone. The Agenda kept only rows whose lateness was worded one of two particular ways, and the three places that fill that list did not all word it the same – so a visit due tomorrow, and every open ticket on a site with no service-level policy, was fetched, permission-checked and then quietly dropped before it reached the screen. Nothing errored, which is why the rows simply looked absent. The CRM now decides how late every row is itself, in one wording, on the server, and it believes a plugin that says a job is finished instead of recalculating from the date. The Agenda now lists everything still open, latest first, and leaves out only genuinely finished work.

1.35.0

Your whole diary on your phone, from one button. On a phone the Agenda now has a single button at the top that puts your diary on the phone and keeps it up to date by itself, instead of a separate download every time you visit. One thing worth knowing: the link that does it is personal to you, and anybody who has it can see your diary — so treat it like a key to the van.

Every visit in the Agenda now carries two buttons, Google Maps and Apple Maps. Tap either one and the address is already in it.

Contacts, businesses and marketing emails have all had their tops tidied. A clear Edit button at the top of the screen, a title you can change just by clicking it, and a print button.

Fixed: printing a CRM screen now gives you a clean black-and-white page. If you were using a dark colour scheme, printing could come out almost blank. Printed pages now ignore the colour scheme altogether.

1.32.0

Businesses, tags, your saved lists and a record’s history are now open to your assistant. Businesses come through the same door the rest of the CRM uses, so a manager or an employee is handed exactly the list they already see on their own screen. Tags and saved lists can be listed and opened by name, so an assistant can say what a tag is for without reading every contact that carries it. And an assistant can read the history on a person: asking about somebody you are not allowed to see answers exactly the same way as asking about somebody who does not exist, so it can never be used to find out who is in the book.

Fixed: page two really is page two. Asking an assistant for the second page of your files, your calendar entries or your staff used to hand back the first page again.

Fixed: a business you are not allowed to open no longer carries a link to it. On a business whose details are withheld from you, the assistant was still being handed a direct link to that record. It is now left out altogether — left out, not blanked. Nothing about the business itself changed: everybody still sees every business name.

Your assistant now has 74 jobs it can do across 25 kinds of record, up from 38 across 11 — and every new one follows the rule the first 38 followed: an assistant sees exactly what the person whose link it is can see, and nothing else. Every job that existed before still exists and answers the same way.

1.31.1

The assistant connection lives in one place. It is on the Apps & Assistants settings screen and nowhere else — the extra copies that had turned up in the portal and on the phone screen have been taken away, because nobody asked for them. The connection itself is unchanged: the same link, the same Copy button, the same “Test my connection” check and the same safety notes.

1.31.0

Three assistant jobs that could never work now work. Listing your files, opening one file and opening one calendar entry all answer properly instead of coming back with nothing.

You can now narrow what you ask for. Each kind of record offers its own set of filters: people by who looks after them, by business, or by whether they may be marketed to; tasks by list, customer, who they are handed to and when they are due; deals by list, customer, business, owner and stage; calendar entries by the dates they fall between. The choices are handed to the assistant and checked again on the website, so a value that is not on the list is refused with a plain message instead of being quietly ignored. A filter can only ever narrow what that person could already see — it can never widen it.

The calendar window can be moved. It still starts at a month back and three months ahead, but an assistant can now ask for months outside that; a stretch longer than a year is trimmed rather than turned away.

“What has changed since” now gives an honest total everywhere it is offered, and it is no longer offered at all on records that do not carry a changed-on date.

A new “Test my connection” check answers in plain English — for example, “Working. Your assistant can see 38 tools across 11 kinds of record.” It never creates a token as a side effect. And the Copy button now tells you out loud whether it worked, then puts itself back a few seconds later.

1.30.1

The date-and-time picker (used when booking a visit, among other places) now follows the dark themes: the browser draws its calendar pop-up and its little icon dark instead of white. The earlier fix covered plain date fields only.

1.30.0

Tasks and Tickets are now separate main tabs, in the portal and in wp-admin — old links keep working. Dispatch gets its own main tab between Invoices & Orders and Companies & People, and the Archive add-on now shows as Vault, under Communication.

A Mobile/Desktop switch lives in the menu bar on every screen. Press Mobile and this device opens the simplified phone interface from now on; press Desktop and it stays on the full workspace. Each device remembers its own choice.

A person can belong to more than one business. The contact page gains a Businesses panel — link somebody to every firm they really work at, jump to any of them, unlink when they move on.

More ways to make it yours. Look and feel adds a typeface picker (system typefaces only — nothing is downloaded from anybody) and per-colour overrides for the main colours. Everything starts from your current preset and nothing changes until you change it; Reset puts the look back and keeps your logo and app icon.

The company logo no longer shows as a broken picture. The folder it lives in could inherit a “deny everyone” rule written for private files; the logo and app-icon folders now state their own permission. Home-screen app icons are fixed by the same change.

Manage tasks now works like Manage tickets: opens on open work, sortable columns, bulk set-a-due-date and delete, and “apply to everything that matches” — deleting asks you to type the count first.

1.29.0

Apps & Assistants. Connect an AI assistant (Claude, ChatGPT) to your CRM with a personal token: it can look up and work with contacts, tasks, deals, tickets, invoices, visits, files and calendar entries — always as you, seeing only what you could already see. Off until you create a token; revoking one cuts access immediately; protected Vault values are never handed out.

1.28.0

The Calendar group is now the Dashboard — and it is where you land. Triage first for administrators, the Today queue first for everyone else, with the Calendar right beside them. Nothing moved out of reach: Tasks and Tickets keep their own screens.

Subscribe to your calendar. A personal, private link Google Calendar or Apple Calendar can subscribe to — your own tasks, tickets, visits and invoice dates, updating on its own. Get a new link, or turn it off, any time from the Calendar screen.

Photos on people and businesses. Stored privately inside the CRM — never the public Media Library — and only shown to people allowed to see the record. Existing photos keep working until replaced.

Manage tasks. A manager screen listing every task your rung allows, with filters, bulk done and reopen, and hand-to-someone using the same roster as Manage tickets.

Also in this release: tickets, tasks and invoices each carry their own colour on the calendar and cards — adjustable on Settings ▸ Theming and readable on every preset; the calendar’s List view now shows the newest day first, with a toggle to flip it that remembers your choice; and the phone app icon now has a shipped default, so a site that never uploads one gets a proper CRM icon instead of whatever the phone invents.

1.27.0

One place to say how your email leaves this website — for the CRM and every add-on. A new Email delivery card on Connected accounts lets everything go out through a mailbox you already own instead of the website’s built-in mailer. That matters more than it sounds: until now the built-in mailer carried nearly all of it — every appointment email, most help desk notices, invoice reminders unless you had chosen otherwise — and mail sent that way often lands in spam or is refused outright, because the service receiving it has no way to check your website was allowed to send as you.

There are no new server or password boxes to fill in: it uses the mailbox you already set up on the card above it, Gmail and Microsoft included. You also choose what the sender line says — leave every message exactly as it is, fill it in only where a message did not set one (the sensible default), or always send as one address. A Send a test email button tells you what the mail server actually said if something is wrong, in its own words.

Nothing changes until you pick a mailbox. Appointment invitations still arrive as proper calendar invitations, and where a campaign or an invoice was already set to send from its own mailbox, that still wins. No database change.

1.26.0

A simplified phone interface. On a phone the portal opens with three big choices — Find, Create, Desktop. Find gives every kind of record a phone-sized list: people get an A-to-Z rail and sorting, businesses a search-first list, and tickets, invoices and visits a type-to-find screen. Create adds people, businesses, tasks, deals, and notes with photos — photos go through the CRM’s own file store. Desktop is the full portal, and choosing it is remembered on that phone. Turn the whole thing off under Settings ▸ The basics ▸ Simplified mobile interface.

1.25.0

The header search can be narrowed. Pill filters for every kind of record — people, businesses, tasks, deals, files, and every module’s records. Deals and files join the search. Results only ever name what you could already open.

1.24.0

A new look-and-feel system and a new top bar. The Look and feel screen now offers a Mode (Light or Dark) and a Style (Standard, Terminal or Notebook) — every style works in both modes, every combination is contrast-checked, and the typefaces are ones already on your computer, so nothing is downloaded from anybody else. You can also upload a company logo, which appears in the new top bar and on the sign-in page. The sign-in page now follows your chosen look properly, including dark modes.

The WordPress admin bar is gone from CRM screens, replaced by the CRM’s own bar: your name (click it for your profile), your open task and ticket counts, your inbox count if you manage mail, who else is signed in right now, a shortcut to the admin side if you have it, a search that looks across people, businesses, tasks and tickets — and only ever shows you things you could already open — and Log out. On a phone it folds into a Menu button.

For developers: the services contract is now version 4, adding header-count and search seams; modules declare header_counts and search payloads, already scoped and already redacted, and the CRM never enriches them. New routes: GET /header, POST /header/heartbeat, GET /search.

1.23.0

One answer to “who can I hand work to”. A manager’s list is their teams, plus staff not yet in any team, never anybody above their own rank — and the same list is read by the screen that draws the dropdown and the server that enforces it, so the two can never disagree. This fixes a quiet family of blank pickers: a manager who was not in any team used to see nobody but themselves, which read as a broken screen rather than an answer.

For developers: the services contract is now version 3, adding selectable_staff() and can_assign_staff(). The help desk directory and the visits booking picker consume them; feature-detect on PBJ_CRM_Services::VERSION >= 3 and keep your fallback.

1.22.0

A fix that matters to anyone who is not a site administrator: the list of businesses you pick from was coming back empty for managers and employees, so filing a person under a business always answered “Pick a business first.” Everyone can now see and choose every business again — by name, with the private details still hidden from staff who are not allowed them. And businesses are now chosen by typing a few letters instead of scrolling a list, which used to stop at 200.

One shared search-and-choose box now handles attaching a person or business to something, starting with tasks: the task form gains “Who is it for? (optional)”, so a task can be tied to a customer — or untied from one — while you are writing it. Click into the box and your most recent records appear; type a few letters and matches appear, with businesses marked. If the person you need is not in your list yet, the box offers to add a new person or business on the spot — a small name, email and phone form — without leaving what you were doing. It only ever offers: nothing is saved until you press Save.

Every customer’s page — person or business — gains a “Start something” row. One press starts a task for that customer with their name already picked, and add-ons put their own buttons on the same row: the help desk adds “New ticket”, and Dispatch adds “New visit” and “New appointment”, each landing on its form with the customer already filled in. The row only appears when there is at least one thing you are allowed to start.

You can now hide the clients you are done with. A hidden record keeps everything — its history, its notes, its jobs, its invoices; old links still open it and an email it sends still matches up to it — but it drops out of your lists, your searches and every “pick a customer” or “pick a business” box until you put it back. That happens on the new “Hidden records” tab under Companies & People ▸ Manage everything, where every row has one button: “Put back”. It is a shelf, not a bin — nothing on that tab is ever deleted on a timer. Hiding also says nothing about marketing email: who may be emailed is still governed only by the record’s marketing status and the do-not-email list, so hide someone AND unsubscribe them if you mean both. An import that meets a hidden record again updates it quietly without bringing it back into your lists.

Importing contacts is now guided instead of instant. Whatever the source — Square, Google Contacts, Microsoft Outlook or a CSV file — you pick where the contacts come from, see what goes where, and then get a check that counts what WOULD happen: how many people would be added, how many updated, how many are already up to date, and how many rows have a problem, with the first ten rows shown. Nothing at all is written until you press the one confirm button, which states those counts on its face — “Bring in 12 new people and update 30.” Walking away imports nothing, and a check older than 15 minutes is run again first, so what you confirm is always what happens. Scheduled syncs and add-ons that import through code are unchanged.

Every address in the CRM now offers “Open in Google Maps” and “Open in Apple Maps” links — built in your browser and sent to nobody until somebody actually clicks one — with a tick box under Settings ▸ The basics (Map links, on unless you turn it off) that removes them entirely, so if you want no page of yours linking out to a maps provider at all, untick it and that is exactly what you get. This release adds one column to the contacts table and takes the database to version 17; every existing record reads as “not hidden” and behaves exactly as before.

1.21.0

The “All businesses” tab is now the same screen as “All people” instead of a thinner copy of it. You get the tag filter, the “who looks after them” filter, the “how they got here” filter, your saved lists, the marketing filter and a fourth sort order; you can tick several businesses and change their email choice in one go, with the same consent question and the same “we left these alone” panel; and every card now shows its tags, its marketing badge, who looks after it, when it last changed, and how many people work there.

Three things behave differently afterwards and are worth knowing. The businesses tab now follows your staff visibility settings exactly the way the people list always has, so a manager or an employee who is not allowed a particular business no longer sees it on this tab at all. The search box now matches names, both email addresses, both phone numbers and job title — so looking a firm up by its web address no longer finds it, while looking it up by email now does. And very old company entries left behind by early imports, never attached to a business record, cannot appear on this list at all; they are still reachable at their own address and nothing has been deleted. One smaller change on both tabs: the “People / Businesses / people and businesses” dropdown has gone, so each tab shows its own kind only and the same firm never turns up in two places. No database change.

1.20.0

Fixes the error you got when you put an email address on a customer and something else already had it. Sharing one address is normal — office@ for a whole firm, a couple on one mailbox, one person you deal with at two businesses — so saving now tells you who else is on that address instead of refusing to save. A second fix rides with it: when somebody on a shared address unsubscribes or their mail bounces, every contact on that address is marked, not just the oldest one — and that is the field your segments and audiences actually read. Also fixes date boxes on the dark colour schemes, where the little calendar button was drawn black on black and could not be seen. No database change.

1.19.0

Photos and paperwork now live on the record they belong to. Drag a picture onto a person, a company, a to-do or a job; pick one off your computer; paste a screenshot straight onto the page; or take a photo on your phone while you are standing in front of the thing. Pictures taken on a phone are shrunk before they are sent, so a job full of them does not eat your website’s room or your data allowance. A small picture stays small — the limit is a ceiling, not a target.

None of it goes into the WordPress media library. Files sit in a private folder the web server refuses to hand out, under names nobody could guess, and every download and every thumbnail checks who is asking before it answers. That is the point of it: a photo of a customer’s alarm panel, a signed worksheet or a serial plate is not something that should be readable by anybody who guesses the address.

Every file can carry a label. “Before”, “After”, “Receipt”, “Estimate”, “Serial plate”, “Signed”, “Damage”, “Parts” and “Site” are ready to tap, and you can add your own. Inside a record the files gather into a drop-down under each label, with anything unlabelled kept at the bottom where it cannot quietly go missing.

Each file has a “Share with the customer” switch, and it is off until somebody turns it on. When it is on, the customer sees the picture and not the notes attached to it — where it was taken and what took it are stripped out of the copy they get.

Files use the same 30-day recycle bin as everything else. Taking a file off a record takes it off THAT record; if it is not filed anywhere else it goes to the bin and you have 30 days to change your mind. Settings shows how much room your files are using and warns you at 80% of whatever you set aside for them, before your host does. Big files go up in small pieces, so a long video is not stopped by an upload limit, and a dropped connection only re-sends the piece that failed.

Deleting somebody under a privacy request now also destroys the files held only about them, the copies on disk included. Files that are also filed against somebody else’s job are kept, and the screen tells you so. This release adds four database tables and takes the database to version 16. Nothing existing was altered.

1.18.0

Businesses are visible to your staff again. The previous release protected a business’s private details by hiding the business itself from anyone whose contact list did not already include it — and a business that arrived from a CSV, Square, Google or Microsoft import belongs to nobody until somebody claims it. On a normal site that meant every business vanished for every employee and manager: the company list came back empty, and with it went filing a person under a business, raising an invoice against a company, and pinning an Archive record to one.

The protection is still there and still withholds exactly the same things. Somebody who is not allowed to see a business now sees its name and web address and nothing else — no notes, no phone number, no postal address. Enough to pick it from a list and label a record; nothing that was copied down from the business itself.

Opening a company directly no longer refuses staff who can see it in the list. Companies whose business is in the recycle bin are still not found, which is unchanged and deliberate. No database change.

1.17.0

A privacy fix worth taking: a business’s notes, phone number and address were visible to every staff member, whatever their contact list allowed. Also fixes the recycle bin refusing customers whose tickets are finished, and money on the calendar printing with no currency sign. No database change.

1.16.0

Put the CRM on your phone. Under Settings → Theming there is now a switch, a name and an icon upload; turn it on and a phone offers “Add to Home Screen”, giving your team a full-screen CRM with your own name and logo under it instead of a browser tab. The icon is cut square and resized for you and is kept in the CRM’s own folder, never your Media Library. It deliberately does not work offline — the CRM has to ask the website who you are on every visit, so there is nothing safe to keep on the phone. Off until you switch it on.

1.15.0

A List view on the calendar. One day after another instead of a grid, which is far easier to read on a phone and better at answering “what is next?”. The month grid is unchanged and both are always available — pick with “How to show it” and it remembers your choice. On a small screen the List is what you get until you choose otherwise. Day headings for today and days still to come open the same “New task” button the month view got in 1.14.0.

1.14.1

Fixed: calendar times now read on your business’s clock, not the clock of whichever computer you happen to be using. Before this, the DAY an item was filed under came from your business’s timezone while the TIME beside it was converted to the viewer’s — so a task due at midnight could sit under Wednesday and read “8:00 PM”. Every row on the calendar had it. Display only; nothing moved to a different day.

1.14.0

Tapping a day on the calendar now offers what you can start on it. Today and any day still to come show a “New task” button that opens the task editor right there with the date already filled in. Days that have been and gone do not offer it — a task dated last Tuesday is late the moment you save it. The list is built to grow, so add-ons can put their own entries beside it.

1.13.0

Today — a single list of everything with your name on it. Your tasks and your help desk tickets together, sorted by when they are due, with anything late in red at the top. It is the first thing under Tasks & Tickets. A task can now say which ticket it is the follow-up for, and when both would show they appear as ONE line carrying the ticket’s number and a button to open it. Nothing was replaced: the full Tasks and Tickets lists are still their own screens. Today only shows tickets when PBJ Helpdesk 2.8.0 or newer is installed.

1.12.0

Internal only. Add-ons can now ask the CRM for the address of their own settings panel on the Templates & Notifications tab, instead of guessing it. That is what lets an add-on move one of its screens here without leaving a dead link behind — PBJ Helpdesk 2.7.0 is the first to use it. Nothing changes on screen and no data is touched. Update this before updating the Help Desk.

1.11.0

Dark mode is properly dark — the page behind the CRM is black rather than charcoal, and it is black the moment the page opens instead of flashing white first. Cards stay slightly lighter than the page so they still read as cards. The CRM screen is also now genuinely independent of your website’s theme: your theme’s styling no longer reaches inside it at all, so the CRM looks and behaves the same whichever theme you run and however you change it — and every other page on your site is completely untouched. Finally, the screen uses the full width of your display instead of sitting in a fixed column, so wide tables get the room they need, with a hairline border keeping the edge visible: dark on a light page, light on a dark one. Appearance only — nothing changes about how anything works.

1.10.0

A new Templates & Notifications tab gives you one place to decide which emails your team gets — and, because add-ons put their own templates there too, one place to find the wording of anything you send. You can now change one person’s email settings on their behalf. Staff groups have moved into the CRM itself, so a group means the same thing whichever add-ons you run; your existing groups came across exactly as they were, and deleting a group now simply ungroups its people rather than leaving them pointing at something gone. Your team can fill in their own job title, direct number, booking link, office hours and photo, and drop any of it into an email with a click — every screen that writes an email now has a button for each merge field, offering only the fields that make sense there. The ready-made marketing emails sit above “write a new email” rather than inside it, and choosing which mailbox a marketing email sends from is a dropdown of your own mailboxes instead of a box asking for its number. The CRM screen now fills the page on its own, with no site logo, menu, header or footer around it. Security: removing someone from the CRM signs them out everywhere immediately and refuses to let them back in, and staff sign-ins now last hours rather than the site’s default of days — so anyone signed in when you update will be asked to sign in again. Your existing notification settings are carried across, and the database updates automatically.

1.9.0

The Square, Google Contacts and Microsoft Outlook import cards each gained a tick box: Bring people who are already here up to date too. Left off, which is still the recommendation, an import only fills in blanks on somebody already in the CRM, so it can never contradict what your team has typed. That is also why running the same list a second time reports a large “skipped” number and nothing has gone wrong: a person who needs no changes is counted as skipped, not updated. Tick the box and the other service wins where the two disagree, so records you imported months ago are brought up to date. A blank at the other end never wipes something you already have, either way. Off by default. No database changes.

1.8.0

A bug-fix release from a full code review of the whole suite. Merging two records no longer fails when their marketing settings differ. Somebody moved to the recycle bin can no longer be emailed by a campaign that is already going out. Invoices with no customer attached, or filed against a business, appear on the calendar at last. Editing a business through the company screen now follows the same permission rules as everywhere else. Plus: a timed-out sign-in asks you to refresh instead of claiming you have no access, the “Which PayPal” box no longer locks itself on Live, checklist ticks from two people at once no longer lose one, and turning a business back into a contact now really does check for open help desk tickets.

1.7.0

Campaign emails now write in the standard WordPress editor with starter templates and an “Insert a detail” personalization picker. Business profiles carry the full field set with an Employees panel and address boxes. The two-way sync can no longer create a business or company on its own — company changes arrive as a note for you to act on.

1.6.0

Square import fixes (custom fields now fetched per customer; phone-only customers import; same-provider duplicates stay separate), repeatable checklist tasks, calendar filters that remember your choices, card-style people/business lists, and a full mobile pass across the suite.

1.5.x

The CRM team became the ONLY staff list for the whole suite (helpdesk agents are CRM staff), and customer-less helpdesk tickets became visible on the calendar.

1.3.0–1.4.8

The fully guided Connected accounts page: a step-by-step card for Square, PayPal, Stripe, Google and Microsoft, visible webhook addresses, credential locking with a Disconnect button, “Sign in with” mailboxes that send over true XOAUTH2, and much clearer error messages throughout.

1.0.0–1.2.0

The foundation: contacts and businesses in one book, imports and two-way sync with a human approval gate, the drip email marketing engine with tracking/unsubscribe/consent, reports and GDPR tools, the whole-business calendar, the front-end portal with themes, the module hub, the 30-day recycle bin and the bulk record manager.

August 4, 2026

Current release: 1.76.0 (August 2026)

1.76.0 — 29 August 2026

All nine screens that were still only in the website admin now open in the CRM. Setup checklist, Merge duplicates, Imports, Sync review, Reports, Add-ons, Apps & Assistants, Shortcodes and Explainers each have a home under Settings, and the PBJ CRM page in your website admin no longer lists them – it points at the CRM instead. Nothing was moved out of your reach: every old address still works, so bookmarks and links keep going where they always went.

Two things stay in the website admin on purpose, and both say so on screen. Choosing a file to import is a file upload, which the CRM’s settings have no way to carry, so the import wizard opens there and the history of every import that has run is in the CRM. And your assistant address is never printed on the Apps & Assistants screen, because it is a web address with a key inside it – yours is on My settings, behind a button you press yourself.

Also fixed: the note at the bottom of Settings appeared once more every time you opened the screen. A request still in flight from a previous visit was painting into the current one.

1.75.0 — 29 August 2026

Every refusal explains itself. The three shared permission checks sitting behind 39 routes were still answering “Only a CRM owner or a site administrator can do that.” – a level, with nobody named to ask and nothing offered instead. They now build the same refusal card the rest of the suite has used since 1.66.0: what the act is, who on your team can do it, and what you can do right now. Nobody’s access changes; only the wording of a refusal does. The check for somebody with no CRM access at all is deliberately left plain – there is no level above them to name and nothing inside the CRM to offer them.

1.74.0 — 29 August 2026

  • “Who can do what” is a screen now. Settings carries a new page listing every act in the suite against the four levels – employee, manager, owner and administrator – with a plain-English note on each and where the setting lives. It answers the question that used to be a phone call: can this person do that?
  • Everybody gets an answer, sized to them. An owner or an administrator sees the whole table and can filter it to Money, to People, lists and records, or to Mail and tickets. A manager sees the same rows with one column: their own. An employee gets one sentence about their level plus a card of what they can and cannot do, money first.
  • On a phone the table becomes one card per level, money first, because a wide table is no use on a small screen.
  • Every row says where its answer came from. A row marked Read names the permission the code actually requires; a row marked Inferred does not, and says so rather than looking equally certain. Rows the code has no answer for at all – recording a refund, writing off a debt – are listed under “Not settled yet” instead of being left blank, because a blank cell reads as “no”.
  • The screen shows you a real refusal. Not an illustration: it builds one for something you personally cannot do, naming the level, naming somebody here who holds it, and offering what you can do instead.
  • Add-ons contribute their own rows, so the table grows as the suite does rather than being a list somebody has to remember to update. The help desk and invoicing supply theirs in this release.

1.73.0 — 29 August 2026

  • The website admin is one menu with five screens. PBJ Suite holds Connections (your sign-ins and mailboxes), Money (payment keys), Mail (how email leaves, who must never be written to, and how long stored mail is kept), Danger, and Licences. Everything on those five screens is something that can spend money, break a connection, change where your mail comes from, or destroy data. Everything else is in the CRM with the rest of your settings.
  • The CRM’s nine-tab bar is retired. The page now says plainly that your settings moved into the CRM, links you to them, and lists by name the handful of screens that still live in the website admin. No screen was removed and no address stopped working – a bookmark, a link inside another screen, and the return journey baked into a live Google or Microsoft sign-in all still land where they should.
  • Every screen says where the rest went. Money links to getting paid in the CRM, Mail links to the shared inbox, and Danger carries a “Not here, on purpose” card naming the destructive things that are recoverable and are therefore in the product instead.
  • The two settings that cannot be undone are quarantined on Danger, behind a confirmation that asks you to type the name of this site, and both are written into the settings change log with your username. They are: whether deleting the plugin also deletes every record, and whether the help desk takes its staff list from this CRM. The second was a setting that had quietly disappeared some releases ago while the help text on the old page went on describing it; it is back, it is on, and the screen says in plain words what turning it off would cost.
  • An add-on can contribute a row to one of the five screens rather than having a menu of its own, and can say what its licence is doing so the Licences screen can show it. The CRM decides the screen, the heading and the order; the add-on supplies only its own fields.
  • Two smaller fixes worth naming: the list of everything this website signs in to now describes the screen it is actually on, instead of listing accounts whose forms had moved elsewhere; and the Licences screen names each part of the suite the way you bought it rather than the way the product labels it.

1.72.0 — 29 August 2026

  • Add-on settings can now carry formatted text. A new kind of settings field understands bold, italic and lists, so an add-on whose wording is formatted – a saved reply, for example – can be edited in the CRM instead of only in the website admin. Editing one here keeps exactly the formatting it always had.
  • Add-ons can ask this CRM what kinds of setting it is able to draw, so an add-on built against a newer CRM keeps its website-admin link on an older one instead of showing you half a screen.
  • Nothing about what may cross to the front end changed. Anything that can break a connection or change where your mail comes from – a mailbox, a connected account, a payment key, a password – still stays in the website admin, refused by name with the reason printed.

1.71.0 — 29 August 2026

  • Who sees what, widened from a word to a word-plus-exceptions. The site default (Scoped or Open) now carries per-record-type exceptions. Anything not listed follows the site default, so an upgrade changes nothing: no exceptions are stored until you choose one. Contacts, Companies, Tasks and Deals can each be set separately.
  • New: the settings change log. Who changed which setting, when, and from what to what — written automatically whenever settings are saved in the portal. Settings > Change log, owner rung.
  • A change to anything held in your website admin — a payment key, a connected account, a mailbox — is recorded as having changed, never with its value. Secrets stay write-only.
  • Ticket, visit and invoice exceptions are not offered yet: those record types join in their own add-on updates.

1.70.0 — 29 August 2026

  • Access Ladder Phase 26 part A – the workspace settings move into the CRM. Settings is now one list in one order: Who sees what, Records & housekeeping, Notifications & marketing, Add-on settings, Theming, Merge duplicates, Imports, Sync review, Setup checklist, Site & connections.
  • The CRM now declares its own settings through the same schema seam it gives every add-on, rather than growing a second settings screen – so there is one settings renderer on the site and the CRM is the first thing using its own contract.
  • Crossed over as editable fields: who sees which records, custom fields, deal stages, how long the recycle bin keeps things, file limits, map links, the phone home screen, the portal and login pages, the site notification defaults for all eight notices, the daily task reminder, the postal footer and the marketing status imported people start at.
  • Deliberately NOT crossed, and each says so on screen: how fast marketing email goes out (an administrator’s setting), who marketing email comes from (it belongs to the connected account that sends it), and delete-everything-on-uninstall (the one irreversible switch, which stays in the website admin).
  • Nothing changed about WHO may change any of this – every one of these was already the owner’s, and the website admin forms all still work and write the same place.
  • Custom fields and deal stages now follow one set of rules whichever screen you edit them on, and an existing deal stage keeps its id for ever so no deal is orphaned by a rename.
  • No database change.

1.69.0 — 29 August 2026

  • Access Ladder Phase 25 – the #/group screen. One screen per group a manager runs: the group’s notification defaults, who is in it, which ticket categories land there, and who picks up unclaimed work.
  • Every read and every write re-checks the group by id, so a manager can only ever reach a group they actually run.
  • Membership saves through the one group writer, with the per-person ceiling re-checked row by row: employees and managers, never owners, and never somebody above you.
  • NEW – a group’s default assignee: nobody, round robin, or one named person, and anybody marked away is skipped.
  • NEW – modules can declare their own per-group settings; PBJ Helpdesk uses it to surface which ticket categories land in a group.
  • Services contract 21.

1.68.0 — 29 August 2026

  • My settings finishes: a notification choice is now one answer per way of telling you (in app, email, browser) instead of one answer for all three, and quiet hours hold everything outside your working day until the morning.
  • Overdue warnings are never held. A module says which of its notices are urgent; the help desk marks its two running-late warnings.
  • Your working days, working hours and Away live on your staff profile, so the people who need them can read them: auto-assign skips somebody who is away and says why.
  • Light, dark or match my device, row height, and where you land when you sign in are yours. The site’s own look stays the owner’s — choosing Dark gets the dark half of the palette they picked, not a different one.
  • A preference stored for a plugin that happens to be switched off is left alone rather than quietly deleted.

1.67.1 — 29 August 2026

  • FIXED: My settings was missing a row. The My helpdesk card drew “My canned replies” and not “My working preferences” — canvas 5c draws both, and the phase’s own list of what to collect names the helpdesk working preferences by name. The card was checked for being in the right PLACE and not for having the right controls in it.
  • Both rows open the helpdesk’s own personal screen, which is where they already lived.
  • ⚠️ Written down rather than quietly worked around: that screen edits notification choices through the SAME per-person store the notifications card at the top of My settings writes. Two editors for one store is the duplication this suite keeps removing, so it is a candidate for retirement once #/me is the one place — but nothing is removed here, because this phase collects what exists and a module’s screen is not the CRM’s to delete.
  • ⚠️ Also written down: the CRM should not know the `/profile` segment of a module’s route. The correct seam is the helpdesk DECLARING a personal entry point the way it already declares a section; that is a module-side change and this phase is CRM-only. One place in the code knows it, and it says so.
  • No schema change; DB stays 23.

1.67.0 — 28 August 2026

  • NEW SCREEN: My settings at `#/me` — the one screen a person owns (Access Ladder Phase 24, part A). Everyone gets it, at employee level.
  • It COLLECTS what already existed. Until now a person’s own settings were spread across four places — the account menu, their own record, the help desk and Apps & Assistants — and the problem was never that any of them were wrong, it was that there was no screen. Nothing here is a new setting and nothing here is a new store: every value is still written by the thing that owns it.
  • Your eight notification choices now say WHERE THE ANSWER CAME FROM — yours, your group’s, the site’s, or nothing set anywhere. “I turned that off” and “nobody ever set it” stop being the same answer on screen.
  • One line telling you what your level means, read off the same declaration the refusal messages use — so the sentence on your settings screen and the sentence in a refusal can never drift apart.
  • Also here: your screen layout memory with a Reset layout button, your calendar feed, your assistant connection, your own phone line, your own canned replies, the vault, mobile view and the how-it-works boxes.
  • ⛔ Your calendar link and your assistant address are NOT fetched when the screen opens, and that is deliberate: asking for either MINTS one the first time. Opening My settings must not quietly create a live calendar feed for every member of staff who looks at it, so the address arrives when you press Show my link.
  • ⛔ MY phone line means yours. The row reports a connection in YOUR name; the shared business line is the owner’s and is refused here by name, which is the design.
  • A row for something this site has not got is not drawn at all rather than greyed out. A module that IS installed with nothing connected for you keeps its row, because that row is the only thing that says a connection is possible.
  • “My settings” is back in the account menu. It was removed because it pointed at the SITE’s settings; it now points at a screen that is actually yours.
  • ⚠️ Quiet hours, one choice per channel, working hours, working days, away, light-versus-dark, row height and the landing screen are part B and are NAMED on the screen rather than left out.
  • No schema change; DB stays 23.

1.66.0 — 28 August 2026

  • THE OWNER CAN NOW FINISH SETTING UP THEIR OWN CRM. Imports and sync review moved from the administrator bar to the OWNER rung (Access Ladder 23.1). The person the product calls Owner could not import a contact list on day one; that was the complaint the settings work started from.
  • The move is applied to the ROUTE, the admin screen and the handler together — eleven guards across the imports and sync traits plus their REST permission callbacks. A route that opens while its handler still refuses is worse than either.
  • Deleting a campaign moved to the OWNER rung too, behind a typed confirmation: the campaign name has to be typed back exactly (23.2). Deleting one takes the record of who it went to with it, which is why it is not a manager’s.
  • NEW class PBJ_CRM_Refusal, and every refusal in the suite now names the rung, names somebody who actually holds it, and offers the thing this person CAN do (23.3) — “An owner imports a contact list. You can add people one at a time… Ask Mindy to run the import.” The old “You do not have permission” dead ends are gone.
  • The rung map behind it is a DECLARATION, deliberately: executing a permission callback out of context returns a confident wrong answer, so the rung is declared once and read by the refusal copy, by the rung sentence coming to #/me, and by the matrix screen after that.
  • PBJ_CRM_Services contract 18 -> 19: refusal(), refusal_message() and holds_rung() are the module half. If two modules would write the same refusal, the line is the core’s.
  • NOT MOVED, and verified by grep rather than assumed (23.5): connected accounts, mailboxes, delivery, the suppression list and every payment credential still refuse below administrator. Only their wording changed.
  • No schema change; DB stays 23.

1.65.2 — 28 August 2026

  • Translation template regenerated. No code change.

1.65.1 — 28 August 2026

  • An action a module marks as primary is now THE primary button and can never fall into the More menu. Below 782px the ticket’s Close had been pushed into the overflow by Hand over and Convert.

1.65.0 — 28 August 2026

  • Agenda (was “Needs me”): the day is grouped by what the work is waiting on — Late, Due today, New work, Waiting response, Backlog.
  • Focused works one state at a time; Board shows all five side by side and a column head opens that state in Focused.
  • “My day” moved to the breadcrumb, with an employee picker for managers; the Focused/Board switch sits opposite it.
  • The phone gets the same five states as a scrolling chip row. Board is not offered there.
  • The phone’s separate Agenda screen is gone: it grouped the same work a third way. ‘#/m/agenda’ now opens the one Agenda, and the calendar-subscribe control moved with it.
  • Cards on the Agenda are the full card, not the compact management row.
  • “Needs attention” and “Day at a glance” are removed – both duplicated what the five states and the tab counts now say.

1.64.2 — 29 August 2026

  • The portal notices when the server has moved past the build the browser loaded, and offers a reload. It rides the header poll, so there is no new request and no new timer — and it never reloads on its own, because the composer may be holding a draft nobody has sent.
  • A field may declare who else reads its value (`audience: internal|customer`); the core supplies the wording and the colour, so two modules cannot word the same warning differently.
  • The customer chooser reads as one line — label, control, then the promise — and its + takes the accent.

1.64.1 — 29 August 2026

  • The CRM’s customer lookup now resolves a name from an id, so a module that only has an id no longer writes a placeholder where the customer’s name belongs.
  • Every conversation thread opens newest first — tickets, visits, tasks and the unified inbox reading pane.
  • A work record’s Details card is drawn as a horizontal bar above the reading pane instead of a tall column beside it.
  • Form sections on plain forms put their label in a left rail; a choice of three or more answers is drawn as a row of pills; new “what the customer sees” callout element.

1.64.0 — 28 August 2026

  • Convert now asks what should happen to the record you converted from. It used to make the new thing and leave the old one standing, so the same job sat in two places and both kept counting as work.
  • The answer takes effect when the new record is saved, not when you press Convert. Convert opens a blank form with the customer filled in — closing the source at that moment would close a ticket for a visit nobody ever books. Leave the form without saving and the record you came from is untouched.
  • “Leave it open” is always offered. Sometimes one job really is splitting in two.
  • Each kind of work names its own answer, because “Cancel this visit” is not “Close this ticket” and only the module knows which is honest.

1.63.21 — 28 August 2026

A field-test day: the suite was used live and fixed as it was used. Everything below landed between 1.62.0 and 1.63.21.

  • An unnamed line item no longer breaks a record. An invoice carrying a line with no description used to take the whole screen down to “did not load”. A row is shown as long as it has something to show.
  • A save button that refuses now says so where you pressed it. The message used to be written to the top of the form while the button sits in the header, so on a long page it landed below the fold and the button looked dead.
  • The customer finder opens the right question. A second customer field on the same sheet could open its own picker over the first one — a people-only list headed “Choose a customer”, with the real control frozen behind it. Each field now names its own question (“Choose a recipient”), and only the field being asked about opens itself.
  • Searching for people at a business really is scoped to that business instead of listing everybody.
  • A small Change button beside a customer’s name on work records, with “Just <business>” as a real answer when a business has nobody named at it.
  • Details cards read one fact per line, label left, value right, stacking on a phone; machine-shaped values (references, timestamps, phone numbers) are set in a monospaced tone.
  • Conversations and activity feeds can be read newest-first, with a subtle toggle showing which way you are reading.
  • Photos in a text message appear as photos.
  • The Inbox is what is waiting on you. Work you have already answered stands in Needs me; a customer reply brings it back. A task stays in the Inbox until you tick its first checklist item.
  • Accessibility: small icon-style buttons now announce what they change rather than just their label.

1.62.0 — 26 August 2026

  • The CRM builds a record’s message channels itself. Every module used to assemble the same bar out of the same CRM answer, and each copy could miss something — dispatch’s never handled the phone channel, so a visit with a number on file offered no way to log a call. A module now says what it can do; the CRM decides which channels exist, their order and labels, which carry a subject, and which are drawn struck through.
  • “Log a call” is a first-class channel — a record of a conversation, with nothing sent.
  • One Customer card and one Details card on every work item, built by the CRM from the fields a module already declares. A fact you can act on belongs to the customer; a fact you can edit belongs to the item.
  • Every work item has a Thread, derived from the record’s own timeline rather than declared separately.
  • Composer: it closes again — its own control, Escape, or a click outside. The sending line sits inline on the subject row, an AUTOFILLED badge marks a subject the thread wrote, Cc and Bcc appear only where the channel can carry them, and Send shows the Cmd/Ctrl-Return shortcut, which now works.
  • A search-first field waits for you to type instead of opening with the whole list printed underneath it.
  • Record navigation reads Events again.

1.61.0 — 26 August 2026

  • A work item’s facts panel is a set of controls, not text. Click a fact, change it, and blur or Enter saves it; Esc reverts; there is no Save button on the page. A failed save keeps your value on screen with Retry rather than reverting silently.
  • Relational fields search existing records first and never create one by accident.
  • Work records gained a three-column shape — facts, conversation, history — that merges to one column on a narrow screen. Contact and business profiles are deliberately untouched.

1.60.0 — 25 August 2026

  • Completed the shared component surfaces that current and future CRM modules build on.
  • Retired the item reader’s properties aside, which was still being built and painted into as a detached node behind six unreachable stylesheet rules.
  • The record hero’s two overflow lists became one derivation, so the More sheet is exactly what the visible row did not take.
  • Stopped the daily queue sending an edit destination identical to the row’s own link.

1.59.0 — 24 August 2026

  • Contact and business records now share the guide-matched CRM record anatomy while retaining their existing routes, writes and module tabs.
  • Open Work is now CRM-owned and accepts scoped, normalized work from installed modules without giving modules control of card or reader markup.
  • Compact item rows remain 46 pixels high and shared workspaces can shrink to a 160-pixel stream while preserving the core icon, type, title and right-edge selection control.
  • Contact photo attachments now use the existing private file store, and the Calendar uses an additive event-provider registry while remaining available only when Dispatch is active.

1.58.0 — 24 August 2026

  • One compact card and reader design now covers Inbox, daily work, tasks, people, businesses and ordinary items supplied by installed modules.
  • Desktop lists and reading panes resize and scroll independently, the saved width follows each signed-in user, and narrow screens return to one page flow.
  • Selection and contextual actions live in the breadcrumb footer; composers, explainers, checklists and form inputs now use CRM-owned UI primitives.
  • The shared Calendar registry now includes future tasks, past tickets and invoice milestones, while contact and customer labels prefer real names over technical numbers.

1.57.0 — 22 August 2026

New: five tabs across the top instead of nine, and the second row of pills is gone — Work, Customers, Field, Money and Insight. Everything that was there is still there. It is grouped by what you are trying to do rather than by which part of the system it came out of.

New: a rail down the left-hand side of every screen, 206 pixels wide, holding the places you move between most, so you are not hunting through a menu for them.

New: a bar fixed along the bottom of the window, 34 pixels tall, carrying a breadcrumb of where you are, a Back button, and a pager for stepping from one record straight to the next without going back to the list first.

New: a jump box. Press Cmd+K (Ctrl+K on Windows) anywhere and start typing where you want to go.

New: a Create menu in the header — start a new anything from one place.

New: an account menu at the top right. Settings has moved into it.

New: a Midnight colour preset, and a new layer of colour settings sitting underneath the presets, so the new navigation takes its colours from the theme you already chose instead of inventing its own.

New: a Theming screen on the front end, for owners and managers — change how the portal looks without going into the website admin at all.

New: contacts are one list. Businesses and people sit together, small chips mark which is which, tick boxes and a bar let you do one thing to several at once, and merging two records now shows you a review screen first.

New: a merge can be undone for up to 30 days. A merge now leaves a record of what was merged, and a suggestion you dismiss for a business stays dismissed for good rather than coming back next week.

New: a settings seam. Another PBJ module can now describe its settings to the CRM as plain data, and the CRM draws them itself inside the portal — no separate admin screen, no second look and feel. Twelve of the sixteen module settings panels now render inside the portal instead of sending you out to the website admin.

New: an optional service worker for the app shell, off unless you turn it on. It caches the frame of the app so it comes back faster. It never caches your data.

Fixed: the keyboard shortcuts. There were three separate causes, all independent of one another, and all three are fixed.

Fixed: the page was 28 pixels taller than the window. Padding on the canvas was doing it, which let content slide underneath the header when you scrolled.

Fixed: four module panels had no way to close them. They all have one now.

Database version 23.

1.56.0 — 20 August 2026

One rule now decides what the bell counts, everywhere. Something is on your bell when it is due today or earlier, when it is open with no due date, or when it is sitting in an inbox — unread mail, texts and calls still in the inbox folder. A visit booked for Friday is not on the bell on Tuesday; it appears on its own day. Work that was due yesterday and is still open stays on the bell, because a job going quiet is worse than a badge that nags.

The bell, the Inbox screen and the Notifications menu now show the same number. They are worked out in one place, so they cannot drift apart. An open ticket counts once — “waiting on a reply” is shown on the row, never added to it.

Changed: the Notifications menu row for tasks is now “Tasks needing you”, and it counts what the bell counts. It used to count every open task including ones due weeks away, which is why it never matched the badge.

Fixed: on a very short Inbox list, an item could still appear twice. The duplicate was being taken out after the list had been cut short, so the row that should have hidden it had already been trimmed off the end. It is done before the cut now.

New: dismiss a duplicate suggestion. When the finder offers two records that are genuinely two different people, you can remove that suggestion and it stays gone — and a “show suggestions” control brings the dismissed ones back if you change your mind. Nothing about either record is changed and nothing is merged; it is a note about the pair.

New: tick several records and act on all of them at once — merge two, delete (to the recycle bin), file them under a business, add them to a ticket, hide or unhide. Every record is checked individually, so anything you are not allowed to change is skipped and named rather than silently done or silently dropped. A business is never filed under another business, and more than 500 at a time is refused outright rather than quietly doing the first 500.

New: sort people, businesses and your team by name, phone or email, from the same “in what order” box you already use. The sorting is done by the server, so it covers the whole list and not just the page you are looking at.

New: a Merge tab, sitting beside People, Businesses and Team. Joining two records that are the same person is now somewhere you can walk to, instead of something buried in Setup. It takes you through it a field at a time — pick which record stays, then decide each line — and it only asks about the lines that actually have something in them.

New: a “create +” button next to the search box on desktop. It offers the same things the phone’s create screen does: a person, a business, a task, a deal, and whatever the installed add-ons offer. It is deliberately desktop-only, because the phone already has its own.

Fixed: phone numbers on a contact or business page ignored your colour theme. They came out in the browser’s plain grey, while the email address and website beside them looked right. The phone number became a button when click-to-call arrived, and the colour rule had only ever applied to links. This looked like a phone add-on problem and never was.

Fixed: the People search box said it searched by company and did not. It does now — typing a firm’s name finds the people who work there, whether they are filed under it directly or linked to it as one of several businesses. Nothing else about the search changed and the list is no slower.

Fixed: a refusal that arrived too late and in the wrong words. A manager could see the Merge button on a selection, and merging is a CRM-owner job — so the refusal only arrived once the merge was already under way, in wording meant for a developer. Anything you are not allowed to do is now refused straight away, in plain English, with nothing changed. Deleting a selection behaves the same way.

Database version 22: one new table remembering dismissed duplicate suggestions, and the missing index on the phone column so sorting a big customer book by phone is fast. Nothing existing is changed and no data is rewritten.

1.55.1 — 19 August 2026

Fixed: the business/person split could not be reached on a record that was already a business. The split wizard only opened when turning a person into a business — so on an imported record already marked as a business, the exact case the split was built for, the only control was unticking “This is a business”, which is the plain turn-back-into-a-person switch and rightly refuses while invoices are attached. Unticking now opens the same two-way chooser as ticking: turn it back into a person, or split it into a business and a person. The business keeps the record, and everything attached to it stays exactly where it is.

Changed: when turning a business back into a person is refused because records are still attached, the refusal now also points you at Split — the way to pull the person out without moving anything off the business. Portal script only; no database change.

1.55.0 — 19 August 2026

The biggest release since the portal itself: guided imports, the business/person split, and one card design across everything.

  • Imports are guided and reviewable. When an import matches somebody already in your CRM it no longer changes them silently — each match waits for you, and you approve it person by person, field by field. Every run has a viewable history showing exactly what it created, updated, held or blocked.
  • Businesses are never changed by an import or by sync. Not by Google, not by Square, not by a CSV. A business record only changes when a person changes it.
  • Split one record into a business and a person. Many imported contacts carry both. The split walks each detail — the business keeps it, both get it, or it moves to the person — and each connected service then follows the right half, so the next import updates the right record.
  • One card design everywhere. People, businesses, tickets, tasks, visits, invoices, the Inbox and the phone screens all draw the same card: an icon for what it is, a colour for who it concerns (red — a client is waiting; yellow — open internal work; green — done), the type colour on the left edge and how-late on the right. A legend on the Setup screen explains it all, in your own theme colours.
  • Completing a task is always a button. Checkboxes only ever mean checklist lines; a task card shows its 3/5 progress and asks before finishing with lines still open.
  • The timeline reads the way it should. The area is called Activity; Everything shows everything; Communication, Work and Info are the filters, each with its own sub-filters.
  • The back button really goes back to the screen you were on — never somewhere random, never out of the site.
  • Designed campaign emails. Headings, buttons and pictures with a preview — plain text stays the standard, HTML is a deliberate switch. The builder and the drip-pace setting (minutes between campaign emails) come with PBJ Helpdesk.
  • The forward calendar now comes with PBJ Dispatch & Appointments. With it active nothing changes; a CRM running alone keeps history, tasks and today’s queue.
  • Fixed: admin notice text was nearly invisible on dark admin themes, and the timeline’s Invoices / Visits / Vault filters always came back empty.

1.54.0 — 19 August 2026

One list for everything that needs you. The notification number, the Notifications menu and the unified Inbox now all come from the same de-duplicated list, so a ticket that is waiting on a reply counts once — never twice — and the number on the bell always matches what the Inbox shows. The Inbox also loads in one request now. On people and business screens the tab group is now called Activity, the Timeline tab shows everything, and adding a note has its own block between Add Work and the timeline.

1.53.0 — 18 August 2026

The Inbox now covers everything the notification count counts. Your open tickets and tasks list below the items waiting on you, on desktop and on the phone’s Agenda Inbox tab. Optional desktop notifications can be turned on from the Notifications menu, and a waiting-on-a-reply dot marks Today, Agenda and Triage rows.

The note box sits above Add Work on every profile, Add Work can raise an invoice for people with invoice access, the phone’s New task form takes a checklist, Note & photos accepts several photos, the calendar-subscribe control is a small icon, the logo goes to the phone home on a phone, and the desktop menu button no longer leaks into the phone view. No database change.

1.52.0 — 18 August 2026

One Inbox for everything that needs your attention. A new Inbox screen gathers new emails, texts, calls and voicemail, and tickets waiting on a reply from every installed module, and the top bar’s separate counters are now one Notifications menu. On a phone, the search icon sits in the top bar, the notification count opens the Inbox, and the Agenda has two tabs — Inbox and Timeline.

Profile screens are regrouped into Activity Timeline, Communication, Work and Info, newest first, and communication history now appears in the Everything timeline. Managers and owners get a Team list under Companies & People showing each agent with their WordPress user ID. The Today screen gains a needs-attention side panel, and the admin theme switch is marked as a Beta feature. Services contract 14; no database change.

1.51.0 — 18 August 2026

A sync correctness fix. The inbound-sync cursor no longer advances past a record that failed to persist, so nothing can be silently skipped. No database change.

1.50.0 — 18 August 2026

Faster lists on big databases. Additive sort indexes on people, businesses and deals remove a filesort from the everyday list screens, and staff lookups are narrowed to actual role-holders. Database version 20 (additive only — nothing to redo).

1.49.0 — 17 August 2026

Mobile Create and Find now show only actions the signed-in person may use. Queue and Triage keep full task checklists with inline editing, while checklist history stays on the customer record rather than an agent’s Everything feed.

Task cards have one completion checkbox and a separate Select control. Tickets and visits may carry a separate resolution/completion date plus safe View or Create invoice actions supplied by their owning modules. Services contract 13; no database change.

1.48.1 — 17 August 2026

Communication providers can now use visible People and Businesses phone choices, including second phone numbers. Clicking a CRM phone may offer Text message, Phone call or Cancel without making the CRM depend on a specific provider. Text messages and Calls & voicemail are first-class Communication sections. Services contract 12; no database change.

1.48.0 — 17 August 2026

The CRM now owns shared and personal communication connections, immutable inbound origins and append-only actual-channel events. Replies can default to email, text or phone from the way the work arrived; when there is no usable origin the agent must choose.

Apps & Assistants gained the protected RingCentral installer and provider-neutral seams used by tickets, invoices and dispatch. Database 19 adds three new tables without altering existing ones.

1.46.0 — 16 August 2026

Admin is simpler and the controls now live where their names say they do. The empty Tasks, Tickets and Invoices & Orders setup tabs are gone. Viewing rules are gathered under Settings → Permissions, and legacy links still lead to the right replacement screen.

Reports are now one searchable, module-driven screen. Tickets and invoices appear when their add-ons are installed, future add-ons can register their own reports, and an absent module leaves no empty report behind.

Admin and portal tabs now switch to the same nested hamburger navigation at the same screen width, including subtabs. The old phone message about Desktop being remembered has been removed. Services contract 9; no database change.

1.45.0 — 16 August 2026

The chosen suite theme now owns the whole WordPress admin when admin theming is enabled. Core pages and installed plugins use the same surfaces, stripes, notices, selections, figures and menu highlights, instead of keeping white panels or WordPress blue underneath a painted cover.

Named palettes are complete light-and-dark looks. Choosing one warns that it will clear fine-tuned colours, then it takes over all theme tokens. The palettes are more distinct; Florida remains Florida and Miami is a separate neon option; Notebook is handwritten paper; Rustic is a light whiteboard or dark chalkboard. Preview buttons, colour dots and the Handwritten and Marker font choices now show and apply their real defaults.

Everything now means everything. A staff profile can include its tasks, current tickets, invoices, visits and safe Vault metadata. Staff manage their own Notification settings, while owners keep site and group rules in admin.

Tabs and subtabs become nested hamburger menus at smaller widths, including in admin. The toolbar renders one supplied logo or one “PBJ CRM” text fallback—never both—and its notification count refreshes after every CRM page change. Services contract 9; no database change.

1.44.0 — 16 August 2026

Vault records now follow the same identity rules as the rest of CRM. A record pinned to a business appears on that business, while client people and members of staff use their own proper records.

If somebody is both a client and a member of staff, their client and staff Vault records can appear together without duplicates. Every record still has to pass both the Vault security settings and the CRM rules for who may open that person or business.

Your name in the top bar now opens your own CRM profile and timeline. It no longer leads to a dead or settings-only address.

1.43.1 — 15 August 2026

Task lists on a phone are readable again. A task’s words were coming down the screen one character at a time beside a tall coloured stripe. Tick boxes and radio buttons are tick-box sized again on every simplified phone list.

1.43.0 — 15 August 2026

Dialogs, overlays and pop-up panels now follow your chosen theme. This includes the preview showing what a business can see, on every light and dark look.

The empty second menu row is gone; screens no longer repeat the tab you are already standing on; tasks and deals in Today open properly; Reports has its own menu item; and Setup is now Settings, gathering installed add-ons in one place.

Four new looks and six colour palettes were added, and your logo now links to your own home screen.

1.42.1 — 15 August 2026

An add-on declaring a malformed kind of record is now refused immediately. It is no longer quietly registered under a different name and allowed to fail later. The same check covers notification events, merge-token contexts and assistant fields and filters. Services contract 7; no database change.

1.42.0 — 15 August 2026

Tasks, notes and files can now be attached to records throughout the PBJ suite. Work attached to a ticket follows it when it becomes a visit and comes back if it becomes a ticket again, keeping its original history rather than being copied.

Unattached work appears on the customer record, with the business taking precedence when both a person and their business could claim it. Adds one attachment table; no existing table is changed.

1.41.1 — 14 August 2026

The dates on tickets your timeline already had are put right. The previous release stopped new lines being stamped with the moment the automatic catch-up ran — but the lines already written kept that stamp, so tickets opened weeks ago sat together under the day you updated.

Every one of them is moved back to the day its own ticket was opened, automatically, a minute or two after this update. Nothing is added, nothing is removed, and a line that already had the right date is left exactly as it is.

1.41.0 — 14 August 2026

The history got finer controls, because it really is everything now. “What has happened” carries every kind of entry a record can have — notes, emails you sent, marketing emails, support tickets, tasks, deals, anything brought in from a file and anything added automatically — and until now you could only narrow it to four of those. There is now a row of Just: buttons under the view chooser, one for each kind. Choosing one keeps you in the history and shows only that kind.

On a phone the same choices sit in the one Timeline view dropdown, grouped under “Narrow what has happened”, with the record’s own sections under “Sections of this record” — so the two questions that dropdown answers are labelled instead of jumbled together.

Fixed — tickets added by the automatic catch-up were dated the day it ran. A ticket opened three weeks ago now sits on the timeline under the day it was opened, not under today. Only newly added lines were affected; a line moved from one record to another has always kept its original date.

1.40.0 — 14 August 2026

A ticket you raised now appears on your own record. It only ever appeared for the person it was from, the business behind them, and whoever it was assigned to — so if you logged a ticket and gave it to somebody else, you had nothing to show for it. Whoever raised a ticket is now on it too.

Tickets you already have are brought up to date automatically, a minute or two after you update. Nothing is duplicated and no date is changed.

1.39.0 — 14 August 2026

You can now actually open a staff member’s record. 1.38.0 gave everybody on your team a record and 1.38.1 filled it with their work — but because those records are hidden, nothing anywhere linked to them, so the only way in was to dig through the hidden list in Manage everything and type the address by hand. Every place that lists your team now carries a direct link to that person’s record.

1.38.1 — 14 August 2026

Fixes 1.38.0 so it actually finishes the job. Staff got a record of their own, but the work already on your system had been filed before that record existed — so an agent’s history was empty. Existing tickets are now put onto the agent’s history too, automatically, a couple of minutes after the update. Nothing is duplicated and no date is changed.

1.38.0 — 14 August 2026

Your staff now have a record of their own, so work shows up on it. A ticket assigned to somebody already appears on the customer’s history and their business’s history — now it appears on the agent’s history too, which is what “everyone who touches a ticket sees it” was always meant to mean.

These staff records are hidden. They do not appear in your contact list, your business list, the people pickers or the duplicate finder, and they are never included in a marketing email because they have never been asked to subscribe.

If a member of staff is already in your contact book — because they are also a customer — that record is used as it stands. Nothing about it is hidden, changed or unsubscribed, and no second copy of them is created.

Existing staff are set up automatically a minute after you update. Nothing for you to do.

1.37.0 — 14 August 2026

Tickets now show up on every record that touches them. A ticket filed to a business appears on the business’s timeline as well as the person’s, and on the agent who owns it — before, it only ever appeared on one record, so a business you had carefully filed tickets under showed an empty history.

The Support tickets list on a record reads the ticket’s own customer fields instead of guessing from the email address. Filing a ticket under a customer now actually puts it on that customer.

Two people who share an email address no longer see each other’s tickets on their records.

Existing tickets are put onto the timelines they were missing from, automatically and in the background, once after updating.

1.36.3 — 14 August 2026

Housekeeping only. The translation template shipped inside 1.36.2 was one version out of date, because it was regenerated after the release file had already been built. Nothing on screen changes and nothing you do changes. No database change.

1.36.2 — 14 August 2026

On a phone, a contact or business page could show BOTH the Timeline view dropdown AND the full row of section buttons at the same time.

Whether it happened depended on which tab style your site is set to under the look settings: sites on Segment got both, sites on Underline did not — which is why it took a real phone to catch. The phone now shows the dropdown only, whichever tab style you use. Nothing changes on a computer. No database change.

1.36.1 — 14 August 2026

There was still a second way to choose what you were looking at on a contact or business, and it made the page read as though it had two timelines. The row of sections along the middle and the “Show me” dropdown under the note box both picked what the page showed, and four of the choices — Support tickets, Tasks, Deals and Marketing emails — appeared in both.

There is now ONE control. It carries everything: the whole history, the four ways to narrow it down (notes, emails you sent, things brought in from a file, things added automatically), and every section of the record. Nothing has been taken away — the four choices that were in both lists now open the fuller section view instead of a filtered feed. No database change.

1.36.0 — 14 August 2026

The contact and business page has been rebuilt, and the Mobile/Desktop switch has moved.

There is now ONE “Desktop” button, in the top bar beside your logo, and its background tells you which version you are on — solid when you are on the desktop version, outlined when you are on the phone screens. It replaces the pair of buttons that used to sit at the end of the menu row.

On a contact or a business, everything about the record is now in one block on the left: the photo, the name, a much smaller business/person switch, the labels, and the contact details. Those details now show ONLY what somebody has actually filled in — no more columns of “Not set” — with an Edit button that brings the empty ones back when you want to add one. “Start something” is now called “Add Work”, and on a phone it becomes a dropdown instead of a row of buttons.

The row of history tabs is unchanged on a computer, and on a phone it collapses into a single “Timeline view” dropdown, because ten tabs ran off the side of the screen.

Everything that used to be the unnamed column down the right is now called Attributes. On a computer it sits at the top of that column; on a phone it moves to the bottom and starts closed. The marketing email setting has moved into it. At the top of it is a new Show as client button, which shows you what that customer sees when they sign in to your portal — read-only, and built from what each part of the system says a client may see, never from a fresh look at the raw records.

The whole page now fits on a phone in one column with nothing running off the edge. No database change.

1.35.2

Finished work no longer appears on your day at all. The previous release stopped a completed job being called overdue, but left it in the list – so a visit marked Done and dated two days earlier still showed under “Due, across everything” in Triage. It is now removed where the list is built rather than at each screen that reads it, so every screen gets it.

1.35.1

Fixes work vanishing from the Agenda on a phone. The Agenda kept only rows whose lateness was worded one of two particular ways, and the three places that fill that list did not all word it the same – so a visit due tomorrow, and every open ticket on a site with no service-level policy, was fetched, permission-checked and then quietly dropped before it reached the screen. Nothing errored, which is why the rows simply looked absent. The CRM now decides how late every row is itself, in one wording, on the server, and it believes a plugin that says a job is finished instead of recalculating from the date. The Agenda now lists everything still open, latest first, and leaves out only genuinely finished work.

1.35.0

Your whole diary on your phone, from one button. On a phone the Agenda now has a single button at the top that puts your diary on the phone and keeps it up to date by itself, instead of a separate download every time you visit. One thing worth knowing: the link that does it is personal to you, and anybody who has it can see your diary — so treat it like a key to the van.

Every visit in the Agenda now carries two buttons, Google Maps and Apple Maps. Tap either one and the address is already in it.

Contacts, businesses and marketing emails have all had their tops tidied. A clear Edit button at the top of the screen, a title you can change just by clicking it, and a print button.

Fixed: printing a CRM screen now gives you a clean black-and-white page. If you were using a dark colour scheme, printing could come out almost blank. Printed pages now ignore the colour scheme altogether.

1.32.0

Businesses, tags, your saved lists and a record’s history are now open to your assistant. Businesses come through the same door the rest of the CRM uses, so a manager or an employee is handed exactly the list they already see on their own screen. Tags and saved lists can be listed and opened by name, so an assistant can say what a tag is for without reading every contact that carries it. And an assistant can read the history on a person: asking about somebody you are not allowed to see answers exactly the same way as asking about somebody who does not exist, so it can never be used to find out who is in the book.

Fixed: page two really is page two. Asking an assistant for the second page of your files, your calendar entries or your staff used to hand back the first page again.

Fixed: a business you are not allowed to open no longer carries a link to it. On a business whose details are withheld from you, the assistant was still being handed a direct link to that record. It is now left out altogether — left out, not blanked. Nothing about the business itself changed: everybody still sees every business name.

Your assistant now has 74 jobs it can do across 25 kinds of record, up from 38 across 11 — and every new one follows the rule the first 38 followed: an assistant sees exactly what the person whose link it is can see, and nothing else. Every job that existed before still exists and answers the same way.

1.31.1

The assistant connection lives in one place. It is on the Apps & Assistants settings screen and nowhere else — the extra copies that had turned up in the portal and on the phone screen have been taken away, because nobody asked for them. The connection itself is unchanged: the same link, the same Copy button, the same “Test my connection” check and the same safety notes.

1.31.0

Three assistant jobs that could never work now work. Listing your files, opening one file and opening one calendar entry all answer properly instead of coming back with nothing.

You can now narrow what you ask for. Each kind of record offers its own set of filters: people by who looks after them, by business, or by whether they may be marketed to; tasks by list, customer, who they are handed to and when they are due; deals by list, customer, business, owner and stage; calendar entries by the dates they fall between. The choices are handed to the assistant and checked again on the website, so a value that is not on the list is refused with a plain message instead of being quietly ignored. A filter can only ever narrow what that person could already see — it can never widen it.

The calendar window can be moved. It still starts at a month back and three months ahead, but an assistant can now ask for months outside that; a stretch longer than a year is trimmed rather than turned away.

“What has changed since” now gives an honest total everywhere it is offered, and it is no longer offered at all on records that do not carry a changed-on date.

A new “Test my connection” check answers in plain English — for example, “Working. Your assistant can see 38 tools across 11 kinds of record.” It never creates a token as a side effect. And the Copy button now tells you out loud whether it worked, then puts itself back a few seconds later.

1.30.1

The date-and-time picker (used when booking a visit, among other places) now follows the dark themes: the browser draws its calendar pop-up and its little icon dark instead of white. The earlier fix covered plain date fields only.

1.30.0

Tasks and Tickets are now separate main tabs, in the portal and in wp-admin — old links keep working. Dispatch gets its own main tab between Invoices & Orders and Companies & People, and the Archive add-on now shows as Vault, under Communication.

A Mobile/Desktop switch lives in the menu bar on every screen. Press Mobile and this device opens the simplified phone interface from now on; press Desktop and it stays on the full workspace. Each device remembers its own choice.

A person can belong to more than one business. The contact page gains a Businesses panel — link somebody to every firm they really work at, jump to any of them, unlink when they move on.

More ways to make it yours. Look and feel adds a typeface picker (system typefaces only — nothing is downloaded from anybody) and per-colour overrides for the main colours. Everything starts from your current preset and nothing changes until you change it; Reset puts the look back and keeps your logo and app icon.

The company logo no longer shows as a broken picture. The folder it lives in could inherit a “deny everyone” rule written for private files; the logo and app-icon folders now state their own permission. Home-screen app icons are fixed by the same change.

Manage tasks now works like Manage tickets: opens on open work, sortable columns, bulk set-a-due-date and delete, and “apply to everything that matches” — deleting asks you to type the count first.

1.29.0

Apps & Assistants. Connect an AI assistant (Claude, ChatGPT) to your CRM with a personal token: it can look up and work with contacts, tasks, deals, tickets, invoices, visits, files and calendar entries — always as you, seeing only what you could already see. Off until you create a token; revoking one cuts access immediately; protected Vault values are never handed out.

1.28.0

The Calendar group is now the Dashboard — and it is where you land. Triage first for administrators, the Today queue first for everyone else, with the Calendar right beside them. Nothing moved out of reach: Tasks and Tickets keep their own screens.

Subscribe to your calendar. A personal, private link Google Calendar or Apple Calendar can subscribe to — your own tasks, tickets, visits and invoice dates, updating on its own. Get a new link, or turn it off, any time from the Calendar screen.

Photos on people and businesses. Stored privately inside the CRM — never the public Media Library — and only shown to people allowed to see the record. Existing photos keep working until replaced.

Manage tasks. A manager screen listing every task your rung allows, with filters, bulk done and reopen, and hand-to-someone using the same roster as Manage tickets.

Also in this release: tickets, tasks and invoices each carry their own colour on the calendar and cards — adjustable on Settings ▸ Theming and readable on every preset; the calendar’s List view now shows the newest day first, with a toggle to flip it that remembers your choice; and the phone app icon now has a shipped default, so a site that never uploads one gets a proper CRM icon instead of whatever the phone invents.

1.27.0

One place to say how your email leaves this website — for the CRM and every add-on. A new Email delivery card on Connected accounts lets everything go out through a mailbox you already own instead of the website’s built-in mailer. That matters more than it sounds: until now the built-in mailer carried nearly all of it — every appointment email, most help desk notices, invoice reminders unless you had chosen otherwise — and mail sent that way often lands in spam or is refused outright, because the service receiving it has no way to check your website was allowed to send as you.

There are no new server or password boxes to fill in: it uses the mailbox you already set up on the card above it, Gmail and Microsoft included. You also choose what the sender line says — leave every message exactly as it is, fill it in only where a message did not set one (the sensible default), or always send as one address. A Send a test email button tells you what the mail server actually said if something is wrong, in its own words.

Nothing changes until you pick a mailbox. Appointment invitations still arrive as proper calendar invitations, and where a campaign or an invoice was already set to send from its own mailbox, that still wins. No database change.

1.26.0

A simplified phone interface. On a phone the portal opens with three big choices — Find, Create, Desktop. Find gives every kind of record a phone-sized list: people get an A-to-Z rail and sorting, businesses a search-first list, and tickets, invoices and visits a type-to-find screen. Create adds people, businesses, tasks, deals, and notes with photos — photos go through the CRM’s own file store. Desktop is the full portal, and choosing it is remembered on that phone. Turn the whole thing off under Settings ▸ The basics ▸ Simplified mobile interface.

1.25.0

The header search can be narrowed. Pill filters for every kind of record — people, businesses, tasks, deals, files, and every module’s records. Deals and files join the search. Results only ever name what you could already open.

1.24.0

A new look-and-feel system and a new top bar. The Look and feel screen now offers a Mode (Light or Dark) and a Style (Standard, Terminal or Notebook) — every style works in both modes, every combination is contrast-checked, and the typefaces are ones already on your computer, so nothing is downloaded from anybody else. You can also upload a company logo, which appears in the new top bar and on the sign-in page. The sign-in page now follows your chosen look properly, including dark modes.

The WordPress admin bar is gone from CRM screens, replaced by the CRM’s own bar: your name (click it for your profile), your open task and ticket counts, your inbox count if you manage mail, who else is signed in right now, a shortcut to the admin side if you have it, a search that looks across people, businesses, tasks and tickets — and only ever shows you things you could already open — and Log out. On a phone it folds into a Menu button.

For developers: the services contract is now version 4, adding header-count and search seams; modules declare header_counts and search payloads, already scoped and already redacted, and the CRM never enriches them. New routes: GET /header, POST /header/heartbeat, GET /search.

1.23.0

One answer to “who can I hand work to”. A manager’s list is their teams, plus staff not yet in any team, never anybody above their own rank — and the same list is read by the screen that draws the dropdown and the server that enforces it, so the two can never disagree. This fixes a quiet family of blank pickers: a manager who was not in any team used to see nobody but themselves, which read as a broken screen rather than an answer.

For developers: the services contract is now version 3, adding selectable_staff() and can_assign_staff(). The help desk directory and the visits booking picker consume them; feature-detect on PBJ_CRM_Services::VERSION >= 3 and keep your fallback.

1.22.0

A fix that matters to anyone who is not a site administrator: the list of businesses you pick from was coming back empty for managers and employees, so filing a person under a business always answered “Pick a business first.” Everyone can now see and choose every business again — by name, with the private details still hidden from staff who are not allowed them. And businesses are now chosen by typing a few letters instead of scrolling a list, which used to stop at 200.

One shared search-and-choose box now handles attaching a person or business to something, starting with tasks: the task form gains “Who is it for? (optional)”, so a task can be tied to a customer — or untied from one — while you are writing it. Click into the box and your most recent records appear; type a few letters and matches appear, with businesses marked. If the person you need is not in your list yet, the box offers to add a new person or business on the spot — a small name, email and phone form — without leaving what you were doing. It only ever offers: nothing is saved until you press Save.

Every customer’s page — person or business — gains a “Start something” row. One press starts a task for that customer with their name already picked, and add-ons put their own buttons on the same row: the help desk adds “New ticket”, and Dispatch adds “New visit” and “New appointment”, each landing on its form with the customer already filled in. The row only appears when there is at least one thing you are allowed to start.

You can now hide the clients you are done with. A hidden record keeps everything — its history, its notes, its jobs, its invoices; old links still open it and an email it sends still matches up to it — but it drops out of your lists, your searches and every “pick a customer” or “pick a business” box until you put it back. That happens on the new “Hidden records” tab under Companies & People ▸ Manage everything, where every row has one button: “Put back”. It is a shelf, not a bin — nothing on that tab is ever deleted on a timer. Hiding also says nothing about marketing email: who may be emailed is still governed only by the record’s marketing status and the do-not-email list, so hide someone AND unsubscribe them if you mean both. An import that meets a hidden record again updates it quietly without bringing it back into your lists.

Importing contacts is now guided instead of instant. Whatever the source — Square, Google Contacts, Microsoft Outlook or a CSV file — you pick where the contacts come from, see what goes where, and then get a check that counts what WOULD happen: how many people would be added, how many updated, how many are already up to date, and how many rows have a problem, with the first ten rows shown. Nothing at all is written until you press the one confirm button, which states those counts on its face — “Bring in 12 new people and update 30.” Walking away imports nothing, and a check older than 15 minutes is run again first, so what you confirm is always what happens. Scheduled syncs and add-ons that import through code are unchanged.

Every address in the CRM now offers “Open in Google Maps” and “Open in Apple Maps” links — built in your browser and sent to nobody until somebody actually clicks one — with a tick box under Settings ▸ The basics (Map links, on unless you turn it off) that removes them entirely, so if you want no page of yours linking out to a maps provider at all, untick it and that is exactly what you get. This release adds one column to the contacts table and takes the database to version 17; every existing record reads as “not hidden” and behaves exactly as before.

1.21.0

The “All businesses” tab is now the same screen as “All people” instead of a thinner copy of it. You get the tag filter, the “who looks after them” filter, the “how they got here” filter, your saved lists, the marketing filter and a fourth sort order; you can tick several businesses and change their email choice in one go, with the same consent question and the same “we left these alone” panel; and every card now shows its tags, its marketing badge, who looks after it, when it last changed, and how many people work there.

Three things behave differently afterwards and are worth knowing. The businesses tab now follows your staff visibility settings exactly the way the people list always has, so a manager or an employee who is not allowed a particular business no longer sees it on this tab at all. The search box now matches names, both email addresses, both phone numbers and job title — so looking a firm up by its web address no longer finds it, while looking it up by email now does. And very old company entries left behind by early imports, never attached to a business record, cannot appear on this list at all; they are still reachable at their own address and nothing has been deleted. One smaller change on both tabs: the “People / Businesses / people and businesses” dropdown has gone, so each tab shows its own kind only and the same firm never turns up in two places. No database change.

1.20.0

Fixes the error you got when you put an email address on a customer and something else already had it. Sharing one address is normal — office@ for a whole firm, a couple on one mailbox, one person you deal with at two businesses — so saving now tells you who else is on that address instead of refusing to save. A second fix rides with it: when somebody on a shared address unsubscribes or their mail bounces, every contact on that address is marked, not just the oldest one — and that is the field your segments and audiences actually read. Also fixes date boxes on the dark colour schemes, where the little calendar button was drawn black on black and could not be seen. No database change.

1.19.0

Photos and paperwork now live on the record they belong to. Drag a picture onto a person, a company, a to-do or a job; pick one off your computer; paste a screenshot straight onto the page; or take a photo on your phone while you are standing in front of the thing. Pictures taken on a phone are shrunk before they are sent, so a job full of them does not eat your website’s room or your data allowance. A small picture stays small — the limit is a ceiling, not a target.

None of it goes into the WordPress media library. Files sit in a private folder the web server refuses to hand out, under names nobody could guess, and every download and every thumbnail checks who is asking before it answers. That is the point of it: a photo of a customer’s alarm panel, a signed worksheet or a serial plate is not something that should be readable by anybody who guesses the address.

Every file can carry a label. “Before”, “After”, “Receipt”, “Estimate”, “Serial plate”, “Signed”, “Damage”, “Parts” and “Site” are ready to tap, and you can add your own. Inside a record the files gather into a drop-down under each label, with anything unlabelled kept at the bottom where it cannot quietly go missing.

Each file has a “Share with the customer” switch, and it is off until somebody turns it on. When it is on, the customer sees the picture and not the notes attached to it — where it was taken and what took it are stripped out of the copy they get.

Files use the same 30-day recycle bin as everything else. Taking a file off a record takes it off THAT record; if it is not filed anywhere else it goes to the bin and you have 30 days to change your mind. Settings shows how much room your files are using and warns you at 80% of whatever you set aside for them, before your host does. Big files go up in small pieces, so a long video is not stopped by an upload limit, and a dropped connection only re-sends the piece that failed.

Deleting somebody under a privacy request now also destroys the files held only about them, the copies on disk included. Files that are also filed against somebody else’s job are kept, and the screen tells you so. This release adds four database tables and takes the database to version 16. Nothing existing was altered.

1.18.0

Businesses are visible to your staff again. The previous release protected a business’s private details by hiding the business itself from anyone whose contact list did not already include it — and a business that arrived from a CSV, Square, Google or Microsoft import belongs to nobody until somebody claims it. On a normal site that meant every business vanished for every employee and manager: the company list came back empty, and with it went filing a person under a business, raising an invoice against a company, and pinning an Archive record to one.

The protection is still there and still withholds exactly the same things. Somebody who is not allowed to see a business now sees its name and web address and nothing else — no notes, no phone number, no postal address. Enough to pick it from a list and label a record; nothing that was copied down from the business itself.

Opening a company directly no longer refuses staff who can see it in the list. Companies whose business is in the recycle bin are still not found, which is unchanged and deliberate. No database change.

1.17.0

A privacy fix worth taking: a business’s notes, phone number and address were visible to every staff member, whatever their contact list allowed. Also fixes the recycle bin refusing customers whose tickets are finished, and money on the calendar printing with no currency sign. No database change.

1.16.0

Put the CRM on your phone. Under Settings → Theming there is now a switch, a name and an icon upload; turn it on and a phone offers “Add to Home Screen”, giving your team a full-screen CRM with your own name and logo under it instead of a browser tab. The icon is cut square and resized for you and is kept in the CRM’s own folder, never your Media Library. It deliberately does not work offline — the CRM has to ask the website who you are on every visit, so there is nothing safe to keep on the phone. Off until you switch it on.

1.15.0

A List view on the calendar. One day after another instead of a grid, which is far easier to read on a phone and better at answering “what is next?”. The month grid is unchanged and both are always available — pick with “How to show it” and it remembers your choice. On a small screen the List is what you get until you choose otherwise. Day headings for today and days still to come open the same “New task” button the month view got in 1.14.0.

1.14.1

Fixed: calendar times now read on your business’s clock, not the clock of whichever computer you happen to be using. Before this, the DAY an item was filed under came from your business’s timezone while the TIME beside it was converted to the viewer’s — so a task due at midnight could sit under Wednesday and read “8:00 PM”. Every row on the calendar had it. Display only; nothing moved to a different day.

1.14.0

Tapping a day on the calendar now offers what you can start on it. Today and any day still to come show a “New task” button that opens the task editor right there with the date already filled in. Days that have been and gone do not offer it — a task dated last Tuesday is late the moment you save it. The list is built to grow, so add-ons can put their own entries beside it.

1.13.0

Today — a single list of everything with your name on it. Your tasks and your help desk tickets together, sorted by when they are due, with anything late in red at the top. It is the first thing under Tasks & Tickets. A task can now say which ticket it is the follow-up for, and when both would show they appear as ONE line carrying the ticket’s number and a button to open it. Nothing was replaced: the full Tasks and Tickets lists are still their own screens. Today only shows tickets when PBJ Helpdesk 2.8.0 or newer is installed.

1.12.0

Internal only. Add-ons can now ask the CRM for the address of their own settings panel on the Templates & Notifications tab, instead of guessing it. That is what lets an add-on move one of its screens here without leaving a dead link behind — PBJ Helpdesk 2.7.0 is the first to use it. Nothing changes on screen and no data is touched. Update this before updating the Help Desk.

1.11.0

Dark mode is properly dark — the page behind the CRM is black rather than charcoal, and it is black the moment the page opens instead of flashing white first. Cards stay slightly lighter than the page so they still read as cards. The CRM screen is also now genuinely independent of your website’s theme: your theme’s styling no longer reaches inside it at all, so the CRM looks and behaves the same whichever theme you run and however you change it — and every other page on your site is completely untouched. Finally, the screen uses the full width of your display instead of sitting in a fixed column, so wide tables get the room they need, with a hairline border keeping the edge visible: dark on a light page, light on a dark one. Appearance only — nothing changes about how anything works.

1.10.0

A new Templates & Notifications tab gives you one place to decide which emails your team gets — and, because add-ons put their own templates there too, one place to find the wording of anything you send. You can now change one person’s email settings on their behalf. Staff groups have moved into the CRM itself, so a group means the same thing whichever add-ons you run; your existing groups came across exactly as they were, and deleting a group now simply ungroups its people rather than leaving them pointing at something gone. Your team can fill in their own job title, direct number, booking link, office hours and photo, and drop any of it into an email with a click — every screen that writes an email now has a button for each merge field, offering only the fields that make sense there. The ready-made marketing emails sit above “write a new email” rather than inside it, and choosing which mailbox a marketing email sends from is a dropdown of your own mailboxes instead of a box asking for its number. The CRM screen now fills the page on its own, with no site logo, menu, header or footer around it. Security: removing someone from the CRM signs them out everywhere immediately and refuses to let them back in, and staff sign-ins now last hours rather than the site’s default of days — so anyone signed in when you update will be asked to sign in again. Your existing notification settings are carried across, and the database updates automatically.

1.9.0

The Square, Google Contacts and Microsoft Outlook import cards each gained a tick box: Bring people who are already here up to date too. Left off, which is still the recommendation, an import only fills in blanks on somebody already in the CRM, so it can never contradict what your team has typed. That is also why running the same list a second time reports a large “skipped” number and nothing has gone wrong: a person who needs no changes is counted as skipped, not updated. Tick the box and the other service wins where the two disagree, so records you imported months ago are brought up to date. A blank at the other end never wipes something you already have, either way. Off by default. No database changes.

1.8.0

A bug-fix release from a full code review of the whole suite. Merging two records no longer fails when their marketing settings differ. Somebody moved to the recycle bin can no longer be emailed by a campaign that is already going out. Invoices with no customer attached, or filed against a business, appear on the calendar at last. Editing a business through the company screen now follows the same permission rules as everywhere else. Plus: a timed-out sign-in asks you to refresh instead of claiming you have no access, the “Which PayPal” box no longer locks itself on Live, checklist ticks from two people at once no longer lose one, and turning a business back into a contact now really does check for open help desk tickets.

1.7.0

Campaign emails now write in the standard WordPress editor with starter templates and an “Insert a detail” personalization picker. Business profiles carry the full field set with an Employees panel and address boxes. The two-way sync can no longer create a business or company on its own — company changes arrive as a note for you to act on.

1.6.0

Square import fixes (custom fields now fetched per customer; phone-only customers import; same-provider duplicates stay separate), repeatable checklist tasks, calendar filters that remember your choices, card-style people/business lists, and a full mobile pass across the suite.

1.5.x

The CRM team became the ONLY staff list for the whole suite (helpdesk agents are CRM staff), and customer-less helpdesk tickets became visible on the calendar.

1.3.0–1.4.8

The fully guided Connected accounts page: a step-by-step card for Square, PayPal, Stripe, Google and Microsoft, visible webhook addresses, credential locking with a Disconnect button, “Sign in with” mailboxes that send over true XOAUTH2, and much clearer error messages throughout.

1.0.0–1.2.0

The foundation: contacts and businesses in one book, imports and two-way sync with a human approval gate, the drip email marketing engine with tracking/unsubscribe/consent, reports and GDPR tools, the whole-business calendar, the front-end portal with themes, the module hub, the 30-day recycle bin and the bulk record manager.

Latest Articles