Start with the visible symptom, then prove each layer. A successful ScaleSafe HTTP response does not by itself prove that GHL sent an email or that a processor changed state.
ScaleSafe Does Not Open
- Confirm the user opened ScaleSafe from the intended GHL sub-account, not the agency view.
- Retry once after confirming ScaleSafe health.
- Record the exact time and technical error category.
- Check Railway for
/auth/ssoat that time.
Interpretation:
- No
/auth/ssoplusparent_context_timeout: GHL did not return trusted location context. Do not choose another sub-account or trust a URL location parameter. /auth/ssoreturns a temporary-service error: wait and retry; do not uninstall a valid app.- ScaleSafe confirms the install/location binding is missing or revoked: reinstall only that sub-account.
Payment Information Does Not Load
- Wait for the QMS or checkout loading state to finish.
- Confirm the selected offer is active and assigned to a configured processor.
- Refresh once and retry the same client/offer.
- Record
/api/dashboard/manual-sale/config,/api/offers, and the payment route status in Railway.
Do not submit repeatedly after an ambiguous timeout. ScaleSafe’s durable payment claim may be waiting for reconciliation.
A Payment Succeeded But Is Missing Or Misclassified
Compare four identifiers:
- Processor transaction/payment ID.
- ScaleSafe payment-event ID.
- Enrollment ID.
- Processor subscription or Whop membership ID when recurring.
Check Payments > Reconciliation. A one-time add-on appears on the first checkout only; it must not be counted as recurring principal. Do not repair data manually until processor truth is known.
A Workflow Did Not Send
Check these layers separately:
- ScaleSafe trigger delivery log: did GHL accept the app event?
- GHL workflow execution log: did the contact enter the workflow?
- GHL action state: executed, waiting, skipped, or failed?
- Client communication history: was an email/SMS actually created?
- Recipient inbox: was it delivered?
Common causes:
- The contact is still inside the workflow and GHL skips re-entry.
- A time window leaves the email action waiting until the next allowed period.
- A deleted trigger subscription is stale. Current ScaleSafe code deactivates it after GHL returns the terminal deleted-trigger error.
- A workflow template uses an object merge field rather than the documented scalar contact field.
A Merge Field Shows [object Object]
Use the scalar ScaleSafe contact fields documented in WORKFLOW_FIELD_CONTRACT_MATRIX.md. Do not paste a whole trigger object into an email. Re-publish the workflow and run one exact-client test.
Pulse Was Not Received
Confirm:
- The offer has pulse cadence enabled.
- The enrollment is active and
next_pulse_due_atis due. - The app event reached GHL.
- The workflow filter is
Event Type = Pulse Check Due. - The contact is not still waiting inside the workflow.
- The email action is inside its allowed send window.
Pulse diagnostics distinguish app-event delivery, outbound communication, and client submission. Treat them as separate proofs.
Evidence Is Not Linked To A Program
Link to Program means ScaleSafe knows the client but cannot safely prove one exact enrollment. This is preferable to assigning evidence to the newest program.
For direct messages, select the intended enrollment before sending. For provider events, inspect the connection’s match method and health. Ambiguous events must remain outside an enrollment-scoped defense packet.
Zoom Is Connected But Shows No Evidence
Connected means OAuth succeeded. Zoom evidence requires a completed non-host participant event that can be matched to one enrollment. Confirm:
- The participant is not the Zoom host.
- The meeting/participant event was observed.
- ScaleSafe resolved one exact contact and enrollment.
- The event reached
published, notquarantinedorrejected.
A Defense Packet Says Needs Review
Read the review reasons. Common causes are missing delivery proof, transaction/enrollment mismatch, ambiguous scope, unsupported chronology, or AI fallback. Needs Review is a safety state; it must not automatically fire ss_defense_ready.
Do not mark a packet submitted merely to clear the warning. Correct the facts, regenerate if appropriate, and compare the letter, exhibits, PDF, transaction, reason code, and actual processor deadline.
Production Appears Slow
- Check
/health. - Check Supabase project health and resource warnings.
- Query Railway HTTP logs for
>=400and requests over three seconds. - Check worker warning/error logs and queue age.
- Avoid opening many retrying tabs during a dependency incident.
If database-backed routes fail while the static app root loads, treat it as a dependency/availability incident rather than a GHL installation failure.