Published

Updated

How to build a vendor service request portal with Gravity Forms and GravityView

Learn how to build a vendor portal where users submit, track, edit, and cancel service requests using Gravity Forms and GravityView Pro.

If you manage service requests for vendors, clients, or tenants, you know how quickly things can spiral when everything runs through email. There’s no central place to track request status, no way for vendors to self-serve, and no audit trail when things go wrong.

In this tutorial, I’ll show you how to build a fully functional vendor service request portal on your WordPress site using Gravity Forms and GravityView Pro. Vendors will be able to submit service requests, track their status, edit details, and even cancel requests, all from the front end. Meanwhile, admins get a powerful dashboard to manage incoming requests, update statuses, and attach completion reports.

Let’s get started!

Sneak peek

Before we dive in, here’s what the finished portal looks like. Admins get a searchable dashboard where they can view and manage all incoming requests:

Admin dashboard showing a searchable table of all service requests with filters for Service Type, Priority, and Status

Clicking into a request reveals full details, where admins can update the status and add completion notes:

Single entry view showing full request details with a detailed admin completion report

Vendors have their own dashboard where they can monitor their requests, check the status, and update details—all from the front end:

Vendor dashboard showing a filtered table with only the logged-in vendor's service requests and color-coded status labels

What you’ll need

  • Gravity Forms – for building the service request submission form and configuring notification emails
  • Gravity Forms User Registration Add-On (optional) – for allowing vendors to register and log in to your site
  • GravityView Pro – for displaying entries on the front end, enabling front-end editing, and filtering entries by the logged-in user

Step 1: Create the service request form

First, we’ll create a new Gravity Forms form to collect service requests. Hover over Forms in the WordPress admin menu and click New Form. I’ll name mine “Vendor requests.”

We’ll add the following fields:

  1. Request Title (Single Line Text) — a short summary of the request
  2. Description (Paragraph Text) — detailed information about the service needed
  3. Service Type (Drop Down) — options like Inspection, Maintenance, Repair, Exterior, and Installation
  4. Priority (Drop Down) — Low, Medium, High, or Urgent
  5. Status (Drop Down) — Open, Pending, In Progress, and Complete, with a default value of “Open”
  6. Vendor Notes (Paragraph Text) — a space for vendors to add special instructions or access details
The Gravity Forms editor showing the Vendor requests form with fields for Request Title, Description, Service Type, Priority, and Status

The Status field is key as this is what admins will use to track progress. Since vendors shouldn’t be able to change the status themselves, we’ll set its visibility to Administrative. Click on the Status field, then under Visibility in the field settings panel, select Administrative.

The Status field settings with Visibility set to Administrative and a default value of Open

Next, we’ll add a Cancel request field. This is a Radio Button field with a single option: “Confirm cancellation.” We only want this field to appear when a vendor is editing their request through GravityView, and only when the status is still “Open” or “Pending.”

To set this up:

  1. Set the field’s visibility to Administrative (so it won’t appear on the initial form submission)
  2. Enable Conditional Logic so the field only displays when the Status field is “Open” or “Pending”
The Cancel request field configured as Administrative with Conditional Logic set to Active

The conditional logic ensures that once a request is marked “In Progress” or “Complete,” the vendor can no longer cancel it. This prevents vendors from canceling work that’s already underway.

Step 2: Create the vendor dashboard View

Now that our form is ready, we’ll create the vendor-facing dashboard. This is where logged-in vendors will see a table of their own service requests.

To create a new View, hover over GravityKit in the WordPress admin menu and click New View. Give it a name like “Vendor dashboard,” select the Vendor requests form as the data source, and choose the Table View type.

The Add New View screen with Vendor dashboard as the title, the Vendor requests form selected, and the Table View type highlighted

Configuring the Multiple Entries page

On the Multiple Entries Layout tab, we’ll add the following columns:

  • Request Title
  • Service Type
  • Priority
  • Status
The Entries Fields configuration showing four visible table columns: Request Title, Service Type, Priority, and Status

We’ll also configure the Request Title field to link each row to the Single Entry page, so vendors can click through to see full details.

Here’s the most important step: we need to make sure vendors can only see their own requests. Scroll down to the Advanced Filter section and add a conditional logic filter where Created By is Currently Logged-in User.

The Advanced Filter settings with a condition set to Created By is Currently Logged-in User

This filter ensures that each vendor only sees entries they submitted—no one else’s requests will be visible.

Configuring the Single Entry page

Next, click on the Single Entry Layout tab. Here we’ll add all the fields so vendors can see full details of their request. We’ll also include two special fields:

  • Notes — a Gravity Form field that lets users attach notes to entries. This is a great way to communicate progress updates to vendors.
  • Link to Edit Entry — this allows vendors to update their requests from the front end.
The Single Entry Layout showing all fields including Request Title, Description, Service Type, Priority, Status, Vendor Notes, Admin notes, and Link to Edit Entry

Here’s what the Single Entry page looks like on the front end. The vendor can see all request details, any admin notes, and an “Update request” link at the bottom:

The front-end Single Entry page showing request details, admin notes section with an Add Note button, and an Update request link

Step 3: Make requests editable

To let vendors edit their requests from the front end, we’ll need to configure the Edit Entry Layout tab in GravityView. Click on the Edit Entry Layout tab and add the following fields:

  • Request Title
  • Description
  • Service Type
  • Priority
  • Vendor Notes
  • Cancel request

Notice that we’re deliberately excluding the Status field as we don’t want vendors to change the status themselves. We are including the Cancel request field, though. Thanks to the conditional logic we set up earlier, this field will only appear when the status is “Open” or “Pending.”

The Edit Entry Layout showing editable fields including Cancel request, with the Status field excluded

Here’s what the edit form looks like on the front end. Vendors can update their request details and, if the status allows it, cancel the request:

The front-end Edit Request form showing editable fields and a Cancel request option with a Confirm cancellation radio button

Step 4: Configure email notifications

To keep everyone in the loop, we’ll set up four notification emails in Gravity Forms. Navigate to your form settings by hovering over Forms, clicking on your Vendor requests form, then clicking Settings and Notifications.

1. Admin notification – this is the default notification that fires when a new request is submitted. It alerts the admin that a new service request has come in.

2. Vendor confirmation – this notification goes to the vendor to acknowledge receipt of their request. You can include merge tags like {Request Title:1} and {Status:5} to personalize the email.

3. Cancellation notification – this one fires when a vendor cancels their request. Set the Event to GravityView – Entry is updated so it triggers when the entry is edited through GravityView.

The Cancellation notification settings with the Event set to GravityView - Entry is updated

Then, enable Conditional Logic and configure it to send the notification when the Cancel request field is Confirm cancellation.

Conditional Logic configured to send the notification when Cancel request is Confirm cancellation

4. Completion notification – this notifies the vendor when their request is marked “Complete.” Set the Event to GravityView – Entry is updated, and add conditional logic so it only fires when the Status field is “Complete.”

Step 5: Create the admin dashboard

Finally, we’ll create a separate View for admins. This one won’t have the “Created By” filter, so admins can see all requests from every vendor.

Create a new Table View connected to the same Vendor requests form. Add a search bar with filters for Service Type, Priority, and Status so admins can quickly find and manage specific requests.

The admin dashboard showing all service requests from all vendors in a searchable, filterable table

On the Single Entry page for the admin View, include all fields plus the Notes field (renamed to “Admin notes”). This is where admins can attach completion reports, progress updates, or any other notes that will be visible to the vendor in their dashboard.

The admin notes section showing a detailed completion report including technician name, work performed, materials used, and follow-up notes

Admins can also update the Status field directly from the Edit Entry page—changing it from “Open” to “Pending,” “In Progress,” or “Complete” as work progresses.

The admin Edit Entry page showing the Status dropdown set to In Progress with Update and Cancel buttons

When the status is set to “Complete,” the completion notification fires automatically, letting the vendor know their request has been fulfilled.

That’s it!

Bonus: Optional enhancements

Want to take your vendor portal even further? Here are a couple of optional enhancements you can add:

  • DataTables layout – swap the standard table for a DataTables-powered layout with built-in sorting, searching, and pagination. This is especially useful if you expect a high volume of requests.
  • Entry Revisions – track every change vendors make to their requests, giving you a complete audit trail of all edits.

Ready to build your vendor portal?

In this tutorial, we built a complete vendor service request portal on WordPress entirely with Gravity Forms and GravityView Pro. No custom code required! Your vendors can submit requests, track their status, edit details, and cancel when needed. Admins get a centralized dashboard with search, status management, and notes for completion reports.

The best part? This same setup works for any scenario where you need a self-service portal. This includes client project requests, tenant maintenance requests, field service work orders, and more.

So what are you waiting for? Check out GravityView Pro and start building your vendor portal today!