TimelinesAI
How-to Guide

GoHighLevel WhatsApp Automation: 5 Workflow Recipes

Build five GoHighLevel WhatsApp automation workflows with trigger logic, message examples, E.164 checks, failure prevention, and clear native limits.

September 2, 202614 min read
Reliable GoHighLevel WhatsApp workflow from trigger and eligibility checks to text send, result verification, and TimelinesAI handoff

Yes. GoHighLevel can send WhatsApp messages automatically through the TimelinesAI workflow connector. A reliable workflow needs four things: a valid trigger, a contact phone in E.164 format, an online sender from the linked TimelinesAI workspace, and non-empty text after GoHighLevel resolves custom values. Start with one plain-text test before adding branches, delays, or live contacts.[1][2]

By TimelinesAI Content Team. Updated September 2, 2026.

This guide is about workflow execution. Use the setup guide for installation and first connection, the pricing guide for cost comparisons, and the GoHighLevel WhatsApp integration page for the product overview.

Can GoHighLevel workflows send WhatsApp automatically?

Yes. The TimelinesAI Marketplace app adds outbound WhatsApp text to a GoHighLevel workflow. The action sends to the contact phone through a sender in the connected TimelinesAI workspace, supports GoHighLevel custom values in the message body, and reports its action result in workflow history.[1]

That result does not prove the message was read. Treat it as evidence that the workflow action was accepted or failed. For the current connector, WhatsApp replies are logged as contact notes and the complete conversation stays in TimelinesAI, so a new note is not the same thing as a native GoHighLevel reply event.[2]

A basic GHL WhatsApp workflow looks like this:

  1. A GoHighLevel trigger enrolls the contact.
  2. Eligibility checks confirm consent, a usable phone number, and the right timing.
  3. GoHighLevel resolves the contact values in the message.
  4. The TimelinesAI connector sends plain text from the chosen sender.
  5. The workflow owner checks the action result and the contact note.
  6. The team opens TimelinesAI when a human needs to read or continue the full conversation.

What can the workflow connector do, and what stays outside it?

The TimelinesAI connector and HighLevel's native WhatsApp channel are different surfaces. Do not copy a native HighLevel recipe and assume every branch, template, or delivery event exists in the connector.

  • Send a text message. TimelinesAI connector: Available after the app and workspace are connected.[1][2] HighLevel native: Available through HighLevel's WhatsApp workflow action.[3]
  • Choose a sender. TimelinesAI connector: Choose a listed sender from the linked TimelinesAI workspace. Verify that it is online; appearing in the list does not prove availability.[2] HighLevel native: HighLevel lists connected sender numbers in its native workflow picker.[3]
  • Use contact values. TimelinesAI connector: Conditional. GoHighLevel must resolve the custom value before the connector runs.[1][2] HighLevel native: Native actions support HighLevel workflow values and WhatsApp templates.[3]
  • Send images, files, or native templates. TimelinesAI connector: Unavailable in the connector's current workflow send. Use plain text. HighLevel native: Native HighLevel supports approved WhatsApp templates and related workflow branches.[3]
  • Wait or branch on a WhatsApp reply. TimelinesAI connector: Unavailable as a connector-generated reply event. Replies appear as contact notes; the full thread stays in TimelinesAI.[2] HighLevel native: HighLevel documents wait-for-reply and reply-aware branches for its native WhatsApp channel.[3]
  • Detect delivery or read state. TimelinesAI connector: The action result appears in workflow history, but it is not a WhatsApp read receipt.[1] HighLevel native: Native HighLevel documents undelivered and timeout branches for supported WhatsApp actions.[3]
  • Retry a failed send. TimelinesAI connector: Do not assume an automatic resend. Fix the cause, then rerun deliberately. HighLevel native: Follow the failure branch available in the native action you selected.[3]
  • Apply consent or DND rules. TimelinesAI connector: Keep consent and suppression checks in your GHL workflow before the connector action. HighLevel native: HighLevel documents WhatsApp DND controls for its native channel.[3]
  • Continue the full conversation. TimelinesAI connector: Open TimelinesAI. Contact notes are a CRM activity trail, not an embedded inbox.[2] HighLevel native: Native conversations remain in HighLevel's WhatsApp conversation surface.[3][4]

This boundary matters most when a recipe waits for a reply. With the TimelinesAI connector, the inbound message can become a contact note, but the connector does not create the native WhatsApp reply event used by HighLevel's own wait step.[2][3]

What must be true before a GHL WhatsApp workflow goes live?

Check these seven items on a test contact:

  • The TimelinesAI app is connected to the same GoHighLevel sub-account that owns the workflow.
  • The contact phone includes the country code and normalizes to E.164, with a plus sign followed by the country code and subscriber number, rather than a local-only number.[2]
  • The selected WhatsApp sender is online in TimelinesAI. A sender can appear in the workflow dropdown even when it is not ready to send.[2]
  • The message is plain text and is not empty after GoHighLevel resolves every custom value.[1][2]
  • The contact has opted in to the category of message you plan to send. WhatsApp requires the recipient's number and opt-in permission, and it requires businesses to honor opt-out requests.[5]
  • Suppressed, duplicate, test, and staff contacts are excluded before the send action.
  • A named owner knows where to inspect failures and where to handle replies in TimelinesAI.

Do not start with a ten-step nurture sequence. Publish one trigger and one message to an internal contact. Once the phone, sender, custom values, contact note, and response handoff all work, add one new condition at a time.

How should a reliable GHL WhatsApp workflow be structured?

Use the same six-part pattern for each recipe:

  1. Trigger: Choose one event that clearly explains why the contact is entering the workflow.
  2. Eligibility check: Confirm opt-in, phone, location, owner, and any suppression field.
  3. Timing check: Avoid quiet hours and stale events. Use a delay only when the business reason is clear.
  4. Message step: Send one plain-text WhatsApp message from the intended TimelinesAI sender.
  5. Result check: Review the workflow action result. A successful action is not a read receipt.
  6. Handoff: Tell the assigned rep when to open TimelinesAI, especially before another automated or manual follow-up.

This structure is intentionally conservative. It prevents the most common failure pattern: a contact receives a second automated message after replying because the workflow owner assumed a TimelinesAI contact note would behave like HighLevel's native WhatsApp reply trigger.

Which GoHighLevel WhatsApp automation recipes are worth building first?

1. Instant lead response

Use this when a person submits a form and has explicitly agreed to receive WhatsApp follow-up.

Trigger and logic

  1. Trigger on the specific form submission or lead-source event.
  2. Require WhatsApp opt-in and a non-empty phone field.
  3. Exclude existing customers, staff, duplicates, and blocked contacts.
  4. Send one acknowledgement.
  5. Assign the contact to a rep and create the normal sales follow-up task.
  6. Do not add a second automatic WhatsApp message unless the team has a separate, verified way to suppress contacts who already replied.

Message example

Hi {{contact.first_name}}, thanks for contacting {{location.name}} about {{contact.custom_values.service}}. We received your request. A team member will reply shortly.

Keep the promise modest. The message confirms receipt; it does not claim that a rep is available immediately.

2. Appointment reminder

Use this for confirmed appointments after the contact has agreed to operational WhatsApp updates.

Trigger and logic

  1. Trigger from the appointment status or a fixed interval before the appointment.
  2. Require a confirmed status, valid phone, and WhatsApp consent.
  3. Check the appointment date and timezone values on a real test contact.
  4. Send one reminder from the business number the contact will recognize.
  5. Route any reply to the team in TimelinesAI rather than waiting for a native HighLevel WhatsApp reply event.

Message example

Hi {{contact.first_name}}, reminder: your appointment with {{location.name}} is on {{appointment.start_time}}. Reply here if you need help changing it.

Test the rendered time, not the merge syntax alone. A valid-looking message with the wrong timezone is still a failed workflow.

3. Opportunity stage change

Use this when a pipeline change has a clear customer-facing meaning, such as a proposal becoming ready.

Trigger and logic

  1. Trigger on one exact pipeline and stage transition.
  2. Confirm that the stage is not reused for internal housekeeping.
  3. Require phone, consent, owner, and the value needed in the message.
  4. Send one status update.
  5. Keep opportunity updates inside GoHighLevel. The WhatsApp connector sends the text; it does not move the opportunity, change the pipeline, or add tags.[2]

Message example

Hi {{contact.first_name}}, your proposal for {{contact.custom_values.service}} is ready. {{user.first_name}} will send the next details shortly.

Avoid vague triggers such as any opportunity update. They can fire after edits that the customer should never see.

4. Reactivation with explicit enrollment

Use this for a small, permissioned segment. Do not use the workflow as a substitute for consent or list hygiene.

Trigger and logic

  1. Add only approved contacts to a dedicated reactivation segment or tag.
  2. Exclude anyone who opted out, was contacted recently, has no owner, or has an invalid phone.
  3. Send one message with a clear reason and an easy way to decline.
  4. Give the team a review window in TimelinesAI before any second touch.
  5. Remove the enrollment tag or otherwise prevent duplicate entry.

Message example

Hi {{contact.first_name}}, you asked about {{contact.custom_values.service}} earlier. Is this still relevant? Reply YES and our team will pick it up, or STOP if you do not want more WhatsApp updates.

WhatsApp says businesses must honor requests to stop or opt out, including requests made off WhatsApp.[5] Store that preference in the system your workflow checks before every future send.

5. Customer onboarding

Use this after a clear customer milestone, such as a signed agreement or confirmed purchase. Keep the first version short.

Trigger and logic

  1. Trigger from one verified customer milestone.
  2. Confirm the contact is in the correct account, product, and language segment.
  3. Send the welcome message with one next step.
  4. Delay any follow-up until the customer has had time to act.
  5. Before each later message, recheck opt-out, phone, owner, and completion status in GoHighLevel.
  6. Tell the account owner to check TimelinesAI for replies before sending a manual message.

Message example

Welcome to {{location.name}}, {{contact.first_name}}. Your first step is {{contact.custom_values.next_step}}. If anything is unclear, reply here and our team will help.

Do not turn onboarding into a wall of text. One message with one next step is easier to test and easier for the customer to act on.

How can you reuse WhatsApp message templates without hiding failures?

Use short message patterns, then replace only the values that GoHighLevel can reliably populate.

  • Acknowledge. Hi {{contact.first_name}}, we received your request about {{contact.custom_values.service}}. Verify before launch: First name and service
  • Remind. Reminder: your appointment is on {{appointment.start_time}}. Verify before launch: Timezone and status
  • Update. Your {{contact.custom_values.item}} is now {{contact.custom_values.status}}. Verify before launch: Item and approved customer-facing status
  • Handoff. {{user.first_name}} is handling this and will reply shortly. Verify before launch: Assigned user
  • Invite a reply. Reply YES if you want us to continue, or STOP to opt out. Verify before launch: Consent and opt-out process

A custom value is useful only when the test contact has a value. The Marketplace listing says the message body supports GoHighLevel custom values, while the TimelinesAI product page clarifies that GoHighLevel must resolve them before the connector runs.[1][2]

Use a plain-text fallback when a value is optional. For example, write two workflow branches for contacts with and without an assigned owner instead of hoping an empty {{user.first_name}} will read naturally.

Why did a GoHighLevel WhatsApp workflow fail?

Work through this checklist in order. Do not hit retry until the cause is clear.

  • Invalid phone error. Cause: Missing country code or malformed contact phone Check: Contact phone and country Fix: Store the number in E.164 and rerun once.[2]
  • Sender appears but the send fails. Cause: Listed account is offline, disconnected, or no longer usable Check: Sender status in TimelinesAI Fix: Reconnect or select an online sender.[2]
  • Message is empty or looks broken. Cause: A custom value resolved to blank or unexpected text Check: Workflow test data and contact fields Fix: Test plain text, then add values one at a time.[1][2]
  • Workflow action succeeds but no reply branch runs. Cause: A TimelinesAI contact note is not a native HighLevel WhatsApp reply event Check: Contact notes and the thread in TimelinesAI Fix: Handle the reply in TimelinesAI; do not wait on the native reply trigger.[2][3]
  • Image or file is missing. Cause: The current connector action sends text, not media Check: Workflow action payload and message design Fix: Send a secure link in text or handle the file in TimelinesAI.
  • Contact receives a duplicate message. Cause: Re-entry, overlapping triggers, or no suppression after a prior send Check: Workflow enrollment history and tags Fix: Add a deterministic suppression field or tag before the action.
  • Action reports an authorization or connection problem. Cause: The sub-account connection is stale or missing Check: App connection for that GHL location Fix: Reconnect, test one contact, then resume.
  • Action reports a plan or credit problem. Cause: The TimelinesAI workspace cannot accept another automation send Check: Workspace plan and available automation credits Fix: Resolve the account limit before retrying; use the pricing guide for the current cost model.
  • Temporary service failure. Cause: The send request did not complete Check: Workflow history and service status Fix: Treat it as unsent. Wait, verify the contact has not received it, and rerun deliberately.

The connector does not promise an automatic resend for every failure. A blind retry can create duplicates if the first request completed but the workflow history did not make the outcome obvious. Confirm the contact note and TimelinesAI thread before rerunning.

What prevents duplicate, mistimed, or unwanted WhatsApp messages?

Use these controls before increasing volume:

  • One entry rule per business event. If two triggers represent the same event, choose one.
  • An idempotency field or tag that records the workflow version and send date.
  • A consent field that the workflow checks before every WhatsApp action.
  • A suppression rule for opt-outs, staff, tests, duplicate contacts, and recent sends.
  • A timezone-aware send window.
  • A sender ownership rule so the contact recognizes the number.
  • A one-message pilot before any sequence.
  • A human handoff rule that sends the rep to TimelinesAI before another follow-up.
  • A failure queue with the contact, workflow, sender, timestamp, and action result.

Meta's current policy requires both the recipient's phone number and opt-in permission, and it requires businesses to honor opt-out requests.[5] Automation should make those checks more consistent, not make them easier to bypass.

When should you use native HighLevel WhatsApp instead?

Use HighLevel's native WhatsApp when the workflow depends on native WhatsApp templates, wait-for-reply steps, delivery branches, or a conversation that stays inside HighLevel.[3][4]

Use the TimelinesAI connector when the team operates the full WhatsApp conversation in TimelinesAI and needs GoHighLevel to trigger outbound text and retain a contact-note trail.[2]

The right route depends on the operating model. Compare the two options on the GoHighLevel WhatsApp integration page, then use the pricing guide for the cost model. If you still need to install the connector, follow the separate setup guide rather than rebuilding the setup from this article.

Frequently asked questions

Can GoHighLevel send WhatsApp messages automatically?

Yes. With the TimelinesAI Marketplace app connected, a GoHighLevel workflow can send plain-text WhatsApp messages to the contact phone through a selected TimelinesAI sender.[1][2]

How do I send WhatsApp from a GoHighLevel workflow?

Create the trigger and eligibility checks in GoHighLevel, add the TimelinesAI WhatsApp workflow action, choose an online sender, and send non-empty text to an E.164 contact phone. Test one internal contact before publishing the workflow. The full installation sequence is in the setup guide.

Which GoHighLevel custom values work in a WhatsApp message?

The message can use values that GoHighLevel resolves before the connector runs, including contact values such as {{contact.first_name}}.[1][2] Test every field on a real contact; the connector does not fill missing data or interpret the merge syntax itself.

Can the workflow send an image, document, or native WhatsApp template?

Not through the current TimelinesAI workflow send. It sends text. Use HighLevel's native WhatsApp action when the workflow requires approved native templates, or handle files in TimelinesAI.[3]

Will the workflow stop when a contact replies on WhatsApp?

Not automatically through a connector-generated native reply event. The reply can appear as a GoHighLevel contact note, while the full conversation remains in TimelinesAI.[2] Check TimelinesAI before a second automated or manual follow-up.

Does the connector retry failed WhatsApp messages?

Do not assume it will resend. Treat a failed action as unsent, fix the phone, sender, message, connection, or account limit, confirm the contact did not receive the first attempt, and rerun deliberately.

How do I prevent duplicate WhatsApp automation?

Use one trigger per business event, block re-entry, write a sent-version field or tag before the action, and suppress contacts who already received the message. Check the TimelinesAI thread before manually retrying an uncertain result.

Where do replies and the full WhatsApp conversation appear?

New one-to-one activity can be logged as notes on the GoHighLevel contact. The complete thread and shared inbox stay in TimelinesAI, not in GoHighLevel Conversations.[2]

Start with one message you can verify

Build the smallest useful workflow: one controlled trigger, one eligibility check, one plain-text message, and one owner. Confirm the E.164 phone, resolved values, online sender, workflow result, contact note, and TimelinesAI thread.

Once that test passes, copy one of the five recipes and add only the conditions your team can monitor. To test the connector with your own GoHighLevel sub-account and WhatsApp number, start a 10-day TimelinesAI trial.

Sources

  1. [1] WhatsApp Integration by TimelinesAI — GoHighLevel Marketplace
  2. [2] GoHighLevel WhatsApp Integration — TimelinesAI
  3. [3] HighLevel WhatsApp Workflow Integration
  4. [4] Select WhatsApp Sender Numbers in HighLevel Conversations
  5. [5] WhatsApp Business Messaging Policy