Notifal replaces {tag} placeholders in templates with live data from orders, products, users, posts, and custom meta. These hooks let you register tags, change resolved values, and extend dynamic key discovery in the admin and REST API.
Index: Hook Reference Hub. REST: /wp-json/notifal/v1/tags and /wp-json/notifal/v1/dynamic-keys in REST API Reference.
Walkthrough: Cookbook: Add Custom Dynamic Tag.
Notification-specific tag context: notifal/onpage/tag/context in Notifications and Eligibility.
Tag registration (actions)
| Hook | Parameters | Description |
|---|
notifal/tag/register | TagManager $manager | After default tags registered; register custom tags here |
notifal/tag/manager/on_registered | Tag $tag | After a single tag is registered |
Pro comment tags: notifal_pro/comment_tags/register and notifal_pro/comment_tags/registered in Pro Integration Bridge.
Tag resolution (actions)
| Hook | Parameters | Description |
|---|
notifal/tag/before_resolve | Tag $tag, array $context | Before a single tag value is resolved |
notifal/tag/after_resolve | Tag $tag, string $value, array $context | After a single tag is resolved |
TagManager batch rendering (actions)
| Hook | Parameters | Description |
|---|
notifal/tag/manager/before_render | TagManager $tagManager, string $content, array $context | Before all tags in content are processed |
notifal/tag/manager/after_render | TagManager $tagManager, string $content, array $context | After all tags are replaced |
Tag value and content modification (filters)
| Hook | Parameters | Description |
|---|
notifal/tag/modify_value | string $value, Tag $tag, array $context | Override or adjust one tag's resolved value |
notifal/tag/manager/modify_rendered_content | string $content, array $context | Final HTML after all tag replacements |
Tag categories and REST (filters)
| Hook | Parameters | Description |
|---|
notifal/tag/categories | string[] $categories | Available tag category identifiers |
notifal/tag/api/modify_response | array $tags | Tags grouped by category from REST API |
| Hook | Parameters | Description |
|---|
notifal/tag/date/format | string $dateFormat, string $tagKey, string $dateValue | Date format string before formatting |
notifal/tag/date/result | string $formattedDate, string $dateFormat, string $tagKey, string $dateValue | Final formatted date string |
Used when admins pick custom meta fields for dynamic tags.
| Hook | Parameters | Description |
|---|
notifal/dynamic_keys/most_used | string[] $keys, string $type, string $postType | Most-used keys per entity type (user, order, product, custom_posttype) |
notifal/dynamic_keys/search_results | string[] $keys, string $search, string $type, string $postType | Search results for meta key picker |
WooCommerce product DTO (filter)
| Hook | Parameters | Description |
|---|
notifal/woocommerce/product/dto | ProductDTO $dto, WC_Product $wcProduct | Product DTO after build, before use in tags/widgets |
Post type discovery (filter)
| Hook | Parameters | Description |
|---|
notifal/post_type_discovery/excluded_types | string[] $excludedTypes | Post types excluded from automatic tag discovery |
Generated custom post type tags (actions)
Fired from settings when Pro-generated tags are saved (base plugin constants).
| Hook | Parameters | Description |
|---|
notifal/generated_tags/saved | none | Generated tags saved in settings |
notifal/generated_tags/removed | none | Generated tags removed from settings |
Content source counter tags (filters)
These filters adjust cached counts used by {order_counter}, {product_counter}, and related tags.
| Hook | Parameters | Description |
|---|
notifal/onpage/order_count | int $count, array $content_source_settings, array $filters | Filtered order count |
notifal/onpage/order_count/cache_timeout | int $timeout, array $content_source_settings | Order count cache TTL (seconds) |
notifal/onpage/product_count | int $count, ... | Product count |
notifal/onpage/post_count | int $count, ... | Post count |
notifal/onpage/page_count | int $count, ... | Page count |
notifal/onpage/comment_count | int $count, ... | Comment count |
notifal/onpage/custom_posttype_count | int $count, ... | Custom post type count |
notifal/onpage/content_source_count/cache_timeout | int $timeout, ... | Shared counter cache TTL |
Comment count/pool resolution when Pro is active uses notifal_pro_get_comment_count and notifal_pro_fetch_comment_pool (Pro bridge).
Pool and entity filter hooks: Display Rules and Content Source.
Module services (filter)
| Hook | Parameters | Description |
|---|
notifal/tags/services | string[] $services | Tags domain service class list |
What to read next
Hooks series
- Hook Reference Hub
- Hooks: Lifecycle and Bootstrap
- Hooks: Notifications and Eligibility
- Hooks: Templates and Rendering
- Hooks: Tags and Dynamic Data (you are here)
- Hooks: Display Rules and Content Source
- Hooks: Analytics and Tracking
- Hooks: Admin UI Extension
- Hooks: Pro Integration Bridge