How to find which project a service belongs to
A short SQL query (or the Projects view in Core's admin tab) tells you which project a given service is grouped with, and what else is bundled alongside it.
Last updated 20 days ago
How to find which project a service belongs to
Useful when you're triaging a customer ticket about one service and you want to see what else they have bundled with it β a Postgres database paired with a MinIO bucket, a search instance tied to an app server, etc.
The SQL way
mod_impulsecore_project_services is the join table. Each row maps one WHMCS service_id to one project. Look up a project by service id:
SELECT ps.project_id, p.name AS project_name, p.client_id, p.created_at FROM mod_impulsecore_project_services ps JOIN mod_impulsecore_projects p ON p.id = ps.project_id WHERE ps.service_id = 1234; To list everything else in the same project:
SELECT ps.service_id, ps.module_slug, h.domain, h.packageid FROM mod_impulsecore_project_services ps JOIN tblhosting h ON h.id = ps.service_id WHERE ps.project_id = ( SELECT project_id FROM mod_impulsecore_project_services WHERE service_id = 1234 ); module_slug tells you which Impulse module owns each row β impulseminio, impulsedb-postgres, and so on.
The admin UI way
Open Addons β ImpulseCore β Projects. The table lists every project with its owning client, the count of services in it, and a link to the project detail view. The detail view shows every service in the project across modules, with one row per service.
Filter by client id to narrow down to one customer's projects. Click into a project to see the bundled services.
When a service isn't in any project
Not every service is bundled. Standalone services live in WHMCS as normal tblhosting rows with no mod_impulsecore_project_services entry. The above query returns no rows β that's the correct state, not a bug. Projects are an optional grouping concept, not mandatory membership.
Why projects exist
Projects are how Core renders the "Connected" badge in the customer client area β it's how a customer sees "this database is paired with this object storage bucket and this auth instance". They're also what powers cross-service operations like the unified .env exporter, which only includes services from the same project.