# 13 octobre 2026

> Member import from any spreadsheet, custom fields at registration and a new campaign editor, with drag and drop, duplicating and the last 30 days' numbers. Also here: the room door panel, the Parcels lockers, taking a room out of use from a ticket and campaign variables.

Today brings member import from a spreadsheet, custom fields and a new campaign editor. Earlier on, the room door panel, the Parcels locker list, taking a room out of use from a ticket and per-recipient variables in campaigns arrived. E-mails now use the community's color, and the moderation queue works fully again.

- [Import members from a spreadsheet](#import-members-from-a-spreadsheet)
- [Custom fields](#custom-fields)
- [New campaign editor](#new-campaign-editor)
- [Suspension of joining and sales](#suspension-of-joining-and-sales)

## Import members from a spreadsheet

**What it is.** Bring the list from any .xlsx or .csv spreadsheet into the community: an event's attendees, a member base, a class. You say where each column goes (e-mail, name, phone, tags, groups, consent or a custom field), choose role, groups and tags for everyone and check a summary before importing.

**Why it matters.** Before, you could only paste e-mails, and the rest of the data was lost. Now name, phone, company and ticket type come in too, and existing members just gain the groups and tags.

**Where.** **Administration › Members › Invite Members**, **Import spreadsheet** tab.

**How to start.**
1. Write the **List origin** (it goes in the invitation e-mail) and choose the file.
2. Check the columns: the recognized ones come first; mark the consent one, if there is one.
3. Read the **Summary** and click **Import**. The import runs in the background and you get the report.

**Example.** A spreadsheet of 220 attendees, with the column *Agreed to receive news*: only the 97 who marked *Yes* get in, with *Ticket type* becoming a tag. Each one gets the invitation with the origin and the link **Thanks for the invitation, but I do not want to join**; whoever declines can no longer be imported or invited by the community. See [Import members from a spreadsheet](/membros/importar-membros).

## Custom fields

**What it is.** Extra registration details for each member: company, job title, city, a date, yes/no or a list of options. A required field asks, on the next visit, whoever lacks the value to complete their registration.

**Why it matters.** The community keeps what it needs to know about each person, and uses it in campaigns: `{{field_company}}` becomes each person's company.

**Where.** **Administration › Members**, **Custom fields** tab. The values show on the member's record (team) and in **My Account** (the person themself); other members don't see them. See [Custom fields](/membros/campos-customizados).

## New campaign editor

**What it is.** The campaign editor starts with the subject, the preview text and the audience and, in the second step, shows the e-mail as it arrives, with the community's logo and colors and the owner's contact in the footer. You write inside the block, drag blocks into place and insert variables with a button, custom fields included. The product, event and course blocks take 1 to 6 items, in a grid of 2 per row, and the picker only shows what can go in the e-mail.

**And more.** The list became a table with status, audience, sent, open rate and click rate; at the top, **Last 30 days** compares sent, opens, clicks and unsubscribes with the previous 30 days and refreshes every minute (*Updated at …*, with the **Refresh** button). **Duplicate** creates an identical draft to reuse a campaign. The [Dashboard](/membros/dashboard) chart gained the **Campaigns** tab.

**Where.** **Administration › Campaigns**. See [E-mail campaigns](/notificacoes/campanhas-de-email).

## Suspension of joining and sales

Memberfy can now **suspend** people joining and sales for a community, for example while assessing a report of invitations without consent. While suspended, the community doesn't accept invites, imports, sign-ups or new sales; existing members keep their access and subscriptions renew. The team sees the reason in a fixed notice and by e-mail. See [Suspension of joining and sales](/membros/politica-de-convites#suspension-of-joining-and-sales).

## Door panel

**What it is.** A tablet at the room's door shows whether it is free or busy and the day's bookings. Whoever booked taps **Start meeting**, on the tablet or in **My bookings**. If the community wants, a room nobody starts within the grace period is released for others.

**Where.** On the Bookings room, with one secret link per tablet; the panel options in the space settings. See [Door panel](/espacos/reservas#door-panel).

## Parcels: locker list and reminder

**What it is.** The community registers its lockers by name, and the front desk picks one from the list when registering a parcel. With a reminder delay set, whoever has not picked up gets an e-mail reminder, up to the maximum number of reminders.

**Where.** **Configure space** in Parcels, under where parcels are kept and in the **Lockers** tab. See [Parcels](/espacos/encomendas).

## Support: room out of use and Report

**What it is.** From the ticket itself, the team takes the room out of use for a period, canceling bookings with a full credit refund, and returns it when the repair is done. The Support **Report** shows open, resolved and overdue tickets and average times by category, assignee and room.

**Where.** On a ticket with a room and in the Support management bar. See [Support](/espacos/suporte).

## Campaigns that fit each person

**What it is.** The campaign subject and text take variables: `{{first_name}}`, `{{leader}}`, `{{groups}}`, `{{points}}`, `{{plan}}`, `{{member_since}}` and more. Each person reads their own data, and `{{leader|our team}}` covers whoever lacks it. And the community's e-mails (campaigns, invitations, notices, certificates) now use the community's **primary color** on buttons and links instead of a fixed green.

**Example.** *"{{first_name}}, {{leader|the team}} wants to hear from you"* arrives as *"Maria, Bruno wants to hear from you"*.

**Where.** **Administration › Campaigns**, with the editor's **Insert variable** button or by typing the variable in the text. See [Per-recipient variables](/notificacoes/campanhas-de-email#per-recipient-variables) and [Colors](/configuracoes/cores#in-e-mails).

## Improvements

- **Invite Members:** the window gained **Groups** and **Tags** at the top, for all invitees, and shows the result for each e-mail: invited, updated (already a member and got the groups and tags) or skipped, with the reason. Before, one invalid e-mail brought down the whole list. See [Invite members](/membros/convidar-membros).
- **Consent notice:** the invite window reminds you that only people who asked to receive e-mails should be added and links to the [Invitation policy](/membros/politica-de-convites).
- **Terms of use at sign-up:** creating an account, setting the password from an invitation and creating a community now record acceptance of the [Terms of use](/conceitos/termos-de-uso).
- **Interface details:** the Esc key in a picker inside a window closes only the picker, without losing what was filled in, and the campaign editor's block bar no longer covers the content.
- **Store:** an add-on card opens its details, like a product's. And **Feature in the store**, in the product and add-on forms, adds the **Featured** badge and moves the item to the top of a store that shows every product. See [Store](/espacos/loja#featured-products).
- **Monetization:** the **Products** and **Options** tables search every product, not just the first 20, and now have pages. See [Products](/monetizacao/produtos).
- **Dashboard:** the sparklines and the chart show the previous week as a dashed line, and on a phone tapping the line shows the day and value. See [Dashboard](/membros/dashboard).
- **Missing image:** a course, event, content, download, ad, room, product, plan or add-on with no image shows a gradient in the community's colors instead of a gray frame. See [Colors](/configuracoes/cores#missing-image).
- **Credits:** the statement shows the booking's room and time on each entry. See [Credits](/monetizacao/creditos).
- **Parcels:** a parcel page with no photo no longer shows an empty frame.
- **Community e-mails:** the header is more compact.
- **Website:** the For Coworkings, Pricing and Platform pages at [memberfy.net](https://memberfy.net) now show the door panel, the locker list and parcel reminder, taking a room out of use from Support, campaign variables, the week-over-week Dashboard, featuring in the Store and e-mails in the community's color.
- **Website, second round:** the Platform, Pricing, For Communities and For Coworkings pages on [memberfy.net](https://memberfy.net) now show member import from a spreadsheet, custom fields and the new campaign editor; the migration questions now say members come in by spreadsheet, only those who consented.
- **Help Center:** new [Invitation and member import policy](/membros/politica-de-convites): who can be invited, what is forbidden, warnings, strikes and the 14-day appeal. Plus the [Terms of use](/conceitos/termos-de-uso), also in the footer.
- New security controls.

## Fixes

- **Assistant:** creating subscription plans through Claude or ChatGPT works again. Before, the request failed. See [Tools · Sales](/mcp/ferramentas-vendas).
- **Moderation queue:** approving or rejecting posts, articles, courses, events, gallery images and short posts works again. It used to fail, and only classifieds and downloads could be decided.

## For developers

### API

- Campaigns: `GET /api/campaigns/variables` lists the variables; text with a variable that does not exist is refused with `400` on save, schedule and send.
- Products: `GET /api/products` takes `search` (title, slug and, for management, the internal name), with `page` and `limit` up to 50; `isHighlighted` is now editable in the form.
- Member import: `POST /api/members/imports`, `/preview`, `/start`, the history, the errors CSV and the original file; declining the invite at `POST /api/invite-opt-out/{token}` and `POST /api/profiles/me/decline`. See [Member Imports](/api/referencia/member-imports).
- Custom fields: `/api/member-fields` and `PUT /api/profiles/{profileId}/fields`; `fields` in `GET /api/profiles/{id}` for the team and the member themself. See [Member Fields](/api/referencia/member-fields).
- `POST /api/profiles/invite` reads the community from `X-CommunityId`, takes `groupIds` and `tags` and returns one result per e-mail in `data.results`.
- Campaigns: `GET /api/campaigns/stats`, `GET /api/campaigns/block-items` and `POST /api/campaigns/{id}/duplicate`; the `product`, `event` and `course` blocks take `productIds`, `eventIds` and `courseIds` (1 to 6).
- Suspension: invite, import, sign-up and sale answer `403` with `code: COMMUNITY_SUSPENDED`.
- Door panel, booking check-in (`checkedInAt`, `canCheckIn`), Parcels lockers, room out of use from a ticket and the Support report: see the [API reference](/api/referencia).

### MCP: technical details

- In the second batch, 16 new tools; the server now has **394**. By role: owner and admin 394, finance 289, moderator 265 and member 170. And 11 ready-made recipes.
- Import (7): `analyze_member_import` (spreadsheet by link or CSV text), `preview_member_import`, `start_member_import` (asks for confirmation, with the origin), `get_member_import`, `list_member_imports`, `get_member_import_file` and `withdraw_from_community`; recipe `import_members`. See [Tools · Members](/mcp/ferramentas-membros#spreadsheet-import) and the recipe [Import a spreadsheet through the assistant](/mcp/receitas#61-import-a-spreadsheet-through-the-assistant).
- Custom fields (6): `list_member_fields`, `create_member_field`, `update_member_field`, `reorder_member_fields`, `delete_member_field` (asks for confirmation) and `update_member_field_values`.
- Campaigns (3): `get_campaign_stats`, `list_campaign_block_items` and `duplicate_campaign`; `create_campaign` and `update_campaign` take `product_ids`, `event_ids` and `course_ids`.
- `invite_member` and `invite_members` take groups and tags and return the result per e-mail (`invited`, `updated`, `skipped` with the reason). `get_community_context` includes `member_entry` (the suspension).
- In the first batch, 12 new tools (the server reached 378).
- Door panel (4): `list_room_panels`, `create_room_panel`, `revoke_room_panel` and `check_in_booking`; `update_space` takes `bookings.door_panel`. See [Tools · Bookings](/mcp/ferramentas-reservas).
- Lockers (4): `list_parcel_lockers`, `create_parcel_locker`, `update_parcel_locker` and `delete_parcel_locker`; `reminder_after_days` and `reminder_max_count` on the space. See [Tools · Parcels](/mcp/ferramentas-encomendas).
- Support (3): `close_resource_for_ticket` (asks for confirmation), `reopen_resource_for_ticket` and `get_support_report`. See [Tools · Support](/mcp/ferramentas-suporte).
- Campaigns (1): `list_campaign_variables`; the text tools explain `{{name}}` and `{{name|fallback}}`, and an unknown variable comes back as one sentence with the field and the next step. See [E-mail campaigns](/mcp/ferramentas-comunidade#e-mail-campaigns).
- Products: `highlighted` on `create_product`, `update_product` and `update_products`; `list_products` takes `search`, `page` and `limit`, and suggests the next page. See [Tools · Sales](/mcp/ferramentas-vendas#list-products).
