Settings

Operator-only configuration for the whole site. Everything here writes to wp_options under remotejobs_* keys, except taxonomy terms (real WP terms) and email/Pusher credentials (deployment secrets).

General

Site identity. These show up in emails, OG tags, and the wordmark fallback.

Site name

Used in transactional email "from" name and the <title> suffix.

Tagline

One sentence used in OG meta and the invite-email subject.

Site locale

English only in v1 (per §1). Locked.

Timezone

Used for "X days ago" copy and audit-log timestamps in the UI.

Public registration

Disabled by design — the entire model assumes invite-only. Locked.

Off · cannot be enabled in v1

Invites

How invites get issued, when they expire, how many a member can have outstanding.

Default invite expiry

How long after issue a `pending` invite auto-flips to `expired` (§5 / §16 q6).

Max pending invites per member

Prevents a single member from flooding the funnel with un-redeemed invites.

Send invite-acceptance email to inviter

When invitee signs up, email the inviter: "Anna just accepted your invite!".

Enabled

Auto-revoke when inviter is suspended

If a member gets suspended, mark all their `pending` invites as `revoked`.

Enabled

Jobs

Default expiries, posting limits, archive behavior.

Default job expiry

Default option pre-selected on the post-job form. Members can override at post time.

Max open jobs per member

A member can't have more than N `open` jobs at the same time. 0 = no limit.

Warm-intro mechanic

The "Ask <poster> for intro" CTA on every job page (§17.1).

Enabled site-wide · members can opt out per-job

Closed-hired tracking

Show "Mark as hired from this network" prompt when poster archives. Drives the 25% close-hire stat.

Enabled

Mentorship

Kill switch + behavior for the Phase-4.5 mentorship surface (§17.1).

Mentorship feature

Master switch. When off: /mentorship 404s, profile panels hide, mentor-request templates disappear from the composer.

Enabled

"Mentees helped" counter window

A mentor request counts toward the mentor's `mentees_helped` counter if the mentor replies within this window.

Suggest mentors on home

The "Members ready to help right now" grid on /home. Off = the grid hides.

Enabled

Categories & mentor topics

Pre-seeded taxonomy terms. Members pick from these. Add new ones any time — adding doesn't break existing data.

Member categories rc_category

LabelSlugMembersActions
Working remotelyworking-remotely108
Looking for remote worklooking-for-remote-work14
Hiring remotehiring-remote9
Sharing remote-life experiencessharing-remote-life-experiences37
Digital nomaddigital-nomad22
Freelancerfreelancer41

Mentor topics rc_mentor_topic

LabelSlugMentorsActions
First remote rolefirst-remote-role18
Salary negotiationsalary-negotiation11
Going nomadicgoing-nomadic7
US hours from EU/LATAMus-hours-from-eu-latam6
Resume / portfolio reviewresume-review14
Career switch to remotecareer-switch-to-remote5
Building remote teamsbuilding-remote-teams9
Hiring async-firsthiring-async4
Tax / admin for freelancerstax-admin-freelancer6
Burnout + remote-lifeburnout-remote3

Email delivery

The remotejobs plugin uses standard wp_mail() everywhere — provider is a deployment choice (§13). Pick how outbound mail is dispatched on this install.

Provider

Pick the integration that's responsible for actually sending the bytes.

From address

SPF / DKIM should be set up for this domain on the provider side.

SPF + DKIM verified

API key

Stored encrypted in `wp_options`. Rotated values trigger a self-test send.

Unread-message digest

After N minutes of an unread chat message, email the recipient (§10 offline notifications).

Real-time messaging (Pusher)

Transport for live chat. Pusher Channels free tier or self-hosted Soketi — one-flip swap (§10).

Backend

Same Pusher protocol on both — no client-side changes when switching.

App ID

Key & secret

Public key surfaces in the browser; secret signs channel-auth on the server only.

Cluster / host

Current usage · this month

Free tier: 100 concurrent connections, 200k messages/day.

68% of message cap 42 of 100 connections

Importer

Server-side URL fetch hardening for signup auto-import (§7.4). Defaults are conservative — only loosen if you know why.

Allowed schemes

Locked at http / https. Cannot enable file:// or ftp:// for SSRF safety.

Max redirects

Total timeout (seconds)

Max response size (MB)

Audit log

What gets recorded into wp_rc_audit_log and for how long (§17.1).

Retention

Rows older than this are purged daily. admin.* rows are exempt (kept forever).

Record IPs

Off = the IP column on /admin/activity always reads "—". Privacy-stricter, abuse-investigation-weaker.

Enabled · IPs stored hashed after 30 days

Pause logging

Useful when running a bulk import / migration that would otherwise flood the log.

Off · logging active

Danger zone

Irreversible operations. None of these run without an explicit confirmation modal asking you to type the operation name.

Purge expired invites

Delete all `wp_rc_invites` rows with status `expired` older than 90 days. Tokens are already useless — this just trims the table.

Hard-purge all soft-deleted accounts

Run the §16 q7 hard-purge on every account currently in soft-deleted state. Irreversible. Null foreign keys on connections / messages / jobs.

Re-build connection counters

Recomputes denormalized `connection_count` per user from `wp_rc_connections`. Use after a manual DB edit.

Export full database snapshot

Single ZIP with every table the plugin owns + media library. For migration or off-site backup.

Site shutdown

Soft shutdown: keeps data, blocks all writes, shows a "we're winding down" banner. For graceful sunset only.

Unsaved changes in General, Invites, Email.