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
No account? Guests work too. With the Nextcloud Guests app installed, organizers can invite people without a Nextcloud account directly from the appointment editor by typing an email address. The guest account is created in a single step, and the person responds like everyone else.

Requirements

  • Nextcloud 32 to 34
  • PHP 8.1 or later

Installation

Install the Attendance app from the Nextcloud App Store:

  1. Log in to your Nextcloud as an administrator
  2. Go to Apps (top-right user menu or via the app switcher)
  3. Search for Attendance
  4. Click Download and enable

Alternatively, if you have shell access:

php occ app:install attendance
php occ app:enable attendance

Setup 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:

  1. Response summary groups – which groups show up as their own sections, for example Soprano, Alto, Tenor, Bass.
  2. Permissions – who may manage appointments, check people in, see the summaries and read comments.
  3. Reminders – switch on automatic reminders and set when and how often they go out.
  4. 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.

  1. Open the Attendance app
  2. Click Create appointment in the navigation menu
  3. Fill in the form:
    • Name – a title everyone gets straight away: "Rehearsal", "Concert", "Board meeting"
    • Description – optional, Markdown is allowed
    • Category – optional; a category can bring a template that fills in the form
    • Start and end – the end defaults to 2.5 hours after the start
    • All day – for whole days: you pick a start date and an end date, without times
    • Attendance limit & waitlist – optional maximum number of attendees, see Attendance limit and waitlist
    • Answer options – whether “Maybe” is offered as an answer for this appointment
    • 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
  4. 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.

While you edit, the bar at the bottom of the form shows Unsaved changes next to Cancel and Save. If you leave the form with changes that are not saved – by navigating inside the app, or by closing or reloading the tab – you are asked first; in the app you choose between Discard changes and Keep editing.

Categories and Templates

Categories sort your appointments – rehearsal, concert, board meeting – and give every kind its own icon. Administrators create them under Categories & templates. In the form you pick one in the Category field, and in the appointment list you can filter by it. The list shows it as an icon (hover or tap for the name); deleting a category only clears it from the appointments that used it.

A category can also carry a template: the values a new appointment of that kind starts with. A template can set the name, description, location, response deadline, maximum attendees with waitlist, “Maybe”, the notification and the access restriction.

  • Choosing the category prefills the fields that are still empty when you create or copy an appointment. What you typed yourself stays. If you switch to another category, a field that still holds the old template’s value takes the new one
  • Apply template appears under the category field as soon as the form differs from the template. It writes the template’s values into the form and replaces what is there – but only the fields the template actually sets
  • Every value stays changeable for each single appointment

Attendance Limit and Waitlist

A room that seats 30, a workshop with 12 places: in the section Attendance limit & waitlist of the form you enter the Maximum attendees. Leave the field empty and the appointment stays unlimited. Everyone who answers Yes takes a spot, in the order of the answers. Once the limit is reached the appointment is full.

Below the number, the switch Offer a waitlist when full appears; it is on for a new appointment. It decides what a full appointment does with further Yes answers.

With a waitlist

The Yes button reads Join waitlist. Whoever joins sees “You are number 2 on the waitlist”, and the response summary marks the person as Waitlist.

Without a waitlist

The answer buttons disappear and the appointment says “No spots available at the moment”. People who already hold a spot are not affected.

When a spot frees up

  • If somebody changes a Yes to No or withdraws it, the next person in line moves in on their own and is notified: “A spot came free for …”. Joining the waitlist itself sends no notification
  • The activity history records the move, so “why am I suddenly in?” has an answer
  • When you close the inquiry, everyone still waiting is told that no spot came free and that they no longer need to keep the date free
  • Whoever withdraws their Yes and says Yes again later joins at the back of the line. Saving the same Yes again, for example with a new comment, keeps the place

Good to know

  • No “Maybe” with a limit: as long as a limit is set, the section Answer options is hidden and “Maybe” is not offered – a Maybe would keep a spot from somebody who commits
  • Organizers and managers who answer on somebody’s behalf may go past the limit
  • Lowering the limit later never takes a spot away from someone who already has one

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
Letting others create appointments: the permission Create own appointments hands appointment creation to a group of your choice – section leaders, coaches, the events team. It grants nobody anything until you select at least one group, so nothing changes on an existing instance. See Permissions.

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.

All day appointments can repeat as a series too.

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.

  1. When creating a new appointment, click Import from calendar
  2. Select a calendar from the list
  3. Pick out the event you want to take over
  4. The form comes pre-filled – adjust, save, done
Full sync possible: With calendar sync switched on in the admin settings, later changes to the calendar entry travel straight into the linked Attendance appointment. And with the organization calendar the app pushes the other way too, keeping a shared calendar up to date with every appointment – so Calendar and Attendance stay in step in both directions.

Responding to Appointments

Whoever can see an appointment can also answer it:

  1. Open the Attendance app or use the dashboard widget
  2. Click on an appointment
  3. Choose your response:YesNoMaybe“Maybe” is only there where the appointment offers it, see Answer options. On a full appointment with a waitlist the Yes button reads Join waitlist.
  4. 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

  1. Open the appointment and go to the Response summary
  2. Next to every person who answered Yes there is a Schedule button
  3. 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.

Plan before you close: a closed inquiry no longer lets you change who is scheduled, because the people involved have already been told. If you have to move a place afterwards, re-open the inquiry, change it, and close it again.

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 Scheduling filter has two steps for it.

  • Not scheduled out – hides the appointments you were passed over for
  • Only scheduled – 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.

Off by default: scheduling is an instance-wide opt-in. An administrator switches it on under Administration settings > Attendance > Scheduling; while it is off, no scheduling controls appear anywhere. See Scheduling in the admin reference.

Unanswered Appointments

The Attendance app has a dedicated Unanswered section in the navigation that shows only appointments you have not yet responded to. Where you land when you open the app is explained under Appointment list and filters.

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 List and Filters

The navigation has separate views of the appointments:

  • My appointments – the upcoming appointments you are invited to or organize
  • All appointments – everything you may see, upcoming and past together
  • Past appointments and Unanswered

Who may see appointments beyond their own is a permission: See all appointments. Managers always hold it. Whoever has it lands in All appointments when opening the app, everyone else in My appointments. Without the permission both views show only your own appointments, and an appointment restricted to other people stays hidden – see Appointment visibility.

Filters

  • Your response – Yes, Maybe, No or No response
  • Inquiry status – Opened, Closed or Cancelled
  • My role – I am an attendee (invited, whatever you answered), I am an organizer, or Not involved (you only see it through a permission). The role filter only appears when your appointments differ in role – a member who is simply invited everywhere gets none
  • Scheduling – only when scheduling is switched on
  • Location and Category, plus the search field above the list

The active filters are listed above the results and can be removed one by one. The list is filtered on the server and loads in pages: more appointments appear as you scroll, or with Load more.

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.

One exception: the permission See all appointments lifts the restriction for whoever holds it (managers always do). They see every appointment in the list, but are not asked to answer one that is not addressed to them.

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.

  1. Open the appointment editor and go to the audience field
  2. Type the email address of the person you want to invite
  3. 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.

Guests stay guests: guest accounts appear in a separate "Guests" section everywhere and can never receive the permissions to manage appointments, create appointments, or check other people in – not even if their group is selected for one of them. This is enforced on the server.

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.

  1. Open the appointment detail view or the edit form
  2. Click the attachment button
  3. 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.

  1. Open the Attendance app
  2. Click the Calendar subscription button (calendar icon in the navigation)
  3. 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
Treat the URL like a password: it holds your personal token. If it ends up in the wrong hands, click Regenerate URL. The old one dies immediately, and you paste the new one into your calendar app once.

Vacation

Away for two weeks in August? Record it once and the app takes it into account: appointments created for that time start with a “No” from you, and the mobile app tells organizers who is away.

Recording your vacation

  1. Open Settings > Personal > Attendance and go to My vacations (in the mobile app: Settings > Vacation > My vacations)
  2. Click Add vacation, pick From and To and, if you like, write a Note (optional)
  3. Save. You can edit or delete an entry at any time

What it does

  • New appointments: if you are invited to an appointment that is created while you are on vacation, your answer starts as “No”. You can change it like any other answer, and the activity history shows that it was set because of your vacation. Appointments that already exist are not touched by this
  • Appointments that already exist: after you save a vacation, or change its days, the app asks Set appointments to “No”?. Set to “No” answers every upcoming appointment in that period that you have not answered yet; Leave open leaves them as they are. Answers you have already given are kept
  • Hint for organizers: when you create an appointment in the mobile app, a hint shows how many of the invited people are on vacation at that time; tap it to see who. Their answer defaults to “No”
Who sees what: the hint for organizers shows only the name, never the period or the note. Period and note are visible only to members with access to the vacation calendar – the team overview below, and the shared calendar if your administrator switches on the vacation calendar. Keep notes free of anything you would not want a colleague to read.

Team overview

Whoever holds the permission See everyone’s vacation gets a Team vacation calendar right below My vacations (in the mobile app: Settings > Vacation > Team vacation calendar). It lists, month by month, who is away when – with the note, for the next 180 days.

Off by default: nobody has this permission automatically, not even administrators or managers, and guest accounts can never get it. Under Permissions you set it to all users, specific groups or nobody.

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

  1. Open the appointment detail view
  2. 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
Off by default: nobody has this permission automatically, not even managers. Select the groups you trust with it under Permissions first.

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.

  1. Open the Attendance app
  2. Click Export in the navigation
  3. Choose which appointments go in and which columns you want, then click Export
  4. The file is saved to the Attendance folder in your Nextcloud Files

The export contains

  • one row per person, with name and, if you like, groups
  • one column per appointment, with the response, the check-in status and, if you like, the comment
  • everything in your own language

Which appointments

  • All appointments
  • Selected appointments – tick them one by one
  • Appointment series – pick one or more series; running and upcoming ones come first, finished ones sit in a collapsed list, and a search narrows long lists
  • Date range – current month, quarter or year, or a custom range

Which columns

  • Columns per appointment: RSVP, Check-in and Comments – at least one. RSVP and Check-in are on at first, Comments are off
  • Add a group column next to the names – on at first
  • Add a row with the organizers of each appointment – off at first

A single appointment can be exported on its own too: choose Export in its three-dot menu and pick the same columns.


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. On Android it is also available from F-Droid, with push via UnifiedPush instead of Google.

The app is free for 30 days; after that it runs on a yearly subscription: either everyone using it needs a personal license, or the instance needs one license for the whole group, priced by member count. More about the mobile app

Installing and signing in

  1. Install Attendance from the App Store or Google Play – on Android also from F-Droid
  2. Enter the address of your Nextcloud server
  3. 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.

What the app can do

The mobile app is more than a check-in remote. With Attendance 1.54 or later on your server it also covers:

  • answering appointments, with Maybe only where the appointment offers it
  • Attendance limit and waitlist: Join waitlist, your place in line, and how many spots are taken
  • creating appointments, including All day, the attendance limit, answer options and the category templates with Apply template
  • Vacation: your own periods, the question about existing appointments, the hint while creating, and the team overview for those who may see it
  • the views My appointments and All appointments and the My role filter, see Appointment list and filters

On an older server the app simply leaves out what the server does not know yet.

Android without Google: F-Droid and UnifiedPush

For phones without Google services there is a build of the app with its own F-Droid repository and push notifications through UnifiedPush.

Installing via F-Droid

  1. Open this link on your phone with the F-Droid app installed, or add the same address under Settings > Repositories in F-Droid:
    https://fdroid.anwesenheit.app/repo?fingerprint=4E1BFBC669A19270E83E6FF960B1F9C9E2AF6C824DE79D975888B36C85F33D0E
  2. Check that the fingerprint F-Droid shows is 4E1BFBC669A19270E83E6FF960B1F9C9E2AF6C824DE79D975888B36C85F33D0E and confirm
  3. Find Attendance in the repository and install it
No in-app purchases: the F-Droid build has no Google Play billing. After the 30-day trial a subscription is arranged by invoice directly with the developer; the License screen in the app has the details.

Push notifications via UnifiedPush

  • UnifiedPush needs a distributor app on the phone, for example ntfy. Install it first; the Attendance app registers with it on its own
  • There is no setting in the app to choose a distributor. It uses the one already selected on the device; if several are installed and none is selected, it takes the first one it finds
  • The F-Droid build uses only UnifiedPush and contains no Firebase. Without a distributor there is no push until you install one
  • The Google Play build prefers UnifiedPush whenever a distributor is installed and otherwise falls back to Google’s push service
  • Where UnifiedPush is in use, the app settings say so: “Notifications are delivered via UnifiedPush — no Google Play required”

UnifiedPush is an Android feature; the iPhone app does not use it. Push also has to be enabled by your administrator on the server.

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
  1. Open the appointment list and tap your avatar in the top right corner
  2. Choose Settings
  3. Scroll to Set up self-check-in and tap Write NFC tag
  4. Tap the Write NFC tag button; it turns into Cancel while the app waits for a tag
  5. 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
  6. 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.

MessageWhat 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.

Categories & Templates

Categories classify appointments and carry an icon. A category can also carry a template: choosing it for a new appointment fills in the fields you set there.

  • Type a name under New category name and click Add category
  • The list shows each category with its icon; the badge Template marks the ones that carry a template. The pencil (Edit category) opens the edit dialog, the bin (Delete category) removes the category – appointments that use it keep their other data and lose only the category

The edit dialog

Category & icon

The icon, picked from a grid, and the Category name.

Template for this category

Appointment name, description, location, response deadline (a number of minutes, hours, days or weeks before each appointment starts), maximum attendees with the waitlist switch, “Maybe”, Send notification and Restrict access.

Fields you leave empty, and switches you leave at their usual setting, are not prefilled. Every value can still be changed for each appointment.

Permissions

Each of the eleven permissions is set to All users, Specific groups (Nextcloud groups you choose) or Nobody. Most start with all users. Five grant nobody anything until you open them up: Create own appointments, Set responses for other users, See everyone’s statistics, See all appointments and See everyone’s vacation.

PermissionControlsDefault
Manage appointmentsCreate, edit, copy, delete appointments; export dataAll users
Create own appointmentsCreate appointments and manage them as their organizer, in addition to the groups aboveNobody
Check-in accessAccess the check-in interface to record actual attendanceAll users
See response & check-in summaryView detailed response summaries and check-in statisticsAll users
See commentsRead comments that others write on their responsesAll users
Self-check-inCheck yourself in by scanning the QR code or tapping an NFC tag (requires the mobile app)All users
Set responses for other usersRecord or clear an answer on behalf of another person in the response summaryNobody
See all appointmentsSee every appointment on the server in the list, also those restricted to other people – but answer only the ones addressed to you. Managers always hold it. See Appointment list and filtersNobody
See everyone’s vacationThe team vacation calendar: the vacation periods of all members, including their notesNobody
See response countsHow many people answered Yes, No or Maybe, without names. Anyone who sees the detailed summary sees the counts tooAll users
See everyone’s statisticsThe evaluation of responses and attendance across all appointments, per person. Without it, users see only their own numbersNobody
Guest accounts: Guests can never receive Manage appointments, Create own appointments, Check-in access, Set responses for other users, See all appointments, See everyone’s vacation or See everyone’s statistics, even if their group is selected for one of them. This is enforced on the server and cannot be overridden through group settings.

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
  • See all appointments: Board, Conductor
  • See everyone’s vacation: 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.

SettingDescriptionDefault
Self-check-in groupsGroups whose members may check themselves in by QR code or NFC tagAll users
Check-in windowHow 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.

SettingDescriptionDefault
Enable schedulingLet managers mark yes-responders as scheduled for an appointmentOff

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.

Answer Options

Decides what every appointment offers unless its organizer decides otherwise.

SettingDescriptionDefault
Offer “Maybe” as an answerAppointments offer Yes, Maybe and No rather than just Yes and NoOn

An organizer can override this per appointment in the section Answer options of the form, and a category template can preset it. With an attendance limit – whatever is set here – “Maybe” is never offered.

Reminders

SettingDescriptionDefault
Enable remindersTurn automatic reminders on or offOff
Days before appointmentHow many days before the event to start sending reminders7 days
Reminder frequencyHow 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

SettingDescriptionDefault
Enable calendar syncAutomatically update appointments when their linked calendar events changeOff

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.

SettingDescriptionDefault
Create calendar events for appointmentsPush every appointment into the selected calendar and keep the events up to dateOff
Target calendarThe calendar the events are written into. Share it with your groups in the Calendar app so everyone can see the events–
Sync upcoming appointments nowCreates 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
Visibility: events are created for all appointments, regardless of their visibility restrictions. Whoever the calendar is shared with sees every event – keep that in mind if some appointments are meant for a smaller circle.

Requires the Calendar app to be enabled.

Vacation Calendar

Writes the vacation periods of all members into a shared Nextcloud calendar, so everybody it is shared with sees in the Calendar app who is away.

Privacy: a vacation period shows when somebody is away, and its note often says why. Everyone you share this calendar with sees both, for every member. Share it only with people who should know, and tell your members before you enable it.
SettingDescriptionDefault
Write vacations into a calendarSwitches the feature onOff
Target calendarThe calendar the events are written into. You pick it from the writable calendars of the Calendar app–
Sync vacations nowWrites the events by hand–

How the events behave

  • Use a calendar of its own and share it read-only in the Calendar app. The app writes the events; changes made in the Calendar app are overwritten
  • Every event is a whole-day entry named after the member, with the note as description
  • Vacations that have already ended are not transferred
  • Events are written using the account of the admin who set the feature up

Who sees the vacation list inside the app is set separately, under the permission See everyone’s vacation. 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.