# Example apps

> Six example apps, the bundled template each one starts from and what to change, plus best practices for designing an app.

Canonical HTML page: https://conclude.io/doc/apps/patterns/
Last updated: 2026-10-30

---

This page shows six example apps. Each one starts from a bundled [template](https://conclude.io/doc/apps/templates/) and changes a few things to fit the work. All six use the same app model. Only the words, the extra fields and who is responsible differ.

## Six example apps

You change labels, fields and options on the [Attributes tab](https://conclude.io/doc/apps/editor/attributes/), and the default assignee on the [Roles tab](https://conclude.io/doc/apps/editor/roles/).

| Work | Start from | Main changes | The conclusion records |
|---|---|---|---|
| Facilities request | Helpdesk | Change the **Category** options to repair, access and supplies. Relabel **Description** as Location. Clear the default assignee. | What was done |
| Legal approval | Approval | Relabel **Request** as Contract. Add a `select` field for the contract type. Keep the **Decision** options Approved and Declined. | The decision |
| HR onboarding | Generic (customizable) | Relabel **Subject** as New hire. Add a `select` field for the department and a `user` field for the manager. Make an HR contact the default assignee. | Handover notes |
| Vendor onboarding | Approval | Relabel **Request** as Vendor. Add `string` fields for the contact and the email, and a `select` field for the risk level. | Approved or declined |
| Incident | Incident management | Relabel the six severity levels. Add a `select` field for the affected service. Keep **Root cause**, which stays hidden until the incident is concluded. Leave the default assignee empty, so the responder takes ownership. | The resolution |
| Customer support | Support | Add a `status` field with the options Open, Waiting for input and Resolved. Add a `select` field for the product area. | The resolution |

## Restrict who decides

In the Approval template, only the app's superusers can set **Decision**. Whoever installs the app is its first superuser. Before you use the app for real approvals, name the right people as superusers, such as legal reviewers, or procurement and security for vendors. You set superusers in the app's YAML on the [Expert tab](https://conclude.io/doc/apps/editor/expert/). See [Macros and roles](https://conclude.io/doc/reference/macros-and-roles/#roles-block).

## Best practices

- **Start from one repeatable piece of work.** Decide what starts it, what information people need, who is responsible and what the conclusion should record. Then pick the closest template
- **Keep the form small.** Ask only for information that helps someone act. Check **Mandatory field** only when the work can't start without a value
- **Use your team's words.** Change a field's label to the words your team uses. Its name stays the same
- **Separate responsibility from alerts.** Choose who owns new activities and who takes part. Alerting a channel only notifies people. It doesn't make them approvers. See the [Roles tab](https://conclude.io/doc/apps/editor/roles/)
- **Describe the outcome.** Give the conclusion a label that asks for a useful answer, such as "Decision and reasons" or "Work performed", instead of a plain "Conclusion"
- **Test before you extend.** Create one normal activity and conclude it. Then add [integrations](https://conclude.io/doc/apps/integrations/), [agents](https://conclude.io/doc/agents/) or [automation](https://conclude.io/doc/apps/automation/)

The example apps can grow in the same way:

- a [web form](https://conclude.io/doc/apps/integrations/web-form/) for facilities requests from people outside the channel
- [email](https://conclude.io/doc/apps/integrations/email/) for HR onboarding, so a message to the app's address opens an activity
- an [agent](https://conclude.io/doc/agents/) that answers when a legal reviewer mentions it
- a [lookup](https://conclude.io/doc/apps/integrations/lookup/) endpoint that gives an agent the vendor's CRM record
- [Jira](https://conclude.io/doc/apps/integrations/jira/) sync, so an incident also exists as a Jira issue
- [Zendesk](https://conclude.io/doc/apps/integrations/zendesk/) sync for customer support, or the Zendesk integration template

## Next

- [Build an app without code](https://conclude.io/doc/apps/tutorial/) builds a facilities request app from the Generic template, step by step
- [Lifecycle](https://conclude.io/doc/apps/lifecycle/) shows what happens to an activity from creation to conclusion

