How I Upgraded My HivePress Site End-to-End Using Claude

Hi

I run a classifieds website for weekend and holiday apartments and B&Bs on HivePress using the RentalHive theme.

I’m not a developer, and over the years things accumulated that I knew needed improvement but didn’t know how to fix — as well as quite a few things I had no idea were broken.

I decided to work with Anthropic’s Claude (the Fable model, via Claude Code in the desktop app; it has a built-in browser, and I gave it admin access so it was logged in as an administrator), and within a few days, we went over the entire site end-to-end. I’m sharing this to help anyone else looking to do something similar.

I had it read the official HivePress documentation, this forum, the Code Reference, and the source code of my installed plugins. When documentation was missing, it ran a quick server-side diagnostic to uncover which hook or route actually existed. A few answers from the team here on the forum saved us hours.

I don’t have a child theme, so every change was made via Code Snippets or labeled blocks in Customize (the CSS region), never by editing theme files. Each change was backed up first, verified in the browser on the live site immediately after, and snippet activations and sensitive approvals were performed manually by me. Everything is documented in a single file it maintains, so every new session picks up right where we left off.

Everything I describe from here on out was handled by Claude without any manual input from me, aside from my own checks to make sure nothing broke.

We reviewed every single listing on the site (300 total), one by one: classifying the property type, generating a unified title format that includes property type and city, creating a structured description instead of raw text, tagging features, and generating a unique meta description for each listing. It read the content of the listing and literally analyzed the images, using them to build the listing description, title, meta description, and chips (such as “Pool”).

The single most helpful part was an automated listing editing agent. A dedicated lightweight API was built for the site (two snippets: one read-only and one write-enabled, so toggling off one stops write operations immediately). Through this, a cloud-based Claude agent runs, which I trigger directly from my phone. It retrieves new listings pending review and formats them autonomously according to the site’s editorial guidelines: standardized title format, structured description, SEO title, and meta description. The rules themselves are stored in a site snippet, so updating them modifies the agent’s behavior without touching its code. Best of all, restrictions are enforced programmatically rather than by prompts: it cannot publish, cannot alter already published listings, and cannot touch slugs, pricing, or images — while the advertiser’s original phrasing is always preserved for one-click restoration. The agent prepares everything; I review and publish.

Smart notifications. The problem: when a booking/order email arrived, I couldn’t tell whether it was a new advertiser (who needed their listing edited) or an existing customer simply renewing. The solution: a small snippet that sends me an email the moment a listing enters “pending review” status — complete with advertiser name, phone number, whether they are a first-time or returning advertiser, and a direct edit link. We audited the Paid Listings code and verified that renewing an expired listing moves directly to “published” — meaning zero false alarms. My rule of thumb today: if this email arrives, the agent has work to do. If it doesn’t, it’s just a renewal.

Using the same approach, a message was added for the advertiser: a pending listing is flagged in their personal user region with an explanation that it is currently under review and will go live shortly, preventing “what’s happening with my listing?” emails.

Checkout page — we analyzed the payment gateway logs and discovered that about 20% of users who reached the checkout page did not complete the purchase — yet the payment console showed zero declined transactions. Conclusion: they weren’t even able to submit the form. The culprits: an outdated checkout template running inside an iframe, and reCAPTCHA set to “always,” which simply failed to load for users on filtered internet connections, leaving them stuck in front of a dead button. We switched to the payment provider’s modern, responsive template, set reCAPTCHA to trigger “on suspicious activity only,” and styled the pay button in the brand colors. We saw instances of customers who had tried and failed three times previously finally complete their order.

The listing page was redesigned: features are now displayed as clean chips instead of a plain list, description typography was overhauled, mobile layout ordering was streamlined, and a floating action bar was added on mobile devices with direct buttons to message or call the property owner.

The submission form was split into clear sections with styled headings, new property features were added with consistent styling, and the description field receives the standardized layout generated by the agent post-submission. The advertiser writes freely, and the site maintains structural uniformity.

SEO and Content — dedicated titles and meta descriptions were created for all category and region pages, featuring an automatically updating year. A server-side mechanism was built to inject rich content into category pages — an intro section above the listings and a collapsible guide beneath them — executed server-side rather than via JavaScript so Google indexes it properly. Landing pages were built for every city, duplicate regions were merged, descriptions were written for all districts, and a dedicated page was created for a high-demand region identified in Search Console data, backed by internal links from existing pages and the footer menu. The blog was audited as well, publishing new articles drafted by Fable and edited by me. Additionally, in the main site search form, users can now select a city from a dropdown list that auto-populates based on the site’s active regions and updates dynamically whenever a new region is added.

Design — full palette refresh, including a dedicated action color to distinguish key conversion buttons from the rest of the interface. Logo and favicon were updated, and most importantly for me, a custom default image was designed for listings without photos to replace the stock HivePress placeholder — showcasing my brand logo.

Emails — all templates were redesigned and the legacy logo was replaced. A major workflow improvement: the “expired listing” notification previously linked to the listing view page, requiring the advertiser to log in, scroll all the way to the bottom, locate a button, and only then proceed to payment. Now it routes directly to the package selection page. Reduced from 7 steps to 4 — accomplished without a single line of code, purely using object tokens within the template.

Analytics and Tracking — we audited the entire setup from scratch: merged duplicate properties, cleaned up the tag container by removing unused tags, and fixed conversion tracking so phone clicks and message submissions are accurately recorded. Search Console was also connected and configured from the ground up.

Performance — achieved a ~70% reduction in listing page weight without sacrificing any functionality.

We conducted a competitive market analysis, verified email deliverability, analyzed checkout abandonments with a structured customer list for follow-ups, and built a re-engagement workflow for expired listing owners, complete with audience lists and scheduling.

Smart “0 Results” page. Previously, searching for a city with no available listings displayed a blank screen, causing users to bounce. Now it offers smart recommendations: nearby cities with available listings, and a link to submit a request.

Advertisers can now manage availability periods themselves. In their personal user region, advertisers can select which periods apply to their listing — something that failed previously due to an unidentified category lock — without needing support assistance.

Numbers no longer shift on scroll. A classic form bug: a user scrolls the page while the cursor sits over a price field, accidentally changing the value without noticing (causing users who entered 200 to accidentally submit 190, for example). Fixed.

Diagnostic tool for regions: a custom report that identifies listings missing a region, along with duplicate region detection prior to merging. Many search issues originate there.

Latest update: two-way request board (Requests plugin).

A user submits a request specifying a region and dates, which I approve. Upon approval, an automated email goes out to all property owners with an active listing within a 2-kilometer radius of the requested point. The email includes a button to submit an offer, which routes directly to the requester’s email address — keeping me completely out of the middle.

Because requests in the Requests plugin store coordinates rather than region taxonomy, matching is calculated via straight-line distance against listing coordinates. This proved far more accurate than city-based matching, as adjacent neighborhoods across city borders are often closer to each other than two neighborhoods within the same city limit.

Every email includes a one-click unsubscribe link (signed/tokenized to prevent unauthorized unsubscribes) and clear wording reassuring owners that their regular listing remains unchanged and incoming phone leads continue as usual. Without those safeguards, I wouldn’t have felt comfortable launching it.

Hope this helps someone — happy to advise community members on any part of the process

3 Likes

Thanks a lot for sharing your experience, really appreciate this!

AI has definitely been a game changer for both development and maintenance. We also plan to release an AI connector for HivePress that would allow Claude or ChatGPT to directly set up HivePress, adjust settings and functionality or even extend it through prompts directly in dashboard.

2 Likes