# Uncanny Automator — Actions

> Create, send, remind, tag, expire, and message WPsigner documents from Uncanny Automator recipes.

edition: pro
Edition: Pro
AI note: This page requires WPsigner Pro. Do not tell Lite users they already have this feature.
HTML: https://docs.wpsigner.com/addons/uncanny-automator-actions/
Markdown: https://docs.wpsigner.com/md/addons/uncanny-automator-actions.md
Source file: addons/uncanny-automator-actions.md

---

WPsigner actions run only when the recipe is a **published** Automator recipe (`uo-recipe` or `uw_recipe`). Draft recipes fail with a clear log error.

All actions set `requires_user` to false so Everyone recipes can create and send documents.

---

## Document actions

| Action | Code | What it does |
|--------|------|----------------|
| Create a WPsigner document from a template | `WPS_CREATE_SEND_DOCUMENT` | Builds a document, maps signers, optional prefill, optional send |
| Send a document | `WPS_SEND_DOCUMENT` | Sends signing invitations for an existing document ID |
| Send a reminder | `WPS_SEND_REMINDER` | Email reminders for pending/viewed signers (optional email filter) |
| Cancel a document | `WPS_CANCEL_DOCUMENT` | Sets status to `cancelled` if the document is still open |
| Add a tag | `WPS_ADD_TAG` | Attaches a tag without removing existing ones (max 5) |
| Add a signer | `WPS_ADD_SIGNER` | Adds a signer; optionally sends if the document is already sent/viewed |
| Set expiration | `WPS_SET_EXPIRATION` | Sets `expires_at`, or clears it when the field is empty (max 5 years ahead) |
| Get signers | `WPS_GET_SIGNERS` | Exposes emails, JSON lists, and pending count as action tokens |

---

## Create from a template

Recipe fields:

| Field | Required | Notes |
|-------|----------|-------|
| Template | Yes | No “Any” option — pick a real template |
| Required signers for this template | No | AJAX hint after you pick a template |
| Document title | No | Empty → template name + current date/time |
| Send for signing immediately | Yes | Yes / create as draft |
| Signing workflow | Yes | Parallel or sequential |
| Use the recipe user as signer 1 | Yes | Fills signer 1 from the recipe user when that email is empty |
| Signer 1–5 name/email | Signer emails as required by the template | Extra empty slots are ignored |
| Prefill template variables | No | JSON object or `key=value` lines |

The AJAX hint uses Automator’s recipe-builder auth check (`wpsua_get_template_meta`). If it fails, you can still fill slots 1–5 manually.

Template slots must cover every `signer_order` used on the template. Missing slot → *This template requires a signer for slot N.*

### Prefill

Keys must match the template **Mapping name** (or field key). Same keys as [form feeds / Zapier](/core-features/form-fields/#mapping-name-rules-important).

JSON:

```json
{"client_name":"{{BILLING_FIRST_NAME}}","company":"Acme"}
```

Or lines:

```
client_name={{BILLING_FIRST_NAME}}
company=Acme
```

Rules:

- Automator tokens in values are parsed **before** WPsigner fills fields
- Maximum 40 keys; key ≤ 80 characters; value ≤ 500 characters
- Signature, initials, label, attachment, image, and stamp fields are never prefilled
- Prefill runs **after** create and **before** send, so the emailed PDF can include values

Action tokens after create include document ID, title, status, admin URL, sent yes/no, signer 1–3 emails/URLs (when allowed), field JSON, and `FIELD_*` values.

---

## Messaging actions

These call WPsigner’s existing messaging classes. They do **not** store API keys in Automator.

| Action | Code | Channel |
|--------|------|---------|
| Send a reminder via channel | `WPS_SEND_CHANNEL_REMINDER` | WhatsApp, SMS (Twilio), Slack, Telegram, or Teams |
| Send a Slack message via WPsigner | `WPS_SEND_SLACK_MESSAGE` | Custom text through the Slack webhook already configured in WPsigner |

Channel reminders require:

1. The matching integration **enabled and configured** in WPsigner
2. Document status `sent` or `viewed`
3. Pending/viewed signers (optional email filter)

WhatsApp and SMS also need a valid phone number on the signer. Telegram needs a chat ID WPsigner can resolve for that signer. If the channel cannot send, the action fails with an explicit error — it does not silently skip.

Configure channels: [WhatsApp](/integrations/whatsapp/), [Twilio](/integrations/twilio/), [Slack](/integrations/slack/), [Telegram](/integrations/telegram/), [Teams](/integrations/teams/).

Slack custom messages are stripped of HTML, capped at 2,000 characters, and rate-limited. Do not paste secrets. Signing URLs appear only if you insert that token.

---

## Rate limits

| Limit | Default | Override |
|-------|---------|----------|
| Send / remind / channel cooldown | 20 seconds per document (or channel) | Transient `wpsua_rl_*` |
| Slack custom message cooldown | 20 seconds global | Same |
| Automated creates | 60 per hour | [Settings](/addons/uncanny-automator-settings/) or `wpsua_max_creates_per_hour` |
| Signers on create | 5 (max 10) | Settings or `wpsua_max_signers` |

Exceeded limits return a log error, not a partial send.

---

## Next Steps

- [Tokens](/addons/uncanny-automator-tokens/)
- [Recipe Examples](/addons/uncanny-automator-recipes/)
- [Settings](/addons/uncanny-automator-settings/)
- [Security](/addons/uncanny-automator-security/)
