Database & Meta Reference
Pulse ledger, legacy vote tables, counter meta, post meta keys, and the votes_info REST field.
WP ULike stores votes in custom database tables and syncs counters to meta. From 5.2+, new installs (and migrated sites) use the Pulse ledger. Pro adds view tracking, sessions, and standard WordPress meta keys.
Table prefix: {wpdb->prefix} (typically wp_).
Overview for site owners: Pulse Storage Engine.
Pulse ledger (5.2+)
| Table | Purpose |
|---|---|
{prefix}ulike_pulse | Unified engagement ledger (likes, dislikes, emoji, stars) |
Important columns
| Column | Meaning |
|---|---|
item_id / item_type | Target (post, comment, activity, topic, …) |
engagement_kind | e.g. vote, emoji, star |
engagement_key | e.g. like, dislike, reaction key, star bucket |
value | Optional numeric value (star rating) |
status | active or removed |
date_time | Event timestamp |
user_id / ip / fingerprint | Actor identity |
country_code / device / os / browser | Audience fields (when available) |
dedupe_token | Unique token to prevent duplicate rows |
Modes: legacy → dual → pulse. See helpers wp_ulike_pulse_mode(), wp_ulike_pulse_read_mode(), wp_ulike_use_pulse_queries().
Legacy vote log tables
Still present on older sites until Storage Upgrade cleanup. Fresh Pulse-only installs may never create them for new votes.
| Table | Content type | Key column |
|---|---|---|
{prefix}ulike | Posts | post_id |
{prefix}ulike_comments | Comments | comment_id |
{prefix}ulike_activities | BuddyPress activities | activity_id |
{prefix}ulike_forums | bbPress topics | topic_id |
{prefix}ulike_meta | Counter cache | item_id + meta_group |
Legacy log row fields
user_id— WordPress user ID (0 for guests)item_id— post, comment, activity, or topic IDstatus—like,unlike,dislike,undislikeip— visitor IP (may be anonymized or empty)date_time— vote timestampfingerprint— guest vote fingerprint (when used)
Pro may add GeoIP columns on insert: country_code, device, os, browser.
Pro-only tables
| Table | Purpose |
|---|---|
{prefix}ulike_views | Page view tracking for engagement rate |
{prefix}ulike_sessions | Pro form and OAuth session data |
Counter meta (wp_ulike_meta API)
WP ULike maintains fast counter values in {prefix}ulike_meta. Use the meta API functions rather than querying directly:
wp_ulike_get_meta_data($item_id, 'post', 'like_amount', true);
wp_ulike_update_meta_data($item_id, 'post', 'like_amount', 42, 'like');
Meta groups: post, comment, activity, topic, user, statistics.
Only active like / dislike counters are cached in meta. Period filters and removed statuses (unlike / undislike) recount from the ledger (Pulse or legacy logs). Passing period "all" is treated as all-time (meta-safe), not as a date filter.
User meta group stores serialized vote history keyed by user_{type}_status.
Standard WordPress meta [pro]
When Enable Standard Meta Data is on under Posts or Comments settings, counters sync to native meta:
| Meta key | Description |
|---|---|
like_amount | Total likes |
dislike_amount | Total dislikes |
net_votes | Likes minus dislikes |
likes_counter_quantity | Legacy counter key (migration) |
dislikes_counter_quantity | Legacy counter key (migration) |
$likes = get_post_meta($post_id, 'like_amount', true);
Schema Generator post meta [pro]
Per-post structured data lives in post meta — not included in settings backup:
wp_ulike_pro_meta_box— main schema config flagwp_ulike_pro_{key}— type-specific schema fields (~50 keys)- FAQ repeater data, star rating overrides, review counts
Use Tools → Schema Generator or the post editor panel to manage these.
Editor panel meta [pro]
Per-post display overrides (when Show Display Panel In Post Editor is enabled):
Stored in post/comment meta via serialized format when Enable Serialized Data Storage is on. Run Convert to Serialized Format under Maintenance after enabling on upgraded sites.
REST field: votes_info [pro]
When Standard Meta Data is enabled, WordPress core REST responses for posts and comments include:
"votes_info": {
"like_amount": 42,
"dislike_amount": 3,
"likers_ids": [1, 5, 12]
}
Available on GET /wp-json/wp/v2/posts/{id} and GET /wp-json/wp/v2/comments/{id} when meta is enabled for that type.
Options stored outside backup scope
| Option | Purpose |
|---|---|
wp_ulike_settings | Settings panel (included in backup) |
wp_ulike_customize | Customizer (included in backup) |
wp_ulike_pulse_config | Pulse mode / migration state (not a settings backup field) |
wp_ulike_pro_display_rules | Display Automation (included via extensions) |
wp_ulike_rest_api_settings | REST config (included via extensions) |
wp_ulike_rest_api_keys | Bearer tokens (not in backup) |
wp_ulike_pro_license_key | License (not in backup) |
wp_ulike_use_inline_custom_css | CSS delivery mode |
Maintenance & GDPR impact
| Tool action | Affects |
|---|---|
Delete all logs | Legacy vote tables / ledger paths in use — run Sync Counters after |
Sync counter values | Rebuilds meta from logs / Pulse |
Delete view records | {prefix}ulike_views |
GDPR Remove Logs / core export-erase | User vote rows across legacy tables and Pulse |
See Maintenance Tools and GDPR tool.
Related: Pulse WP-CLI · Backup and Restore · Developer Functions
Related articles
Continue with these guides
Did this article help?
Pick how you feel, add a note if you want, then hit Send. It takes two seconds and helps us improve this guide.