Your saved contractor lists appear below. Click ★ on any search result to save a contractor to a list.
Get set up in a few steps
Complete the steps below to unlock the full platform. Click any action button to jump straight to the right spot.
0 of 6 complete
1
Complete your business profile
Add your business name, logo, phone, and address. This info appears on every proposal and invoice you send.
2
Connect Stripe for invoicing & payments
Accept credit cards and ACH payments on your invoices. Tip: you can bake the 2.9% card fee into your pricing so customers absorb it — or offer ACH-only (~$5 flat) for large jobs.
3
Import or add your contacts
Upload a CSV or add contacts manually. Your contact list powers proposals, invoices, email campaigns, and project tracking.
4
Connect Twilio for phone & text
Get a business phone number for calls and SMS. Unlocks the dialer, inbound call routing, and text conversations with your contacts.
5
Connect your email (SMTP)
Use your own Gmail, Outlook, or any SMTP provider. Enables the Email Hub for sending proposals, invoices, and campaigns from your business address.
6
Connect Facebook for Social Hub
Link your Facebook page to schedule and publish posts from the platform. Also enables Facebook Lead Ad capture — new leads flow directly into your Contacts.
Get a contractor website
We build SEO-optimized Iowa contractor sites, or we can connect and manage your existing domain. When you're ready to grow online.
Support
Submit a ticket and our team will respond as soon as possible. You can track your ticket status below.
Submit a Support Ticket
My Previous Tickets
No tickets submitted yet.
Ideas & Feedback
Share feature requests, vote on ideas from other members, and help shape the platform's future.
Submit an Idea
Roadmap
See what we're working on and what's coming next based on your feedback.
In Consideration
0
Will Build
0
Complete
0
Find Available Jobs
Enter your zip code and search radius to find job postings from contractors near you.
Conversations
Your Messages
Select a conversation to view messages, or apply to a job to start a conversation.
Replying to
Uploading…
IN CONVERSATION
PINNED
Nothing pinned yet.
ADD MEMBER
ACTIONS
Agency Dashboard
Revenue & Customers Overview
Total Revenue Last Month
—
Monthly Recurring Revenue
—
New Customers (30d)
—
Total Customers
—
New Users (30d)
—
Total Users
—
User Growth
New app registrations per month (last 6 months)
Users vs Customers
Current totals
New User Applications
Temp Members
Users approved without an Iowa registration number. Must register within 6 months or access is revoked.
User Accounts
Admin View · Read Only
—
—
Business Info
Business Name—
Phone—
Address—
License #—
Documents
W-9—
Lead-Based Paint Cert—
Worker's Comp—
Insurance
Carrier—
Policy #—
Effective Date—
Subcontract Availability
Status—
Trades—
Service Area—
Website
Custom Domain
Saved ✓
Saved to insuranceVerifications/{uid}/websiteSettings/domain — Website Hub reads this to show the live preview.
Republish Beacon
Reads KV pages, injects the current tracking beacon, writes back. Run after deploying beacon updates.
Subscription
Status—
Plan—
Expires—
Saved ✓
Feature Access
Toggle which nav items this user can see. Off = completely hidden from their sidebar. "Reset" removes all overrides so they see everything.
Saved ✓
Account Access
Suspending blocks this user from logging into the app. You can unsuspend at any time.
Support Tickets
Ideas & Roadmap
Videos
Platform Video Links
Enter a YouTube URL for each section. Paste the full URL in the format https://www.youtube.com/watch?v=VIDEO_ID. The video will appear as an embedded player throughout the platform. Leave blank to show the default placeholder.
Getting Started Overview
Shown on Step 1 of the Getting Started guide (Profile Setup)
Not set
Contractor Search
Shown when a user clicks "See how it works" on the Contractor Search feature card
Not set
Job Postings & Applications
Shown when a user clicks "See how it works" on the Job Postings feature card
Not set
Messaging & Inbox
Shown when a user clicks "See how it works" on the Direct Messaging feature card
Not set
Plan Tiers
Manage Stripe plans and feature access per membership tier.
Stripe Plans
Link plan slugs to Stripe Price IDs. Adding a plan here makes it available for checkout — no redeployment needed.
Feature Tiers
Control which features each membership tier can access. Temp members are always view-only regardless of tier settings.
Insurance Releases
Track insurance submissions and release of information authorizations. Re-verification required annually.
API Keys
API Keys
Connect third-party services to power your dashboard. Keys are encrypted and only accessible to agency admins.
Webhooks
Manage webhook endpoints and user accounts across connected services.
Paste your Pabbly Connect (or any service) webhook URLs below. The app will POST a JSON payload to these endpoints when the matching event fires.
Application Received
Fires when a contractor applies to one of your job listings.
Ticket Resolved
Fires when an admin marks a support ticket as resolved.
Job Alert Match
Fires when a new job matches a user's saved alert preferences.
New Message
Fires when a user receives a new direct message.
Insurance Release Submitted
Fires when a contractor signs the Release of Information. Sends the agent's email, contractor details, and signed document info — use this to auto-email the insurance agent.
Proposal Sign Request
Fires when you send a proposal to a customer. Sends all data needed to deliver a branded HTML signing email via Brevo — includes customer name, email, signing link, estimate details, and company info.
Proposal Signed
Fires when a customer signs a proposal. Sends the signed PDF download URL plus separate toEmailCustomer and toEmailContractor fields so your Pabbly workflow can send two emails from one trigger: the signed copy to the customer, and a "new signature" notification to the contractor.
Proposal Opened
Fires the first time a customer opens a proposal signing link. Sends toEmailContractor, customer name, proposal number and title, grand total, and the signing link — use this to notify the contractor that their proposal has been viewed.
Invoice Sent
Fires when you send an invoice to a customer from the Invoice Generator. Sends customer email/name, view link, Stripe pay link, invoice number/title, amounts, due date, personal message, and company block — use this to deliver a branded invoice email via Brevo.
Invoice Opened
Fires the first time a customer opens an invoice view link (skipped if the invoice is already paid). Sends toEmailContractor, customer name, invoice number, grand total, amount paid, balance due, and the view link — use this to notify the contractor that their invoice has been viewed.
Invoice Deposit Paid
Fires when a customer pays the deposit portion of an invoice via Stripe (balance still due). Sends customer + company details, amount paid, deposit amount, balance due, and a link to the invoice — use this to notify the contractor the project can start.
Invoice Paid
Fires when an invoice is fully paid (final Stripe payment clears the balance). Sends customer + company details, invoice number/title, grand total, amount paid, toEmailContractor (and toEmailCustomer if you want a "paid in full" receipt) — use this for contractor notification and customer receipt emails.
Invoice Overpaid (Anomaly)
Fires when recorded payments exceed the invoice total (e.g. the invoice was edited down after a Stripe charge, or a double-charge slipped through). Includes the overage amount, invoice total, and Stripe payment reference so you can investigate and refund if needed. Fires to the contractor only.
AI Vision Analyze (3D Estimator Pro)
Fires when a user clicks "Analyze with AI" on a 3D Estimator project and does not have their own Gemini API key configured. Forward photos to Gemini Vision (or any vision model) and write the measurement JSON back to aiRequests/{reqId}/result in the database. Used for testing and as a free-trial fallback.
Team Invite Email
Fires when an Enterprise owner invites a viewer to their team (Sub-Users). Forward to Brevo/SendGrid to deliver a branded invite email with the accept link. Payload includes toEmail, teamName, role, invitedByEmail, acceptUrl, and expiresAt.
Sample Payload — Proposal Sign Request
{
"type": "proposalSignRequest",
"toEmail": "john@example.com",
"toName": "John Smith",
"signingLink": "https://app.iowacontractorhub.com/sign.html?token=abc123…",
"estimateNum": "1001",
"estimateTitle": "Window Estimate",
"grandTotal": "$10,500.00",
"depositAmount": "$5,250.00",
"personalMessage": "Looking forward to working with you!",
"companyName": "One Community Construction",
"companyPhone": "319-493-3039",
"companyEmail": "onecommunityconstruction@gmail.com",
"expiresAt": "2026-05-13T00:00:00.000Z",
"sentAt": "2026-04-13T12:00:00.000Z"
}
When off, admins bypass the verification step on login.
Admin MFA — SMS Fallback Webhook
Used only if your Twilio account (Conversations → Settings) is not connected.
When Twilio is connected, codes are sent directly — no webhook needed.
Payload: { phone, code, email }
Admin MFA — Email Fallback
Used only when the SMS webhook above is not configured.
Payload: { toEmail, code }
Your MFA Phone Number
This number receives your verification codes when you sign in. Only you can see it.
Database Update
Paste a JSON batch of contractor service assignments and write them directly to Firebase.
Batch JSON
Load a JSON file or paste directly. Format: {"C123456": {"list": ["Roofing"], "top": "Roofing"}, ...}
No file selected
Preview 0 records
Write Log
Vendor Catalogs
Publish the Heartland window pricing catalog (from scripts/ingest-heartland-catalog.mjs → data/heartland-catalog.json) to /platformCatalogs/heartland. Every Window Hub user picks up the new pricing on their next page load.
Currently published:Loading…
No file selected
Social Reviews — Google Matching
Find each contractor's Google Business Profile and approve the match. Approved place IDs are used later to pull live Google reviews into the contractor card.
Contractor
Type to search for a contractor.
Select a contractor from the left to look up their Google Business Profile.
Website Orders
Users who have requested a website build through the Website Hub templates.
Enter your SSN or EIN — not both. For individuals this is your SSN. For a sole proprietor you may enter either. Do not enter a TIN belonging to another person.
Your TIN is encrypted and stored securely. It will only be used for tax compliance purposes.
Electronic Signature
Review the W-9 certification below in full, then provide your electronic signature. Your e-signature is legally binding under the E-SIGN Act.
W-9 Taxpayer Certification — Iowa Contractor Hub
Under penalties of perjury, I certify that:
The number shown on this form is my correct taxpayer identification number (or I am waiting for a number to be issued to me).
I am not subject to backup withholding because: (a) I am exempt from backup withholding, or (b) I have not been notified by the Internal Revenue Service (IRS) that I am subject to backup withholding as a result of a failure to report all interest or dividends, or (c) the IRS has notified me that I am no longer subject to backup withholding.
I am a U.S. citizen or other U.S. person (including a U.S. resident alien).
The FATCA code(s) entered on this form (if any) indicating that I am exempt from FATCA reporting is correct.
By providing my typed name below and checking the consent box, I acknowledge that:
I intend to sign this W-9 form electronically.
I consent to conduct this transaction electronically in accordance with the Electronic Signatures in Global and National Commerce Act (E-SIGN Act) and applicable state laws.
My electronic signature is legally binding and has the same legal effect as a handwritten signature on IRS Form W-9.
I have had the opportunity to review this certification in its entirety before signing.
Scroll to bottom to continue
Signing as (verified account)
—
Authenticated
Profile & Settings
Manage your contact info, W-9 and contractor profile
Change
Profile Photo
JPG or PNG · Max 1 MB · 500×500 recommended
Uploading…
Contact Information
W-9 Eligibility
W-9 EligibleI am authorized to work in the United States and am willing to complete a W-9 form so I can be issued a 1099 at the end of the year.
Not W-9 EligibleI am not willing or able to complete a W-9 / receive a 1099. This may limit sub-contract opportunities from other contractors.
Sub-Contract Availability
Services you offer (select all that apply):
Sub-Contract Availability:
Insurance Information
Add your insurance details to display a verified badge on your contact card.
Lead-Based Paint Certification
EPA RRP or equivalent lead-safe certification.
Uploading…
Worker's Compensation
Current workers' comp policy or exemption certificate.
Uploading…
Contractor Profile
Member Feature
Insurance Verification Required
State Registration Required
Insurance Verification
Two steps to verify your coverage and unlock full access
1
Insurance Info
2
Release of Information
Claim Contractor Profile
Link your registration number to your account
Enter your Iowa contractor registration number to claim your profile and get an "Active on Hub" badge.
Welcome to Iowa Contractor Hub!
Apply for Verified Membership
Submit your credentials to be added to the Iowa Contractor Hub
Your application will be reviewed by our team. Once approved, you'll receive your Active Member badge and full platform access.
Send Message
Start Group Chat
Create a group and invite members. They must accept to join.
Invited
Create New User
A password-reset link will be generated so the user can set their own password. You can copy and share it, or send it yourself.
—
Account Activity
Date Created—
Last Login—
Business Info
Business Name—
Address—
Phone—
Email—
License #—
Documents
W-9—
Lead-Based Paint Cert—
Worker's Comp—
Video
No video configured yet.
Loading video…
We're having trouble loading this video right now.
This could be a temporary network issue. Please try again in a moment, or if you need help reach out to our support team.
Settings
Notification preferences & account settings
Notifications
Display
Messaging
Team
Invite team members and control exactly what each person can see and do — set every feature to Hidden, View only, or Edit. Sensitive connection settings (Stripe, Twilio, email) always stay owner-only.