# Parcels

> The space that records letters and packages arriving at the physical location (coworking, headquarters, office): the front desk registers them with a photo and locker, the member is notified by email and picks them up, and the team follows the queue. Roles, email, locker code and personal data.

The **Parcels** module records **every letter or package that arrives at the physical space for a member**. It's the front desk notebook and WhatsApp group inside Memberfy: the team registers in seconds (who it's for, what it is, a photo, where it was kept), the member **is notified by email**, and the parcel is closed when it's picked up, with the date and who picked it up.

Each Parcels space is **one physical location**. A coworking with two houses creates two spaces, each with its own queue and history.

## What it's for

| Community | Parcels |
|---|---|
| Coworking | The front desk registers the Amazon package and the resident is notified right away, with the photo |
| Association headquarters | Members' letters and documents, with who picked them up and when |
| Company office | Deliveries for people and for the companies on the floor, with no paper notes |
| Office building | Numbered lockers, with the pickup code visible only to the owner of the parcel |

## How it works

### What the parcel keeps

Each parcel has the **recipient** (a person or a company that is a member of the community and has access to the space), the **kind** (**Letter**, **Package** or **Other**, with a short description), the **sender**, the **carrier** and the **tracking code** (all optional), a **note**, up to **5 photos**, the **place** (locker, shelf or front desk) and, if the space uses it, the locker's **pickup code**.

It goes through four statuses:

| Status | What it means |
|---|---|
| **Waiting for pickup** | It arrived and is being kept |
| **Picked up** | Someone collected it. When, how and by whom are recorded |
| **Returned** | It went back to the sender, with the reason |
| **Discarded** | Nobody picked it up and the team disposed of it, with the reason |

Closing a parcel **deletes nothing**: the record, the photos and the reason stay in the history. Every time is read in the **time zone of the community's country**.

### The space settings

When creating the space, and later in **Configure space** (the **Manage parcels** bar), the screen asks for:

| Field | What it does | Default |
|---|---|---|
| **Where parcels are kept** | **At the front desk**: the team keeps everything at the front desk and the locker field is hidden. **In a locker or on a shelf**: the team writes where it left the parcel ("locker 12", "shelf B") and the member sees that place | At the front desk |
| **Locker pickup code** | Only with a locker. The team can set a code per parcel; only the recipient sees it | Off |
| **Photo in the notice e-mail** | The e-mail to the member carries a thumbnail of the photo. Turn it off if photos may show an address or personal data | On |
| **Require team confirmation** | Off, the member confirms their own pickup with the **I picked it up** button. On, only the team marks the pickup | Off |

The screen also shows the notice *"This module stores photos and the sender's name for each parcel. Let your community members know."*

### Who does what

The team, in this module, is the **owner, the admin, the moderator and finance**.

| Action | Member | Finance and moderator | Admin and owner |
|---|---|---|---|
| See **their own** parcels and their locker code | Yes | Yes | Yes |
| **I picked it up** on their own parcel (if team confirmation is off) | Yes | Yes | Yes |
| See the **queue** of all parcels | No | Yes | Yes |
| **Register**, **edit**, handle **photos**, **mark pickup** and **return** | No | Yes | Yes |
| **Discard**, **reopen** and **delete** a record | No | No | Yes |
| Configure the space | No | No | Yes |

Who gets into the space follows the rule of any space (visibility, plan and group). A parcel can only be registered for someone who has access to the space.

> [!NOTE]
> The **locker code** is read only by the recipient, in **My parcels** and in the email. No team screen shows it: the team only sees that *there is a code*, and can set it again, but never read it. It stops working when the parcel is picked up, returned or discarded.

### What the team sees

The space opens with two tabs: **Queue** and **My parcels**.

- The **Manage parcels** bar shows how many are **waiting for pickup** and how many are **stalled**, and the **Receive a parcel** button.
- The **Queue** lists the parcels with a thumbnail photo, recipient, kind, sender, place and how long ago it arrived (*"Arrived today"*, *"Arrived 2 days ago"*). The filters are **Pending**, **Stalled**, **Picked up**, **Returned**, **Discarded** and **All**, plus the kind and a search by name, sender or tracking.
- The **Stalled for N days** badge marks a parcel that has waited longer than the space's deadline (3 days, if the space doesn't set another).
- The **No e-mail notice** badge appears when the recipient couldn't be notified (no valid email or already out of the community). The parcel is registered all the same, and the screen shows **Former member** when that's the case.
- The detail shows the photos, the history (received on, registered by, email notice, how it was picked up) and the actions.

### What the member sees

In **My parcels** (the space's tab, and the page with that name):

- **Pending**: one card per parcel, with the space name, the photo, the kind, *"From {sender}"*, how long ago it arrived, *"Pick up at: {place}"* (or *"Pick up at the front desk"*) and the **pickup code**, hidden behind the **Show** button. If team confirmation is off, the **I picked it up** button closes the parcel; if it's on, the screen says the pickup is confirmed by the team, at the front desk.
- **History**: pickups (*"Picked up on … by …"*), returns and discards.

The member sees **only their own**. With no parcels, the screen says *"Nothing for you right now"*.

## Step by step

### Create the space

*Role: owner or admin.*

1. In **Add Space**, open the **Coworking** tab and choose the **Parcels** module.
2. In **Where parcels are kept**, choose **At the front desk** or **In a locker or on a shelf**. With a locker, decide whether there will be a **Locker pickup code**.
3. Leave **Photo in the notice e-mail** on or turn it off; turn on **Require team confirmation** if only the team should mark the pickup.
4. Set the visibility and create the space. For another location, create another space.

To change it later, use **Configure space** in the **Manage parcels** bar.

### Receive a parcel

*Role: team.*

1. Tap **Receive a parcel**.
2. In **Recipient**, type the start of the name (at least 3 letters). Only people and companies with access to the space appear.
3. Choose the **Kind**. For **Other**, describe it (for example, *"wine box"*).
4. If you want, fill in **Sender**, **Carrier**, **Tracking code** and **Note** (*"fragile"*, *"heavy"*).
5. Add up to 5 **Photos**, with **Take a photo** or **Choose from gallery** (JPG, PNG or WebP).
6. If the space uses a locker, fill in **Place (locker)**; empty means *"at the front desk"*. With a code, fill in **Pickup code** (4 to 12 characters).
7. Tap **Save**, or **Save and receive another** to clear the form and keep going.

The member receives the email shortly after (see [Email to the member](#email-to-the-member)).

**Duplicate warning:** if there's already a parcel of the same kind, for the same person and with the same tracking code in the last 24 hours, the screen asks *"Register another anyway?"*. Tapping **Save** twice doesn't create two parcels.

### Edit a parcel and handle photos

*Role: team.*

1. Open the parcel and tap **Edit**.
2. Fix what was typed wrong and tap **Save**. The recipient can't change: to change it, delete the record and register again.
3. For the locker code, fill in **New pickup code**; empty keeps the current one. There's no way to read the code already set.
4. For photos, use **Add photo**, **Replace photo** and **Remove photo**. Removing asks for confirmation and deletes the photo and its file for good; the parcel stays registered.

A parcel that's already closed can only be corrected by an owner or admin, and never the code.

### Mark the pickup

*Role: team.*

1. Open the parcel and tap **Mark pickup**.
2. In **Who picked it up**, choose **The recipient** (with the name of the person who came, optional) or **Someone else** (the name is required).
3. Tap **Confirm pickup**. The locker code stops working.

Two people marking at the same time close the parcel only once.

### Return to sender

*Role: team.*

In **Return to sender**, enter the **Reason** (for example, *"returned to sender"*, *"refused"*) and tap **Return**. The parcel becomes **Returned**.

### Discard, reopen and delete

*Role: owner or admin.*

- **Discard parcel**: for one that nobody picked up. Requires the **Reason**; it becomes **Discarded**.
- **Reopen parcel**: undoes a pickup, return or discard made by mistake. Requires the **Reason** and the parcel goes back to **Waiting for pickup**. The previous code is already gone: set another under **Edit**, if needed.
- **Delete record**: only for a parcel registered by mistake (for the wrong person). It leaves the lists and the photos are deleted; who deleted it and why stay in the [activity log](/membros/registros-de-atividades). To close a parcel for real, use pickup, return or discard.

### Pick up your own parcel

*Role: any member, if the space doesn't require team confirmation.*

1. Open **My parcels**.
2. On the parcel, see the place and, with the **Show** button, the locker code.
3. After collecting it, tap **I picked it up** and **Yes, I picked it up**. The pickup is recorded as confirmed by the member.

## Email to the member

When the parcel is registered, the recipient receives an email **through the email queue**, never during registration:

- the subject doesn't say what arrived;
- the body carries the kind, the sender (if any), **where to pick it up**, the **locker code** (if any) and the time, in the community's time zone;
- with **Photo in the notice e-mail** on, a **thumbnail** of the photo, in a link that's valid for **72 hours** (the full photo stays in the app, behind a login);
- the button to open **My parcels**.

If the recipient has already left the community or doesn't have a valid email, nothing is sent and the queue shows **No e-mail notice**.

> [!NOTE]
> The locker code goes in the email, so it stays in the member's inbox. If that's a risk for your community, leave the code off.

## Data and privacy

This module stores personal data, and the **community is the data controller**: it decides what to record.

- **Parcel photo**: may show a name, address or the contents. It's kept in private storage, opened only by a signed, short-lived link, and only the space's team and the recipient see it.
- **Sender, carrier, tracking and note**: data about the member and, incidentally, about third parties.
- **Name of who picked it up**: stored when the pickup is made by someone else.
- **Locker code**: a short-lived credential. Only the recipient reads it and it's deleted when the parcel is closed. In the activity logs it shows hidden.
- **Nothing is deleted.** Photos and records stay with the community. Let your members know, as the notice in the settings reminds you.

> [!SOON]
> In the works: the email **reminder** for a stalled parcel. It already exists as a space setting, but doesn't run yet.

## Examples

**Coworking with a front desk.** The space uses **At the front desk**. The moderator registers the package with two photos and the sender; the resident receives the email with the thumbnail and comes by to collect it; the front desk taps **Mark pickup**.

**Rooms with lockers.** The space uses **In a locker or on a shelf** with a code. The team writes *"Locker 12"* and the code; the member sees both in **My parcels**, opens the locker and taps **I picked it up**.

**A house that wants control.** With **Require team confirmation** on, the member sees the parcel, but only the front desk closes the pickup.

## Common errors and how to fix them

| Message or situation | What to do |
|---|---|
| *"Nobody with access to this space was found."* | Check the name (start from the beginning, 3 letters) and whether the person has access to the space (plan, group, visibility) |
| *"There is already an identical parcel for this recipient in the last 24 hours."* | It was probably already registered. If it's another one, tap **Register anyway** |
| *"At most 5 photos per parcel."* | Remove a photo before adding another |
| *"In this community only the team confirms the pickup."* | The space requires team confirmation: ask the front desk |
| There's no **Discard**, **Reopen** or **Delete** button | Those are for the owner and the admin |
| *"No e-mail notice"* in the queue | The recipient has no valid email or left the community; let them know another way |

## Frequently asked questions

**Does the member see the locker code if the team set it?**
Yes, only they do: in **My parcels** and in the email. The team never reads it.

**Can I register a parcel for a company?**
Yes, when the company is a member of the community and has access to the space.

**Can I register a parcel for someone who isn't in the community?**
No. The recipient must be a member with access to the space.

**Does the Attendance kiosk guest receive parcels?**
No. Parcels are for members; the kiosk is for the guest.

**Does the module charge for keeping parcels?**
No.

## Through the assistant

The assistant registers and looks up parcels, handles photos, marks the pickup, returns, discards, reopens and deletes, and the member asks *"do I have a parcel?"*. See [Tools · Parcels](/mcp/ferramentas-encomendas) and the [Parcels](/mcp/receitas) recipes.

## In the API

With `X-CommunityId` in the header: `GET /api/parcels/spaces/{spaceId}/overview`, `GET .../members?q=` (recipient search), `POST` and `GET .../parcels`, `GET`, `PATCH` and `DELETE /api/parcels/parcels/{parcelId}`, `POST`, `PUT` and `DELETE .../photos`, `POST .../pickup`, `.../return`, `.../discard` and `.../reopen`, `GET /api/parcels/me/parcels` (the member's own). The full reference, generated from the API, appears in the [API reference](/api/introducao) when Parcels reaches communities.

## Related

- [Modules](/conceitos/modulos)
- [Attendance](/espacos/presenca)
- [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)
