Capture property and contact details first
Ask for name, email, and property, unit, or service address before anything else — a maintenance ticket without a unit number can't be dispatched.
Maintenance request form
Updated · plan facts checked against /pricing
Ready-made HTML that asks for property, request type, and urgency up front — so emergencies get flagged before anyone reads the full description.

Request type and urgency pre-sort every ticket into the right queue on submission.
The botcheck honeypot and form_loaded_at time-trap reject bot submissions before you see them.
Every request lands in your inbox and the splitforms dashboard — no server code.
Copy-paste HTML
Maintenance teams need triage before prose — request type and urgency route the ticket the moment it arrives, and a photo fieldset means fewer follow-up calls. Replace YOUR_ACCESS_KEY with the key from your dashboard. Building the intake into a property-management app instead of a static page? The same endpoint accepts a fetch() POST — see the API reference, or route every submission with a signed webhook.
<form action="https://splitforms.com/api/submit"
method="POST"
enctype="multipart/form-data">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<input type="hidden" name="subject" value="New maintenance request" />
<input type="hidden" name="form_loaded_at" id="form_loaded_at" />
<fieldset>
<legend>Contact and property</legend>
<label>Name <input name="name" autocomplete="name" required /></label>
<label>Email <input name="email" type="email" autocomplete="email" required /></label>
<label>Property or unit
<input name="property" placeholder="Building, unit, or service address" required />
</label>
</fieldset>
<fieldset>
<legend>The request</legend>
<label>Request type
<select name="request_type" required>
<option value="">Choose one</option>
<option>Plumbing</option>
<option>Electrical</option>
<option>HVAC / heating / cooling</option>
<option>Appliance</option>
<option>General repair</option>
<option>Other</option>
</select>
</label>
<label>Urgency
<select name="urgency" required>
<option>Emergency - immediate attention</option>
<option>Today if possible</option>
<option>This week</option>
<option>Routine maintenance</option>
</select>
</label>
<label>Describe the issue
<textarea name="details" rows="5" required></textarea>
</label>
</fieldset>
<fieldset>
<legend>Photos (optional)</legend>
<label>Leak, damage, or appliance label photo
<input name="photo" type="file" accept="image/*" multiple />
</label>
</fieldset>
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" />
<button type="submit">Submit maintenance request</button>
</form>
<script>
document.getElementById('form_loaded_at').value = Date.now();
</script>Step by step
Five steps from a blank page to requests landing in your dashboard and inbox, sorted by urgency.
Ask for name, email, and property, unit, or service address before anything else — a maintenance ticket without a unit number can't be dispatched.
Use select fields for request type (plumbing, electrical, HVAC, appliance, general repair) and urgency (emergency, today, this week, routine) so every request pre-sorts into the right queue on submission.
Set enctype="multipart/form-data" on the form and add an input type="file" field so tenants can attach a leak photo, damage picture, or appliance label — it helps the right trade get dispatched on the first visit.
Paste your access_key into the hidden field, leave the botcheck honeypot empty, and add the hidden form_loaded_at field (set by the one-line script below) so splitforms can reject submissions that arrive too fast to be human.
Submit a test request and confirm it lands in your dashboard and inbox. Connect Slack, email, or a webhook so emergency requests page the on-call tech, and send routine work to a queue in Sheets, Notion, or Airtable.
Routing logic
A maintenance request form template is ready-made HTML that tenants, guests, or internal staff use to report a repair — so the issue reaches you instead of getting lost in a text message. Point it at POST https://splitforms.com/api/submit with your access_key and every request lands in your dashboard and inbox. The urgency field feeds three queues without anyone re-typing, and you can route each one with a signed webhook.

Where requests go
Every request is emailed to you and saved to a searchable dashboard — spam filtered before it ever reaches you. Search, export to CSV, or forward it to Slack, a webhook, or property-management software.

Form fields
The difference between a ticket you can dispatch and one that triggers a follow-up call is a handful of fields. Ask for these up front and every request arrives ready to route.

How SplitForms works
splitforms receives the submission, filters spam, saves it to your dashboard and emails you — then, on paid plans, sends it on to your webhooks and integrations. No backend infrastructure to build.

Point your form to your unique SplitForms endpoint. That's it.

We instantly capture and organize every submission in your inbox.

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

No credit card required. Set up in under 60 seconds.
Connect & automate
On paid plans, submissions can also go to Slack, Discord, Google Sheets, Notion, Airtable, Zapier or any signed webhook — and splitforms works on the platforms you build on, from WordPress and Shopify to Next.js. With Stripe connected, your forms can take payments too.

Questions
A useful maintenance request form includes name, contact details, property or unit, request type, urgency, issue description, permission-to-enter notes, and optional photo uploads. The urgency and request type fields are the most important for triage.
Yes. splitforms can email the request, store it in the dashboard, and forward it through a webhook to tools such as Airtable, Google Sheets, Notion, Slack, AppFolio, Buildium, Jobber, Housecall Pro, or a custom endpoint.
Yes. Add enctype="multipart/form-data" to the form and use an input type="file" field. Photo uploads run on the Storage integration (available on paid plans), which accepts up to 5 files per submission at 5 MB each — enough room for a few angles of a leak or an appliance data plate.
A maintenance request form is usually for existing tenants, customers, or internal facilities teams. A service request form is often lead capture for a contractor. The fields overlap, but maintenance forms need property/unit and urgency triage first.
Every submission passes through the botcheck honeypot — a hidden field that must stay empty — and the form_loaded_at time-trap, which rejects entries submitted too fast to be human. Add per-form allowed domains or strict origin mode, and turn on reCAPTCHA v2 with your own site key for extra coverage.
Free covers 500 requests total with unlimited forms, email notifications, spam filtering, and the dashboard. Pro is $5/month for 5,000 submissions a month plus CSV/XML/PDF exports, webhooks, integrations, an auto-responder, CC/BCC and priority support. Annual is $49/year for 15,000 submissions a month. Larger portfolios can use Business (unlimited) — email hello@splitforms.com.
Yes. Add a hidden subject field to control the notification email's subject line, and a hidden redirect field with a URL to send tenants to a thank-you or next-steps page after they submit. Email notifications to your maintenance team are free on every plan, and you can connect Slack, Discord, Telegram, or a webhook so emergency requests reach the right channel right away.
Simple pricing
Free gives you 500 submissions for $0 — no card, no time limit. Pro is $5/month for 5,000 submissions a month, and Annual is $49/year for 15,000 a month with every Pro feature.
For side projects and indie devs.
Every paid feature, for agencies and growing products.
Every Pro feature with triple the volume — $0.27 per 1,000 at full use.
No credit card required on Free • Cancel anytime • Full pricing and FAQ