User Guide
Everything you need to set up and use the Attendance app for Nextcloud.
Table of Contents
With Attendance you collect answers up front, tick off on site who actually turned up, and see every response sorted by group. The app is made for choirs, clubs, teams, and anyone who regularly has to work out who is coming to a rehearsal, a training session, or a meeting. This guide takes you from installation all the way into the admin settings.
Two apps, and only one of them costs anything
- The Attendance app for Nextcloud – what this guide is about. Free, open source (AGPL-3.0), and everything below works with it alone.
- The mobile app for iOS and Android – optional. It adds self-check-in by QR code and NFC plus push notifications. Free for the first 30 days, then a yearly subscription: a personal license for yourself or one license for your whole group. More about the mobile app
Prerequisites
The app is at its best when everyone answers from their own Nextcloud account. Only then can it:
- tell apart who has answered and who is still missing
- automatically remind exactly the people who haven't
- give each person their own calendar feed
- steer visibility and permissions through group membership
Requirements
- Nextcloud 32 to 34
- PHP 8.1 or later
Installation
Install the Attendance app from the Nextcloud App Store:
- Log in to your Nextcloud as an administrator
- Go to Apps (top-right user menu or via the app switcher)
- Search for Attendance
- Click Download and enable
Alternatively, if you have shell access:
php occ app:install attendance
php occ app:enable attendanceSetup Guide
Step 1: Create Nextcloud groups
Start by mapping your structure onto Nextcloud groups – visibility, statistics and permissions all hang off them later. You create the groups in the Nextcloud admin area under Users.
Example: Choir
- Choir – all members
- Board – board members / leadership
- Conductor – musical director
- Soprano, Alto, Tenor, Bass – voice sections
Example: Sports club
- Club – all members
- Coaches
- Team A, Team B – sub-teams
Step 2: Create accounts and assign groups
Create a Nextcloud account for each member and add them to the groups that fit. Several groups per person is normal and intended, say "Choir" and "Soprano".
Step 3: Configure admin settings
Open the Attendance admin settings at Administration settings > Attendance and configure:
- Response summary groups – which groups show up as their own sections, for example Soprano, Alto, Tenor, Bass.
- Permissions – who may manage appointments, check people in, see the summaries and read comments.
- Reminders – switch on automatic reminders and set when and how often they go out.
- Calendar sync – optionally keep appointments in step with your Nextcloud calendar, and push every appointment into a shared organization calendar.
See the Admin settings reference section below for details on each setting.
Step 4: Create your first appointment
Open the Attendance app from the top bar and create your first appointment. The details are under Creating appointments.
Step 5: Let members respond
Your members find the appointment in the Attendance app and in the Nextcloud dashboard widget. One click on Yes, No or Maybe is enough, a comment is optional.
Everyday Usage
Creating Appointments
Anyone with the "Manage appointments" permission can create new appointments and change existing ones. With the "Create own appointments" permission you can create appointments too, and manage the ones you created as their organizer.
- Open the Attendance app
- Click Create appointment in the navigation menu
- Fill in the form:
- Name – a title everyone gets straight away: "Rehearsal", "Concert", "Board meeting"
- Description – optional, Markdown is allowed
- Start and end – the end defaults to 2.5 hours after the start
- Organizers – who looks after this appointment. You are filled in already
- Restrict access – in case only certain people should see the appointment
- Send notification – tells everyone affected right away, available only when creating
- Click Create
Editing
Open the appointment, click the three-dot menu, change it.
Copying
Copies an appointment with all its settings – handy for similar occasions.
Deleting
Removes the appointment from every view. If it is still happening, cancel it instead.
Locations
Add a place to an appointment in the Location field on the create/edit form. It is free text with autocomplete – type a few letters and it suggests rooms and venues your group has already used, so "Choir Room A" stays spelled the same way every time.
The location travels with the appointment everywhere: it shows in the appointment list and detail view, syncs through calendar import/export, and tapping it in the mobile app opens the address in Maps.
Categories
Categories classify what kind of appointment this is – Rehearsal, Concert, Board meeting, whatever fits your group. Unlike locations, categories are a fixed list an admin manages under Settings › Attendance › Categories: each one gets a name and an icon, picked from a small curated set so it looks right in every view.
Pick a category on the create/edit form; it shows as an icon on the appointment list (hover or tap for the name) and as icon plus name on the detail page. The appointment list can filter by category, and deleting a category just clears it from any appointment that used it – nothing else about that appointment changes.
Organizers
Every appointment has its own organizers. That is how you hand a single rehearsal, a sectional or a committee meeting to the person who actually runs it, without making them an administrator of the whole app.
What organizers may do with their appointment
- edit it and delete it
- see the responses, the comments and the activity history
- schedule attendees and close the inquiry
- send reminders to the people who have not answered
All of that applies to their own appointments only. Check-in stays a permission of its own, granted for the whole instance.
Who becomes an organizer
- Whoever creates an appointment is its organizer, and is filled into the field already
- In the appointment form you add further people in the Organizers field
- Anyone who may manage appointments can change the list freely; organizers can add others but only remove themselves
- Every appointment names its organizers, so everyone can see who to ask
Appointments that already existed before the update keep the person who created them as their organizer, so nothing has to be sorted out by hand. Guest accounts can never be organizers.
Recurring Appointments
Weekly rehearsals or monthly meetings do not have to be created one by one. Switch on repetition in the create form and the app generates the whole series in one go.
- Frequency – daily, weekly or monthly, with a configurable interval such as every two weeks
- Weekdays – for weekly series, pick one or several days
- End – set the date on which the series stops
All appointments of a series stay linked to each other. Members receive one notification for the whole series instead of one per appointment.
Editing and deleting a series
When you edit or delete an appointment that belongs to a series, the app asks how far the change should reach:
- This appointment only
- This and future appointments
- All appointments in this series
Moving a start or end time applies the same relative shift to every affected occurrence, so a rehearsal that moves from 19:30 to 20:00 does not have to be corrected date by date.
Importing from Calendar
Your appointments are already in the Nextcloud Calendar? Then don't type them in a second time, import them.
- When creating a new appointment, click Import from calendar
- Select a calendar from the list
- Pick out the event you want to take over
- The form comes pre-filled – adjust, save, done
Responding to Appointments
Whoever can see an appointment can also answer it:
- Open the Attendance app or use the dashboard widget
- Click on an appointment
- Choose your response:YesNoMaybe
- Add a comment if you need to, like "will be 15 minutes late", and click Save
Until the appointment itself you can change your answer as often as you like. Clicking your current answer again withdraws it: you count as unanswered once more, and you get reminders again.
You never have to open an appointment to answer it. There are three shorter ways:
From the list
The answer buttons sit on every appointment in the list.
Dashboard widget
Answering works straight from the Nextcloud dashboard, without opening the app.
Quick response links
Every notification carries links that answer in one click – secured by a personal token, no sign-in needed.
Closing Inquiries and Response Deadlines
Once planning is done, an inquiry can be closed. Closed inquiries no longer accept responses and leave the Unanswered section right away.
- Close manually – through the action menu on the appointment
- Response deadline – set a point after which the inquiry closes on its own. The deadline can be absolute or relative to the appointment start, for example two hours before
- Automatic close – appointments close by themselves once they have started
A closed inquiry sends no more reminders, and anyone following a quick-response link from an older email is told that the inquiry is closed.
Cancelling instead of closing
Closing ends the question, cancelling ends the appointment: it is not going to happen at all. A cancelled appointment stays visible so everyone sees it is off, can be reactivated later if plans change again, and cannot be edited in the meantime. It accepts no more answers on any route – app, mobile notification or quick-response link.
Scheduling Attendees
Sometimes more people say yes than you need: eight singers volunteer for the service, you need five. Scheduling is a second answer on top of the first one – the person said yes, and you say who actually gets a place. It is optional and switched off until an administrator turns it on.
Giving someone a place
- Open the appointment and go to the Response summary
- Next to every person who answered Yes there is a Schedule button
- Click it and the person is in; the button now reads Scheduled. Clicking again takes the place away
Only people who said yes can be given a place – a Maybe, a No or no answer at all cannot. Anyone who may manage appointments can schedule, as can the organizers of that appointment.
Closing tells everyone where they stand
Nobody is notified while you are still juggling names. The message goes out when you close the inquiry – and it goes to both sides:
- whoever got a place reads "You are scheduled for this appointment"
- the yes-responders who were passed over are told they are not scheduled this time, with thanks for answering – so nobody is left guessing
Before anything is sent, you are asked to confirm, with both groups listed by name – so you can check the plan one last time.
Two things that keep it quiet
- If nobody was given a place, closing sends nothing at all. An appointment you simply did not plan behaves exactly as it did before, even with the feature switched on
- Each person remembers what they were last told. Re-opening and closing again only notifies the people whose status actually changed – no second message for anyone else
What it means for the attendee
- The appointment itself says whether they hold a place, so the answer is still there long after the notification is gone
- In the calendar feed a place counts as busy and the others as free, and the title says which it is – but only once closing has made the decision final
Appointments you were not scheduled for
Once somebody else got the place, the appointment stops asking anything of you: it leaves your dashboard widget, and in the appointment list the Relevance filter has two steps for it.
- Only for me, not scheduled out – hides the appointments you were passed over for
- Only where I am scheduled in – keeps only the dates you were actually given a place in
Appointments where scheduling was never used stay visible for everyone, and an appointment you already hold a place in counts from the moment you get it, without waiting for the inquiry to close.
Unanswered Appointments
The Attendance app has a dedicated Unanswered section in the navigation that shows only appointments you have not yet responded to. Members land in this view when they open the app; users with the "Manage appointments" permission land in All appointments instead.
Wherever you are in the app, you are told how many appointments are still waiting for your response, with a link straight to them.
Appointment Visibility
Left alone, everyone on your Nextcloud sees every appointment. When you create or edit one, you can narrow that down:
- Individual people – only those you pick by name
- Groups – only members of the chosen groups
- Teams – only members of the chosen Nextcloud Teams (Circles)
Anyone left out does not see the appointment, gets no reminders, and shows up in neither the response summary nor the check-in list.
Inviting Guests Without an Account
People without a Nextcloud account can be invited straight from the appointment editor, as long as the Nextcloud Guests app is installed.
- Open the appointment editor and go to the audience field
- Type the email address of the person you want to invite
- Choose the entry Create guest account for …
The guest account is created and added to the appointment audience in a single step. From then on the person responds like everyone else.
File Attachments
Any appointment can carry files from Nextcloud Files: sheet music, the agenda, a map to the venue, the minutes of the last meeting.
- Open the appointment detail view or the edit form
- Click the attachment button
- Select a file from your Nextcloud Files using the file picker
Whoever sees the appointment can open and download the attachments. In the calendar feed they appear as links, and when you copy an appointment they come along.
Notifications and Reminders
The Attendance app uses the Nextcloud notification system (requires the Notifications app to be enabled).
New appointment notifications
Tick "Send notification" while creating – then everyone affected knows right away.
Automatic reminders
Switched on once in the admin settings, the app nudges exactly the people who haven't answered yet.
Reminder configuration (admin settings)
- Days before appointment – when the first reminder goes out (1 to 30 days, default 7)
- Frequency – how often to follow up (0 = once only, otherwise every 1 to 30 days)
Reminders stick to the visibility rules: anyone who may not see the appointment is not reminded either.
Calendar Subscription
Everyone can subscribe to their own appointments in their own calendar, be it Google Calendar, Apple Calendar, Outlook or Thunderbird.
- Open the Attendance app
- Click the Calendar subscription button (calendar icon in the navigation)
- Copy the personal feed URL, or use the quick-subscribe buttons for Google Calendar or Apple Calendar
What appears in your calendar
- every appointment that is visible to you
- your answer right in the title, for example "Rehearsal (Me: Yes)"
- a link to look at or change your answer
- the attached files as links in the description
Check-in
A response tells you who intended to come. The check-in records who actually turned up – which matters wherever attendance has to be provable.
Starting a check-in
- Open the appointment detail view
- Click Start check-in (you need the "Check-in access" permission for this)
Ticking people off
You get everyone who was invited, with their current status and a running count of present, absent and still open.
- Yes means present, No means absent
- Whole groups can be set in one go instead of person by person
- A note can be left on an individual person, for example "left early"
- Search and a filter for the open cases keep long lists manageable
Response Summary
Anyone allowed to see the response summary gets a full breakdown for every appointment.
- The split at a glance – how the answers divide across Yes, Maybe, No and no answer, and how many people were checked in, shown in proportion to each other
- Groups as sections – exactly the ones you picked in the admin settings
- Teams as sections – Nextcloud Teams come in as blocks of their own
- Counts per group for Yes, No, Maybe and no answer
- Every answer on its own, expandable with its comment
- Who is still missing, and the check-in status right next to it
Setting answers for others
Someone announces on the phone that they are coming – and never touches the app? With the permission Set responses for other users you record the answer for them, right where you already are: in the response summary.
- A small pencil next to each person opens Yes, Maybe and No – plus Clear answer where one already exists
- Clearing an answer puts the person back to "not yet responded", so automatic reminders pick them up again
- A comment the person wrote themselves survives the change
- The activity history records who set which answer for whom, so the trail stays honest
Activity History
Each appointment has an Activity history section that records what happened and when.
- Responses submitted, changed and withdrawn
- Comment updates and every check-in
- The inquiry itself: created, edited, closed and re-opened, with automatic closes marked as such. An edit lists which parts changed – name, time, description, visibility, deadline – without keeping the previous values
Every entry shows who acted, when, and where it came from – the web interface, a quick-response link in an email, an admin check-in, or a self-check-in by QR code or NFC.
Push notifications for activity
Users who may manage appointments can opt in under Settings > Personal > Attendance to be notified when team members respond, change or withdraw a response.
Deleted accounts
When a Nextcloud account is deleted, its entries are anonymised and personal details are stripped, while the chain of events stays intact.
Export
Anyone who may manage appointments can pull all the data out as an ODS spreadsheet – for the annual report, say, or a funding application.
- Open the Attendance app
- Click the Export button
- The file is saved to the Attendance folder in your Nextcloud Files
The export contains
- one row per person, with name and groups
- one column per appointment, with the response and the check-in status
- everything in your own language
Mobile App
Next to the free Nextcloud app there is a companion app for iOS and Android. It is optional – everything described above works without it. What it adds is self-check-in by QR code and NFC, push notifications, and your appointments on the phone.
Installing and signing in
- Install Attendance from the App Store or Google Play
- Enter the address of your Nextcloud server
- Sign in on the Nextcloud login page that opens. Your server hands the app its own app password; the app never sees your actual Nextcloud password
You can connect several Nextcloud accounts in the same app and switch between them.
Self-check-in on the phone
Attendees open the app and use the check-in button to scan the QR code at the entrance or hold their phone against an NFC tag. Under Settings > Self-check-in everyone picks whether that button scans a QR code, reads an NFC tag, or asks each time.
Checking in only works inside the configured window, by default from 30 minutes before the start until the appointment ends. Which groups may check themselves in is an admin setting, see Self-check-in below.
Writing NFC Tags
An NFC tag carries the check-in address, so attendees only tap their phone against it – no camera, no aiming at a printed code. You can write the tags directly with the mobile app.
Before you start
- You are signed in to the app
- Self-check-in is enabled on the server
- Your account may either manage appointments or perform check-ins – the plain self-check-in permission is not enough to write tags
- Your phone has NFC and it is switched on
- Open the appointment list and tap your avatar in the top right corner
- Choose Settings
- Scroll to Set up self-check-in and tap Write NFC tag
- Tap the Write NFC tag button; it turns into Cancel while the app waits for a tag
- Hold the tag against the back of your phone. On iPhone the system NFC sheet appears, on Android the app asks you to hold a tag to the back of the phone
- Once the app reports Tag written. Scan it to test the check-in. the tag is ready
Each tap writes a single tag. To prepare several, repeat the last two steps – there is no batch mode.
Which tags to buy
Use NXP NTAG213 tags or newer, at least 25 mm across. For metal surfaces you need on-metal tags. Avoid MIFARE Classic tags, they do not work with iPhones.
| Message | What it means |
|---|---|
| This tag is not supported. | The tag offers no NDEF storage. MIFARE Classic tags are the usual cause; use an NTAG213 or newer. |
| This tag is write-protected. | The tag has been locked, by the manufacturer or by another app. A locked tag cannot be rewritten. |
| Failed to write the tag. | Usually the tag moved away too early, or it is too small. Hold it still against the phone and try again. |
| NFC is not available. | NFC is switched off, or the device has none. On Android, turn NFC on in the system settings and try again. |
What ends up on the tag
The tag holds the check-in address of your instance, for example https://cloud.example.org/apps/attendance/self-checkin. It is the same address for every appointment; the app matches a scan to whichever appointment is currently running. There is no token and no personal data on the tag, so tags can be replaced or handed on without a second thought.
Writing tags without the app
In the admin settings you can copy the check-in URL and write it with any NFC writing app, for example NFC Tools.
Locking a tag
The Attendance app cannot make a tag permanently read-only. If you want to protect tags in a public place, lock them afterwards with a third-party app.
Admin Settings Reference
Access admin settings at Administration settings > Attendance.
Response Summary Groups and Teams
Groups: Here you decide which Nextcloud groups show up as separate sections in the response summary. Pick none and everyone lands in one long list – exactly what you want to avoid.
The setting reaches into the check-in too: only people from the selected groups appear there, plus anyone added to the appointment individually.
Teams: If you use the Nextcloud Teams (Circles) app, you can pick teams as sections as well.
Permissions
All seven permissions are controlled by assigning Nextcloud groups. If no groups are selected for a permission, all users have that permission by default – with two exceptions: Create own appointments and Set responses for other users grant nobody anything until you select at least one group.
| Permission | Controls | Default |
|---|---|---|
| Manage appointments | Create, edit, copy, delete appointments; export data | All users |
| Create own appointments | Create appointments and manage them as their organizer, in addition to the groups above | Nobody |
| Check-in access | Access the check-in interface to record actual attendance | All users |
| See response & check-in summary | View detailed response summaries and check-in statistics | All users |
| See comments | Read comments that others write on their responses | All users |
| Self-check-in | Check yourself in by scanning the QR code or tapping an NFC tag (requires the mobile app) | All users |
| Set responses for other users | Record or clear an answer on behalf of another person in the response summary | Nobody |
Example configuration for a choir
- Manage appointments: Board, Conductor
- Create own appointments: Section leaders
- Check-in access: Board, Conductor, Section leaders
- See response & check-in summary: Board, Conductor, Section leaders
- See comments: Board, Conductor
- Set responses for other users: Board, Conductor
- Self-check-in: Choir
This way, regular members can only respond and see their own responses, section leaders can organize their own sectional rehearsals, and the board and leadership have full oversight.
Self-check-in
The Self-check-in section controls who may check themselves in and how long the window stays open. It also holds the material you put up at the entrance.
| Setting | Description | Default |
|---|---|---|
| Self-check-in groups | Groups whose members may check themselves in by QR code or NFC tag | All users |
| Check-in window | How many minutes before the start attendees can check in. The window always closes when the appointment ends. | 30 minutes |
QR code
The settings show the QR code of your instance with a download button. Print it once and put it up at the entrance – it works for every appointment.
NFC URL
Copy the check-in URL to write it onto NFC tags, or write the tags directly with the mobile app. See Writing NFC tags.
Self-check-in needs the mobile app; the QR code and the NFC tags do nothing on their own.
Scheduling
Lets managers and organizers give the people who answered Yes a place in the appointment. While the switch is off, no scheduling controls are shown anywhere – not in the response summary, not on the appointment, not in the filters.
| Setting | Description | Default |
|---|---|---|
| Enable scheduling | Let managers mark yes-responders as scheduled for an appointment | Off |
Switching it on changes nothing by itself: appointments nobody was scheduled for keep behaving exactly as before. How it works day to day is under Scheduling attendees.
Reminders
| Setting | Description | Default |
|---|---|---|
| Enable reminders | Turn automatic reminders on or off | Off |
| Days before appointment | How many days before the event to start sending reminders | 7 days |
| Reminder frequency | How often to re-send (0 = once only, otherwise every N days) | 0 (once) |
For reminders to go out at all, the Notifications app has to be enabled. Only people who have not answered yet get reminded.
Calendar Sync
| Setting | Description | Default |
|---|---|---|
| Enable calendar sync | Automatically update appointments when their linked calendar events change | Off |
This feature requires Nextcloud 32 or later. Together with the organization calendar below, a full sync between Calendar and Attendance is possible – changes to a linked event flow in, and every appointment is pushed out.
Organization Calendar
The calendar subscription gives every person their own personal feed. The organization calendar is the counterpart for the whole group: the app creates and updates an event in a shared Nextcloud calendar for every appointment, so everyone sees them right in the Calendar app – no feed to subscribe to, no setup per person.
| Setting | Description | Default |
|---|---|---|
| Create calendar events for appointments | Push every appointment into the selected calendar and keep the events up to date | Off |
| Target calendar | The calendar the events are written into. Share it with your groups in the Calendar app so everyone can see the events | – |
| Sync upcoming appointments now | Creates or updates the events for all upcoming appointments by hand. Runs automatically when you enable the feature or change the calendar | – |
How the events behave
- When you select a calendar, all upcoming appointments are transferred; past appointments are left alone
- Editing, cancelling or deleting an appointment updates or removes its event automatically
- The event description carries a summary of the responses, so a glance at the calendar shows how the appointment is filling up
- Events are written using the account of the admin who set the feature up
- Changing the target calendar does not move events that were already created
Requires the Calendar app to be enabled.
Tips & Best Practices
Start small
Create a few appointments by hand first. Calendar import and sync can wait until you have time for them.
Put the time into your groups
Visibility, summaries, permissions and check-in lists all hang off the Nextcloud groups. A clean structure pays off twice over here.
Pick the groups for the summary
Without this setting you get one long, flat list of names. With it you see at a glance which voice or position is missing.
Enable reminders
Nothing lifts the answer rate as reliably as an automatic reminder. A good start: 7 days ahead, then every 2 days.
Use the dashboard widget
Anyone with the widget on their dashboard answers appointments in passing, while logging in.
As an admin you can preset it for all new accounts:
occ config:app:set dashboard layout --value="attendance-vue-widget"Subscribe to the calendar feed
Subscribe on your phone and every appointment sits in the calendar you already use, with a link straight to your answer.
When it's urgent
Need answers fast? Tick "Send notification" while creating. Then everyone knows straight away.
Attach the paperwork right away
Sheet music, agenda, a map to the venue: hang them on the appointment, and nobody has to dig through the chat beforehand.
Check-in as proof
If you have firm attendance rules, the check-in gives you a record everyone can follow – no arguing about it afterwards.
Share the load
Let section leaders and coaches create their own appointments, and add them as organizers where they run things. They get exactly the rights for their own dates – and you stop being the bottleneck.
Shield the sub-groups
Section rehearsal or committee meeting? Limit the appointment to the group it concerns. Everyone else is spared notifications that are none of their business.
Ready to get started?
The Nextcloud app is free and open source. Install it, create your groups, add your first appointment – that's all it takes.