What you'll build
An internal intake form your prior authorization coordinators fill out for every specialty drug request, capturing the patient, payer, diagnosis, prior therapies, and supporting documentation. The moment a request is submitted, an AI Analysis field reads it against the common documentation requirements for that drug class and flags exactly what's missing, writing a clear readiness verdict onto the record before anyone opens it. From there the request moves through a coordinator pipeline with automatic patient and provider notifications as it's submitted, approved, denied, or appealed, generates an internal case file PDF, and rolls up into an AI-generated denial trend report for clinical leadership.
When to use this
Your coordinators find out documentation is missing only after the payer sends back a denial, not before submission.
Specialty drug requests for the same payer keep getting denied for the same missing step-therapy or lab documentation, and nobody has time to check every payer's requirements by hand.
Patients and referring providers email in asking for a status update because there's no automatic way to tell them where a request stands.
Appeals get started late because a denial sits in an inbox before anyone notices the status changed.
Clinical leadership wants to know which payers or drug classes generate the most denials, without pulling every case file individually.
Part 1 — Build the prior authorization intake form with Magic Create
This is the form your coordinators fill out for every specialty drug request. It captures the patient and provider details needed for notifications, the payer and diagnosis details the AI needs to work with, and the documentation itself. The fastest way to build it is with Magic Create, Formaloo's AI form builder: describe the form in plain text and it generates the fields for you.
💡 Want a fully-built form in seconds instead of dragging fields one by one? Magic Create builds your form, fields, and field IDs from a plain-language prompt. This is the cornerstone article for every workflow that starts with "describe your form to the AI." See how to create any form with AI using Magic Create in Formaloo.
1. Open Magic Create: From your Formaloo homepage, click Magic Create.
2. Describe the form: Paste a prompt describing a prior authorization intake form for a specialty infusion or injectable therapy clinic, covering the patient's full name and email, the referring or prescribing provider's name and email, the insurance payer name, the patient's plan or policy number, the diagnosis (ICD-10 code and description), the specialty medication being requested, the requested dosing and frequency, the requested treatment start date, whether the patient has tried and failed other therapies for this condition (with a field to list which ones and the outcome if yes), an upload for chart notes or clinical documentation, an upload for recent lab results, whether this is an expedited or urgent request (with a field to explain the clinical reason if yes), and consent to share this documentation with the payer. Also describe the admin-only fields: a prior authorization status dropdown, an assigned coordinator field, internal notes, a documentation readiness dropdown, and an AI Analysis field that reads the request and flags missing documentation.
3. Click Create: Formaloo builds the full form for you.
4. Verify your fields: Your form should look like this. Magic Create will have generated most of it. Verify each field and field ID matches exactly.
💡 Want internal fields, like status, assignee, or an AI read on the case, invisible to the person filling out the form? Admin-only fields are the mechanism. See what are admin-only fields and how they help. This only applies to fields the patient or provider never needs to see or fill, like the status and coordinator fields. Nobody outside your clinic fills out this form at all, since it's an internal coordinator tool, not a patient-facing one.
Field (question form) | Field ID | Type |
What's the patient's full name? | patient_name | Short text |
What's the patient's email address? | patient_email | |
What's the referring or prescribing provider's name? | provider_name | Short text |
What's the provider's email address? | provider_email | |
What insurance payer is this request for? | payer_name | Short text |
What's the patient's plan or policy number? | policy_number | Short text |
What's the diagnosis (ICD-10 code and description)? | diagnosis | Short text |
What specialty medication is being requested? | drug_requested | Short text |
What dosing and frequency is being requested? | dosing_frequency | Short text |
What's the requested treatment start date? | requested_start_date | Date |
Has the patient tried and failed other therapies for this condition? | prior_therapy_tried | Yes/No |
List the prior therapies tried and their outcomes | prior_therapy_details | Long text |
Upload chart notes or clinical documentation | chart_notes_upload | File |
Upload recent lab results | lab_results_upload | File |
Is this an expedited or urgent request? | is_expedited | Yes/No |
If urgent, explain the clinical reason for expedited review | expedited_reason | Long text |
Do you consent to sharing this documentation with the payer? | payer_consent | Yes/No |
Prior authorization status | pa_status | Dropdown (admin-only) |
Assigned coordinator | assigned_coordinator | Assignee field (admin-only) |
Internal notes | internal_notes | Long text (admin-only) |
Documentation readiness | documentation_readiness | Dropdown (admin-only) |
AI documentation analysis | ai_documentation_analysis | AI Analysis field (admin-only) |
💡 Want to know exactly what the Assignee field can do? This is the atomic reference for that field type. See what is the Assignee field in Formaloo and how to use it. The Assignee field only works with workspace members and teams, so your PA coordinators need to be added as internal users, not portal sign-ups.
5. Set the Documentation readiness dropdown's choices: Give it two options: "Ready to submit" and "Documentation gaps found."
6. Set the Prior authorization status dropdown's choices: Give it six options in this order: Draft, Submitted to payer, Approved, Denied, Appeal submitted, Closed.
7. Set up the AI documentation analysis field: Open the AI Analysis field's settings and point it at the fields it should read: @payer_name, @drug_requested, @diagnosis, @prior_therapy_tried, @prior_therapy_details, @chart_notes_upload, @lab_results_upload, and @is_expedited. Write a prompt asking it to identify, from its general knowledge of common prior authorization documentation requirements for that drug class and payer type, what supporting documentation this request would typically need, and flag which of those items appear to be missing based on what's actually been uploaded and described. Ask it to end with a one-line verdict: "Ready to submit" or "Documentation gaps found," followed by a short list of what's missing.
📖 For the full walkthrough of this field, see how to generate AI analysis and let it update your form's own records in Formaloo.
Note: the AI's read is based on general knowledge of how specialty drug prior authorizations are typically documented, not a live connection to any specific payer's system. Coordinators should still treat it as a first check, not a replacement for the payer's own submission portal or fax cover sheet.
8. Turn on "Allow AI to update records": In the same field's settings, enable this option and select only the Documentation readiness field. Once a request is submitted, the AI writes "Ready to submit" or "Documentation gaps found" directly onto that dropdown, so the rest of the workflow can react to it with regular logic instead of parsing free text.
9. Save your form.
Part 2 — Add the form logic
This is what makes the intake form adapt to the situation instead of asking every coordinator the same questions regardless of relevance. The prior therapy details only show up when they're actually needed, and the expedited reason field only appears for urgent requests.
💡 Want your form to show, hide, skip, or require fields based on what someone just answered? This is the foundational guide to logic in Formaloo, what it is, and the difference between logic and calculation. See what is logic in Formaloo.
1. Open Advanced logic: In your form editor, open the Advanced logic panel on the right side of the screen and go to the Logic tab.
2. Open Magic Logic: Click Magic Logic in the top right corner.
3. Describe your rules: Paste a plain-text prompt describing both rules at once: show "List the prior therapies tried and their outcomes" only when "Has the patient tried and failed other therapies for this condition?" is Yes, hidden and optional by default; and show and require "If urgent, explain the clinical reason for expedited review" only when "Is this an expedited or urgent request?" is Yes, hidden by default.
4. Generate and review: Click Generate Rules. Review each rule AI previews, and approve, redo, or cancel as needed.
5. Save your logic: Once approved, make any manual adjustments, then click Save in the top right corner.
Part 3 — Create your email templates
This workflow needs six emails: an internal alert to the coordination team on every new request, an internal documentation gap alert when the AI flags something missing, and four status updates to the patient and provider as a request is submitted, approved, denied, or appealed.
💡 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. Open Custom Email Templates: Click your profile icon, go to Apps and Integrations, and find Custom Email Templates.
2. Add a new template: Click Add New Template, name it "New PA request received," and set the subject to New prior authorization request (PA-@rowid).
3. Generate the body with AI: Clear the body field, add an AI block, and paste this prompt: "Write a brief, factual internal notification telling the PA coordination team a new prior authorization request has come in for @patient_name, requesting @drug_requested from payer @payer_name. Include the reference number and prompt them to assign a coordinator and review the AI documentation readiness verdict. Under 3 sentences, no fluff. White background, single centered column max-width 560px, Inter or system-ui font, a compact data table showing reference number, patient, drug, and payer, muted footer in #999."
4. Repeat for the remaining five templates, using the same steps with these names, subjects, and prompts:
Documentation gap alert (internal). Subject:
Documentation gaps found on PA-@rowid. Prompt: "Write a short, direct internal alert telling the assigned coordinator that the AI documentation check found gaps on the prior authorization request for @patient_name (drug: @drug_requested, payer: @payer_name). Reference the AI's finding in @ai_documentation_analysis and tell them to resolve the gaps before submitting to the payer. Under 4 sentences. White background, single centered column max-width 560px, Inter or system-ui font, an amber 'Documentation gaps found' status badge, muted footer in #999."Prior authorization submitted. Subject:
Your prior authorization request has been submitted (PA-@rowid). Prompt: "Write a clear, reassuring email letting the recipient know the prior authorization request for @patient_name's @drug_requested has been submitted to @payer_name and is now awaiting a decision. Keep it to 3 to 4 sentences, calm and factual, no promises on timelines. White background, single centered column max-width 560px, Inter or system-ui font, a blue 'Submitted to payer' status badge, muted footer in #999."Prior authorization approved. Subject:
Good news, PA-@rowid has been approved. Prompt: "Write a warm, clear email confirming the prior authorization for @patient_name's @drug_requested has been approved by @payer_name. Keep it to 3 to 4 sentences. White background, single centered column max-width 560px, Inter or system-ui font, a green 'Approved' status badge, muted footer in #999."Prior authorization denied. Subject:
An update on PA-@rowid. Prompt: "Write an empathetic, respectful email explaining the prior authorization for @patient_name's @drug_requested was not approved by @payer_name, and that the clinic is preparing an appeal. Keep it general, calm, and non-defensive, 4 sentences. White background, single centered column max-width 560px, Inter or system-ui font, a neutral gray 'Not approved' status badge, muted footer in #999."Appeal submitted. Subject:
An appeal has been submitted for PA-@rowid. Prompt: "Write a short, reassuring email confirming an appeal has been submitted to @payer_name for @patient_name's @drug_requested, and that the clinic will share an update as soon as a decision comes back. 3 sentences. White background, single centered column max-width 560px, Inter or system-ui font, a 'Appeal submitted' status badge, muted footer in #999."
5. Save each template.
Part 4 — Set up automated email notifications
With the templates built, the next step is wiring up when each one fires, so patients, providers, and coordinators get the right update without anyone sending it by hand.
1. Open the On Submit logic tab: In Advanced logic, switch to the rule set that runs the moment a coordinator submits a new request.
2. Add the internal alert rule: On submit, send the "New PA request received" template to your PA coordination team's shared inbox.
3. Open the On Update logic tab: Switch to the rule set that runs when an existing record is updated. This is also what fires when the AI documentation analysis field writes its verdict onto the Documentation readiness field, since that update goes through the same record-update path as a manual edit.
4. Add the documentation gap rule: When Documentation readiness changes to "Documentation gaps found," send the "Documentation gap alert" template to @assigned_coordinator.
📖 This is the same "trigger logic off the update" pattern covered in how to generate AI analysis and let it update your form's own records in Formaloo.
5. Add a rule per status change: Add four more rules, one per status: when Prior authorization status changes to Submitted to payer, send "Prior authorization submitted" to both @patient_email and @provider_email; when it changes to Approved, send "Prior authorization approved" to both; when it changes to Denied, send "Prior authorization denied" to both; when it changes to Appeal submitted, send "Appeal submitted" to both.
6. Save your logic.
Part 5 — Build the case file PDF template
Every request needs an internal record a coordinator or auditor can pull up later, one that includes the AI's documentation read alongside the clinical details it was based on. This is a self-contained HTML template Formaloo turns into a PDF for every row.
💡 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 Custom PDF Template: Click your profile icon, go to Apps and Integrations, click Custom PDF Template, then Add New Template.
2. Switch to HTML view: Toggle the editor to HTML and paste the code below.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Prior Authorization Case File</title> <style> @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #ffffff; color: #1a1a1a; max-width: 760px; margin: 0 auto; padding: 60px 72px; } .header { display: flex; justify-content: space-between; align-items: flex-start; border-bottom: 2px solid #1a1a1a; padding-bottom: 24px; margin-bottom: 40px; } .header h1 { font-size: 24px; font-weight: 700; letter-spacing: -0.02em; } .header .meta { text-align: right; font-size: 13px; color: #666; line-height: 1.6; } .header .meta .ref { font-size: 15px; font-weight: 600; color: #1a1a1a; } .section { margin-bottom: 32px; } .section-title { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; color: #aaaaaa; margin-bottom: 14px; } .field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 32px; } .field { padding: 10px 0; border-bottom: 1px solid #eeeeee; } .field.full { grid-column: 1 / -1; } .field-label { font-size: 12px; color: #888888; margin-bottom: 4px; } .field-value { font-size: 14px; color: #1a1a1a; line-height: 1.5; } .inset { background: #f9f9f9; border-left: 3px solid #cccccc; padding: 16px 20px; border-radius: 4px; font-size: 13px; color: #555555; line-height: 1.6; } .ai-block { background: #f6f5ff; border-left: 3px solid #6c5ce7; padding: 20px 24px; border-radius: 4px; } .ai-block .field-label { color: #6c5ce7; font-weight: 600; text-transform: uppercase; font-size: 11px; letter-spacing: 0.06em; } .ai-block .field-value { margin-top: 6px; font-size: 14px; } .footer { margin-top: 48px; padding-top: 20px; border-top: 1px solid #eeeeee; display: flex; justify-content: space-between; font-size: 11px; color: #999999; } </style> </head> <body> <div class="header"> <h1>Prior Authorization Case File</h1> <div class="meta"> <div class="ref">PA-@rowid</div> <div>Submitted @created_at</div> </div> </div> <div class="section"> <div class="section-title">Patient & provider</div> <div class="field-grid"> <div class="field"> <div class="field-label">Patient name</div> <div class="field-value">@patient_name</div> </div> <div class="field"> <div class="field-label">Patient email</div> <div class="field-value">@patient_email</div> </div> <div class="field"> <div class="field-label">Referring / prescribing provider</div> <div class="field-value">@provider_name</div> </div> <div class="field"> <div class="field-label">Provider email</div> <div class="field-value">@provider_email</div> </div> </div> </div> <div class="section"> <div class="section-title">Payer & request details</div> <div class="field-grid"> <div class="field"> <div class="field-label">Insurance payer</div> <div class="field-value">@payer_name</div> </div> <div class="field"> <div class="field-label">Plan / policy number</div> <div class="field-value">@policy_number</div> </div> <div class="field"> <div class="field-label">Diagnosis (ICD-10)</div> <div class="field-value">@diagnosis</div> </div> <div class="field"> <div class="field-label">Medication requested</div> <div class="field-value">@drug_requested</div> </div> <div class="field"> <div class="field-label">Dosing & frequency</div> <div class="field-value">@dosing_frequency</div> </div> <div class="field"> <div class="field-label">Requested start date</div> <div class="field-value">@requested_start_date</div> </div> <div class="field"> <div class="field-label">Expedited request</div> <div class="field-value">@is_expedited</div> </div> <div class="field"> <div class="field-label">Expedited reason</div> <div class="field-value">@expedited_reason</div> </div> </div> </div> <div class="section"> <div class="section-title">Prior therapy & documentation</div> <div class="field-grid"> <div class="field full"> <div class="field-label">Prior therapies tried and outcomes</div> <div class="field-value">@prior_therapy_details</div> </div> <div class="field full"> <div class="field-label">Attachments</div> <div class="field-value">Chart notes and lab results are attached to this submission in the dashboard.</div> </div> </div> <br> <div class="inset"> The patient has consented to sharing this documentation with the payer as part of this request: @payer_consent. </div> </div> <div class="section"> <div class="section-title">Internal review record</div> <div class="ai-block"> <div class="field-label">AI documentation analysis</div> <div class="field-value">@ai_documentation_analysis</div> </div> <br> <div class="field-grid"> <div class="field"> <div class="field-label">Documentation readiness</div> <div class="field-value">@documentation_readiness</div> </div> <div class="field"> <div class="field-label">Prior authorization status</div> <div class="field-value">@pa_status</div> </div> <div class="field"> <div class="field-label">Assigned coordinator</div> <div class="field-value">@assigned_coordinator</div> </div> <div class="field full"> <div class="field-label">Internal notes</div> <div class="field-value">@internal_notes</div> </div> </div> </div> <div class="footer"> <div>Confidential: internal case file, not for external distribution</div> <div>Your clinic name</div> </div> </body> </html>3. Name and save: Give it the name "Prior authorization case file" and click Save.
The reference number and submission date come straight from Formaloo's own variables, @rowid and @created_at, piped directly into the template text, no extra field required.
📖 For the full list of variables you can pipe into a template like this, see how to dynamically pull form data into custom emails, PDFs, and AI prompts.
4. Attach it to a notification: Since this is an internal record rather than something sent to the patient or provider, attach it to the "New PA request received" email so the coordination team receives the full case file the moment a request comes in.
Part 6 — Set up the coordinator workspace
Your coordinators need their own pipeline, separate from the raw form, with each one able to find their assigned requests and any documentation gaps quickly.
💡 Want a visual, drag-and-drop way to move records through stages, like a pipeline? This is the foundational guide to the Kanban Data Block. See how to create a Kanban board.
Here's how the coordinator group of pages is laid out:
Group | Page | Access level | Data block | Filter | Sort | Form? |
PA coordinators | Submit a request | Internal users, PA coordinators | Form | None | N/A | Yes |
PA coordinators | All requests | Internal users, PA coordinators | Kanban | None | Grouped by Prior authorization status | No |
PA coordinators | My assigned requests | Internal users, PA coordinators | Table | Assigned coordinator = logged-in user | Newest first | No |
PA coordinators | Documentation gaps queue | Internal users, PA coordinators | Table | Documentation readiness = Documentation gaps found | Newest first | No |
PA coordinators | Pending payer response | Internal users, PA coordinators | Table | Prior authorization status = Submitted to payer | Newest first | No |
PA coordinators | Denied, appeal needed | Internal users, PA coordinators | Table | Prior authorization status = Denied | Newest first | No |
1. Start your project: Start from Form so your prior authorization intake form is already attached.
2. Add the "All requests" page: Add a Kanban page, point it at your intake form's data, and group it by Prior authorization status. Restrict its Access to Internal users → Specific teams, and select your PA coordinators team.
💡 Want a whole page visible only to a specific role, not just specific data within a page? This covers page-level access restriction. See how to restrict users' access to pages in your portal. Since coordinators are internal workspace members rather than external sign-ups, this page-access restriction is what scopes the pipeline to them, not a portal role.
3. Add "My assigned requests": Add a table page filtered to Assigned coordinator = logged-in user, sorted newest first, with the same team-based access restriction.
4. Add "Documentation gaps queue," "Pending payer response," and "Denied, appeal needed": Duplicate "My assigned requests" three times and swap each filter for the one in the table above. All three inherit the same access restriction.
Part 7 — Add the AI-powered denial trend report
Clinical leadership doesn't need to read every case individually. This is where the AI documentation analysis you set up in Part 1, together with every request's outcome, rolls up into something they can actually use.
Here's how the leadership group of pages is laid out:
Group | Page | Access level | Data block | Filter | Sort | Form? |
Clinical leadership | All requests overview | Internal, leadership, full visibility | Table | None | Newest first | No |
Clinical leadership | AI denial trend report | Internal, leadership | Reference page (AI Analyze block) | None | N/A | No |
1. Add the "All requests overview" page: Add one more table page with no filter, showing every request regardless of status, and restrict its Access to Internal users → Specific teams, selecting your leadership group.
2. Add the "AI denial trend report" page: Add a new reference page and insert an AI Analyze block, pointing it at your intake form's data.
3. Prompt the report: Ask it to break down request volume and denial rate by payer and by drug class, surface the most common reasons requests were flagged with documentation gaps, and show the average time from submission to a final payer decision. Formaloo generates charts and a written summary from your live data.
What you now have
A prior authorization workflow that starts checking its own paperwork the moment a coordinator hits submit. Every request arrives with an AI read on what that payer typically expects and what's actually missing, so nobody finds out about a documentation gap from a denial letter. Coordinators work from a pipeline that emails patients and providers automatically as a request moves through submission, approval, denial, or appeal, every request leaves behind a proper internal case file, and clinical leadership gets a live, AI-generated view of which payers and drug classes are driving denials, all without anyone building a tracking spreadsheet by hand.
What's next
Follow up automatically with providers who haven't sent missing documentation Once a request sits in "Documentation gaps found" for a while, an AI agent can send a gentle follow-up nudging the provider's office to complete the next step, instead of it falling through the cracks. → How to send an email campaign and collect data with AI agents in Formaloo
Mirror every request into your existing compliance tracking If your clinic already keeps a payer log in spreadsheets, sync every request into Google Sheets automatically so this workflow doesn't become a second source of truth. → How to connect and sync your forms to Google Sheets (one-way)
Put a response-time expectation on payer turnaround Track how long a request has been sitting at "Submitted to payer" against a target turnaround time, so a slow payer response gets flagged instead of quietly aging in the queue. → How to use the Due date field in Formaloo
Specialty pharmacy coordinators who've moved to a system like this typically describe the same shift: fewer requests bounce back from the payer for something that was missing from day one, because the gap gets caught and fixed before submission instead of after a denial letter arrives.
Ready-to-use templates
Don't build this from scratch, we've already put it together for you.
Patient intake & consent workflow for healthcare — A conditional clinical intake form with AI-powered emails and a PDF document, the same combination this prior authorization tracker relies on.
AI lead qualification & scoring form — Uses AI to classify and score incoming submissions the moment they arrive. It's the same pattern that powers this tracker's documentation readiness check.
Employee request workflow — Internal request routing with status tracking and reviewer assignment, the same shape as moving a request through Draft, Submitted, and Approved.
Learn more how-tos
See another AI classification workflow in action This tracker leans on an AI field to classify documentation the moment a request arrives. This healthcare intake workflow uses the same AI-assisted approach for a different clinical use case. → How to build a patient intake and consent workflow for healthcare clinics in Formaloo
See AI screening applied before a human ever looks Another workflow where AI reads a submission before your team does, useful context for framing what an AI Analysis prompt should ask for. → How to build an AI-powered job application pipeline with candidate screening in Formaloo
Compare it to a multi-stage approval pattern Requests here move through a single coordinator pipeline plus an appeal status. If your review process needs sign-off from more than one person before a request can close, this dual-approval pattern is the next building block. → How to build a dual-approval request workflow in Formaloo
