Custom forms
Share this article
Overview
Custom forms are questionnaires you build in the Mallard Bay dashboard to collect structured information from guests or prospects. You define the questions (field types, required vs optional, order, and help text), decide whether a form is tied to bookings for specific listings and pricing packages, and optionally turn submissions into leads. Guests fill forms out through a hosted link or an embed script on your site; you review answers on each form’s Submissions tab and can preview the form before sharing it.
This feature is gated in the app by the Forms & Waivers capability (your plan must include it to use the /forms area).
Prerequisites
- Access to the Forms section of the admin dashboard (open
/formsif you are unsure where it lives in navigation). - A Mallard Bay plan that includes Forms & Waivers.
- Familiarity with listings and pricing packages, if you want forms to attach to bookings for specific trips.
Step-by-step: using custom forms in the dashboard
1. View and search your forms
- Go to
/forms(the main Forms list). - Use the toolbar search to filter forms by name (this updates the page’s
searchquery parameter). - The table shows each form’s name, number of inputs, submission count, whether Lead Gen is enabled, and date added.
- Open a form by clicking its row to see details and submissions.
Row actions include View form details, Edit, Duplicate, Copy link (copies the form’s Mallard Bay URL when the API provides one), Share (native share sheet with that URL), and Delete.
2. Create a form (two steps: Basics → Form Details)
- From the Forms list, choose Add New Form (
/forms/new). - Basics
- Enter a name (required).
- Optionally choose a template to pre-fill fields (Liability Waiver, Hunting License, or Contact). Templates only appear when creating a new form, not when editing an existing one.
- Add a description or notes (rich text) that explain the form’s purpose to your team or on the guest-facing side where it is shown.
- Select Continue to save this step. The app creates the form on first continue, or updates it if you are returning to Basics during an edit.
- Form Details
- Listings & Pricing Packages — Turn on the option to attach the form to bookings. When it is on, pick which listings and pricing packages the form applies to. The in-app copy explains that this controls how the form is shown in the booking experience.
- When attached to bookings, you can also configure:
- Does each group member need to complete this form? — If off, only the host is required to complete the form for the group; if on, each group member gets their own requirement.
- Is this form required? — When on, the form is shown as required on the client trip details for covered bookings.
- Create leads from form submissions — When enabled, each submission can create a lead; turning this on also adds standard name, email, and phone-style fields if they are not already present (to avoid duplicates by field title).
- Custom fields — Add, reorder, and configure individual questions. Available field types in the builder include Name, Email, Text, Text area, Date, File upload, Selection (options), Checkbox, Signature, and Listing & pricing package selection (lets the respondent choose listing/package-related options depending on how you configure it).
- Save completes the wizard and returns you to the main Forms list.
3. Edit an existing form
- From the Forms list menu, choose Edit, or open the form and use Edit in the header. The route is
/forms/edit/{formId}. - You move through the same Basics and Form Details steps as creation. Editing does not offer the starting template selector again—you adjust fields manually on the Form Details step.
4. Form detail page: Details, submissions, preview, embed
Open a specific form (/forms/{formId}).
- Details tab — Shows the description, embed code & instructions (hosted script snippet with your form id), and—if configured—which listings and pricing packages are linked for booking workflows.
- Submissions tab — Paginated table of responses. Columns show up to the first five non–file-upload questions plus date submitted; click a row to open full submission details in a modal (file uploads and other answers are handled in that detail view).
- Preview form opens a modal preview of how the questionnaire looks to respondents.
- Edit jumps back into the edit wizard.
Embed behavior in the dashboard:
- Normal forms use a script URL ending in
/form-submission/index.jswith adata-form-idattribute matching your form. - If the API marks the form as e-signature required, the instructions use a different bundle path (
/e-signature-form-submission/index.js).
5. Duplicate a form
From the Forms list overflow menu, choose Duplicate. After confirmation, the dashboard opens Edit for the newly copied form.
How this connects to nearby Mallard Bay concepts
- Bookings and listings — Linking a form to listings and pricing packages ties guest paperwork to the right trips. Required forms surface on client trip details for those bookings; per-member vs host-only controls whether everyone in the party must submit.
- Leads — With lead creation enabled, submissions feed your lead pipeline; lead detail views can show the associated form submission payload when the lead was created from a form (verified for leads whose source traces to a form submission).
- Website — The dashboard provides embed instructions using Mallard Bay’s hosted script so you can place the same questionnaire on your own site. Separately, the website builder includes form-related traits for wiring forms into pages (implementation lives outside the
/formsroutes but uses the same form records). - Waivers and signatures — Signature fields follow product rules enforced in the editor: any form that includes a signature field must also include an email field set to required. The Liability Waiver template satisfies this pattern out of the box.
Common pitfalls
- Signature without required email — You cannot save a form whose only email field is optional if a signature field is present. Add or mark an email field as required.
- Thinking “Phone” can always be added as a custom type — The standard field-type picker exposed in Custom fields does not include every type that exists on the backend (for example Address appears in backend enums but not in this picker). Phone inputs are commonly introduced via the contact template or when you enable Create leads from form submissions, not necessarily through “Add field” for every outfitter workflow.
- Template choice is create-only — If you forgot to pick a template at creation time, duplicate the form or add fields manually; Edit does not re-show the template dropdown.
- Submissions table vs full answers — The grid intentionally omits file upload columns; open a submission row for complete answers and uploads.
- Turning off “attach to bookings” — The save logic only sends booking-link configuration when at least one listing or package remains selected; how the server clears prior links when you disable the attachment switch is not visible in this repository—if links appear to linger, refresh or contact support after toggling configurations.
- E-signature script vs standard script — Which embed snippet you need depends on the
is_e_signature_requiredflag from the API. This dashboard codebase does not show a control that lets you toggle that flag; if your form uses the e-signature bundle, assume it was configured by product rules or another surface.
Related workflows
- Leads inbox — Review and qualify leads created from submissions (with form payload where applicable).
- Guest communication — Some automated email journeys reference incomplete paperwork; keeping required forms aligned with bookings reduces post-booking churn.
- Website embed — Distribute standalone intake apart from booking (marketing pages, general contact workflows) using copy-paste embed instructions from the form’s Details tab.
Exact sidebar placement and marketing names for navigation items besides the /forms URL are not defined in the explored shell code—use /forms directly or your sidebar’s Forms entry when planning walkthrough screenshots.
(Feature area: CUSTOM_FORMS · Product surface: DASHBOARD · Article slug: custom-forms)