{"id":11385,"date":"2026-05-30T15:29:47","date_gmt":"2026-05-30T07:29:47","guid":{"rendered":"https:\/\/aeosub.com\/activitypilot\/"},"modified":"2026-05-30T15:29:47","modified_gmt":"2026-05-30T07:29:47","slug":"activitypilot","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/activitypilot\/","title":{"rendered":"ActivityPilot"},"content":{"rendered":"<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/s.w.org\/plugins\/geopattern-icon\/activitypilot.svg\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/piyushmultidots\/\" target=\"_blank\" rel=\"noopener\">Piyush Asthana<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.0.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">7.0 \/ 7.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-30 7:16am GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/activitypilot\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Track, visualize, and analyze admin and user activity in a timeline UI with break detection, workflows, REST API, and exportable audit logs.<\/div>\n<p>ActivityPilot is an activity log and audit-trail plugin for developers, agencies, and security-conscious site owners. Meaningful changes on your site \u2014 logins, content edits, plugin and theme operations, role changes, high-impact options, integrations, and more \u2014 are stored in a dedicated database table and shown in a modern admin timeline.<\/p>\n<h4>Privacy defaults<\/h4>\n<ul>\n<li>External-service features are <strong>opt-in<\/strong>.<\/li>\n<li>Geolocation (<code>ip-api.com<\/code>) is <strong>disabled by default<\/strong> (<code>enable_geo = 0<\/code>).<\/li>\n<li>Outbound webhooks (Slack\/Discord\/Teams\/custom URL) are <strong>disabled by default<\/strong> until you enable them and provide destination URLs.<\/li>\n<li>The plugin does not send data to third-party services unless you explicitly enable and configure those features.<\/li>\n<\/ul>\n<h4>Why use this plugin?<\/h4>\n<ul>\n<li><strong>Custom tables<\/strong> \u2014 logs live in <code>{prefix}apwpm_activity_logs<\/code> (not post meta) with indexes for fast queries.<\/li>\n<li><strong>Modern admin UI<\/strong> \u2014 dashboard, timeline, filters, search, pagination, exports, dark mode, and keyboard shortcuts.<\/li>\n<li><strong>Security-first<\/strong> \u2014 capability checks, REST nonces, prepared SQL, output escaping, and optional sudo mode for destructive actions.<\/li>\n<li><strong>Break detection<\/strong> \u2014 spots error spikes and surfaces recent risky changes.<\/li>\n<li><strong>Extensible<\/strong> \u2014 REST API (<code>activitypilot\/v1<\/code>), hooks, custom event registry, and PSR-3 adapter.<\/li>\n<\/ul>\n<h4>Core features<\/h4>\n<ul>\n<li>Activity logging for logins, posts, plugins, themes, users, roles, and important site options<\/li>\n<li>Timeline view with avatars, severity colors, and structured context<\/li>\n<li>Filters by user, action, object type, severity, date range, status, assignee, and search<\/li>\n<li>CSV and JSON exports; daily retention pruning via cron<\/li>\n<li>Email alerts when break detection finds unusual error activity<\/li>\n<li>Workflow: acknowledge, resolve, snooze, assign, and comment on events<\/li>\n<li>Smart insights: bursts, off-hours access, role escalation, and statistical spikes<\/li>\n<li>Optional rollback for supported change types (sudo-gated)<\/li>\n<li>Analytics heatmap, hour-of-day chart, and top users<\/li>\n<li>Scheduled HTML digest reports (daily, weekly, monthly)<\/li>\n<li>Multisite support with per-site tagging and network overview<\/li>\n<li>Hash-chain integrity verification (optional)<\/li>\n<li>File integrity monitoring, IP throttle, PII redaction, GDPR export\/erase helpers<\/li>\n<li>Integrations: WooCommerce, ACF, popular form builders, SEO plugins, page builders<\/li>\n<li>Optional outbound webhooks (Slack, Discord, Microsoft Teams, generic URL)<\/li>\n<li>WP-CLI: <code>wp apwpm list|count|verify|prune|purge|export|digest|scan-files<\/code><\/li>\n<\/ul>\n<h4>For developers<\/h4>\n<p>Log custom events from your code:<\/p>\n<pre><code>APWPM_Logger::log( array( 'action_type' =&gt; 'my_event', 'description' =&gt; 'Something happened' ) );\n<\/code><\/pre>\n<p>Filter hooks include <code>apwpm_skip_log<\/code>, <code>apwpm_pre_insert_row<\/code>, and <code>apwpm_register_event_types<\/code>. The shorter <code>ap_*<\/code> hook names from earlier builds are still fired for backward compatibility.<\/p>\n<h3>External services<\/h3>\n<p>This plugin can connect to third-party services <strong>only when you enable the related feature<\/strong> and, for webhooks, when you provide URLs.<\/p>\n<h4>IP geolocation (optional)<\/h4>\n<p>When <strong>Enable geolocation<\/strong> is on, the plugin may send the visitor IP address to <a href=\"http:\/\/ip-api.com\/\" rel=\"nofollow ugc noopener\" target=\"_blank\">ip-api.com<\/a> to resolve country and city. No API key is required. Results are cached in WordPress transients (about 24 hours). See the <a href=\"https:\/\/ip-api.com\/docs\/legal\" rel=\"nofollow ugc noopener\" target=\"_blank\">ip-api privacy policy<\/a> for their terms.<\/p>\n<ul>\n<li>Data sent: IP address (in the request URL).<\/li>\n<li>When: On log insert for events that include an IP, if geo is enabled and not already set.<\/li>\n<li>Purpose: Display country\/city on timeline rows and detect logins from new countries.<\/li>\n<\/ul>\n<h4>Outbound webhooks (optional)<\/h4>\n<p>When webhooks are enabled and URLs are saved in settings, the plugin sends HTTP POST requests to <strong>your<\/strong> endpoints (for example Slack, Discord, Microsoft Teams, or a custom URL) when qualifying events occur.<\/p>\n<ul>\n<li>Data sent: Event title, description, severity, site name, and related metadata you configure to receive.<\/li>\n<li>When: After an event is logged that meets your minimum severity threshold.<\/li>\n<li>Purpose: Notify external chat or monitoring systems.<\/li>\n<li>Services\/endpoints: Slack, Discord, Microsoft Teams, or any custom HTTPS endpoint that you explicitly configure.<\/li>\n<li>Terms\/privacy (when using those services):<br \/>\nSlack: https:\/\/slack.com\/terms-of-service , https:\/\/slack.com\/privacy-policy<br \/>\nDiscord: https:\/\/discord.com\/terms , https:\/\/discord.com\/privacy<br \/>\nMicrosoft Teams (Microsoft): https:\/\/www.microsoft.com\/servicesagreement , https:\/\/privacy.microsoft.com\/privacystatement<\/li>\n<\/ul>\n<p>Webhook delivery is fully optional and disabled by default. No webhook requests are sent until you enable webhooks and provide at least one destination URL.<\/p>\n<p>The plugin does not include bundled third-party API keys. Geolocation and webhooks are optional and disabled by default until configured by a site administrator.<\/p>","protected":false},"excerpt":{"rendered":"<p>Track, visualize, and analyze admin and user activity in a timeline UI with break detection, workflows, REST API, and exportable audit logs.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[696,697,1093,664,1572,555],"class_list":["post-11385","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-activity-log","tag-audit-log","tag-monitoring","tag-security","tag-timeline","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=11385"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11385\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=11385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=11385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=11385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}