Jane Media · AC → GHL migration

GHL Build Script — 1 - Bought LYSP 2024

Human-readable source flow and step-by-step GoHighLevel rebuild script for the critical LYSP buyer onboarding automation.

Blocks11
Triggers2
Live send campaigns3
Important: ActiveCampaign exposed the flow blocks, but not the readable bodies of three segment/condition checks. Those must be visually confirmed in AC before publishing the GHL workflow.

GHL Build Script — 1 - Bought LYSP 2024

Source: ActiveCampaign automation ID 27

Exported: 2026-05-14T04:17:46.675Z

Purpose: Rebuild the critical paid-buyer onboarding automation in GoHighLevel without guessing.

Executive summary

This ActiveCampaign automation is active and operationally critical. It starts when one of two buyer/subscription tags is added, marks the contact as active, sends the LYSP welcome email, removes active/inactive trigger tags, waits, sends/checks app-access reminder logic, and conditionally sends a final reminder from an else branch.

Important API limitation: ActiveCampaign exposes the block list, triggers, sends, waits, and branch containers. It does not expose the human-readable condition bodies for three segment-based checks in this export. Those must be visually confirmed in AC before final GHL publish.

AC source triggers

Trigger IDTypeParamsMulti-entryGHL equivalent
40tagadd{"tag":"Trigger - LYSP - Subscription Active"}1Contact tag added: Trigger - LYSP - Subscription Active
66tagadd{"tag":"[Bought] LYS Program - CF"}0Contact tag added: [Bought] LYS Program - CF

AC logical block sequence

StepBlock IDParentTypeMeaning
1360startStart; trigger IDs: 40, 66
2410360updateUpdate custom field 24 (LYS Active/Inactive) to "Active"
3401360sendSend campaign 253: lysp_start 1
4411360removetagRemove tags: Trigger - LYSP - Subscription Active (#137), Trigger - LYSP - Subscription Inactive (#138)
5436360waitWait 1 day
6435360waitWait until specific day/condition using AC segment 292 (condition body not exposed by API)
7434360sendSend campaign 374: lysp_start 2
8437360waitWait until condition/segment cba39d28-5ffe-4f95-a343-fad49561e206 for up to 7 day (condition body not exposed by API)
9438360ifIf/Else branch using AC segment 09c0d903-1e67-4287-839f-3365ebceb8a8 (condition body not exposed by API). If false routes to else block 439; if true appears to end/skip else branch.
10439360elseElse branch container for if block 438
11489439sendSend campaign 462: lysp_start 2 - (Copy-462)

Email assets used by the live path

OrderAC blockCampaign IDMessage IDSubjectCopy file
1401253253[Welcome!] YOUR PURCHASE of the Last Year Single™ Program01-welcome-your-purchase-of-the-last-year-single-program.md
2434374372Did you get in? [Last Year Single App]02-did-you-get-in-last-year-single-app.md
3489462439Did you get in? [Last Year Single App]12-did-you-get-in-last-year-single-app.md

GHL workflow build script

Workflow setup

Required GHL fields/tags

Create or confirm these before building the workflow:

Step 1: Custom field: LYS Active/Inactive

- Type: single select/radio if possible

- Values: Active, Inactive, Paused, Former

- AC source field: #24 / personalization tag %LYS_ACTIVEINACTIVE%

Step 2: Trigger tags:

- Trigger - LYSP - Subscription Active

- [Bought] LYS Program - CF

Step 3: Trigger cleanup tags to remove after entry:

- Trigger - LYSP - Subscription Active

- Trigger - LYSP - Subscription Inactive

Entry triggers

Add two workflow triggers:

Step 1: Contact tag added: Trigger - LYSP - Subscription Active

- AC multientry: yes

- GHL recommendation: allow re-entry only if needed for subscription reactivation; otherwise prevent duplicate active runs with guard tag/check.

Step 2: Contact tag added: [Bought] LYS Program - CF

- AC multientry: no

- GHL recommendation: no duplicate entry while active/enrolled.

Main path

Step 1: Update contact field

- Field: LYS Active/Inactive

- Value: Active

- AC block: 410

Step 2: Send email: Welcome / purchase confirmation

- Subject: [Welcome!] YOUR PURCHASE of the Last Year Single™ Program

- Copy source: 01-welcome-your-purchase-of-the-last-year-single-program.md

- AC campaign: 253

- AC block: 401

Step 3: Remove trigger tags

- Remove Trigger - LYSP - Subscription Active

- Remove Trigger - LYSP - Subscription Inactive

- AC block: 411

Step 4: Wait 1 day

- AC block: 436

Step 5: Wait until specific day/condition — needs AC UI confirmation

- AC block: 435

- AC segment: 292

- API limitation: condition body not exposed.

- Build instruction: open AC workflow block 435 and document exact condition before recreating.

Step 6: Send email: Did you get in? [Last Year Single App]

- Copy source: 02-did-you-get-in-last-year-single-app.md

- AC campaign: 374

- AC block: 434

Step 7: Wait until condition, for up to 7 days — needs AC UI confirmation

- AC block: 437

- AC segment UUID: cba39d28-5ffe-4f95-a343-fad49561e206

- Build instruction: confirm whether this is waiting for app/login/access behavior, tag application, or another condition.

Step 8: If/Else condition — needs AC UI confirmation

- AC block: 438

- AC segment UUID: 09c0d903-1e67-4287-839f-3365ebceb8a8

- Observed behavior: false/else path routes to block 439, then sends campaign 462. True path appears to stop/skip the final reminder.

Step 9: Else path: Send final reminder

- Subject: Did you get in? [Last Year Single App]

- Copy source: 12-did-you-get-in-last-year-single-app.md

- AC campaign: 462

- AC block: 489

Recommended simplification in GHL

Do not recreate every duplicate/draft AC campaign. Rebuild the live path only:

Step 1: Welcome purchase email

Step 2: First app-access reminder

Step 3: Final app-access reminder if the success condition is not met

The AC export contains 12 campaign records, but the block flow only references campaigns 253, 374, and 462. The other campaign records appear to be historical/draft/duplicate versions of the same app-access reminder.

Open questions before publish

These are not optional; they control the branching logic:

Step 1: What exactly is AC segment 292 checking in wait block 435?

Step 2: What exactly is AC condition cba39d28-5ffe-4f95-a343-fad49561e206 checking in wait block 437?

Step 3: What exactly is AC condition 09c0d903-1e67-4287-839f-3365ebceb8a8 checking in if/else block 438?

Step 4: In GHL, what field/tag/event will represent “customer successfully got into the LYS app”?

QA checklist

Use an internal test contact before publishing to real buyers.

Source files