Skip to main content

How to build a gated business health scorecard with personalized advice in Formaloo

Learn how to build a business health scorecard in Formaloo that scores 7 weighted categories, locks personalized advice behind a login, and lets leads download or email their results as a PDF.

What you'll build

By the end of this guide, you'll have a scoring form that rates a business across 7 weighted categories and calculates a total health score out of 100. The score and a full personalized action plan stay locked until the person logs in, so filling out the scorecard becomes a lead capture step, not just a quiz. Once they're in, they can view, download, or email themselves a printable PDF of their results, and your team gets a scored, assigned lead in a portal.


When to use this

  • You run an agency or consultancy and want a free assessment tool that gives prospects real value while capturing their contact details first

  • Your marketing team wants a lead magnet that feels more substantial than a generic quiz, something with a real score and real advice attached

  • You want to segment inbound leads automatically by how healthy their business is, so your team can prioritize outreach to the ones who need help most

  • You're tired of quiz results pages that give everything away for free with no way to follow up with the person afterward


Step-by-step

Part 1 — Build the scoring form

This is where everything starts. You'll build the form that captures the lead's contact details and their self-rated score across 7 business categories. The fastest way to build it is with Magic Create, just describe the form in plain text and Formaloo generates it for you.

1. Open Magic Create: From your Formaloo homepage, click Magic Create.

2. Describe the form: Paste this prompt: "Create a business health scorecard form. Include a full name field, a work email field, and a company name field, all short text. Then add 7 slider fields rated 1 to 10: how confident are you in your cash flow and financial planning, how effective are your sales and marketing efforts are at bringing in new business, how well documented and efficient are your day to day operations, how strong is your team and leadership structure, how satisfied and loyal are your customers, how well do your tools and systems support the business as it grows, and how clear and actionable is your strategic growth plan. Also add three admin-only fields: a status dropdown with options New, Contacted, Qualified, and Disqualified, an assignee field, and an internal notes long text field."

3. Generate the form: Click Create. Formaloo builds the full form for you in seconds.

4. Verify your fields: Your form should look like the table below, Magic Create will have generated most of it. Verify each field and field ID matches exactly before moving on.

Field

Field ID

Type

What's your full name?

full_name

Short text

What's your work email?

work_email

Short text

What's your company name?

company_name

Short text

How confident are you in your cash flow and financial planning?

financial_health_rating

Slider (1-10)

How effective are your sales and marketing efforts at bringing in new business?

sales_marketing_rating

Slider (1-10)

How well-documented and efficient are your day-to-day operations?

operations_rating

Slider (1-10)

How strong is your team and leadership structure?

team_leadership_rating

Slider (1-10)

How satisfied and loyal are your customers?

customer_experience_rating

Slider (1-10)

How well do your tools and systems support the business as it grows?

technology_systems_rating

Slider (1-10)

How clear and actionable is your strategic growth plan?

strategic_growth_rating

Slider (1-10)

📖 The admin-only fields (status, assignee, internal notes) won't be visible to respondents. See what are admin-only fields and how they help for how they behave.

5. Publish the form: Click Publish in the island bar at the top of the editor to make the form live.


Part 2 — Weight the score and gate the results

This is the calculation layer. Each category doesn't count equally toward the final score, financial health matters more than technology, for example, so you'll build weighted variables first, then sum them into a total. You'll also build the logic that decides which advice text shows up for each score band.

1. Open the Variables panel: In the form settings panel on the right side, open Advanced logic and navigate to the Calc tab.

2. Create the weighted category variables: Add one variable per category that multiplies the rating by its weight. Financial health rating × 2, sales and marketing rating × 1.5, operations rating × 1.5, team and leadership rating × 1.5, customer experience rating × 1.5, technology and systems rating × 1, strategic growth rating × 1.

Note: Formaloo's formula fields don't support parentheses, so build each weighted category as its own variable rather than one long nested formula.

3. Create the total score variable: Add a final variable that adds all 7 weighted variables together. This gives you a Total health score from 0 to 100.

4. Set up score band logic with Magic Logic: Click Magic Logic in the top right corner of the Logic panel. Describe the bands in plain text: "If Total health score is 80 or more, set Score band to Excellent. If it's 60 to 79, set it to Strong. If it's 40 to 59, set it to Developing. If it's below 40, set it to At risk." Click Generate Rules, review the preview, and approve.

5. Set up personalized advice with Magic Logic: In the same Magic Logic pop-up, describe the per-category advice: for each of the 7 categories, a rating of 8 to 10 should populate that category's advice field with encouraging, strength-reinforcing text, a rating of 5 to 7 should populate it with improvement-focused text, and a rating of 4 or below should populate it with more urgent, attention-needed text. Also describe an overall advice field driven by the Score band. Generate, review, and approve the rules, then click Save in the top right corner.

6. Route the lead on submit: Add one more rule so that when the form is submitted, Lead status is set to New. Leave Assignee unassigned so your team can claim leads manually.


Part 3 — Set up the email templates

You'll need three emails: a confirmation to the person who submitted the scorecard, an internal alert for your team, and a follow-up email that delivers the full personalized report once the person requests it.

1. Create the results-ready email: Click your profile icon, go to Apps and integrations, find Custom email templates, and hit Add new template. Name it "Results ready," paste in the subject and body prompt below, and use an AI block to generate the final body copy from that prompt.

Results ready (confirmation to submitter)

Subject: Your business health score is ready, @full_name

Body prompt: Write a warm, encouraging email confirming @full_name's business health scorecard was received. Reference @company_name. State their score (@total_health_score/100) and score band (@score_band) without giving away the full personalized breakdown. Invite them to log in to their portal account to unlock their full personalized action plan and download it as a PDF. 3-4 sentences max.

HTML design: white background, single centered column max-width 560px, Inter/system-ui font, one large status-badge element showing the score band in a soft pill, one CTA button "View my full results," muted footer in #999.

Trigger: when the scorecard form is submitted, immediately send this email to @work_email.

📖 See how to create and send custom email templates for the full template editor walkthrough.

2. Turn on submission notifications: From the right sidebar of the form builder, click Notify. Turn on Send email to respondent and select the "Results ready" template. Then turn on Receive email notification for yourself so your team is alerted too.

3. Create the admin notification email: Add a second custom email template named "New scorecard lead," using the subject and body prompt below.

New scorecard lead (admin notification)

Subject: New scorecard submission: @company_name (@score_band)

Body prompt: Write a brief, factual internal alert for the sales/success team. State @full_name, @company_name, @work_email, @total_health_score, and @score_band. Note that this is a new inbound lead worth reviewing. Keep it under 3 sentences, no fluff.

HTML design: white background, single centered column max-width 560px, Inter/system-ui font, a compact data table showing name, company, email, score, and band, muted footer in #999.

Trigger: when the scorecard form is submitted, immediately send this email to the internal admin/sales distribution address.

4. Create the action-plan email: Add a third template named "Your full report," using the subject and body prompt below.

Your full report (action plan email)

Subject: @full_name, here's your personalized action plan

Body prompt: Write a warm, helpful email letting @full_name know their personalized action plan is attached. Briefly mention their score band (@score_band) and encourage them to review the category-by-category recommendations. Close with an invitation to reach out if they'd like help acting on it. Keep it to 4-5 sentences.

HTML design: white background, single centered column max-width 560px, Inter/system-ui font, a CTA button "Download full report" alongside the attached PDF, muted footer in #999.

Trigger: when the submitter clicks "Email me my full report" from the gated results page (or an admin sends it manually), send this email to @work_email with the action-plan PDF attached.

5. Trigger the action-plan email conditionally: Go to Advanced logic and add a rule under On update: "When Email me my report is answered, send email using the 'Your full report' template to Work email." This fires only when the logged-in user requests their report from the results page.

📖 See how to send and receive conditional email notifications for more on conditional triggers.


Part 4 — Build the PDF templates

You'll build two PDFs: a summary that shows the score and category breakdown at a glance, and a full action plan with personalized recommendations. Both pull directly from the form's fields and calculated variables.

1. Create the summary PDF template: Click your profile icon, go to Apps and integrations, and click Custom PDF template. Click Add new template, switch to the HTML view, and paste the code below. Name it "Scorecard summary" and hit Save.

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style>   body {     font-family: 'Inter', system-ui, -apple-system, sans-serif;     background: #ffffff;     color: #2b2b2b;     margin: 0;     padding: 0;   }   .page {     max-width: 760px;     margin: 0 auto;     padding: 60px 72px;   }   .header {     display: flex;     justify-content: space-between;     align-items: flex-start;     border-bottom: 1px solid #eee;     padding-bottom: 24px;     margin-bottom: 36px;   }   .header h1 {     font-size: 22px;     font-weight: 700;     margin: 0 0 6px 0;     color: #1a1a1a;   }   .header .meta {     font-size: 12px;     color: #999;   }   .section-title {     font-size: 10px;     text-transform: uppercase;     letter-spacing: 1.2px;     color: #aaa;     margin: 36px 0 14px 0;   }   .score-band {     background: #f9f9f9;     border-left: 3px solid #1a1a1a;     padding: 20px 24px;     border-radius: 4px;     margin-bottom: 8px;   }   .score-band .score {     font-size: 40px;     font-weight: 700;     color: #1a1a1a;     line-height: 1;   }   .score-band .band-label {     font-size: 14px;     font-weight: 600;     color: #444;     margin-top: 6px;   }   .field-grid {     display: grid;     grid-template-columns: 1fr 1fr;     gap: 0;   }   .field {     padding: 12px 0;     border-bottom: 1px solid #f0f0f0;   }   .field.full {     grid-column: 1 / -1;   }   .field .label {     font-size: 11px;     color: #999;     margin-bottom: 4px;   }   .field .value {     font-size: 14px;     color: #1a1a1a;     font-weight: 500;   }   .category-row {     display: flex;     justify-content: space-between;     align-items: center;     padding: 14px 0;     border-bottom: 1px solid #f0f0f0;   }   .category-row .name {     font-size: 13px;     color: #1a1a1a;     font-weight: 500;   }   .category-row .weight {     font-size: 11px;     color: #aaa;   }   .category-row .rating {     font-size: 15px;     font-weight: 700;     color: #1a1a1a;     min-width: 60px;     text-align: right;   }   .footer {     margin-top: 48px;     padding-top: 20px;     border-top: 1px solid #eee;     display: flex;     justify-content: space-between;     font-size: 11px;     color: #999;   } </style> </head> <body>   <div class="page">      <div class="header">       <div>         <h1>Business health scorecard results</h1>         <div class="meta">Reference #@submission_id</div>       </div>       <div class="meta">Generated on @date_created</div>     </div>      <div class="section-title">Overview</div>     <div class="field-grid">       <div class="field">         <div class="label">Full name</div>         <div class="value">@full_name</div>       </div>       <div class="field">         <div class="label">Company</div>         <div class="value">@company_name</div>       </div>       <div class="field full">         <div class="label">Work email</div>         <div class="value">@work_email</div>       </div>     </div>      <div class="section-title">Overall score</div>     <div class="score-band">       <div class="score">@total_health_score / 100</div>       <div class="band-label">@score_band</div>     </div>      <div class="section-title">Category breakdown</div>     <div class="category-row">       <div class="name">Financial health <span class="weight">(20% weight)</span></div>       <div class="rating">@financial_health_rating / 10</div>     </div>     <div class="category-row">       <div class="name">Sales &amp; marketing <span class="weight">(15% weight)</span></div>       <div class="rating">@sales_marketing_rating / 10</div>     </div>     <div class="category-row">       <div class="name">Operations &amp; processes <span class="weight">(15% weight)</span></div>       <div class="rating">@operations_rating / 10</div>     </div>     <div class="category-row">       <div class="name">Team &amp; leadership <span class="weight">(15% weight)</span></div>       <div class="rating">@team_leadership_rating / 10</div>     </div>     <div class="category-row">       <div class="name">Customer experience <span class="weight">(15% weight)</span></div>       <div class="rating">@customer_experience_rating / 10</div>     </div>     <div class="category-row">       <div class="name">Technology &amp; systems <span class="weight">(10% weight)</span></div>       <div class="rating">@technology_systems_rating / 10</div>     </div>     <div class="category-row">       <div class="name">Strategic growth planning <span class="weight">(10% weight)</span></div>       <div class="rating">@strategic_growth_rating / 10</div>     </div>      <div class="footer">       <div>Confidential — prepared for @full_name only</div>       <div>[Your organization name]</div>     </div>    </div> </body> </html>

2. Create the action-plan PDF template: Repeat the same steps for a second template. Name it "Personalized action plan" and paste the code below.

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style>   body {     font-family: 'Inter', system-ui, -apple-system, sans-serif;     background: #ffffff;     color: #2b2b2b;     margin: 0;     padding: 0;   }   .page {     max-width: 760px;     margin: 0 auto;     padding: 60px 72px;   }   .header {     display: flex;     justify-content: space-between;     align-items: flex-start;     border-bottom: 1px solid #eee;     padding-bottom: 24px;     margin-bottom: 36px;   }   .header h1 {     font-size: 22px;     font-weight: 700;     margin: 0 0 6px 0;     color: #1a1a1a;   }   .header .meta {     font-size: 12px;     color: #999;   }   .section-title {     font-size: 10px;     text-transform: uppercase;     letter-spacing: 1.2px;     color: #aaa;     margin: 36px 0 14px 0;   }   .inset {     background: #f9f9f9;     border-left: 3px solid #1a1a1a;     padding: 20px 24px;     border-radius: 4px;     font-size: 14px;     line-height: 1.6;     color: #333;   }   .inset .band-label {     font-size: 14px;     font-weight: 700;     color: #1a1a1a;     margin-bottom: 8px;   }   .category-block {     padding: 18px 0;     border-bottom: 1px solid #f0f0f0;   }   .category-block .name-row {     display: flex;     justify-content: space-between;     align-items: baseline;     margin-bottom: 8px;   }   .category-block .name {     font-size: 14px;     font-weight: 600;     color: #1a1a1a;   }   .category-block .rating {     font-size: 13px;     font-weight: 700;     color: #666;   }   .category-block .advice {     font-size: 13px;     line-height: 1.6;     color: #444;   }   .footer {     margin-top: 48px;     padding-top: 20px;     border-top: 1px solid #eee;     display: flex;     justify-content: space-between;     font-size: 11px;     color: #999;   } </style> </head> <body>   <div class="page">      <div class="header">       <div>         <h1>Your personalized action plan</h1>         <div class="meta">Reference #@submission_id</div>       </div>       <div class="meta">Generated on @date_created</div>     </div>      <div class="section-title">For @full_name at @company_name</div>     <div class="inset">       <div class="band-label">@score_band &mdash; @total_health_score / 100</div>       @overall_band_advice     </div>      <div class="section-title">Recommendations by category</div>      <div class="category-block">       <div class="name-row">         <div class="name">Financial health</div>         <div class="rating">@financial_health_rating / 10</div>       </div>       <div class="advice">@financial_health_advice</div>     </div>      <div class="category-block">       <div class="name-row">         <div class="name">Sales &amp; marketing</div>         <div class="rating">@sales_marketing_rating / 10</div>       </div>       <div class="advice">@sales_marketing_advice</div>     </div>      <div class="category-block">       <div class="name-row">         <div class="name">Operations &amp; processes</div>         <div class="rating">@operations_rating / 10</div>       </div>       <div class="advice">@operations_advice</div>     </div>      <div class="category-block">       <div class="name-row">         <div class="name">Team &amp; leadership</div>         <div class="rating">@team_leadership_rating / 10</div>       </div>       <div class="advice">@team_leadership_advice</div>     </div>      <div class="category-block">       <div class="name-row">         <div class="name">Customer experience</div>         <div class="rating">@customer_experience_rating / 10</div>       </div>       <div class="advice">@customer_experience_advice</div>     </div>      <div class="category-block">       <div class="name-row">         <div class="name">Technology &amp; systems</div>         <div class="rating">@technology_systems_rating / 10</div>       </div>       <div class="advice">@technology_systems_advice</div>     </div>      <div class="category-block">       <div class="name-row">         <div class="name">Strategic growth planning</div>         <div class="rating">@strategic_growth_rating / 10</div>       </div>       <div class="advice">@strategic_growth_advice</div>     </div>      <div class="footer">       <div>Confidential — prepared for @full_name only</div>       <div>[Your organization name]</div>     </div>    </div> </body> </html>

3. Attach both PDFs to their emails: Open the "Results ready" email template and attach the summary PDF. Open the "Your full report" email template and attach the action-plan PDF.

📖 See how to send custom PDFs with email notifications for how attachments work.


Part 5 — Gate the results behind a portal login

This is the part that turns a quiz into a lead capture tool. Instead of showing the score on the spot, you'll require a login before the results page reveals anything, matched to the same email the person used on the form.

1. Activate the portal: From your project, click the Settings (gear) icon and select Activate portal. Click Manage user, open the setup wizard, and connect a user directory. Enable sign-up and login so new leads can create an account.

📖 See how to create a portal and manage users' access for the full walkthrough.

2. Restrict the results page to the submitter's own record: On the "My full results" page, switch to Edit mode on the data block and click Options. Under Manage access, select Work email as the profile field, then toggle on Allow users to view only their data.

3. Restrict page access to logged-in users: Still in Edit mode, click the three-dot menu next to the "My full results" page and select Access. Set external user access to Logged-in users so nobody can view scores without an account.

4. Set up your team's roles: Go to User directory, click Edit profile fields, and add the roles your team needs, for example Reviewer and Admin.

Note: You can put your portal on a custom domain, available on the Business plan or through the brand removal add-on, so the scorecard feels fully white-labeled.


What you now have

You now have a scoring tool that qualifies leads before your team ever talks to them. Every submission produces a weighted score, a score band, and category-specific advice, and none of it is visible until the person logs in with the email they submitted. Your team sees a triaged, assigned pipeline instead of a flat list of quiz results, and every lead can walk away with a printable or emailable PDF that makes the exchange feel worth their information.

Used by a small business consulting firm to turn a free scorecard into a qualified lead list, capturing signups before revealing any personalized advice.


Ready-to-use templates

Don't build this from scratch, we've already put together workflows with similar mechanics for you.


What's next


Learn more how-tos

Did this answer your question?