All Free Triggers Reference: User, Post, Comment, Media, and WooCommerce
This page is the complete reference for every trigger included in the free Krom Automation plugin. Each trigger entry covers what event fires it, what WordPress hook it uses, every data field it exposes, and typical use cases.
Use this page when you need to look up what data a specific trigger makes available for merge tags or conditions.
WooCommerce triggers are included in the free plugin but only activate when WooCommerce is installed and active on your site.
Quick reference #
| Trigger name | Category | Trigger ID |
|---|---|---|
| User Registered | User | user_registered |
| User Profile Updated | User | user_updated |
| User Login | User | user_login |
| User Logout | User | user_logout |
| User Role Changed | User | user_role_changed |
| User Deleted | User | user_deleted |
| Password Reset | User | password_reset |
| Post Published | Post | post_published |
| Post Updated | Post | post_updated |
| Post Deleted | Post | post_deleted |
| Post Status Changed | Post | post_status_changed |
| Comment Submitted | Comment | comment_submitted |
| Comment Approved | Comment | comment_approved |
| Media Uploaded | Media | media_uploaded |
| WooCommerce Order Created | WooCommerce | woocommerce_order_created |
| WooCommerce Order Completed | WooCommerce | woocommerce_order_completed |
User triggers #
User Registered
Fires when a new user account is created on the site, regardless of how registration happened — the default WordPress registration form, WooCommerce checkout, a membership plugin, or any other method that calls the user_register hook.
WordPress hook: user_register
| Field | Type | Description |
|---|---|---|
user_id | number | WordPress user ID |
user_login | text | Username |
user_email | Email address | |
display_name | text | Display name |
first_name | text | First name (from user meta) |
last_name | text | Last name (from user meta) |
phone | text | Phone number (from user_phone, phone, or billing_phone meta) |
user_url | text | User’s website URL |
user_registered | text | Registration date |
roles | array | Assigned roles |
Common uses: Welcome email sequence, admin notification of new signups, auto-assigning user meta on registration, syncing new users to a CRM.
User Profile Updated
Fires when a user saves changes to their WordPress profile. Fires on any profile update, including email address changes and display name changes.
WordPress hook: profile_update
| Field | Type | Description |
|---|---|---|
user_id | number | User ID |
user_login | text | Username |
user_email | New email address | |
display_name | text | New display name |
first_name | text | First name |
last_name | text | Last name |
user_url | text | Website URL |
roles | array | Current roles |
old_user_email | Email address before the update | |
old_display_name | text | Display name before the update |
Common uses: Notifying an admin when a user changes their email address, syncing updated profile data to third-party systems, maintaining an audit log of profile changes.
User Login
Fires each time a user successfully logs in to the WordPress site.
WordPress hook: wp_login
| Field | Type | Description |
|---|---|---|
user_id | number | User ID |
user_login | text | Username |
user_email | Email address | |
display_name | text | Display name |
first_name | text | First name |
last_name | text | Last name |
roles | array | User roles |
login_time | datetime | Login timestamp |
Common uses: Updating a “last login” user meta field, logging login activity, triggering security alerts based on login conditions.
Note: This trigger fires on every login. On sites with many active users, this can generate a high volume of workflow executions. Use conditions and run control carefully. If you only need to track the first login per user, set Run Control to Run once per entity.
User Logout
Fires when a user logs out using WordPress’s standard logout mechanism.
WordPress hook: wp_logout
| Field | Type | Description |
|---|---|---|
user_id | number | User ID |
user_login | text | Username |
user_email | Email address | |
display_name | text | Display name |
first_name | text | First name |
last_name | text | Last name |
roles | array | User roles |
logout_time | datetime | Logout timestamp |
Common uses: Session tracking, activity logging.
User Role Changed
Fires when an existing user’s WordPress role is changed. This trigger does not fire when a new user registers, even if a role is assigned at registration.
WordPress hook: set_user_role
| Field | Type | Description |
|---|---|---|
user_id | number | User ID |
user_login | text | Username |
user_email | Email address | |
display_name | text | Display name |
first_name | text | First name |
last_name | text | Last name |
new_role | text | The role that was just assigned |
old_roles | array | Roles before the change |
current_roles | array | Roles after the change |
Common uses: Notifying a user when they’ve been upgraded to a new role, triggering an onboarding email sequence for new editors or authors, granting or revoking access to content based on role.
User Deleted
Fires immediately before a user is permanently deleted from WordPress. Because this fires before deletion completes, the user’s data is still accessible through the trigger fields.
WordPress hook: delete_user
| Field | Type | Description |
|---|---|---|
user_id | number | ID of the deleted user |
user_login | text | Username |
user_email | Email address | |
display_name | text | Display name |
first_name | text | First name |
last_name | text | Last name |
roles | array | Roles at time of deletion |
reassign_to | number | User ID that the deleted user’s posts were reassigned to (nullable — may be empty) |
deleted_at | text | Deletion timestamp |
Common uses: Archiving user data to an external system before the account is deleted, notifying an admin of account deletion.
Password Reset
Fires after a user successfully completes a password reset. It does not fire when a reset link is requested, only after the new password is saved.
WordPress hook: password_reset
| Field | Type | Description |
|---|---|---|
user_id | number | User ID |
user_login | text | Username |
user_email | Email address | |
user_nicename | text | URL-friendly name |
display_name | text | Display name |
first_name | text | First name |
last_name | text | Last name |
roles | array | User roles |
reset_date | text | Date and time of the reset |
reset_timestamp | number | Unix timestamp of the reset |
Common uses: Sending a security confirmation email after a successful password reset, logging password reset events, re-triggering an onboarding sequence after account recovery.
Post triggers #
Post Published
Fires when a post of type post transitions to publish status for the first time. It does not fire when a post is re-published after being unpublished, and it does not fire for pages or custom post types. Use the Post Status Changed trigger for those scenarios.
WordPress hook: transition_post_status
| Field | Type | Description |
|---|---|---|
post_id | number | Post ID |
post_title | text | Post title |
post_content | textarea | Full post content |
post_excerpt | textarea | Post excerpt |
post_url | url | Permalink |
post_type | text | Post type |
post_date | text | Publish date |
post_author_id | number | Author’s user ID |
post_author_name | text | Author’s display name |
post_author_email | Author’s email address | |
categories | array | Category names |
tags | array | Tag names |
Common uses: Notifying subscribers or an editorial team that a new post is live, auto-generating a post excerpt with AI, pinging external APIs or services on publication.
Post Updated
Fires when an already-published post is updated and saved. It does not fire on the initial publish event — only on subsequent saves to a post that already has publish status.
WordPress hook: post_updated
| Field | Type | Description |
|---|---|---|
post_id | number | Post ID |
post_title | text | New title |
post_content | textarea | New content |
post_excerpt | textarea | New excerpt |
post_url | url | Permalink |
post_modified | datetime | Modified date |
post_author_name | text | Author’s name |
post_author_email | Author’s email address | |
categories | array | Categories |
tags | array | Tags |
old_title | text | The title before the update |
old_content | textarea | The content before the update |
Common uses: Notifying an editor when a post is revised, logging content change history, re-generating SEO data when post content changes.
Post Deleted
Fires when a post is permanently deleted from WordPress. This trigger does not fire when a post is moved to the trash — only when it is permanently removed. Use Post Status Changed to catch the trash transition.
WordPress hook: before_delete_post
| Field | Type | Description |
|---|---|---|
post_id | number | Post ID |
post_title | text | Post title |
post_content | textarea | Post content |
post_type | text | Post type |
post_status | text | Status at the time of deletion |
post_date | text | Original publish date |
post_url | url | Permalink (captured before deletion) |
post_author_id | number | Author’s user ID |
post_author_name | text | Author’s name |
post_author_email | Author’s email address | |
categories | array | Categories |
tags | array | Tags |
deleted_at | text | Deletion timestamp |
Common uses: Archiving deleted content to external storage before it disappears, notifying an admin when a post is permanently removed.
Post Status Changed
Fires on any post status transition for any post type. This includes draft to pending, pending to publish, publish to trash, and any other status change. Because it fires for all post types (posts, pages, and custom post types), it’s the most flexible post trigger.
WordPress hook: transition_post_status
| Field | Type | Description |
|---|---|---|
post_id | number | Post ID |
post_title | text | Post title |
old_status | text | Status before the transition |
new_status | text | Status after the transition |
post_type | text | Post type |
post_date | text | Post date |
post_url | url | Permalink |
post_author_id | number | Author’s user ID |
post_author_name | text | Author’s name |
post_author_email | Author’s email address | |
categories | array | Categories |
tags | array | Tags |
Common uses: Notifying an author when their pending post is approved and published, alerting an editor when a post is moved to trash, triggering actions on any custom post type status change.
Tip: Use conditions on
old_statusandnew_statusto target specific transitions. For example, setold_statusequalspendingandnew_statusequalspublishto only act when a pending post is approved.
Comment triggers #
Comment Submitted
Fires immediately when any comment is posted, regardless of whether it’s approved, held, or marked as spam. This trigger fires before moderation decisions are made.
WordPress hook: comment_post
| Field | Type | Description |
|---|---|---|
comment_id | number | Comment ID |
comment_content | text | The comment text |
comment_author | text | Commenter’s name |
comment_author_email | Commenter’s email address | |
comment_author_url | url | Commenter’s website URL |
comment_author_ip | text | Commenter’s IP address |
comment_date | text | Submission date |
comment_approved | text | Approval status (0 = pending, 1 = approved, spam = spam) |
comment_type | text | Comment type |
comment_parent | number | Parent comment ID (for replies) |
post_id | number | ID of the post the comment is on |
post_title | text | Title of the post |
post_url | url | Permalink of the post |
user_id | number | User ID (only present if the commenter is logged in) |
user_login | text | Username (only present if the commenter is logged in) |
user_email | User email (only present if the commenter is logged in) |
Common uses: Running AI spam or toxicity detection on the comment content immediately on submission, notifying a moderator of new comments, auto-approving comments from logged-in users using a condition on user_id.
Comment Approved
Fires when a comment transitions from any status to approved. This fires whether a comment was manually approved by an admin or auto-approved by WordPress.
WordPress hook: transition_comment_status
| Field | Type | Description |
|---|---|---|
comment_id | number | Comment ID |
comment_content | text | The comment text |
comment_author | text | Commenter’s name |
comment_author_email | Commenter’s email address | |
comment_author_url | url | Commenter’s website URL |
comment_author_ip | text | IP address |
comment_date | text | Submission date |
comment_type | text | Comment type |
comment_parent | number | Parent comment ID |
post_id | number | Post ID |
post_title | text | Post title |
post_url | url | Post URL |
user_id | number | User ID (if the commenter is a registered user) |
old_status | text | The comment’s status before approval |
Common uses: Notifying the commenter that their comment was approved, sending a thank-you email to first-time commenters, awarding points or recognition for approved comments.
Media trigger #
Media Uploaded
Fires when any file is uploaded to the WordPress Media Library. This includes images, PDFs, videos, audio files, and any other file type WordPress accepts.
WordPress hook: add_attachment
| Field | Type | Description |
|---|---|---|
attachment_id | number | Attachment post ID |
file_name | text | Original filename |
file_url | url | Public URL of the uploaded file |
file_path | text | Server file path |
file_type | text | MIME type string |
file_extension | text | File extension (jpg, pdf, mp4, etc.) |
file_size | number | File size in bytes |
mime_type | text | Full MIME type |
upload_date | text | Upload timestamp |
title | text | Media title |
caption | text | Media caption |
description | text | Media description |
alt_text | text | Image alt text |
uploaded_by_id | number | User ID of the uploader |
uploaded_by_login | text | Username of the uploader |
uploaded_by_email | Email of the uploader | |
uploaded_by_name | text | Display name of the uploader |
width | number | Image width in pixels (images only) |
height | number | Image height in pixels (images only) |
is_image | boolean | Whether the uploaded file is an image |
Common uses: Notifying a team when new media is uploaded, validating image dimensions using a condition on width and height, processing or logging uploaded file metadata.
WooCommerce triggers #
WooCommerce triggers are bundled with the free Krom Automation plugin. They activate automatically when WooCommerce is installed and active. They do not appear in the trigger list if WooCommerce is not active.
WooCommerce Order Created
Fires when a new WooCommerce order is created. This fires regardless of the payment status of the order, including pending payment, on hold, and processing.
| Field | Type | Description |
|---|---|---|
order_id | number | Order ID |
order.id | number | Order ID (nested format) |
order.status | text | Order status at creation |
order.total | number | Order total |
order.currency | text | Currency code |
order.subtotal | number | Subtotal |
order.shipping_total | number | Shipping total |
order.tax_total | number | Tax total |
order.discount_total | number | Discount total |
order.payment_method | text | Payment method ID |
order.payment_method_title | text | Payment method display name |
order.date_created | text | Order creation date |
customer.id | number | Customer user ID |
customer.email | Customer email address | |
customer.first_name | text | Customer first name |
customer.last_name | text | Customer last name |
customer.phone | text | Customer phone number |
billing.address_1 | text | Billing address line 1 |
billing.city | text | Billing city |
billing.country | text | Billing country code |
items | array | Order line items |
Common uses: Sending an order confirmation email, notifying the admin or fulfilment team, syncing the customer to a CRM, triggering inventory updates.
WooCommerce Order Completed
Fires when a WooCommerce order status is set to completed. This typically happens when a store owner manually marks an order as complete, or when a fulfilment plugin does so automatically.
Exposed data fields: Same as WooCommerce Order Created above.
Common uses: Sending a post-purchase follow-up email, requesting a product review, triggering a loyalty reward or upsell sequence, issuing a discount coupon for the next purchase.