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.
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!".
Auto-revoke when inviter is suspended
If a member gets suspended, mark all their `pending` invites as `revoked`.
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).
Closed-hired tracking
Show "Mark as hired from this network" prompt when poster archives. Drives the 25% close-hire stat.
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.
"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.
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
| Label | Slug | Members | Actions |
|---|---|---|---|
| Working remotely | working-remotely | 108 | |
| Looking for remote work | looking-for-remote-work | 14 | |
| Hiring remote | hiring-remote | 9 | |
| Sharing remote-life experiences | sharing-remote-life-experiences | 37 | |
| Digital nomad | digital-nomad | 22 | |
| Freelancer | freelancer | 41 |
Mentor topics rc_mentor_topic
| Label | Slug | Mentors | Actions |
|---|---|---|---|
| First remote role | first-remote-role | 18 | |
| Salary negotiation | salary-negotiation | 11 | |
| Going nomadic | going-nomadic | 7 | |
| US hours from EU/LATAM | us-hours-from-eu-latam | 6 | |
| Resume / portfolio review | resume-review | 14 | |
| Career switch to remote | career-switch-to-remote | 5 | |
| Building remote teams | building-remote-teams | 9 | |
| Hiring async-first | hiring-async | 4 | |
| Tax / admin for freelancers | tax-admin-freelancer | 6 | |
| Burnout + remote-life | burnout-remote | 3 |
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.
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.
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.
Pause logging
Useful when running a bulk import / migration that would otherwise flood the log.
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.