# 14 octobre 2026

> E-mail campaigns can now exclude people from the audience, in the dashboard and through the assistant. And each Dashboard number opens the list behind it, already filtered to the same period. Also arriving: the Analytics, Engagement and Logs pages in Administration, Google Analytics with purchases, the members list with columns and search across all fields, and the sign-up form with the community's fields.

Today the campaign audience gets exclusions: besides choosing who receives it, the team says who does not. And the Dashboard is no longer just numbers: clicking an indicator or a chart point opens the list behind it.

## Exclude people from a campaign's audience

**What it is.** Below who is in the audience (**Everyone**, or groups, tags and people), the new **Exclude** box takes groups, tags and people. Anyone matching an exclusion **does not receive it, even if they are in an included group**. The **Audience preview** and the send dialog show how many the rule removed: *"1,240 in the selection, 312 excluded by the rule"*. Repeating campaigns get it too.

**Example.** Groups *Inscritos 2023* and *Inscritos 2025*, excluding *Inscritos 2026*: it reaches those who signed up before and have not come back.

**Where to find it.** **Administration › Campaigns**, in the editor's **E-mail and audience** step. See [The audience](/notificacoes/campanhas-de-email#the-audience).

## Audience exclusion through the assistant

**What it is.** Ask the assistant *"send to Inscritos 2023 and 2025, minus those in 2026"*: it builds the audience with the exclusion, shows the summary sentence (how many in the selection, how many the rule removed, how many receive it) and repeats it before sending. See the recipe [Send to 2023 + 2025, minus those in 2026](/mcp/receitas#62-send-to-2023-2025-minus-those-in-2026).

## From the Dashboard number to the filtered list

**What it is.** Clicking an indicator or a chart point on the Dashboard opens the list behind the number, already filtered to the same period: **Active members** opens the week's active members (the total matches the card); an **Engagement** point, that day's active members; **Revenue** and **Sales**, the sales of the period or the day; **Presence** and **Bookings**, the list of the day or the week; **Campaigns**, the campaigns sent in the period.

**Why it matters.** Seeing that 42 people were active is good; knowing who they are is what lets you act.

**Where it is.** **Administration › Dashboard**. On the list, the period shows as a chip with an **×** to remove. The days are the community's time zone days. Growth, New content and the Engagement card still have no list. See [From the screen to the list](/membros/dashboard#from-the-screen-to-the-list).

## Members and campaigns filtered by period

**What it is.** The **Members** list takes *"Active from … to …"* and *"Joined from … to …"*, and the **Campaigns** list, *"Sent from … to …"*, from the Dashboard or from the page address. Whoever joined and already left does not show up under *Joined*. Through the assistant: *"who was active in the last 7 days?"*, *"who joined this month?"*, *"which campaigns went out last week?"*. See [Filter by period](/membros/gerenciar-membros#filter-by-period), [Filter by send period](/notificacoes/campanhas-de-email#filter-by-send-period) and the recipe [Who was active, who joined and what was sent](/mcp/receitas#63-who-was-active-who-joined-and-what-was-sent).

## Analytics: who is here, where they come from and where buyers give up

**What it is.** The new **Analytics** page shows who visits the community, who is in it right now and at which step buyers give up. It is Memberfy's own and works with no setup. Four tabs:

- **Realtime**: how many people are online now (logged-in members and visitors) and in the last 30 minutes, minute by minute.
- **Overview**: visits per day, the most viewed pages and spaces, and where people come from.
- **Search engines and LLMs**: how often search engines and AI assistants read the community's pages.
- **Purchase funnel**: from the storefront to payment, how many went through each step and who stopped at each one.

**Note on visits.** **Visits** are not unique people: someone who came on three different days counts as three visits.

**Where to find it.** **Administration › Analytics**, for the owner and the admin; finance sees only the **Purchase funnel**. On the [Dashboard](/membros/dashboard), the **Online now** card takes you there. See [Analytics](/membros/analytics).

## Engagement, with the statement of each activity

**What it is.** The **Engagement** page shows the period's numbers compared with the previous period, activity per day, the most engaged people and the **statement**: one line per activity (post, comment, reaction, event registration, completed lesson, attendance…), with who did it, where and when. The statement has filters by person, kind and space, a link to what was done and CSV export.

**Where to find it.** **Administration › Engagement**, for the whole team (owner, admin, moderator and finance). The Dashboard's **New content** and **Engagement** cards open the statement already filtered. See [Engagement](/membros/engajamento).

## Logs get their own page

**What it is.** The **Logs** left the Members tab and became a page in Administration, with everything the community records in one place: team, platform, AI assistant, members, e-mails, imports, finance and moderation. You can search, filter by person and period, and open each record to see what changed. The old address takes you straight to the new page.

**Where to find it.** **Administration › Logs**, for the owner and the admin; finance sees the financial records. See [Logs](/membros/registros-de-atividades).

## Google Analytics with the community's purchases

**What it is.** With the community's Google Analytics 4 ID, Memberfy now sends, besides visits, the e-commerce events (storefront, checkout, purchase and refund), sign-up, login and the waitlist. The new optional **API secret (Measurement Protocol)** field makes purchases reach your GA4 even when a PIX or boleto is paid later, with the page closed. Once saved, the secret never shows again.

**Where to find it.** **Settings**, next to the Google Analytics ID. See [Google Analytics](/configuracoes/google-analytics).

## Members list with columns, sorting and search across all fields

**What it is.** In the **Members** list, the team chooses the columns (job title, tagline, phone, groups, tags, plan, member since and each custom field), sorts by clicking a column header and searches every field at once: name, email, job title, tags, groups, custom fields and phone. Case and accents don't matter. The pagination also shows above the list. See [The list](/membros/gerenciar-membros#the-list).

## Form: email, phone and link fields, asked at sign-up

**What it is.** The **Custom fields** tab is now called **Form** and gets three field types: **Email**, **Phone** and **Link**, each checked for the right format. A text field can have a **validation rule** (for example, a 6-digit registration number), with the message the person sees when it is wrong. And the **Ask on sign-up** option shows an optional field on the sign-up form.

**At sign-up.** The sign-up form asks for the required fields and those marked **Ask on sign-up**, in the list's order; the account is created only when everything is filled in the right format. See [Custom fields](/membros/campos-customizados) and [Sign-up and entry](/membros/cadastro-e-entrada).

## Profile: job title, a new edit screen and a nudge to add a photo

**What it is.** The profile gets a **Job title** (for example, *Product manager at Acme*), shown under the name on the profile and in the people search. The **Edit profile** screen was redesigned in two columns, with the profile type as cards and, in the same place, job title, phone and the community's fields. And whoever still has no photo sees a bar inviting them to complete their profile, which can be dismissed with **Not now**. See [Account and profile](/conceitos/conta-e-perfil#job-title).

## A seven-step purchase funnel, from visits to payment

**What it is.** The Analytics **Purchase funnel** now starts at **Visits** and runs to **Paid**: seven steps, each with a line explaining who counts in it and the share of visits that got there (**% of visits**). It also shows how many went straight to a product, the orders that came in without going through the app (direct link, assistant, API) and since when there is data.

**More than one product.** The **Product** picker selects several products and plans at once, with search.

**Who stopped.** **Who stopped here** opens a dialog with search by name or email, pages and the products each member stopped on.

**Where.** **Administration › Analytics**, **Purchase funnel** tab. See [Analytics](/membros/analytics).

## Gallery: bulk upload with each photo's progress

**What it is.** When you upload several photos at once, each one shows its progress (**Optimizing**, **Uploading 42%**, **Processing**, **Ready** or **Failed**, with **Retry**), and the button becomes the batch's progress: **Uploading 12 of 30 · 40%**, **Processing**, **Done** or **3 failed · try again**. Photos are reduced in the browser before uploading (up to 3840 px on the longest side, no visible loss), so even 50 MB ones go up fast.

**Without being stuck in the dialog.** **Minimize** keeps the upload going in a floating pill while you browse; closing the tab mid-upload asks for confirmation. In the gallery, the photo shows as **Processing** until it's ready. See [Gallery](/espacos/galeria#uploading).

## Publication date on posts

**What it is.** The owner and the admin pick a past date for a post, an article or a status, under **More options › Publication date**. The post lands in the Feed and in the space's list at that date, with the time in the community's time zone.

**Why it matters.** Whoever brings a community over from another platform, or records something that went out earlier, keeps the original order without firing news about old content: a post with a past date notifies no one and earns no ranking points. Future dates aren't accepted (this isn't scheduling).

**Where.** In the form to create or edit a post or status, right before **Publish**. See [Publication date](/espacos/conteudo#publication-date).

## Posting on behalf of another member, through the API and the assistant

**What it is.** Through the API and the assistant, the owner and the admin can publish a post or a status in another member's name, to bring over the community's history with each post's author. Only for someone with a role below yours, always silently (nobody earns points or gets notified), and who posted it is recorded in the **Logs**. See [Posting on behalf of another member](/espacos/conteudo#posting-on-behalf-of-another-member).

## Content import from a spreadsheet

**What it is.** The new **Import content** button brings posts, articles and short posts into the community from an .xlsx or .csv spreadsheet, with each one's **original date** and **author**, matched by email. You choose where each column goes, check a preview with the summary and the first 10 rows, and only then import. The import runs in the background, with progress, a button to cancel and, at the end, a report you can download as a CSV.

**Why it matters.** Whoever comes from another platform brings the whole history in the right order, without setting off notices about old content: nothing is notified and no one earns points. Importing the same spreadsheet again doesn't duplicate anything, and the images in the text become hosted on Memberfy.

**Where it is.** In the header of **Content** and **Feed** spaces, for the owner and admins.

**How to start.**
1. Export the posts from the old platform to a spreadsheet, with title, text, date and the author's email.
2. Click **Import content**, upload the file and check the columns and the options.
3. Read the preview and click **Import**.

**Example.** A newsletter with 800 issues since 2019 becomes 800 articles in the **Archive** space, each on the date it went out. See [Importing content from a spreadsheet](/espacos/importar-conteudo).

## Links become a player or a card

**What it is.** A link in the text of a post or a status now shows up as a **player** or a **card**, as on social networks. YouTube videos (live streams and the start time set in the link included), Vimeo and Loom, music and podcasts from Spotify and SoundCloud, Instagram posts and reels, LinkedIn posts and Google Maps play or show right there. News and sites become a card with title, image, description and domain; a page without an image gets a page snapshot. App stores become an app card, WhatsApp shows up without revealing the number, GIFs show as images and shorteners lead to the final address.

**Why it matters.** A link stops being raw text: the live stream video plays inside the post itself, and a shared news story shows what it's about before the click.

**Where it is.** In the post and status editors: paste a link and the preview shows up right away, below the text. Up to 5 per post, ready a few seconds after saving. All images are hosted by Memberfy; some sites block reading and show up with just the domain. The spreadsheet and Substack imports also turn links into players and cards. See [Links become a player or a card](/espacos/conteudo#links-become-a-player-or-a-card).

## Gallery: photos that load without breaking

**What it is.** While a gallery photo loads, its spot pulses in the community's color instead of showing the broken-image icon. When you open a photo, the bands around it are filled with the photo itself, blurred, instead of black bars; the same goes for the photos of Classifieds ads. See [Gallery](/espacos/galeria#browsing).

## Free trials that charge at the end, one per person

**What it is.** A plan with **Free Trial?** now really starts with no charge, and billing happens when the trial ends: on a card, automatically; with PIX or boleto, the charge arrives by email before the end and follows the renewal schedule. With **Require Card for Trial?**, the card is asked for upfront.

**One trial per person in each plan.** It covers every billing option of the plan and is counted by email and by card: whoever already had the trial, even after canceling or switching options, pays from day one. Coupons don't apply during the trial, which is already free.

**Why it matters.** Before, a trial could end without the first charge ever happening. Now a trial turns into paying subscribers at the end instead of open-ended free access. See [Free trial](/monetizacao/opcoes-de-cobranca#free-trial).

## Request a community on the website, with an answer by email

**What it is.** Whoever requests a community at [memberfy.net/en-us/request-access](https://www.memberfy.net/en-us/request-access) passes a quick anti-bot check, sees right away whether the address is free and gets the **"We received your request"** email. Once the Memberfy team approves it, the community is created with its address already live and **90 free days** on the chosen plan, no card, and the new owner gets the email with the plan and the **Set my password** button. See [Getting your community](/primeiros-passos/como-ter-sua-comunidade).

## Improvements

- **Images up to 50 MB across the app**: Gallery, profile photo, Classifieds ads, email campaigns, Downloads covers, product images, logo and social media image, parcel and Support photos, and images the assistant receives by link. The favicon stays at up to 2 MB. See [Gallery](/espacos/galeria).

- **Gallery: optional title and drag and drop.** A photo's title starts empty instead of the file name, and can stay blank or be cleared later. Photos can be dragged onto the upload dialog or anywhere on the gallery page. See [Gallery](/espacos/galeria).

- **Photos up to 50 MB when creating or editing a member**: the **Avatar** in **New Member** and in member editing takes the same limit as the rest of the app. See [Invite members](/membros/convidar-membros).

- **The sales of a day opened from the Dashboard use the community's time zone**, not your computer's: the list shows the same sales the chart counted.
- **The connector tells the assistant when the tool list changes and how to update it**: disconnect and reconnect the connector and open a new conversation. See [The assistant can't see a tool](/mcp/problemas-comuns#the-assistant-can-t-see-a-tool-or-says-it-doesn-t-exist).
- **Clearer opt-out labels**: the scope of someone who asked not to receive e-mails shows as *Campaigns only* (still gets the community's other e-mails) or *All e-mails* (gets only account security and purchase e-mails), with a hint of what still arrives. See [E-mail campaigns](/notificacoes/campanhas-de-email).
- **The assistant now has 403 tools**: it imports posts from a spreadsheet, shows how a link will look in a post, reads Analytics and who is online, the engagement statement and the Logs, uses the members list's columns and search, creates email, phone and link fields with a validation rule and **Ask on sign-up**, and stores the Google Analytics API secret. See [Tools](/mcp/ferramentas).
- **Reliability improvements and new security controls.**
- **One photo per person**: changing your own photo, in **My Account** or in **Edit profile**, changes the account photo and the community profile photo together. Before, My Account could show two photos, one of them empty. The staff changes another member's photo only on the community profile and only for someone with a role below theirs. See [Profile photo](/conceitos/conta-e-perfil#profile-photo).
- **Unified member name: invite with a name and one name per person.** The name typed when inviting (in **New Member**, through the API or the assistant) or in the import spreadsheet becomes the new account's name, and the invitation email already goes out with it. Changing your own name changes it everywhere. The team changes someone else's name only in its own community and only for someone with a role below theirs. See [Name](/conceitos/conta-e-perfil#name).
- **Lighter gallery bulk upload**: the upload list shows small thumbnails, without opening the original photos on the page. See [Gallery](/espacos/galeria#uploading).
- **The assistant sees the gallery and classifieds photos**: each image comes with a link for it to look at and the time the link expires, which lets it, for example, find duplicate photos. See the recipe [Find the duplicate photos in the gallery](/mcp/receitas#67-find-the-duplicate-photos-in-the-gallery).
- **More stability and better performance** in the processing the platform does in the background.
- **Website:** the Pricing page on [memberfy.net](https://memberfy.net) now shows Analytics (with Google Analytics 4), Engagement and the fields asked at sign-up, in every plan.

## Fixes

- **Public galleries showed broken images to visitors who weren't logged in.** Now whoever visits a public space sees the photos normally. See [Gallery](/espacos/galeria).
- **The assistant failed to change a member's role, tags, groups and manager.** It works again.
- **Names that showed as the email's username.** Someone who joined by invite or import showed in some places as *maria* (from *maria@memberfy.net*) and in others with the typed name. Now the invite's name goes to the account. To fix someone who was already like that, edit the **Community Display Name**: if the person is only in your community, the account name is fixed too. See [Name](/conceitos/conta-e-perfil#name).
- **The assistant's actions in the Logs read as sentences**, in the reader's language, no longer as an internal code. Changes to the community settings show the translated field name.

## For developers

### API

- Checkout of an option with `trialDays`: the first trial starts with no charge and is billed at the end by the renewal; `requiresCardForTrial` requires a card method (`400` on `paymentMethod`). One trial per plan, per email and per card; whoever already had it goes through the normal checkout, and two simultaneous checkouts of the same trial get `409` (`trialAlreadyUsed`).
- Gallery: `title` is optional in `POST /api/gallery/images` (no title, `""`), and `PUT /api/gallery/images/{imageId}` takes `""` or `null` to clear it. Same for `add_gallery_image` and `update_gallery_image` in the assistant.
- New `POST /api/community-requests` (public, rate-limited per IP, with an anti-bot check), used by the website form to request a community.
- Campaigns: the audience takes `exclude` (`groupIds`, `tags`, `profileIds`); a group or person outside the community is refused with `422`. The audience preview returns `candidatesBeforeRule` and `excluded.byRule`. See the [API Reference](/api/referencia).
- `GET /api/profiles/list` takes `activeFrom`/`activeTo` and `joinedFrom`/`joinedTo`, and `GET /api/campaigns` takes `sentFrom`/`sentTo`: YYYY-MM-DD dates, inclusive, in the community time zone; an invalid date or a start after the end returns `400`.
- Analytics: `GET /api/analytics/overview`, `/pageviews`, `/funnel`, `/funnel/members`, `/online` and `/realtime`, with `X-CommunityId`. Engagement: `GET /api/reports/engagement/activities` (also as CSV), and `GET /api/reports/engagement` returns `compare`. Logs: `GET /api/logs`.
- `GET /api/profiles/list` takes `fields=` (`phone`, `groups`, `plan`, custom fields), searches every field and takes `sortBy=jobTitle` or a custom field. The profile has `jobTitle`.
- Custom fields: `EMAIL`, `PHONE` and `URL` types, `pattern`, `patternMessage` and `askOnSignup`. New `GET /api/member-fields/signup` (public); `POST /api/auth/register` takes `fields` and, without a required one, returns `422` on the field.
- `PATCH /api/communities/{id}/settings` takes `gaApiSecret`. `PUT /api/communities/{id}` no longer takes `payoutEnabled` and `signupModel` (`400` on the field): both change only in the settings. See [Creation order](/api/ordem-de-criacao).
- `POST|PUT /api/content` and `POST|PUT /api/status` accept `publishedAt` (ISO 8601, past or now; owner and admin only, otherwise `403`; future or invalid, `400`) and `authorProfileId` (posting on behalf of another profile in the community, only with a role below yours: `403` otherwise, `404` if the profile isn't in this community). Responses include `publishedAt`, and lists and the feed sort by it. See [Content › In the API](/espacos/conteudo#in-the-api).
- Post import from a spreadsheet: `POST /api/import/spreadsheet` (analysis), `POST /api/import/spreadsheet/{id}/preview`, `POST /api/import/spreadsheet/{id}/start`, `GET /api/import/spreadsheet/{id}` and `GET /api/import/spreadsheet`, owner and admin only; one import per community at a time. See [Import](/api/referencia/import).
- `POST|DELETE /api/upload/avatar/profile` on someone else's photo needs a role above theirs (`403` on `profileId`); your own photo changes together on the account and the profile.
- `POST /api/media/urls` and `GET /api/media/{id}/url` accept visitors who aren't logged in for the media of public spaces.
- Analytics: `GET /api/analytics/funnel` returns the `visit` step, `untrackedOrders` and `collectionStartedAt`, and accepts `productIds`; `GET /api/analytics/funnel/members` accepts `productIds`, `page` and `search` and returns each member's products. New `POST /api/media/upload-urls` to upload images straight to storage.
- Link embeds: `POST /api/embeds/resolve` (`{ url }`, any member) returns a link's player or card; `422` for an invalid link or a private address, `429` with `Retry-After` (30 per minute per person and 300 per community; links not in the cache, 10 and 60). Posts and statuses carry `embeds` (up to 5, in text order), filled in the background. See [Embeds](/api/referencia/embeds).

- Person name: `POST /api/profiles/invite` accepts `people: [{ email, name }]` (`emails` still works); `PUT /api/profiles/{id}` and `PUT /api/members/profile` accept `name`, and responses include `name`. Changing someone else's name requires a role above theirs (`403` `profile.nameRoleTooHigh`, on `name`) and the profile in the `X-CommunityId` community (`403`). See [Person name](/api/respostas-e-erros#person-name).

### MCP: technical details

- `create_campaign`, `update_campaign` and `preview_campaign_audience` accept `exclude: { group_ids, tags, profile_ids }`; the preview and the confirmation of `send_campaign` and `schedule_campaign` carry `audience_summary`. See [E-mail campaigns](/mcp/ferramentas-comunidade#e-mail-campaigns).
- `list_members` takes `active_from`/`active_to` and `joined_from`/`joined_to`; `list_campaigns` takes `sent_from`/`sent_to`. See [`list_members`](/mcp/ferramentas-membros#list-members).
- New: `analytics_report`, `get_online_now`, `list_engagement_activities` and `list_logs`; `engagement_report` returns `compare_summary`. See [Reports and charts](/mcp/relatorios-e-graficos).
- `list_members` takes `include`, `custom_field_keys`, `sort_by: jobTitle` and `sort_by_custom_field`; `create_member_field` and `update_member_field` take the `email`, `phone` and `url` types, `pattern`, `pattern_message` and `ask_on_signup`; `update_community_settings` takes `ga_api_secret`. See [Tools · Members](/mcp/ferramentas-membros).
- `analytics_report` accepts `product_ids`, `step: visit` and, in `funnel_members`, `page` and `search`; the funnel returns `step_labels` and `funnel_notes`. Images by link up to 50 MB. See [`analytics_report`](/mcp/relatorios-e-graficos#analytics-report).
- `create_post` and `create_short_post` accept `published_at` and `author` (profile id, e-mail, name or link); `update_post` accepts `published_at`. See [`create_post`](/mcp/ferramentas-conteudo#create-post).
- `list_gallery_images`, `list_classified_ads` and `get_classified_ad` return `image_url`, `thumbnail_url`, `url_expires_at` and `url_valid_seconds` on each image; `get_media_url`, `get_download_url` and `get_lesson_media_url` also return `url_expires_at` and `url_valid_seconds`. See [`list_gallery_images`](/mcp/ferramentas-conteudo#list-gallery-images).
- `update_avatar` on someone else's photo follows the same role rule as the API.
- New: `analyze_content_import`, `preview_content_import`, `start_content_import` and `get_content_import`, to import posts from a spreadsheet (admin). See [`analyze_content_import`](/mcp/ferramentas-conteudo#analyze-content-import).
- New: `preview_link` (any role, read-only, no confirmation), on top of `POST /api/embeds/resolve`. `create_post`, `create_short_post`, `update_post`, `list_posts` and `open_link` bring `embeds`. See [`preview_link`](/mcp/ferramentas-conteudo#preview-link).
- `invite_member` and `invite_members` send the name with the invite; `update_member_profile` and `update_my_profile` accept `name` (`display_name` and `full_name` remain as synonyms). See [`update_my_profile`](/mcp/ferramentas-membros#update-me).
