Actions
Automate email and webhook notifications triggered by order events, payment milestones, schedules, or manual execution.
Actions automate communications in your workspace. Each action is either an email or a webhook — you define what triggers it, who receives it (or which URL it calls), and what content or payload to include. Instead of manually sending confirmation emails, payment reminders, or notifying external systems, actions handle these automatically whenever their conditions are met.
How It Works
Each action pairs a delivery method (email or webhook) with one or more triggers. When a trigger fires — whether from a system event, a schedule, or a manual click — Itsy evaluates any conditions you have set. If the conditions pass, the action executes: for email actions the message is rendered with order data and sent to the configured recipients; for webhook actions a JSON payload is dispatched to the configured URL. In both cases the delivery is tracked.
Key Concepts
Action Type
Every action has a type that determines how it delivers its message:
| Type | Description |
|---|---|
| Sends an email to one or more recipients. You configure the subject, body, sender, and attachments. | |
| Webhook | Sends an HTTP request with a JSON payload to an external URL. You configure the URL, secret, headers, and HTTP method. |
You choose the type when you create the action. Email actions and webhook actions share the same trigger system — the difference is only in how they deliver.
Action Properties
Both action types share these core properties:
| Property | Description |
|---|---|
| Name | Internal name for the action |
| Code | A short identifier code |
| Color | A color label for visual identification across lists, deliveries, the dashboard, and order timelines |
| Active | Whether the action is currently enabled |
Email-specific properties:
| Property | Description |
|---|---|
| Subject | The email subject line (supports template variables) |
| Sender Name | The display name shown as the email sender |
| Sender Address | The email address it's sent from (defaults to workspace sender if empty) |
| Recipient Type | Who receives the email (see below) |
| CC / BCC | Additional email addresses to copy |
| Content | The email body, built with a rich text editor |
| Attachments | Files to include with the email |
Webhook-specific properties:
| Property | Description |
|---|---|
| Webhook URL | The HTTPS endpoint to call (must be a public URL) |
| Secret | A shared secret used to sign the payload with HMAC-SHA256 (required). The signature is sent in the X-Itsy-Signature header so the receiver can verify authenticity. |
| HTTP Method | The HTTP method to use: POST (default) or PUT |
| Custom Headers | Additional HTTP headers to include with each request. Reserved headers (X-Itsy-*, Content-Type, Host) cannot be overridden. |
| Max Retry Attempts | The maximum number of delivery attempts before giving up (default: 5) |
Trigger Types
Each action can have multiple triggers. There are three types:
| Type | Description |
|---|---|
| Event | Fires automatically when a specific system event happens (e.g., an order is confirmed or a payment is received) |
| Schedule | Runs on a daily schedule, evaluating all orders against the trigger's conditions |
| Manual | Only fires when you explicitly run it from the order page |
An action can have any combination of triggers — for example, you might have an action that fires both on the "Order Confirmed" event and can also be triggered manually from the order menu.
Available Events
Event triggers respond to 17 different system events:
| Category | Events |
|---|---|
| Order | Order Created Internally, Order Created Externally, Order Confirmed, Order Cancelled, Order Completed, Order Locked |
| Payment | Payment Deposit Reached, Payment Fully Paid, Payment Validated from External Service |
| Invoice | Invoice Created |
| Notification | Notification Delivered, Notification Failed, Notification Bounced, Notification Opened |
| Group | Group Message Created, Group Message Updated |
| Gift Certificate | Gift Certificate Created |
Manual Trigger Placements
When you create a manual trigger, you choose where the trigger button appears in the admin interface:
| Placement | Description |
|---|---|
| Order Item Overview | Appears as a quick action button on the order detail page |
| Order Top Menu | Appears in the top menu of any order page |
| Invoice List Menu | Appears in the invoice list actions menu |
| Payment Reminder Dialog | Appears in the payment reminder dialog on an order |
Trigger Conditions
Conditions let you control exactly when a trigger fires. Each condition checks an order property against a value using a comparison operator.
Condition fields:
| Field | Description |
|---|---|
| Order Status | The current status of the order (Draft, Pending, Confirmed, Cancelled, Completed, Locked) |
| Total Price | The order's total price |
| Total Paid | The amount paid so far |
| Balance | The remaining amount owed (Total Price minus Total Paid) |
| Order Created | Days since the order was created |
| Start Date | Days relative to the trip departure date |
| End Date | Days relative to the trip return date |
| Fully Paid Date | Days since the order was fully paid |
Comparison operators:
| Operator | Description |
|---|---|
| Is equal | Must match exactly |
| Is not equal | Must not match |
| Is larger than | Must exceed the value |
| Is smaller than | Must be less than the value |
For date conditions, the value represents a number of days relative to today. For example, setting "Start Date is equal to -7" matches orders whose trip starts 7 days from now.
All conditions on a trigger must be satisfied for the trigger to fire (they are combined with AND logic).
Email Recipients
| Recipient Type | Description |
|---|---|
| Order Client | The customer who placed the order. For corporate clients, Itsy routes to the appropriate contact based on context (invoice contacts for invoice-related actions, payment contacts for payment actions). |
| Workspace Admin | The workspace's administrator email address |
| Group Contact | The contact person for a group booking (falls back to the order client if none) |
| Custom Email | A specific email address you enter |
You can also add CC and BCC recipients to any action.
Email Content
The email body is built with a rich text editor that supports headings, paragraphs, bold, and italic formatting. You can insert special content blocks that are automatically populated with order data. Use the Insert Block dropdown in the editor toolbar to add them.
Information blocks:
| Block | Description |
|---|---|
| Order Code | Displays the order reference number prominently |
| Client Information | Shows the customer's name, email, phone, and address |
| Order Information | Shows trip name, participants, booking date, departure date, total price, balance, and bookings |
| Trip Information | Shows the trip name and departure date |
Financial blocks:
| Block | Description |
|---|---|
| Invoice Summary | Displays invoice details including invoice number, amount, and date |
| Payment Summary | Shows a summary of payments made on the order |
| Balance Due | Shows the outstanding balance amount for the order |
Link blocks:
| Block | Description |
|---|---|
| Link to Overview | A button linking to the customer's order overview page |
| Link to Payments | A button linking to the customer's payment page |
| Link to Participants | A button linking to the participant information page |
Special blocks:
| Block | Description |
|---|---|
| Custom Message | A placeholder that the operator fills in at manual delivery time. For automatic deliveries (event or schedule triggers), this block renders empty. Use it when you want to add a personal note to an otherwise templated email. |
You can also use inline template variables in both the subject line and body. These are replaced with real values when the action is delivered.
Order variables:
| Variable | Replaced With |
|---|---|
{{orderCode}} | The order reference code |
{{orderTotal}} | The order total price |
{{orderBalance}} | The outstanding balance on the order |
{{orderPaid}} | The amount paid on the order so far |
{{orderDepartureDate}} | The order start date (departure) |
{{orderBookingDate}} | The date the order was created |
{{tripName}} | The name of the trip the order is on |
{{group}} | The order group name (replaced only when the order belongs to a group) |
Client variables:
| Variable | Replaced With |
|---|---|
{{clientName}} | The customer's full name |
{{clientFirstName}} | The customer's first name |
{{clientLastName}} | The customer's last name |
{{clientEmail}} | The customer's email address |
{{clientPhone}} | The customer's phone number |
Workspace and sender variables:
| Variable | Replaced With |
|---|---|
{{workspace}} | The workspace name |
{{workspaceEmail}} | The workspace contact email address |
{{senderName}} | The sender name configured on the action, falling back to the workspace name |
{{senderEmail}} | The sender email configured on the action, falling back to the workspace contact email |
Invoice variables (require invoice context):
| Variable | Replaced With |
|---|---|
{{invoiceNumber}} | The invoice number |
{{invoiceDate}} | The invoice creation date |
{{invoiceAmount}} | The invoice total amount |
{{invoiceTax}} | The total tax on the invoice |
{{invoiceFiscalSequence}} | The fiscal sequence string for the invoice |
{{invoiceCustomerReference}} | The customer reference (e.g. PO number) on the invoice |
Payment variables (require payment context):
| Variable | Replaced With |
|---|---|
{{paymentAmount}} | The payment amount |
{{paymentMethod}} | The payment method name |
{{paymentDate}} | The date the payment was settled |
{{paymentMaskedCard}} | The masked card number, when the payment was made by card |
{{paymentReference}} | The best available reference: masked card number or external transaction ID |
In the email body, money values are displayed with the workspace currency prefix (e.g. "USD 1,500.00"). In the subject line, money values appear as raw numbers so you can format them inline.
Emails are rendered in the workspace's configured language (English or Icelandic).
Email Attachments
You can attach files to action emails:
| Attachment Type | Description |
|---|---|
| Booking Attachments | Documents attached to individual bookings within the order |
| Order Overview PDF | The order overview document |
| Selected Invoice PDF | The PDF of a specific invoice |
| External Attachments | Files uploaded to the order, bookings, or participants (capped at 20 MB total) |
Webhook Actions
Webhook actions let you notify external systems when events happen in your workspace. Instead of composing an email, Itsy sends a JSON payload to the URL you configure.
Payload Structure
Every webhook delivery includes a standard envelope with context about the event:
{
"version": "v1",
"event": "OrderConfirmed",
"eventId": 3,
"actionId": "...",
"actionCode": "...",
"actionName": "...",
"deliveryId": "...",
"workspaceId": "...",
"timestamp": "2026-04-26T12:00:00Z",
"context": {
"order": { ... }
}
}The context object varies by event type. For payment events it includes a payment object alongside the order. For invoice events it includes an invoice object. For all other events, the context contains the full order snapshot.
Webhook payloads are designed to be self-contained — the order snapshot includes bookings, participants, payments, invoices, client details, and external references so receivers do not need to call back to Itsy for additional data.
Security Headers
Every webhook request includes these headers automatically:
| Header | Description |
|---|---|
X-Itsy-Event | The event name (e.g., OrderConfirmed) |
X-Itsy-Delivery-Id | A unique identifier for this delivery attempt |
X-Itsy-Action-Code | The action's code |
X-Itsy-Timestamp | The Unix timestamp of the request |
X-Itsy-Signature | An HMAC-SHA256 signature of the request body, using the action's secret key. Format: sha256=<hex> |
To verify a webhook, compute the HMAC-SHA256 of the raw request body using your shared secret and compare it to the value in X-Itsy-Signature.
Retry Logic
When a webhook delivery fails (non-2xx HTTP status or network error), Itsy retries automatically with increasing delays:
| Attempt | Delay Before Retry |
|---|---|
| 1st retry | 1 minute |
| 2nd retry | 5 minutes |
| 3rd retry | 30 minutes |
| 4th retry | 2 hours |
| 5th retry | 6 hours |
Retries continue until the request succeeds or the maximum number of attempts is reached (configurable per action, default 5). A background job checks for due retries every minute. Each retry attempt and its outcome are logged in the delivery's event history.
URL Requirements
Webhook URLs must use HTTPS and resolve to a public IP address. Itsy rejects URLs that point to private, loopback, or link-local addresses to prevent internal network access.
Managed Actions
Itsy provides pre-built managed actions for essential workspace operations. These handle common scenarios that every workspace needs:
- Order Overview — Sends the order summary document to the customer
- Payment Receipt — Sends after payment validation
- Payment Reminder — Runs on a daily schedule, sending reminders to customers with outstanding balances
- Supplier Report — Delivers supplier activity reports
- Gift Certificate Purchase — Sends the certificate PDF to the purchaser after payment
- Trip Email — Sends trip-related communications to participants
Managed actions differ from regular actions in important ways:
- You cannot delete them
- You cannot change the name, code, recipient type, or attachments
- You can customize the email subject, body, sender details, CC/BCC, and active status
Action Templates
When creating a new action, you can start from a pre-built template instead of building from scratch:
| Template | Type | What It Sets Up |
|---|---|---|
| Blank | An empty email action with no pre-configured triggers | |
| Order Confirmation | Pre-configured with triggers for both internal and external order creation events | |
| Payment Confirmation | Pre-configured with a trigger for payment validation events | |
| Payment Reminder | Pre-configured with a daily schedule trigger and conditions for orders with outstanding balance that are not draft, not cancelled, and not already fully paid | |
| Webhook Blank | Webhook | An empty webhook action with no pre-configured triggers |
Templates save time by setting up the trigger, conditions, and a starting configuration automatically.
Delivery Tracking
After an action sends a message, Itsy tracks its journey:
Email deliveries:
| Status | Description |
|---|---|
| Submitted | The email has been sent to the delivery provider |
| Delivered | The email reached the recipient's inbox |
| Bounced | The email failed to deliver (invalid address, full inbox, etc.) |
| Error | The email could not be sent at all |
| Opened | The recipient opened the email (tracked when possible) |
Each email delivery records the sender address, recipient address, timestamps, and any error details.
Webhook deliveries:
Webhook deliveries track the HTTP status code, number of attempts, next retry time (if a retry is scheduled), and a snippet of the response body. Each attempt is logged as a separate event, so you can see the full retry history.
All deliveries — both email and webhook — are logged on the order's timeline for audit purposes.
Deliveries Report
The deliveries report gives you a workspace-wide view of all action deliveries (email and webhook) across all actions. You can filter by:
- Specific actions — View deliveries for one or more actions
- Date range — Filter to a specific time period
The report shows up to 1,000 delivery records, sorted by most recent first.
Common Tasks
Creating a New Email Action
- Navigate to the Actions section
- Click Add
- Choose a template (Blank, Order Confirmation, Payment Confirmation, or Payment Reminder)
- Enter the action name and code
- Configure the email subject, sender, and recipient
- Build the email content using the rich text editor and insert content blocks as needed
- Select any attachments to include
- Add triggers to control when the action fires
- Activate the action
Creating a Webhook Action
- Navigate to the Actions section
- Click Add
- Choose the Webhook Blank template
- Enter the action name and code
- Set the Webhook URL (must be HTTPS)
- Configure a Secret for payload signing (required for all webhook actions)
- Choose the HTTP Method (POST or PUT)
- Add any Custom Headers the receiving system requires
- Set the Max Retry Attempts (default: 5)
- Add triggers to control when the action fires
- Activate the action
Adding Triggers to an Action
- Open an action and go to the Triggers tab
- Enable the trigger type you want:
- For Manual, choose where the button appears (Order Item Overview, Order Top Menu, Invoice List Menu, or Payment Reminder Dialog)
- For Schedule, the action runs daily at 02:00
- For Event, select the specific event to listen for
- Optionally add conditions to filter when the trigger fires
- Save your changes
Setting Up Payment Reminders
- Create an action using the Payment Reminder template
- The template automatically sets up:
- A daily schedule trigger
- Conditions: balance is larger than 0, status is not Draft, status is not Cancelled, and the order is not already fully paid
- Customize the email subject and body
- Set the recipient to Order Client
- Activate the action
Running a Manual Action
- Open an order
- Depending on the manual trigger's placement, find the action button in:
- The quick actions on the order overview
- The top menu of the order page
- The invoice list actions menu
- The payment reminder dialog
- Click the action to execute it immediately (sending the email or firing the webhook, depending on the action type)
Reviewing Delivery History
- To see deliveries for a specific action: open the action and go to the Deliveries tab
- To see all deliveries across your workspace: go to the Deliveries report under Actions
- Filter by action or date range as needed
- Click on a delivery to see its full event log. For email deliveries this includes events such as submitted, delivered, opened, and bounced; for webhook deliveries it includes submitted, individual attempt results, retry-scheduled events, and the final outcome.
Customizing a Managed Action
- Go to Settings and find Managed Emails
- Select the managed action to customize (Order Overview, Payment Receipt, Payment Reminder, Supplier Report, Gift Certificate Purchase, or Trip Email)
- Edit the email subject and body
- Update sender details and CC/BCC if needed
- Save your changes
How It Connects
- Orders — Most action triggers are based on order events. Deliveries are logged on the order timeline and can be viewed per client.
- Groups — Group message events can trigger notifications. The Group Contact recipient type sends to the group's contact person.
- Gift Certificates — Gift certificate creation can trigger delivery emails.
- Clients — Corporate clients can have contacts with specific notification preferences (invoices, payment receipts, order confirmations), and actions route emails to the appropriate contacts automatically.
- Segments — Actions can be targeted to specific customer segments, ensuring the right audience receives each communication.
Segment Targeting
Actions can be restricted to specific customer segments. When you configure an action, you can select one or more segments from the Segments field on the action overview. If no segments are selected, the action applies to all customers. When segments are selected, the action only triggers for orders belonging to customers in those segments.
This lets you create targeted communications — for example, a VIP welcome email that only goes to customers in your premium segment, or a local-language reminder for a specific market.
Coverage View
The Coverage page under Actions provides a matrix view of your automation setup. It shows which actions are configured for each combination of trigger event and customer segment.
- Rows represent trigger events — order lifecycle events, payment events, notification events, invoice events, group message events, gift certificate events, and scheduled triggers
- Columns represent your customer segments, each shown with its color indicator
Each cell lists the actions configured for that event-segment combination. Cells with no actions display a warning icon, helping you spot gaps in your automation coverage — for example, a segment that has no payment confirmation email configured.
Reading the Matrix
- Click any action name to navigate directly to that action's overview page for editing
- Expand a row to see the trigger conditions configured on each action (the field, comparison operator, and value)
- Inactive actions are marked with an "Inactive" badge so you can distinguish them from active ones
- Actions inherit their assigned color for visual consistency with the rest of the interface