Skip to main content

How to build an IT equipment and access request intake with approval status tracking in Formaloo

Learn how to build an IT equipment and access request intake in Formaloo: a status-tracked form, automated confirmation and decision emails, a generated PDF record, and a role-based portal for requestors and IT.

What you'll build

A single request form where employees ask for a laptop, a software seat, or system access. Every submission gets a status the moment it lands, Pending, In review, Approved, or Rejected, and confirmation, alert, and decision emails go out automatically as that status changes. Your IT team works the queue from a table or Kanban view, generates a clean PDF record for every decision, and sees a dashboard chart showing exactly how many requests are open at any time. Requestors and IT each get their own portal view of the same underlying data.


When to use this

  • A new hire is starting Monday and needs a laptop, a few software seats, and VPN access set up before day one.

  • An engineer already has a device but needs a new SaaS seat, like a design tool or a paid API tier, and doesn't know who approves it.

  • IT is fielding equipment and access requests over Slack and email with no single record of what's pending, approved, or denied.

  • A distributed team needs requests visible to whichever IT admin is on call, not just the person who happened to read the message first.

  • Leadership wants to see how many requests are open, approved, or piling up without pinging IT directly.


Step-by-step

Part 1 — Build the request form

This is where the workflow starts: one form that captures what someone needs, who they are, and why, while quietly setting up the fields your team will use to track and approve it later. The fastest way to build it is with Magic Create.

1. Create a new project: From your Formaloo homepage, start with Form rather than Client portal or Dashboard. This gives you one form ready to go, plus a project with a table page and a chart page already attached.

2. Open Magic Create: From your Formaloo homepage, click Magic Create. Describe your form in plain text: "An IT equipment and access request form for employees. Public fields: full name, work email, team name, request type as a choice of Laptop or hardware, Software license or SaaS seat, System or VPN access, or Other, shipping address, tool or system name, justification as long text, an is this urgent yes/no field, a needed by date, and a file upload for supporting documents. Admin-only fields: a status dropdown with Pending, In review, Approved, and Rejected, an assignee field, and an internal notes long text field." Click Create.

3. Verify your fields: Your form should look like the table below. Magic Create will have generated most of it. Verify each field and field ID matches exactly, since the logic, email, and PDF steps ahead all reference these IDs directly.

Field (question form)

Field ID

Type

What's your full name?

requestor_name

Short text

What's your work email?

requestor_email

Email

Which team are you on?

team_name

Short text

What are you requesting?

request_type

Choice

Where should we ship the device?

shipping_address

Short text

Which tool or system is this for?

tool_name

Short text

Why do you need this?

justification

Long text

Is this urgent?

is_urgent

Yes/No

When do you need this by?

needed_by_date

Date

Attach any supporting documents

supporting_details

File upload

Status (admin-only)

status

Dropdown

Assignee (admin-only)

assignee

Assignee

Internal notes (admin-only)

internal_notes

Long text

💡 Want internal fields like Status and Assignee invisible to the person filling out the form? Admin-only fields are the mechanism. See what are admin-only fields and how they help.

4. Publish the form: Click Publish in the island bar at the top of the editor.


Part 2 — Auto-track every request with logic

A request form is only useful if every submission gets tracked the moment it arrives, not whenever someone remembers to update it. This part sets the status to Pending automatically on submit, and gates the shipping address and tool/system fields so requestors only see what's relevant to their request type.

💡 Want a rule to fire the moment a form is first submitted, like sending a confirmation or setting a status? On Submit is that trigger. See what is On Submit logic and how it works.

1. Open Advanced logic: In the form settings panel on the right side of the form editor, open Advanced logic and go to the Logic tab.

2. Open Magic Logic: Click Magic Logic in the top right corner and paste a plain description of every rule at once: "When request type equals Laptop or hardware, show and require the shipping address field, otherwise keep it hidden. When request type equals Software license or SaaS seat or System or VPN access, show and require the tool or system field, otherwise keep it hidden. When is this urgent equals Yes, show the needed by date field, otherwise keep it hidden. On submit, assign status to Pending for every submission. On submit, assign assignee to the IT team."

3. Generate and review the rules: Click Generate Rules. Formaloo previews each rule; approve, redo, or cancel them individually.

4. Save: Once you're happy with the rules, click Save in the top right corner.

Note: Only workspace admins can see or edit the status, assignee, and internal notes fields once they're marked admin-only.


Part 3 — Create the email templates

This workflow runs on four emails: a confirmation the moment a request lands, an alert to IT, an escalation when something's urgent, and a decision email once status changes. Each one is a custom email template built with an AI block, so it reads as if it was written for that specific requestor.

💡 Want to send branded, personalized emails instead of Formaloo's plain default notification? This is the foundational guide to building and sending custom email templates. See how to create and send custom email templates.

1. Create your first template: Click your profile icon, go to Apps and Integrations, then Custom Email Templates, and click Add New Template. Clear the body field, add an AI block, and paste a prompt describing the email. For the confirmation email, use:

Write a warm, brief confirmation email to @requestor_name letting them know their request for @request_type has been received and is now in the Pending queue. Mention it will be reviewed shortly by IT. Keep it to 2-3 sentences, friendly and reassuring. Include a small status badge reading "Pending" and a muted footer in #999.

2. Name the template, set the subject, and save: Give it a clear internal name, set the subject to "We received your request, @requestor_name," and click Save.

3. Repeat for the remaining three templates, using the subjects and triggers below. Each follows the same pattern: a plain-language AI prompt, a subject line with piped fields, and a trigger you'll wire up back in the logic rules from Part 2.

#

Email

Subject

Trigger

Sent to

2

New request alert

New IT request: @request_type from @requestor_name

Request is submitted

IT team

3

Urgent request flagged

Urgent: @request_type request from @requestor_name needs review

Request submitted with "Is this urgent?" equal to Yes

IT team

4

Request decision

Your request has been @status

Status changes to Approved or Rejected

@requestor_email

💡 Want a rule to fire whenever an existing record changes, like a status flipping to Approved? On Update is the trigger for the decision email. See what is On Update logic and how it works.

4. Turn on notifications: From the right sidebar of the form builder, click Notify. Turn on respondent notifications using your confirmation template.

5. Add the conditional triggers: Back in Advanced logic, add a Send email action to the On Submit rule for the new request alert, add a condition-gated Send email action for the urgent escalation (only when is this urgent equals Yes), and add a Send email action to an On Update rule for the decision email, firing when status changes to Approved or Rejected.

📖 See how to send and receive conditional email notifications for setting the urgency and status-change conditions.


Part 4 — Create the PDF record template

The last piece your IT team needs is a clean, exportable record of every request and its final decision, useful for audits, asset tracking, or handing a request off to procurement.

💡 Want every form submission to generate a polished, branded document automatically? This is the foundational guide to building a PDF template from a submission. See how to create PDF templates to turn responses into documents.

1. Open the PDF template editor: Click your profile icon, go to Apps and Integrations, then Custom PDF Template, and click Add New Template.

2. Switch to the HTML view and paste the template below. It pipes in every field from your form using @field_id variables, including the requestor's details, the request itself, and IT's decision.

💡 Want to pull a submitter's own answers into a document like this? Answer piping is how Formaloo passes data into templates using @field_id variables. See how to use answer piping in Formaloo.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>IT Equipment & Access Request</title> <style>   @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital@1&display=swap');   * { box-sizing: border-box; margin: 0; padding: 0; }   body {     font-family: 'Inter', system-ui, -apple-system, sans-serif;     background: #ffffff;     color: #1a1a1a;   }   .page { max-width: 760px; margin: 0 auto; padding: 60px 72px; }   .header {     display: flex;     justify-content: space-between;     align-items: flex-start;     padding-bottom: 28px;     border-bottom: 1px solid #eaeaea;     margin-bottom: 36px;   }   .header h1 { font-size: 22px; font-weight: 700; letter-spacing: -0.01em; }   .header .meta { text-align: right; font-size: 12px; color: #999; line-height: 1.6; }   .header .meta strong { color: #555; font-weight: 600; }   .section { margin-bottom: 32px; }   .section-title {     font-size: 10px;     font-weight: 700;     text-transform: uppercase;     letter-spacing: 0.12em;     color: #aaa;     margin-bottom: 14px;   }   .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 32px; }   .field { padding-bottom: 10px; border-bottom: 1px solid #f0f0f0; }   .field.full { grid-column: 1 / -1; }   .field-label { font-size: 11px; color: #999; margin-bottom: 4px; }   .field-value { font-size: 14px; color: #1a1a1a; font-weight: 500; }   .inset {     background: #f9f9f9;     border-left: 3px solid #ddd;     padding: 16px 20px;     border-radius: 4px;     font-size: 13px;     color: #444;     line-height: 1.6;   }   .signature-block { margin-top: 24px; padding-top: 20px; border-top: 1px solid #f0f0f0; }   .signature-name {     font-family: 'Playfair Display', serif;     font-style: italic;     font-size: 20px;     color: #333;     margin-bottom: 6px;   }   .signature-caption { font-size: 11px; color: #999; }   .footer {     margin-top: 48px;     padding-top: 20px;     border-top: 1px solid #eaeaea;     display: flex;     justify-content: space-between;     font-size: 10px;     color: #bbb;   } </style> </head> <body>   <div class="page">     <div class="header">       <h1>IT Equipment & Access Request</h1>       <div class="meta">         Reference #<strong>@submission_id</strong><br>         Submitted <strong>@created_at</strong>       </div>     </div>     <div class="section">       <div class="section-title">Requestor</div>       <div class="grid">         <div class="field"><div class="field-label">Full name</div><div class="field-value">@requestor_name</div></div>         <div class="field"><div class="field-label">Work email</div><div class="field-value">@requestor_email</div></div>         <div class="field"><div class="field-label">Team</div><div class="field-value">@team_name</div></div>         <div class="field"><div class="field-label">Request type</div><div class="field-value">@request_type</div></div>       </div>     </div>     <div class="section">       <div class="section-title">Request details</div>       <div class="grid">         <div class="field"><div class="field-label">Shipping address (hardware requests)</div><div class="field-value">@shipping_address</div></div>         <div class="field"><div class="field-label">Tool or system (software / access requests)</div><div class="field-value">@tool_name</div></div>         <div class="field full"><div class="field-label">Justification</div><div class="field-value">@justification</div></div>       </div>     </div>     <div class="section">       <div class="section-title">Timing</div>       <div class="grid">         <div class="field"><div class="field-label">Urgent</div><div class="field-value">@is_urgent</div></div>         <div class="field"><div class="field-label">Needed by</div><div class="field-value">@needed_by_date</div></div>       </div>     </div>     <div class="section">       <div class="section-title">Attachments</div>       <div class="field full"><div class="field-value">@supporting_details</div></div>     </div>     <div class="section">       <div class="section-title">Decision</div>       <div class="grid">         <div class="field"><div class="field-label">Status</div><div class="field-value">@status</div></div>         <div class="field"><div class="field-label">Assignee</div><div class="field-value">@assignee</div></div>         <div class="field full"><div class="field-label">Internal notes</div><div class="inset">@internal_notes</div></div>       </div>       <div class="signature-block">         <div class="signature-name">@assignee</div>         <div class="signature-caption">Reviewed by</div>       </div>     </div>     <div class="footer">       <span>Confidential &mdash; internal IT record</span>       <span>Your Company Name</span>     </div>   </div> </body> </html>

3. Name the template "IT request record" and click Save.

4. Attach it to the decision email: Back in Part 3's On Update rule, add a Generate PDF action using this template, then attach the generated file to the decision email so requestors get a copy the moment status changes.


Part 5 — Review, assign, and update requests from the table

This is where your team actually works the queue: opening each request, checking the details, and moving the status forward as decisions get made.

1. Open the responses table: From your project, open the table page connected to your request form.

2. Assign the request: Set the assignee field to the IT admin who's reviewing it, or leave the auto-assigned team in place.

3. Update the status: Change the status field from Pending to In review, then to Approved or Rejected once a decision is made. This single edit is what triggers the decision email and PDF from Parts 3 and 4.

4. Switch to Kanban for a pipeline view: Add a Kanban data block connected to the same form, grouped by status, so your team can drag requests between stages instead of editing the dropdown row by row.

📖 See how to sort and filter your submissions data for building filtered views like "assigned to me" or "urgent only."


Part 6 — Turn the project into a role-based portal

A portal turns the same form and data into two separate experiences: requestors track their own submissions, and IT admins work their assigned queue, without either side seeing data that isn't theirs.

💡 Want to give clients, applicants, or teammates their own space to submit and track requests? This is the foundational guide to building a portal and controlling who can see it. See how to create a portal and manage users' access.

1. Activate the portal: From your project, click the Settings icon and select Activate Portal. Open the Setup Wizard and connect a user directory.

2. Add roles: In the user directory, open Edit Profile Fields and add "Requestor" and "IT admin" as roles.

3. Restrict requestors to their own data: On the "My requests" page, switch to Edit Mode, open Options → Manage Access, and enable Allow users to view only their data on the requestor_email field.

4. Restrict IT admins to their assigned queue: On the assignee-filtered pages, enable Allow assignees to view only their data on the assignee field.

Note: You can set a custom domain on your portal, available on the Business plan or via the Brand removal add-on.


Part 7 — Visualize requests on a dashboard

The default chart page that came with your project is where leadership and IT can see the shape of the queue at a glance, without touching a single row.

1. Open the chart page: From your project, go to the page with the default Chart data block connected to your form.

2. Group by status: Set the chart to group by the status field, so you can see how many requests sit in Pending, In review, Approved, and Rejected at any time.

3. Add a second chart for request type: Optionally, add a bar chart grouped by request type to see whether most incoming requests are hardware, software, or access related.


What you now have

A single form that captures every equipment and access request your team gets, with a status that's set the moment it's submitted and updated as your team reviews it. Requestors get a confirmation immediately and a decision email, PDF attached, the moment status changes. IT sees urgent requests flagged separately from routine ones, works from a table or Kanban view, and can generate a clean PDF record for every decision. Requestors and IT each get their own portal view, and a dashboard chart shows the shape of the whole queue without anyone needing to dig through rows.


What's next

  • Add a second review stage Some requests, like a new SaaS tool with real budget impact, need a manager's sign-off before IT even sees them. Layer in a second approval stage without rebuilding the form from scratch. → How to build a dual-approval request workflow

  • Let AI pre-screen or prioritize requests Instead of every request landing in the same Pending pile, score requests automatically based on urgency, cost, or request type, and route the highest-priority ones straight to a senior admin. → How to build an AI-powered lead qualification system

  • Give each IT admin a personal queue across every form If your team manages more than just this one intake form, the Activity page shows every assignee their own work across all of them, in one place. → What is the Activity page in Formaloo and how to use it


Ready-to-use templates

Don't build this from scratch, we've already put it together for you.

Employee request workflow — Internal request management built for HR and ops teams. Swap the request types for hardware, software, and access requests and the same status-tracking pattern from this article applies directly.

Job applicant tracking workflow — Tracks candidates across hiring stages with assignee-based ownership. The same assignee-plus-status combination is exactly what routes IT requests to the right admin.

Patient intake & consent workflow for healthcare — Pairs conditional intake logic with a generated PDF consent document and an admin Kanban pipeline, the same two pieces Parts 4 and 5 of this workflow rely on.

Don't have a form yet? Create one in seconds with Magic Create, describe what you need and Formaloo builds the form for you.


Learn more how-tos

Did this answer your question?