What you'll build
By the end of this guide, you'll have a portal where organizations apply for accreditation and a committee reviews them from intake to decision. Applicants submit their organization details and compliance documents, a case manager verifies those documents, three reviewers independently score the application, and the association records a final decision that triggers a branded decision letter by email. Every application shows up as one pipeline, so nothing sits waiting on a reviewer who forgot to check their inbox.
When to use this
You accredit organizations, not individuals, so your applications carry compliance documents (bylaws, audits, policies) that need verification before anyone scores them
Your committee has multiple reviewers scoring the same application independently, and you need every score and comment on record before a final decision
You're running this process through email threads and shared drives, and documents or reviewer feedback keep getting lost between people
You need a decision letter that goes out automatically the moment a decision is recorded, instead of someone writing it by hand
You track renewals separately from first-time applicants and want a clean way to see who's coming up for renewal
Part 1 — Build the accreditation application form
This is the form organizations use to apply. It collects the applicant's details, accreditation type, and compliance documents on the public side, and carries a long list of admin-only fields on the back end: document verification status, the case manager, three sets of reviewer fields, and the final decision. The fastest way to build all of this at once is Magic Create.
1. Open Magic Create: From your Formaloo homepage, click Magic Create. You can upload a picture or PDF of an existing application form, or describe the form in text.
2. Paste the form description: Use a prompt like this one, which covers every public and admin-only field this workflow needs:
Build an accreditation application form for organizations applying for accreditation. Ask for: organization legal name, organization type (dropdown: School/educational institution, Certification or training provider, Nonprofit association, Corporate/professional body, Other), mailing address, primary contact name, primary contact email address, primary contact phone number (short text, not a phone field), whether they're applying for initial accreditation or renewal (dropdown: Initial accreditation, Renewal), their current accreditation ID if this is a renewal (short text), how many years the organization has been operating (number), a required file upload for governing documents or bylaws, a required file upload for their most recent financial audit or statement, a required file upload for their policies and procedures manual, an optional file upload for proof of insurance or bonding, a yes/no question asking whether they have any pending complaints, litigation, or regulatory actions, a long text question asking them to describe it if so, and a required yes/no attestation confirming all information and documents provided are accurate and complete. Add these admin-only fields: an auto-generated application reference number (short text), a date field for the submission date, a dropdown for document verification status with options Not started, Verified, Missing documents, and Rejected, an assignee field for the case manager, three sets of reviewer fields for Reviewer 1, 2, and 3, each with an assignee field, a number score from 1 to 5, a dropdown recommendation with options Approve, Deny, and Needs more info, and a long text comments field, a dropdown for the final decision with options Accredited, Provisional accreditation, Denied, and Needs more information, a date field for the decision date, a dropdown for accreditation status with options Submitted, Document review, Committee review, and Decision issued, and a long text field for internal notes.
3. Click Create: Formaloo builds the form for you. Your form should look like the tables below. Magic Create will have generated most of this. Verify each field and, most importantly, set the field ID exactly as shown, since the logic, email, and PDF templates in later steps reference these IDs directly.
Public-facing fields (applicant organization):
Field (question) | Field ID | Type |
What's your organization's legal name? | org_name | Short text |
What type of organization are you? | org_type | Dropdown: School/educational institution / Certification or training provider / Nonprofit association / Corporate/professional body / Other |
What's your organization's mailing address? | org_address | Short text |
Who is the primary contact for this application? | primary_contact_name | Short text |
What's the primary contact's email address? | primary_contact_email | Short text |
What's the primary contact's phone number? | primary_contact_phone | Short text |
Are you applying for initial accreditation or renewal? | application_type | Dropdown: Initial accreditation / Renewal |
What's your current accreditation ID? | current_accreditation_id | Short text |
How many years has your organization been operating? | years_operating | Number |
Upload your governing documents or bylaws | governing_documents_upload | File upload |
Upload your most recent financial audit or statement | financial_audit_upload | File upload |
Upload your policies and procedures manual | policies_manual_upload | File upload |
Upload proof of insurance or bonding, if applicable | insurance_proof_upload | File upload |
Does your organization have any pending complaints, litigation, or regulatory actions? | pending_legal_action | Yes/No |
Please describe the pending complaint, litigation, or regulatory action | pending_legal_action_details | Long text |
I attest that all information and documents provided are accurate and complete | attestation_accurate | Yes/No |
Admin-only fields:
Field (question) | Field ID | Type |
Application reference number | application_id | Short text |
Submission date | submission_date | Date |
Document verification status | document_verification_status | Dropdown: Not started / Verified / Missing documents / Rejected |
Case manager | case_manager | Assignee |
Reviewer 1 | reviewer_1 | Assignee |
Reviewer 1 score | reviewer_1_score | Number |
Reviewer 1 recommendation | reviewer_1_recommendation | Dropdown: Approve / Deny / Needs more info |
Reviewer 1 comments | reviewer_1_comments | Long text |
Reviewer 2 | reviewer_2 | Assignee |
Reviewer 2 score | reviewer_2_score | Number |
Reviewer 2 recommendation | reviewer_2_recommendation | Dropdown: Approve / Deny / Needs more info |
Reviewer 2 comments | reviewer_2_comments | Long text |
Reviewer 3 | reviewer_3 | Assignee |
Reviewer 3 score | reviewer_3_score | Number |
Reviewer 3 recommendation | reviewer_3_recommendation | Dropdown: Approve / Deny / Needs more info |
Reviewer 3 comments | reviewer_3_comments | Long text |
Final decision | final_decision | Dropdown: Accredited / Provisional accreditation / Denied / Needs more information |
Decision date | decision_date | Date |
Accreditation status | accreditation_status | Dropdown: Submitted / Document review / Committee review / Decision issued |
Internal notes | internal_notes | Long text |
📖 Admin-only fields stay invisible to applicants by default. See what are admin-only fields and how they help.
4. Require the compliance uploads: Open each of "Upload your governing documents or bylaws," "Upload your most recent financial audit or statement," and "Upload your policies and procedures manual" and turn on Required. Leave the insurance/bonding upload optional, since not every organization type needs it.
Note: Set "Document verification status" to default to Not started and "Accreditation status" to default to Submitted, so every new application starts at the right point in the pipeline.
5. Publish the form: Click Publish in the island bar at the top of the editor. This is separate from Save, which you'll use for logic, email templates, and PDF templates in the next parts.
Part 2 — Set up the application logic
This is where the workflow actually moves. Advanced logic handles the applicant-facing conditional fields, blocks submission until the attestation is confirmed, and drives the whole review pipeline: assigning a case manager on submit, assigning the review committee once documents are verified, and stamping dates as the record moves toward a decision. Use Magic Logic to generate all of it from one plain-language description.
1. Open Advanced logic: Open your form and click Advanced logic in the form settings panel on the right side. Navigate to the Logic tab.
2. Open Magic Logic: In the top right corner of the Logic panel, click Magic Logic.
3. Describe the rules: Paste a prompt like this one, covering the visibility guards, the attestation gate, and the routing logic:
Block submission unless "I attest that all information and documents provided are accurate and complete" is Yes, and show a warning message when it's No. Hide "What's your current accreditation ID?" by default; show it only when "Are you applying for initial accreditation or renewal?" equals Renewal, and require an answer in that case. Hide "Please describe the pending complaint, litigation, or regulatory action" by default; show it only when "Does your organization have any pending complaints, litigation, or regulatory actions?" equals Yes, and require an answer in that case. When the form is submitted, set "Submission date" to today, set "Accreditation status" to Submitted, and assign "Case manager" to the accreditation team. When "Document verification status" is changed to Verified, assign "Reviewer 1," "Reviewer 2," and "Reviewer 3" to the accreditation committee, and set "Accreditation status" to Committee review. When "Document verification status" is changed to Missing documents or Rejected, keep "Accreditation status" at Document review. When "Final decision" is answered, set "Decision date" to today and set "Accreditation status" to Decision issued.
4. Click Generate Rules: Formaloo's AI previews each rule. Approve the ones that match, redo any that don't, and cancel anything you don't need.
5. Add the email rules: For each approved rule that should notify someone (submission confirmation, missing documents, moving to committee, decision issued), add a Send email action and select the matching template. You'll build these templates in Part 3, so it's fine to come back and wire them up after.
📖 See what is logic in Formaloo for a refresher on triggers and actions.
6. Save your logic: Click Save in the top right corner.
Part 3 — Create the email templates
This workflow runs on five emails, one for each stage the application passes through. Each one is a custom email template built with an AI block and personalized with answer piping, so every email reads as if it was written for that specific organization.
1. Create your first template: Click your profile icon, go to Apps & integrations, then Email templates, and click + Add new template. Clear the body field, add an AI block, and paste a prompt describing the email you want. For the first one, use:
Write a warm, professional confirmation email to the primary contact of an organization that just submitted an accreditation application. Confirm receipt, restate the organization name (@org_name) and application type (@application_type), and let them know their submission is now moving into document verification. Reassure them their case manager, @case_manager, will keep them updated. Keep it factual and reassuring, not salesy. 4-6 sentences total. Include a status badge showing "Submitted" in a muted green pill near the top, and a muted footer noting the application reference @application_id.
2. Name the template, add the subject, and save: Give it a clear internal name, set the subject to "We've received your accreditation application, @org_name," and click Save.
3. Repeat for the remaining four templates, using the subjects, triggers, and prompts below. Each one follows the same pattern: a plain-language AI prompt, a subject line with piped fields, and a trigger you'll wire up back in the logic rules from Part 2.
# | Subject | Trigger | Sent to | |
2 | New application assigned | New accreditation application to review: @org_name | Applicant submits the application | Case manager |
3 | Documents need your attention | Action needed on your accreditation application, @org_name | Document verification status changes to Missing documents or Rejected | Primary contact |
4 | Your application has moved to committee review | Your application for @org_name is now under committee review | Document verification status changes to Verified | Primary contact |
5 | Accreditation decision issued | A decision has been made on your accreditation application, @org_name | Final decision is answered | Primary contact |
The decision email (#5) is the one that closes the loop. Prompt it to reference the organization name and the decision (@final_decision) without stating the outcome bluntly in the subject line, congratulate them if the decision is Accredited or Provisional accreditation, and point them to their case manager if it's Denied or Needs more information. Mention that the full decision letter is attached as a PDF, and include a status badge colored to match the outcome (green for Accredited, amber for Provisional, gray for Needs more information, red for Denied).
4. Wire the emails back into logic: Go back to your Advanced logic rules from Part 2 and add a Send email action to each trigger, pointing at the matching template.
📖 See how to create and send custom email templates and how to dynamically pull form data into custom emails and PDFs for the full list of supported variables.
Part 4 — Create the accreditation decision PDF template
The last piece is a PDF that turns each decision into a clean, formal letter for the applicant's records, complete with the committee's scores, comments, and the final decision.
1. Open the PDF template editor: Click your profile icon, go to Apps & integrations, then PDF templates, and click + Add new template.
2. Switch to the HTML view and paste the template below. It pulls in every field from your form using answer piping, including all three reviewers' scores and comments and the final decision badge.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Accreditation Decision Letter</title> <style> @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital@1&display=swap'); * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; background: #ffffff; color: #222222; } .page { max-width: 760px; margin: 0 auto; padding: 60px 72px; } .header { display: flex; justify-content: space-between; align-items: flex-start; padding-bottom: 28px; border-bottom: 2px solid #1a1a1a; margin-bottom: 36px; } .header h1 { font-size: 22px; font-weight: 700; letter-spacing: -0.3px; color: #111111; } .header .meta { text-align: right; font-size: 12px; color: #999999; line-height: 1.6; } .header .meta strong { color: #444444; font-weight: 600; } .section { margin-bottom: 32px; } .section-title { font-size: 10px; text-transform: uppercase; letter-spacing: 1.4px; color: #aaaaaa; font-weight: 600; margin-bottom: 14px; } .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: 11px; color: #999999; margin-bottom: 4px; } .field-value { font-size: 14px; color: #1a1a1a; font-weight: 500; line-height: 1.5; } .field-value.long { font-weight: 400; white-space: pre-wrap; } .badge { display: inline-block; padding: 4px 12px; border-radius: 20px; font-size: 11px; font-weight: 600; letter-spacing: 0.3px; } .badge.accredited { background: #e6f4ea; color: #1e7b34; } .badge.provisional { background: #fdf3e0; color: #92660e; } .badge.needs-info { background: #f2f2f2; color: #666666; } .badge.denied { background: #f5f0f0; color: #8a5252; } .badge.verified { background: #e6f4ea; color: #1e7b34; } .badge.missing { background: #fdf3e0; color: #92660e; } .badge.rejected { background: #f5f0f0; color: #8a5252; } .inset { background: #f9f9f9; border-left: 3px solid #cccccc; padding: 16px 20px; font-size: 13px; line-height: 1.6; color: #555555; border-radius: 0 4px 4px 0; } .footer { margin-top: 48px; padding-top: 20px; border-top: 1px solid #eeeeee; display: flex; justify-content: space-between; font-size: 11px; color: #aaaaaa; } </style> </head> <body> <div class="page"> <div class="header"> <h1>Accreditation<br>decision letter</h1> <div class="meta"> Reference<br> <strong>@application_id</strong><br><br> Submitted<br> <strong>@submission_date</strong> </div> </div> <div class="section"> <div class="section-title">Organization details</div> <div class="grid"> <div class="field"> <div class="field-label">Organization name</div> <div class="field-value">@org_name</div> </div> <div class="field"> <div class="field-label">Organization type</div> <div class="field-value">@org_type</div> </div> <div class="field"> <div class="field-label">Application type</div> <div class="field-value">@application_type</div> </div> <div class="field"> <div class="field-label">Prior accreditation ID</div> <div class="field-value">@current_accreditation_id</div> </div> <div class="field"> <div class="field-label">Years operating</div> <div class="field-value">@years_operating</div> </div> <div class="field"> <div class="field-label">Mailing address</div> <div class="field-value">@org_address</div> </div> <div class="field"> <div class="field-label">Primary contact</div> <div class="field-value">@primary_contact_name</div> </div> <div class="field"> <div class="field-label">Contact email</div> <div class="field-value">@primary_contact_email</div> </div> </div> </div> <div class="section"> <div class="section-title">Document verification</div> <div class="grid"> <div class="field"> <div class="field-label">Status</div> <div class="field-value"><span class="badge verified">@document_verification_status</span></div> </div> <div class="field"> <div class="field-label">Case manager</div> <div class="field-value">@case_manager</div> </div> </div> </div> <div class="section"> <div class="section-title">Committee review</div> <div class="grid"> <div class="field"> <div class="field-label">Reviewer 1</div> <div class="field-value">@reviewer_1 — @reviewer_1_recommendation (@reviewer_1_score/5)</div> </div> <div class="field"> <div class="field-label">Reviewer 2</div> <div class="field-value">@reviewer_2 — @reviewer_2_recommendation (@reviewer_2_score/5)</div> </div> <div class="field"> <div class="field-label">Reviewer 3</div> <div class="field-value">@reviewer_3 — @reviewer_3_recommendation (@reviewer_3_score/5)</div> </div> <div class="field full"> <div class="field-label">Reviewer 1 comments</div> <div class="field-value long">@reviewer_1_comments</div> </div> <div class="field full"> <div class="field-label">Reviewer 2 comments</div> <div class="field-value long">@reviewer_2_comments</div> </div> <div class="field full"> <div class="field-label">Reviewer 3 comments</div> <div class="field-value long">@reviewer_3_comments</div> </div> </div> </div> <div class="section"> <div class="section-title">Compliance disclosure</div> <div class="inset"> Pending complaints, litigation, or regulatory actions disclosed: <strong>@pending_legal_action</strong>. @pending_legal_action_details </div> </div> <div class="section"> <div class="section-title">Final decision</div> <div class="grid"> <div class="field"> <div class="field-label">Decision</div> <div class="field-value"><span class="badge accredited">@final_decision</span></div> </div> <div class="field"> <div class="field-label">Decision date</div> <div class="field-value">@decision_date</div> </div> </div> </div> <div class="footer"> <span>Confidential — for internal accreditation committee records only</span> <span>[Accrediting body name]</span> </div> </div> </body> </html>3. Name the template "Accreditation decision letter" and click Save.
4. Wire it up in logic: Back in Part 2's rules, add a Generate PDF action to the rule that fires when "Final decision" is answered. The finished PDF lands on the response row and can be attached to the decision email from Part 3.
Part 5 — Turn the project into a role-based portal
The whole point of this workflow is that four roles see four different slices of the same data: applicants see only their own application, case managers see everything for document verification and routing, reviewers see only the applications they're assigned to and can edit only their own score fields, and association leadership sees everything plus the reporting layer.
1. Activate the portal: Open your project and click the gear icon in the top-right corner. Click Activate client portal, then Manage users to open the portal management view.
2. Run the setup wizard: Click Setup wizard. In Step 1, create a new user directory. In Step 2, configure login and sign-up settings for your portal. In Step 3, connect the user directory to your application form so logged-in users see only their own records.
3. Add your four user roles: Open your user directory and click Edit profile fields. Scroll to the User roles field and add Applicant, Case manager, Reviewer, and Association admin as options.
4. Restrict applicants to their own application: On the "My application" page's data block, switch to Edit mode, click Options, and scroll to Manage access. Select the profile field, then toggle on Allow users to view only their data. Keep editing off, so applicants track status without changing submitted answers after the fact.
5. Restrict reviewers to their assigned applications: On the "My review queue" page's data block, switch to Edit mode, click Options, and scroll to Manage access. Select the assignee field and toggle on Allow assignees to view only their data. If your committee members always sit in the same reviewer slot, filtering on that one field is enough. If anyone can land in Reviewer 1, 2, or 3, add all three reviewer fields to the assignee restriction so a reviewer sees a record whichever slot they're assigned to.
6. Lock reviewers to their own score fields: In the table view's field settings for the review queue, show only that reviewer's score, recommendation, and comments columns as editable, and hide the applicant's original submission fields plus the other two reviewers' columns from that view. This mirrors the sign-only pattern used for restricted approver roles: a reviewer's entire permission set on the record is their own score, nothing more.
Note: This is what separates a real committee review from a single grader reviewing one submission: three reviewers score the same organization independently, without seeing or influencing each other's scores.
7. Build the case manager and leadership views: Give case managers full-visibility pages (a Kanban by accreditation status, a document verification queue, and their own assigned cases) and give association leadership full-visibility pages plus the reporting layer (a ready-for-decision queue, decisions issued, renewals, and charts by outcome and average committee score).
8. Restrict each page to the right role: Switch to Edit mode, find each page in the portal navigation, click the three-dot menu next to the page name, and select Access. Set access to Specific user roles and choose the matching role for each page.
9. Publish and share the portal: Once your pages, filters, and access levels are set, publish the project and share the portal URL with applicants, case managers, reviewers, and leadership.
💡 Optional: set a custom domain on your portal so it carries your association's own URL instead of a Formaloo one. This is available on the Business plan or through the Brand removal add-on.
What you now have
You now have an accreditation pipeline that moves an organization from application to decision without anyone chasing a document or a reviewer by email. Applicants know exactly where their file stands, case managers have one queue for verification instead of a shared inbox, and your committee's three independent scores and comments are on record before any decision goes out. The decision letter generates and sends itself the moment leadership records a final decision, so every accredited, denied, or provisional organization gets a consistent, branded document.
What's next
Report on decisions and committee scoring trends. Once applications are flowing through the pipeline, use the Reports group to see approval rates by organization type and whether certain applicant categories consistently score higher or lower with the committee. → How to sort and filter your submissions data
Chase upcoming renewals in bulk. When several accredited organizations approach their renewal window at once, send a single email campaign to everyone in the Renewals view instead of following up one by one. → How to send an email campaign and collect data with AI agents
Add more reviewers as your committee grows. If your committee expands beyond three reviewers, extend the same assignee and field-restriction pattern from Part 5 so each new reviewer only sees and edits what's assigned to them. → How to create and assign user roles in your portal
Ready-to-use templates
Don't build this from scratch, we've already put similar workflows together for you.
Scholarship & grant application with scoring and approval — A multi-reviewer scoring workflow with automated approval and rejection emails. Its scoring and approval structure is the closest match to the committee review stage built in Part 2.
Patient intake & consent workflow for healthcare — A two-page intake and consent form with conditional logic, AI-powered emails, and an admin Kanban pipeline. Its document-heavy intake and conditional disclosure fields map closely to the compliance uploads and disclosure logic in Part 1.
Job applicant tracking workflow — Tracks applicants across stages with status updates and reviewer assignments from one view. Its stage-based pipeline is a close match for the document review, committee review, and decision stages here.
There's no ready-made template yet for an organizational accreditation review with document verification and a three-reviewer committee.
Learn more how-tos
See how this differs from a single-grader review portal. This workflow reviews organizational applicants with compliance documentation and three independent reviewers, distinct from one grader reviewing one learner's submission. → How to build a student submission and teacher review portal
Borrow the multi-reviewer scoring pattern for other education use cases. This workflow shares its committee-scoring structure with the scholarship and grant review process. → Scholarship & grant application with scoring and approval workflow
See another portal built around a review committee. Candidate screening shares the same pattern of routing a submission to reviewers and issuing a status-driven decision used here for accreditation. → How to build an AI-powered job application pipeline with candidate screening
