Your First Workflow: Send a Welcome Email When a User Registers
This guide walks you through building a complete, working automation from scratch.
By the end, you’ll have a workflow that automatically sends a personalised welcome email to every new user who registers on your site, with their first name in the subject line and a 10-minute delay so it feels personal rather than instant.
This workflow uses only free Krom Automation features. No Pro license, no API keys, no WooCommerce required.
Time to complete: 10 to 15 minutes.
What you’ll need #
- Krom Automation installed and activated (installation guide)
- A working email setup on your WordPress site (see note below)
- A test email address you can register with
Before you start: Krom Automation sends email through WordPress’s
wp_mail()function. On shared hosting, these emails often land in spam. Set up an SMTP plugin like WP Mail SMTP or FluentSMTP before relying on email workflows in production. For this tutorial, you can test using any email address you have access to.
Step 1: Create a new workflow #
Go to Krom Automation > Workflows in your WordPress admin.
Click Add New Workflow. Give it a name like Welcome New User Email. This name is only visible in the admin, so make it descriptive.
You’ll land on the workflow canvas, a full-screen visual editor where you build your automation. It starts empty, ready for your first node.
Step 2: Add the trigger #
Every workflow starts with a trigger — the event that kicks everything off.
Click Add Trigger. A panel opens on the right showing all available triggers grouped by category. Under User, select User Registered.
This trigger fires every time a new user account is created on your site, whether through the default WordPress registration page, WooCommerce checkout, a membership plugin, or any other method that creates a WordPress user account.
No additional configuration is needed on the trigger itself. Your canvas now shows a User Registered node and the trigger is set.
Step 3: Set a delay #
Rather than sending the welcome email the instant someone registers, add a 10-minute delay. This small touch makes the email feel more personal and gives the user a moment to explore your site first.
In the trigger settings panel on the right, find the Delay section. Set it to 10 minutes.
Krom Automation will now wait 10 minutes after a user registers before running any actions. The delay is handled by Action Scheduler in the background, so your site doesn’t need to be loaded or visited during those 10 minutes for it to work.
Step 4: Add a Send Email action #
Now tell Krom Automation what to do once the delay passes.
Click the + button below the trigger node on the canvas. Select Send Email from the action list.
The Send Email configuration panel opens. Fill in the fields:
To
Enter {{user_email}}. This is a merge tag. Krom Automation replaces it at execution time with the actual email address of the user who just registered. Every piece of data the trigger collects is available as a merge tag using {{double curly braces}}.
Subject
Try: Welcome to {{site.name}}, {{first_name}}!
This uses two merge tags: {{site.name}} pulls in your WordPress site name automatically, and {{first_name}} personalises the subject with the user’s first name.
Message
Write your welcome email here. HTML is supported. A simple starting point:
Hi {{first_name}},
Welcome to {{site.name}}! We're glad you're here.
Your account is ready. Here's a good place to start:
[Link to your most useful page or getting started guide]
If you have any questions, just reply to this email.
[Your name]
{{site.name}}
From Name (optional): Your name or brand name. Defaults to your WordPress site name if left blank.
From Email (optional): Your reply-to address. Defaults to your WordPress admin email if left blank.
Content Type: Set to html if you’re writing HTML, or plain_text for plain text.
Krom Automation saves automatically as you work.
Step 5: Set run control #
By default, a workflow runs every time its trigger fires. For a welcome email, you want it to run only once per user.
Find the Run Control setting in the workflow settings (accessible from the top toolbar or the gear icon on the canvas). Set it to Run once per entity.
With this setting active, Krom Automation tracks each user ID and silently skips the workflow if it has already run for that user before. No duplicate welcome emails.
Step 6: Simulate, then activate #
Before going live, run a quick simulation.
Click the Simulate button in the top toolbar. The simulator runs your entire workflow using real data from your site, but without actually sending any emails or making any changes. You’ll see exactly what merge tags would resolve to, what the email subject and body would look like, and whether any steps would fail.
If the simulation looks correct, click the Activate toggle to set the workflow status to Active.
Step 7: Test with a real registration #
Test it end to end. Create a new test user at Users > Add New with an email address you can check, or register a new account through your site’s registration page.
After registering, wait 10 minutes (or temporarily reduce the delay to 1 minute for testing speed), then check the inbox of the email address you used. You should receive the welcome email with all merge tags correctly replaced.
You can also check Krom Automation > Logs immediately to see the execution record. Every step is logged, including what data the merge tags resolved to, what the email contained, and whether the action succeeded.
What just happened: the execution explained #
Here’s what Krom Automation did behind the scenes:
- The
user_registerWordPress hook fired, and Krom Automation’s User Registered trigger caught it. - Krom Automation collected the trigger data: user ID, email, first name, last name, roles, and more.
- Because you set a 10-minute delay, Krom Automation scheduled a background job via Action Scheduler.
- Ten minutes later, Action Scheduler ran the job.
- Krom Automation resolved all merge tags.
{{user_email}}became the actual email address,{{first_name}}became the user’s name,{{site.name}}became your site name. - The Send Email action ran and passed the resolved content to
wp_mail(). - Krom Automation logged the execution with a success status and stored the output of each step.
This pattern — trigger fires, data is collected, optional delay, actions run with resolved merge tags, execution is logged — is how every single workflow in Krom Automation operates.
Common mistakes to avoid #
Merge tags showing as {{first_name}} in the email instead of the user’s name. The merge tag name is correct but the data wasn’t available. The first_name field comes from WordPress user meta. If your registration form didn’t ask for it, it will be empty. Check the execution log to see exactly what data was collected.
Email not arriving. If the Logs show “success” on the email step, Krom Automation handed the message to wp_mail() correctly. The issue is with your server’s email configuration. Install an SMTP plugin and retest.
Workflow not firing at all. Confirm the workflow status is set to Active and not Paused. Also check that WordPress Cron is running on your server. If WP-Cron is disabled, delayed actions won’t execute.
Multiple welcome emails sent to the same user. Set Run Control to Run once per entity as described in Step 5.
What to try next #
Add a condition
Want to send a different welcome email to customers vs. subscribers? Add a Condition node after the trigger, branch on {{roles}}, and attach different Send Email actions to each branch.
Notify the admin too
Add a second Send Email action to the same workflow with the To field set to {{admin_email}}. Both the new user and the site admin get notified from one workflow, using one trigger.
Explore the templates
Go to Krom Automation > Templates and install the pre-built Welcome New User template. Compare its structure to what you just built.
Core Concepts: How Krom Automation Works Ready to go deeper on triggers, actions, merge tags, and conditions? Start here.
Using the Visual Workflow Builder A full walkthrough of the canvas, keyboard shortcuts, auto-layout, and the minimap.