Top Rep 101 · Delivery System
How TR 101 runs as an automated 8-session program where each client gets emails tailored to their own progress, and the system only advances people who actually completed the prior session. For Jet and Chuck to review before we build.
LearnWorlds is the source of truth for what each learner has actually done. A small sync reads that and writes two things into GHL: completion tags (so the workflow can branch) and per-client fields (so the email can be tailored). The workflow sends, the dashboard watches.
flowchart TD
LW["LearnWorlds\nper-section progress (API)"]
SYNC["Sync job, hourly\nreads LW, writes GHL"]
TAGS["GHL completion tags\ntr101 s{n} complete"]
FIELDS["GHL per-client fields\npace, weak module, coach note"]
WF["Reusable workflow\nbranches at each send"]
EMAIL["Tailored email\none template, merged per client"]
DASH["Dashboard\nGHL stage + LW %"]
CLIENT(["Client"])
LW --> SYNC
SYNC --> TAGS
SYNC --> FIELDS
TAGS --> WF
WF -->|"done? send next : nudge"| EMAIL
FIELDS --> EMAIL
EMAIL --> CLIENT
CLIENT -->|"watches videos + simulator"| LW
TAGS --> DASH
LW --> DASH
classDef src fill:#e0f2fe,stroke:#0ea5e9,color:#0f172a;
classDef job fill:#fef3c7,stroke:#b45309,color:#0f172a;
classDef app fill:#f0fdf4,stroke:#16a34a,color:#0f172a;
class LW src; class SYNC,WF job; class TAGS,FIELDS,EMAIL,DASH,CLIENT app;
| Piece | What it does | Needed? |
|---|---|---|
| Reusable workflow | The engine. Sends each session's prework + postwork email, does the date math, runs the completion branch. One workflow, every cohort. | Yes |
| Field: Session 1 Date | Anchor the schedule counts from (Session N = start + N weeks). | Yes |
| Cohort tag | Groups a batch to enroll + report together. | Yes |
Per-session tags (tr101 s{n} complete) | The completion signal the workflow branches on. Written by the sync from LearnWorlds. | Yes |
| Pipeline (stage per session) | GHL-native board for staff who live in GHL. Advances as sessions complete. | Optional |
Emails do not just fire on a clock. Before each session, the workflow checks whether the learner finished the previous one in LearnWorlds:
For that to be correct, GHL must know completion at send time. That is the sync's job, below.
A small scheduled job, hourly. Recommended as our own job rather than Zapier, because we need section-level detail that maps cleanly to "session N," which Zapier's course-level triggers cannot do. It also avoids per-task Zap cost. Hourly is plenty for a weekly cadence.
progress_per_section_unit).tr101 s{n} complete exists (idempotent).Every client gets a different email from one template, by merging per-client fields the sync computes from their real LearnWorlds data. Deterministic, so it is safe to auto-send with no review step. It is just their own numbers, phrased.
| Field | From LearnWorlds | Example |
|---|---|---|
tr101_progress_pct | progress rate | 63% |
tr101_sessions_done | sections complete | 3 of 8 |
tr101_weak_module | lowest score / least time | Pricing Conversations |
tr101_pace | vs cohort median | ahead / on track / a session behind |
tr101_coach_note | pre-rendered sentence (rules) | "You're ahead of your cohort, nice work." |
One template:
Hi {{first_name}}, you're {{tr101_pace}} in TR 101 ({{tr101_sessions_done}} done, {{tr101_progress_pct}} overall). {{tr101_coach_note}} Before Session {{tr101_current_session}}, give {{tr101_weak_module}} another pass.
Renders two different emails:
| Need | Who | Why |
|---|---|---|
| Approval to build in Top Rep GHL | Jet | We do not change production GHL without sign-off |
| Curriculum lock: 8 session titles + cadence | Chuck | Sets the labels, dates, and email content |
| LearnWorlds TR 101 course built (8 sections) | Content owner | The sync maps sections to sessions |
| GHL write scope on the integration token | GHL admin | The sync writes the completion tags + tailoring fields |
Live dashboard · How the dashboard works · TR 101 delivery plan · Documentation home