SmartStop Self Storage
As lead developer of this website for a self-storage company operating 400+ facilities across the US and Canada, I focused primarily on the backend, building out deep CRM integrations and complex business logic. The site went through multiple versions during my time on it at Rhythm. Some highlights:
- CRM Integration & Migration. The site originally integrated with one storage industry CRM to pull real-time inventory, pricing, and availability data for every facility. I later led the migration to a new CRM platform as it was being actively developed. The new API evolved rapidly, so I built a suite of integration tests that made live API calls and compared responses against stored snapshots. This approach caught breaking changes early, including full restructures of API response formats, and kept the project on budget and on schedule. The migration ran facility by facility, with a factory choosing the correct CRM for each facility at runtime, so the portfolio could move to the new platform gradually without downtime.
- HubSpot Integration. Built a sync engine that pushes reservations, rentals, payments, and contact records from the storage CRM into HubSpot, using bulk API operations for throughput and a dedicated logging database for troubleshooting and auditing. This powered the migration of all transactional email (account creation, password resets, rental and reservation confirmations) from SendGrid to HubSpot, and the synced data also triggers reminder emails for customers who start a rental or reservation but don’t finish it.
- Storage Search Tool. Built a search tool that allows users to view facilities, unit inventory details, and map locations simultaneously. The search supports geolocation and radius-based filtering, making it easy for users to find and compare nearby facilities. Most of the site is server-rendered, but the more interactive areas like this one are built with React and Redux.
- E-Commerce Rental Flow. Built the multi-step flow for reserving and renting units online, including promotional pricing based on unit occupancy, protection plan selection, and add-ons like locks. Later versions moved to token-based payments, keeping raw card numbers out of the application and reducing PCI scope.
- Rental Recovery. Customers who abandon a rental partway through get an email with a link that resumes the rental where they left off. The links use encrypted tokens with expiration handling, are shortened onto a branded domain via Rebrandly, and are sent based on the rental state synced to HubSpot.
- Customer Account Portal. Built a custom account section where customers can log in to make payments, update their profile information, change their credentials, and cancel storage units.
- Internationalization. Localized the site for the US and Canada, including culture-aware URLs, region-specific content and branding, and translations managed in the CMS.
- Umbraco CMS. All non-CRM content is managed through Umbraco, giving the SmartStop team full control over facility descriptions, promotions, and page content. This site was built on my Wireframe Starter Kit (WiSKi), a comprehensive backend/frontend foundation I created that served as the starting point for most websites at Rhythm, a supercharged theme that handled common patterns like routing, templating, and content modeling out of the box.












