

Settings with options for theme color, currency labels, and admin bar/Gravatar control.
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:
This plugin is the core user system behind the Init Plugin Suite – optimized for frontend-first interaction, extensibility, and real-time gamification.
GitHub repository: https://github.com/brokensmile2103/init-user-engine
Profile & Avatar
[init_user_engine] – renders the guest login button or the logged-in avatar with dropdown dashboard automatically wp-admin/profile.php, the REST API and WooCommerce Account details your-theme/init-user-engine/Accounts, Login & Registration
wp-login.php wp-login.php) using the same Turnstile setup Gamification
VIP Membership
Referral
Redeem & VIP Codes
Inbox & Notifications
Admin Tools
Developer-Friendly
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> elementinit_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 deletioninit_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)init_plugin_suite_user_engine_profile_field_limits – Modify the maximum characters of the Edit Profile fields (keys display_name, bio, discord, url; values are clamped to the hard ceilings 250 / 10000 / 255 / 2048)init_plugin_suite_user_engine_profile_url_hosts – Domains accepted for the facebook, twitter and website fields (return an empty array to accept any domain)init_plugin_suite_user_engine_profile_genders – Allowed values of the Gender field (default '', male, female, other)init_plugin_suite_user_engine_profile_update_rate_limit – Edit Profile saves allowed per minute (default 10, 0 = no limit)init_plugin_suite_user_engine_require_current_password – Whether the current password is required to set a new one (default true, not recommended to turn off)init_plugin_suite_user_engine_current_password_attempts – Wrong current passwords allowed per 15 minutes (default 5)init_plugin_suite_user_engine_password_max_length – Maximum length of a new password (default 128)init_plugin_suite_user_engine_validate_new_password – Return a WP_Error to refuse a new password (for a stronger policy)init_plugin_suite_user_engine_avatar_mimes – File types accepted for avatar uploads (default jpg, png, gif, webp; SVG is never accepted)init_plugin_suite_user_engine_avatar_upload_rate_limit – Avatar uploads allowed per hour (default 10, 0 = no limit)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)init_plugin_suite_user_engine_after_update_profile – After a member saved the Edit Profile modal (user ID, submitted data without passwords)init_plugin_suite_user_engine_password_changed – After a member changed their password from the Edit Profile modal (user ID)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; limits: maximum characters per field; require_current_password) POST /profile/update – Update profile information. Every field is checked before anything is saved; errors return HTTP 400/403/429 with data.field naming the field. Changing the password needs current_password and returns a new nonceGET /daily-tasks – Get list of completed daily tasks and rewardsPOST /exchange – Convert Cash Coin based on exchange ratePOST /redeem-code – Redeem gift code (returns Coin/Cash rewards)This plugin is licensed under the GPLv2 or later.
You are free to use, modify, and distribute it under the same license.