Automation builder
The Automation builder is the visual editor where you set an automation's trigger and lay out the emails, delays, conditions, actions and integrations that follow it.
Getting Started with Triggers
Every automation begins with a trigger — the event that starts the sequence. The trigger defines when the automation runs and for whom. Until you set one, the first node on the canvas reads Set up automation trigger.
Available Trigger Types
Manual trigger
Start the automation on demand for a specific subscriber. Good for one-off sends and for testing.
The exact match of a date/time
Run relative to a date held on the subscriber's record. Good for renewals, anniversaries and trial follow-ups.
When a user unsubscribes
Runs the moment a subscriber opts out of your newsletters.
When a user subscribes
Runs when a new subscriber joins — only for signups that went through email verification.
API
Start the automation from your own system with a single API call.
Manual Triggers
A manual trigger needs no further configuration — you start the automation yourself from a subscriber's page.
Date-Based Triggers
A date trigger schedules the automation against a date field on the subscriber. Configure it by choosing:
- Recipients: the groups or the segments to include — you pick one or the other, on two tabs
- Date field: which date to watch (a basic field such as "Added At", or any custom date / date-time field)
- Timing: whether to run before, on, or after that date
- Time of day: for plain date fields, the UTC time of day to run at
Select Recipients
Choose the groups or the segments the automation should apply to. Nothing else on the trigger appears until you pick at least one
Choose Date Field
Pick the date field that decides when the automation runs
Set Timing
Choose Before, On, or After the target date
Configure Duration (if needed)
For Before and After, set how far away. A date-and-time field offers minutes, hours, days, weeks, months and years; a plain date field offers days, weeks, months and years only
Set Execution Time (for date fields)
For a plain date field, set the UTC hour and minute to run at
Event-Based Triggers
- When a user unsubscribes: fires immediately when a subscriber opts out
- When a user subscribes: fires when a new subscriber verifies their email address after signing up
API Triggers
An API trigger lets an outside system start the automation. When you select it, the trigger panel shows a ready-made code example with your own automation's ID already filled in.
await fetch("https://yaplet.com/api/newsletter/workflow/start", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Y-API-Key": "your_api_key",
},
body: JSON.stringify({
email: "[email protected]",
workflow_id: "your-workflow-id",
key1: "value1",
key2: "value2",
}),
});
curl -X POST "https://yaplet.com/api/newsletter/workflow/start" \
-H "Content-Type: application/json" \
-H "Y-API-Key: your_api_key" \
-d '{
"email": "[email protected]",
"workflow_id": "your-workflow-id",
"key1": "value1",
"key2": "value2"
}'
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://yaplet.com/api/newsletter/workflow/start");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Y-API-Key: your_api_key"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"email" => "[email protected]",
"workflow_id" => "your-workflow-id",
"key1" => "value1",
"key2" => "value2"
]));
$response = curl_exec($ch);
curl_close($ch);
import requests
response = requests.post(
"https://yaplet.com/api/newsletter/workflow/start",
headers={
"Content-Type": "application/json",
"Y-API-Key": "your_api_key"
},
json={
"email": "[email protected]",
"workflow_id": "your-workflow-id",
"key1": "value1",
"key2": "value2"
}
)
workflow_id field keep their old names on purpose, so that integrations written before the feature was renamed keep working. They are wire names, not screen labels — do not "correct" them to automation.Custom data fields are sent as top-level fields alongside email and workflow_id. They become available in subsequent EMAIL and WEBHOOK nodes using {{key1}}, {{key2}} placeholders.
For complete API documentation including error codes, field reference, and integration best practices, see the Automation API documentation.
Building Your Automation
After setting up your trigger, build the sequence by adding nodes. Add a next step to your automation offers seven node types: Email, Delay, Condition, Action, Webhook, Data fetch and Other automation.
Email Nodes
Email nodes are the core of the sequence — they send messages to subscribers at specific points in it.
Setting Up Email Content
Configure Basic Details
Set the email subject line, preheader text, sender name, and verified sender email address. Subject and preheader support {{variable}} merge tags with optional fallbacks ({{name|there}}), filled in per recipient at send time
Create or Select Design
Choose how to create your email content:
- Start from scratch: Create a new email design
- Use a template: Select from pre-built templates
- Copy from recent email: Reuse content from previous campaigns
Design Your Email
Use the drag-and-drop email builder to create visually appealing content
Test Your Email
Send test emails to verify content and formatting
Available Email Creation Options
From Scratch: Begin with a blank canvas and build your email design using the visual editor.
From Template: Choose from professionally designed templates optimized for engagement and conversion.
From Recent Email: Reuse successful email content from your previous campaigns to maintain consistency.
Email Editor Features
The email editor provides a full-featured design interface for creating compelling content. For detailed information about the email builder capabilities, see Email Design and Templates.
Delay Nodes
Delay nodes add waiting periods between steps, letting you space out your communications deliberately.
Configuration Options:
- Wait time: 1–60 minutes, 1–24 hours, 1–31 days, 1–52 weeks, or 1–12 months
- Each unit has its own ceiling, so a single node cannot wait 90 minutes — minutes stop at 60. Chain two delay nodes instead: one of 1 hour, then one of 30 minutes
Use Cases:
- Give subscribers time to engage before sending follow-ups
- Space out educational content in nurture sequences
- Respect deliverability best practices with appropriate timing
Condition Nodes
Condition nodes create branching logic, directing subscribers down different paths based on their data and characteristics.
Available Condition Types
Field Conditions
Check subscriber field values like email, name, custom fields, and subscription status.
Group Membership
Evaluate if subscribers belong to specific contact groups.
Segment Membership
Check against saved subscriber segments with their predefined filters.
Building Conditions
Use the query builder to create logical expressions that decide which branch a subscriber takes:
Select Condition Type
Choose from Fields, Group Membership, or Segment Membership
Choose Criteria
Pick the specific field, group, or segment to evaluate
Set Comparison
Select how to compare the subscriber data (equals, contains, greater than, etc.)
Enter Values
Input comparison values or select from available options
Combine Logic
Use AND/OR operators to create complex conditions
Field Operators
Different field types support different comparisons:
Email, name, custom text fields:
- Equals/Not equals - Exact match
- Contains/Does not contain - Partial text match
- Starts/ends with - Text position matching
- Is set/Not set - Check for value existence
Created date, custom date fields:
- Before/After - Date range comparisons
- More/Less than - Relative time periods
- Is set/Not set - Check for date existence
Custom number fields:
- Equals/Not equals - Exact number match
- Greater/Less than - Numeric comparisons
- Is set/Not set - Check for value existence
Action Nodes
Action nodes modify subscriber data or group memberships when reached.
Available Actions
Update Custom Fields: Modify subscriber information
- Set text field values
- Increment/decrement number fields
- Set date fields to specific values or relative dates
Group Management:
- Copy to groups: Add subscribers to additional groups
- Move to groups: Transfer subscribers between groups
- Remove from groups: Remove subscribers from specified groups
Subscription Management:
- Mark as unsubscribed: Immediately unsubscribe the subscriber
Webhook Nodes
Webhook nodes send data to external services when reached, enabling integrations with CRMs, analytics platforms, and custom applications.
Configuration
Set Webhook URL
Enter the destination endpoint
Add Secret Key
Generate or enter a secret key for request authentication
Configure Request Body
Add key-value pairs to send in the webhook payload
Use Dynamic Values
Include subscriber data using {{field_name}} syntax
Test the Webhook
Send a test request to verify your configuration
Authentication
Webhooks include a Signature header containing an HMAC SHA-256 hash of your secret key. Verify requests on your server by hashing the same key and comparing signatures.
Available Field Tags
Use these placeholders in webhook URLs and body values:
Basic Fields:
{{email}}- Subscriber email address{{name}}- Subscriber name{{created_at}}- When subscriber was added{{state}}- Subscriber status
Custom Fields: {{your_custom_field_tag}} for any custom fields you've created
Dynamic Data: Any custom data sent via API triggers or fetched via Data Fetch nodes
All placeholders accept an optional fallback after a pipe — {{name|there}} — used when the value is missing or empty.
Data Fetch Nodes
Data Fetch nodes retrieve information from external APIs to use in subsequent email and webhook nodes.
Configuration
Set API Endpoint
Enter the GET request URL (supports field interpolation)
Add Authentication
Generate or enter a secret key for API authentication
Test the Request
Send a test request to validate the API response
Use Retrieved Data
Access response values in later nodes using {{key_name}}
Response Format Requirements
API responses must be JSON objects with:
- String keys only
- String or number values
- Maximum 20 fields per response
Example response format:
{
"user_id": "12345",
"account_type": "premium",
"last_login": "2024-01-15"
}
Authentication
Like webhooks, fetch requests include a Signature header with HMAC SHA-256 authentication.
Switch to Another Automation
This node hands the subscriber over to a second automation, so you can keep shared logic in one place instead of copying it. A placed node reads Switch to automation: {name}.
Use Cases
- Common Entry Sequences: Start with a universal welcome flow, then branch to specialized nurture tracks
- Re-engagement Campaigns: Route inactive subscribers to different recovery automations
- Segmentation Logic: Send different subscriber types through optimized sequences
Auto Layout
As an automation grows with multiple branches and conditions, nodes can overlap or become hard to follow. The Auto layout button instantly reorganizes the whole tree into a clean, balanced structure.
Click Auto layout in the top-right toolbar to reorganize all nodes. The editor automatically zooms and pans to fit everything in view.
The layout engine:
- Centers the trigger at the top and arranges all child nodes below it
- Balances branches — condition nodes (yes/no paths) get equal horizontal space
- Spaces evenly — consistent vertical and horizontal gaps between all nodes
- Handles nesting — deeply branched automations are laid out without overlaps
Generate with AI
You can generate an entire automation from a plain-text description. Instead of adding and connecting nodes one by one, describe what you want it to do and AI builds the node structure for you.
How to Use It
Open the generate modal
Click Generate with AI in the top-right toolbar. The dialog is titled Generate automation with AI.
Choose a trigger type (optional)
Select a trigger type from the dropdown to guide the AI, or leave it on Auto-detect and let the AI choose based on your description. Available trigger types:
- Auto-detect — AI picks the best trigger for your use case
- Manual — Start the automation on demand
- On Subscribe — Trigger when someone joins
- On Unsubscribe — Trigger when someone leaves
- Date-based — Trigger relative to a date field
- API — Trigger from an external system
Describe your automation
Write a plain-English description of what you want it to do. Be as specific as you like — mention timing, conditions, email topics, and actions.
Example descriptions:
- "When someone subscribes, wait 1 day, send a welcome email, wait 3 days, send a tips email"
- "After subscribing, send a welcome email. Wait 5 days, check if they opened it. If yes, send a thank-you. If no, send a reminder with a different subject line."
- "Unsubscribe trigger: send a feedback survey email immediately, wait 7 days, if they haven't re-subscribed, remove them from the Active Users group"
Review and confirm
If the canvas already has nodes, Replace current automation? asks you to confirm before the AI replaces them.
What Gets Generated
The AI creates the complete structure including:
- Trigger configuration with the appropriate settings
- Email nodes with subject lines and preheader text (you design the email content separately using the email editor)
- Delay nodes with appropriate wait times
- Condition nodes with branching logic based on your description
- Action nodes for group management, field updates, or unsubscribes
- Webhook and fetch nodes when your description involves external integrations
After Generation
Once the AI has built the structure:
- Nodes are auto-laid out — the layout engine positions everything cleanly
- Email content is not included — email nodes have subjects and preheaders, but you need to design the actual email content using the email editor on each node
- Review the structure — check that the logic matches your intent, and adjust any nodes as needed
- Activate when ready — test your emails and switch the automation on
Automation Management
Validation and Activation
The Active switch stays disabled until the automation is valid, and a warning sits at the top of the sidebar until then: "Invalid automation — You need to set up the trigger and at least one action to use this automation." In practice that means:
- Every node on the canvas is fully configured
- There is at least one step after the trigger
If an automation that is already active later becomes invalid, Yaplet switches it off for you rather than running something broken.
Monitoring Performance
The builder's sidebar keeps a live count while you work:
- Completed: runs that finished
- Queued: runs waiting to execute
- Failed: runs that hit an error
Testing an Automation
- Send test emails from the email node configuration
- Use test webhooks and test fetch requests to verify integrations
- Start the automation by hand for a test subscriber from their subscriber page