This guide explains how to use Newo.ai's native GoHighLevel Workflow Actions to trigger outbound calls and SMS messages, configure call status sync for automation triggers, and build advanced strategies like the speed-to-lead "Infinite Loop."
GHL Workflow Actions
Newo.ai provides two native actions inside the GoHighLevel Workflow Builder. These actions turn your AI Employee from a passive responder into an active sales machine that can initiate conversations automatically based on workflow triggers.
Newo AI Outbound Call
This action triggers the AI Employee to call a lead immediately when a workflow fires.
How to add the action:
Open the GoHighLevel Automation > Workflows page and create or edit a workflow.
Click the + button on the workflow canvas to open the Actions panel.
Select the Apps tab.
Under Installed, find Newo.ai Voice AI Receptionist and expand it.
Select Make Outbound Call.
Configure the required fields:
NEWO.AI API KEY: Enter the API key from the Newo.ai Builder. To avoid re-entering the key for every action, store it as a GoHighLevel Custom Value (e.g., name it
newo_api_key) and reference it with#{{custom_values.newo_api_key}}.CONTACT PHONE NUMBER: Click the variable picker icon (tag icon) on the right side of the field, navigate to Contact, and select
#{{contact.phone_raw}}.CONTACT NAME: Use the variable picker to select
#{{contact.name}}.AGENT INSTRUCTION: Enter the scenario and context instructions (see below). You can use the variable picker to insert any contact field, custom field, or other GHL variable.
Click Save Action.
Set the workflow status from Draft to Publish to activate it.
Common triggers for outbound calls:
A new lead submits a Facebook Lead Form
A contact is added to a specific tag or list
An appointment status changes to "No-Show"
A pipeline stage changes
A custom event fires
ποΈ NOTE
You can test the workflow before publishing by clicking Test Workflow in the Workflow Builder, selecting a contact, and clicking Run Test. Check the Execution Logs tab to verify the workflow executed successfully.
Newo AI Send SMS
This action triggers the AI Employee to send a context-aware SMS message to a contact.
How to add the action:
Open the GoHighLevel Automation > Workflows page and create or edit a workflow.
Click the + button on the workflow canvas.
Select the Apps tab, find Newo.ai Voice AI Receptionist, and expand it.
Select Send text message.
Configure the required fields, including the AGENT INSTRUCTION with message context.
Click Save Action.
AGENT INSTRUCTION field syntax
The AGENT INSTRUCTION field is a text field available on both Workflow Actions (Outbound Call and Send SMS). It passes context and instructions to the AI Employee when the workflow fires.
Format:
During the session, follow *[Scenario Name]* scenario.
Additional details: [Field]: #{{contact.custom_field}}Example:
Follow "Speed-to-Lead Outbound Call" scenario.
Additional details:
Job type: #{{contact.job_type}}
Zip code: #{{contact.zip_code}}You can use any GoHighLevel custom fields or contact properties as variables. Click the variable picker icon (tag icon) on the right side of the AGENT INSTRUCTION field to browse available categories: Contact, User, Appointment, Calendar, Message, Account, Custom Values, and more. Navigate to Contact > Custom Fields to find fields like job_type or zip_code. The AI Employee receives this information at the start of the conversation and uses it to personalize the interaction.
Common variables:
Variable | Description |
| Contact's first name |
| Contact's last name |
| Contact's full name |
| Contact's phone number (raw format) |
| Contact's email address |
| Custom field: job type |
| Custom field: ZIP code |
| Custom field 1 (configurable) |
| Custom field 2 (configurable) |
ποΈ NOTE
The AGENT INSTRUCTION field accepts free-text instructions. You can reference any scenario name defined in the AI Employee's scenario configuration. The AI Employee matches the instruction to the corresponding scenario at runtime.
Call status sync
When Sync Call Status (ghl_sync_conversation) is enabled, the AI Employee reports the final call outcome back to GoHighLevel after every conversation. These statuses are available as triggers and filters in GoHighLevel Workflows.
Call statuses
Status | Meaning | Icon |
| The conversation was successful (connected). | Green |
| The AI Employee reached an answering machine. | Yellow |
| The line was busy. | Red |
| The phone rang but the contact did not pick up. | Red |
| A connection error occurred. | Black |
| The call was canceled before connecting. | Gray |
Workflow example: Auto-SMS on missed call
Send a follow-up SMS automatically when the AI Employee cannot reach a contact.
Trigger: Call Status change.
Filter: Call Status is
voicemailORno-answer.Action: Send SMS.
SMS text: "Hi #{{contact.first_name}}! We tried to reach you but couldn't get through. Text us back or call when you're free to talk!"
Result: The lead receives a follow-up message even if they did not answer, reducing the chance of losing the lead entirely.
Workflow example: Tag successful calls
Automatically tag contacts that the AI Employee has spoken with.
Trigger: Call Status change.
Filter: Call Status is
completed.Action: Add Contact Tag β
agent-called.
Result: You can filter your contact database to see everyone the AI Employee has successfully spoken with.
Workflow example: Auto-retry on no-answer
Re-attempt the call after a delay when the contact does not pick up.
Trigger: Call Status change.
Filter: Call Status is
no-answer.Action 1: Wait 15 minutes.
Action 2: Newo AI Outbound Call (retry).
Result: The AI Employee automatically retries contacts who did not answer, increasing the overall connection rate.
Set up contact custom fields for context
The AGENT INSTRUCTION field can reference GoHighLevel custom fields to pass context to the AI Employee. Before running a workflow, make sure the contact records contain the custom field values your instruction references.
Example setup:
In GoHighLevel, navigate to Contacts and open a contact record.
Scroll to the custom fields section.
Populate the fields your agent instruction references:
Job Type: "Wooden floors installation"
Zip Code: "94020"
Click Save.
When the workflow fires and passes #{{contact.job_type}} and #{{contact.zip_code}} to the AI Employee, it receives "Wooden floors installation" and "94020" as context for the conversation.
If the Newo.ai agent has a ZIP Codes Served attribute configured (project_attributes_products_and_services_served_zip_codes in the Builder under 3. Knowledge Base), the AI Employee validates the contact's ZIP code against the served list during the call. This ensures the agent only offers services in areas the business actually covers.
ποΈ NOTE
If a referenced custom field is empty for a contact, the AI Employee receives a blank value. Ensure your agent instruction handles this gracefully, or populate the fields before running the workflow.
Test a workflow
Before publishing a workflow to production, test it with a single contact to verify the AI Employee behaves as expected.
Open the workflow in the GoHighLevel Workflow Builder.
Click Test Workflow in the top toolbar.
In the Run A Test panel, click Select Contacts and choose a test contact.
Click Run Test.
Switch to the Execution Logs tab to verify the workflow executed successfully.
Check the contact's GoHighLevel profile for updated call status, pipeline stage, conversation history, and calendar bookings as expected.
After confirming the test results, toggle the workflow from Draft to Publish to activate it for all matching triggers.
The "Infinite Loop" speed-to-lead strategy
The most powerful automation pattern combines Outbound Call actions with Call Status Sync to create a self-reinforcing loop that maximizes lead engagement. This strategy ensures every lead receives a response within minutes, regardless of whether they answer the first call.
How it works
Trigger: A lead fills out a Facebook Lead Form at 8:00 PM.
Immediate action: The workflow triggers Newo AI Outbound Call. The AI Employee calls the lead instantly (speed-to-lead under 1 minute).
Branching logic (If/Else): The AI Employee reports the call status back to GoHighLevel.
If status =
completed: The AI Employee qualifies the lead and books a meeting. The workflow ends.If status =
voicemail: The AI Employee leaves a human-like voice message. The workflow immediately sends an SMS: "Hey, just tried calling! Left a voicemail. When can we chat?"If status =
no-answer: The workflow waits 15 minutes and triggers a retry call.Loop: The retry call generates a new call status, which feeds back into the same branching logic. The cycle continues until the lead answers or the maximum retry limit is reached.
Configure the Infinite Loop workflow
Create a new workflow in GoHighLevel.
Set the trigger (e.g., Form Submitted, Tag Added, or Pipeline Stage Changed).
Add the Newo AI Outbound Call action with the appropriate AGENT INSTRUCTION.
Add an If/Else branch based on Call Status:
Branch 1 β Completed: End workflow (or add a success tag).
Branch 2 β Voicemail: Add a Send SMS action, then end.
Branch 3 β No Answer: Add a Wait step (15 minutes), then add another Newo AI Outbound Call action.
Enable
ghl_sync_conversationin the Builder so call statuses flow back to GoHighLevel.Click Publish All in the Builder.
Activate the workflow in GoHighLevel.
β οΈ CAUTION
Set a maximum number of retry attempts (recommended: 3β5) to avoid calling the same lead indefinitely. Use GoHighLevel's workflow conditions or contact tags to track retry count and exit the loop when the limit is reached.
Next steps
After building and testing your workflow, continue with the following:
Deploy a complete scenario. Pair your workflow with a ready-made agent instruction β such as speed-to-lead closer, no-show recovery, or the Infinite Loop β that includes the exact integration settings and step-by-step script. See GoHighLevel use cases and scenarios.
Automate pipeline stage updates. Configure the AI Employee to move opportunities through pipeline stages based on conversation outcomes, so your CRM reflects call results without manual data entry. See the pipeline automation section in GoHighLevel integration.
Look up a specific setting. If you need to verify what a
ghl_*attribute controls, check its dependencies, or confirm its default value, consult the GoHighLevel settings reference.
