All Free Actions Reference: Email, User, Post, Comment, HTTP Request, and AI
This page is the complete reference for every action included in the free Krom Automation plugin. Each entry covers what the action does, every configurable field, which fields support merge tags, and typical use cases.
Use this page when you need to look up exactly what an action does or which fields are required before adding it to a workflow.
Quick reference #
| Action name | Category | Action ID |
|---|---|---|
| Send Email | send_email | |
| Create User | User | create_user |
| Update User Meta | User | update_user_meta |
| Change User Role | User | change_user_role |
| Send Password Reset | User | send_password_reset |
| Create Post | Post | create_post |
| Update Post | Post | update_post |
| Update Post Field | Post | update_post_field |
| Change Post Status | Post | change_post_status |
| Add Post Meta | Post | add_post_meta |
| Delete Post | Post | delete_post |
| Add Comment | Comment | add_comment |
| Update Comment Status | Comment | update_comment_status |
| Add Comment Label | Comment | add_comment_label |
| Add Comment Meta | Comment | add_comment_meta |
| HTTP Request | Integration | http_request |
| AI Generate Text | AI | ai_generate_text |
| AI Content Moderation | AI | ai_content_moderation |
| AI Auto-Tag | AI | ai_auto_tag |
| Create WooCommerce Coupon | WooCommerce | wc_create_coupon |
| Update Order Status | WooCommerce | wc_update_order_status |
Email action #
Send Email
Sends an email to any recipient with a customisable subject and message body. Krom Automation sends using WordPress’s wp_mail() function, which uses your server’s email configuration or any SMTP plugin you have installed.
| Field | Required | Merge tags | Description |
|---|---|---|---|
to | Yes | Yes | Recipient email address. Use {{user_email}} or {{customer.email}} for dynamic recipients. |
subject | Yes | Yes | Email subject line. |
message | Yes | Yes | Email body. HTML and plain text are both supported. |
from_name | No | Yes | Sender display name. Defaults to your WordPress site name. |
from_email | No | Yes | Sender email address. Defaults to your WordPress admin email. |
content_type | No | No | Set to html or plain_text. Defaults to html. |
template_id | No | No | Select a saved Pro email template. Requires Krom Automation Pro and the visual email builder. |
Common uses: Welcome emails, order confirmations, admin notifications, comment alerts, post publication notifications.
Tip: If emails aren’t arriving, the issue is almost always with your server’s email configuration, not Krom Automation. Check your SMTP setup and test with WP Mail SMTP’s built-in email test before troubleshooting the workflow itself.
User actions #
Create User
Creates a new WordPress user account. If you provide an email address that already exists in the database, WordPress will return an error and Krom Automation will log the failed step.
| Field | Required | Description |
|---|---|---|
username | Yes | Username for the new account. Must be unique. |
email | Yes | Email address. Must be unique. |
password | No | Account password. If left empty, WordPress auto-generates a secure password. |
role | No | WordPress role to assign (subscriber, editor, author, etc.). Defaults to the site’s default new user role if left empty. |
first_name | No | First name, stored as user meta. |
last_name | No | Last name, stored as user meta. |
send_notification | No | Toggle. When enabled, WordPress sends its standard new user notification email to the new account. |
Common uses: Automatically provisioning user accounts after a form submission, creating accounts as part of a multi-step onboarding workflow.
Update User Meta
Sets or updates a single user meta field on a WordPress user. If the meta key doesn’t exist, it creates it. If it already exists, it overwrites it.
| Field | Required | Description |
|---|---|---|
user_id | No | The user ID to update. If left empty, Krom Automation uses the user from the triggering event. |
user_email | No | Identify the target user by email address instead of ID. Either user_id or user_email is required. |
meta_key | Yes | The meta key to set (e.g., last_login_date, onboarding_complete). |
meta_value | Yes | The value to store. Merge tags are supported. |
Common uses: Storing a last login timestamp, flagging users as having completed onboarding, saving custom profile data captured through a form submission.
Change User Role
Changes the WordPress role assigned to a user. The specified role replaces the user’s current role — it does not add to existing roles.
| Field | Required | Description |
|---|---|---|
role | Yes | The new role to assign. Select from available WordPress roles. |
The user is identified from the triggering event. Krom Automation applies the role change to the user whose action fired the trigger.
Common uses: Automatically upgrading a subscriber to a paying member after a WooCommerce purchase, downgrading a user’s role when a subscription expires.
Send Password Reset
Sends a WordPress password reset email to a specified user. This uses WordPress’s built-in password reset mechanism and sends the standard reset link email.
| Field | Required | Description |
|---|---|---|
user_identifier | Yes | The user ID or email address of the user to send the reset to. Merge tags supported. |
Common uses: Triggering a password reset reminder after a delayed workflow, sending a reset link as part of a security alert workflow.
Post actions #
Create Post
Creates a new WordPress post or custom post type entry. The post is created immediately when the action runs.
| Field | Required | Description |
|---|---|---|
post_title | Yes | Title of the new post. Merge tags supported. |
post_content | No | Body content of the post. Merge tags supported. Useful for injecting AI-generated content. |
post_status | No | Status to set on creation: publish, draft, pending, or others. Defaults to draft if not set. |
post_type | No | Post type: post, page, or any registered custom post type. Defaults to post. |
Common uses: Auto-creating a draft post from a form submission, programmatically generating content from AI-generated text, creating a log post for record keeping.
Update Post
Updates one or more fields on an existing post. Only the fields you fill in are updated — empty fields are left unchanged on the existing post.
| Field | Required | Description |
|---|---|---|
post_id | Yes | The ID of the post to update. Use {{post_id}} when updating the post from the triggering event. |
post_title | No | New title. Merge tags supported. |
post_content | No | New content. Merge tags supported. |
post_excerpt | No | New excerpt. Merge tags supported. |
post_status | No | New status (publish, draft, pending, trash, etc.). |
Common uses: Updating a post’s content with dynamic data after it’s created, changing a post’s status as part of a multi-step workflow.
Update Post Field
Updates a single field on a post with precise control over whether the new value replaces or appends to the existing content. Use this action instead of Update Post when you only need to change one field and want append mode.
| Field | Required | Description |
|---|---|---|
post_id | Yes | Post ID. Use {{post_id}} to reference the post from the triggering event. |
field | Yes | The field to update: title, content, or excerpt. |
value | Yes | The new value. Merge tags supported. |
mode | No | replace overwrites the existing content. append adds the new value after the existing content. Defaults to replace. |
Common uses: Appending an AI-generated summary to the post excerpt after the AI Generate Text action runs, prefixing a post title with a label like [Updated].
Change Post Status
Changes the status of an existing post without modifying any other post fields.
| Field | Required | Description |
|---|---|---|
post_id | Yes | Post ID. Merge tags supported. |
status | Yes | Target status: publish, draft, pending, private, trash, or any registered custom status. |
Common uses: Auto-publishing a draft post after an approval step, moving a post to trash automatically after a set period, setting a post to pending for editorial review.
Add Post Meta
Adds or updates a custom field (post meta) on a post. If the meta key doesn’t exist, it creates it. If it already exists, it updates the value.
| Field | Required | Description |
|---|---|---|
post_id | Yes | Post ID. Merge tags supported. |
meta_key | Yes | The meta key name (e.g., review_score, ai_summary, featured_until). |
meta_value | Yes | The value to store. Merge tags supported. |
value_type | No | Data type for casting the value before storage. Useful when storing numbers or boolean values. |
Common uses: Storing AI-generated output as a post meta field, recording a review score, marking a post as reviewed or processed, setting a custom field value for use by other plugins.
Delete Post
Permanently deletes a post or moves it to the trash. This is an irreversible action when force_delete is enabled — the post cannot be recovered after permanent deletion.
| Field | Required | Description |
|---|---|---|
post_id | Yes | Post ID. Merge tags supported. |
force_delete | No | Toggle. Set to true to permanently delete the post. Set to false to move it to the trash instead. Defaults to false. |
Common uses: Cleaning up temporary or expired posts automatically, archiving posts to trash based on a date condition.
Comment actions #
Add Comment
Programmatically adds a comment to a post. The comment is created immediately when the action runs and is treated as an approved comment by default.
Fields: Post ID, comment content, author name, author email.
Common uses: Auto-replying to a first comment on a post, adding a system-generated note to a post’s comment thread for internal tracking.
Update Comment Status
Changes the moderation status of an existing comment.
Fields: Comment ID, new status.
Available statuses: approve, hold, spam, trash.
Common uses: Auto-approving comments from logged-in users using a condition on user_id, moving comments flagged by AI moderation to spam automatically.
Add Comment Label
Adds a custom label to a comment, stored as comment meta. Labels are text strings (like toxic, spam, positive, reviewed) that you define. Multiple labels can be added to the same comment by running this action more than once.
Fields: Comment ID, label text.
Common uses: Tagging comments after AI moderation analysis, marking comments as reviewed by a moderator, classifying comments by sentiment for reporting purposes.
Add Comment Meta
Adds or updates a custom metadata field on a comment. If the key exists, it overwrites the previous value.
Fields: Comment ID, meta key, meta value.
Common uses: Storing an AI moderation confidence score, recording the IP risk level of a commenter, tracking workflow processing status per comment.
Integration action #
HTTP Request
Sends an HTTP request to any external URL. Use this action to connect Krom Automation to any service that has a web API or accepts webhook payloads, without needing Krom Automation Pro integrations.
| Field | Required | Merge tags | Description |
|---|---|---|---|
url | Yes | Yes | The full URL including protocol (e.g., https://api.example.com/notify). |
method | Yes | No | HTTP method: GET, POST, PUT, PATCH, or DELETE. |
headers | No | Yes | Request headers as a JSON object (e.g., {"Authorization": "Bearer {{api_key}}"}). |
body_type | No | No | Format for the request body: json, form, or raw. |
body | No | Yes | The request body content. Merge tags supported. |
timeout | No | No | Request timeout in seconds. Minimum 5, maximum 60. Default is 30. |
response_key | No | No | Variable name to store the response under. Defaults to http_response. |
Response data available in later steps:
| Tag | What it returns |
|---|---|
{{http_response.status}} | HTTP status code of the response |
{{http_response.body}} | Raw response body as a string |
{{http_response.json.fieldname}} | A specific field parsed from a JSON response |
Common uses: Sending a webhook notification to Zapier, Make.com, or a custom endpoint; calling a CRM or external API with user or order data; posting a message to Slack or Discord without a Pro integration; chaining an API call into a later email or post update action using the response data.
AI actions #
All three AI actions require at least one AI provider API key configured in Krom Automation > Settings > AI Settings. Supported providers are OpenAI, Google Gemini, and Groq. You only need one provider configured to use all three actions.
AI Generate Text
Sends a prompt to a configured AI language model and stores the generated text as a workflow variable. You can then use that variable in any action that follows in the same workflow.
| Field | Description |
|---|---|
prompt | The prompt to send to the AI. Merge tags are supported, so you can include post content, user data, or any other trigger data in the prompt. |
system_prompt | Optional system-level instructions that shape how the AI responds (e.g., “You are a concise blog editor. Return only the excerpt, no more than 30 words.”). |
model | Which AI model to use: Auto, GPT-4o Mini, GPT-4o, Gemini 2.0 Flash, Gemini 2.5 Flash, Gemini 2.5 Pro, Llama 3.3 70B, Llama 3.1 8B, or Mixtral 8x7B. Auto selects the best available model based on your configured API keys. |
creativity | Controls the randomness of the output: precise (low temperature), balanced (medium), or creative (high). |
max_tokens | Maximum length of the AI response in tokens. Range: 50 to 4096. Default: 1024. |
output_key | The variable name to store the result under. Use this name as a merge tag in later steps (e.g., if you set output_key to ai_excerpt, use {{ai_excerpt}} in the next action). |
Common uses: Auto-generating a post excerpt after a post is published, writing a personalised email message based on user data, summarising a long piece of content, drafting social media copy.
AI Content Moderation
Analyses text content for spam or toxic content using AI and optionally takes an action on the flagged content. Designed to work with the Comment Submitted trigger.
| Field | Description |
|---|---|
content | The text to analyse. Use {{comment_content}} to moderate the triggering comment. Merge tags are supported. |
moderation_type | What to check for: all (both spam and toxicity), spam only, or toxicity only. |
sensitivity | How strict the detection is: low, medium, or high. Higher sensitivity flags more content but may produce more false positives. |
status_action | What to do when content is flagged: none (log only), hold (set to pending), spam (mark as spam), or trash (move to trash). |
add_label | Toggle. When enabled, adds a label to the comment after moderation. |
custom_label | Custom label text to apply when flagged. If left empty, Krom Automation uses the moderation category returned by the AI (e.g., “spam” or “toxic”). |
Common uses: Automatically holding or spamming toxic comments before a human sees them, running AI moderation as the first step in a comment workflow before deciding whether to approve or discard.
AI Auto-Tag
Analyses post content using AI and automatically applies relevant tags and/or categories to the post. Works best when paired with the Post Published trigger.
| Field | Description |
|---|---|
content_source | What content to analyse: title_content (both title and body), title_only, content_only, or custom (lets you specify custom content below). |
custom_content | The custom text to analyse. Only used when content_source is set to custom. Merge tags supported. |
taxonomy_type | Which taxonomies to apply terms to: both (tags and categories), tags only, or categories only. |
max_tags | Maximum number of terms to suggest and apply. Range: 1 to 15. Default: 5. |
use_existing | Whether to only apply existing taxonomy terms (existing_only) or allow the AI to create new terms if no match is found (create_new). |
Common uses: Automatically tagging new blog posts on publication, batch categorising imported content, ensuring posts are consistently tagged without manual effort.
WooCommerce actions #
WooCommerce actions are bundled in the free plugin and are only available when WooCommerce is installed and active.
Create WooCommerce Coupon
Creates a new WooCommerce discount coupon programmatically. The coupon is created immediately when the action runs and is available in the WooCommerce coupons list.
| Field | Description |
|---|---|
coupon_code | The coupon code. Merge tags supported — you can generate a unique code using {{user_id}} or {{order_id}} as part of the code string. |
discount_type | Type of discount: percent (percentage off), fixed_cart (fixed amount off the cart), or fixed_product (fixed amount off specific products). |
amount | The discount amount. For percentage discounts, enter the number without the % sign (e.g., 20 for 20% off). |
description | Internal description visible only in the WooCommerce admin. Useful for noting which workflow generated the coupon. |
expires_days | Number of days from the creation date until the coupon expires. Leave empty for no expiry. |
usage_limit | Total number of times the coupon can be used across all customers. Leave empty for unlimited. |
usage_limit_per_user | Number of times a single customer can use the coupon. Leave empty for unlimited. |
individual_use | Toggle. When enabled, this coupon cannot be used alongside other coupons. |
Common uses: Generating a personalised post-purchase discount for each new customer, creating a loyalty reward coupon when an order is completed, issuing a welcome coupon to new users.
Update Order Status
Updates the status of a WooCommerce order.
Fields: Order ID, new status.
The order ID comes from the triggering event when used with a WooCommerce trigger. The status can be set to any valid WooCommerce order status: pending, processing, on-hold, completed, cancelled, refunded, or failed.
Common uses: Automatically completing orders that don’t require manual fulfilment, moving orders to on-hold pending a review, marking orders as failed as part of a payment follow-up workflow.