← Back to the health check

What the health check reads, keeps and deletes

Access

You approve the check through Salesforce's OAuth 2.0 web server flow with PKCE. We request one scope, api, which Salesforce labels "Manage user data via APIs". The scope permits writes. We use it to read metadata and setup data, we write nothing to your org, and we revoke our token when the scan finishes. The report prints the revoke time in UTC and the answer Salesforce returned. If Salesforce does not confirm the revoke, the report says so plainly and Mitesh follows up.

What we read (object and field names)

  • Workflow, Flow and FlowDefinition
  • OauthToken (AppName, AppMenuItemId, LastUsedDate, UseCount, UserId, CreatedDate) and ConnectedApplication
  • LoginHistory (UserId, LoginType, LoginSubType, ApiType, ApiVersion, Application, Status, LoginTime)
  • User (Id, IsActive, LastLoginDate, CreatedDate, ProfileId, UserType), Profile, UserLicense, Organization
  • PermissionSet and PermissionSetAssignment for the approving user only, to check which parts of the check that user can see
  • PermissionSetAssignment and PermissionSet (AssigneeId, Label, IsOwnedByProfile, Profile.Name, PermissionsModifyAllData, PermissionsViewAllData, PermissionsCustomizeApplication, PermissionsAuthorApex, PermissionsApiUserOnly) for active internal users, and a count of active internal users
  • SecuritySettings and EinsteinGptSettings, through the Metadata API (the report uses enableU2F, enableBuiltInAuthenticator and enableEinsteinGptPlatform)
  • BotDefinition (Id, MasterLabel, AgentType) and BotVersion (active versions only); User (Id and license name) for users on an agent license; PermissionSetAssignment (AssigneeId) for the permissions that let a user build agents
  • SecurityHealthCheck and SecurityHealthCheckRisks
  • InstalledSubscriberPackage through the Tooling API (package name, namespace, packaging model, version IDs and numbers, IsManaged, IsBeta, IsDeprecated, IsSecurityReviewed)
  • PackageLicense (NamespacePrefix, Status, AllowedLicenses, UsedLicenses, ExpirationDate, CreatedDate) and UserPackageLicense (counts per namespace, for active and inactive users)
  • AsyncApexJob (counts of namespaced Apex jobs and scheduled jobs)
  • ApexTrigger and FlowDefinitionView (counts of active namespaced triggers and flows)
  • AppMenuItem (Id, NamespacePrefix), UserAppInfo (counts per app) and AppDefinition (DurableId, NamespacePrefix)
  • SetupAuditTrail (Action and CreatedDate only, never the entry text)
  • The limits endpoint

What we never read

  • Records of any standard or custom object
  • AccessToken, DeleteToken or RequestToken on OauthToken
  • Name, Username or Email on User, except for the person who approves the check
  • Report results, dashboards, email content, Chatter, files, site traffic or event logs

Who can approve

A System Administrator. The user needs API Enabled, View Setup and Configuration, Customize Application, and Manage Users or Monitor Login History. Since September 2025 Salesforce also requires the Approve Uninstalled Connected Apps permission to approve an app no admin has installed. The standard System Administrator profile usually has all of these; some orgs restrict Approve Uninstalled Connected Apps, and there an admin installs MTM Org Health Check first, from Setup, Connected Apps OAuth Usage. If the approving user lacks a permission, the report says which finding was not computed and why, instead of printing a smaller number.

Where the data goes

The setup data read from your org is used in memory to build the report and is not kept. The report itself is stored and then deleted after the check; reply to the report email to have it deleted sooner.

Sub-processors: Vercel (hosting), Supabase (database) and Resend (email delivery). Nobody else sees the data. Mitesh Jain reads every report before it is sent.

Personal data

We store the Salesforce user IDs and login times that appear in setup data. We also store the name, username, email address, user ID and time zone of the Salesforce user who approves the check, taken from Salesforce's identity service, and your company details from Company Information (company name, org ID, edition, city, state, country, phone and the date the org was created), so we can send the report and follow up with you. We do not store the names, usernames or email addresses of any other user. The report link is emailed to the approving user's email address once Salesforce has verified it; otherwise Mitesh sends the link by hand after confirming who asked. We keep these contact details for 12 months and delete them sooner if you ask at partners@meethemind.com. For the setup data we act as processor; for your contact details we act as controller.

Revoke it yourself, before or after we do

Setup, Connected Apps OAuth Usage lists MTM Org Health Check once you approve the check. After we revoke our token the line stays: it records that you approved the app, not live access, because the app never holds a refresh token. To remove it, click the User Count number next to MTM Org Health Check, then Revoke. To stop the app for everyone in your org, click Block.

What Salesforce's approval screen shows

App nameMTM Org Health Check
DescriptionFree Salesforce org health check by Meet The Mind Technologies. Reads setup data and metadata only; access is revoked after the scan.
Scope"Manage user data via APIs (api)", Salesforce's wording

Salesforce shows this screen every time, even for someone who approved the app before, and may show only the name and the scope, so this page carries the description too.

DPA and privacy

Our privacy notice covers how we handle this data. A data processing agreement is available on request. UK and EU organisations can ask for the DPA to be signed before approving; reply to any email from us or write to partners@meethemind.com.

About us

Meet The Mind Technologies is a registered Salesforce Consulting Partner.