# GoHighLevel

Aktify can schedule appointments directly in your GoHighLevel (HighLevel) calendars. During a conversation, the Aktify AI agent offers your real open slots to a lead, and when the lead confirms, Aktify books the appointment on the assigned GoHighLevel calendar automatically.

This guide walks through connecting GoHighLevel and assigning a calendar to a campaign. For behavior shared with Google Calendar — timezones, the one-scheduler-per-campaign rule, arrival windows, and more — see the [Appointment Scheduling overview](./index).

## How it works

You connect your GoHighLevel account to Aktify **once**, at the company level, using GoHighLevel's OAuth authorization flow — you click **Connect**, sign in to GoHighLevel, and approve access. There's no API key to copy.

After connecting, you assign a specific GoHighLevel **calendar** to each campaign. From then on, Aktify can:

- **Read availability** from that calendar — so the agent only offers slots your GoHighLevel calendar shows as open.
- **Book, reschedule, and cancel appointments** — so confirmed appointments sync straight into GoHighLevel.

## Before you begin

You'll need:

- A **GoHighLevel account** with an active location (sub-account).
- A **calendar configured in GoHighLevel** for the appointments you want to take. This is where you set the calendar's availability — working hours, appointment duration, and slot rules all live in GoHighLevel.
- Optionally, the **team member** in GoHighLevel you want appointments assigned to.
- Portal access with an **Admin** or **Editor** role.

## Step 1 — Connect your GoHighLevel account

This is done once per company.

1. In the Aktify Portal, go to **Settings → Integrations → GoHighLevel**.
2. In the **Connection** section, click **Connect**.
3. You'll be redirected to GoHighLevel to sign in and authorize Aktify's access. Approve the request.
4. You'll be returned to the Portal, where the connection now shows as connected.

To disconnect later, use the same **Connection** section.

## Step 2 — Prepare your calendar in GoHighLevel

Because Aktify reads availability from GoHighLevel, make sure the calendar you plan to use is set up the way you want appointments booked:

- **Working hours / availability** — the days and times the calendar is bookable.
- **Appointment duration** — how long each appointment slot is.
- **Team members / assigned users** — the GoHighLevel users the calendar books for.

You configure all of the above in GoHighLevel, not in the Aktify Portal.

## Step 3 — Assign the calendar to a campaign

1. Open the campaign and go to **Settings → Integrations**.
2. Under **Appointment Scheduling**, select **GoHighLevel**.
3. Choose the **GoHighLevel calendar** to book into.
4. Optionally choose a **team member** to assign appointments to.
5. Optionally set a **schedule date range** and an **arrival window** (see the [Configuration reference](#configuration-reference)).
6. **Save.** Saving activates GoHighLevel scheduling for the campaign.

:::warning
Activating GoHighLevel **deactivates any other scheduler** on this campaign. See [one scheduler per campaign](./index#one-scheduler-per-campaign).
:::

## Configuration reference

These are the settings you manage in the Aktify Portal for a GoHighLevel campaign:

| Setting | What it controls |
| :--- | :--- |
| **Calendar** | The GoHighLevel calendar Aktify reads availability from and books appointments into. Required. |
| **Team member** | Optional. The GoHighLevel user that booked appointments are assigned to. |
| **Schedule date range** | Optional start/end dates that bound when appointments may be scheduled. |
| **Arrival window** | For field-service appointments, the size of the technician arrival window in hours. Leave at `0` for exact-time appointments. See [Arrival windows](#arrival-windows). |

Everything else — working hours, appointment length, and how many appointments a slot allows — comes from the calendar's own settings in GoHighLevel.

## How scheduling works for your leads

### Availability

The agent offers only the slots your GoHighLevel calendar reports as open, within any schedule date range you set. As appointments are booked, GoHighLevel's availability updates and the agent stops offering slots that are no longer free.

### Timezones

The appointment's timezone comes from your GoHighLevel calendar — you don't set it in the Aktify Portal. Aktify converts each offered time into the lead's own local timezone (see [how timezones work](./index#leads-always-hear-their-own-local-time)).

### Arrival windows

Set the **Arrival window** field to the number of hours in the window, or leave it at `0` for exact-time appointments. See [arrival windows](./index#arrival-windows) for how it's used.

## Troubleshooting

| Symptom | Likely cause | Fix |
| :--- | :--- | :--- |
| The connection shows as disconnected | The OAuth authorization wasn't completed or was revoked in GoHighLevel | Re-run [Step 1](#step-1--connect-your-gohighlevel-account) |
| The agent isn't offering any slots | The GoHighLevel calendar has no open availability, or a schedule date range excludes the near-term dates | Check the calendar's availability in GoHighLevel; review the schedule date range |
| Appointments aren't being assigned to the right person | No team member selected, or the wrong one | Set the **team member** on the campaign's GoHighLevel configuration |

## FAQ

**Do I connect GoHighLevel per campaign?**
No. You authorize GoHighLevel once at the company level, then assign a calendar to each campaign that should use it.

**Where do I set my working hours and appointment length?**
In GoHighLevel, on the calendar itself. Aktify reads those settings — you don't re-enter them in the Portal.

**Can I use both GoHighLevel and Google Calendar on the same campaign?**
No — see [one scheduler per campaign](./index#one-scheduler-per-campaign).
