SiteOps articles
SiteOps maintenance request workflow overview
SiteOps handles property-specific maintenance intake, request tracking, status history, notifications, plan limits, and paid checkout.
By Alexander Landaverde / July 3, 2026
SiteOps is a facility maintenance request platform for property managers. It is built around property-specific maintenance intake, request tracking, status history, email notifications, plan limits, and paid plan checkout.
Tenant request intake
Each SiteOps property can have a tenant request form at a property-specific link. Before the form renders, SiteOps fetches the property's display data, branding flag, owner plan, and custom categories. The tenant request form requires a category, unit or room number, description, name, and email. It also supports an optional photo file.
When a tenant attaches a photo, SiteOps requests a signed upload URL from /api/upload-url, uploads the file, and stores the object under a requests/ path.
Request creation and confirmation
The SiteOps request API requires an authenticated owner context before creating a maintenance request. The API verifies that the property slug belongs to that owner, requires category, description, and unit number, creates a confirmation code, stores the request with status new, and returns the created request. After the request is stored, SiteOps sends a new-request email to the owner and a confirmation email to the requester.
SiteOps maintenance request statuses are new, in_progress, and done. These statuses are the workflow vocabulary used by the request records and the public request tracking page.
Owner dashboard and status history
The owner request list API returns requests for the authenticated owner by ownerEmail or by properties created by that owner. When a request status is updated, SiteOps writes a maintenance history item with old status, new status, optional note, changer email, changer name, and timestamp. If the status changes and the request has a requester email, SiteOps sends a status update email.
Tenants can check request progress on the public status page by entering the confirmation code and unit number. The lookup API searches by confirmation code and unit number, then returns the request and sorted request history. The public page shows the request details, current status, and progress history.
Property branding and categories
The public property API returns the property, showBranding flag, custom categories, and planId for a property slug. The showBranding flag is true for the Free plan and false for non-free plans. The same response supplies custom categories for the tenant request form.
Plans, limits, and paid checkout
Current SiteOps pricing spans Free, Starter, Growth, and Pro. The same code-backed pricing context includes the request limits below, and paid plan checkout uses Stripe subscription Checkout with a 30-day trial only when the user's trial has not already been used.
SiteOps pricing cards list Free at $0, Starter at $29/month or $25/month annually billed $300/year, Growth at $79/month or $67/month annually billed $804/year, and Pro at $199/month or $169/month annually billed $2028/year. The Free plan lists 1 property and 3 maintenance requests per month. Starter lists 3 properties, 10 requests per month, custom categories, response badge opt-in, branding removal, and 1 manager account. Growth lists 15 properties, 45 requests per month, custom categories, response badge opt-in, branding removal, and up to 5 staff. Pro lists unlimited properties, unlimited requests, custom categories, response badge opt-in, branding removal, and unlimited staff.
The request creation API enforces monthly request limits of Free 3, Starter 10, Growth 45, and Pro 999999. When an owner reaches the current plan's request limit, the API returns HTTP 403 with a monthly limit reached message.
For paid plans, SiteOps creates a Stripe subscription Checkout session with the selected plan price, plan and billing-cycle metadata, success and cancel URLs, and a 30-day trial period when trialUsed is not already true. SiteOps blocks users with role member from starting paid checkout and tells them to contact their manager.

Written by
Alexander Landaverde
Founder, SiteOps
Alexander Landaverde builds and operates SiteOps, a facility maintenance request platform for property managers.