ConnectCare is engineered as a secure, shared-database, row-isolated multi-tenant B2B SaaS platform. Every database entity is linked directly to a tenant_id anchor (e.g. default, act_fibernet, hathway_blr).
To satisfy enterprise governance and compliance requirements, ConnectCare records an immutable audit log whenever a user is created, a role is granted or modified, or an account status is updated:
| Audit Field | Description | Sample Log Entry |
|---|---|---|
actor_id | ID of manager/admin performing action | 1 (sameer shah) |
target_user_id | User account being modified | 3 (Raju) |
action_type | Type of permission modification | ROLE_GRANTED, PIN_RESET, USER_CREATED |
details | JSON diff of role/permission change | {"old_role":"SUPPORT_AGENT","new_role":"FIELD_ENGINEER"} |
ip_address | Client IPv4/IPv6 address of actor | 103.21.124.50 |
created_at | Exact UTC timestamp | 2026-09-30 15:31:00 |
Attachments (proof-of-resolution photos, optical meter readouts) are partitioned into dedicated AWS S3 buckets:
If S3 credentials are unavailable, the platform automatically falls back to local disk storage (uploads/proofs/) without disrupting field technician workflows.
Allows new ISP tenants to onboard on-the-fly and link their WhatsApp Business Account (WABA) in seconds via Meta's Embedded Signup popup, auto-provisioning System User Tokens and webhook subscriptions.
Managers configure their field workforce within the Tenants & Organizations console (tenants.html):
pin_set = 0, generates a secure 6-digit OTP (valid 24h), and dispatches a welcome alert directly to the engineer's WhatsApp.PIN Active) or is awaiting initial configuration (Pending PIN Setup).Prevents uninvited Google users from inadvertently accessing the default tenant or unauthorized data:
default tenant. Their verified Google profile is routed to onboard.html.TENANT_ADMIN with immediate dashboard access.PENDING account assigned only to that tenant; no tenant is assigned automatically.tenants.html. They assign/confirm the role and approve or reject it. Approval activates the account under that tenant.Default tenant engineer is not treated as a shared user for Apex, Sandy City, or another tenant.Enforces zero-delay deactivation across all access vectors:
Active and Disabled in tenants.html.requireAuth() verifies account active status against the database on each request, instantly terminating active sessions and cookies if deactivated.ConnectCare interfaces directly with Meta's official WhatsApp Business Cloud API to power conversational complaint intake, automated status updates, and interactive notifications:
tenants.html initiates a live, non-mutating pre-flight verification against Meta Graph API v26.0 via POST /api/whatsapp/test-connection.php.
tenant_settings are modified only when the administrator explicitly clicks "Save Changes".v26.0. In v26.0, whatsapp_business_account is the parent container node and does not exist as a field on Phone Number nodes (GET /v26.0/{phone_number_id}). Requesting it causes Meta Error (#100) Tried accessing nonexisting field (whatsapp_business_account). Phone queries strictly request phone fields (id, verified_name, display_phone_number, quality_rating, code_verification_status, status, throughput), while WABA discovery is performed via dedicated WABA node inspection or debug token granular scopes.developers.facebook.com) is an internal asset for the developer console and App Review. The public avatar seen by subscribers chatting with 917922155001 is the WhatsApp Business Profile Photo, uploaded via Meta WhatsApp Manager (business.facebook.com/wa/manage/phone-numbers/ → Settings → Profile) or directly within ConnectCare. Because WhatsApp mobile clients aggressively cache avatars locally, opening the contact's Business Details screen forces an immediate CDN cache refresh.tenants.html, administrators can directly upload a photo file or click "🔄 Use Organization Logo" to synchronize their active organization logo with WhatsApp. ConnectCare automatically resamples and center-crops the image to an optimal 640×640 px square JPEG via PHP GD, executes Meta's Resumable Upload protocol (POST /v26.0/app/uploads → binary upload → POST /v26.0/{phone_id}/whatsapp_business_profile with profile_picture_handle), and activates the live avatar on Meta's WhatsApp CDN (pps.whatsapp.net).tenants.html Wizard Step 2, administrators can configure complete Meta Business Profile attributes:
vertical): Standardized selection mapped strictly to valid Meta Graph API enums (PROF_SERVICES for ISPs and Telecom Providers, OTHER, FINANCE, RETAIL, EDU, ENTERTAIN, GOVT, HEALTH, etc.) preventing Graph API #100 Invalid parameter errors.about): Concise one-liner shown directly under the phone number in subscriber chat headers. Enforced with a strict 139-character limit and real-time character counter.websites): Up to two external URLs (Primary Company Website and Customer Tracking Portal), featuring a 1-click "⚡ Fill Tracking URL" shortcut to auto-populate /complaint-tracking.html.POST /v26.0/{phone_id}/whatsapp_business_profile) and persist them in tenant_settings. Existing profile fields are automatically retrieved and populated when clicking "⚡ Auto-Retrieve & Validate Meta IDs".