> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tuco.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Send iMessage from GoHighLevel (GHL)

> Send automated iMessage from GoHighLevel with Tuco AI — trigger a blue-bubble text from any GHL workflow with a webhook, or use the Send via Tuco Marketplace action.

**You send iMessage from GoHighLevel by connecting GHL to Tuco AI and calling Tuco's Send Message API from a GHL workflow — the fastest way is a plain Webhook action pointed at `https://app.tuco.ai/api/messages` with your Tuco API key.** GoHighLevel has no native iMessage channel, so Tuco provides the Apple-connected sending lines and handles the iMessage availability check plus SMS fallback automatically. You can also use the **Send via Tuco** GHL Marketplace action for contact-ID-only sends and native voice notes.

## Method 1 — Send from a GHL workflow with a Webhook (fastest)

No Marketplace app or action secret required — just your Tuco API key.

<Steps>
  <Step title="Add a Webhook action">
    In your GHL workflow, add a **Webhook** action — Method `POST`, URL `https://app.tuco.ai/api/messages`.
  </Step>

  <Step title="Add your API key header">
    Header `Authorization` = `Bearer tuco_sk_xxxxxxxxxxxxx` (your [Tuco API key](/api-reference/api-keys)).
  </Step>

  <Step title="Map only the message">
    Under **Custom Data**, set `message` (required). Optionally add `lineId` to pin a sending line and `attachmentUrls`. GHL already attaches the full contact payload, so Tuco reads `phone` → recipient, `contact_id` → GHL contact, `location.id` → location, `full_name` → name, and `user.email` → owner automatically.
  </Step>
</Steps>

If the contact has no phone or email, the send fails with `missing_recipient`. Full field-by-field mapping and a copy-paste example live on the [Send Message reference](/api-reference/endpoint/send-message#send-straight-from-a-gohighlevel-webhook).

## Method 2 — The "Send via Tuco" Marketplace action

Use the GHL Marketplace **Send via Tuco** action when you want Tuco to look up the recipient, pick a line, and run compliance checks from only a contact ID — or when you want to send a **native iMessage voice note** (the play-button bubble, not a file link). Find both setups in your Tuco dashboard under **Leads → AI & API**.

## Control the channel with a GHL tag

Tuco reads a GHL **contact tag** live on every send, so you can force a channel instantly — no sync, no reinstall:

| Tag on the contact | Effect                                                                                                                                           |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `forcefallback`    | Skip the iMessage check and send via your configured SMS fallback (Twilio / GHL / custom webhook). Use for contacts you know aren't on iMessage. |
| *(no tag)*         | Normal flow — try iMessage first, fall back only if the contact isn't reachable on iMessage.                                                     |

The tag is matched loosely, so `forcefallback`, `force-fallback`, and `Force Fallback` all work. `forcefallback` changes the channel only — a fallback must be configured under **Settings → When iMessage isn't available**.

## Connect GoHighLevel to Tuco

<Steps>
  <Step title="Enter your GHL credentials">
    In Tuco go to **Integrations → CRM**, enter your GHL **API key** and **Location ID**, and click **Test & Connect**. A full contact sync starts automatically and re-syncs every 15 minutes.
  </Step>

  <Step title="Grant the required scopes">
    Location access, Contacts (search/read), and Tags (read) are required. Users-read, Custom-fields-read, Contact-tags add/remove, and Conversations-create are recommended for owner mapping, field mapping, and activity logging.
  </Step>
</Steps>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Does GoHighLevel send iMessage natively?">
    No. GHL sends SMS and email but cannot send iMessage. Tuco AI adds the iMessage channel by sending from Apple-connected lines and exposing a Send Message API and a GHL Marketplace action.
  </Accordion>

  <Accordion title="Do I need the Marketplace app to send an iMessage?">
    No. The quickest method is a plain GHL Webhook action to the Send Message API using your Tuco API key. The Marketplace "Send via Tuco" action is optional and adds contact-ID lookups and native voice notes.
  </Accordion>

  <Accordion title="How do I send an iMessage voice note from GHL?">
    Use the Send via Tuco Marketplace action with a public audio URL, set `message` to `_attachment_only_`, and set `voiceNote` to `true`. Note that attachments (including voice notes) are blocked on the first-ever message to a contact — warm them up with a text first.
  </Accordion>

  <Accordion title="Can I force a contact to SMS instead of iMessage?">
    Yes. Add the `forcefallback` tag to the GHL contact. Tuco reads it live on every send and routes that contact through your SMS fallback.
  </Accordion>
</AccordionGroup>

<Card title="GoHighLevel integration" icon="bolt" href="/integrations/ghl">
  Full GHL setup: sync, tags, owner mapping, voice notes, and Check for Replies.
</Card>
