What you'll build
By the end of this guide, you'll have a job intake form where your team logs incoming repair and maintenance requests, a vendor roster that tracks every contractor's trade and service area, and logic that auto-assigns each job to the right available vendor. You'll also have status tracking from New through Completed, a printable work order for every job, and a portal where dispatch, vendors, and admins each see exactly what they need.
When to use this
Your facility management company handles repair requests across multiple properties and manually decides which vendor to call every time
Jobs get assigned to whichever vendor someone remembers first, not the one actually available or qualified for the trade
You have no central record of which vendor handled which job, so service history lives in someone's inbox or memory
Emergency repairs sit in the same queue as routine maintenance, with nothing flagging them for faster attention
You want vendors to update their own job status instead of calling your office for updates
Part 1 β Build the job request form with Magic Create
This is where jobs enter the system. You'll build the intake form your team uses to log a repair or maintenance request, capturing the site, job type, urgency, and a description of the issue. Magic Create builds the whole form, including your admin-only fields, from a plain-language prompt.
1. Open Magic Create: From your Formaloo homepage, click Magic Create.
2. Describe your form: Paste a prompt describing the form. For example: "Build a job request form for a facility management company dispatching repair and maintenance jobs. Include: site name and address, job type (Plumbing, Electrical, HVAC, Cleaning, Landscaping, General repair, Other), a long text issue description, an optional file upload for photos of the issue, an urgency level (Low, Medium, High, Emergency), a due date, and who's reporting the job. Add four admin-only fields: a status dropdown (New, Assigned, In progress, Completed, Cancelled), an assignee field, an internal notes long text field, and a short text job cost field."
3. Generate the form: Click Create. Formaloo builds the form for you in seconds.
π‘ Want internal fields, like status, assignee, and job cost, invisible to whoever's logging the job? Admin-only fields are the mechanism. See what admin-only fields are and how they help.
4. Verify your fields: Your form should look like this. Magic Create will have generated most of it. Verify each field and field ID matches exactly:
Field | Field ID | Type |
What's the property or site name and address? | site_address | Short text |
What type of job is this? | job_type | Dropdown |
Describe the issue | issue_description | Long text |
Upload photos of the issue | issue_photos | File upload |
How urgent is this? | urgency | Dropdown |
When do you need this resolved by? | due_date | Date |
Who's reporting this job? | reporter_name | Short text |
5. Publish your form: Click Publish in the island bar at the top of the editor.
π Your Status, Assignee, and Due date fields power everything that follows in this guide. See how to use the Status field in Formaloo and how to use the Due date field in Formaloo.
Part 2 β Build the vendor roster
This is your vendor directory. It lives as its own form so it stays reusable and so every vendor's service history is just their job records filtered by name, no separate history form required.
1. Add a new form to your project: From your project, add a second form for the vendor roster.
π‘ Want a second form living inside a project you already built? Projects can hold more than one form. See how to connect a form to your existing project, or create a new form in it.
2. Open Magic Create: From your Formaloo homepage, click Magic Create.
3. Describe your vendor roster: Paste a prompt describing the form. For example: "Build a vendor roster form for a facility management company. Include: vendor business name, primary contact name, contact email, contact number as short text, trade or specialty as a multi-select (Plumbing, Electrical, HVAC, Cleaning, Landscaping, General repair, Other), service area, and whether they have current insurance or certification on file (Yes/No). Add three admin-only fields: a status dropdown (Active, Inactive, Under review), a vendor rating dropdown (1-5 stars), and an internal notes long text field."
4. Generate and verify: Click Create, then verify your fields match:
Field | Field ID | Type |
What's the vendor's business name? | vendor_name | Short text |
Who's the primary contact? | contact_name | Short text |
What's their contact email? | contact_email | Short text |
What's their contact number? | contact_number | Short text |
What trade or specialty does this vendor cover? | vendor_trade | Multi-select |
What's their service area? | service_area | Multi-select or short text |
Do they have current insurance or certification on file? | insurance_on_file | Yes/No |
5. Connect the two forms: Add an "Assigned vendor" field to your job request form, then link it to this vendor roster form so it pulls vendor names directly from this list instead of manual entry.
6. Publish your form: Click Publish in the island bar at the top of the editor.
Part 3 β Set up auto-assignment with Magic Logic
This is where dispatch stops being manual. You'll set up logic so jobs route themselves to an available, qualified vendor, emergencies get flagged immediately, and status updates trigger the right notifications.
π‘ Want a request to move through review, approval, or routing stages automatically? See how to build an approval workflow in Formaloo.
1. Open advanced logic: In the job request form editor, open Advanced logic in the settings panel on the right side, and navigate to the Logic tab.
π‘ Want your form to show, hide, skip, or route based on what someone just answered? See what logic is in Formaloo.
2. Open Magic Logic: Click Magic Logic in the top right corner of the Logic panel.
3. Describe your rules: Paste a prompt describing all conditions at once. For example: "On submit, if job type matches a vendor's trade and that vendor's status is Active and their service area matches the site address, assign the assigned vendor field to that vendor and set status to Assigned. Exclude any vendor whose status is not Active or whose insurance on file is No from this matching. If urgency equals Emergency, immediately notify the internal dispatch team regardless of assignment status. If status is changed to In progress, notify the assignee. If status is changed to Completed, set the completion date to today. If status is changed to Cancelled, clear the assigned vendor field."
4. Generate and review the rules: Click Generate Rules. Approve, redo, or cancel each rule the AI previews.
5. Save your logic: Once approved, click Save in the top right corner.
Note: Mark new vendors "Under review" by default on your vendor roster, then switch them to Active once their insurance is confirmed, so they only enter the auto-assignment pool when they're actually ready.
Part 4 β Create your email templates
This is where dispatch, vendors, and reporters stay in the loop without a single phone call. You'll build four templates: a job confirmation, a vendor assignment notice, an emergency escalation alert, and a completion notice.
π‘ Want to send branded, personalized emails instead of Formaloo's plain default notification? See how to create and send custom email templates.
1. Open custom email templates: Click your profile icon, go to Apps and integrations, find Custom email templates, and click Add new template.
2. Generate the confirmation email: Clear the body field, add an AI block, and enter a prompt asking for a short, reassuring email to the reporter confirming their job was logged and is being routed to a vendor, referencing the site address and due date.
3. Generate the vendor assignment email: Repeat step 2 for a second template addressed to the assigned vendor's contact, referencing job type, urgency, due date, and issue description, with a line asking them to update job status through the portal.
4. Generate the emergency escalation email: Repeat step 2 for a third template addressed to the internal dispatch team, flagging that an emergency job needs immediate vendor assignment.
5. Generate the completion email: Repeat step 2 for a fourth template addressed to both the reporter and vendor, confirming the job is closed out.
6. Set conditional triggers: Back in Advanced logic, add rules so each template fires at the right moment: the confirmation on submit, the assignment email when assigned vendor is set, the escalation email when urgency equals Emergency, and the completion email when status changes to Completed.
Part 5 β Build the work order PDF
This is where every job gets a printable record the vendor can carry on-site. You'll create one PDF template covering job details, vendor info, and a signature line for sign-off.
π‘ Want every form submission to generate a polished, branded document automatically? See how to create PDF templates to turn responses into documents.
1. Open custom PDF templates: Click your profile icon, go to Apps and integrations, and click Custom PDF template.
2. Add a new template: Click Add new template, switch the editor to the HTML view, and paste your PDF's HTML code. Use @field_id variables to pull in the site address, job type, urgency, issue description, due date, assigned vendor's contact details, status, and job cost.
π‘ Want to pull a submitter's own answers into later questions, emails, or PDFs? See how to use answer piping in Formaloo.
3. Name and save the template: Give it a name like "Work order summary," and click Save.
4. Attach it to your status logic: In Advanced logic, set the PDF to regenerate and attach to the vendor assignment email, so every vendor gets a current, printable work order the moment they're assigned.
Part 6 β Set up the portal and pages
This is where dispatch, vendors, and admins each get their own view. You'll activate a portal, add role-based pages, and restrict vendors to only their own assigned jobs.
π‘ Want to give clients, applicants, or teammates their own space to submit and track requests? See how to create a portal and manage users' access.
1. Activate your portal: Go to your project, click the settings (gear) icon, select Activate portal, then click Manage user and open the setup wizard.
2. Set up your user directory: Search for an existing user directory or add a new one, then click Next step to configure login, sign-up, and CAPTCHA settings.
3. Add user roles: Go to your user directory, click Edit profile fields, and scroll to the User roles field to add Dispatch, Vendor, and Admin roles.
π‘ Want reviewers, approvers, and applicants to each see a different view of the same portal? See how to create and assign user roles in your portal.
4. Build the Dispatch group: Add a "Log a new job" form page, an "All jobs" Kanban board grouped by status, an "Unassigned jobs" table, an "Emergency queue" table, and a "By due date" table.
π‘ Want a visual, drag-and-drop way to move records through stages, like a pipeline? See how to create a Kanban board.
5. Build the Vendors group: Add a "My assigned jobs" table filtered to the logged-in vendor's own assignments, plus a "My job history" table filtered to their completed jobs.
π‘ Want each logged-in user to see only their own submissions, not everyone else's? See how to let users view and edit their own data in your portal.
6. Build the Admin group: Add a "Vendor roster" table, an "Add a vendor" form page, a "Vendors under review" table, and a "Vendor service history" table grouped by vendor.
7. Build the Reports group: Add three charts: "Jobs by trade," "Vendor performance" grouped by average rating, and "Turnaround time" tracking average days to completion by month.
8. Share your portal: Click Publish, then share the portal link with your dispatch team and vendors.
Note: Portals can be set up on a custom domain, available on the Business plan or the Brand removal add-on.
What you now have
A dispatch system that routes repair and maintenance jobs to the right vendor automatically, based on trade and service area, instead of whoever your team remembers to call. Emergency jobs get flagged the moment they're submitted. Every vendor sees only their own assigned jobs and updates status themselves, and every completed job leaves a service history record and a rating, without a separate tracking form. Dispatch, vendors, and admins each work from their own view of the same pipeline.
What's next
Route jobs across a larger vendor pool As your vendor roster grows, you may want routing logic that also weighs vendor rating or current workload, not just trade and area. β How to automatically assign submissions to the right team member or team, and control what each assignee sees
Track SLAs on emergency jobs If emergency repairs need a guaranteed response window, you can add a due date that calculates automatically from the submission time. β How to use the Due date field in Formaloo
Give dispatch one queue across every property If your team also manages requests from other forms, like tenant complaints or inspection follow-ups, they can check everything assigned to them in one place. β What is the Activity page in Formaloo and how to use it
Ready-to-use templates
Job applicant tracking workflow β Tracks records across stages with reviewer assignments from one view. Its pipeline structure maps directly onto tracking a job from New through Completed.
Employee request workflow β Routes internal requests by type and tracks approvals from one place. The same routing pattern applies to matching job type against vendor trade.
AI lead qualification & scoring form β Auto-routes records based on a scored or categorized field with conditional emails. Its conditional routing logic is a close match for auto-assigning jobs to the right vendor.
Learn more how-tos
See the broader routing pattern this workflow builds on If you want the general mechanics behind assignee-based routing before this article's vendor-matching logic, start here. β How to build a dual-approval request workflow in Formaloo
Apply scoring logic to vendor selection If you want to rank vendors by more than trade and area, like cost or past rating, this article shows how conditional scoring and routing work together. β How to build an AI-powered lead qualification system in Formaloo
Manage capacity the same way you manage vendor availability If your properties also handle bookings or capacity-limited events, this article covers the same "only route to what's available" logic applied to registrations. β How to collect event registrations, manage capacity, and send automated confirmations in Formaloo
