A complete, content-filled site on a premium ThemeForest template, built on MODX and handed over on your own domain and hosting. Fixed price, fixed scope, no hourly billing and no surprise invoice at the end.

Send Form: Visitor send feedback form.
MODX contact form: FormIt + AjaxForm, your markup
Spam control: Honeypot, page token, keyword filter
HCPLead snippet: Search → verify → create
POST /customers + leads: Official Housecall Pro API
Job Inbox → API Leads: Attributed, owned, convertible
The integration is a custom MODX snippet running as a FormIt hook. It is installed in your site, it belongs to you, and it has no monthly fee attached to it.
FormIt processes a submission through a chain of hooks in order. Ours sits at the end of that chain, behind your validation, spam checks, local save, UTM capture, notifications and email.
A structured questionnaire about your business, services, audience and competitors. It is the only long form in the process and takes about twenty minutes.
Not a catalogue of thousands. We go through ThemeForest with your industry and your brief in hand and bring back five templates that fit the business you actually run.
Every page, every section, every menu item, written out and approved before a line of code is touched. Changing the structure later is expensive. Changing it here is a conversation.
On our hosting, on a test domain, from day one. You can open it any time and watch the site take shape instead of waiting for a reveal at the end.
The template becomes a working MODX site: templates, chunks, snippets, resource tree, editable fields. Structure first, wording later.
Your texts, photos, services, projects and prices, placed into the design, formatted and checked on mobile.
A full pass over every page, with your comments collected in one place.
Forms, links, mobile layout, page speed, browsers, plus every item on your list.
Final acceptance, once the list is empty.
DNS, SSL, transfer, final check. You get the admin login and a short handover document explaining how to publish a news post without calling us.
Most quotes for a site this size arrive as a range and end above the top of it. This one does not move, because the scope is defined before anyone starts working.
One domain, one language, 36 pages. That is 10 service pages, 10 news pages and 10 project pages, plus home, about, contacts and the three listing pages that hold your services, news and projects.
Domain and hosting setup, template selection and license, the full MODX build, SEO-ready page structure, competitor analysis for your niche, and content placement using the material you provide.
The site on your domain and your hosting, the MODX admin login, the template license in your name, and a site you can extend later without asking permission from anybody.
A missed lead never announces itself. Nothing turns red. The job goes to whoever answered first, and your close rate slips a little with no obvious reason.
Form emails land next to vendor invoices and spam. An inquiry answered in five minutes converts at a completely different rate than one answered tomorrow. Email has no clock on it.
No status, no assignment, no record of who called. Two people reach the same homeowner, or nobody does. Answering "did we follow up?" means searching a mailbox.
The lead came from a paid click on a specific landing page. Typed in by hand it becomes a customer with no source, and your ad reporting turns into guesswork.
One person types (650) 555-0134, another 6505550134. Duplicate records pile up until nobody can tell which profile holds the service history.
The integration is a custom MODX snippet running as a FormIt hook. It is installed in your site, it belongs to you, and it has no monthly fee attached to it.
FormIt processes a submission through a chain of hooks in order. Ours sits at the end of that chain, behind your validation, spam checks, local save, UTM capture, notifications and email.
POST /customers creates the customer when one is needed. POST /leads creates the lead attached to that customer ID. Housecall Pro describes lead creation as requiring an already existing customer, so the sequence is not optional.
Housecall Pro documents that customer creation is not idempotent. Every call creates another customer, there is no idempotency key, and no endpoint deletes one afterward. We search first, re-verify against a normalized email or phone rather than trusting fuzzy search, and create only on a real miss.
Phone numbers are converted to E.164 before they are sent. Emails lowercased and trimmed, names whitespace-collapsed. That satisfies the API and makes matching reliable at the same time.
Bounded retries that never blindly repeat a create, Retry-After honored on a 429, full request and response logging with credentials scrubbed out, and an alert to your team when a call fails.
It lives in server-side configuration, outside the web root where possible, excluded from version control. A Housecall Pro key grants access to the entire account, so it is treated as a credential and not as a setting.
Every qualified submission is an object in your CRM with a status, an owner and a timestamp, not an email somebody may or may not have read.
The lead is in Job Inbox before the visitor closes the tab, and your team can reply to the customer from inside Housecall Pro.
You can see whether anyone has touched a lead and what its current status is, without asking around the office.
The source travels with the lead into the estimate and the invoice, so you can report on which channel produced booked work.
Repeat customers stay one record with one service history, because matching happens before anything is created.
The logic runs inside your own site. No connector service in the middle, no task quota, no third party holding your customer data in transit.
With the account prerequisites in place, a standard form-to-lead integration takes a few days including live testing.
We review your form, hook chain, spam controls and Housecall Pro setup. You get a field map showing exactly what lands where in the CRM.
The snippet installed and running: field mapping, lookup and deduplication, customer and lead creation, attribution, retries, logs, failure alerts, parallel delivery.
Live submissions against your real account, since Housecall Pro publishes no sandbox. Test records are marked clearly and cleaned up before go-live.
Documentation of what was installed, which key it uses, what each config value does, and how to read the log when something looks wrong.
The things every owner asks us in the first call, answered here so you do not have to book one to find out.
Not if it is built properly. The API itself will happily create duplicates, since customer creation is explicitly not idempotent and there is no idempotency key. Deduplication happens in our code: search first, verify the match exactly, create only on a genuine miss.
The lead is saved locally and sent through your email and messaging channels before the API call is attempted. The failure is logged with the exact response, your team is alerted, and the lead is entered by hand. You lose a few minutes, not a customer.
No. That is the point of using the API rather than an embed. Your form keeps its markup, styling, fields and behavior, and the integration attaches behind it.
Only if every campaign name is pre-created in Settings → Lead Sources, because the field is validated against that list. We normally keep a small stable set of channel sources and put campaign detail in the lead notes, which is easier to maintain and just as reportable.
Only if every campaign name is pre-created in Settings → Lead Sources, because the field is validated against that list. We normally keep a small stable set of channel sources and put campaign detail in the lead notes, which is easier to maintain and just as reportable.
As safe as your server. It never appears in front-end code or page source, it lives in server-side configuration, it is excluded from version control, and it is scrubbed out of logs. A Housecall Pro key grants access to the whole account, so it is handled as a credential.
The API supports it, and both require an existing customer and address. We recommend against it for website inquiries. A form fill is a lead, not a scheduled job. Let your office qualify it and convert it inside Housecall Pro, which is one click from the API Leads channel.
A few days once the prerequisites are in place. Delays almost always come from the plan tier, the API key, or an undecided lead source name.
I bring rapid solutions to make the life of my clients easier. Have any questions? Reach out to me from this contact form and I will get back to you shortly.