Skip to content

[Feature New API] User Deleted #146

Description

@GoCSM

🌟 Describe the Feature

We need a reliable way to know when a GHL user is deleted or removed so we can mirror that action in our database.
Two acceptable solutions (either or both):

  1. Webhook event fired in real time when a user is deleted (at the Agency level) or removed from a Location.
  2. Read API to list deleted users (with since cursor) for reconciliation.

The signal should distinguish between:

  • Deletion scope: agency (full account deletion) vs location (removed from a single sub-account).
  • Soft vs hard delete (if applicable).
  • User who performed the deletion.

🚀 Justification

Accurate user rosters are critical for analytics, licensing, and data compliance. Without a deletion signal, third-party platforms (like GoCSM) retain “ghost” users, which:

  • Distort health scores, adoption, and seat-usage metrics
  • Create billing/licensing mismatches
  • Increase privacy risks by retaining unneeded data
  • A webhook avoids inefficient polling and keeps partner apps in sync with GHL in real time.

📝 Suggestions

{
"id": "evt_9f5c4b1a",
"event": "user.deleted",
"occurred_at": "2025-08-27T10:12:00Z",
"account_id": "agency_123",
"location_id": "loc_456",
"deletion_scope": "location", // "location" | "agency"
"soft_delete": false,
"deleted_by": {
"id": "user_321",
"email": "admin@example.com"
},
"user": {
"id": "user_789",
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe"
}
}

Product Area

users

📋 Use Case

We syncs GHL users for every client Agency and Location.
When an Agency/Sub-account Admin deletes a user or removes them from a Location, we must immediately:

  • Remove that user (or their Location relationship) from our DB
  • Recalculate product-adoption and health metrics
  • Free the seat for billing/licensing and permissions

Today we can add users and update details, but we have no authoritative delete signal, leading to stale records and manual cleanups.

🚨 Why Should This Be Prioritized?

  • Data integrity: prevents ghost users from skewing analytics and automations
  • Compliance: helps partners promptly honor data-minimization expectations
  • Ecosystem impact: many integrations depend on accurate user rosters; a single webhook enables all of them
  • Low lift, high leverage: mirrors existing users event patterns and uses your current webhook framework

🧠 Additional Context

  • Please include both Agency-level and Location-level context in the payload.
  • If “soft delete” exists, surface it so partners can decide whether to purge or archive.
  • A backfill Read API with since/cursor support will help partners recover from downtime and ensure eventual consistency.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions