Payments are currently processed in Iranian Toman with Iranian bank cards. Buying from outside Iran? Email us or message us on Telegram and we will arrange it.

User points and leaderboard

It keeps users on the site with points and competition: every minute of active presence earns points, but there are no points beyond 10 minutes on one page — so a user has to browse the site to climb the table. A top-50 table in a slide-out widget beside the site, with a prize you set yourself.

WordPress plugin v1.3.1 Update 1405/06/18
Version 1.3.1
File size 132 KB
Last updated 1405/06/18
Number of versions 1
Minimum WordPress version 5.6
Minimum PHP version 7.4
Compatibility WordPress 5.6 to 7.1 · PHP 7.4 to 8.3 · compatible with full-page caching (LiteSpeed, WP Rocket, Autoptimize) · WooCommerce optional · right-to-left and Jalali dates

At a glance

What is this? It keeps users on the site with points and competition: every minute of active presence earns points, but there are no points beyond 10 minutes on one page — so a user has to browse the site to climb the table. A top-50 table in a slide-out widget beside the site, with a prize you set yourself.
Latest version Version 1.3.1 — published on Wednesday, 18 Shahrivar 1405
File size 132 KB
License After purchase, a dedicated license key is issued and the plugin is activated on your domain with it.
Support and updates 6 months of free support and updates — get updates from the user panel
Guarantee Money-back guarantee for up to 7 days

Description

## The problem it solves

A visitor comes, reads one page, and leaves. They have no reason to browse the site, no reason to come back tomorrow, no reason to register.

This plugin gives them all three reasons.

## How it works

Every visitor — whether a member or a guest — earns points for **each minute of active presence**. “Active” means the tab is really open and visible and the user makes some movement; a tab abandoned in the background earns not a single point.

But here is the key point: **there are no points beyond 10 minutes on one page.** When the cap is reached, instead of a dry message, the plugin puts three fresh pages of your site in front of the user. The direct result: to earn points, the user has to browse your site, and exactly what every site wants happens — more pages, more time, more depth.

## A slide-out panel on the side of your site

A small handle beside the page that shows the user's rank. It opens with one click and tells them:

- What your rank is, out of how many people
- If you are not in the top 50, which **decile** you stand in — “rank 843” is discouraging, “third decile” is understandable and improvable
- Exactly how many points to the next rank and to first place
- Top-50 table, with two modes: “Total score” and “This month”
- Time spent on this very page, live

It is fully right-to-left, you set its main color yourself, it understands light and dark themes, and it sits properly on mobile too.

## Rewards — the reason users come back

A table with no prize at the top dies after two weeks. **You set the prize**, not the plugin: you place a prize on each rank or range of ranks — a product from the site, a service, a discount code, cash or bonus points — and it sits in front of everyone right at the top of the slide-out widget.

At the end of each month, winners are recorded automatically and a list with a “delivered / pending” status appears in front of you so no prize is forgotten. If you have WooCommerce, a “discount code” prize turns itself into a single-use code tied to the winner's email.

## Guests earn points too — and that’s what turns them into members

A guest's points are kept with a cookie. The moment they sign in, **all the points they have collected are transferred to their account**. A user near the top of the table who sees that the prize goes only to members has a real reason to register — not a decorative button.

## Seasonal competitions

The table has two modes: “Total score,” which never resets to zero, and “This month,” which starts over at the beginning of every **Jalali** month. Each season's table is archived with the names of the top three, and the champions receive a badge. A newcomer has a chance at the top, and a veteran's points are never lost.

## What earns points

- Each minute of active presence
- Every new page opened during the day
- First visit of each day
- Streak of consecutive days — each day more than the one before
- Approved comment
- Badges: Explorer, Marathon, Loyal, Veteran, Top Ten
- “Golden hour”: a window of the day with a multiplied score, to fill the quiet hours of the site
- A dedicated multiplier per user role, and a weekend multiplier

## For the site owner

- **Online panel**: who is on the site right now, how long they have stayed, and on which device
- **User login notifications**: a live counter in the WordPress admin bar, a webhook for a Telegram / Bale / Eitaa bot or any other service, and instant email alerts or a daily digest
- **Dashboard** with a 14-day chart, the pages that took the most time, and recent events
- Manually adjust points, block, or exempt any player
- Shortcode to show the table on any page, CSV export, and REST API

## Anti-cheat — without it, a leaderboard lasts a week

The server never takes the browser's word for it. The validated time is never more than the time that has really passed on the server clock, so sending back-to-back heartbeats earns no points. In addition:

- Daily score cap per person
- Time cap per page
- Single-tab lock: opening ten tabs of the site does not earn ten times the points
- Time in a hidden tab or while the user is idle is not counted at all
- Rate limiting on the endpoint, and excluding bots

## It doesn’t slow your site down

Each heartbeat runs only three simple primary-key queries. Summarizing, cleanup and closing the season all run in cron, not on the visitor's path. The leaderboard is cached and a personal rank is computed with a single indexed count, not by numbering the entire table.

It also works properly on a site with full-page caching: neither the visitor's identity nor the table's content ends up in the page HTML.

## Privacy

IP anonymization is on by default. No data about your visitors is sent to any server; the plugin's only outside connection is the license check with di9, which sends only the key and domain name. Data retention is adjustable and automatic cleanup runs.

## Built for RTL from the ground up

All dates are Jalali, the numbers are Persian, and the entire interface — panel and slide-out widget — is written right-to-left from the ground up, not a left-to-right template that has been flipped.

Version history

  1. Version 1.3.1 1405/06/18 132 KB
    - The side widget became a round button: the ring around it shows the share of the per-page cap already used, the live time on the page runs in the middle, and the rank sits below. The table opens with one click. - The leaderboard came alive: rows slide as they move, get ▲/▼ badges, and a user's rank increase is announced on the button. - On phones, the table became a full-width bottom sheet. - Season prizes are now collapsible so the table has more room. - Bug fix: on screens narrower than 640 pixels the widget was hidden, even when the “Hide on mobile” option was off. - Bug fix: on sites that merge JavaScript files into one file (LiteSpeed, WP Rocket, Autoptimize), the heartbeat settings were placed after the script itself and no time was ever counted. - Bug fix: the widget frame was printed after the footer scripts and was not created on sites without script merging. - Bug fix: with “Remove query strings” enabled in the cache plugin, a visitor's browser could keep running an old version of the script for a long time and never receive the update. - Bug fix: switching between the “All” and “This month” tabs could show the previous period's list under the new tab, and the number of people differed between the two tabs. - Removed one extra database write per scored heartbeat; the leaderboard cache now actually caches.

Frequently asked questions

What happens to guests' points?
It is kept with a cookie. The moment a guest signs in to an account, all the points they have collected are transferred to their account. This single feature is the best motivation you can give a user to register.
Who decides the prize for the top players?
you. The plugin never says what the prize should be; it only gives you a place to define it. You place a prize on each rank or range of ranks — a product, a service, a discount code, cash or bonus points — and it shows it in front of the user. At the end of each month it also records the winners and puts a “delivered / pending” list in front of you.
Can't someone earn fake points by leaving a tab open or by using a bot?
No. The validated time is never more than the time that has really passed on the server clock, so back-to-back heartbeats do not generate points. Time in a hidden tab or while the user is idle is not counted, opening several tabs counts as only one, each person has a daily score cap, and there is also a time cap on every page.
Does it not slow the site down?
Each heartbeat runs only three simple primary-key queries and the heavy work runs in cron. The leaderboard is cached and a personal rank is computed with a single indexed count. It also works properly on a site with full-page caching, because the user's identity and the table's content never end up in the page HTML.
Does it work with WooCommerce?
Yes, but it does not need it. If WooCommerce is active, a prize of the “discount code” type is automatically turned into a single-use code tied to the winner's email, valid for 90 days. Without WooCommerce everything works, and you deliver the prize yourself.
If the license expires, are the points deleted?
No. The plugin goes back to the free version and all the points, the leaderboard and the history are left untouched. When you reactivate, everything is right where it was.
What is unlocked during the seven-day trial?
Everything. The trial is exactly the full version. On day eight, if no purchase has been made, the plugin goes back to the free version without losing any data.
290,000 Toman

Related products

Co-Showcase
WordPress plugin

Co-Showcase

A rotating two-row showcase on the front page and a fair product exchange network between WordPress stores; free, two-way advertising that is safe for SEO.

Version 2.0.0
290,000 Toman
Diba Analyze WordPress statistics plugin
WordPress plugin

Diba Analyze WordPress statistics plugin

Professional WordPress analytics on your own host, with no external service: bot detection, threat analysis, automatic blocking and reporting — with a buffer architecture that cuts database load by about 98%.

Version 2.0.1
290,000 Toman
WordPress security plugin
WordPress plugin

WordPress security plugin

Separdezh is a WordPress security scanner plugin that identifies a site's important vulnerabilities and offers practical solutions to fix them.

Version 1.0
Free