MuxForms job application forms power careers pages with role select, LinkedIn and resume links, and cover letter fields—hosted inbox and email for recruiting until you plug in Greenhouse or Ashby via export or webhook.

Use case

Hiring intake without an ATS on day one

Your careers page should not send resumes to a black-hole Gmail filter or a WordPress plugin that breaks after the next PHP upgrade.

Careers form template

FieldPurpose
roleSelect open positions
resume_linkURL to PDF or portfolio
linkedinProfile screening
cover_letterRequired narrative

Early hiring teams need a careers form before they can justify ATS seats: collect identity, role interest, links, and a short narrative—then search the inbox when a referrer says “I sent my CV last week.”

MuxForms validates required fields server-side so blank applications never reach recruiting@. Honeypot and rate limits cut bot spam on public /careers URLs.

Use a select for open role or department; add `url` fields for LinkedIn and resume (Google Drive or PDF link) until file-upload fields match your plan. Hidden `role_id` can be set per job detail page in JavaScript.

Embed one form on the main careers page or duplicate forms per role in the dashboard—unlimited forms on one subscription.

When volume grows, export CSV from the inbox or send webhooks to Greenhouse, Lever, or Ashby. MuxForms stays the intake layer; the ATS becomes system of record later.

Internal hiring portals can POST JSON with the ingest secret from a logged-in tools site—same schema as the public embed.

Ready-made template

Create a form named Hiring — Job application with these fields, then paste the embed on your page. Notify recruiting@; set select options to your open roles; require resume_link or LinkedIn for screening.

FieldTypeRequired
Full namenametextYes
EmailemailemailYes
RoleroleselectYes
LinkedIn profilelinkedinurlNo
Resume or portfolio linkresume_linkurlYes
Why do you want to join us?cover_lettertextareaYes
Role idrole_idhiddentextNo
Leave blank_hphiddentextNo

Embed demo

Illustrative preview—wire your form id after signup.

Preview only — connect embed.js to submit

Schema JSON

{
  "name": "Hiring — Job application",
  "fields": [
    {
      "name": "name",
      "label": "Full name",
      "type": "text",
      "required": true
    },
    {
      "name": "email",
      "label": "Email",
      "type": "email",
      "required": true
    },
    {
      "name": "role",
      "label": "Role",
      "type": "select",
      "required": true,
      "options": [
        "Software engineer",
        "Product designer",
        "Customer success",
        "Other"
      ]
    },
    {
      "name": "linkedin",
      "label": "LinkedIn profile",
      "type": "url",
      "required": false,
      "placeholder": "https://linkedin.com/in/…"
    },
    {
      "name": "resume_link",
      "label": "Resume or portfolio link",
      "type": "url",
      "required": true,
      "placeholder": "Link to PDF or portfolio"
    },
    {
      "name": "cover_letter",
      "label": "Why do you want to join us?",
      "type": "textarea",
      "required": true
    }
  ]
}

Embed snippet

<div data-form-id="FORM_UUID"></div>
<script src="https://www.muxforms.com/embed.js" defer></script>

Common questions

Can candidates upload PDF files directly?
Use resume_link URL fields today; file fields depend on your plan capabilities.
One form or one per job posting?
Either—duplicate forms per role or use hidden role_id per job page.
Is this an ATS?
No—intake and search; forward to Greenhouse/Lever when hiring scales.
Stop application spam?
Honeypot, rate limits, optional Turnstile on /careers.

Create the form for this job.

Then clone the pattern for the next site or app.

Upgrade to Pro