Take real card payments at the register without waiting on the full Connect integration. Enable per-tenant from master admin, then the tenant pastes their own Stripe keys in Settings → Payments and the register's Card tender opens a Stripe Payment Element. Hand-keyed cards, Apple Pay, and Google Pay all work out of the box. Card brand and last four digits are captured on every sale.
Customers can now pay remotely. From the register's tender modal, pick "Send payment link" — a modal opens with a QR code and a copyable Stripe Checkout URL. Text or email the link to the customer; they pay from their phone (Apple Pay, Google Pay, or card). When payment lands, the operator side auto-closes and the receipt screen appears. Useful for curbside pickup, deposits, and any "I'll send you the link" moment.
Connect a domain you already own — like yourshop.com or
book.yourshop.com — to your Intake site. Customers see your
brand, not ours. HTTPS, cert renewals, and edge caching are
handled automatically.
Visit Settings → Domains to get started. We walk you through
the two DNS records you need to add at your registrar, then
check propagation every minute and flip your domain live the
moment it's ready. Most setups go live in under five minutes
once the records are in place.
Workflow
Locations admin
May 20, 2026
Owners can now manage locations from the Settings nav group. Add
new locations with name, address, contact, and timezone. Set
another as default. Deactivate to retire a location while keeping
its history. Delete fresh locations that have nothing attached.
Safe-by-default — you can't deactivate or delete the default
location, and you can't delete locations with appointments,
sales, or inventory.
A complete rebuild of the customer detail page. Opens with the
customer's name and three tappable contact tiles — Call, Text,
Email — that work the moment you tap them on mobile. A big
New appointment button sits front and center. Below: visit count,
lifetime spend, and how long they've been a customer at a glance.
Their activity timeline is grouped by month with color-coded icons
for appointments, sales, classes, and memberships.
Customer
VIP customers
May 11, 2026
Mark any customer as a VIP with one tap from their detail page.
VIPs get a small amber star next to their name in your customer
list, and you can filter your list to VIPs only via the sort
picker. Works the same on desktop and mobile. VIPs are entirely
yours to define — top spenders, regulars, owner's friends,
whatever fits your shop.
Calendar
Mobile schedule
May 10, 2026
Day view shows each appointment as a full-width card with the
resource color as a left stripe. Single-resource view adds gap
rows so you can see your downtime between bookings. Week view
groups by day with compact cards. Resource filter chips at the
top let you tap to focus on one person or one bench.
Class memberships and class packs are live. Cancelling a class registration restores the customer pack credit or membership usage. Monthly memberships roll over automatically each period. Stale packs expire on a daily sweep.
Classes
Class reports
May 7, 2026
New reports page in the Classes section with six panels: drop-in regulars, at-risk members, used-up packs, recently cancelled, lapsed memberships, and top earning products. Each panel exports to CSV.
The customer detail page now shows every event in one chronological view: appointments, POS sales, class registrations, and pack and membership grants. Filterable by type, grouped by month.
Process a return and a new sale at the same register screen. Customer brings back a jersey and buys a different one? Stage the refund, add the new item, and collect or refund the difference in one step. Even exchanges (no money changes hands) commit instantly.
Quotes
Quotes dashboard
May 6, 2026
See your open pipeline, aging quotes, fresh quotes from this week, and conversion rate — all at the top of the Quotes page. Click any card to filter the list to those quotes. Aging quotes are color-coded so you know when to follow up.
Bike shops on Branded and Scale can now receive shipments directly in Intake. Click + New shipment from your inventory page to start a draft. Scan or type a SKU, UPC, or item name to add lines. Adjust quantities and costs inline. Click Commit to write the movements to your inventory.
What is in the box:
• Scanner-friendly entry — type or scan a SKU, UPC, or product name and press Enter to add a line
• Unmatched scans become unexpected lines (substitutes from your distributor) without breaking your flow
• Inline editing for quantities, costs, and statuses with auto-save
• A new + New item button creates an inventory item AND adds it to the shipment in one step — perfect for first-time receiving of a new product
• Edit any matched item without leaving the receiving page (pencil icon on each line)
• Backorder, expected, and unexpected lines tracked separately
• Commit writes inventory movements automatically; counts and stock cards update in real time
Notes:
• POS Phase 2 (cashier register) is next.
• Receiving is bundled in Branded and Scale at no extra cost.
Classes
Class booking is live: Yoga, fitness, lessons, classes
Apr 29, 2026
Class-based businesses (yoga, CrossFit, Pilates, fitness, music lessons, and more) now have first-class support on Intake.
For shop admins: define class templates with name, duration, capacity, and price. Schedule sessions one-time, weekly (pick days + an end date), or daily across a date range. The session detail page gives you a full roster with check-in, no-show, and waitlist management. Sell unlimited or capped monthly memberships and credit packs with expiry dates.
For customers: browse classes with capacity bars and free / full badges. Pay by membership (auto-pre-selected if active), pack credits, or per-class. Join a waitlist for full sessions — when someone cancels, the next person on the list is automatically promoted and their payment source is re-resolved at promotion time.
A new customer portal at /account shows upcoming registrations, history, active membership with period info, and pack credits. Customers create an account with email + password (no magic links — too painful when phones and laptops use different inboxes).
Classes coexist with appointment booking — a yoga studio with private sessions can run both on the same account.
Each staff member, station, or chair on your Resources page now has its own daily appointment cap. The total across all your resources is your shop's natural daily ceiling. You can still set a shop-wide override if you need to limit a busy day below that.
The capacity admin page is rewritten to make this clearer: a closed-toggle per day, optional shop-wide cap, and slot-interval settings under an Advanced toggle.
When your shop has more than one bookable resource — staff member, station, or chair — customers see a "Choose who" picker after selecting a time. Only the resources actually free at that time appear, so customers can't accidentally book someone who's busy.
Single-resource shops are unaffected — bookings auto-assign as before.
Two new ways to see your schedule. Week view shows each resource as a swimlane across seven days, so you can spot who is slammed at a glance. Month view is a density grid with color-coded bars per day. Click any cell to drill into day view.
Internal: added per-tenant webhook routing at /webhooks/stripe-direct/{tenantId}, fixed a CSRF middleware exception that had been silently blocking all webhook events on the new endpoints, and made the existing appointment work-order asset migration idempotent so it can recover from a half-applied state without manual SQL.
Refunding a card sale in Intake now fires the actual Stripe refund automatically. Open any past sale paid by card, click Refund, pick "Refund to card" — Intake records the refund and reverses the Stripe charge in one step. No more bouncing to the Stripe dashboard to complete the refund manually.
Selecting "Card" in the tender modal no longer prompts for a reference number. Cards with direct payments enabled go straight to the Stripe Payment Element; without direct payments, they go straight to commit. The reference field is now only shown for checks, where it's actually useful.
If the register fails to complete a sale after a card has already authorized, Intake automatically refunds the charge at Stripe and clears the cart so a retry won't double-charge. The customer is never billed for a sale that doesn't exist on the books.
Hitting "Charge" with a service in the cart but no customer attached now shows a focused dialog with an "Add customer →" button instead of failing silently after the card is run. Error banners shake to grab attention when they appear or re-appear with the same message.
If a refund happens from the Stripe dashboard directly (instead of through Intake), the sale's payment status in Intake updates automatically to "refunded" or "partial refund". Keeps Intake's books in sync with what actually happened in Stripe, even when staff bypass the register.
Add as many custom domains as your plan allows — Starter gets 1,
Branded and Scale get 3, Custom is unlimited. Designate one as
your primary; the rest redirect to it. Useful if you want
bothyourshop.com AND www.yourshop.com to work, or if you're
migrating from an old domain to a new one.
When you add www.example.com, Intake automatically also handles
example.com as a redirect (and vice versa). Customers reach your
shop no matter which version they type. Toggle off in the form
if you only want one or the other.
Every domain shows you exactly where it is in setup — waiting
for DNS records, verifying ownership, provisioning HTTPS, or
live and serving customers. If something's wrong, we tell you
what to fix and reassure you that customers can still find you
at your Intake subdomain in the meantime.
Master admin gained a Custom Domains resource showing every
tenant's domains at a glance. Filter by status, jump straight
to errored or stuck domains, and sync any domain manually with
Cloudflare from the row actions. A nav badge surfaces domains
that have been errored more than 24 hours so they don't get
forgotten.
After a successful mid-session location switch, a brief "Welcome
to <location>" overlay drops with an animated checkmark and fades
after 1.5 seconds. Page state underneath is preserved.
Cleaner Team page. Email now lives under the name as part of one
identity unit. Role is a read-only badge with a popover to
change. Per-row actions are icon-only with tooltips, and the
destructive Remove button is separated from the safe ones by a
visual divider. PIN status badges align across rows.
Inviting a new team member from the Team page now correctly
attaches them to your default location so they can actually sign
in. Previously the row created fine but the user couldn't pass
the location-resolution check on login.
Sidebar identity block shows a location pill. Click to open a
dropdown and switch between your locations. After switching,
you land back on the same page you were on — the new context
just refreshes around you.
Refined sidebar layout. Your name and role sit at the top, your
current location below the logo, and a small "Powered by intake"
footer at the bottom. Cleaner hierarchy; less visual noise.
On a phone, the customer list now opens to a single-row filter bar:
search, sort, and add a new customer. Search filters live as you
type. Sort opens a bottom-sheet picker with all seven options
including the new VIPs-only filter. Customers render as stacked
cards instead of a horizontal-scrolling table.
The bottom nav no longer drifts upward when you swipe past the
bottom of a page on Chrome iOS. Caused by the rubber-band
overscroll effect; now disabled at the body's scroll boundaries
on mobile.
Form pages across Resources, Services, Settings, Waitlist, and
Register now collapse to single-column on phones. Color pickers
render as a proper grid of swatches. Tables get horizontal scroll
instead of crushing content.
Cleaner hero card with today's appointment count, this week's
revenue, and new customers added. Plus a 3-day strip showing
what's coming up.
Polish
Mobile nav
May 10, 2026
Bottom bar with Home, Schedule, Customers, and More. More opens
a drawer with everything else from the sidebar. Top header shows
your shop's logo and a back chevron when you're inside a detail
page. Stays anchored at the bottom — no drift when you scroll
to the end of a page.
Gap rows on the mobile schedule were showing negative or wrong
durations on some pages due to a date-diff bug. Resolved.
Click any row in admin/register/history or in customer activity
timeline to see the sale details — line items, totals, payment
method, and a Refund this sale button if applicable.
Six-tab unified settings page replaces the old multi-page split.
Business, Branding, Communication, Account, Appearance, Payments.
Sticky save bar at the top of each panel with dirty-tracking.
Drag to resize your logo in the admin header. Preview updates live;
save when satisfied.
Theme B and Theme C tokens nudged for better readability without
changing hue. Affects every dark-theme page.
Admin
Customer search
May 7, 2026
Reusable customer typeahead picker for class registration forms. Search by name, email, or phone. Replaces manual UUID entry.
On the class detail page, the Add Customer row now sits at the top of the roster and stays pinned while scrolling.
Replaced native browser confirms with the in-app confirmation modal across the class pages. Includes cancel registration, mark no-show, remove from waitlist, and cancel session.
Picking Cash on a class registration opens the POS register with a drop-in line item prefilled. Take payment, and the customer is automatically registered for the class on sale completion.
Fixed an underlying issue where staff would get logged out after every system update. Sessions now persist cleanly through deploys and cache clears.
Sortable columns and live search on the Quotes page. Click Convert to sale to load a quote into the register cart, ready to collect payment.
Every cart, sale, refund, draft, and quote — in one filterable view. Multi-select status filters, sortable columns, and a search bar that matches sale numbers, customer names, and emails. Linked transactions (like a refund + new sale) share a group ID so you can see what happened together.
The "Needs your attention" cards on your dashboard now actually do something when you click them. Click "Pending bookings · 8" and you land on the Appointments page filtered to those exact 8 — with the same card row at the top showing your other open items, a "Clear filter" link to return to the full list, and the page title swapped to match.
We also overhauled the colors so they actually mean something: red cards need your action (Pending bookings, Overdue not started, Overdue in progress) and amber cards are waiting on your customer (Unpaid completed, Ready for pickup, Stale pickups). One glance tells you what you can act on right now versus what you should follow up on.
The new Reports section at /admin/reports surfaces six lenses on your shop:
• Revenue — hourly today, daily for week or month, plus a service mix breakdown
• Bookings & cancellations — confirmed, cancelled, no-show, same-day counts
• Customers & retention — new vs returning daily, plus your top spenders
• Service popularity — which services bring in the most bookings or revenue
• Staff utilization — per-resource cards with healthy / under-used / overloaded flags
• Capacity utilization — heatmap of your hot windows and dead zones
A single global Today / Week / Month toggle drives everything at once. Need a specific window? Click "Custom range" and pick a date or date span on the calendar modal — the whole page reframes.
Honest numbers throughout: staff utilization uses your actual open hours from capacity rules (not a generic 8-hour baseline). No-show rate counts only confirmed appointments past their grace window, not anything pending. Walk-ins are labeled "same-day" because that is what the data actually represents.
The new onboarding wizard walks every new tenant through eight quick screens — Industry, Identity, Booking style, Hours, Services, Team, Payment, Done. Each step writes to the database as you go, so you can leave and come back without losing progress.
The big upgrade: AI Quick Setup on step 2. Describe your business in 2-3 sentences (e.g. "I run a bike shop. Standard tune-up is $89, brake adjustment $40. Open Tue-Sat 8-4.") and the wizard fills out your hours, services, booking style, classes flag, and tagline automatically. You always review before commit — nothing happens silently.
Manual setup is still there if you would rather walk through every step yourself. Either way, you land on a populated dashboard ready to take your first booking.
Every night at 2am, every tenant database gets dumped, compressed, and uploaded to a separate-region S3 bucket. Backups are kept for 30 days with automatic cleanup of older copies. The restore process has been tested end-to-end.
This is invisible plumbing — you will never see it on the surface — but it means we can recover from a hardware failure, a bad deploy, or a database mistake without losing more than 24 hours of activity.
Cleaned up our deployment plumbing. Asset cache-busting is now automatic for all CSS and JavaScript files, so you'll always see the latest version after we ship updates. Removed runtime files from version control that were occasionally causing slow deploys.
Drop-off mode shops now have a calendar built specifically for how drop-off scheduling works: per-resource swimlanes within each day, no time axis, appointment cards stacked in each column. Drag a card to a different resource to reassign. Drag between days to reschedule. Day and week views available.
Time-slot mode shops are unchanged — the existing time-grid calendar is still what you see.
When a customer books a drop-off appointment without picking a specific staff member, we now check which resources are eligible to perform the service AND have remaining daily capacity. If your first-pick resource is full, we automatically fall through to the next available one. If everyone's full for that day, the customer sees a clear message and can pick another date.
The date picker on the public booking page is now full-width and easier to read on every screen size. Available days, the current day, and your selection are clearly marked.
Settings → Booking now has a Drop-off methods section. Add, edit, reorder, or deactivate the options your customers see when they book — walk-in, scheduled appointment, ship to us, curbside pickup, anything you need. Past bookings keep the original method label even after edits.
A handful of fixes that improve how the customer booking page renders dates and times across browsers. If you saw any oddities loading the booking calendar before, you shouldn't anymore.
Two new public pages on intake.works:
• /changelog — the running log of what we have shipped, organized by date with tags
• /roadmap — what is actively being built and what is coming next
The same data renders inside your admin under "What is New" and "What is Coming" so you can see updates without leaving your shop.
Edited by master admin via Filament. One source of truth for both public marketing pages and tenant-side updates.
Three calendar additions worth highlighting:
Week and month views. Per-resource swimlanes for the week (rows = staff, columns = days). Density grid for the month (color bars per day with hover tooltips). Sunday-anchored. Your view choice persists across reloads.
Side-by-side rendering for overlapping appointments. When two or more appointments share a time slot on the same resource, the calendar splits the column horizontally so all of them stay visible. Connected-component cluster detection ensures all overlapping appointments share the same lane denominator — no more "last-rendered wins" silently hiding work.
Click-to-remove on breaks and walk-in holds. Click any non-recurring break or walk-in hold on the calendar to delete it via a confirm modal. Recurring entries point you to the capacity admin where they belong. The create / delete loop is now closed for one-off entries.
Calendar
Calendar legend
Apr 26, 2026
A new Legend button in the calendar toolbar opens a panel that explains what every visual signal means — appointment status, prep and cleanup time, walk-in holds, breaks, and resource colors. Open it once, then close it for good once you have the hang of things.
Quick-book now lets you set the date, time, resource, and customer all in one place. Click + New from anywhere — calendar cell, customer page, top nav — and the modal opens with smart defaults you can change.
Reassign a booking to a different staff member or station without canceling and rebuilding it. If the new resource is busy at that time, you get a clear warning with the conflicting appointment shown — so you can choose to override or pick a different slot. Every change is recorded in the appointment notes.
When two or more appointments overlap on the same resource, the calendar now splits the column horizontally so you can see all of them. Previously, overlapping appointments would stack on top of each other and only the last one drawn was visible. A small badge in the corner shows how many appointments are sharing that time slot.
Your shop's local time is now the default everywhere — calendar, dashboard, capacity. No more 'why does my schedule say tomorrow at 5pm?' moments. Set your timezone in Settings and the rest of the app honors it.
Add a service, change a price, override a duration — all directly on the appointment page. Totals and timing update live. The calendar block grows or shrinks in real time as you make changes.
The status pipeline got a real overhaul. Click any step in the progress bar to move there. Forward moves are silent; backward moves trigger a confirmation. Cancelled appointments now show a clean reopen card. Every action gives you toast feedback, so you always know it took.
When two customers try to book the same time slot at the same instant, the system now reliably gives the slot to one of them and tells the other it's taken. Tested at production-grade concurrency. The kind of fix you don't notice working — but you'd notice if it weren't.
Each staff member or work station now gets its own column on the day view. Filter to just yours, share the screen with your team, or see who has space when a walk-in shows up.