Geofence
Geofence rejects submissions outside your service area before they hit your inbox. Draw a polygon on a map, QuoteForce validates every submission against it via PostGIS spatial queries.
Geofence is available on every paid plan. Polygon-based. Server-side rejection. Out-of-area submissions get a polite "sorry, you're outside our service area" message and never reach your dashboard.
How it works
Geofence is the simplest, highest-leverage feature in QuoteForce. The whole flow runs server-side in five steps:
- You draw a polygon on a Leaflet map in the dashboard.
- QuoteForce stores the polygon as a PostGIS geometry.
- Every form submission geocodes the address to lat/lng via Google Places.
- A PostGIS
ST_Containsquery checks if the address is inside your polygon. - In-area submissions create an estimate. Out-of-area submissions get a friendly bounce message.
The check happens before any estimate is generated, before any email is sent, before any record is written to the dashboard. Out-of-area submissions cost nothing and clutter nothing. The customer gets a courteous response in under a second.
What you draw
The polygon editor is a Leaflet map with zoom, pan, and click-to-place vertices. Most operators draw a single irregular polygon covering their service radius, snap the vertices to neighborhood boundaries or natural landmarks, and save. Total time: 90 seconds for a city-sized service area.
You can draw multiple polygons if you serve discontinuous areas (for example: a primary metro plus a second city 40 miles away). Each polygon is an independent in-area zone; a submission only needs to fall inside one of them to qualify. Multi-polygon setups are common for operators with seasonal route additions or split markets.
The editor also supports snap-to-grid, undo, and a "preview test address" tool that drops a pin at any address and tells you whether it would be accepted or rejected without actually submitting the form.
Out-of-area leads
When a customer submits an address that falls outside every polygon you've drawn, QuoteForce returns a 422 response and renders a message in the widget: "Sorry, you're outside our service area. Try again with another address, or visit our partners at [link]." You control the message copy and the optional partner link in the dashboard.
No record is stored in your dashboard. No email is sent to you. No webhook is fired. The lead is silently discarded as far as your downstream systems are concerned.
If you want to know what you're missing, enable the optional weekly digest. QuoteForce will email you a list of out-of-area attempts from the previous week so you can see whether your service-area boundaries are leaving high-intent traffic on the table. Most operators discover one or two pockets of unmet demand within a month.
Limitations
Geofence is intentionally a simple binary in/out check. A few things it doesn't do yet:
- No auto-referral to neighboring operators (deferred — affiliate program will route these in Q3).
- No zone-pricing (one polygon means in-or-out, not tiered. Premium-zone pricing is on the Pro roadmap).
- No overlapping zones (deferred to multi-truck Pro plan, Q4).
- No drive-time-aware geofence (only euclidean polygon membership — drive-time gating is on the long-term roadmap).
If any of these are blockers for your business, open the dashboard feedback widget and tell us. Priority on the roadmap is driven by operator demand.
API reference
Geofence checks are exposed on the public submissions API. Set service_area_check: true in the request body to enforce the polygon at submission time. The response is a 200 with the estimate payload for in-area addresses, or a 422 with a reason for out-of-area addresses.
POST /api/v1/submissions
Content-Type: application/json
Authorization: Bearer <your_api_token>
{
"address": "3457 S Tibet St, Aurora, CO 80013",
"service": "lawn_mow",
"service_area_check": true
}
→ 200 OK
{
"submission_id": "sub_01HXY...",
"estimate_id": "est_01HXY...",
"price_cents": 5800,
"sqft": 7240,
"in_area": true
}
→ 422 Unprocessable Entity
{
"error": "out_of_service_area",
"message": "Address is outside the configured service polygon.",
"lat": 39.6712,
"lng": -104.7344
}
Webhook deliveries fire for in-area submissions only by default. Set webhook_include_rejections: true in your dashboard's webhook settings if you want out-of-area rejections delivered too, for example to feed a "missed leads" analytics dashboard.
Related
- Door-hanger QR campaigns — geofence is automatic on door-hanger landing pages
- REST API reference — full submissions API documentation
- vs static contact form — why geofencing matters for service businesses