> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yorlet.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Actions

> Use workflow steps to create tasks, notes, invoices, letters, and more.

Actions are the steps that do work. Click **Add step** on the canvas and pick an action. Then select the step and fill in its fields in the side panel.

Most text and number fields accept [variables](/business-automation/workflows/variables), so you can pull in the trigger record or the output of an earlier step.

Actions are grouped the same way as in the picker.

<Note>
  **Send letter**, **Grant loyalty points**, and **Create maintenance issue** only appear if that product is enabled on your account.
</Note>

## Core

### Create task

Create a task assigned to a teammate.

* **Title** and **Description** — what the task is. You can insert variables into both.
* **Due date** — when the task is due. Choose **When the action runs**, **After the action runs** (minutes, hours, days, or weeks), or a custom value. For example, due one day after the run is `{{ now + 1d }}`.
* **Priority** — **Low**, **Medium**, **High**, or **Urgent**.
* **Status** — **To do**, **In progress**, or **Done**.
* **Assignee** — the teammate who should pick it up.

### Create note

Attach a note to a record.

* **Text** — the note body.
* **Parent type** — the kind of record to attach to, such as `customer`, `invoice`, `tenancy`, `unit`, `application`, or `maintenance.issue`.
* **Parent ID** — the record ID. For a database event, this is often `{{ trigger.object.id }}`.

### Update unit fees

Set the percentage management fee on a unit, and optionally the tax.

* **Unit ID** — the unit to update. Defaults to `{{ trigger.object.unit }}` when the trigger has a unit.
* **Management fee** — the percentage charged to the landlord, for example `8` for 8%.
* **Tax** — the VAT rate applied to the fee, for example `20`. Leave blank to keep the current rate.

## Billing

### Create invoice

Create an invoice with a single line item for a customer. See [Invoices](/billing/invoices).

* **Customer** — the customer ID. Defaults to `{{ trigger.object.customer }}` when the trigger has a customer.
* **Amount** — the line item amount in the smallest currency unit, such as pence.
* **Description** — the line item description, for example a late payment fee.
* **Collection method** — **Send invoice** or **Charge automatically**.
* **Finalize now** — turn this on to finalise the invoice immediately so it can be sent or charged. This is on by default.

<Tip>
  Amounts are stored in pence. If you later print the amount in a letter, insert the field and choose **Currency** from **Format**. See [Variables](/business-automation/workflows/variables).
</Tip>

## Letters

### Send letter

Print and post a letter from a template. The letter is sent as soon as the step runs — it does not stay as a draft. See [Send a letter](/letters/send-a-letter).

* **Template** — the letter template to copy content from.
* **Recipient type** — **Customer** or **Owner**.
* **Recipient** — the customer or owner ID, matching the recipient type.
* **Delivery** — **Standard** or **Premium**.
* **Name** — optional. Defaults to the template name if you leave it blank.

If the template has variables, fill in each one. You can insert a field from the trigger.

The recipient needs a name and address, and your account needs a return address, the same as when you send a letter yourself.

## Loyalty

### Grant loyalty points

Grant points from a loyalty programme to a customer, resident, or email.

* **Loyalty programme** — the programme to grant points from.
* **Recipient type** — **Customer**, **Email**, or **Resident**.
* **Recipient** — the customer ID, resident ID, or email, matching the recipient type. Inside a loop, use `{{ loop.item.id }}`.
* **Points** — optional override of the programme's default points. Leave blank to use the programme reward.
* **Spend amount** — required for earn-rate programmes. The spend amount in the smallest currency unit, such as pence.
* **Statement descriptor** — optional text that appears on the customer's statement.
* **Expires at** — optional. When the granted points expire.

## Maintenance

### Create maintenance issue

Raise a maintenance issue, optionally against a unit or application. See [Manage issues](/maintenance/manage-issues).

* **Name** and **Description** — what needs fixing.
* **Type** — **Internal**, **Planned**, or **Customer request**.
* **Priority** — **Low**, **Medium**, **High**, **Urgent**, or **Critical**.
* **Unit ID** — optional. Defaults to `{{ trigger.object.unit }}` when the trigger has a unit.
* **Application ID** — optional.

<Note>
  Unlike creating an issue from the Dashboard, a unit is optional here so you can raise work from triggers that do not have one.
</Note>
