# November 1, 2026

> Community levels are now configurable, with a name, an image, minimum points and weekly activity. The profile shows what is left this week to stay or move up, and workflows get the Moved up a level, Moved down a level and Reached N points triggers. In Monetization, the new Revenue card shows the period's gross, refunds, chargebacks and net. Campaigns pick their audience by custom field, each space chooses how it shows its items, and a post can have its comments turned off.

## What's new

### Configurable levels with weekly activity requirements

**What it is.** The community builds its own level ladder: 2 to 20 levels, each with a **name**, **minimum points**, an optional **image** and, if you want, **weekly activity**, such as *"at least 3 posts a week"* or *"2 comments in the Introduce yourself space"*. The level shows who is taking part now, not just who piled up points once.

**How it works.** To move up, a person needs the points and the level's requirements met this week, and the move is immediate. To stay, the full previous week counts: whoever did not meet them moves down on Monday at 00:00, in the community's time zone. When you save, the preview shows how many people move up and how many move down.

**Where it is.** In **Members › Gamification**, **Levels** tab, for the owner and the admin. The level's name and image show on the ranking, the podium, **My engagement**, the profile and the member page.

**If you change nothing.** The community keeps the usual 9 levels, from **Newcomer** to **Legend**, with no requirements: nobody's level changes. See [Gamification › Levels](/membros/gamificacao#levels).

### What is left this week, on the profile

When the level has requirements, the profile shows the week's progress: each requirement with how much is done (*2 of 3*) and, below, what is left to move up to the next level. The person and the team (owner, admin, moderator and finance) see this block. See [Gamification › What is left this week](/membros/gamificacao#what-is-left-this-week).

### Level and points triggers in workflows

The **Levels and points** block brings the **Moved up a level**, **Moved down a level** (with the **Reason**) and **Reached N points** triggers, and the **Condition** gets level and points rules. Example: *"Moved down from Kernel → remove from the Kernel group"*. See [Workflows › Levels and points](/notificacoes/workflows#levels-and-points).

In [e-mail campaigns](/notificacoes/campanhas-de-email), `{{level}}` is now the name the community gave the level, and `{{level_number}}` brings its number.

### Revenue in Monetization

**What it is.** A **Revenue** card in Monetization's **Dashboard** section, with the period's sales by payment date: **Gross** (with the number of sales), **Refunds** and **Chargebacks** (amount and count) and **Net of refunds**, the gross minus refunds and chargebacks. Amounts are before the platform fee.

**Why it matters.** Until now, a refund didn't show up next to the sales it undid. Now you see, in one place, what came in, what went back and what's left.

**Where it lives.** In **Administration › Monetization › Dashboard**, between the balance and the latest transactions, for the owner, admin and finance. The period goes from **Last 7 days** to **Last 12 months** (30 days by default); when the community sells in more than one currency, a picker chooses the currency.

**Example.** Over 30 days: Gross US$ 1,299.40 (9 sales), Refunds US$ 99.90 (1 refund), Chargebacks US$ 0.00, Net of refunds US$ 1,199.50. On the Dashboard, the indicator is now called **Gross revenue**, with the same source. See [Revenue for the period](/monetizacao/visao-geral#revenue-for-the-period).

### Cookie notice in communities with Google Analytics

Cookie notice in communities with Google Analytics: measurement only starts after the person accepts. Whoever comes in for the first time sees **Cookies in this community**, with **Reject**, **Accept** and **Customize**; the choice lasts 12 months, and **Cookies**, at the foot of the side menu and in the avatar panel, opens the notice again. A community without Google Analytics shows no notice. See [The cookie notice](/configuracoes/google-analytics#the-cookie-notice).

### Spaces and sections can open for whoever holds a badge

Spaces and sections can open for whoever holds a badge. In **Who gets in**, the badge sits next to groups, products and plans: whoever earns it gets in at once, with a bell notice, and whoever loses it is out on the next visit. On screen, **+ Badges** in **Who gets in**; whoever does not have it yet sees the padlock with *"Earn the Mentor badge"* (a private badge shows only as *"A special badge"*), and removing a badge warns how many spaces and sections it opens. Also through the API and the assistant. See [Visibility and access](/conceitos/visibilidade-e-acesso#private-the-who-gets-in-list) and [What a badge unlocks](/membros/engajamento#what-a-badge-unlocks).

### Spaces and sections that open by level

In **Who gets in**, a minimum engagement level: whoever is at it or above gets in, whoever drops is out on the next visit. Whoever has not reached it sees the level and what is left, with the points and the week's activity. In **Who gets in**, the **+ Level** button; the padlock shows *"Available from level 9 · Legend"* and, for members, the level's activity this week and **See my progress**. Also through the API and the assistant. See [Visibility and access](/conceitos/visibilidade-e-acesso#private-the-who-gets-in-list).

### Badges awarded automatically

A badge can award itself by a rule: an action or a moment (course completed, check-in, quiz, form…), how many times, in which space and in which period, with no workflow. Counting starts when the rule is created. Through the API and the assistant; the screen is coming to the dashboard. See [Award automatically](/membros/engajamento#award-automatically).

### Daily points cap per action

Each action can have a most-times-a-day that gives points; over it, the action happens with no points and does not count for badges. See [Daily cap per action](/membros/gamificacao#daily-cap-per-action).

### Signed calls in Call webhook

With the signing secret generated, every **Call webhook** call carries `X-Memberfy-Signature`, so the destination can prove it came from Memberfy. See [Signed calls](/notificacoes/workflows#signed-calls).

### Campaign audience by custom field

An [e-mail campaign](/notificacoes/campanhas-de-email)'s audience can include or exclude people by a choice custom field: *"City is São Paulo or Campinas"*, *"Interests contains any of Data, AI"*, *"Accepts sales contact is yes"*. Up to 10 conditions per campaign; a closed or sensitive field cannot be used. Through the API and the assistant; the screen is coming to the dashboard.

### Display per space, with an Events calendar

In six modules (Content, Events, Courses, Downloads, Classifieds and Gallery), the owner and the admin choose how items show for everyone: **Feed**, **Cards**, **List**, **Compact**, **Grid** or **Calendar**. In an Events space, the **Calendar** shows the month or the week, with undated events set apart. Without a choice, nothing changes. It is the **Display** field, when editing the space and in **Create Space**; also through the API and the assistant. See [Display](/conceitos/espacos#display).

### Turn off comments per post

The author, the owner, the admin and the moderator can turn off a post's comments: nobody comments, the team included, and existing ones stay. Through the API; the option in the post menu is coming to the dashboard. See [Turn off comments](/espacos/feed#turn-off-comments).

### Feed by activity

The feed can be sorted by **Active**: pinned posts first, then whatever had the latest comment or reply, so an old post with a new conversation comes back up. Through the API; the choice in the feed is coming to the dashboard. See [Recent or Active](/espacos/feed#recent-or-active).

## Improvements

- **New security controls.**
- **More precise searches.** A `%` or `_` typed in a search is now matched as text: before, `%` listed everything and `_` matched any character.
- Links to the website and to the community at the top of the Help Center.
- **Engagement on the website.** The [Engagement](https://www.memberfy.net/en-us/platform/modules/engagement) page on the Memberfy website now covers badges (by hand, by workflow and automatic from a course, a check-in and Networking) and levels with weekly activity, with the level and point triggers.
- Your community now shows up better in search engines and AI: automatic robots.txt, sitemap and llms.txt in every community. See [Your community in search engines and AI](/configuracoes/buscadores-e-ias).
- **Save X%, one rule.** The savings tag compares each option's price per month with the monthly option without a contract, at the price the buyer pays (with the platform fee when the buyer pays it), rounded to a whole number. The monthly option has no tag, and the tag does not show when there is no saving or no monthly option to compare with. See [The savings tag](/pagamentos/checkout#the-savings-tag).
- **Requirement in a space you cannot access.** On the profile, a level requirement tied to a space the person does not open shows *"in a space you cannot access"* in place of the name. See [What is left this week](/membros/gamificacao#what-is-left-this-week).
- **Drafts and posts awaiting moderation** are visible only to whoever wrote them and to the team, in the feed counts too. See [Content › The list and the page](/espacos/conteudo#the-list-and-the-page).
- The fixed-IP call quota now renews at midnight in the community's time zone. See [Fixed IPs](/api/ips-fixos).
- The finance role can now view the community's pricing plans. See [Roles and permissions](/conceitos/papeis-e-permissoes).
- Whoever replied STOP by SMS or WhatsApp sees on screen that it stopped and can turn it back on there. See [Stopped by a STOP reply](/notificacoes/avisos-por-sms-e-whatsapp#stopped-by-a-stop-reply-see-it-and-turn-it-back-on).
- **For the team: Google Analytics measures less.** With the cookie notice, GA4 counts visits only for those who accept, so the numbers are lower than before. See [Google Analytics](/configuracoes/google-analytics#the-cookie-notice).
- **Search engine verification.** Under **Settings › Search and discovery**, paste the Google Search Console or Bing Webmaster Tools code to prove the community is yours, also on the `.memberfy.net` address. The sitemap and `llms.txt` now list the open courses, the calls with submissions open and the certificates their holders let be indexed (with **Guest Access** off, only the home page). See [Your community in search engines and AI](/configuracoes/buscadores-e-ias).

## Fixes

- **Leaderboard without people who left.** The leaderboard position no longer counts people who left the community, and it's now the same on the profile and in the reports. See [Ranking](/espacos/ranking#the-periods).
- **Unnamed member.** People with no name on file show as *"Unnamed member"* on the leaderboard, in the gallery, in comments and in chat.
- **Repeated currency filter.** Asking Monetization for the same currency twice returns a validation error instead of an internal error.
- **Deleted purchases out of revenue.** A deleted purchase no longer counts in the revenue numbers of Monetization, the Dashboard and the reports.
- **Amounts in workflows.** The amount condition in workflows writes money in the community's currency and format, not always in reais. See [The "Variable" condition](/notificacoes/workflows#variable-condition).
- **Free trial without a sale notice.** The community no longer gets the new sale notice when someone starts a free trial with no charge; the subscriber still gets the confirmation.
- Sales and subscription reports round the half cent the same way as the statement.
- Search finds public spaces inside members-only sections, for people who already have access to them.
- Confirming attendance at an event answers in the language of whoever uses it.
- **Plan change by boleto that did not clear.** If the plan change boleto does not clear by the business day after it is due, the change is given up: the boleto is canceled, the person gets the payment-not-completed notice, and the renewal goes ahead on the current plan. After that, another change can be requested.

## For developers

### API

- `GET` and `PUT /api/gamification/levels` (owner and admin): the level ladder with its requirements; `dryRun` returns how many move up and down without saving.
- `GET /api/gamification/levels/progress`: the week's progress for the current and the next level, for the person and the team; on the profile, in `engagement.levelProgress`.
- New optional fields: `levelId`, `levelName` and `levelImageUrl` on the ranking and the profile. See [Gamification › In the API](/membros/gamificacao#in-the-api).
- Webhooks: the `member.level_changed` and `member.points_changed` events, 97 in total. See [Webhooks](/api/webhooks).

- `GET /api/dashboard/monetization` comes from the statement and carries `refunds`, `chargebacks` and `net` in `metrics.totalRevenue`, plus `currency` and `currencies`; the `currency` parameter picks the currency, and repeating it returns 400. See the [reference](/api/referencia/dashboard/get-dashboard-monetization).
- `GET /api/vault`: `outbound.month` is now the month in the community's time zone, and the new optional field `outbound.resetsAt` says when the fixed-IP count restarts.
- `GET /api/communities/plans` and `GET /api/communities/plans/{id}` accept the finance role; creating, editing and removing stay with the owner and admin.
- `GET /api/members/me/notice-preferences`: the new optional `globalOptOut` field, in `channels.sms` and `channels.whatsapp`, shows the stop by a STOP reply; the `PUT` with `enabled: true` turns it back on in every community. See [In the API](/notificacoes/avisos-por-sms-e-whatsapp#in-the-api).
- `access.badgeIds` on `POST`/`PUT` of spaces and sections (absent keeps the badges; `[]` removes them). The 403 of an area closed by a badge carries `reason: "badge"`, the `earnBadge` action, `badges` (public ones only) and `hasHiddenBadge`. `space.access_granted` gains `source: "badge"`, and `GET /api/badges` brings `unlocks`. See [Visibility and access › In the API](/conceitos/visibilidade-e-acesso#in-the-api).
- `PUT /api/communities/{id}` accepts `googleSiteVerification` and `bingSiteVerification`, and `GET /api/public/community-summary` lists, without a session, the open courses, the calls with submissions open and the certificates their holders let be indexed (empty with **Guest Access** off). See [In the API](/configuracoes/buscadores-e-ias#in-the-api).
- `access.minLevelId`/`access.minLevel` on spaces and sections; the 403 with `reason: "level"`, `earnPoints` and `progress`; `409` `gamification.levels.inUse` with the spaces and sections; `space.access_granted` with `source: "level"`. `rule` on `POST`/`PATCH /api/badges`, `dailyCaps` on `PUT /api/gamification/config` and `GET`/`POST`/`DELETE /api/vault/signing-secret`.
- Campaigns: `fields` (`oneOf`, `containsAny`, `containsAll`, `isTrue`, `isFalse`; up to 10 conditions), `audienceWarnings`, `fieldWarnings`. See [E-mail campaigns › In the API](/notificacoes/campanhas-de-email#in-the-api).
- Spaces: `layout` (`POST`/`PUT /api/spaces` and when reading), `layouts` per module in `GET /api/spaces/modules`; `GET /api/events` with `from`/`to`, `undated`, `truncated`, `undatedCount`. See [Display](/conceitos/espacos#display).
- Posts: `commentsDisabled` (`POST`/`PUT /api/content`, `/api/status`; commenting on a post with comments off: `403` `comments_closed`); `sort=recent|activity` (`GET /api/feed`), with `lastActivityAt` on every item. See [Feed › In the API](/espacos/feed#in-the-api).

### MCP: technical details

- New tools: `get_ranking_levels`, `update_ranking_levels` (asks for confirmation, with the preview of who moves up and down) and `get_level_progress`. 927 tools in total. See [Tools · Content](/mcp/ferramentas-conteudo#get-ranking-levels).
- Workflows through the assistant accept the `member.level_changed` and `member.points_changed` triggers and the `levelAtLeast` and `pointsAtLeast` rules.
- The assistant now answers Monetization in any currency the community sells in, with gross, refunds, chargebacks and net shown separately.
- `get_sales_summary` takes `currency` (one currency) and returns `refunds`, `chargebacks`, `net` and `currencies`. See [Tools · Finance](/mcp/ferramentas-financeiro#get-sales-summary).
- `get_my_notice_preferences` shows the stop by a STOP reply (`global_opt_out`), and `update_my_notice_preferences` turns the channel back on, with a confirmation saying it applies to every community.
- `update_space_access` and `update_section` take `badge_ids`; each list sent replaces only its own. New `get_space_access` tool (team), and `delete_badge` warns what stops opening. See [`get_space_access`](/mcp/ferramentas-comunidade#get-space-access).
- `min_level` on `update_space_access` and `update_section`; `rule` on `create_badge` and `update_badge`; `daily_caps` on `update_ranking_rules`; new tools `get_signing_secret`, `create_signing_secret` and `delete_signing_secret`; the **Welcome journey with badges** recipe.
- `create_campaign`, `update_campaign`, `preview_campaign_audience` accept `fields` in the audience and the exclusion (`one_of`, `contains_any`, `contains_all`, `is_true`, `is_false`); warnings come back in `field_warnings`.
- `create_space`, `update_space` accept `layout`; `list_space_modules` returns `layouts`; `list_events` accepts `from`/`to` and `undated`, with `truncated` and `undated_count`.
