Skip to main content

PBJ Dispatch & Appointments — Changelog

Every release of PBJ Dispatch & Appointments, in plain words.

August 8, 2026

Current release: 1.34.1 (August 2026)

1.34.1 — 29 August 2026

Housekeeping only – nothing on any screen changes. The three tabs on a visit that are genuinely a visit’s own (On site, Notes & photos, Reminders) now say so in the code, in the form the suite’s UI checker reads. The checker had been flagging them since Phase 25 as if the CRM drew them; it does not, and now the file says why.

1.34.0 — 29 August 2026

All six settings screens are visible to a CRM owner. They were being declared at the WordPress-administrator level because the level was worked out when the plugin started up – before the site knows who is asking – so the answer was always the fallback. Times, Kinds of work, Stages, Our locations, Reminders and Visit reminders now open for an owner, as they were always meant to. The level is now fixed rather than worked out.

1.33.0 — 29 August 2026

  • The sixteen email templates are on the front end. Settings > reminders and confirmations now opens in the CRM: the subject and the message for a booking, a reminder, a move and a cancellation, for both the customer and whoever is doing the job.
  • The curly-bracket words are listed at the top of the screen. The clickable picker is only in the website admin, which is one click away and still the complete screen – said here rather than quietly left out.
  • Clearing a box still puts the shipped wording back, exactly as before, and a message you did not touch is left alone.
  • This was the last of this module’s six settings screens still sending you to the website admin.
  • Bookings can now have their own “Who sees what” setting. A CRM owner can set them to open or scoped separately from everything else. Nothing changes until they do; whoever a job is assigned to always keeps it, and a customer still only ever sees their own.

1.32.0 — 29 August 2026

  • Every “assign to” list now shows who is out of office, and until when. Nobody is hidden — you still choose.

1.31.2 — 28 August 2026

  • Translation template regenerated. No code change.

1.31.1 — 28 August 2026

  • A cancelled stage no longer takes the accent colour. On a finished visit the only stage left is Cancelled, so “call it off” had become the brightest button on the screen.

1.31.0 — 28 August 2026

  • Visits and appointments get a Close button in the accent colour, the same verb tickets use. It moves the booking to its done stage through the usual finish flow, so the outcome, miles and invoice question are still asked.

1.30.2 — 28 August 2026

  • Booking: the Customer question is one line with its helper text beside it, All day is a bordered pill rather than a loose tick, and the two note boxes say who reads them — one quiet `internal`, one in accent.
  • The address row grouping in WHERE is deliberately still the core’s auto-fit row; expressing the sheet’s two-row grouping would need a module to declare column widths, which the UI contract forbids. Named rather than approximated.

1.30.1 — 29 August 2026

  • Ticket to visit: the customer’s address is prefilled into real, editable fields and is always submitted. The server always had the address; the screen never showed it.
  • The booking create page follows mockup 12 — sectioned with a left label rail, a Visit/Appointment switch, duration pills, a “customer sees” callout, and two separately-labelled note boxes.
  • Visit screens leave the customer name to the CRM instead of writing “Selected person”.

1.30.0 — 28 August 2026

  • Converting a visit asks whether to cancel it, and cancels it when the new ticket or invoice is actually saved.
  • Cancelled, not “done”. A visit that turned into a ticket is one nobody attended — marking it done would be wrong in the record, and would ask you for the outcome, the miles driven and an invoice decision for a journey that never happened.
  • It uses whatever your cancelled stage is called on that booking’s own path, so a renamed stage still works.
  • Not offered on a visit that is already finished or cancelled.

1.29.0 — 28 August 2026

  • Change a visit’s customer from the visit. A small Change button beside the customer’s name, the same one a ticket has. Choosing a business then asks whether somebody there should be named, with “Just <business>” as a real answer.
  • Only somebody who may re-file a visit sees the control — the rest of the team is not shown a button that would be refused.
  • Visits no longer appear in the Inbox. A visit is not waiting on a reply, it is waiting on a date, so it stands in Needs me and on the calendar where it is already drawn against the day it happens.
  • A visit’s facts are controls: the engineer and the time are set from the record itself.

1.28.0 — 26 August 2026

  • A visit’s message channels come from the CRM now. The CRM’s phone channel was never handled here, so a visit with a number on file offered no way to log a call. It does now.
  • Cc and Bcc on an ad-hoc visit message.
  • The recipient ceiling refuses instead of silently dropping the twenty-first person.
  • The visit address offers Google and Apple maps.
  • A visit has a Thread — customer-visible notes and stage changes.
  • Writing an internal note is the composer’s Internal-note channel, the same control a ticket uses. The separate note box is gone.
  • Facts read “Arrival window” and “Address” instead of repeating their own headings, and assigning somebody searches your team rather than listing all of it.

1.27.0 — 26 August 2026

  • Visit facts are editable where they stand. The assigned engineer is a search-first control; a new When row edits the visit’s single stored time, never the window edges, which stay derived.
  • The visit’s stage deliberately stays a flow rather than a dropdown: a move to a done stage still collects the outcome, the miles and the invoice decision.

1.26.0 — 25 August 2026

  • Agenda and Manage moved onto the CRM’s shared cards, workspaces, readers and dialogs.
  • Day, Week and Month Calendar stay Dispatch-owned, on the shared cross-module event registry.

1.25.0 — 24 August 2026

  • Agenda and Manage now use CRM-owned item cards, readers, footer actions and account-saved workspaces.
  • The Dispatch-specific Calendar supplies Day and Week boards while retaining the CRM Month view and a working return toggle.
  • The shared event registry includes tasks, ticket milestones, invoice due dates, recurring invoice dates and future module providers without rewriting the Calendar.
  • Route views show authoritative stored mileage when present and intentionally omit computed drive time.

1.24.0 — 24 August 2026

  • Agenda and Manage now use the same CRM-owned cards, readers and saved workspace used throughout the suite.
  • Calendar offers working Day, Week and Month views and reads the shared work-event registry, so future modules can contribute events without a calendar rewrite.
  • Tasks, tickets and invoice milestones can appear beside Dispatch work; authoritative stored mileage is shown when available and computed drive time is deliberately omitted.

1.23.0

New: the visits portal takes the CRM’s theme and the suite’s shared cards, so it looks like the rest of the portal instead of like a separate product bolted on beside it.

Changed: Manage is the screen you land on, and the strip of sub-tabs above it is gone. The filters already on the Manage screen do everything the sub-tabs did, so the strip was a second way to do the same thing.

New: five settings screens are now drawn by the CRM inside the portal, in the same look as everything else. What they do has not changed — only where they live and how they look. No database change.

1.22.0

New: bookings have their own row in the portal header’s Notifications menu. “Visits” counts the open bookings assigned to you that are due today or earlier. The number comes from the CRM’s one rule, so the bell, the inbox and the menu row always agree. A count of nothing is left off rather than shown as a zero. Until now visits had no row at all, which is why the bell used to be higher than the rows added up to.

New: tick boxes on the visits list, with a bar for doing one thing to several at once — hand them to somebody, mark them finished, call them off, or delete them. Permission is checked again on every single booking, and anything left alone comes back with the reason. A selection over 200 is refused rather than quietly cut short. Ticks clear whenever the list is redrawn.

Changed: closing or calling off a booking puts you back on the screen you came from — your inbox, if that is where you started — instead of leaving you sitting on a finished job.

Changed: the “Today” rows this plugin hands the CRM look one day ahead by default rather than a week, because a booking made for Friday does not belong on today’s bell.

Deleting a booking is permanent — there is no recycle bin for bookings. Calling one off is the reversible one, and the bulk bar asks twice before deleting. No database change.

1.21.0

A new Manage view in the visits area: every booking you’re allowed to see, with filters for kind, stage, who’s on it, a date range and search, plus paging. Booking rows draw the suite’s unified cards, with how-late shown on the card’s edge. And this plugin now carries the suite’s forward calendar — with it active the CRM calendar works exactly as before; without a scheduling module the CRM keeps history, tasks and today’s queue only.

1.20.0

Email more than one person about a visit. The customer message can now also go to other contacts on the job — tick them, find them in search, or type a plain email address. Bad addresses are refused and no contact is ever created behind your back.

1.19.0

The phone’s Create menu now lists New visit and New appointment natively, and the invoice control on a finished job says View invoice when one already exists instead of offering to create a second. No database change.

1.18.0

A company visit uses that company’s saved mileage and does not ask again. A historical person cannot suppress or replace it; person mileage is used only when there is no company. Zero is valid, and the server rechecks the authoritative value when the visit closes.

Newly completed work gets its own completion entry in Agenda and may offer Create invoice or No invoice to a permitted agent. Ticket and follow-up outcomes do not duplicate the prompt or create another record.

1.17.0

Tickets, visits and invoices keep the communication method of the work they came from. Staff visit detail can send email, text or click-to-call through the CRM provider while automated reminders keep their existing policy. No database or minimum-CRM change.

1.16.0

Each finish path now asks only the question it needs. Close asks for miles; follow-up asks for its time, creates the next dispatch and opens it; ticket closes the visit, creates the ticket and opens that ticket.

The date control fits on a phone and keeps its calendar button visible. Current visits also appear in CRM Everything. No database change.

1.15.0

The “Visits and appointments” heading no longer repeats the Dispatch tab directly above it.

1.14.1

Fixed: the three finish choices could not be reached. 1.14.0 built the whole thing and never fitted a door to it — there was no button and no screen that led to it. Finishing a visit now opens the three choices — Job done, Back to a ticket for office follow-up, or Book a follow-up visit — from the same place the stage buttons have always been.

The miles question moved onto that panel rather than being lost. It belongs to closing the job, not to any one of the three choices, so it is asked once and goes with whichever you pick.

A follow-up is booked in your own time zone. You type the time; the site converts it once, in the same place every other booking time is converted.

Fixed: a visit’s job number is now read from the visit, never rebuilt from it. Everything else in the suite quotes the number stored on the record; this plugin was working one out from the id and your prefix setting instead.

You would only have seen that if you had changed the prefix. Job numbers start with V out of the box. Change it to JOB and every visit already booked keeps its own number — that is the number on the record and in every email you have already sent — but a task, note or file attached to one began reporting that it lived on JOB-21, a job number on no record at all. Worse, turning that visit back into a ticket wrote the wrong number permanently into the ticket’s subject line. The number on the record is now the number everywhere, including on a ticket made from a visit.

No database change.

1.14.0

Update PBJ CRM first. This version needs PBJ CRM 1.42.0 or newer and will not run without it. That is deliberate: the alternative is tasks quietly not following a job, with nothing on screen to say why.

Finishing a visit now asks what you actually mean. Three choices: Job done, Back to a ticket for office follow-up, or Book a follow-up visit.

Back to a ticket makes the ticket, closes the visit, and brings every task and note across with it.

Book a follow-up makes a new visit rather than moving this one. Moving it would change the entry already in everybody’s calendar and lose the fact that the first visit happened, which is the whole reason you are booking a second.

A visit is now something you can attach things to — tasks, notes and files.

1.13.1

Fixes a completed or cancelled visit reading as overdue. The word this plugin handed the CRM was decided purely from the clock, so anything whose arrival window had passed came back as late whether or not the work was done. A visit in a stage that means the work is over now reports itself finished. The stage is recognised by what KIND of stage it is, never by its name, so renaming your stages cannot break it.

1.13.0

Update PBJ CRM first. This version needs PBJ CRM 1.35.0 or newer. Update the CRM before you update this one.

A visit now reads in a fixed order. Who it is for and who is doing it, then what is being done, then when, then where, and then why — the history, with the reminders and the timeline underneath it. Nothing has been taken away; it is the order you would ask the questions in.

A visit now shows the customer’s name and the team it is assigned to, not just the person.

A clear Edit button at the top, a title you can change by clicking it, and a print button.

1.11.0

An assistant can now read your own locations, and read and add notes on a visit. It can list and open the places you have set up, so it can say where “the yard” is without being told. On a booking it can read the notes and the timeline, and add a note of its own — internal to your team unless it is deliberately marked as one the customer sees, which is exactly how the visit screen behaves. Worth knowing, because it is how that screen has always worked rather than anything new: the timeline names who wrote each note to everybody who can see the visit, so on a shared job your staff see each other’s names.

1.10.0

“What has changed since” now gives an honest total — and the right jobs. Ask an assistant which visits have changed since a date and the number it reports is the number that really did change, and it agrees with the bookings listed beside it. This one fixed the list as well as the count: the old answer only looked through a batch of jobs sorted by the day they are booked in for, so a visit that changed this morning but is scheduled for last month could be missed altogether. An assistant asking what has changed now gets the complete answer.

1.9.1

Turning a ticket into a visit now grabs the address the same way the booking form does: a ticket filed under a business gets the business’s address, and the person stays as who the emails go to. The visit’s own “Refresh the address” button follows the same rule.

1.9.0

The booking form grabs the customer’s address the moment you pick them — a business exactly like a person. It only fills boxes that are still empty, and you can change everything before saving. Picking a business also asks which person there should get the reminder emails: the chosen person goes on the booking and the business stays attached to it either way.

1.8.0

The Manage screen grows up. Search, bulk “Mark them done”, and “apply to everything that matches” (up to 200 at a time), with anything refused listed per booking in plain words. And visits and appointments now appear on the CRM’s Today list alongside tasks and tickets, with the arrival window and the town on the line.

1.7.0

Visits and appointments are available to the CRM’s new assistant connector (Apps & Assistants). Requires PBJ CRM 1.29.0 or newer.

1.6.0

A Manage tab. Managers and owners get a Manage visits & appointments screen mirroring Manage tickets — filters by kind, stage and assignee, bulk hand-to-somebody, and bulk cancel that refuses per row where a booking’s own path has no cancelled step.

Your names for visits and appointments now reach every portal screen. Nine remaining hard-coded words now follow the names you chose in settings.

1.5.0

Visits and appointments join the suite’s search. Finding a job by the street, the town, the place name or the customer’s name now works.

1.4.0

What you call them is now yours to choose. Settings gains a “What you call them” section: rename Visit and Appointment — “Call-out”, “Fitting”, “Delivery” — and the new words appear in the portal, on the calendar’s buttons, in the email template headings and on the calendar invitation. Clearing a box puts the shipped word back. Job numbers (V-1, V-2…) do not change, and paperwork already written keeps the words it was written with.

Booking from a ticket can hand the job to somebody else. Managers and owners get a “Who is doing this one?” picker on the help desk’s booking form; employees see who has it and no picker. Nothing changes hands unless a different name is actually picked.

One list of who you can hand work to, everywhere. The list now comes from PBJ CRM itself (1.23.0 or newer): the people in your teams, plus staff not yet in any team — never anybody above your own rank. This also fixes a quiet bug where a manager who was not in any team saw nobody but themselves. With an older CRM the plugin keeps its own narrower list, exactly as before.

Also fixed: if booking a visit from a ticket failed at just the wrong moment, the plugin could stop announcing bookings for the rest of that page load. It cannot any more.

1.3.0

Add somebody new while you book. The “Who it is for” box searches people and businesses together and, when nobody matches, offers to add a brand-new person or business right there — a small name, email and phone form, without leaving the booking. Nothing is ever created without you asking. On a site whose PBJ CRM does not have the shared picker yet, the box works exactly as it did before.

“New visit” and “New appointment” on every customer’s page. The CRM’s new “Start something” row (PBJ CRM 1.22.0+) gets two buttons from this plugin. Pressing one opens the booking form with the right kind picked and that customer already chosen, and the choice can still be changed or cleared before anything is booked. Opened any other way, or on an older CRM, the form behaves exactly as it always did.

Miles round trip. Marking a visit done now records the miles traveled, and the visit’s timeline shows them where the other closing facts sit. If the customer’s record carries a number in the designated field — “Miles round trip” out of the box, renameable under Times, and clearable there to switch the question off — it is used without anybody being asked. Otherwise whoever closes the visit is asked once, and may leave it blank: the visit still closes. Appointments never ask — they are at your own place. This one is a small database addition (two columns on the visits table), applied automatically on upgrade; nothing to re-enter, and visits closed before it simply show no miles rather than invented ones.

Also: the last “County or state” label, on the Our locations settings rows, now says State or county like the booking form has since 1.2.0. Wording only — what is stored is unchanged, and nothing needs re-entering.

1.2.0

The address field on a booking says State or county. It read County, with County or state underneath it, while the CRM beside it said State or county — the same box, asked for two different ways. This is the wording only: what is stored, what the emails print and what leaves in the invitation are all unchanged, so there is no upgrade step and nothing to re-enter.

Calendar invitations are sent as a proper calendar part. The invitation itself was always right and downloading it always worked — what was wrong was the label the message put on it, so a mail reader that shows an invitation card had nothing to recognise. The invitation now goes out as a calendar part with the correct method on it: an invitation when a job is booked or moved, a cancellation when it is called off, and the two can never disagree with the file they describe. One honest caveat: Gmail’s own invitation card has not yet been seen working — the parts were checked against the real mail library and come out as they should, but nobody has yet watched Gmail draw the card, so treat that half as fixed in principle until somebody has. No database change, and nothing else in the plugin behaves differently.

1.1.0

Reminders. Choose how far ahead people are told — 24 hours and 2 hours to start with, and you can change the list. Both the customer and whoever is going get one.

Confirmations, with a calendar invitation. Booking, moving or cancelling a job now emails the customer and the agent, with a calendar invitation attached.

Invitations that replace rather than pile up. Move a job and the entry already in somebody’s diary moves with it — Apple, Google and Outlook alike.

Map links on every job. Google Maps and Apple Maps, side by side. No account, no API key, and no address ever leaves your site.

Our locations. Keep the places you ask people to come to, and fill an appointment in from the list instead of retyping it.

Refresh the address. Correcting a customer’s record still never moves a job that is already booked — but now you can pull the new address in deliberately, and the timeline says you did.

Turn a help desk ticket into a visit. The ticket closes, the visit carries the job, and the customer gets exactly one email — the booking, not the closure. Needs PBJ Help Desk 2.10.0, released alongside this.

Visits on the CRM calendar — once each, on your clock — plus New visit and New appointment on any day you tap.

The number a customer is given is your business number. An agent’s own line is never sent.

Requires PBJ CRM 1.29.0 or newer. No database changes — upgrading from 1.0.0 alters nothing you have already booked.

1.0.0

First release. One record with a switch: a visit is when you go to the customer, an appointment is when they come to you, and everything else about the two is identical — one form, one list, one detail screen. Both kinds share one run of reference numbers, V-1, V-2, V-3, so nobody has to know which kind a booking is before they can look the number up.

You book a time and everybody is told a window. Set the width once — thirty minutes to start with — and every screen quotes that window centred on the time you picked: book two o’clock and the customer is told quarter to two until quarter past. Set the width to zero and everybody is told the exact time instead.

The address is copied onto the booking when you make it, not looked up later, so correcting a customer’s postcode on Tuesday does not silently move Monday’s job. Gate codes and “park on the verge” sit on the job where the driver reads them. Stages — New, Booked in, On the way, On site, Done, Cancelled — can all be renamed, and what a stage means is stored separately from what it is called. Kinds of work are optional and can route to a team.

The portal adds a Visits section with Today, Next 14 days, To be booked and Nobody on it, plus a one-tap stage change; unassigned work in your team has an “I will do it” button. Contacts and companies get a Visits tab, and settings live on their own screen inside the CRM. Who sees what comes from the CRM — there is no second staff list and no second set of roles — and it is enforced in the database query.

Not in 1.1.0, and named as later phases rather than implied: SMS reminders, recurring visits, customers booking or rescheduling themselves, route and travel-time planning, more than one agent on a job, and per-day capacity limits.

Latest Articles