A step is stored as a small document inside its automation version or campaign. The tables name each field as the app labels it, with the value it holds. The same shape is what the MCP tools and exports use, so it is also the reference for anyone automating Pyn.
| Field |
Label in the app |
Values |
id |
|
A unique id Pyn assigns. |
title |
Step title |
Free text; empty shows the step type. |
type |
Chosen in Add Step |
send-message, send-channel-message, invite-to-calendar-event, send-channel-invite, raise-ticket, add-message-to-context; see below. |
state |
Enabled / Disabled |
enabled or disabled. A disabled step never sends. |
schedule.type |
|
relative in an automation, absolute in a campaign. |
schedule.offset |
Schedule |
For relative: a duration such as { "days": -7 } or { "weeks": 2 }; negative is before the reference date. |
schedule.date |
Scheduled date |
For absolute: a calendar date, 2026-03-02. |
schedule.hour, schedule.minute |
at |
0 to 23 and 0 to 59. |
schedule.timezone |
in |
recipient, or a time zone name such as Australia/Sydney. |
schedule.deliverOn |
Days of Week |
One or more of MONDAY to SUNDAY. |
schedule.onSkippableDate |
On Non-Delivery Days |
deliver-anyway, deliver-before (previous delivery day) or deliver-after (next delivery day). |
audience |
Audience tab |
lifecycle (any of current, joiner, leave, terminated), includeGroups, excludeGroups (group ids). Absent means current employees only. |
skipIfOverdue |
Skip if overdue at enrollment |
true to skip a step whose date has passed when someone enrols. |
reminders |
Reminders |
Up to three in the step drawer (Add reminder disappears at three), each with offset (days after send) and enabled. The schema accepts up to ten, so a step written through the API or an MCP server can carry more. |
send-message (a direct message or email) and send-channel-message (a channel post) add:
| Field |
Label |
Values |
medium |
Fixed by the step type |
slack or email. teams and sms exist in the schema but no step in the dialog creates them. |
sender |
From |
A sender id. Absent means the workspace default. |
conditionalSender |
From |
A conditional sender id. A step has one of sender or conditionalSender, never both. |
recipient |
To |
A recipient, see below. A channel post’s recipient is a channel. |
ccRecipients |
Cc |
Up to three recipients. |
subject |
Subject |
A single-line document, email only. |
message |
The editor |
The composed message. |
body, html |
Email body |
body: "html" with the Liquid HTML in html for a Raw HTML email; otherwise the composed message is the body. Email only. |
deactivateUnfurlLinks, deactivateUnfurlMedia |
Advanced |
true to switch off Slack previews. |
escalations |
Escalations |
Up to three, each with offset (days after send), recipient (any recipient except a group) and enabled. |
| Shape |
Label |
Fields |
| Relative |
Employee, Manager, Skip-level Manager, Buddy, HRBP |
type: "relative", recipient one of employee, manager, skip-manager, buddy, hrbp; optional address of primary or personal. |
| A person |
People |
type: "employee", recipient the employee id, optional address. |
| A group |
Groups (campaign steps) |
type: "group", recipient the group id. Every member receives the step. |
| A channel |
Channels |
type: "channel", recipient the channel id. |
| A custom email address |
Custom Email Recipients |
type: "custom-email", recipient the custom email recipient id. |
| Type |
Label in Add Step |
Extra fields |
invite-to-calendar-event |
Invite to Calendar Event |
recipient; eventId (the calendar event); inviteTo of next-occurrence, next-occurrence-reference-date or all-occurrences. |
send-channel-invite |
Add to Channel |
sender; recipient (who is added); channel (the channel id); medium: "slack". |
raise-ticket |
Raise Ticket |
integration (the Jira connection), project, issueType, summary (single line), description; medium: "jira". No recipient. |
add-message-to-context |
Add Message to Employee Context and the other AI & Context rows |
recipient (whose context). |
send-acknowledgement, send-content, send-content-link |
Not offered |
Older message types still accepted in existing automations; new steps use buttons in a send-message step instead. |
A campaign template is a list of milestones, each with id, title, emoji, color (a hex colour), date (a calendar date) and steps (steps as above, with absolute schedules). Enrolling a milestone turns it into a campaign with that date as its reference date. See Campaign templates.