GrowProfitProduction blueprint

6MTS · Implementation & operations manual · v1.1

Webinar Attendance Tracking

How to build, operate, test, and hand off the recurring Zoom → GHL system.

Use this manual to take over the technical integration, decide whether the existing connector is salvageable, and certify the complete weekly workflow before assigning any downstream GHL work.

AudienceIntegration owner / operator
Operating modelRegistration + attendance jobs
State modelExternal session ledger
Launch gateTwo passing cycles

Start with the takeover audit. Do not begin by building GHL workflows.

First, obtain the existing source, runtime access, logs, schedules, credentials, and proof from prior runs. Test the connector against the required data contract and failure paths in this manual.

If the existing code passes the audit, use the 20–35 hour hardening track. If its state model, occurrence handling, retries, or monitoring cannot be verified, use the 40–70 hour rebuild track. Configure the GHL communication layer only after the technical handoff passes.

Requirements to satisfy before implementation

Treat these as system requirements and use them during the initial takeover audit.

01

A recurring webinar is not one event

Every weekly occurrence has its own identity. Registration and reporting must resolve the intended occurrence—not assume the permanent webinar ID is enough.

02

Tags are not attendance history

Permanent attended/no-show tags become stale, can coexist, and may not retrigger the next week. Weekly state needs a session key and an event-based trigger.

03

Reruns must be safe

A retry cannot create another Zoom registrant, overwrite the wrong link, or send the same reminder twice. Every write needs an idempotency rule.

04

Write order matters

GHL must receive the join URL and session data before the event that starts a workflow. Otherwise messages can fire with blank or stale values.

05

Authentication will fail eventually

OAuth, private tokens, scopes, app changes, and revoked access require a named owner, health checks, and an explicit recovery procedure.

06

Silent failure is the real risk

A scheduled script that stops running can look healthy until contacts miss reminders. Monitoring, reconciliation, and alerts are part of the product.

One pipeline, two controlled handoffs

Registration and attendance are separate jobs. Both pass through a durable ledger before they release a GHL workflow event.

1GHL

Capture opt-in

A contact submits the masterclass form. GHL records consent and the registration source.

2Integration

Queue the job

Create one idempotent registration job keyed to the contact and upcoming session.

3Zoom

Resolve occurrence

Resolve the exact upcoming occurrence ID and scheduled start time before registration.

4Integration

Register and persist

Register the contact, capture the registrant ID and unique join URL, then write the ledger.

5GHL

Publish the handoff

Write session fields first. Write a unique registration event ID last to release downstream messaging.

6GHL

Send reminders

GHL runs approved reminder workflows with exclusions, send windows, and DND safeguards.

7Zoom

Read the ended session

After the webinar, resolve the completed occurrence UUID and retrieve that instance’s participant data.

8Integration

Reconcile and publish

Match attendees to registrants, classify exceptions, update the ledger, and publish a unique attendance event to GHL.

Critical release rule

Write data fields first. Write the unique event ID last. GHL workflows listen for that event ID to change, then read the already-complete data.

Make weekly state explicit

GHL holds the current messaging state. The integration ledger holds the auditable session history and retry state.

GHL contact fieldsDownstream contract
mc_session_keyText

Stable key for the weekly occurrence, such as 2026-07-28_86742848573.

mc_occurrence_idText

Zoom occurrence identifier used for that registration.

mc_occurrence_uuidText

Ended webinar instance UUID used for attendance reporting.

zoom_join_urlText / URL

Unique per-contact join link. Written before the registration event fires.

mc_registration_event_idText

New UUID for each completed registration handoff. GHL trigger field.

mc_attendance_statusDropdown

attended, no_show, unmatched, or review_required.

mc_attendance_event_idText

New UUID for each completed attendance handoff. GHL trigger field.

mc_attended_minutesNumber

Normalized total attendance duration for the resolved occurrence.

mc_last_synced_atDate/time

UTC timestamp for support and reconciliation.

Run the system the same way every week

The implementation owner should turn these procedures into scheduled jobs and preserve them in the operator runbook.

Procedure A

Registration sync

Every 15–30 minutes
  1. Select opted-in contacts that do not yet have a successful ledger record for the upcoming session.
  2. Resolve the exact upcoming Zoom occurrence and build the session key.
  3. Claim the idempotency key before making any external write.
  4. Register the contact in Zoom and capture the registrant ID and unique join URL.
  5. Persist the complete Zoom response in the external ledger.
  6. Write session, occurrence, join-link, and sync fields to the matching GHL contact.
  7. Write a new registration event ID last to release the GHL reminder workflow.
  8. Reconcile selected, registered, released, skipped, and failed counts; alert on any unexplained difference.
Procedure B

Attendance sync

After each Tuesday webinar
  1. Identify the scheduled session and resolve the UUID for that specific ended occurrence.
  2. Wait until Zoom reporting data is available; retry report-not-ready responses with bounded backoff.
  3. Fetch every participant page and preserve the raw response for audit.
  4. Merge repeat joins for the same participant and calculate normalized attendance minutes.
  5. Match participant records against that session’s registration ledger.
  6. Classify every registration as attended, no_show, unmatched, or review_required.
  7. Write attendance status, minutes, occurrence UUID, and sync timestamp to GHL.
  8. Write a new attendance event ID last to release the correct downstream workflow.
  9. Reconcile all registered contacts to a final state and publish an exception report.
Procedure C

Safe replay

When a run partially fails
  1. Pause downstream messaging if the failed run could release incomplete data.
  2. Locate the exact session and affected ledger records; never replay an unbounded date range.
  3. Correct the root cause—credentials, occurrence selection, contact matching, or API availability.
  4. Replay only records that are not already marked successful for that operation.
  5. Reuse the existing Zoom registration when it exists; do not create a second registrant.
  6. Generate a new GHL event ID only when a completed handoff still needs to be released.
  7. Compare before/after counts and attach the replay result to the incident record.
Operator failure codesRequired runbook responses
AUTH_FAILED

Zoom or GHL rejected the credential

Stop the affected job, alert the owner, rotate/reconnect, then replay the scoped records.

OCCURRENCE_NOT_FOUND

The intended weekly occurrence cannot be resolved

Do not fall back to the latest session. Require schedule review or manual selection.

REPORT_NOT_READY

The webinar ended but Zoom reporting is not available

Retry with bounded backoff; do not mark registrants as no-shows yet.

CONTACT_UNMATCHED

A Zoom record cannot be mapped confidently to GHL

Quarantine for review. Never guess between duplicate contacts.

PARTIAL_HANDOFF

Some GHL fields saved but the workflow event did not

Verify field completeness, then release one new event ID without re-registering.

RECONCILIATION_DRIFT

Registration and final-state totals do not balance

Block certification, produce an exception list, and resolve every unexplained record.

Eight phases to production

The estimate assumes competent API implementation, existing paid Zoom webinar access, and timely access to both accounts.

Phase 03–5 h

Ownership, access, and final design

Integration owner + 6MTS
  • Confirm the webinar registration type and weekly scheduling model.
  • Choose the integration runtime and durable state store.
  • Document Zoom/GHL accounts, scopes, owners, and credential rotation.
  • Lock the field contract, trigger strategy, timezone, privacy, and retention rules.

Exit gate: Signed architecture and access checklist.

Phase 15–8 h

Zoom authentication and occurrence resolver

Integration owner
  • Configure a supported Zoom app with the required webinar and reporting scopes.
  • Resolve the next scheduled occurrence before registration.
  • Resolve the ended occurrence UUID before attendance reporting.
  • Handle UUID encoding, pagination, rate limits, revoked access, and reschedules.

Exit gate: A test can identify both the upcoming and most recently ended occurrence.

Phase 28–12 h

State ledger and registration worker

Integration owner
  • Create the external session/registrant ledger and unique constraints.
  • Search GHL using supported APIs and normalize contact identity.
  • Register each contact once per session and persist the Zoom response.
  • Make retries idempotent and quarantine partial or unmatched records.

Exit gate: New, existing, and repeat-week registrants process without duplicates.

Phase 34–6 h

GHL data contract and workflow release event

Integration owner
  • Create and document the agreed contact fields.
  • Write session/link fields first and the unique event ID last.
  • Use field-change events or direct workflow enrollment—not permanent tags as the event source.
  • Preserve tags only as optional, human-readable views of current state.

Exit gate: A completed handoff reliably releases one—and only one—GHL workflow event.

Phase 48–12 h

Attendance reconciliation

Integration owner
  • Wait until the target occurrence has ended and reporting data is available.
  • Pull all participant pages for the exact occurrence UUID.
  • Merge repeat joins, normalize attendance minutes, and match against the ledger.
  • Classify attended, no-show, unmatched, duplicate, and review-required records.

Exit gate: Registered totals reconcile to an explicit final status with an exception report.

Phase 54–8 h

Monitoring, security, and operator runbook

Integration owner
  • Add alerts for auth failures, API failures, job silence, and reconciliation drift.
  • Create a safe manual replay/backfill path for one session or contact.
  • Restrict join URLs and contact data; do not post full sensitive links into broad Slack channels.
  • Document dashboards, schedules, credentials, recovery, escalation, and data retention.

Exit gate: A named operator can detect, diagnose, and replay a failed run.

Phase 64–8 h

GHL messaging workflows

GrowProfit — bounded scope only
  • Build or update static reminder workflows with client-approved copy and timing.
  • Apply existing-client exclusions, DND rules, send windows, and stop conditions.
  • Test only the actions and conditions configured directly in GHL.
  • Treat dynamic links or integration-driven nurture as a separate written scope.

Exit gate: Designated test contacts receive the approved GHL-native messages correctly.

Phase 76–10 h

QA and live-cycle certification

Integration owner + 6MTS
  • Run the full test matrix in a safe environment.
  • Observe at least two consecutive weekly webinar cycles.
  • Compare Zoom, ledger, GHL, and message counts after each cycle.
  • Close all exceptions and deliver the final handoff packet.

Exit gate: Two consecutive cycles pass the acceptance criteria without manual data repair.

Track A · Existing connector is usable20–35 engineering hours

Applies only when source access, runtime access, logs, state, occurrence handling, and a successful proof run are available. Covers audit, corrections, monitoring, runbook, and certification support.

Track B · Rebuild or major correction40–70 engineering hours

Applies when the connector lacks trustworthy state, occurrence-aware processing, idempotency, reconciliation, monitoring, or recoverable deployment. This range matches the eight phases above.

Both tracks normally span 2–3 calendar weeks because attendance cannot be certified until real webinar occurrences finish. Waiting time is not engineering time.

Test the failure paths, not just the demo

A single happy-path contact is not sufficient evidence that a recurring attendance system is production-ready.

Required test matrix

  • Brand-new GHL contact
  • Existing GHL contact
  • Same contact registering for a later week
  • Worker rerun after partial success
  • Zoom 429 / transient 5xx response
  • Expired or revoked credential
  • Webinar rescheduled or canceled
  • Attendee joins more than once
  • Registered contact does not attend
  • Zoom participant cannot be matched
  • Current-client exclusion
  • Missing join URL before workflow release

Who owns what after launch

The system stays supportable only when the runtime and integration have a named technical owner.

Integration owner

Owns the technical system

  • Zoom/GHL authentication and scopes
  • Occurrence resolution and API implementation
  • Ledger, registration, attendance, retries, and monitoring
  • Dynamic join links and field population
  • Outages, backfills, data correction, and ongoing maintenance
6MTS

Owns business inputs and approval

  • Account access and vendor authorization
  • Approved copy, schedule, destinations, and exclusions
  • Consent, privacy, retention, and internal data access
  • Live-cycle review and acceptance signoff
GrowProfit

Can own a bounded GHL layer

  • Static reminder workflows using approved inputs
  • Copy, wait steps, send windows, and existing exclusions
  • Testing of actions configured directly by GrowProfit in GHL
  • Any integration-driven or dynamic-link work only under a separate written scope

Clean handoff packet

The project is not handed off when the script runs once. It is handed off when another qualified operator can support it without guessing.

01

Source repository and deployment/runtime owner

02

Environment and credential inventory with rotation instructions

03

Architecture diagram and exact field/data dictionary

04

Occurrence-resolution and idempotency rules

05

Monitoring links, alert destinations, and failure thresholds

06

Manual replay, backfill, and reconciliation runbook

07

Two successful cycle reports with exception counts

08

Named primary and backup technical owners

Completion standard

The takeover is complete when another operator can run and recover the system from this manual.

After the technical owner completes the applicable track and certifies two weekly cycles, GrowProfit can evaluate a narrow GHL workflow scope. Connection troubleshooting, dynamic links, attendance logic, and technical support remain part of the integration owner’s runbook.

Implementation referencesZoom API: webinar occurrence and report behaviorZoom API usage, UUID, and email rulesHighLevel API: supported contact searchHighLevel API: workflow enrollment