Appearance
Earning Points
Rules live in Voxel Points → Earning. Each has a toggle, a point value, and (where repeatable) a Max / day. Changes autosave.
"Max / day" counts TIMES, not points. A rule worth 10 points with Max/day 3 lets a member earn from it three times a day — 30 points, not 3. Each rule has its own independent counter, 0 means unlimited, and counters reset at your site's midnight. The Max earns/day (all rules) field in the page header applies the same "number of times" limit across every rule combined.
| Rule | Awarded to | When | Notes |
|---|---|---|---|
| Order completed | Customer | Order approved or marked paid | Flat points. Test-mode and multi-vendor child orders never earn. Refunds/cancellations reverse automatically. |
| Order value | Customer | Same trigger | X points per Y spent, floored. Stacks with the flat award. |
| Review posted (per post type) | Reviewer | Review created | Once per member per reviewed post. Own posts never earn. Deleting the review reverses it. |
| Timeline post | Author | Status posted to a timeline or wall | Daily cap strongly recommended. |
| Comment posted | Author | Comment/reply approved | Commenting on your own post never earns. |
| Post approved (per post type) | Post author | Admin approves the post | Approval, not submission — pending spam earns nothing. |
| Followed someone | Follower | Follow | Once per unique pair; self-follows never earn. |
| Gained a follower | Followed member / listing owner | Follow | Once per unique follower. |
| Member registered | New member | Registration | One-time. |
| Profile completion | Member | Profile reaches 100% | Once ever. Counts visible, non-UI profile fields with a value. |
Anti-abuse built in: once-per-reference dedup (enforced at the database level), per-rule Max/day, an optional site-wide Max earns/day, and self-action guards. Only actual awards count toward a cap — attempts blocked by dedup or a self-action guard don't consume the budget.

Reversals
Points are clawed back automatically when the underlying thing is undone: orders refunded or canceled, reviews/timeline posts/comments deleted (including admin declines), and posts trashed or rejected after approval. A daily reconciliation sweep catches deletions that bypass the normal paths. Reversals are new ledger rows — history is never rewritten — and a reversed award frees its dedup slot, so legitimately re-approved content can earn again.

