Using the Aptly SDK (recommended)
If your app includes the Aptly SDK, use the named wrapper methods. They return aPromise<{ success: boolean, error?: string }>, handle the response listener for you, and time out after 3 seconds.
Raw postMessage
If you are not using the SDK, post a message directly to the parent window. Aptly validates the permission and sends a response.{ type: 'aptly-action-result', action, success: true } or { ..., success: false, error: 'Not permitted' }.
Enabling actions for your app
Actions must be explicitly granted — nothing runs by default. An admin configures this in the settings for the specific embed. Marketplace app: In Global Admin → App Marketplace, open your app’s edit modal → Permissions tab → Embed Actions. When a user installs the app on a board, these permissions are copied to that board tab and can be adjusted in board settings. Custom board tab: In Board Settings → your tab → edit → Allowed Actions. Dashboard widget: In Dashboard → add or edit app → Embed Actions.Available actions
open-card-pane
Navigates to a specific card in the board’s side panel.
| Field | Type | Required | Description |
|---|---|---|---|
cardId | string | Yes | The _id of the card to open. |
open-card-view
Opens a card in a fullscreen detail view (floating modal).
| Field | Type | Required | Description |
|---|---|---|---|
cardId | string | Yes | The _id of the card to open. |
start-dialer
Opens the Aptly phone dialer with a number pre-filled.
| Field | Type | Required | Description |
|---|---|---|---|
number | string | Yes | Phone number in E.164 format (+15551234567). |
name | string | No | Contact name to display in the dialer. |
open-email-composer
Opens a new email compose window, optionally pre-filled.
| Field | Type | Required | Description |
|---|---|---|---|
subject | string | No | Pre-filled subject line. |
content | string | No | Pre-filled body content (HTML supported). |
composeMode | 'email' | 'sms' | No | Defaults to 'email'. |
create-event
Opens the calendar event editor, optionally pre-filled.
| Field | Type | Required | Description |
|---|---|---|---|
date | ISO 8601 string | No | Pre-filled event start date/time. |
comments | string | No | Pre-filled event description. |
recipients | array | No | Pre-filled attendees. Each object should include email and optionally name. |
create-card
Opens the new card form on a specific board, optionally pre-filled.
| Field | Type | Required | Description |
|---|---|---|---|
boardId | string | Yes | UUID of the board to create the card on. |
fields | object | No | Key-value pairs of field values to pre-fill. Keys are field UUIDs or well-known field names. |
create-task
Opens the task creation form, optionally pre-filled. Common use case: a “remind me later” button that pre-fills a future due date.
| Field | Type | Required | Description |
|---|---|---|---|
title | string | No | Pre-filled task title. |
dueAt | ISO 8601 string | No | Pre-filled due date/time. |
activityLogType | 'todo' | 'email' | 'sms' | 'voice' | No | Task type. Defaults to 'todo'. |
priority | 'asap' | 'high' | 'medium' | 'low' | No | Pre-filled priority. |
note | string | No | Pre-filled task description. |
assigneeId | string | No | User ID to pre-assign the task to. |
aptletInstanceId | string | No | Card _id to link the task to. |
aptletUuid | string | No | Board UUID for context. |
create-contact
Opens the contact creation modal, optionally pre-filled.
| Field | Type | Required | Description |
|---|---|---|---|
firstname | string | No | Pre-filled first name. |
lastname | string | No | Pre-filled last name. |
phone | string | No | Pre-filled phone number. |
email | string | No | Pre-filled email address. |
company | string | No | Pre-filled company name. |
title | string | No | Pre-filled job title. |
navigate-to-contact
Navigates to a contact’s record page.
| Field | Type | Required | Description |
|---|---|---|---|
contactId | string | Yes | The _id of the person record to navigate to. |
Troubleshooting
Action fires but nothing happens. Check that the action is listed under Allowed Actions for the specific embed where your app is running. Permission is configured per embed, not globally. Response sayssuccess: false, error: 'Not permitted'. The action is not in the embed’s allowed list. An admin needs to enable it in the app or board settings.
No response message at all. Ensure your app is loaded inside an Aptly embed (not a standalone tab) and that the message is sent via window.parent. The SDK wrappers handle this correctly.
open-email-composer opens but the To field is empty. Pre-filling recipients is not yet supported for this action — the user can type recipients manually after the composer opens.