About this plugin
Init User Engine is a lightweight, no-bloat user system for modern WordPress sites. It’s designed for maximum frontend flexibility and gamified user engagement. All dynamic interfaces are rendered via JavaScript with real-time REST API interaction.
No jQuery. Minimal settings. Smart by default.
What you get:
- Display user avatar and dashboard via shortcode
- Show level, EXP, Coin/Cash, and full user wallet
- Frontend login & registration modal with Cloudflare Turnstile (or built-in math captcha) protection
- Let users check-in daily and receive timed rewards
- Auto-track referral registrations with reward system
- Let users buy VIP status using Coin, Cash, or both
- Redeem Code / Gift Code and dedicated VIP Code system, with CSV export from wp-admin
- Built-in inbox for notifications (uses custom DB table), with pinned/expiring messages and a stats dashboard
- Custom avatar support with upload & preview modal
- Send custom notifications to selected users or all members from wp-admin
- Optional “Require Login to Access Site” mode that gates the entire frontend behind the built-in login modal
- Optional one-step “Login After Register” so new users land on the site already signed in
This plugin is the core user system behind the Init Plugin Suite – optimized for frontend-first interaction, extensibility, and real-time gamification.
com/brokensmile2103/init-user-engine
Features
Profile & Avatar
- Avatar shortcode [init_user_engine] – renders the guest login button or the logged-in avatar with dropdown dashboard automatically
- Modal dashboard showing level, EXP progress, Coin/Cash wallet, and quick links
- Custom avatar upload with live preview, crop-free flow, and one-click revert to the default/Gravatar image
- Configurable upload policy (allow everyone, VIP only, or disable uploads entirely) with a configurable max file size
- Optional display name change limit (e.g. once every 7 days, like TikTok), enforced in the profile modal, wp-admin/profile.php, the REST API and WooCommerce Account details
- Theme override support: any template file can be overridden by copying it to your-theme/init-user-engine/
Accounts, Login & Registration
- Frontend login & registration modal – no theme editing or template overrides required
- “Login After Register” option to automatically sign users in right after they create an account (disabled by default)
- Failed logins reopen the login modal on the current page with an inline error message, instead of redirecting to wp-login.php
- Cloudflare Turnstile captcha on registration, with a built-in math-question captcha as automatic fallback when no Turnstile keys are set
- Optional protection of the native WordPress login, registration, and lost-password forms ( wp-login.php ) using the same Turnstile setup
- “Forgot password?” form right inside the login modal, using the native WordPress reset flow (can be turned off; a custom Lost Password URL always takes priority)
- Custom redirect URLs for “Register” and “Lost password” links
- Optional “Require Login to Access Site” mode that gates the entire frontend behind the built-in login modal
- Ability to temporarily disable new registrations without affecting other plugins or WordPress core
Gamification
- EXP & Level system with hookable progression logic
- Coin & Cash dual-wallet system with transaction logs and a configurable exchange rate between the two currencies
- Daily check-in with streak milestones and an online-time bonus timer
- Optional Streak Recovery: members who miss a few days can spend Coin to keep their check-in streak alive (allowed missed days and Coin price per day are configurable, off by default)
- Built-in reward hooks for registration, daily login, comments, published posts, and completed WooCommerce orders (when WooCommerce is active)
VIP Membership
- VIP membership system with Coin-based, Cash-based, or combined purchase options
- Multiple configurable pricing tiers per duration, including a lifetime option
- VIP bonus multipliers for Coin/EXP earning
- Optional VIP purchase lock (globally disable new purchases) and stacking restriction
Referral
- Referral module with cookie-based signup tracking
- Separate, configurable rewards for both the referrer and the newly referred user
Redeem & VIP Codes
- Redeem Code / Gift Code module – code in, rewards out
- Dedicated VIP Codes module to grant VIP duration through a code
- One-click CSV export for both code lists (full list, streamed in batches, UTF-8 BOM, and sanitized against CSV/formula injection)
Inbox & Notifications
- Built-in inbox system with pagination and read/claim/delete actions
- Pinned messages that automatically unpin once read, or once their optional expiration time passes
- Admin panel to send custom notifications to selected users or all members, with priority and expiration
- Inbox Statistics dashboard (Users → Init User Engine → Inbox Statistics) with date-range filtering
- Optional automatic cleanup of read messages older than a set number of days (unread, pinned and assigned-code messages are always kept)
Admin Tools
- Manual Top-up tool for Coin/Cash (Users → Init User Engine → Top-up Coin/Cash)
- Per-user overview metabox on the WordPress profile/edit-user screen (level, wallet, VIP status, recent activity), with one-click Remove VIP, Ban Avatar Upload and Unlock Display Name actions
Developer-Friendly
- REST API for all features (read/write/modify)
- Action/filter hooks for full customization
- Pure Vanilla JS frontend – no jQuery, no server bloat
Developer Hooks
Filters
- init_plugin_suite_user_engine_online_minutes – Modify required online minutes after check-in
- init_plugin_suite_user_engine_vip_prices – Modify VIP package prices
- init_plugin_suite_user_engine_referral_rewards – Modify referral rewards
- init_plugin_suite_user_engine_localized_data – Modify frontend JS data
- init_plugin_suite_user_engine_calculated_coin_amount – Modify Coin reward before apply
- init_plugin_suite_user_engine_calculated_exp_amount – Modify EXP reward before apply
- init_plugin_suite_user_engine_exp_required – Modify EXP required per level
- init_plugin_suite_user_engine_checkin_milestones – Set milestone streak days
- init_plugin_suite_user_engine_format_inbox – Modify formatted inbox data
- init_plugin_suite_user_engine_render_level_badge – Customize level badge HTML
- init_plugin_suite_user_engine_inbox_insert_data – Modify inbox data before inserting into database
- init_plugin_suite_user_engine_validate_register_fields – Validate or modify registration fields before account creation
- init_plugin_suite_user_engine_after_register – Hook after successful user registration (pass user ID and submitted data)
- init_plugin_suite_user_engine_daily_tasks – Add or modify daily task list and logic
- init_plugin_suite_user_engine_captcha_bank – Extend or modify the internal captcha question bank used for fallback validation
- init_plugin_suite_user_engine_format_log_message – Customize transaction log message display with access to entry data, source, type, and amount
- init_plugin_suite_user_engine_should_keep_original – Override decision to keep original uploaded avatar (GIF or other formats)
- init_plugin_suite_user_engine_vip_expire_soon_threshold – Modify the threshold (in seconds) used to determine when VIP is considered close to expiration
- init_plugin_suite_user_engine_body_vip_classes – Add, remove, or modify VIP-related CSS classes applied to the <body> element
- init_plugin_suite_user_engine_theme_colors – Modify theme color system (primary and active colors)
- init_plugin_suite_user_engine_streak_restore_max_days – Modify how many missed check-in days a user may cover to keep their streak (return 0 to disable it for that user)
- init_plugin_suite_user_engine_streak_restore_cost – Modify the Coin cost of keeping a streak (receives total cost, missed days, and user ID)
- init_plugin_suite_user_engine_lostpassword_modal_enabled – Enable or disable the lost password form inside the login modal (receives the current value and the plugin settings)
- init_plugin_suite_user_engine_display_name_change_days – Modify how many days a member has to wait between two display name changes (receives the days from the settings and the user ID; 0 = unlimited)
- init_plugin_suite_user_engine_display_name_limit_applies – Return false to let a user (or role) change their display name freely (receives the current value and the user ID)
- init_plugin_suite_user_engine_inbox_auto_delete_days – Modify how many days read Inbox messages are kept before automatic deletion ( 0 = never)
- init_plugin_suite_user_engine_inbox_auto_delete_keep_meta_keys – Metadata keys that mark an Inbox message to keep during automatic deletion (default created_by )
- init_plugin_suite_user_engine_inbox_auto_delete_batch / init_plugin_suite_user_engine_inbox_auto_delete_time_limit – Ids per DELETE (default 5000) and seconds per run (default 20) of the automatic deletion
- init_plugin_suite_user_engine_dashboard_stats_max_age – How old (in seconds) the Dashboard Inbox widget numbers may be before a background refresh (default 900)
Actions
- init_plugin_suite_user_engine_level_up – When user levels up
- init_plugin_suite_user_engine_exp_added – After EXP is added
- init_plugin_suite_user_engine_transaction_logged – After Coin/Cash is logged
- init_plugin_suite_user_engine_exp_logged – After EXP log is recorded
- init_plugin_suite_user_engine_inbox_inserted – After new inbox message
- init_plugin_suite_user_engine_inbox_auto_deleted – After an automatic cleanup of read Inbox messages finishes (number deleted, cutoff)
- init_plugin_suite_user_engine_referral_completed – When referral is completed
- init_plugin_suite_user_engine_after_checkin – After user check-in
- init_plugin_suite_user_engine_streak_restored – After a user paid Coin to keep their check-in streak (user ID, missed days, cost, new streak)
- init_plugin_suite_user_engine_after_claim_reward – After user claims reward
- init_plugin_suite_user_engine_vip_purchased – After VIP is purchased
- init_plugin_suite_user_engine_add_exp – Triggered when adding EXP via hook
- init_plugin_suite_user_engine_add_coin – Triggered when adding Coin via hook
- init_plugin_suite_user_engine_coin_changed – After user’s Coin balance is updated
- init_plugin_suite_user_engine_cash_changed – After user’s Cash balance is updated
- init_plugin_suite_user_engine_admin_send_notice – When admin sends notification via wp-admin.
- init_plugin_suite_user_engine_display_name_unlocked – After an administrator lets a member change their display name again (user ID)
REST API Endpoints
Base: /wp-json/inituser/v1/
- POST /register – Create a new user account
- POST /checkin – Daily check-in (optional JSON body: prompt_restore, restore_streak, restore_cost for Streak Recovery)
- POST /claim-reward – Claim reward after online duration
- GET /transactions – Get Coin/Cash transaction log
- GET /exp-log – Get EXP log
- GET /inbox – Get inbox messages
- POST /inbox/mark-read – Mark a message as read
- POST /inbox/mark-all-read – Mark all as read
- POST /inbox/delete – Delete a single message
- POST /inbox/delete-all – Delete all messages
- POST /vip/purchase – Purchase VIP package
- GET /referral-log – Get referral history
- POST /avatar – Upload new avatar
- POST /avatar/remove – Remove custom avatar and revert to default
- GET /profile/me – Get current user profile (includes display_name_limit: days, locked, next_change, notice )
- POST /profile/update – Update profile information
- GET /daily-tasks – Get list of completed daily tasks and rewards
- POST /exchange – Convert Cash → Coin based on exchange rate
- POST /redeem-code – Redeem gift code (returns Coin/Cash rewards)
License
This plugin is licensed under the GPLv2 or later.
You are free to use, modify, and distribute it under the same license.