ToolkitCustomizeWidgetsDirectoryCustomize — Visibility Engine

DirectoryCustomize — Visibility Engine — Help

Gate logged-out visitors on member profiles with cutoff/fade, paywall, or button-only treatments — plus a rules engine for fine-grained per-viewer control.

Visibility Engine — profile gating preview

What it does

Visibility Engine controls what logged-out (or otherwise gated) visitors can see on any widget across your directory site. It does not replace the widget — BD still renders the full natural content first, then the engine overlays the gating treatment on top. Three modes ship out of the box:

  1. Buttons only — the widget stays fully visible; action buttons (Send Message / See Phone / Write Review on profiles, or equivalent actions on other widgets) get rewritten to drive sign-up
  2. Cutoff & Fade — the widget renders up to a chosen point, the rest fades out, and a sign-up CTA card sits below the fade
  3. Paywall — the full widget renders behind a blur, and a centered CTA card overlays it

On top of those modes, a Visibility Rules engine lets you return a different verdict (show / hide / blur / show_full) per viewer based on auth state, plan, page type, device, time of day, and more. Rules give you per-viewer control without having to ship code.

The most common use case is gating member profiles for logged-out visitors, but the engine works on any widget — sidebars, contact forms, search result cards, custom sections, and more. If it renders on the page, VE can gate it.

Mode picker

Configure via Plugins → DirectoryCustomize → My Widgets → Visibility Engine → Configure → Settings.

Mode Best for What the visitor sees
Buttons only Public directories where listings should stay open but the action buttons should drive sign-up Full widget content visible, but action buttons redirect to your sign-up flow
Cutoff & Fade Most directories — best balance of value and gating Widget renders up to your chosen point, then a fade with a CTA card sitting below
Paywall Premium directories where content access is the paid benefit Full widget blurred behind a CTA overlay
Cutoff and Fade mode — profile fades out after the About section with a sign-up CTA card below
Cutoff & Fade mode
Paywall mode — Members Only overlay with lock icon and sign-up button
Paywall mode

Cutoff mode options

When mode is Cutoff & Fade, two extra fields appear:

Setting Default What it controls
Cutoff after which element After About Where the fade begins. Options: Header only · After Tab Nav · After Quote / Slogan · After About
About text character limit 250 Only relevant when cutoff = After About — truncates the About text after N characters before the fade
Non-first tabs treatment None Applies to Specialties / Reviews / Photos / any tab beyond the first. Options: None · Dim · Disable · Hide entirely

About the "After Tab Nav" option — this shows the tab BUTTONS but fades the tab CONTENT. It's the strongest teaser pattern: visitors see there are more tabs (Reviews, Photos, Specialties, etc.) without seeing what's in them, which drives sign-up curiosity.

Header buttons treatment

The Send Message / See Phone / Write Review buttons at the top of the profile have their own behavior settings, independent of the mode. Pick how each behaves for logged-out viewers:

Treatment What happens
No change Buttons work as normal
Dim Visible but partly transparent — still clickable
Disable Visible but greyed out and unclickable
Rename + redirect Replace each button's label and link with your sign-up CTA (e.g. "Sign Up to Contact" → /join)
Hide entirely Remove the buttons completely

When you pick Rename + redirect, three text/URL pairs appear so you can customize each button independently — useful for tracking which button drives the most sign-ups (set different UTM params per button).

Phone number in the profile body

Separate from the header See Phone button, the profile body has a .table-display-phone row showing the actual digits. The engine treats this independently:

Mode What it does
Show Phone visible as normal
Hide Remove the phone row from the profile body
Mask Replace digits with •••••• (preserve the row layout)
Replace Show a custom prompt that links to sign-up

Common pattern: keep the header "Sign Up to See Phone" button visible as a sign-up driver, but still Hide or Mask the digits row so logged-out viewers can't read the number elsewhere on the page.

CTA card

The CTA card is the only piece the engine actually renders itself — everything else is BD's native rendering with overlays. Six fields control its content:

Field Default Use
CTA heading Want to learn more about this member? Top line of the card
CTA subtitle Create a free account to view full profiles… Subtext under the heading
Button text Sign Up Free Call to action label
Button URL /join Where the button sends visitors
Login prompt text Already a member? Smaller line under the button
Login URL /login Where the login link sends existing members

Design tab

The Design tab gives you complete visual control over the CTA card, sign-up button, and overlay effects. Everything else on the page inherits your site's native styling so the gated treatment blends in.

Colors

CTA card — Background, border, corner radius (Square / Subtle / Rounded / Pill), shadow (None / Subtle / Medium / Strong).

Headline & body — Heading color, subtitle color, login link color.

Sign-up button — Background, text color, size (Small / Medium / Large / Extra Large), corner radius (Square / Subtle / Rounded / Pill).

Typography

Full font control for every text element on the CTA card — each section lets you pick a font family, size, and weight:

CTA heading — Font family (15 fonts, each previewed in its own typeface), font size, weight (Normal through Extrabold).

CTA subtitle — Font family, font size, weight (Light through Semibold).

Sign-up button — Font family, weight (Normal through Bold). Button size is set in the Colors section.

Overlay effects

Cutoff fade — Fade height (None / Subtle / Medium / Strong) — controls how tall the gradient is before the CTA card sits below.

Paywall blur — Blur intensity with a live preview (Hint / Subtle / Medium / Strong) — controls how much of the content is readable behind the overlay.

Visibility Rules

Rules let you override the default mode behavior per viewer. They evaluate top-to-bottom and the first matching group wins — the engine returns a verdict and the consuming widget interprets it.

How rules are organized

Rules live in rule cards — one card per widget that reads the engine. Each widget you gate gets its own card in the authoring UI, so you can set independent rules for profiles, sidebars, search results, or any other gated widget.

Inside a card:

  • A default action dropdown sets the verdict when no rule group matches
  • One or more rule groups each return a specific verdict when their conditions match
  • Groups can be enabled/disabled independently and reordered

The four verdicts

Verdict What it means Member-profile behavior
show Show full (override the default gate) Widget rendered fully, no cutoff or paywall
hide Hide / restrict Cutoff mode treatment applied
blur Blur / paywall Paywall overlay applied
show_full Always show, no engine action Same as "show" — engine takes no action

Different widgets interpret the verdicts in their own way. For example, a member profile maps hide to the cutoff fade, while a search-result card might map blur to a grayscale overlay.

Context keys — what you can match on

Key Value type What it captures
Auth status Logged in / Logged out Is the viewer signed in?
Viewer role Admin / Member / Anonymous Account type of the visitor
Viewer plan ID Numeric Subscription_id of the visitor
Viewed profile plan ID Numeric Subscription_id of the profile being viewed
Page type Member profile (more coming) Which BD page template is rendering
URL path Text Request URI path, e.g. /united-states/los-angeles/…
Referrer URL Text Where the visitor came from
Device type Mobile / Desktop Detected from User-Agent
Time of day 0–23 Server-time hour
Day of week 0 (Sun) – 6 (Sat) Day of week
Listing age (days) Numeric Days since the profile was created

Operators

The operator dropdown filters automatically to only show operators valid for the chosen key's value type — so you won't see "auth > something" or "viewer_plan contains foo".

Operator Works with
equals / does not equal Enum, numeric, text
is one of / is none of Enum, numeric, text — accepts a comma list
is empty / is not empty Enum, numeric, text — no value needed
>, <, >=, <= Numeric only
contains / does not contain / starts with / ends with Text only

AND / OR — the alternating depth pattern

Rule groups use Simplero's alternating-by-depth pattern:

  • The root of each group picks AND or OR — you choose at the top of the tree
  • Nested groups alternate automatically — if root is AND, nested groups are OR, and groups nested inside those are AND again
  • Each level shows a pill button labeled with its current operator — click it to flip the root, or to add a sibling/child condition

This keeps complex rules readable at a glance: you always know that a child level is the opposite of its parent.

Example rule patterns

Block paid-tier directories from logged-out viewers, free-tier from anyone

Default: show
Group 1: When (Viewed plan ID is one of: 5,7,12) → blur

Visitors hit the paywall on premium plans; everyone else sees full profiles.

Show full profile on mobile after hours, gate during business hours

Default: hide
Group 1: When (Device = Mobile) AND (Time of day >= 18 OR Time of day < 8) → show

Off-hours mobile visitors get full access; daytime visitors get the cutoff fade.

Always show admins the full profile, never gate them

Default: hide
Group 1: When (Viewer role = Admin) → show

Admins bypass the engine entirely.

Stale listings get blurred to encourage refresh

Default: show
Group 1: When (Listing age >= 365) → blur

Profiles over a year old get the paywall treatment so the member feels the pressure to update.

Integrations

The Visibility Engine talks to a couple of other DirectoryCustomize widgets when both are installed. Each integration appears as its own card on the Settings tab.

Highlighter integration

The Highlighter widget styles individual tabs (Reviews, Premium, etc.) with ribbons, glows, and animations. VE talks to it in two ways:

Toggle What it does
Keep highlighted tabs visible when hiding tabs When Non-first tabs treatment is set to Hide, tabs that Highlighter has marked stay visible alongside Overview. Logged-out viewers see exactly which premium tabs they would unlock.
Apply Highlighter effect to sign-up CTA box Adds a Highlighter animation (corner ribbon, pulse glow, gentle throb, shimmer sweep, bounce, underline fill) to the sign-up CTA card so it pops. Works in all three modes.
Highlighter style for CTA box Pick which animation to apply, or leave empty to inherit Highlighter's site-wide default.

Both toggles are mirrored on Highlighter's own Configure panel — saving in either place updates the other. The CTA glow color also follows whatever Highlighter is configured for site-wide, so the brand color stays consistent.

DirectoryAds integration

When DirectoryAds is installed and Show ad slots behind paywall blur is on, ad slots render behind the blurred profile content in paywall mode. You monetize the impression even when the viewer can't read the profile. (Only applies in paywall mode — other modes either don't blur or don't cover the page.)

Common questions

Visitors who are already signed in still see the cutoff fade — why?
By default the engine only activates for logged-out viewers (the Enable Visibility Engine for logged-out visitors toggle). If signed-in members are also getting gated, you probably have a rule group whose verdict is hide or blur matching their context. Open the Visibility Rules tab and review your rule groups top-to-bottom — check which group matches on Auth = Logged in with their plan ID. Most common fix: add a top-priority rule with condition Viewer role = Member → verdict show.

What's the difference between Cutoff and Paywall mode?
Cutoff & Fade shows the natural page up to a chosen element (header / quote / about / first tab) and fades the rest with the CTA card sitting below. Paywall renders the full profile, blurs all of it, and overlays the CTA card on top. Cutoff is the softer treatment (visitors see real preview value); Paywall is the harder gate (visitors see structure but no content). Pick based on how much pressure you want to put on sign-up.

Can I set different rules for different membership plans?
Yes — that's exactly what the rules engine is for. Use the Viewer plan ID context key (the visitor's own subscription_id) or Viewed profile plan ID (the profile being viewed) with an "is one of" operator and a comma list of plan IDs. Find your plan IDs in your directory's membership-plans admin. The plan-ID picker in the rule builder also reads your live plan list so you can pick by name.

Do rules run before or after the mode setting?
Rules run first. The engine evaluates rule groups top-to-bottom; first matching group wins and its verdict is applied. If no group matches, the verdict falls back to the card's Default if no rule matches dropdown. Only then does the mode setting (Buttons only / Cutoff / Paywall) translate the verdict into actual rendering. So a rule saying "Show full to admins" wins regardless of which mode you picked.

Will reverting the widget to default lose my rules and CTA text?
No. Customer settings (your CTA text, mode picks, rules, design colors) are stored separately from the widget's code. Revert / Reinstall only swaps the underlying code — your saved settings carry over to the new version. This applies to Visibility Engine and every other DirectoryCustomize widget that's been migrated to the new settings store.

Why are tabs disappearing when I turn off "Keep highlighted tabs visible"?
That toggle only takes effect when Non-first tabs treatment is set to Hide entirely. If tabs treatment is None / Dim / Disable, the toggle has no effect because tabs are already visible. If treatment is Hide, the toggle decides whether Highlighter-marked tabs survive the hide or get removed with the rest. Turn it on to keep premium tabs visible as a teaser; turn it off if you want a completely clean Overview-only view.

Does the Visibility Engine affect SEO?
Buttons-only mode is SEO-neutral — search engines see the full profile. Cutoff and Paywall modes serve the full profile HTML to search engines (they receive the same content as a logged-in viewer) — the gating is applied client-side via JS, after the page has rendered. So your indexed content stays intact. That said, if you want different content served to crawlers vs. real visitors, that's a separate setup and can risk cloaking penalties — talk to support before going there.

Can I preview what a logged-out visitor sees without signing out?
Open the profile in a private / incognito window. The engine activates whenever the visitor is logged-out (or whenever a rule overrides to hide / blur), so an incognito window is the cleanest preview. The Test Verdict panel on the Configure screen also lets you simulate any context combination — useful for testing rules against plans / roles / devices you don't have accounts for.

How many rule groups can I add per widget?
No hard limit. The engine evaluates them top-to-bottom and stops at the first match, so order matters — put your most-specific rules first and your catch-alls last. For performance, the engine short-circuits as soon as a group matches, so even with dozens of groups the per-request cost is minimal.

Where it lives

In your DirectoryCustomize plugin admin: Plugins → DirectoryCustomize → My Widgets → Visibility Engine.

Three configuration tabs:

  1. Profile Settings — mode picker, cutoff options, header button treatment, phone display, CTA card content, integrations, per-plan customization
  2. Visibility Rules — per-widget rule cards with condition builder
  3. Design — CTA card colors, typography (fonts, sizes, weights), fade height, paywall blur intensity

Saves apply immediately on the profile page — no rebuild or republish needed.

Need more help?

If a rule isn't behaving the way you expect:

  1. Open the Visibility Rules tab and review your rule groups top-to-bottom
  2. Check which group would match the visitor's context and what verdict it returns
  3. If a group fires that shouldn't — review its conditions (the operator filter prevents most nonsense matches, but typos in text values can slip through)
  4. If no group fires when one should — check that the group is Enabled (the checkbox at the top of each group)

Still stuck? Contact support with:

  • Your directory URL
  • The visitor's context (auth state, plan ID, device, page they were viewing)
  • A screenshot of your Rules tab showing the groups in question