# Attendance

> The check-in and check-out space for the physical location (coworking, headquarters, office): members tap I've arrived and I'm leaving, the team sees who's here and registers guests, and the iPad kiosk at the front desk welcomes guests with no login. Capacity, history, automatic check-out, email to the host and personal data.

The **Attendance** module records **who is in the physical space right now and who has been through it**, members or guests. It's the front desk logbook inside Memberfy: members mark their own arrival, the team marks it for anyone who forgot and registers guests, and guests announce themselves on a **kiosk** (an iPad or tablet at the entrance), without creating an account.

Each Attendance space is **one physical location**. A coworking with two houses creates two spaces, each with its own capacity, list, kiosks and history.

> [!NOTE]
> Attendance is a **record**, not access control: it doesn't open doors, doesn't use location or photos, and doesn't prove the person is really on site. For working hours, use a time-tracking system.

## What it's for

| Community | Attendance |
|---|---|
| Coworking | The front desk sees who's in the house, residents mark their arrival and guests announce themselves on the iPad |
| Association headquarters | The board knows how many people came that week and which day the house fills up |
| Company office | Who's on the floor today, without a logbook |
| Event venue | Who comes in and leaves the room, with the capacity in view |

## How it works

### What the space keeps

Each **visit** has the arrival, the departure (until they leave, they're "here now"), who it is (member or guest) and how it was marked: by the team, by the member themselves, by the kiosk or by the automatic check-out. A guest's visit also keeps the name, the company and the phone (depending on the settings) and the **host**, the member they came to see.

Every time is read in the **time zone of the community's country**: "today" and "from 9 a.m." are the house's, not the browser of whoever is looking.

### The space settings

When you create the space, and later in **Configure space** (the **Manage attendance** bar), the screen asks for these three fields:

| Field | What it does | Default |
|---|---|---|
| **Who marks arrival** | **Only the team**: members see the occupancy and their own history, and the team marks. **Members, with a button**: the member taps **I've arrived** and **I'm leaving**. Their word counts, and the screen warns there's no proof they're really there | Only the team |
| **Capacity (optional)** | Maximum number of people at the same time, from 1 to 100000. Shown as "32 of 60". It's informational: **it never blocks a check-in**. It counts members and guests | No limit |
| **Automatic check-out at** | The time, in the community's time zone, when every visit still open is closed (see [Automatic check-out](#automatic-check-out)) | 23:59 |

In the creation wizard and in **Configure space**, the **Guest kiosk** section adds four more settings (also through the [assistant](/mcp/ferramentas-presenca) or the API, the `moduleConfig.attendance` field):

| Field | What it does | Default |
|---|---|---|
| **Guest's company** | Whether the kiosk and the team's registration ask for the company: **Don't ask**, **Optional** or **Required** | Don't ask |
| **Guest's phone** | The same, for the phone. The name is always required | Don't ask |
| **Notify the person visited** | Turns the [email to the host](#email-to-the-host) on arrival on and off | On |
| **Return to the start screen after (seconds)** | 5 to 60 seconds until the kiosk goes back to the start on its own, after the confirmation or after inactivity | 10 |

### Who does what

| Action | Member | Finance | Moderator | Admin and owner |
|---|---|---|---|---|
| See the occupancy (just the number) and their own status | Yes | Yes | Yes | Yes |
| **I've arrived** and **I'm leaving** for themselves (if the space allows) | Yes | Yes | Yes | Yes |
| See **who's here**, with names | No | Yes | Yes | Yes |
| Mark arrival and departure for **any member** and for a **guest** | No | Yes | Yes | Yes |
| Fix a visit's times | No | Today's only | Today's only | Any day |
| See the space's history | No | Today's only | Today's only | Full, with a date filter |
| **Remove** a visit | No | No | No | Yes |
| See the list of kiosk devices | No | Yes, without the link | Yes | Yes |
| **Generate** and **revoke** the kiosk link | No | No | Yes | Yes |
| Set up the space | No | No | No | Yes |

The team, in this module, is the **owner, the admin, the moderator and finance**. Who gets into the space follows the rule of any space: visibility, plan and group. **Someone without access to the space can't check in, and the team can't mark them either**: the message says why (plan expired, group not included).

### What members see

The space opens on the **Attendance** tab:

- their status: *"You're here since 09:12"* or *"You're not checked in"*;
- the **I've arrived** (or **I'm leaving**) button, if the space lets members mark. If it doesn't, the screen says *"Check-in here is done by the team at the front desk."*;
- the **occupancy**, without names: *"32 of 60"* or *"32 here now"*. With nobody there: *"Be the first to check in"*.

The **My history** tab holds their visits, by day, with arrival and departure, and the **This month** summary: visits, different days and time here. A member never sees another member's name.

### What the team sees

Besides the member's two tabs, the team has **Who's here**, **History** and **Kiosk**.

- **Who's here** lists the open visits of members and guests (name, photo or initials, since when and, for a guest, the host), with search by name and the counter. From there the team **marks a member's arrival** (search by name), **marks a guest's arrival**, **marks the departure** with one tap, **fixes the times** and, admin and owner, **removes** the visit.
- **History** lists the space's visits, with filters for **Who** (members, guests), **State** (here now, closed) and dates. Moderator and finance see only today's; admin and owner see any period.

A visit closed by the automatic check-out is marked **Automatic check-out** and **doesn't count toward the average stay**. Fixing the time of one of them turns the departure into a team mark.

### Guest registered by the team

On the **Who's here** tab, **Mark guest** opens a form for people without an account: **name**, **company** and **phone** (depending on the settings) and **who the guest is visiting**, the host, who must be a member with access to the space. The guest joins the list and the occupancy, and the host gets the [email](#email-to-the-host) if the space sends it. Registering the same name with the same host again, while the visit is open, doesn't duplicate it: the screen says the guest was already checked in.

### The kiosk

The **kiosk** is a public screen for the front desk iPad or tablet. It works **without a person's login**, but **only on an authorized device**: access is a **secret link**, one per device, which the team generates and can revoke at any time. Without the link, the kiosk shows nothing, and the resident search is never open on the internet.

The kiosk takes the whole screen, with no menu, no login and no navigation, with the community's logo and colors and in the device's language.

**Members don't check in on the kiosk.** It's for guests only: letting members "search their own name" on a public screen would let someone mark for another person and would require listing every resident. Members mark with the app button (if the space allows) or ask the team.

**Guest arrival:**

1. On the start screen, tap **I'm a visitor: check in**.
2. Type the **full name** (and the company and phone, if the space asks).
3. Search for **who you're visiting**: the search starts at **3 letters**, matches the **start of any word** in the name ("Silva" finds "João Silva") and shows **at most 8 people**, with only name and photo or initials, never email, phone, role or plan. Only people with access to the space show up.
4. Read the privacy notice and tap **Confirm**: *"Maria Souza is visiting João Lima"*.
5. The screen says *"Welcome, Maria!"* and, when the notice to the host went out, that **the host was notified** (if the notice is off or the limit was reached, that line doesn't appear). Then it **goes back to the start on its own**. If someone stops halfway, it also goes back and **erases what was typed**.

**Guest departure:**

1. On the start screen, tap **I'm leaving: check out**.
2. The screen lists only the **guests with an open check-in today**, with the shortened name ("Maria S.") and the arrival time, and has a **search field** to filter by name.
3. The guest taps their own row and confirms (*"Check out Maria S.?"*). The screen goes back to the start.

The kiosk **doesn't show who else is in the house**: no members, no guests who already left, and no one's host, company or phone.

> [!WARNING]
> Whoever has the kiosk link registers guests and sees the shortened names of today's guests. Treat it like a password.

## Step by step

### Create the space

*Role: owner or admin.*

1. In **Add Space**, open the **Coworking** tab and choose the **Attendance** module.
2. In **Who marks arrival**, choose **Only the team** or **Members, with a button**.
3. If you want, fill in the **Capacity** and adjust **Automatic check-out at**.
4. Set the visibility and create the space. For a second location, create a second space.

To change the settings later, use **Configure space** on the **Manage attendance** bar.

### Tap I've arrived and I'm leaving

*Role: any member, if the space allows.*

1. Open the **Attendance** space.
2. Tap **I've arrived**. The screen now shows *"You're here since 09:12"*.
3. When you leave, tap **I'm leaving**. The visit closes with its duration.

Tapping **I've arrived** twice doesn't create two visits.

### Mark a member's arrival

*Role: team (owner, admin, moderator or finance).*

1. On the **Who's here** tab, tap **Mark arrival**.
2. Search for the member by name (2 letters or more) and tap **Check in** on them.
3. For the departure, tap **Mark departure** on their row.

### Fix the times

*Role: team. Moderator and finance only today's visits; admin and owner, any day.*

1. On the visit's row, choose **Fix times**.
2. Adjust the day and time of the **Arrival** and the **Departure** (on the community's clock). To close an open visit, fill in the departure.
3. Tap **Save**. The departure can't be before the arrival or in the future, and the fix goes into the [activity log](/membros/registros-de-atividades) with who made it.

### Remove a visit

*Role: owner or admin.*

On the visit's row, **Remove visit** and **Remove** to confirm. The visit leaves the lists and the counts, and the removal stays in the activity log. This doesn't delete the member.

### Register a guest as the team

*Role: team.*

1. On the **Who's here** tab, tap **Mark guest**.
2. Fill in the name (and the company and phone, if the space asks) and search for the host.
3. Tap **Check in guest**.

### Generate the kiosk link

*Role: owner, admin or moderator.*

1. On the **Kiosk** tab, name the device (for example, *"Reception tablet"*) and tap **Generate link**.
2. The screen shows the link **only once**, with the **Copy** button and the warning that it's secret. Copy it and tap **Done**.
3. Open the link on the front desk iPad or tablet. The device keeps the authorization, removes the code from the address on screen and, next time, goes straight into the kiosk. Reloading the page keeps the kiosk.

If you lose the link, **revoke the device and generate another**: Memberfy keeps only a fingerprint of the code, never the link. Create one link per device or location; there's no limit.

**On the iPad**, keep the kiosk as an app: with the link open in Safari, tap **Share** and **Add to Home Screen**. The icon opens the kiosk full screen. To keep the iPad from leaving the kiosk, turn on **Guided Access** (**Settings** › **Accessibility**).

### See and revoke devices

*Role: seeing the list, the whole team (finance without the link); revoking, owner, admin or moderator.*

The **Kiosk** tab lists each device with its name, who created it, its **last use** (or *"Never used"*) and its state, **Active** or **Revoked**. Odd use (a device nobody should have) is a reason to revoke.

1. On the device's row, tap **Revoke**.
2. Confirm with **Revoke**.

Revoking takes effect **right away**: the device's next tap shows *"This device is not authorized. Ask the team for a new link."* Visits already recorded stay as they are. A revoked link can't be reactivated: generate another.

## Email to the host

When a guest checks in (on the kiosk or through the team), the **host** gets an email: *"Maria Souza has arrived to see you"*, with the name, the company (if given), the arrival time and the location. The guest's phone isn't in the email.

- The time is **in the community's time zone**, in the host's language.
- The email goes through a **queue**: the guest doesn't wait for it to send.
- There's a **cap of 10 emails per hour for each host**, so nobody uses the kiosk to send spam. Past the cap, the visit is recorded normally and the email isn't sent.
- You can turn the notice off in the space settings (see [The space settings](#the-space-settings)).

Member check-in and check-out don't send an email or a notice.

## Automatic check-out

So a visit left open by mistake doesn't turn into a 40-hour stay, the system checks all open visits, of members and guests, **every 15 minutes**. Once the **Automatic check-out at** time has passed (in the community's time zone), the visit is closed with the departure at that time on the day of arrival. If the arrival came after that time, it closes at the end of that day.

A visit closed this way is marked **Automatic check-out**, doesn't count toward the average stay and doesn't send a notice. The owner or the admin can fix the departure; the team, today's.

## Data and privacy

Attendance keeps **where and when a person was** (member) and **the name, and if the space asks the company and phone, of a guest without an account**. That's personal data. What applies:

- **The community is the data controller**; Memberfy is the processor. It's up to the community to define the purpose and to answer anyone who wants to know what was kept.
- **Nothing is deleted.** Member and guest visits are kept. Removing a visit takes it out of the lists and the counts, and the removal stays in the activity log.
- **No location, photo, ID or biometrics.** Company and phone are optional, depending on the settings.
- **Who sees what**: members see only their own visits and the occupancy; the team sees who's here; the full history belongs to the owner and the admin. The kiosk shows only today's guests with an open check-in, with shortened names.
- **The notice on the kiosk**: before confirming, the guest reads that their name and the details they entered are recorded for the visit and are kept.
- **Residents** may have their name shown in the kiosk's host search (only name and photo, of people with access to the space).

> [!TIP]
> It's a good idea to **post a notice at the front desk**, near the iPad, saying whatever the community decides, for example that visitors are recorded and the data stays with the community, and to let residents know their name may show up in the kiosk search. Memberfy doesn't replace your community's legal advice.

## Examples

**Coworking with a front desk.** Space **Attendance · Downtown**, capacity 60, **Only the team** marks. The front desk opens **Who's here** and registers the residents as they arrive. An iPad at the entrance runs the kiosk: the guest types their name, searches for the resident they're visiting and the resident gets the email. At 23:59 the system closes whatever is still open.

**Association with a button.** Space **Headquarters**, **Members, with a button**. Each member taps **I've arrived** on the way in. The board looks at a month of **History** and sees which days the headquarters fills up.

**Two houses.** Two spaces, **Attendance · Downtown** and **Attendance · South Side**, each with its own kiosk. The same member can have an open visit in each one.

## Common errors and how to fix them

| Message | What to do |
|---|---|
| *Self check-in is not enabled in this space. Ask the team to mark your arrival.* | The space is set to **Only the team**: ask the front desk, or switch to **Members, with a button** |
| *You cannot check in here because you do not have access to this space.* | Check the plan, the group and the space's visibility |
| *This member cannot be checked in because they do not have access to this space (plan expired or group not included).* | Sort out the member's access before marking them |
| *There is no open visit to check out* | The person already left (or the automatic check-out closed it). See **History** |
| *The exit cannot be before the entry* / *The date cannot be in the future* | Fix the time you entered |
| *Only an owner or admin can correct a visit from another day* | Ask the owner or the admin |
| *This device is no longer authorized* | The link was revoked: generate another on the **Kiosk** tab |
| *This device has no link yet. Open the kiosk link the team generated.* | Open, on the device, the full link the team copied |
| *Too many attempts. Try again in N seconds.* | Wait the time shown |
| *Nobody found. Try other letters.* (host) | The resident must have access to the space; try the start of the name |

## Frequently asked questions

**Does the guest need an account?**
No. They announce themselves on the kiosk, or the team registers them, with just the name (and the company and phone, if the space asks).

**Can members use the kiosk?**
No. Members mark with the **I've arrived** button (if the space allows) or ask the team.

**I lost the kiosk link. Can I see it again?**
No: it shows up once. Revoke the device and generate another.

**Does the capacity stop anyone from coming in?**
No. It's informational; check-in is still allowed after it's reached, and the screen warns that the capacity was reached.

**Can I have more than one kiosk?**
Yes, one per device or location, with no limit.

**Can the moderator and finance fix the history?**
Only today's visits. Removing, and fixing any day, belong to the owner and the admin.

**Is Attendance for tracking working hours?**
No. It records attendance and occupancy, with no timesheet.

**Does the guest get an email?**
No: the host does.

## Through the assistant

The assistant shows the occupancy, marks arrival and departure (yours, a member's or a guest's), lists who's here and the history, fixes and removes visits, and manages kiosk links. See [Tools · Attendance](/mcp/ferramentas-presenca).

## In the API

With `X-CommunityId` in the header: `GET /api/attendance/spaces/{spaceId}/overview` (occupancy and the open visit of whoever asks), `POST .../check-in`, `POST .../check-out`, `POST .../guest-check-in`, `GET .../present`, `GET .../visits`, `GET /api/attendance/me/visits`, `PATCH` and `DELETE /api/attendance/visits/{visitId}`, and devices at `GET`, `POST` and `DELETE .../kiosks`. The kiosk calls `/api/attendance/kiosk/*` (`session`, `hosts`, `check-in`, `open`, `check-out`) with the `X-Kiosk-Token` header, without `X-CommunityId`. The full reference, generated from the API, appears in the [API reference](/api/introducao) when Attendance reaches communities.

## Related

- [Modules](/conceitos/modulos)
- [Roles and permissions](/conceitos/papeis-e-permissoes)
- [Visibility and access](/conceitos/visibilidade-e-acesso)
- [Activity logs](/membros/registros-de-atividades)
- [Create and organize spaces](/espacos/criar-e-organizar-espacos)
