Create Automation Step
Adds a step to an automation’s draft version, directly after previous_step_id, or first when it’s left out. The step that held that position now runs after the new one. Steps can’t be moved, so add each one where it belongs. Setting source_code also needs every read permission listed for previewing a step, which the step’s code reads the account with.
Authorizations
An Account API key, an App API key, an account access token, an account-scoped user token, or a user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************. See Auth & API keys for how to get each one.
Headers
A unique key that makes this request safe to retry. See Idempotent requests.
255"d9105228-4a08-46b1-8b91-42fed586d383"
Pins the request to a dated API version.
"2026-11-05-1"
Body
What the step does: wait holds the member for config.delay_seconds, email emails them, and message sends them a message from a team member. A draft step can switch between email and message, which clears config.sender_id. A wait can't become a sending step, or the other way round.
wait, email, message "message"
ID of the automation to add the step to, prefixed ato_.
"ato_xxxxxxxxxxxxxx"
The step's settings for its action_type: delay_seconds for a wait, and sender_id for an email or a message. Writing it replaces the whole object.
- Wait
- Email
- Message
ID of the draft step the new one runs after, prefixed atos_. Leave it out to make the new step run first.
"atos_xxxxxxxxxxxxxx"
An email or message step's code: a TSX module whose default export gets the member and returns message.send(), message.skip() or message.exit() from whop:message. An email step sends its subject, its react element as the body and its text as the plain-text part; a message step sends its text. The code can import react and @react-email/components, and reads the account through the whop client from whop:message, which can only read: it holds every account-level :read permission that both the admin role and Whop AI hold except payout:account:read, as listed for previewing a step. Setting it, or previewing the step, needs every one of those permissions. Up to 64,000 characters. null on a wait, and until it is written.
"export default () => message.send({ subject: \"Thanks!\", text: \"Thanks for your order!\" });"
Response
Automation step created
What the step does: wait holds the member for config.delay_seconds, email emails them, and message sends them a message from a team member. A draft step can switch between email and message, which clears config.sender_id. A wait can't become a sending step, or the other way round.
wait, email, message "email"
ID of the automation the step belongs to, prefixed ato_.
"ato_xxxxxxxxxxxxxx"
The step's settings for its action_type: delay_seconds for a wait, sender_id for an email or message. Writing it replaces the whole object.
- Wait
- Email
- Message
When the step was created, as an ISO 8601 timestamp.
"2026-01-01T12:00:00.000Z"
Automation step ID, prefixed atos_. A step gets a new ID in every version; key stays the same.
"atos_xxxxxxxxxxxxxx"
What must be fixed before the draft can be published, such as code that hasn't been written. Empty when there's nothing.
Identifies the same step across versions. A new step gets a key no step of the automation has used.
2
ID of the step this one runs after, prefixed atos_. null when it runs first, directly after the member enrolls.
"atos_xxxxxxxxxxxxxx"
The sender config.sender_id names. null on a wait, and when the step sends from the default sender.
- Email address
- User
An email or message step's code: a TSX module whose default export gets the member and returns message.send(), message.skip() or message.exit() from whop:message. An email step sends its subject, its react element as the body and its text as the plain-text part; a message step sends its text. The code can import react and @react-email/components, and reads the account through the whop client from whop:message, which can only read: it holds every account-level :read permission that both the admin role and Whop AI hold except payout:account:read, as listed for previewing a step. Setting it, or previewing the step, needs every one of those permissions. Up to 64,000 characters. null on a wait, and until it is written.
"export default () => message.send({ subject: \"Thanks!\", text: \"Thanks for your order!\" });"
When the step was last updated, as an ISO 8601 timestamp.
"2026-01-01T12:00:00.000Z"
The automation version this step is part of. Only the draft version's steps can change.
1
Members on this step's version who are waiting for it to run.
0

