Release Notes — Week of 2026-10-14
This release brings new lead sources — Facebook lead forms you can map field by field and review when a lead fails, team mailboxes such as sales@ that turn email into leads, and Elementor forms on WordPress sites — and lets admins delegate business settings through role permissions instead of making people administrators. Behind the scenes the platform now runs as separate api / worker / scheduler processes, with a tenant manager for the people who run it. Incoming integration webhooks must now prove where they come from.
This release also teaches the CRM when people work and how busy they are. Admins set business hours, holidays and leave types; people request time off; sales book client appointments that the handling team's lead confirms, or send the client a booking link; leads see everyone's week on the Team Calendar and Workload pages; and Outlook calendars can now be connected. The lead SLA and a new work request response time count on business hours and skip public holidays.
Tenant migrations 126 – 132 ship with this release. The deploy runs them automatically; on other environments run:
npx ts-node apps/api/src/scripts/run-tenant-migrations.ts
| Migration | Does |
|---|---|
| 126 | Indexes for lead search (one trigram index over name, email, company and phone; enables pg_trgm) and for duplicate checks (lower-case email, phone and mobile digits) on leads and contacts. |
| 127 | Facebook lead review: failed leads keep their answers, the data tried and the fields that failed; per-field value templates on Facebook form mappings; the Facebook Lead Failed email template. |
| 128 | Team lead-intake mailboxes: team_id and purpose on email accounts, email_lead_mappings, email_lead_log. |
| 129 | The Email Lead Failed email template. |
| 130 | Company business hours (copied from the lead SLA hours if the SLA was enabled, else Mon–Fri 09:00–17:00, no break). Per-person working hours (people with a weekly capacity other than 40 h get their own hours to match). Public holidays. Leave types (Annual, Sick, Casual, Unpaid) and time-off requests. Approval rules accept time_off / time_off_request. Task types get a Category (task / meeting / call) and Counts toward workload; a built-in Internal meeting type is added. Time-off email templates. |
| 131 | Work request types get Only the team lead assigns, a response time and a schedulable flag. Work requests get the Under Review and Returned statuses and response-deadline columns. Appointment types, appointments, attendees and reminders. Every role gets the Appointments permission (view, create, edit; not delete). Notification and client email templates for appointments and response deadlines. |
| 132 | Client booking links and client change requests on appointments. Templates for "request received" and "client asked to move". |
There is also a master-schema migration, m002_platform_admins (tenant manager admins and activity log). It is not applied by the deploy — apply it as postgres, see Production Topology.
What admins need to do
Lead sources, permissions and integrations
- DocuSign: in DocuSign Connect choose JSON format and Include HMAC signature, then paste the key into Admin → Integrations → DocuSign → Connect HMAC Secret. Until you do, contract signing status updates are refused. See Integrations.
- MailerLite / Mailchimp: copy the webhook URL again from Admin → Integrations and replace it in the provider — old URLs without the workspace key are refused. See Email Marketing.
- Account usage webhooks: if an external system pushes usage data, copy the account's usage webhook URL again — the old one was missing part of its path.
- Facebook Lead Ads: click Connect Facebook again and accept every permission — listing lead forms now needs
pages_manage_ads. Then check each form's mapping in the new editor. See Facebook Lead Ads. - Review who needs admin rights. Most settings pages can now be delegated with Settings → Edit, and Approval Rules, Customer Success Settings and integration pages have their own permissions. The new permissions are off for every role until you grant them. See Roles & Permissions.
- Shared mailboxes: only administrators can now connect a shared mailbox or change who it is shared with. To turn a team mailbox into a lead source, use Admin → Integrations → Email Leads. See Email Leads.
- Lead sources: if you get a Lead source "…" isn't in your source list notification, add the source under Lead Settings → Sources or correct the spelling where it's sent. See Lead Settings.
- Server operators: set
GMAIL_PUBSUB_AUDIENCE(orGMAIL_PUBSUB_PUSH_TOKEN) so Gmail push notifications are authenticated, create tenant manager admins withnpm run platform:admin, and review the new background job settings.
Business hours, appointments and calendars
- Check the working week. Open Settings → Business Hours. If your lead SLA used 09:00–18:00, business hours were copied from it without a break, so everyone shows 45 hours a week. Set a Break (for example 60 minutes) on each working day to bring it to 40 hours. Check the timezone shown on the card (it comes from General Settings). See Business Hours.
- Add public holidays for this year and next, ticking Same date every year for fixed dates. They are taken out of capacity and skipped by SLA and response deadlines. See Holidays.
- Review leave types — paid or unpaid, needs approval or auto-approved, and add any you use (e.g. Study leave). See Leave Types.
- Give people their working hours. Anyone who doesn't work the company week (part-time, different days) needs Own hours on their profile → Availability tab. Their manager or an admin sets it. See Working Hours.
- Check the lead SLA. The new Use company business hours toggle is on, so SLA deadlines now follow Business Hours and skip holidays. Turn it off only if the SLA must keep its own hours. See Lead Settings.
- Set up appointments if you want them:
- In Work Request Settings, pick (or create) the request type each handling team uses, tick Only the team lead assigns and set Respond within a few working hours. See Work Request Settings.
- In Settings → Appointments, add appointment types: handling request type, meeting task type, duration, buffers, preparation, meeting modes, hosts, skills, reminders and client booking rules. See Appointment Settings.
- Choose the organiser calendar (Invites are sent from) — a shared user with Google Calendar connected, so clients get invites with Meet links. See Organiser Calendar.
- Check task types in Task Settings: the category of your own types (Meeting / Call / Task) and whether each counts toward workload. See Task Settings.
- Time-off approvals go to each person's manager (then team lead, department head, admins). If you need a different approver, an approval rule for time_off / time_off_request can be added through the API; the Approval Rules page doesn't list Time Off yet. See Approval Rules.
- Twilio must be configured for client WhatsApp or SMS reminders. See Notification Settings.
- Outlook Calendar (optional): to let Outlook / Microsoft 365 users connect their calendars, add the redirect URI and the
Calendars.ReadWritepermission to the existing Microsoft app. See Outlook Calendar.
Lead capture
Facebook Lead Ads
- Field-by-field mapping. Linking a Facebook lead form now shows one row per CRM field. Insert Facebook answers and lead details (campaign, ad set, ad, form, Page, platform) as chips and type fixed text around them — for example Lead from
{Form name}Facebook. A Full name answer can be split into first and last part. Each row shows the value it would get. - Failed leads are kept and reviewable. A lead missing a required CRM field (or rejected by the form) is stored with its answers — even after Meta deletes them at 90 days. Review shows what the person answered beside the field editor; fix the values, optionally save them as the form's mapping, and create the lead.
- Alerts. A failed lead notifies every administrator and the person who connected the Page, in the app and by email, and the notification opens the review.
- Recent leads grouped by Page with created / failed / in-progress counts, Pages with failures first, the person's name and email on each row, and Page and status filters.
- More Pages can be connected. Pages you reach through a Business portfolio are listed, and Pages Facebook won't give access to are shown greyed out with the reason instead of being hidden.
- Fixes. Listing lead forms failed with Requires pages_manage_ads permission — the CRM now asks for it and explains when you need to reconnect. A lead whose ad details can't be read is still created from its answers. Every lead the worker handles is now logged.
See Facebook Lead Ads.
Email Leads — team lead-intake mailboxes
- Turn
sales@into a lead source. An administrator connects a shared mailbox for a team or the whole workspace and links it to a CRM form. Each new email becomes a lead through that form, so duplicate checks andlead_createdworkflows (for example round-robin within the team) apply. - Sensible by default. Auto-replies, bounces, no-reply senders, spam and your own mailboxes are skipped; replies in a thread that already made a lead, and senders who are already a lead or contact, are linked instead. Only mail received after you turn intake on is used.
- Review and retry. Emails that couldn't become a lead are listed under Needs review with the reason, notify admins and the mailbox owner, and can be fixed and created from the review screen. Skipped emails can be turned into a lead anyway.
See Email Leads.
WordPress / Elementor forms
- Elementor webhook. The form builder's Embed modal has a WordPress / Elementor section with a webhook URL for Elementor Pro's Webhook action and the field ID to use for each field. The CRM form's submit actions run as usual.
- Nothing is lost. A submission that fails validation is saved under Has errors instead of being rejected, because Elementor never retries.
- Full name split. A single Name field fills first and last name when the CRM form asks for both.
See Form Builder → WordPress / Elementor.
Lead sources
- Case doesn't matter. A form sending
websitenow gets your configured Website source, so the Source dropdown shows it and reports don't split it. - Unknown sources stay visible. A source that matches nothing is kept and shown as <value> (not in source list) on the lead form. The first time a new value appears, administrators and settings editors are notified with a link to Lead Settings → Sources.
Settings and permissions
- Delegated settings. About 150 settings actions that were hard-wired to administrators now follow role permissions. Settings → Edit covers lead, opportunity, task, project and work request settings, custom fields, layouts, field validation, company profile, picklists, currencies, notification rules and templates. Email templates follow Forms permissions; the audit log follows Admin → View.
- New permissions: Approval Rules (view / create / edit / delete), Customer Success Settings (view / edit) and Integrations → Configure for Facebook Lead Ads, the Intellicon License Server and Xero contact matching. All are off until granted.
- Still admin only: API keys, password resets, workspace export and purge, integration credentials and connections, notification channel providers, shared mailboxes and custom-SQL target metrics.
- Admin pages follow the permissions. Pages a role can't open say No access; view-only pages name the permission needed.
- Pipelines for opportunity users. Reading pipelines, stages and sources now accepts view access to leads, opportunities or work requests — opportunity users no longer need lead access.
- Approval rules. People with the new permission pick approvers from a list of users and roles without needing Users or Roles access. The project template editor opens for settings editors (it failed silently when approval rules couldn't load).
- Weekly report settings need Settings → Edit instead of admin. Non-admins can add only active workspace users as extra recipients.
See Roles & Permissions and Approval Rules.
Email
- Mailbox rail. The Inbox lists All mailboxes, then your Personal and Shared mailboxes (with their team), and filters on click. See Email Inbox.
- Connect from your profile. The Email Accounts card on My Profile now connects Gmail, Microsoft 365 or any IMAP / SMTP mailbox, with a connection test and visible errors. See Your Profile.
- Shared and team mailboxes are connected by administrators. See Email Setup.
Integrations
- Signed incoming webhooks. DocuSign, MailerLite / Mailchimp, Gmail push and account usage webhooks must now prove where they come from; unauthenticated calls are refused. DocuSign has new Connect HMAC Secret fields, MailerLite an optional Webhook Signing Secret, and the MailerLite / Mailchimp webhook URL carries a workspace key. See Integrations.
- Account usage webhook works again: it no longer needs a CRM login, and the URL shown on the account is complete.
Performance and platform
- Faster leads. Opening a lead runs about half as many queries (the Potential duplicates panel loads separately, and no longer shows names of matches you can't open); creating a lead returns faster; lead search and duplicate checks use indexes (search on 25,000 leads: ~43 ms → 1–4 ms).
- Separate api / worker / scheduler processes. Scheduled jobs run per workspace on worker processes, workflows run on workers instead of the API (and are no longer lost on an API restart), and notification emails, SMS, WhatsApp and chat messages are queued, paced and retried — no more bursts rejected by the mail relay. See Production Topology and Queue System.
- Tenant manager. Platform admins sign in at
/platform/loginwith a password and an authenticator app to see every workspace's plan, limits and usage, change plans and limits, suspend, reactivate or delete a workspace, and watch, retry or discard background jobs. See Tenant Manager. - Tests in CI. 22 black-box API tests (tenant isolation, permissions, tenant manager) run with the browser smoke tests before every deploy, and a manual k6 load test runs against synthetic workspaces. See Best Practices → Test suites.
Calendar, time and capacity
Business hours and working hours
- Settings → Business Hours has three tabs: Working Week (hours and break per day), Holidays (half day, same date every year) and Leave Types (paid, needs approval, active). Timezone comes from General Settings.
- One setting drives capacity, time off, lead SLA, work request response time and appointment booking slots.
- Working hours per person on the profile's Availability tab: Business hours or Own hours. Only managers and admins can change them; people can't change their own. This is separate from My Availability, which people set themselves and which only controls when meetings can be booked.
- Working hours replace the old weekly capacity figure.
See Business Hours and Your Profile.
Time off
- New Time Off page in the sidebar. Request leave with a live preview of the working hours it takes (weekends and holidays excluded), full days or half days.
- Approval through an approval rule for time off if one exists, otherwise the person's manager → team lead → department head → admins.
- Leaders see My team (admins: Everyone), approve or reject with a comment, and can record leave for their people, which is approved straight away.
- Cancel your own pending leave, or approved leave that hasn't started; leaders can cancel any pending or approved leave.
- Approved leave is removed from capacity, Workload and booking slots. Notifications Time Off Requested and Time Off Decided.
See Time Off.
Tasks
- Task types have a Category — Task, Meeting or Call — and a Counts to workload switch.
- Meeting and call tasks show as meetings on the Team Calendar and block client booking slots.
- New built-in Internal meeting type.
See Task Settings.
Work requests
- New statuses Under Review and Returned. Team leads can Mark under review or Return to requester with a reason; the requester edits and Resubmits.
- Response time per request type, in working hours. The page shows Team response due by …; the team lead is warned when the last quarter starts (Response Due Soon), and the lead and requester are told when it passes (Response Overdue).
- Only the team lead assigns per type: members can't accept, decline or self-assign, and auto-assign is skipped.
- Requests raised by booking an appointment show Open appointment and are managed from the appointment.
See Working on Work Requests and Work Request Settings.
Appointments
- New Appointments page and an Appointments tab on accounts, opportunities, leads, contacts and projects.
- Book an appointment from a record: type, proposed time and alternatives, meeting mode, agenda, client attendees and priority. A Team free hours strip shows the handling team's free hours for five days.
- The booking goes to the handling team's lead as a work request. The lead assigns a person, a time and a required estimate, choosing from a list that shows each person's free hours, clashes, leave and matching skills — or returns it with a suggested time.
- On confirmation the CRM creates a meeting task (calendar, Google sync, workload), sends the invite from the company calendar — Google with a Meet link, or Outlook with a Teams link — falling back to the assignee's own calendar or an emailed calendar file, schedules reminders (client email / WhatsApp / SMS, internal per notification preferences) and logs it on the record's timeline.
- Afterwards: Meeting held (notes and actual time go on the record's timeline and the time log), No-show, Reschedule, Cancel or Follow-up work.
- KPI tiles (today, this week, awaiting confirmation, no-show rate), tabs (Upcoming, Requests, Past, Cancelled) and a waiting panel.
See Appointments and Appointment Settings.
Client self-booking
- Booking link button on a record's Appointments tab. The client picks a free time on a public page and it arrives as a request for the team lead.
- Times offered respect working hours, My Availability, holidays and leave, existing appointments, meeting tasks, project meetings, booking-page bookings and Google or Outlook busy time, the type's minimum notice, booking window and daily maximum. Pending requests hold a host so two clients can't take the last free person.
- Client emails include a link to change or cancel. For a confirmed meeting the client's request is shown to the lead, who uses Reschedule.
See Appointment Booking Links. For the difference from booking pages, see Scheduling & Booking Pages.
Outlook Calendar
- People on Outlook / Microsoft 365 can connect their calendar from My Profile → Email & Calendar, like Google Calendar.
- Tasks with a due date are pushed to Outlook; Outlook meetings count as busy time for booking links, booking pages and the appointment host list. Sync runs every 5 minutes, or on Sync now.
- Appointment invites can come from an Outlook organiser, with a Microsoft Teams link for work accounts. Google is used first when a person has both.
- Calendar Connections counts Google and Outlook connections.
See Outlook Calendar.
Booking pages
- Booking pages (Scheduling) no longer offer times when the host already has an appointment, a meeting or call task, a project meeting, or Google / Outlook busy time.
See Scheduling & Booking Pages.
Team Calendar and Workload
- Team Calendar: everyone's week, with project work, tasks, meetings, appointments, leave and holidays per day, days over the person's hours flagged, and side panels for who can take new work, time off this week and appointments to confirm.
- Workload: occupancy = booked ÷ available per person, with bands under 60 % underused, 60–85 % healthy, 85–100 % high, over 100 % overloaded; hours by project; suggested rebalancing; Export CSV.
- Booked time counts task estimates (or the type's default duration), meetings and calls, appointments, project meetings and the remaining hours of open project tasks spread over working days from today.
- Admins see everyone; others see themselves, the people they lead and their own teams.
Lead SLA
- New Use company business hours toggle (on by default): SLA and escalation deadlines count on Business Hours and skip public holidays.
See Lead Settings and Lead Scoring & SLA.
Notifications
New events, each configurable under Notification Settings:
| Event | Default |
|---|---|
| Appointment to Schedule, Returned, Confirmed, Moved, Cancelled, Client Asked to Move | In-app + email |
| Appointment Reminder | In-app |
| Response Due Soon | In-app |
| Response Overdue | In-app + email |
| Time Off Requested, Time Off Decided | In-app + email |
See Notification Settings and Notifications.
Fixes
- Lead list error. One lead holding a plain text value in a JSON column (for example a form field mapped to Source details) made the lead list fail for every user. The list now tolerates such values, and forms store source details correctly.
- Licence usage. A one-day report from the licence server could overwrite a whole month's usage, so every account's previous month showed only its last day and month-on-month read as about −96 %. Partial days before the sync window are ignored, and each sync re-reads from the 1st of the previous month, so the damaged month is rewritten in full on the next sync.
Index of changes
| Area | Change | Where to read more |
|---|---|---|
| Facebook Lead Ads | Field templates, review, alerts, grouped list, Business Pages | Facebook Lead Ads |
| Email Leads | Team lead-intake mailboxes | Email Leads |
| Forms | Elementor webhook, failed submissions kept, name split | Form Builder |
| Lead sources | Case-insensitive match, unknown-source alerts | Lead Settings |
| Permissions | Delegated settings, Approval Rules, Customer Success, Integrations → Configure | Roles & Permissions, Approval Rules, RBAC Deep Dive |
| Mailbox rail, connect from profile, admin-only sharing | Email Inbox, Your Profile, Email Setup | |
| Integrations | Signed webhooks | Integrations, Email Marketing |
| Notifications | facebook_lead_failed, email_lead_failed, lead_source_unknown | Notification Settings |
| Platform | Process roles, queues, tenant manager, tests | Production Topology, Queue System, Tenant Manager, Environment Variables |
| Business hours | Working week, holidays, leave types | Business Hours |
| People | Working hours per person | Your Profile |
| Time off | Requests, approval, recording, cancelling | Time Off, Approval Rules |
| Tasks | Category, counts to workload, Internal meeting | Task Settings |
| Work requests | Under review, returned, response time, lead-only assignment | Working, Settings |
| Appointments | Types, booking, confirm, invites, reminders, outcome | Appointments, Appointment Settings |
| Client booking | Booking links, manage link | Appointment Booking Links |
| Capacity | Team Calendar, Workload | Team Calendar & Workload |
| Lead SLA | Use company business hours | Lead Settings |
| Developers | Modules, tables, endpoints, crons, algorithms | Work Calendar, Appointments & Workload |
| Calendars | Outlook Calendar connection, Teams links, busy time | Outlook Calendar |
| Booking pages | Skip hosts' appointments, meetings and calendar busy time | Scheduling & Booking Pages |