Does anyone have any ideas on how an alert can be sent when someone runs a report in Salesforce? My client is having issues with people accessing and running reports that they should not.

The client is having issues with users running reports and "stealing" data. They are trying to find a way to do the following:

  1. limit the type of reports they can run.

  2. remove all ability to export

  3. Alert them when someone is trying to run a report in general.

The users still need access to the data and can run some canned reports, but anything above and beyond should send an alert.

  • why not setup sharing and security rules on the object that you don't want certain profiles to run reports on?
    – glls
    Commented Apr 26, 2017 at 16:16
  • Can you give me some examples? Contacts, custom objects, accounts would all be included.
    – Shannon113
    Commented Apr 26, 2017 at 16:24
  • your question is still not very clear, should the users have access to the records they are running reports on? or should certain users simply not be able to run reports? please feel free to modify your question
    – glls
    Commented Apr 26, 2017 at 16:36
  • please add this to your question =)
    – glls
    Commented Apr 26, 2017 at 16:43

1 Answer 1


As far as I know, the "best" solution for tracking report runs and exports is to purchase Event Monitoring from Salesforce, and utilize the data to check daily who exported what data from reports.

All orgs have some level of Event Monitoring enabled, and you can test using these log files in the relevant trailhead.

The data comes out as logfiles every 24 hours, and contains a log of what each user was doing, and when they did it. Each type of logged item comes with its own data (For reference, check the Report and ReportExport types in the documentation).

This does come with some downsides:

  • Costs money
  • Requires an external server for processing
  • Tracks extra data
  • Notifications happen 24 hours late (at best)

The upside is that you get every scrap of data you could need to take action, such as the number of rows, fields, and whether or not they ran or exported the report.

I've looked into some other solutions, such as custom visualforce "reports" where the page is just a proxy for a soql query, but each one requires time investment, which can be a dealbreaker when you need a solution now.

As an aside, it sounds like the client in question may need to reevaluate their data access on a per user basis, and adjust their profiles to disallow certain actions based on the level of data needed. This ended up being a solution for myself, where we evaluated our firing process, and determined when we needed to remove privileges from our users, removing our need for as heavy-duty tracking software.

Once you determine which profiles no longer need Report Export access, you can disable that setting in those profiles.

  • Thank you so much battery.cord! I also looked at Event Monitoring and it is way too complicated for this client to handle! Way too manual as well. Data access sounds about right at this point. I like the idea of different profiles as well. I will speak with them about it.
    – Shannon113
    Commented Apr 26, 2017 at 20:18
  • @Shannon113 Glad this could help- in the future, be sure to upvote answers were useful when answering your questions, and once you have reached a solution, be sure to accept the answer which has helped you the most. Commented Apr 26, 2017 at 20:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .