Extend the portal through the front door
WooAccount Pro is built on the same public hooks documented below. If a seam exists, it is intentional and supported; if it doesn't, we want to hear why.
Filters
All filters use the namespaced wooaccount/… style and receive documented, typed payloads.
apply_filters( 'wooaccount/modules' )apply_filters( 'wooaccount/widgets' )apply_filters( 'wooaccount/portal/routes' )apply_filters( 'wooaccount/portal/absorbed_routes' )apply_filters( 'wooaccount/portal/base_url' )apply_filters( 'wooaccount/bootstrap' )apply_filters( 'wooaccount/strings' )apply_filters( 'wooaccount/nav/items' )apply_filters( 'wooaccount/layout/key' )apply_filters( 'wooaccount/layout/resolved' )apply_filters( 'wooaccount/theme/resolved' )apply_filters( 'wooaccount/theme/direction' )apply_filters( 'wooaccount/events/definitions' )apply_filters( 'wooaccount/orders/status_counts' )apply_filters( 'wooaccount/order/timeline' )apply_filters( 'wooaccount/order/shipment_entries' )apply_filters( 'wooaccount/migrations' )Actions
Lifecycle actions fire on the portal's event bus — payloads carry IDs, never assumptions.
do_action( 'wooaccount/booted' )do_action( 'wooaccount/rest/routes' )do_action( 'wooaccount/event' )do_action( 'wooaccount/event/{type}' )do_action( 'wooaccount/notification/created' )do_action( 'wooaccount/activated' )do_action( 'wooaccount/deactivated' )do_action( 'wooaccount/upgraded' )Two integrations, start to finish
Register a dashboard widget
add_filter( 'wooaccount/widgets', function ( $widgets ) {
$widgets[] = [
'id' => 'loyalty-points',
'label' => __( 'Loyalty points', 'my-plugin' ),
'dashboard'=> true,
'render' => fn () => '<div class="my-points">1,240 pts</div>',
];
return $widgets;
} );Add a portal route
add_filter( 'wooaccount/portal/routes', function ( $routes ) {
$routes['warranty'] = [
'kind' => 'module', // module|adapter|native
'title' => __( 'Warranty', 'my-plugin' ),
'nav' => [ 'section' => 'primary', 'icon' => 'shield' ],
'capability' => 'read',
];
return $routes;
} );The machine surface (coming with Pro)
wooaccount.com runs a versioned /api/v1 for licensing, activation, validation, updates and downloads — the same contract the plugin uses, documented for your tooling: signed responses, nonce + timestamp replay protection, per-key rate limits and idempotent webhooks. Full contract ships with the Pro release.
/api/v1/licenses/activate
/api/v1/licenses/validate
/api/v1/licenses/deactivate
/api/v1/updates/check
/api/v1/downloads/{product}/{version}
/api/v1/health
/api/webhooks/{provider}
Ed25519 signed responses