Ward Marina has been on the water in Charlevoix, Michigan since 1935 — ninety years on the same stretch of Round Lake. Their docks sit at the center of everything: minutes from the Pine River Channel, Lake Charlevoix, and Lake Michigan, and a short walk from the shops, restaurants, and the Venetian Festival crowds that fill the town every July.
A marina like this isn’t one business. It’s eight of them running at once — dockage, boat rentals, winter storage, fuel and pump-out, detailing, mechanical service, fishing charters, and a ship store — each with its own customers, its own season, and its own way of getting paid.
Ward needed a new website. That part was straightforward — a marina this established deserved a site that looked the part and put every service within reach.
The hard part was dockage. Almost every online booking tool assumes a fixed price for a fixed thing: a room, a seat, a ticket. Dockage doesn’t work that way. A slip is priced per linear foot of boat, multiplied by the number of days, at a rate that changes with the calendar. A quiet week in May and the Saturday of the Venetian Festival are not the same product, and a forty-foot boat and a sixty-foot boat are not the same price.
Every plugin we looked at could handle one of those variables. None could handle all three at once. So the choice was to make the marina keep taking reservations by phone — or to build the thing properly.


We designed and built the full site — every page, every service, every form. The navigation follows how people actually arrive: renters looking for a pontoon this weekend, owners looking for a slip for the season, and boaters passing through who need fuel, a pump-out, or a mechanic before they keep moving.
Rentals became bookable products, from tri-toons and ski boats down to kayaks and paddleboards. Storage and haul-out, fuel and pump-out, detailing, mechanical service, labor rates, fishing charters, and the ship store each got a page that answers the question a customer actually has before they call. We added a news section, an employment page, and customer accounts so returning boaters aren’t re-entering the same details every season.
Detailing gets the same per-foot treatment as dockage — three service tiers, each priced by the length of the boat, so an owner can see what a job costs on their vessel without waiting for a quote.
We built a custom reservation engine on top of WooCommerce that does the arithmetic a marina actually needs. A boater picks the slip size that fits their vessel, enters their length in feet, chooses an arrival date from the calendar, and selects how many days they’re staying. The system prices the reservation from those three inputs and takes the booking — deposit collected, confirmation sent, no phone call required.
The rate itself is date-aware. Standard days are charged at the base per-foot rate, while holiday weekends and event dates carry their own higher rates — so a stay that begins midweek and runs into a festival weekend is priced against each day it actually covers, not a flat average that would cost the marina money one way and the customer money the other.
Slip tiers carry a minimum billing length, which is how the marina has always quoted it: a smaller boat in a forty-foot slip is charged at the forty-foot price, because the slip is occupied either way. That rule is stated plainly on the booking form, so nobody is surprised at checkout.



Ward sells pre-owned boats, and boats don’t sell the way merchandise does. A buyer spending five or six figures wants specifications, history, and photographs — and then they want to talk to a person. A standard store template gives you a title, a price, and an add-to-cart button, which is exactly wrong for this.
So we built a dedicated listings module. Every boat carries a full specification table — year, make, model, length, engine, fuel type, hull construction — alongside the condition notes that actually close a sale, like a repower date or a second kicker motor included with the boat. Photography runs in an expandable gallery so a buyer can work through the exterior, the helm, and the cabin at full resolution.
Instead of a checkout button, each listing ends with Request More Info, which routes the inquiry straight to the marina and tells the buyer a representative will follow up. Listings sort by newest, by price in either direction, and by popularity, and a boat that sells can be marked sold rather than deleted — so the inventory history stays intact and the page never goes empty between listings.



Ward Marina now takes dockage reservations around the clock, priced correctly, without anyone at the marina doing arithmetic on a notepad. A boater coming up the channel at nine on a Friday night can book a slip from the helm and tie up when they arrive.
The rate structure stays in the marina’s hands. When the season shifts or a new event lands on the calendar, the rates are updated in the back end — no developer, no ticket, no waiting. The same is true for boat listings, rental inventory, service pricing, and news.
We continue to maintain and extend the site as the operation grows, which is how we prefer to work: build it so the client can run it, and stay close enough to help when something new comes up.


