In order to set up your custom forms, you'll first need to create your custom fields. Check out how to do that here: Custom Fields.
Once you have your custom fields set up you can begin to build forms to categorize your requests, gather more information from your end-users, and even create recipes to trigger further actions based on the form used or the custom field response.
To make a new custom form, go to Settings > Queues, select a queue, and go to the Forms tab. From here, you will have the option to name the form, add and rearrange the fields you want to appear on the form, and select which fields should be required. There is a Forms tab outside of the Queues tab, however it is for an at-a-glance view of all of your forms. Forms cannot be edited within the Forms tab.
Once your form has been built, end users will be prompted with the form picker when creating a ticket with the slash command (/halp) or when they create a ticket from the App Home experience. Also, if you have the setting 'Require form selection for tickets created with an emoji or message action' set to enabled, the user will also be prompted with the form when marking a message with your ticket creation emoji in request channels connected to this queue.
Note: If you don't want the ticket to have the name of the form as the main description of the ticket, make sure you have a field called 'title' on the form. This will prevent the original message from being replaced with the form's name. For more on this check out this article: How the Title gets set on a Ticket.
When editing an existing ticket in Slack, you may notice that the pop up has more fields than what was on the form you created the ticket with. This is a great way to gather information on the ticket that is not visible to the end user. Maybe you have a resolution field and you don't want your end user to see that you marked the resolution as "user error" or you have some fields trigger recipes or actions in integrations that might not make sense the requester.
Tickets that are submitted from forms will be routed to the queue that the form belongs to. Formerly a recipe was required to send tickets created with a form to a specific queue, but this is no longer necessary.