Node Reference
Full node list for visual builder with safe placeholder examples and validation-aligned structure.
Each example below is a graph-save node object, so it includes required groupKey, position, and config.
Quick Jump
- send_text
- send_media
- send_template
- send_whatsapp_flow
- send_location
- ask_text
- ask_number
- ask_phone
- ask_email
- ask_date
- ask_location
- ask_button
- ask_list
- condition
- switch
- data_lookup
- set_variable
- delay
- jump_to
- end
- human_handoff
- release_to_bot
- tag_conversation
- add_note
- persist_lead
- notify_team
- google_sheets
- ai_agent
- patient_lookup
send_text
Required fields: groupKey, position, config.message
{
"id": "node_send_text",
"type": "send_text",
"groupKey": "send_message",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Hello! Welcome to our healthcare service. How can we help you today?"
}
}send_media
Required fields: groupKey, position, config.mediaType, config.mediaAssetId | config.mediaUrl | config.mediaId
{
"id": "node_send_media",
"type": "send_media",
"groupKey": "send_message",
"position": { "x": 160, "y": 120 },
"config": {
"mediaType": "image",
"mediaUrl": "https://assets.smsport.in/clinics/banner.png",
"message": "Here is your prescription copy."
}
}send_template
Required fields: groupKey, position, config.templateName, config.languageCode
{
"id": "node_send_template",
"type": "send_template",
"groupKey": "send_message",
"position": { "x": 160, "y": 120 },
"config": {
"templateName": "appointment_reminder_v2",
"languageCode": "en",
"bodyVariables": ["John Doe", "Dr. Sharma", "10:30 AM"]
}
}send_whatsapp_flow
Required fields: groupKey, position, config.flowId
{
"id": "node_send_flow",
"type": "send_whatsapp_flow",
"groupKey": "send_message",
"position": { "x": 160, "y": 120 },
"config": {
"flowId": "849302194829",
"screenId": "SCREEN_APPOINTMENT_FORM",
"ctaLabel": "Book Appointment",
"bodyText": "Please tap below to fill out your appointment request directly in WhatsApp."
}
}send_location
Required fields: groupKey, position, config.latitude, config.longitude
{
"id": "node_send_location",
"type": "send_location",
"groupKey": "send_message",
"position": { "x": 160, "y": 120 },
"config": {
"latitude": 12.9716,
"longitude": 77.5946,
"locationName": "Apex City Clinic",
"locationAddress": "123 Healthcare Blvd, Bangalore, KA"
}
}ask_text
Required fields: groupKey, position, config.message
{
"id": "node_ask_text",
"type": "ask_text",
"groupKey": "ask_questions",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Please enter your full name as shown on your medical ID card:",
"outputVariable": "patient_name"
}
}ask_number
Required fields: groupKey, position, config.message
{
"id": "node_ask_number",
"type": "ask_number",
"groupKey": "ask_questions",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Please enter your age:",
"outputVariable": "patient_age"
}
}ask_phone
Required fields: groupKey, position, config.message
{
"id": "node_ask_phone",
"type": "ask_phone",
"groupKey": "ask_questions",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Enter your 10-digit mobile number for appointment confirmation:",
"outputVariable": "contact_phone"
}
}ask_email
Required fields: groupKey, position, config.message
{
"id": "node_ask_email",
"type": "ask_email",
"groupKey": "ask_questions",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Please share your email address to receive your laboratory invoice:",
"outputVariable": "patient_email"
}
}ask_date
Required fields: groupKey, position, config.message
{
"id": "node_ask_date",
"type": "ask_date",
"groupKey": "ask_questions",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Please provide your preferred appointment date (YYYY-MM-DD):",
"outputVariable": "preferred_date"
}
}ask_location
Required fields: groupKey, position, config.message
{
"id": "node_ask_location",
"type": "ask_location",
"groupKey": "ask_questions",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Please share your current location pin for home nursing dispatch:",
"outputVariable": "home_location"
}
}ask_button
Required fields: groupKey, position, config.message, config.options (max 3, each <= 20 chars)
{
"id": "node_ask_button",
"type": "ask_button",
"groupKey": "choices",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Which department would you like to schedule an appointment with?",
"options": ["General Medicine", "Pediatrics", "Dental Care"]
}
}ask_list
Required fields: groupKey, position, config.message, config.options (max 10)
{
"id": "node_ask_list",
"type": "ask_list",
"groupKey": "choices",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Select your doctor from the panel below:",
"options": ["Dr. Anjali Gupta (Cardio)", "Dr. Rajesh Kumar (Neuro)", "Dr. Meera Nair (Derm)"]
}
}condition
Required fields: groupKey, position, config.expression, branches true/false/default
{
"id": "node_condition",
"type": "condition",
"groupKey": "logic_utilities",
"position": { "x": 160, "y": 120 },
"config": {
"expression": "gt({{patient_age}}, 60)"
}
}switch
Required fields: groupKey, position, config.variableKey, config.options[]
{
"id": "node_switch",
"type": "switch",
"groupKey": "logic_utilities",
"position": { "x": 160, "y": 120 },
"config": {
"variableKey": "triage_priority",
"options": ["emergency", "urgent", "routine"]
}
}data_lookup
Required fields: groupKey, position, config.variableKey, config.recordsJson
{
"id": "node_lookup",
"type": "data_lookup",
"groupKey": "logic_utilities",
"position": { "x": 160, "y": 120 },
"config": {
"variableKey": "doctor_id",
"outputVariableKey": "doctor_name",
"recordsJson": "{\"doc_101\":\"Dr. Rajesh Mehta\", \"doc_102\":\"Dr. Sarah Thomas\"}"
}
}set_variable
Required fields: groupKey, position, config.variableKey, config.expression | config.value
{
"id": "node_set_var",
"type": "set_variable",
"groupKey": "logic_utilities",
"position": { "x": 160, "y": 120 },
"config": {
"variableKey": "discount_rate",
"expression": "if(gt({{loyalty_points}}, 100), 20, 5)"
}
}delay
Required fields: groupKey, position, config.delaySeconds (positive integer)
{
"id": "node_delay",
"type": "delay",
"groupKey": "logic_utilities",
"position": { "x": 160, "y": 120 },
"config": {
"delaySeconds": 5
}
}human_handoff
Required fields: groupKey, position
{
"id": "node_handoff",
"type": "human_handoff",
"groupKey": "operations",
"position": { "x": 160, "y": 120 },
"config": {
"message": "Connecting you with an on-duty medical triage officer..."
}
}google_sheets
Required fields: groupKey, position, config.credentialId, config.operation, config.documentId, config.sheetName
{
"id": "node_google_sheets",
"type": "google_sheets",
"groupKey": "logic_utilities",
"position": { "x": 160, "y": 120 },
"config": {
"credentialId": "google_sheets_account_1",
"resource": "sheet_within_document",
"operation": "get_rows",
"documentId": "1AbCdEfGhIjKlMnOpQrStUv",
"sheetName": "Appointments",
"lookupVariableKey": "mrn_number",
"keyColumn": "MRN",
"resultColumn": "Status",
"outputVariableKey": "appointment_status"
}
}ai_agent
Required fields: groupKey, position, config.agentPrompt, config.tools
{
"id": "node_ai_agent",
"type": "ai_agent",
"groupKey": "ai_engine",
"position": { "x": 160, "y": 120 },
"config": {
"agentPrompt": "You are a clinical assistant for SMSPort clinics. Answer triage questions and schedule appointments.",
"tools": ["doctor_lookup", "calendar_availability", "book_slot"]
}
}