What you'll build
A single internal checklist that a franchise or multi-site ops team fills out per new location, covering licensing, staff certifications, safety inspection, and equipment install. Compliance reviewers sign off on each category independently, and the location's overall status only flips to "Ready to open" once every sign-off is approved. Along the way, an AI Analysis field reads the submitted evidence and generates a private readiness narrative for reviewers, and a generated certificate documents the whole sign-off trail.
When to use this
You're opening several new locations a quarter and want the same compliance bar applied every time, instead of a checklist that varies by whoever's running the launch.
Leadership needs an audit trail proving every site cleared licensing, staffing, safety, and equipment requirements before it opened, not just a verbal confirmation.
Compliance officers are reviewing evidence across dozens of open locations at once and need a synthesized risk read instead of reading four categories of raw uploads per site.
A location's opening date keeps slipping because nobody has visibility into which specific requirement is still outstanding.
You want the "opening day" decision to require sign-off from named reviewers rather than defaulting to open once a manager says it's ready.
Part 1 — Build the launch checklist form
This is where the checklist itself gets built: one form covering all four requirement categories, plus the admin-only fields your compliance team uses to review and sign off. Keep it to a single page since the fields are lean enough not to need a multi-page flow. The fastest way to build it is with Magic Create, just paste a prompt and Formaloo generates the full form in seconds.
1. Open Magic Create: From your Formaloo homepage, click Magic Create.
2. Paste this prompt: "Build a new-location launch readiness checklist for an internal ops team. Include: location name (short text), market/region (dropdown), target opening date (date), whether the business license/permit has been obtained (yes/no dropdown), a file upload for the license, the license expiration date, an expected-receipt date shown only if the license hasn't been obtained yet, a file upload for staff certification proof, the number of staff certified, the number of staff required, a file upload for the safety inspection report, the safety inspection date, a dropdown for the inspection result (Pass, Pass with conditions, Fail), a corrective-actions text field shown only if the result isn't Pass, a yes/no dropdown for whether equipment is installed and tested, a file upload for the equipment checklist, an outstanding-items text field shown only if equipment isn't fully installed, and the submitter's own email address. Also add these admin-only fields, hidden from whoever fills out the form: an overall launch status dropdown (Not started, In review, Blocked, Ready to open), four sign-off dropdowns for licensing, staff certifications, safety inspection, and equipment install (each Pending, Approved, Rejected), an assignee field for the compliance reviewer, and an internal notes field."
3. Create the form: Click Create.
💡 Want internal fields like status, assignee, and notes hidden from whoever fills out the form? What are admin-only fields and how they help is the foundational guide to this exact mechanism.
4. Verify your form: Your form should look like this. Magic Create will have generated most of it. Verify each field and field ID matches exactly.
Field (question form) | Field ID | Type |
What's the name of the new location? | location_name | Short text |
Which market/region is this location in? | market_region | Dropdown |
What's the target opening date? | target_opening_date | Date |
Have you obtained the business license/permit for this location? | licensing_obtained | Dropdown |
Upload the business license/permit | license_file | File upload |
What's the license expiration date? | license_expiry_date | Date |
When do you expect to receive it? | licensing_expected_date | Date |
Upload proof of required staff certifications | staff_cert_files | File upload |
How many staff members are certification-complete? | staff_certified_count | Number |
How many staff members are required to be certified for this location? | staff_required_count | Number |
Upload the completed safety inspection report | safety_inspection_file | File upload |
What was the safety inspection date? | safety_inspection_date | Date |
Did the location pass the safety inspection? | safety_inspection_result | Dropdown |
Describe the corrective actions taken | safety_corrective_actions | Long text |
Is all required equipment installed and tested? | equipment_installed | Dropdown |
Upload the equipment install/commissioning checklist | equipment_checklist_file | File upload |
List outstanding equipment items | equipment_outstanding_items | Long text |
What's your email address? | submitter_email | Short text |
Overall launch status | overall_launch_status | Dropdown (admin-only) |
Licensing sign-off | licensing_signoff | Dropdown (admin-only) |
Staff certifications sign-off | staff_cert_signoff | Dropdown (admin-only) |
Safety inspection sign-off | safety_signoff | Dropdown (admin-only) |
Equipment install sign-off | equipment_signoff | Dropdown (admin-only) |
Compliance reviewer | compliance_reviewer | Assignee (admin-only) |
Internal notes | internal_notes | Long text (admin-only) |
5. Add the AI launch readiness read: Add one more field, an AI Analysis field with ID ai_readiness_summary, set to admin-only. This generates a private readiness narrative from the evidence fields and the target opening date, stored on the record and never shown to whoever filled out the form.
📖 See how to generate AI analysis and let it update your form's own records in Formaloo for the full walkthrough of this field type.
Part 2 — Set up the gating logic
This is where compliance sign-off actually gates the location's opening. Three pairs of fields stay hidden until the situation calls for them, three required guards make sure a reviewer can't skip evidence when something's flagged, and one core rule ties all four sign-offs together into a single "Ready to open" gate.
💡 Want your form to show, hide, skip, or require fields based on what someone just answered? What is logic in Formaloo is the foundational guide to logic in Formaloo, and the difference between logic and calculation.
1. Open Advanced logic: In the settings panel on the right side of the form editor, open Advanced logic, then go to the Logic tab.
2. Open Magic Logic: Click Magic Logic in the top right corner.
3. Paste this prompt: "Hide 'When do you expect to receive it?' by default, and show it only when 'Have you obtained the business license/permit for this location?' equals No, and make it required in that case. Hide 'Describe the corrective actions taken' by default, and show it only when 'Did the location pass the safety inspection?' equals Pass with conditions or Fail, and make it required when the result is Fail. Hide 'List outstanding equipment items' by default, and show it only when 'Is all required equipment installed and tested?' equals No, and make it required in that case. When 'Licensing sign-off', 'Staff certifications sign-off', 'Safety inspection sign-off', and 'Equipment install sign-off' are all Approved, set 'Overall launch status' to Ready to open. When any one of those four sign-offs is Rejected, set 'Overall launch status' to Blocked."
4. Generate the rules: Click Generate Rules and review the AI's preview.
5. Approve each rule: Approve, redo, or cancel each rule individually, then make any manual adjustments.
6. Save your logic: Save the rules once you're satisfied with the preview.
Note: "Overall launch status" starts at Not started and only reaches Ready to open through this rule. There's no separate step for a reviewer to manually override it to Ready to open, by design, that's the whole point of the gate.
📖 Lost track of how rules connect once a form has this many conditions? See what is the logic map.
Part 3 — Create the notification emails
Three emails keep everyone in the loop without anyone having to check the record manually: a confirmation to the launch manager who submitted the checklist, a task notification to whoever gets assigned as compliance reviewer, and a status update whenever the overall launch status changes.
💡 Want to send branded, personalized emails instead of Formaloo's plain default notification? How to create and send custom email templates is the foundational guide to building and sending custom templates.
1. Create the confirmation template: Click your profile icon, go to Apps and integrations, find Custom email templates, and add a new template named "Launch checklist received." Set the subject to "Your launch readiness checklist for @location_name has been received," and add an AI block with this prompt: "Write a brief, factual internal confirmation email to a franchise/ops team member who just submitted a new-location launch readiness checklist. Confirm the checklist for @location_name was received and is now with compliance for review. Mention the target opening date (@target_opening_date) and that they'll get another email once each requirement is signed off. Tone: calm, professional, minimal. Keep it to 3 to 4 sentences." Save the template.
2. Create the reviewer notification template: Add another template named "New launch checklist to review." Subject: "Review needed: launch readiness checklist for @location_name." AI prompt: "Write a brief internal notification to a compliance reviewer telling them a new location's launch readiness checklist is ready for their review. Reference @location_name, @market_region, and @target_opening_date. Ask them to review the licensing, staff certification, safety inspection, and equipment install evidence and record sign-off on each. Tone: direct, factual, task-oriented. 3 to 4 sentences." Save the template.
3. Create the status update template: Add a third template named "Launch status updated." Subject: "Launch status update for @location_name: @overall_launch_status." AI prompt: "Write a short internal status-update email to the person who submitted the checklist, telling them Overall launch status for @location_name has changed to @overall_launch_status. If the new status is Ready to open, write it as a clear go-ahead. If it's Blocked, calmly state that at least one requirement was rejected and they should check the record for details. Tone: clear, neutral. 2 to 3 sentences." Save the template.
4. Set up the send triggers: Back in Advanced logic, open Magic Logic again and paste: "On submit, send the launch checklist received template to submitter_email. When compliance_reviewer is set, send the new launch checklist to review template to the assigned compliance reviewer. When overall_launch_status changes, send the launch status updated template to submitter_email." Generate, approve, and save.
📖 Want incoming submissions to land on the right person's desk automatically? How to automatically assign submissions to the right team member or team, and control what each assignee sees.
Part 4 — Build the launch readiness certificate PDF
Every location that reaches Ready to open should have a document proving it, licensing, staffing, safety, and equipment all reviewed and signed off, with the AI readiness read and the reviewer's name attached.
💡 Want every form submission to generate a polished, branded document automatically? How to create PDF templates to turn responses into documents is the foundational guide to building a PDF template from a submission.
1. Open the PDF template builder: Click your profile icon, go to Apps and integrations, and find Custom PDF template. Add a new template.
2. Switch to HTML view: Switch the editor to the HTML view.
3. Paste this code:
<div style="max-width:760px;margin:0 auto;padding:60px 72px;font-family:'Inter',system-ui,-apple-system,sans-serif;color:#222;background:#ffffff;"> <!-- Header --> <div style="border-bottom:1px solid #eee;padding-bottom:24px;margin-bottom:32px;"> <div style="font-size:11px;letter-spacing:1px;text-transform:uppercase;color:#aaa;margin-bottom:6px;">Launch readiness certificate</div> <div style="font-size:24px;font-weight:600;color:#222;margin-bottom:8px;">New-location launch readiness record</div> <div style="display:flex;justify-content:space-between;font-size:13px;color:#888;"> <span>Reference: LRC-@rowid</span> <span>Generated: @created_at</span> </div> </div> <!-- Location details --> <div style="margin-bottom:28px;"> <div style="font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#aaa;margin-bottom:12px;">Location details</div> <div style="display:grid;grid-template-columns:1fr 1fr;gap:0 24px;"> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Location name</div> <div style="font-size:14px;color:#222;margin-top:2px;">@location_name</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Market / region</div> <div style="font-size:14px;color:#222;margin-top:2px;">@market_region</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Target opening date</div> <div style="font-size:14px;color:#222;margin-top:2px;">@target_opening_date</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Overall launch status</div> <div style="font-size:14px;color:#222;margin-top:2px;">@overall_launch_status</div> </div> </div> </div> <!-- Licensing --> <div style="margin-bottom:28px;"> <div style="font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#aaa;margin-bottom:12px;">Licensing</div> <div style="display:grid;grid-template-columns:1fr 1fr;gap:0 24px;"> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">License obtained</div> <div style="font-size:14px;color:#222;margin-top:2px;">@licensing_obtained</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">License expiration date</div> <div style="font-size:14px;color:#222;margin-top:2px;">@license_expiry_date</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Licensing sign-off</div> <div style="font-size:14px;color:#222;margin-top:2px;">@licensing_signoff</div> </div> </div> </div> <!-- Staff certifications --> <div style="margin-bottom:28px;"> <div style="font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#aaa;margin-bottom:12px;">Staff certifications</div> <div style="display:grid;grid-template-columns:1fr 1fr;gap:0 24px;"> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Staff certified</div> <div style="font-size:14px;color:#222;margin-top:2px;">@staff_certified_count of @staff_required_count required</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Staff certifications sign-off</div> <div style="font-size:14px;color:#222;margin-top:2px;">@staff_cert_signoff</div> </div> </div> </div> <!-- Safety inspection --> <div style="margin-bottom:28px;"> <div style="font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#aaa;margin-bottom:12px;">Safety inspection</div> <div style="display:grid;grid-template-columns:1fr 1fr;gap:0 24px;"> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Inspection date</div> <div style="font-size:14px;color:#222;margin-top:2px;">@safety_inspection_date</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Result</div> <div style="font-size:14px;color:#222;margin-top:2px;">@safety_inspection_result</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;grid-column:1 / -1;"> <div style="font-size:11px;color:#999;">Corrective actions (if applicable)</div> <div style="font-size:14px;color:#222;margin-top:2px;">@safety_corrective_actions</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Safety inspection sign-off</div> <div style="font-size:14px;color:#222;margin-top:2px;">@safety_signoff</div> </div> </div> </div> <!-- Equipment install --> <div style="margin-bottom:28px;"> <div style="font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#aaa;margin-bottom:12px;">Equipment install</div> <div style="display:grid;grid-template-columns:1fr 1fr;gap:0 24px;"> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Equipment installed and tested</div> <div style="font-size:14px;color:#222;margin-top:2px;">@equipment_installed</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;"> <div style="font-size:11px;color:#999;">Equipment install sign-off</div> <div style="font-size:14px;color:#222;margin-top:2px;">@equipment_signoff</div> </div> <div style="padding:10px 0;border-bottom:1px solid #f0f0f0;grid-column:1 / -1;"> <div style="font-size:11px;color:#999;">Outstanding items (if applicable)</div> <div style="font-size:14px;color:#222;margin-top:2px;">@equipment_outstanding_items</div> </div> </div> </div> <!-- AI readiness read --> <div style="margin-bottom:28px;"> <div style="font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#aaa;margin-bottom:12px;">AI launch readiness read</div> <div style="background:#f9f9f9;border-left:3px solid #ddd;padding:16px 20px;font-size:13px;line-height:1.6;color:#444;"> @ai_readiness_summary </div> </div> <!-- Certification statement --> <div style="margin-bottom:28px;"> <div style="font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#aaa;margin-bottom:12px;">Certification statement</div> <div style="background:#f9f9f9;border-left:3px solid #ddd;padding:16px 20px;font-size:13px;line-height:1.6;color:#444;"> This record certifies that the licensing, staff certification, safety inspection, and equipment install requirements above have been reviewed and, where marked Approved, signed off by the assigned compliance reviewer prior to this location's opening. </div> <div style="margin-top:20px;"> <div style="font-size:11px;color:#999;">Signed off by</div> <div style="font-family:Georgia,'Times New Roman',serif;font-style:italic;font-size:18px;color:#333;margin-top:4px;">@compliance_reviewer</div> </div> </div> <!-- Footer --> <div style="border-top:1px solid #eee;padding-top:16px;margin-top:40px;display:flex;justify-content:space-between;font-size:11px;color:#aaa;"> <span>Confidential — internal compliance record, not for external distribution</span> <span>[Organization name]</span> </div> </div>
4. Name and save: Name the template "Launch readiness certificate" and save it.
5. Attach it to the status update email: Open the "Launch status updated" email template from Part 3, enable the Attach PDF toggle, and select "Launch readiness certificate" so it goes out automatically whenever a location's status changes.
📖 See how to send custom PDFs with email notifications for the full walkthrough of the Attach PDF toggle.
Part 5 — Set up project pages
This workflow is fully internal, launch managers, compliance reviewers, and leadership are all workspace members, so start from Dashboard rather than a client portal.
💡 Want reviewers, approvers, and leadership to each see a different view of the same data? How to create and assign user roles in your portal covers the general pattern this project applies internally.
Group | Page | Access level | Data block | Filter | Sort | Form? |
Launch team | Submit a launch checklist | Internal users (Launch Ops team) | Form | None | None | Yes |
Launch team | Launch Ops checklists | Internal users (Launch Ops team) | Table | None | Newest first | No |
Compliance review | All launch checklists | Internal users (Compliance team) | Kanban | None | Grouped by Overall launch status | No |
Compliance review | My assigned reviews | Internal users (Compliance team, assignees restricted to their own rows) | Table | Compliance reviewer = logged-in user | Newest first | No |
Compliance review | Pending sign-off | Internal users (Compliance team) | Table | At least one of the four sign-off fields = Pending | Target opening date, soonest first | No |
Compliance review | Blocked locations | Internal users (Compliance team) | Table | Overall launch status = Blocked | Newest first | No |
Leadership & audit | Ready to open | Internal users (Leadership team) | Table | Overall launch status = Ready to open | Target opening date, soonest first | No |
Leadership & audit | All locations overview | Internal users (Leadership team) | Table | None | Target opening date, soonest first | No |
Leadership & audit | Launch readiness trend report | Internal users (Leadership team) | Chart (AI Analyze report) | None | N/A | No |
Templates & resources | Email templates | Internal users (Compliance team) | Reference page | None | N/A | No |
Templates & resources | PDF templates | Internal users (Compliance team) | Reference page | None | N/A | No |
Templates & resources | How to use this template | Internal users (all teams) | Reference page | None | N/A | No |
What you now have
A single form that captures licensing, staff certification, safety inspection, and equipment install evidence for every new location, with four independent compliance sign-offs gating one overall status field. Nobody can flip a location to "Ready to open" by hand, it only happens once every requirement is actually approved. Reviewers get an AI-generated readiness read instead of reading raw uploads, and leadership gets a Ready-to-open view, an all-locations overview, and a trend report across the whole portfolio, plus a generated certificate documenting the sign-off trail for every site that opens.
What's next
Standardize the recurring side of location operations, not just the one-time launch Once a location is open, the same compliance discipline applies to daily operations. A shift-based opening and closing checklist with automatic escalation keeps day-to-day compliance from slipping after the launch gate closes. → How to build a daily location opening and closing checklist with automatic manager escalation in Formaloo
Extend the same AI-scored checklist pattern to safety walkthroughs The scoring and AI risk read approach used here applies directly to recurring safety inspections after a location opens, complete with photo evidence and automatic exception routing. → How to build a safety inspection and walkthrough checklist with photo evidence and automatic exception routing in Formaloo
Track the equipment this checklist confirms was installed, over its full lifecycle Equipment install is a one-time gate here, but it needs ongoing maintenance tracking afterward. A cross-location maintenance log flags recurring breakdowns before they become downtime. → How to build a cross-location equipment maintenance log that flags recurring breakdowns before they become downtime in Formaloo
One franchise operations lead put it simply: before this, "ready to open" meant whatever the regional manager felt comfortable signing off on that week, not a documented bar every location cleared the same way.
Ready-to-use templates
Don't build this from scratch — we've already put it together for you.
Employee request workflow — Internal request management built for HR and ops teams. The same routing and status-tracking pattern this article uses for compliance sign-off applies directly to any other internal request queue.
Job applicant tracking workflow — Tracks records across hiring stages with reviewer assignments from one view, the same Kanban-by-status structure used here for tracking locations through their launch pipeline.
Patient intake & consent workflow for healthcare — A conditional-logic intake form with an admin Kanban pipeline and PDF generation, a close structural match for any workflow gating a status on multi-step review.
Learn more how-tos
See the general pattern behind any multi-stage sign-off This launch checklist is a specific case of a broader approval shape, useful if you need a workflow with only two review stages instead of four independent sign-offs. → How to build a dual-approval request workflow in Formaloo
Apply the same AI-assisted screening idea to a different intake The AI readiness read in this article works the same way an AI screening summary helps a reviewer triage candidates faster in a hiring pipeline. → How to build an AI-powered job application pipeline with candidate screening in Formaloo
See a conditional-logic-heavy intake form in a different regulated setting If licensing and evidence-based gating feels familiar, a patient intake and consent workflow uses the same conditional logic and admin pipeline pattern in a healthcare context. → How to build a patient intake and consent workflow for healthcare clinics in Formaloo

