#The Workflow Step object
Models a node in the Linkbreakers workflow canvas, defining what should occur after a scan (redirects, gates, forms) and how it connects to other steps in the visitor journey.
canvasPosition
objectCanvas position for React Flow node positioning
childStepIds
array<string>Child workflow step IDs (steps that this step can transition to, UUID)
createdAt
string (date-time)When the workflow step was created
eventAction
string (enum)The event action type for this workflow step
Allowed values
EVENT_ACTION_UNSPECIFIEDEvent action not specified
EVENT_ACTION_CLIENT_REDIRECTRedirect visitors to a destination URL
EVENT_ACTION_QRCODE_SCANEntry step triggered when the QR code is scanned.
EVENT_ACTION_PASSWORD_VERIFYRequire visitors to enter a password before proceeding
EVENT_ACTION_FORM_SUBMITPresent a data collection form to visitors
EVENT_ACTION_CONTACT_CARDGenerate a vCard (VCF) response with contact information
EVENT_ACTION_MULTI_LINKPresent a multi-link page with multiple buttons for different destinations
EVENT_ACTION_SCAN_RESCAN_CONDITIONRoute visitors based on whether it's a first scan or rescan
EVENT_ACTION_COUNTRY_CONDITIONRoute visitors based on their country location
EVENT_ACTION_DAY_OF_WEEK_CONDITIONRoute visitors based on day of week
EVENT_ACTION_TIME_OF_DAY_CONDITIONRoute visitors based on time of day
EVENT_ACTION_DAY_OF_MONTH_CONDITIONRoute visitors based on day of month
EVENT_ACTION_SPECIFIC_DATE_CONDITIONRoute visitors based on specific calendar dates
EVENT_ACTION_SOCIAL_LINKS_PAGEDisplay a social links page (like Linktree)
id
stringThe unique identifier of the workflow step (UUID)
kind
string (enum)The kind of workflow step (entry, exit, etc.) - read-only, determined by server
Allowed values
KIND_UNSPECIFIEDWorkflow step kind not specified
KIND_ENTRYEntry steps are automatically triggered when a visitor reaches the workflow
KIND_EXITExit steps finalize the workflow (commonly a redirect)
KIND_INTERACTIONInteraction steps require visitor input (forms, passwords, etc.)
KIND_CONDITIONCondition steps evaluate logic and route to different next steps
linkId
stringThe link ID this workflow step belongs to (UUID)
nodeType
string (enum)Node types define how workflow steps manage their outbound connections: COMPOSITE nodes manage their own exit paths through their payload structure. They have multiple possible next steps defined within the payload itself: ATOMIC nodes are simple steps with a single, direct connection to the next step. They use the standard parent-child relationship mechanism. Connection Rules: - ✅ Connections TO any node type are allowed - ✅ Connections FROM atomic nodes are allowed - ❌ Direct connections FROM composite nodes are NOT allowed (They manage routing through their payload instead) Example: A multi-link node with 3 buttons defines 3 possible next steps in its payload.buttons[].next_step_id fields, not through direct parent-child relationships. Examples: FORM_SUBMIT, MULTI_LINK, SCAN_RESCAN_CONDITION, COUNTRY_CONDITION, DAY_OF_WEEK_CONDITION, TIME_OF_DAY_CONDITION, DAY_OF_MONTH_CONDITION, SPECIFIC_DATE_CONDITION Connection behavior: Cannot create direct parent-child connections FROM these nodes. They define their next steps within the payload (e.g., button.next_step_id, option.next_step_id). Examples: QRCODE_SCAN, CLIENT_REDIRECT, PASSWORD_VERIFY, CONTACT_CARD Connection behavior: Can create standard parent-child connections to any other node.
Allowed values
NODE_TYPE_UNSPECIFIEDWorkflow step node type not specified
NODE_TYPE_COMPOSITEComposite nodes manage multiple exit paths through their payload structure.
NODE_TYPE_ATOMICAtomic nodes are simple steps with no internal routing logic.
parentStepIds
array<string>Parent workflow step IDs (steps that can transition into this step, UUID)
payload
objectWorkflow step payload - uses oneof for type safety based on EventAction
updatedAt
string (date-time)When the workflow step was last updated