Developer

Admin Pages

A Pro add-on registers submenu pages under the NimblyMail parent menu by listening on nimbly_mail_admin_menu (single-site) or nimbly_mail_network_admin_menu (multisite network admin). Both hooks pass the parent slug so the add-on never needs to hard-code it. Adding a Submenu Page Under NimblyMail Signature: do_action( 'nimbly_mail_admin_menu', string $parent_slug ) Fires during admin_menu immediately after NimblyMail registers its […]

Secondary Hooks

These hooks cover failure alerts, email controls, and log queries. They are lower-traffic extension points compared to mailers, tools, and dashboard widgets, but are high-value for Pro features such as per-recipient alert routing, WooCommerce-specific email toggles, and custom log queries. Failure Alert Hooks NimblyMail sends an email notification when mail delivery fails. Four hooks let […]

nimbly_mail_active_mailer — Filter the Active Mailer

Type: Filter Arguments: 3 Fired in: Processor::get_active_mailer() Since: 1.0.0 Overview Fires every time NimblyMail selects which AbstractMailer will handle a pending wp_mail() call. Attach a handler here to implement rule-based routing or backup-connection retry without touching the persisted mail.mailer option. Important This filter fires once per send, after the configured mailer is resolved from options […]

nimbly_mail_pre_send — Short-Circuit Before Delivery

Type: Filter Arguments: 3 Fired in: Processor::pre_send_filter() on the wp_mail filter at priority 5 Since: 1.0.0 Overview Fires early in the wp_mail chain, before Logger captures the attempt and before PHPMailer is invoked. Returning true from any handler signals that the handler has accepted responsibility for the message — NimblyMail will then return true to […]

nimbly_mail_mail_sent — Action After Successful Send

Type: Action Arguments: 2 Fired in: Processor::handle_success() (via wp_mail_succeeded) Since: 1.0.0 Overview Fires after every successful wp_mail() delivery. Provides a normalised payload matching the shape Logger writes to the database, so analytics handlers and rollups do not need a second query to the nimbly_mail_logs table. Important This action fires only on success. Delivery failures continue […]

Extensibility (Pro Add-ons)

NimblyMail is built to be extended. A companion Pro plugin — or any third-party code — can register new mailers, tool tabs, dashboard widgets, REST endpoints, and admin pages without forking NimblyMail or shipping a Vue bundle for common controls. The hooks listed here ship as 1.0.0 public API. Hook Reference Filters Filter Purpose Docs […]

Mailers

Navigation: NimblyMail > Settings > Connection A Pro add-on registers a new email provider by extending NimblyMailMailersAbstractMailer and hooking into nimbly_mail_mailers. Once registered, the mailer appears automatically in the Connection tab card picker, its settings section is rendered under the card, and it participates in the setup wizard — without editing any core file. Registering […]

Tools

Navigation: WP Admin > NimblyMail > Tools The Tools page renders tab panes from a server-side registry. A Pro add-on registers tool tabs by filtering nimbly_mail_get_tools. For most tools — date pickers, text fields, action buttons — no Vue code is required. A narrow custom-renderer escape hatch exists for rule-builder UIs and other components that […]

Dashboard Widgets

Navigation: WP Admin > NimblyMail > Dashboard The dashboard renders an extension slot below the Recent Activity table. A Pro add-on injects widgets by filtering nimbly_mail_dashboard_widgets. Six built-in widget types cover the majority of use cases without any Vue code. A custom type is available when a bespoke component is required. Widget Descriptor Reference Key […]

Field Types

FieldRenderer.vue renders PHP field descriptors into Ant Design Vue form controls. Every field type works in both the Settings form and the generic GenericTool renderer, so Pro add-on authors write field descriptors once and see consistent output in both contexts. All Supported Types Type Renders Schema keys Modeled value text a-input id, group, label, placeholder, […]