WP-CLI
Jetonomy ships a full WP-CLI surface covering every core domain of the plugin: 14 command roots in the free plugin and 15 command roots in Jetonomy Pro, totalling 75+ subcommands across both plugins.
The 14 free roots are the 13 domain commands listed under Free Commands below (category, space, post, reply, vote, flag, member, mod, notification, config, tag, user, scenario), plus the standalone qa-actions command, documented under Testing and QA Commands.
All free commands live under wp jetonomy <subject> <subcommand>.
All Pro commands live under wp jetonomy-pro <subject> <subcommand> (note the separate root - Pro commands require both plugins active).
On this local dev install you must prefix every wp call with --path:
wp --path="/path/to/wp" jetonomy space list
Customers running from their WordPress root directory can omit --path.
Free Commands
category
Manage top-level categories that group spaces.
| Subcommand | Description |
|---|---|
create |
Create a new category |
list |
List all categories |
update <id> |
Update category fields |
delete <id> |
Delete a category |
Flags - create: --name=<name> --slug=<slug> [--description=<text>] [--parent=<id>] [--format=<format>]
Flags - update: [--name=<name>] [--slug=<slug>] [--description=<text>] [--parent=<id>] [--sort=<order>] [--format=<format>]
wp jetonomy category create --name="General" --slug=general
wp jetonomy category create --name="Support" --slug=support --parent=1
wp jetonomy category update 3 --name="Renamed" --sort=10
wp jetonomy category list --format=json
space
Create and manage spaces (forums, Q&A boards, ideas boards, feeds).
| Subcommand | Description |
|---|---|
create |
Create a new space |
list |
List spaces |
update <id> |
Update space settings |
delete <id> |
Delete a space |
add-member |
Add a member to a space |
remove-member |
Remove a member from a space |
Flags - create: --title=<title> --slug=<slug> --category=<id> [--description=<text>] [--type=<type>] [--visibility=<vis>] [--join-policy=<policy>] [--format=<format>]
Types: forum (default), qa, ideas, feed. Visibility: public, private, hidden. Join policy: open, approval, invite.
Flags - update: All optional - [--title=<title>] [--description=<text>] [--type=<type>] [--visibility=<vis>] [--join-policy=<policy>] [--status=<status>] [--format=<format>]
wp jetonomy space create --title="General" --slug=general --category=1
wp jetonomy space create --title="Q&A" --slug=qa --category=1 --type=qa --visibility=private --join-policy=approval
wp jetonomy space update 5 --visibility=private
wp jetonomy space list --format=table
post
Create and manage posts within spaces.
| Subcommand | Description |
|---|---|
create |
Create a new post |
list |
List posts |
update <id> |
Update a post |
delete <id> |
Delete a post |
Flags - create: --space=<id> --author=<id> --title=<title> --content=<content> [--status=<status>] [--slug=<slug>] [--format=<format>]
Status values: published (default), draft.
Flags - update: [--title=<title>] [--content=<content>] [--status=<status>] [--slug=<slug>] [--format=<format>]
wp jetonomy post create --space=5 --author=3 --title="Hello" --content="First post"
wp jetonomy post create --space=5 --author=3 --title="Draft" --content="..." --status=draft
wp jetonomy post update 42 --title="New title"
wp jetonomy post list --format=json
reply
Create and manage replies on posts.
| Subcommand | Description |
|---|---|
create |
Create a reply |
list |
List replies for a post |
update <id> |
Update a reply |
delete <id> |
Delete a reply |
accept |
Mark a reply as the accepted answer |
Flags - create: --post=<id> --author=<id> --content=<content> [--parent=<id>] [--status=<status>] [--format=<format>]
Flags - accept: --post=<id> --reply=<id> [--format=<format>]
wp jetonomy reply create --post=42 --author=3 --content="Great idea"
wp jetonomy reply create --post=42 --author=3 --content="Nested reply" --parent=17
wp jetonomy reply accept --post=42 --reply=17
tag
Manage post tags.
| Subcommand | Description |
|---|---|
create |
Create a tag |
list |
List all tags |
update <id> |
Update a tag |
delete <id> |
Delete a tag |
get-by-slug |
Fetch a tag by its slug |
attach |
Attach a tag to a post |
detach |
Detach a tag from a post |
list-for-post |
List tags on a specific post |
Flags - create: --name=<name> [--format=<format>]
Flags - get-by-slug: --slug=<slug> [--format=<format>]
Flags - attach / detach: --post=<id> --tag=<id> [--format=<format>]
Flags - list-for-post: --post=<id> [--format=<format>] [--fields=<fields>]
wp jetonomy tag create --name="announcement"
wp jetonomy tag attach --post=42 --tag=7
wp jetonomy tag detach --post=42 --tag=7
wp jetonomy tag list-for-post --post=42
user
Manage community users - ban/unban, trust levels, profiles, and reputation.
| Subcommand | Description |
|---|---|
create |
Create a new WordPress + Jetonomy user |
ban <id> |
Ban a user site-wide |
unban <id> |
Remove a site-wide ban |
promote <id> |
Increase a user's trust level by one step |
demote <id> |
Decrease a user's trust level by one step |
set-trust <id> |
Set a user's trust level to an exact value (0-5) |
get-trust <id> |
Read a user's current trust level |
update-profile <id> |
Update display name, bio, or avatar URL |
adjust-reputation <id> |
Add or subtract reputation points |
Flags - create: --login=<login> --email=<email> [--password=<pw>] [--role=<role>] [--trust-level=<0-5>] [--display-name=<name>] [--format=<format>]
Flags - set-trust: --level=<0-5> [--format=<format>]
Flags - update-profile: [--display-name=<name>] [--bio=<bio>] [--avatar-url=<url>] [--format=<format>]
Flags - adjust-reputation: --delta=<int> (use negative values to subtract) [--format=<format>]
wp jetonomy user create --login=alice --email=alice@example.com
wp jetonomy user create --login=mod1 --email=m1@ex.com --trust-level=4 --role=editor
wp jetonomy user set-trust 42 --level=3
wp jetonomy user adjust-reputation 42 --delta=25
wp jetonomy user adjust-reputation 42 --delta=-10
wp jetonomy user update-profile 42 --bio="Hello world" --avatar-url="https://example.com/a.png"
member
Manage space membership - join, leave, and role assignment.
| Subcommand | Description |
|---|---|
add |
Add a user to a space (admin shortcut) |
remove |
Remove a user from a space |
promote |
Promote a member to moderator |
demote |
Demote a member from moderator |
join |
Record a user joining a space (respects join policy) |
leave |
Record a user leaving a space |
set-role |
Set a member's role directly |
is-member |
Check whether a user is a member |
Note: --by is used for the user ID in all subcommands because --user is a reserved WP-CLI global flag.
Flags - join: --space=<id> --by=<user_id> [--role=<role>] [--format=<format>]
Flags - set-role: --space=<id> --by=<user_id> --role=<role> [--format=<format>]
Flags - is-member: --space=<id> --by=<user_id> [--format=<format>]
wp jetonomy member join --space=15 --by=4
wp jetonomy member join --space=15 --by=4 --role=moderator
wp jetonomy member set-role --space=15 --by=4 --role=moderator
wp jetonomy member leave --space=15 --by=4
wp jetonomy member is-member --space=15 --by=4
vote
Cast and inspect votes on posts and replies.
| Subcommand | Description |
|---|---|
create |
Cast a vote (upvote or downvote) |
delete |
Retract a vote |
list |
List votes on a post or reply |
cast |
Alias for create with explicit flags |
Note: --voter is used for the voter's user ID because --user is a reserved WP-CLI global flag.
Flags - cast: --voter=<id> --type=<type> --id=<id> --value=<value> [--format=<format>]
Type: post or reply. Value: 1 (upvote) or -1 (downvote).
wp jetonomy vote cast --voter=3 --type=post --id=42 --value=1
wp jetonomy vote cast --voter=3 --type=reply --id=17 --value=-1
flag
Create and manage content flags (user reports).
| Subcommand | Description |
|---|---|
list |
List flags (filterable by status) |
resolve |
Resolve or dismiss a flag |
create |
File a new flag against a post or reply |
Note: --reporter is used for the reporting user ID because --user is reserved.
Flags - create: --type=<type> --id=<id> --reporter=<id> --reason=<reason> [--description=<description>] [--format=<format>]
Type: post or reply. Reason values: spam, harassment, off-topic, other.
wp jetonomy flag create --type=post --id=42 --reporter=3 --reason=spam
wp jetonomy flag create --type=reply --id=17 --reporter=3 --reason=harassment --description="Context here"
wp jetonomy flag list --format=json
notification
Trigger and inspect notifications.
| Subcommand | Description |
|---|---|
send |
Trigger a notification event |
list |
List notifications for a user |
trigger |
Alias for send with explicit flags |
mark-read |
Mark notifications as read for a user |
Note: --to is used for the recipient user ID because --user is reserved.
Flags - trigger: --type=<type> --to=<user_id> --actor=<user_id> --object-type=<type> --object-id=<id> --message=<text> [--format=<format>]
Flags - list: --to=<user_id> [--limit=<n>] [--offset=<n>] [--fields=<fields>] [--format=<format>]
wp jetonomy notification trigger --type=reply_to_post --to=1 --actor=2 --object-type=post --object-id=5 --message="Someone replied"
wp jetonomy notification list --to=1
wp jetonomy notification list --to=1 --limit=5 --format=json
config
Read and write Jetonomy settings using dotted key paths.
| Subcommand | Description |
|---|---|
get |
Read a setting value |
set |
Write a setting value |
list |
List all settings |
reset |
Reset a single key to its default |
reset-all |
Reset all settings to defaults |
keys |
List available keys under a parent path |
Flags - get: [--key=<dotted_path>] [--format=<format>]
Flags - set: --key=<dotted_path> --value=<value> [--format=<format>]
Flags - keys: [--key=<parent_path>] [--format=<format>] [--fields=<fields>]
wp jetonomy config get --key=trust_thresholds.1.posts
wp jetonomy config get --key=rate_limits --format=json
wp jetonomy config set --key=trust_thresholds.1.posts --value=7
wp jetonomy config set --key=notification_defaults.mention.email --value=false
wp jetonomy config keys --key=trust_thresholds
wp jetonomy config list
mod
Advanced moderation actions: bans, flag management, and content decisions.
| Subcommand | Description |
|---|---|
approve |
Approve flagged content |
spam |
Mark content as spam |
trash |
Trash content |
flags |
List flags with optional status filter |
resolve |
Resolve or dismiss a flag |
ban |
Ban a user (site-wide or space-scoped) |
unban |
Lift a ban |
is-banned |
Check whether a user is banned |
Note: --target is used for the affected user and --issuer for the moderator, avoiding the reserved --user flag.
Flags - flags: [--status=<status>] [--format=<format>] [--fields=<fields>]
Status values: valid, dismissed.
Flags - resolve: --resolver=<user_id> --decision=<decision> [--format=<format>]
Flags - ban: --target=<user_id> --issuer=<user_id> [--type=<type>] [--space=<id>] [--reason=<text>] [--expires=<datetime>] [--format=<format>]
Flags - is-banned: --target=<user_id> [--space=<id>] [--format=<format>]
wp jetonomy mod flags --status=valid
wp jetonomy mod resolve 42 --resolver=1 --decision=valid
wp jetonomy mod resolve 17 --resolver=1 --decision=dismissed
wp jetonomy mod ban --target=5 --issuer=1 --reason="spam"
wp jetonomy mod ban --target=5 --issuer=1 --type=space_ban --space=3
wp jetonomy mod ban --target=5 --issuer=1 --type=silence --expires="2026-05-01 00:00:00"
wp jetonomy mod unban 5
wp jetonomy mod is-banned --target=5 --space=3
scenario
Run end-to-end PHP scenarios that exercise full user journeys against the live database.
| Subcommand | Description |
|---|---|
run <name> |
Run a named scenario |
list |
List all available scenarios |
Flags - run: [--cleanup] (roll back all data created by the scenario) [--format=<format>]
Flags - list: [--format=<format>] [--fields=<fields>]
Bundled scenarios: basic-forum-flow, notification-delivery-sweep, multi-user-voting-thread, moderation-lifecycle, space-member-journey.
wp jetonomy scenario list
wp jetonomy scenario list --format=json
wp jetonomy scenario run basic-forum-flow
wp jetonomy scenario run notification-delivery-sweep --cleanup
wp jetonomy scenario run multi-user-voting-thread --format=json
Pro Commands
Pro commands use wp jetonomy-pro as the top-level namespace. Every Pro subcommand requires both Jetonomy (free) and Jetonomy Pro to be active.
extension
Enable, disable, and inspect Pro extensions.
| Subcommand | Description |
|---|---|
list |
List all extensions and their current state |
enable <id> |
Enable an extension |
disable <id> |
Disable an extension |
activate <id> |
Activate (boot) an extension that is already enabled |
deactivate <id> |
Deactivate a running extension |
status <id> |
Show status for a single extension |
wp jetonomy-pro extension list
wp jetonomy-pro extension list --format=json
wp jetonomy-pro extension enable private-messaging
wp jetonomy-pro extension disable polls
wp jetonomy-pro extension status webhooks
custom-fields
Manage custom fields that extend post or user objects.
| Subcommand | Description |
|---|---|
list |
List all defined custom fields |
create |
Define a new custom field |
delete <id> |
Remove a custom field definition |
Flags - create: --key=<slug> --label=<text> --type=<type> --applies-to=<target> [--description=<text>] [--options=<csv>] [--required] [--default=<value>] [--format=<format>]
Types: text, textarea, select, checkbox, number, url. Applies-to: post or user.
wp jetonomy-pro custom-fields create --key=company --label=Company --type=text --applies-to=user
wp jetonomy-pro custom-fields create --key=priority --label=Priority --type=select --applies-to=post --options="low,medium,high"
wp jetonomy-pro custom-fields list --format=json
wp jetonomy-pro custom-fields delete 4
white-label
Set white-label branding for the community frontend.
| Subcommand | Description |
|---|---|
set-logo |
Replace the community logo |
set-colors |
Set primary and accent brand colors |
wp jetonomy-pro white-label set-logo --url=https://example.com/logo.png
wp jetonomy-pro white-label set-colors --primary="#1a73e8" --accent="#fbbc04"
reactions
Manage emoji reactions on posts and replies.
| Subcommand | Description |
|---|---|
list |
List all reactions on an object |
purge |
Remove all reactions from an object |
add |
Add a reaction from a user |
remove |
Remove a user's reaction |
Note: --by is used for the acting user, --on-type and --on-id for the target object.
Flags - add / remove: --on-type=<type> --on-id=<id> --by=<user_id> --emoji=<slug> [--format=<format>]
wp jetonomy-pro reactions add --on-type=post --on-id=12 --by=1 --emoji=thumbsup
wp jetonomy-pro reactions add --on-type=reply --on-id=45 --by=2 --emoji=heart
wp jetonomy-pro reactions list --on-type=post --on-id=12
wp jetonomy-pro reactions purge --on-type=post --on-id=12
ai
Inspect and test the AI moderation / summarization provider.
| Subcommand | Description |
|---|---|
test-provider <provider> |
Send a test prompt to a named provider |
clear-cache |
Purge the AI response cache |
export-usage |
Export AI API usage records |
status |
Show current provider health |
list-providers |
List all configured AI providers |
provider-status <provider> |
Show status for a specific provider |
Flags - test-provider: [--prompt=<text>] [--format=<format>]
wp jetonomy-pro ai status
wp jetonomy-pro ai list-providers --format=json
wp jetonomy-pro ai test-provider anthropic --prompt="Say hi"
wp jetonomy-pro ai clear-cache
wp jetonomy-pro ai export-usage --format=json
advanced-moderation
Inspect and test automated moderation rules.
| Subcommand | Description |
|---|---|
list-rules |
List all active moderation rules |
test-rule <id> |
Test a rule against sample content |
wp jetonomy-pro advanced-moderation list-rules
wp jetonomy-pro advanced-moderation list-rules --format=json
wp jetonomy-pro advanced-moderation test-rule 3
custom-badges
Award and inspect custom reputation badges.
| Subcommand | Description |
|---|---|
list |
List all badge definitions |
award |
Award a badge to a user |
Flags - award: --badge=<id> --to=<user_id> [--format=<format>]
wp jetonomy-pro custom-badges list
wp jetonomy-pro custom-badges award --badge=5 --to=42
polls
Create and manage polls attached to posts.
| Subcommand | Description |
|---|---|
list |
List polls |
close <id> |
Close a poll early |
create |
Create a poll on a post |
get <id> |
Get poll details and current results |
vote |
Cast a vote on a poll option |
Note: --by is used for the voter user ID because --user is reserved.
Flags - create: --post=<id> --question=<text> --options=<csv> [--multiple] [--closes-at=<datetime>] [--format=<format>]
Flags - vote: --post=<id> --by=<user_id> and the option index/id.
wp jetonomy-pro polls create --post=12 --question="Favourite colour?" --options="Red,Green,Blue"
wp jetonomy-pro polls create --post=12 --question="Pick many" --options="A,B,C" --multiple
wp jetonomy-pro polls get 4
wp jetonomy-pro polls close 4
email-digest
Manage user email digest preferences and trigger sends.
| Subcommand | Description |
|---|---|
send-now |
Send a digest immediately for a user |
export-digests |
Export digest records |
get-prefs |
Get a user's digest preferences |
set-prefs |
Update a user's digest preferences |
Note: --for is used for the target user ID because --user is reserved.
Flags - get-prefs / send-now: --for=<user_id> [--format=<format>]
Flags - set-prefs: --for=<user_id> [--frequency=<frequency>] [--enabled] [--disabled] [--types=<csv>] [--format=<format>]
Frequency values: daily, weekly, off.
wp jetonomy-pro email-digest get-prefs --for=1
wp jetonomy-pro email-digest set-prefs --for=1 --frequency=weekly --enabled
wp jetonomy-pro email-digest set-prefs --for=1 --frequency=off
wp jetonomy-pro email-digest send-now --for=1
web-push
Manage browser push subscriptions and send push notifications.
| Subcommand | Description |
|---|---|
send |
Send a push notification to a user |
list-subscriptions |
List a user's active push subscriptions |
subscribe |
Register a push subscription for a user |
unsubscribe |
Remove a push subscription |
Note: --for is used for the subscriber user ID, --to for the notification recipient.
Flags - subscribe: --for=<user_id> --endpoint=<url> --p256dh=<key> --auth=<key> [--format=<format>]
Flags - unsubscribe: --for=<user_id> --endpoint=<url> [--format=<format>]
wp jetonomy-pro web-push list-subscriptions --for=1
wp jetonomy-pro web-push send --to=1 --title="New reply" --body="Alice replied to your post"
analytics
Export and report on community analytics.
| Subcommand | Description |
|---|---|
export |
Export raw analytics data |
report |
Print a formatted summary report |
overview |
High-level stats for a date range |
top-spaces |
Rank spaces by activity for a period |
Flags - overview: [--range=<range>] [--start=<date>] [--end=<date>] [--format=<format>]
Range values: 7d, 30d, 90d, custom. When using custom, provide --start=YYYY-MM-DD and --end=YYYY-MM-DD.
Flags - top-spaces: [--range=<range>] [--limit=<n>] [--format=<format>]
wp jetonomy-pro analytics overview --range=7d
wp jetonomy-pro analytics overview --range=custom --start=2026-03-01 --end=2026-03-15
wp jetonomy-pro analytics top-spaces --range=30d --limit=5
wp jetonomy-pro analytics export --range=30d --format=csv
seo-pro
Generate SEO sitemaps for community content.
| Subcommand | Description |
|---|---|
generate-sitemaps |
Rebuild all Jetonomy sitemaps |
wp jetonomy-pro seo-pro generate-sitemaps
webhooks
Manage outbound webhook endpoints.
| Subcommand | Description |
|---|---|
list |
List all registered webhooks |
test <id> |
Send a test ping to a webhook |
retry <id> |
Retry failed deliveries for a webhook |
create |
Register a new webhook |
update <id> |
Update webhook settings |
Note: --target-url is used instead of --url because WP-CLI reserves --url globally for multisite routing.
Flags - create: --target-url=<url> --events=<csv> [--name=<text>] [--secret=<text>] [--description=<text>] [--disabled] [--format=<format>]
Secret is auto-generated if omitted. Events are a comma-separated list of event slugs such as post.created, reply.created, user.registered.
Flags - update: [--target-url=<url>] [--events=<csv>] [--name=<text>] [--description=<text>] [--format=<format>]
wp jetonomy-pro webhooks list
wp jetonomy-pro webhooks create --target-url=https://example.com/hook --events=post.created,reply.created
wp jetonomy-pro webhooks create --target-url=https://example.com/hook --events=user.registered --disabled
wp jetonomy-pro webhooks test 3
wp jetonomy-pro webhooks retry 3
messaging
Manage private message conversations.
| Subcommand | Description |
|---|---|
export-conversations |
Export conversation records for a user |
purge-old |
Delete conversations older than a given age |
create-conversation |
Start a new private conversation |
send |
Send a message in an existing conversation |
Note: --by is the conversation initiator, --with is a comma-separated list of participant IDs, --from is the message sender.
Flags - create-conversation: --by=<user_id> --with=<csv> [--title=<text>] [--type=<type>] [--message=<text>] [--format=<format>]
Flags - send: --conversation=<id> --from=<user_id> --content=<text> [--format=<format>]
wp jetonomy-pro messaging create-conversation --by=1 --with=3,4
wp jetonomy-pro messaging create-conversation --by=1 --with=2 --message="Hi there"
wp jetonomy-pro messaging send --conversation=12 --from=1 --content="hello"
wp jetonomy-pro messaging export-conversations --by=1
reply-by-email
Configure and test inbound reply-by-email processing.
| Subcommand | Description |
|---|---|
configure |
Set SMTP / IMAP connection settings |
test-smtp |
Send a test email to verify outbound settings |
wp jetonomy-pro reply-by-email configure --host=mail.example.com --user=inbox@example.com
wp jetonomy-pro reply-by-email test-smtp
Testing and QA Commands
These commands run the built-in quality assurance suites against a live WordPress + Jetonomy install. Run them before every release to catch regressions early.
qa-actions (free)
Runs all four smoke-test phases in sequence and reports a pass/fail total. Takes no arguments.
| Phase | What it covers |
|---|---|
| Phase 1 | REST round-trip tests (creates, reads, deletes via the REST API) |
| Phase 2 | Model unit tests (direct model-layer assertions) |
| Phase 3 | Pro extension tests (skipped automatically on free-only installs) |
| Phase 4 | Journey smoke tests (C1-C12 - full end-to-end user journeys) |
wp jetonomy qa-actions
Expected output when all tests pass:
--- Jetonomy Action Tests ---
Phase 1: REST Round-Trip Tests
...
Phase 4: Journey Smoke Tests (C1-C12)
...
REST Tests: 42/42
Model Tests: 58/58
Pro Tests: 64/64
Journey Tests: 46/46
Total: 210/210 PASS
scenario run (free)
Run a named end-to-end scenario against the live database. Use --cleanup to roll back all data the scenario creates.
# List available scenarios first
wp jetonomy scenario list
# Run a scenario and keep the data (useful for manual inspection after)
wp jetonomy scenario run basic-forum-flow
# Run and clean up all created data
wp jetonomy scenario run notification-delivery-sweep --cleanup
wp jetonomy scenario run moderation-lifecycle --cleanup
Scenarios are PHP classes under includes/cli/scenarios/ and can be run directly by PHPUnit via composer test:combo if you prefer not to use a live database.