TBC App/Web - Profile Completion

SKU: TBC-APP-PROF-MOD

Require a bio and avatar before a member gets in — on the web portal and in the app.

Price: $29.00
Buy Now

v1.7.16
Changelog · v1.7.16

1.7.16 — 2026-10-14

✨ New

  • A Gravatar counts as the profile photo. With Require Avatar on, a member whose email has a Gravatar photo was told their photo was missing, although Fluent Community already showed that Gravatar as their picture. A real Gravatar now counts while Fluent Community shows Gravatars, for members who have no community profile yet too, such as imported accounts or ones made by a social login. A new setting, "Accept a Gravatar as the profile photo" (on by default), lets a site ask every member to upload a photo instead; it is greyed out, with a note, while Fluent Community's Privacy Settings has Gravatar off, and its saved choice is kept. When Gravatar can't be reached, members are let through rather than locked out.

🛠 Fixed

  • Several forms on one settings tab each keep their Save in sight. Where a settings tab holds more than one form, each form with unsaved changes now shows its own Save, one above the other, instead of every Save sitting in the same spot on top of the others, and the tab keeps its unsaved dot until every form on it is saved. Every TBC add-on shares one save bar, and WordPress runs the copy from the add-on that loads first, so keep your TBC add-ons current to bring this to every settings page.
  • Folding cards point the reading way in right-to-left languages. With WordPress in a right-to-left language such as Arabic or Hebrew, a closed card's arrow on the settings page pointed right, away from the text. It now points left, and down when the card is open.
  • A link to a card in the plugin's guide opens it, even inside a closed section. A link straight to a card that sits inside one of the guide's folded sections opened the card but left its section shut, so the page showed nothing where the link pointed. Every fold around the card now opens.
  • Fewer database reads on every request. On a site without an object cache such as Redis, each TBC add-on read its licence key and its last licence answer from the database on every page and app request, two reads per add-on. From its next licence check (within a day of the update) WordPress loads both with its other settings, in the one read it already makes. Activating, checking and renewing a licence work as before. Every TBC add-on shares this licence code and WordPress runs the copy from the add-on that loads first, so keep your TBC add-ons current to get the whole saving.

📡 OTA & Internal

  • The website overlay asks for a photo or a cover only when the gate lists it as missing, as the app already did; its own requireAvatar / requireCoverPhoto flags are gone. The Gravatar check asks the URL Fluent Community shows with d=404 and caches the answer per URL (a week for a photo, a day for none), with one site-wide 15-minute flag while Gravatar is unreachable. The setting travels in the site snapshot.
  • The el, es_ES and nl_NL catalogs carry the five Minimum Age strings the template gained in 1.7.15.

1.7.15 — 2026-10-10

🛠 Fixed

  • "Saved" shows only when a save went through. The save bar on a settings page flashed "Saved" after every save, even one the site refused with an error. It now stays quiet when the page reports a refused save.

1.7.14 — 2026-10-07

Sync — lockstep bump, no plugin changes.

1.7.13 — 2026-10-07

Sync — lockstep bump, no plugin changes.

1.7.12 — 2026-10-03

✨ New

  • A clearer form for finishing a profile on the website. The overlay shows which step the member is on (profile, phone, email), groups the fields into cards (About you, Your details, Stay in touch), shows a radio field's answers as choices on the form, reminds members to include their country code with a phone number outside the US, shows the age under a date, and when something is missing names the first empty field and how many more there are. It looks the same as the app's version, and the new wording is translated into Spanish, Greek and Dutch.
  • Sign out from the form. A member who can't finish their profile can now sign out from the overlay instead of being stuck on it.
  • Minimum Age. Set an age, pick the birthdate field to read it from, and a member younger than that is held at the form with "You must be at least … to join." It works on a required date field while Require Custom Profile Fields is on, so the field picker lists only those.

🛠 Fixed

  • WordPress's "Check again" finds our updates. Dashboard › Updates › Check again now asks our licence server too, so an update we've just published shows at once instead of up to 12 hours later. Before, only the plugin's License tab Refresh did that.
  • A phone number that can't be right is caught before a code is sent. A short or malformed number (like "123") went to Twilio and came back as a failed send. The form now says "Please enter a valid phone number." before anything is sent.

📡 OTA & Internal

  • The site sorts each custom field into its card, so the app and the website overlay no longer guess from the field's name.

1.7.11 — 2026-09-29

🛠 Fixed

  • Security: texts and calls can't run up your Twilio bill. A code only goes out while a member's phone really needs verifying, at most 5 a day per member. We also recommend switching on Geo Permissions in Twilio Verify and turning off auto-recharge. Update soon.
  • The duplicate phone number check works with Fluent Community Pro fields whose names contain a dash. It was silently off.
  • Twilio's own error text stays in your log instead of being shown to the member.

1.7.10 — 2026-09-23

🛠 Fixed

  • A new email at the gate verifies with its code again. Since Fluent Community 2.10 the code always read as invalid.
  • The code is spent only once the new address is saved, and an address another account holds says so instead of reporting success.
  • The gate's email goes out through Fluent Community's mailer and template.

🔧 Changed

  • "Delete all plugin data" removes the license key too. With that switch on, uninstalling removes everything the plugin stored — the license key, its licenser records and cached checks included — so a reinstall asks for the key again. With it off, nothing is deleted, as before. Every TBC plugin now does the same; before, some kept the key and some did not.
  • The gate saves only an email address the member proved with a code. The "no verification" option is gone: an address nobody proved can belong to someone else, and Fluent Cart 1.6.4 and older handed that person's orders, licenses and downloads to whoever typed it.

📡 OTA & Internal

  • The header verdict comes from one place, and unused settings and fields go.
  • The shared licenser drops hooks and an argument nothing used, and its comments say what it does rather than how it got there.
  • Custom profile fields are read through Fluent Community Pro's own field service, and a checkbox-save workaround goes — WordPress already saves an unticked box.

1.7.9 — 2026-09-17

Sync — lockstep bump, no plugin changes.

1.7.8 — 2026-09-12

🛠 Fixed

  • Completing a profile never renames the member. Fluent Community rebuilds a member's display name out of the first and last name it is handed on a profile save. When the completion gate was not asking for a name, the website overlay sent back the WordPress first/last fields — which are blank on any account created with a display name only (an app-store review account, a test-kit account, a member added in WP Admin) and stale on any site running with user-sync off. So saving the profile renamed "App Reviewer" to "apptester", and the gate then refused the result as an incomplete profile: a member could be stuck in a loop that renamed them each time round. The gate now works out the pair of names that rebuilds the current display name exactly, and both the app's status answer and the website overlay send that, so a save with no name field in it leaves the name exactly as it was.
  • A field still missing brings the overlay back, not a dead end. When the server reported the profile still incomplete, the website overlay showed a message and stopped. It reloads on that answer now, so the member sees the remaining field and can finish.

🔧 Changed

  • The documentation describes the module as it is: a single-page form that asks only for the fields the server reports missing, plus the optional phone and email verification steps; routePrefixes as metadata the dashboard reads rather than something navigation depends on; and how module provider order actually works.

1.7.7 — 2026-09-07

Closes the gap a bot used this week: it signed up, ignored the completion screen entirely, and followed hundreds of members through the API. The gate now has teeth on the server, not just in the app and the browser.

✨ New

  • The website overlay is translatable, and ships Spanish, Greek and Dutch. Every string the completion overlay renders on the site comes from one list the plugin translates through gettext; a missing translation shows English rather than nothing.
  • The completion gate is enforced by the server. Until now the gate lived in what a member could see: the app showed the completion screen, the website showed the overlay, and both hid the community. A script never looks at either — it signs up and talks to Fluent Community's API directly with the session it was just handed, and nothing on the server asked whether the profile was complete. Now it does: while a profile is incomplete, every write to Fluent Community is refused — follow, post, comment, react, join a space, send a message. Anything a member does to their own account stays open (the profile save and photo upload the completion screen needs, and Fluent Community's own change-password and confirm-email flows), reads are never blocked, and site admins are never refused so nobody can lock themselves out. Real members notice nothing; they sign up, land on the same screen, verify the same way. The only thing that changed is what an account can do before it gets there. A new Enforce on the API checkbox on the Settings tab turns it off, for the rare site where a trusted integration writes to Fluent Community on behalf of brand-new members.
  • Block a whole country code, not just one number. Blocked Numbers now takes prefixes: end a line with and every number starting that way is refused before a code is ever sent — +234 covers all of Nigeria. A prefix is always written with its country code and a leading +. Full numbers keep working exactly as before.
  • Switch off Fluent Community's sign-up email code, per surface. Fluent Community emails a code at sign-up, and its web form and the app both ask the same helper — so until now the only way to drop it was a site snippet that dropped it everywhere. A new Sign-up Email Code setting on the Settings tab turns it off in the app only, on the website only, or everywhere, for sites where this gate verifies email or phone right after sign-up and asking twice is just friction. "Follow site" leaves things exactly as they are. The setting's help text also points at Twilio's own Geo Permissions, the switch that stops the SMS being sent to a country at all.

🔧 Changed

  • Existing members the manager lists as "Not verified" now lose write access until they verify. Before this release they only saw the overlay. If you have such members, "Mark ALL as verified" on the OTP tab readies them in one click, as it always has.
  • The admin explains itself on request, not on sight. The paragraphs printed beside each control — read once, taking room forever — are behind a ? now, the same one on every screen in the suite. Orientation goes behind it; warnings, legal text and anything describing what is currently set stay visible, because a message you have to click to discover is not a warning.

📡 OTA & Internal

  • Enforcement hooks rest_request_before_callbacks rather than rest_pre_dispatch, matching the app plugin's gates: a pre-dispatch short-circuit is a value later filters may replace (Advanced Custom Fields nulls it), which would silently un-refuse the request. The 403 still carries the X-TBC-Profile-Incomplete header because rest_post_dispatch runs regardless. Add-ons can widen the allow list with the tbc_pcom_api_guard_allow filter. New file: includes/class-api-guard.php.
  • The app's gate header has one author. The app plugin used to re-derive the X-TBC-Profile-Incomplete header from a user-meta flag this plugin mirrored, so two plugins wrote the same header and the second one won. The gate now writes that header itself, last, from its live completion check — whatever app plugin version is installed — and answers the app plugin's tbc_ca_profile_incomplete filter for good measure. The flag is gone (rows older versions wrote are cleared on uninstall).
  • The legacy custom-fields path on /complete is gone. Custom fields have gone through Fluent Community's own profile save since 1.7.5; the old direct write that bypassed FC's sanitising existed only for app bundles that hadn't pulled that OTA yet. Requires app module 1.7.5 or later.
  • Photo uploads from an incomplete member are budgeted per hour — enough for an avatar, a cover and some retries, not a library.

Profile Completion · WordPress plugin · web + app

Stop empty profiles.

Block new registrations and returning logins until a member has filled in the fields you require — bio, avatar, cover photo. No more faceless accounts and no more “User123” in your feed. It is a gate, not a suggestion.

3requirements you toggle independently — bio, avatar, cover photo
2doors covered — new sign-ups and returning logins alike
0ways past it — no close button, and the Android back button is blocked
1purchase covering both the website and the app

Three parts · one add-on

What it blocks, what members see, what you decide.

Click a tab. Every capture opens full size and is a real screen.

Profile Completion › How it works
Choose a view

Both doors, not just the new one

Nobody browses on an empty profile

Until the required fields are filled, a member cannot browse, post, comment or interact — on the web as a full-page overlay, in the app as a native gate screen.

  • New registrations — triggered straight after sign-up, before they ever see the community
  • Returning logins — a legacy account with a missing bio or avatar hits the gate next time it logs in
  • Not dismissable — the web overlay has no close button and the Android back button is blocked
  • Lifts itself — the moment the requirements are met, with no refresh prompt
The Profile Completion gate in the app, asking for the community's required fields in two cardsThe Profile Completion gate in the app, asking for the community's required fields in two cards
The gate: only what the community requires, nothing else reachable.
The phone verification step in the app, with six boxes for the codeThe phone verification step in the app, with six boxes for the code
Then a code to their phone, if you ask for one.
A completed member profile in the appA completed member profile in the app
And the profile you actually wanted.

A gate that does not feel like a wall

The fields, laid out like the real profile page

On the web it is a full-page overlay injected onto the portal — no separate page to configure and no redirect loop. The site stays visible behind a blurred backdrop, so it reads as part of the community rather than a modal bolted on.

  • Cover banner with overlapping avatar, both clickable to upload — the same layout as the real profile
  • Bio with a live character counter
  • Social links — reads the providers you have enabled and renders each with its icon chip and domain prefix
  • Your own profile fields — Fluent Community’s custom profile fields, grouped into cards, with a minimum age on a birthdate if you set one
  • A verified phone number — a six-digit code by text, or a voice call, before the gate lifts
  • In the app, the same steps used at registration, pre-filled with whatever the member already has
The Profile Completion overlay on the community website, over a blurred community pageThe Profile Completion overlay on the community website, over a blurred community page
The same gate on the website, the community blurred behind it.

One settings page

Three toggles and a master switch

The settings sit under the TBC Community App menu. Turn the gate off and it lifts instantly, with nothing to clean up.

  • Require bio, avatar and cover photo — each independently
  • Hide Fluent Community’s own “complete your profile” widget, so members see one prompt rather than two
  • Nothing forked — fields save through Fluent Community’s own endpoints, and the avatar check uses FC’s own source of truth
  • Optional cleanup on uninstall — settings and per-user meta removed if you want them gone
The Profile Completion settings screen in WordPress
Toggles, and a licence tab.

On the website · works on its own

  • Full-page overlay on Fluent Community portal pages
  • Inherits FC’s CSS variables, light and dark
  • Semi-transparent blurred backdrop — the community stays visible behind it
  • No separate page to configure, no redirect loop

In the app · only with the TBC Community App

  • A native gate screen, not an in-app browser
  • Uploads run through Fluent Community’s own media pipeline
  • Every authenticated request is checked, so the app routes to the gate the moment the server flags a profile
  • Your logo, accent colour and branding, with nothing configured twice

Pricing

One payment. Then it is yours.

A lifetime licence — no subscriptions, no renewals, every future update included. One licence per site, and you can move it yourself from the Licence tab without a support ticket.

Needs WordPress 5.8+, PHP 7.4+ and Fluent Community (free or Pro). The app is optional — the web overlay works with no other plugin. If twobirdscode.com is ever unreachable, the plugin keeps running for 14 days from its last successful licence check, so an outage on our end never touches your site.

Profile CompletionWordPress plugin · web + app$29
At checkout$29

0 Reviews

Loading reviews...

No reviews yet. Be the first to write a review!

Related Products

TBC App - Youtube Widget

TBC App - Youtube Widget

Your latest uploads on the home screen, tapping through to playlists and videos — cached server-side so it never burns API quota.

Price: $29.00
TBC App/Web - Multi Reactions

TBC App/Web - Multi Reactions

Facebook-style reactions on posts, comments and chat — unlimited custom animated icons, light and dark, web and app.

Price: $29.00
TBC App/Web - WooCommerce Addon

TBC App/Web - WooCommerce Addon

A native WooCommerce cart in the app: header icon with live badge, fast cart API, optional shop and checkout in Fluent Community.

Price: $29.00