Dashboard
Docking
Click any slip to assign, price or change status
Parking Inventory
Click any spot to assign, price or change status
Summer Storage
Click any unit to assign, price or change status
Winterization
Click any spot to assign, price or change status
Customers
Manage customers, agreements and bookings
Campaigns
Send seasonal slip invitations and bulk emails to customers
✉️ Message
Your sign-off is added automatically — pick personal or marina default in the preview. Edit sign-offs in Email Settings.
👁 Preview
🎯 Audience
Tap the flags below to choose who gets this email. Tap All to clear a row. You can pick more than one flag in each row.
👥 Matching Customers
0📤 Send Campaign
0 matching customer(s) ready to email.
Seasonal Slip Agreements
Manage e-signature workflow via OpenSign
🔗 OpenSign Status
📋 Agreement Tracker
| Customer | Slip(s) | Sent Date | Status | Action |
|---|
Bookings
Track customer responses and slip assignments
| Customer | Boat | Slip | Price | Status | Agreement | Notes |
|---|
QuickBooks Export
Export invoice data for confirmed bookings
⚙️ Settings
👁 Preview
📋 Invoice Summary
| Customer | Boat | Slip | Amount | Agreement | Exported |
|---|
Settings
My profile
The inbox lives in the app — these emails are only a heads-up that something arrived.
Added under every email you send from Campaigns and the Inbox. Use the buttons above the box — you never need to type formatting. Insert variable drops in tags like {STAFF_NAME} that fill in automatically, and the panel beside it shows exactly what a recipient gets.
Accessibility
Applies to every staff page on this account, on every device you sign in from.
Sign-in & security
Your second factor: passkeys on the devices you use, or an authenticator app. Adding or removing one asks you to confirm an existing factor first.
Integrations
Connect a calendar and your assigned jobs and time blocks appear in it. Read & write access is per-account and revocable at any time; imported events show as busy unless clearly marina-related.
Email Variables
Every {TAG} you can drop into a subject, body, or sign-off.
🔖 What do the {TAGS} mean? — every email variable, explained▼
Drop any of these into a subject, body, or your sign-off and they fill in automatically when the email is sent. Customer & billing tags need a recipient; marina & sender tags show the value they resolve to right now.
Staff Data
Account administration — create, reset, deactivate
Presets
A preset is a starting set of permission keys — and the rank an invited person registers with. Changing one updates everyone on it, except keys they've been individually overridden on.
Message of the day
A short notice pinned to every staff dashboard.
Kiosk devices
The tablet in the lobby. Pair one, see which are paired, stop one that has gone missing.
User events
When a customer does something, the marina does something back — automatically, and exactly once.
View as
Restriction only. You'll see what they see; anything you do is still recorded as you.
Website content
The words customers read on marina.islandview.club. Changes are live within a minute — there is no preview step, so read it back before you leave.
Leave anything blank and it disappears from the site rather than showing an empty space. That is how you turn the event banner off, and why an unset rating shows nothing at all instead of an empty star.
Event banner
A single line across the top of the marina page. Blank text hides the whole strip.
Top of the page
The photo behind the title, and the small line above it. Add a short video and it replaces the photo, looping while someone hovers over it — the photo stays as the still frame, so a video that never loads is never a blank rectangle.
Tags
A row of shortcuts under the top of the page, each pointing into the rentals site. The row does not exist until you fill one in — a rail of empty chips is worse than no rail. Link to a category with a #, e.g. https://rentals.islandview.club/#paddle-sports.
Cards
Every tile on the marina page. Open one to change its words, its photo or where it goes — or hide it, which removes it from the site entirely rather than leaving a gap.
Section headings
Blank keeps the heading that is on the page today — shown as the placeholder in each box.
Good to know
The rows beside “Hours and rules”. Season and dock hours are not here — both come from Marina Details, so nobody has to remember to retype them and there is only ever one answer. (The page had been claiming the season ran to October 15 while settings said October 1, and publishing opening hours nobody had set.) Tick Hide to drop a row from the website; blank the label on a spare row to leave it off.
Spare rows. Each one appears on the website as soon as it has a label, and disappears again when the label is cleared.
Enquiry reasons
The “What do you need?” list on the /contact form. Tick Hide to drop a reason; blank a spare label to leave it off. The option value is what every stored enquiry carries, so renaming a label is safe and reordering is not — the values are an interface worker/10-contact.js and the slips pages deep-link with ?need=.
Contact
Shown in the contact block and the footer. Both the address and the link it opens, so they can be changed together.
This is a promise to a customer, so it is blank until you set it — the row simply is not on the contact page. Write what the office can actually keep to (“Within one business day”, “Same day in season”). Note the form's own “Sent” message already says within a day.
“What do you need?” (the contact form's dropdown)
The options on the enquiry form at marina.islandview.club/contact. Change the wording of any of them here; tick Hide to take one off the form; give a spare row a label to add a new option, and clear the label to remove it again.
Renaming an option is safe. Each one keeps its own permanent tag behind the scenes, so past enquiries, the reports that count them, and the “Enquire about winter storage” links on the slips pages all keep working no matter what you call it here. That is also why the list itself is fixed at these eight plus four spares — adding a ninth kind of enquiry needs a developer, renaming any of them does not.
Spare options. Each appears on the form as soon as it has a label, and disappears again when the label is cleared.
Ratings in the footer
Shown on every page that has a footer. Each one appears only once you fill in its rating, so an unclaimed listing simply is not mentioned. Once the public site is connected to Google's Places API (GOOGLE_PLACE_ID in islandview-brp — see its wrangler.jsonc), the Google number comes live from Google and the field here becomes the fallback for when Google cannot answer. Tripadvisor stays hand-set: their API needs partner approval.
Good to know (rentals.islandview.club)
The six rows at the bottom of the rentals page. Each has its own heading and line. Hours and season are not here — they come from Marina Details, so there is only ever one answer and nobody has to remember to retype them. Write {{live.refund_hours}} anywhere and it becomes the real cancellation window.
Rentals hero video (rentals.islandview.club)
The looping video behind the RENTALS title. Two seasonal slots — the summer one plays inside the window below, the winter one the rest of the year (marina local time). Leave a slot blank to keep the shipped BRP Experiences footage. Paste a full URL or a /assets/… path; posters show while the video loads and for visitors who turn motion off.
The front page (islandview.club)
Its banner used to be a line of code reading “fill this in and redeploy”, and its four pictures were stock photos carrying a visible “Temp stock — replace” badge — on the front door of the site. Blank banner text hides the strip entirely. Leave a picture blank to keep the one that is there.
The tags on the front page are not here: they are your real rental categories, and each one links straight to that category on the rentals page. Add or rename a category and the front page follows.
Marina Details
Marina identity, season dates, fees, and resident discounts.
Seasons
A season is a name and two dates. It decides what the public site prints, what a new slip term expires on, and which season a slip assignment is filed under. Seasons may touch but may not overlap. This replaced the single pair of season dates that used to sit above — that could only ever describe the season you were in, so editing it erased the one before.
Branding
Used by the {LOGO} and {BANNER} email variables. Leave blank and the variable renders nothing rather than a broken image.
Fees & discounts
Dock hours
When the dock is open, per day. This is the only place the public website gets its hours — it used to infer them from staff availability, which answers when a person is free for a job, not when someone can tie up. Leave it empty and the site keeps the wording already on the page rather than guessing.
Fuel dock
What the pumps sell, and whether each one is actually pumpable today. The public site shows the dock as open when at least one type is available — so a day with regular but no premium still reads as open. Leave this empty and nothing changes: the site keeps showing whatever the status strip says today, because "nobody has filled this in" must never be published as "the fuel dock is closed".
Water taxi
The public calendar used to say “$60 one way”, typed into the website's source. It is an hourly boat, so set the rate here and the site follows. Each destination's price is worked out from its round-trip minutes — put a figure in the price box only to override it, and leave that box blank to keep it automatic. A destination with no price and no minutes is not published, and neither is anything at all until the hourly rate is set: an invented fare on a public page is worse than no fare.
Agreements & Signing
OpenSign integration, the agreement email template, and the agreement document.
🔗 OpenSign Integration
API Credentials
OPENSIGN_API_KEY (live) and OPENSIGN_SANDBOX_API_KEY (sandbox) are set in the Cloudflare dashboard.
Compose and edit templates in Email → Templates (category Agreement). Variables like {NAME}, {SEASON_DATES}, {MARINA} are filled per customer at send time.
✉️ Manage Templates
📄 Agreement Template ✅ Default
Edit the agreement sent to customers. Locked sections contain structural tables or data tokens. Editable sections show formatted text — use the toolbar for bold, italic, and lists.
Follow-up survey
What customers are asked after a rental comes back. Clear a box to go back to the wording we ship with. Use {ITEM} in the rental question to drop in the unit's name.
Follow-up email template
Questions
Manage Sections
Add or remove dock, parking, and storage sections.
🗂 Manage Sections
Add or remove dock, parking, and storage sections. Each section has a prefix that codes its spots (e.g. prefix BPRK → BPRK1, BPRK2…).
Data Backup
Export a full JSON snapshot of all marina data.
🗄 Data Backup
Export a full snapshot of all marina data as a JSON file. Run this before making structural changes.
Leads
Inquiries from the public website contact form
Audit Log
Customer bookings and all staff actions — last 90 days. Booking rows group by booking; click to expand.
Parts & Inventory
What we have, what's on order, and which job each part is for
Rentals
Staff
Who is who, and when they are around
Training
Videos every member of staff should watch
Analytics
How the marina is doing — bookings and money from the records, visitor behaviour from the anonymous beacon. Every panel says which it is.
Inbox
Email to and from your @islandview.club addresses
Templates
The shared library every document draws from — emails, and the waivers customers sign
📚 Saved
New template
Email Timers
Pick which saved template the marina sends when a slip nears renewal or lapses
⏱ Automated slip emails
Every slip has a renewal timer. As it nears the end, the assigned customer gets a renewal reminder; once it lapses, an expiry notice. Build the wording in Templates, then assign it here.
⏳ Renewal Reminder
⏰ Expiry Notice
🛶 Automated rental emails
Customers who book a rental get a one-week reminder before their day. Those who paid a booking deposit (rather than pre-paying in full) also get a deposit notice the day before their deposit stops being refundable. Pre-paid customers never get the deposit notice — they have no deposit to lose. Build the wording in Templates, then assign it here.
📅 One week before
🔒 Deposit locks tomorrow
📐 How rental rates ladder
The house rule for every rental. Each unit still sets its own rates and tiers — this decides how those tiers are applied. Saving stamps every rental unit, so the website quotes the same way this app does.
📈 Day-of-week and holiday pricing
A percentage applied to each rental day before any discount, so a Saturday in a Friday-to-Monday booking costs its own rate. 100% means unchanged. Every rental unit follows these unless it sets its own, under Rentals.
Holidays
These dates charge the Holiday rate instead of their weekday rate. Add your own — a regatta weekend counts as much as Canada Day.
⏱ Half-day windows
The two blocks a half-day rental can occupy. Both the website and this app read these, so a boat booked for the morning stays sellable for the afternoon. Morning must end at or before afternoon starts — a gap is fine (8:00–12:00 then 12:30–16:30), an overlap is not.
Calendar
Jobs, meetings & availability
Affiliates
Referral links, what the people who click them buy, and the fee owed.
Job Board
Everyone has a board. Due-dated tasks show up on the calendar.