Skip to main content

How to build a warranty claim and product return case management workflow with AI-classified claim types in Formaloo

Learn how to build a warranty claim and return workflow in Formaloo, with an AI field that classifies each claim and recommends a resolution path, a Kanban pipeline, status emails, a case file PDF, and an AI trend report for leadership.

What you'll build

A customer facing claim form that collects the order, product, issue, and photos for a warranty claim or return. Every submission is read by an AI Analysis field the moment it comes in, which classifies the claim (a simple exchange versus a complex defect investigation) and recommends a resolution path, so reviewers open a claim already knowing where it stands. From there the claim moves through a Kanban pipeline with automated status emails, generates an internal case file PDF, and rolls up into an AI-generated trend report for leadership.

When to use this

  • Your team currently triages every warranty claim or return by hand before anyone can act on it.

  • Simple exchanges and complex defect investigations both land in the same inbox with no way to tell them apart at a glance.

  • Customers email in asking for updates because there's no self-serve way to check a claim's status.

  • Leadership wants to know which products generate the most claims, without reading every case individually.

  • You need a defensible internal record of what was submitted, what was decided, and why.

Part 1 — Build the claim form with Magic Create

This is the intake form customers fill out when something goes wrong with a product they bought. It captures who they are, what they bought, what's wrong with it, and what outcome they want, and it feeds everything the AI classification needs to work. 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 warranty claim and product return intake form, covering the customer's name, email, order number, receipt upload, product name, purchase date, whether the product is still under warranty (with a warranty card upload if yes), a description of the issue, photos of the issue, the outcome they want (repair, replacement, refund, or not sure), and consent to a possible inspection. Also describe the admin-only fields: a claim status dropdown, an assignee field, internal notes, and an AI Analysis field that classifies the claim type and recommends a resolution path.

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 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 claims reviewers need to be added as internal users, not portal sign-ups.

Field (question form)

Field ID

Type

What's your full name?

full_name

Short text

What's your email address?

email

Email

What's your order or receipt number?

order_number

Short text

Upload your receipt or proof of purchase

receipt_upload

File

What product is this claim about?

product_name

Short text

When did you purchase this product?

purchase_date

Date

Is the product still under warranty?

under_warranty

Yes/No

Upload your warranty card or registration confirmation

warranty_proof

File

What's happening with the product?

issue_description

Long text

Upload photos of the issue

issue_photos

File (multiple files allowed)

What outcome are you hoping for?

desired_outcome

Choice

Do you agree to let us inspect the returned item if needed?

inspection_consent

Yes/No

Claim status

claim_status

Dropdown (admin-only)

Assigned reviewer

assigned_reviewer

Assignee field (admin-only)

Internal notes

internal_notes

Long text (admin-only)

AI claim analysis

ai_claim_analysis

AI Analysis field (admin-only)

💡 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 customer never needs to see or fill, like claim status and internal notes. The customer's own uploads (receipt, warranty card, issue photos) stay normal, fillable fields.

5. Set up the AI claim analysis field: Open the AI Analysis field's settings and point it at the fields it should read: issue_description, issue_photos, desired_outcome, and under_warranty. Give it a prompt asking it to classify the claim as a simple exchange or a complex defect investigation, and to recommend a resolution path based on the requested outcome and the described issue. Set it to run when the form is submitted. The field stays admin-only by default, hidden from the customer, and writes its output directly onto the submission row.

6. Save your form.

Part 2 — Add the form logic

This is what makes the form adapt to each customer's situation instead of asking everyone the same questions regardless of relevance. Warranty proof only shows up for customers who need it, and photo evidence becomes required only when the requested outcome makes it necessary.

💡 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 all four rules at once: show "Upload your warranty card or registration confirmation" only when "Is the product still under warranty?" is Yes, and keep it hidden by default; show a warning message when "Do you agree to let us inspect the returned item if needed?" is No, hidden by default; and require "Upload photos of the issue" only when "What outcome are you hoping for?" is Replacement or Refund, optional 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: a confirmation to the customer, an internal alert to the claims team, and four status updates as a claim moves through inspection, approval, denial, or resolution. Build all six as custom templates first, then wire up the triggers in the next Part.

💡 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 "Claim received confirmation," and set the subject to We've received your warranty claim (WC-@rowid).

3. Generate the body with AI: Clear the body field, add an AI block, and paste this prompt: "Write a warm, reassuring confirmation email to @full_name letting them know their claim about @product_name has been received and is now being reviewed. Reference the claim number WC-@rowid and mention they'll get an update once a reviewer has looked at it. Keep it to 3 to 4 short sentences, calm and factual, no promises on timelines. Design it with a white background, a single centered column at max-width 560px, an Inter or system-ui font, a small status badge reading 'Received,' and a muted footer in #999."

4. Repeat for the remaining five templates, using the same steps with these names, subjects, and prompts:

  • New claim alert (internal). Subject: New warranty claim needs review (WC-@rowid). Prompt: "Write a brief, factual internal notification telling the claims team a new claim has come in from @full_name for @product_name, with requested outcome @desired_outcome. Include the claim number and prompt them to assign and triage it. Under 3 sentences, no fluff. White background, single centered column max-width 560px, Inter or system-ui font, a compact data table showing claim number, product, and requested outcome, muted footer in #999."

  • Inspection needed. Subject: Your claim WC-@rowid needs a quick inspection. Prompt: "Write a clear, friendly email to @full_name explaining their claim for @product_name now needs a physical inspection before a decision can be made. Keep it to 4 to 5 sentences, factual and reassuring. White background, single centered column max-width 560px, Inter or system-ui font, status badge 'Awaiting inspection,' muted footer in #999."

  • Claim approved. Subject: Good news, your claim WC-@rowid has been approved. Prompt: "Write a warm, positive email to @full_name confirming their claim for @product_name has been approved, referencing their requested outcome @desired_outcome. Keep it to 3 to 4 sentences. White background, single centered column max-width 560px, Inter or system-ui font, a green-toned 'Approved' status badge, a CTA button reading 'View claim status,' muted footer in #999."

  • Claim denied. Subject: An update on your claim WC-@rowid. Prompt: "Write an empathetic, respectful email to @full_name explaining their claim for @product_name was not approved. Keep it general and invite them to reply for more detail. 4 sentences, calm tone, no defensiveness. White background, single centered column max-width 560px, Inter or system-ui font, a neutral gray 'Not approved' badge, muted footer in #999."

  • Claim resolved, case closed. Subject: Your claim WC-@rowid is now closed. Prompt: "Write a short, friendly closing email to @full_name confirming their claim for @product_name is resolved and the case is closed. Thank them for their patience. 2 to 3 sentences. White background, single centered column max-width 560px, Inter or system-ui font, a 'Resolved' 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 telling Formaloo when each one fires, so a claim moves through inspection and resolution without anyone manually sending updates.

1. Turn on respondent notifications: In your form editor, open Notify in the right sidebar, then Send email to respondent. Turn on the toggle and select the "Claim received confirmation" template. This fires on submission, since @email is the form's Email field.

2. Turn on admin notifications: Go back and turn on Receive email notification, then route it to the "New claim alert" template so your claims team's inbox gets notified the moment a claim comes in.

Beyond submission, the remaining four emails only need to fire when an admin changes the claim status, which calls for conditional logic rather than a static notification.

3. Open the On Update logic tab: In Advanced logic, switch to the rule set that runs when an existing record is updated.

4. Add a rule per status change: Add four rules, one per status: when Claim status changes to Awaiting inspection, send the "Inspection needed" template to @email; when it changes to Approved, send "Claim approved"; when it changes to Denied, send "Claim denied"; when it changes to Resolved, send "Claim resolved, case closed."

5. Save your logic.

Part 5 — Build the case file PDF template

Every claim needs an internal record that a reviewer can print, archive, or hand to a manager, one that includes the AI's classification alongside the customer's own submission. 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, and 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>Warranty Claim 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>Warranty Claim Case File</h1>     <div class="meta">       <div class="ref">WC-@rowid</div>       <div>Submitted @created_at</div>     </div>   </div>    <div class="section">     <div class="section-title">Customer &amp; product</div>     <div class="field-grid">       <div class="field">         <div class="field-label">Full name</div>         <div class="field-value">@full_name</div>       </div>       <div class="field">         <div class="field-label">Email address</div>         <div class="field-value">@email</div>       </div>       <div class="field">         <div class="field-label">Order / receipt number</div>         <div class="field-value">@order_number</div>       </div>       <div class="field">         <div class="field-label">Product</div>         <div class="field-value">@product_name</div>       </div>       <div class="field">         <div class="field-label">Purchase date</div>         <div class="field-value">@purchase_date</div>       </div>       <div class="field">         <div class="field-label">Under warranty</div>         <div class="field-value">@under_warranty</div>       </div>     </div>   </div>    <div class="section">     <div class="section-title">Issue details</div>     <div class="field-grid">       <div class="field full">         <div class="field-label">What's happening with the product</div>         <div class="field-value">@issue_description</div>       </div>       <div class="field full">         <div class="field-label">Attachments</div>         <div class="field-value">Receipt and issue photos are attached to this submission in the dashboard.</div>       </div>     </div>   </div>    <div class="section">     <div class="section-title">Resolution preference &amp; consent</div>     <div class="field-grid">       <div class="field">         <div class="field-label">Requested outcome</div>         <div class="field-value">@desired_outcome</div>       </div>       <div class="field">         <div class="field-label">Inspection consent</div>         <div class="field-value">@inspection_consent</div>       </div>     </div>     <br>     <div class="inset">       By submitting this claim, the customer acknowledges that Formaloo's return and warranty inspection policy may apply, and that a physical inspection of the returned item may be required before a final decision is issued.     </div>   </div>    <div class="section">     <div class="section-title">Internal claim record</div>     <div class="ai-block">       <div class="field-label">AI claim analysis</div>       <div class="field-value">@ai_claim_analysis</div>     </div>     <br>     <div class="field-grid">       <div class="field">         <div class="field-label">Claim status</div>         <div class="field-value">@claim_status</div>       </div>       <div class="field">         <div class="field-label">Assigned reviewer</div>         <div class="field-value">@assigned_reviewer</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 claim record, not for external distribution</div>     <div>Your company name</div>   </div>  </body> </html>

3. Name and save: Give it the name "Warranty claim 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 customer, attach it to the "New claim alert" email so the claims team receives the case file the moment a claim comes in.

Part 6 — Set up the customer portal

Customers need a way to submit claims and check their own status without emailing your team for updates.

💡 Want to give clients, applicants, or teammates their own space to submit and track requests? This is the foundational guide to building a portal and controlling who can see it. See how to create a portal and manage users' access.

Here's how the customer group of pages is laid out:

Group

Page

Access level

Data block

Filter

Sort

Form?

Customer

Submit a warranty claim

External portal user, no restriction

Form

None

N/A

Yes

Customer

My claims

External, view own records only

Table

None (scoped to own)

Newest first

No

Customer

Approved claims

External, view own records only

Table

Claim status = Approved

Newest first

No

Customer

Denied claims

External, view own records only

Table

Claim status = Denied

Newest first

No

1. Start your project: Start from Form so your warranty claim form is already attached, then open the project's Settings (gear icon) and select Activate Portal.

2. Set up the user directory: Click Manage User, open the Setup Wizard, and create a new user directory (this is what lets customers sign up and log in). Configure login, sign-up, and any bot protection you want, then connect the profile to your warranty claim form.

💡 Want reviewers, approvers, and applicants to each see a different view of the same portal? This guide covers setting up roles so each person only sees what's relevant to them. See how to create and assign user roles in your portal.

3. Add the "My claims" page: Add a table page and point it at your warranty claim form's data. Switch to Edit Mode, click Options, scroll to Manage Access, select the profile field in the dropdown, and toggle on Allow users to view only their data.

💡 Want each logged-in user to see only their own submissions, not everyone else's? This is the foundational guide to the "view only their data" access restriction. See how to let users view and edit their own data in your portal.

4. Add "Approved claims" and "Denied claims": Duplicate the "My claims" page twice, filter one by Claim status = Approved and the other by Claim status = Denied, sorted newest first. Both inherit the same "view only their data" restriction.

Part 7 — Set up the internal claims team workspace

Your reviewers need their own pipeline, separate from what customers see, with each reviewer able to find their own assigned work quickly.

💡 Want a whole page in your portal 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.

Here's how the claims team group of pages is laid out:

Group

Page

Access level

Data block

Filter

Sort

Form?

Claims team

All claims

Internal users, Claims team

Kanban

None

Grouped by Claim status

No

Claims team

My assigned claims

Internal users, Claims team

Table

Assigned reviewer = logged-in user

Newest first

No

Claims team

New claims

Internal users, Claims team

Table

Claim status = New

Newest first

No

Claims team

Awaiting inspection

Internal users, Claims team

Table

Claim status = Awaiting inspection

Oldest first

No

Claims team

Resolved & closed

Internal users, Claims team

Table

Claim status = Resolved or Closed

Newest first

No

1. Make reviewers workspace members: Add your claims reviewers as workspace members, and group them into a "Claims team" if you use teams.

💡 Want to assign work to a group instead of naming one person every time? Teams let you route submissions to everyone in a group you define. See what is a team in Formaloo and how to manage it.

2. Add the "All claims" Kanban: Add a Kanban page grouped by Claim status. Open the page's three-dot menu, click Access, and restrict it to Internal users → Specific teams, selecting your Claims team.

💡 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. Dragging a card to a new column updates Claim status and fires the matching logic and email from Part 4 automatically.

3. Add "My assigned claims": Add a table page, restrict its page Access to Internal users → Specific teams the same way, then switch to Edit Mode, open Options → Manage Access, select the Assigned reviewer field, and toggle on Allow assignees to view only their data. Each reviewer now sees only their own assigned claims.

4. Add "New claims" and "Awaiting inspection": Duplicate the pipeline table, filter one by Claim status = New (newest first) and the other by Claim status = Awaiting inspection (oldest first), same page access restriction as the rest of this group.

5. Add "Resolved & closed": One more table, filtered to Claim status = Resolved or Closed, for a historical record of finished claims.

Part 8 — Add the AI-powered leadership report

Leadership doesn't need to read every claim individually. This is where the AI claim analysis you set up in Part 1 rolls up into something they can actually use.

Here's how the reports group of pages is laid out:

Group

Page

Access level

Data block

Filter

Sort

Form?

Reports

Claims overview

Internal, Leadership, full visibility

Table

None

Newest first

No

Reports

AI claims trend report

Internal, Leadership

Reference page (AI Analyze block)

None

N/A

No

1. Add the "Claims overview" page: Add one more table page with no filter, showing every claim regardless of status, and restrict its Access to Internal users → Specific teams, selecting your leadership group.

2. Add the "AI claims trend report" page: Add a new reference page and insert an AI Analyze block, pointing it at your warranty claim form's data.

3. Prompt the report: Ask it to break down claim volume by classification (simple exchange versus defect investigation), the most common product defect categories, and the average time from submission to resolution. Formaloo generates charts and a written summary from your live data.

What you now have

A single warranty claim and return workflow that starts triaging itself the moment a customer hits submit. Every claim arrives already classified, with a recommended resolution path sitting on the record before a human opens it. Reviewers work from a Kanban pipeline that emails customers automatically as status changes, every case leaves behind a proper internal PDF record, and leadership gets a live, AI-generated view of where claims are coming from and how long they're taking to close, all without anyone building a spreadsheet by hand.

What's next

Ready-to-use templates

Don't build this from scratch, we've already put it together for you.

  • Employee request workflow — Internal request routing by type with approval tracking. The same status-and-routing pattern powers this claim workflow's admin-only fields and pipeline.

  • Job applicant tracking workflow — Tracks records across pipeline stages with reviewer assignments. It's the same shape as moving a claim through New, Awaiting inspection, and Resolved.

  • Patient intake & consent workflow for healthcare — Conditional intake logic, AI-powered emails, and a PDF document, the same combination this warranty claim workflow relies on.

Learn more how-tos

Did this answer your question?