Export Watch

Requires:

  • Rock 17.0+

Overview

Rock makes it easy for staff to export the data they can see. Almost every grid in Rock has an Export to Excel button, and many have Export to CSV. That has always been useful, but in the age of AI it carries new weight. A spreadsheet of names, addresses, phone numbers, giving or attendance can be pasted into an AI tool in seconds, and once it leaves Rock you have no say in where it goes or how long it's kept.

Out of the box, Rock doesn't keep any record of these exports. Export Watch fills that gap. It records every grid export in your Rock (who exported it, what data was in it, which page it came from, and how many rows it held) and lets the people responsible for your data know about it. It doesn't block or slow down any export. It simply gives your administrators the visibility they need to have informed conversations with staff and volunteers about how church data is used.

Key Features

  • Every grid export recorded – Export to Excel, Export to CSV and merge documents are captured from both classic and newer (Obsidian) grids across Rock.
  • The details that matter – Each record includes the person (and who they were impersonating, if anyone), the date and time, the page and block, the grid's title, the number of rows, and the columns (fields) that were exported.
  • Instant email notifications – A workflow emails your notification group each time data is exported. Because it's a workflow, you can change who's notified, add conditions, or turn it off.
  • Daily digest – An optional daily email lists the previous day's exports, grouped by person.
  • Data Exports report – A report page under Tools > Reporting lets you search past exports by date range and person.
  • No slowdown, no blocking – Recording happens alongside the export and never stops a file from downloading.

What Gets Recorded

Export Watch records an export whenever someone who is logged in uses one of these grid actions:

  • Export to Excel – On both classic and Obsidian grids.
  • Export to CSV – On Obsidian grids.
  • Merge documents – When a classic grid's Merge Template action produces a document.

Each export is saved as an interaction in a new Data Exports interaction channel, so it's kept alongside Rock's other interaction data. Records are kept indefinitely. If you'd like older records removed, set a Retention Period on the Data Exports channel (Tools > Reporting > Interactions). Each record includes:

  • Exported By – The person who ran the export. If an administrator was impersonating someone, this is the administrator (see Impersonation below).
  • Impersonation – Who was being impersonated, or that the person was signed in through a personal link.
  • Date and Time – When the export happened.
  • Page and Block – Where in Rock the export came from, including a link back to the page.
  • Grid Title – The name the exported file is given.
  • Export Method – Excel, CSV or merge document, and whether the grid was a classic or Obsidian grid.
  • Row Count – How many rows were in the grid, plus how many were selected when the export was limited to selected rows. On some classic grids the row count isn't available and is left blank, because Export Watch never re-runs a grid's query just to count it.
  • Column Headers – The columns included in the export.
  • Data Fields – For classic grids that export their full data source, the underlying fields that end up in the file. These often include more than the columns you can see on screen.
  • Entity Type – The kind of record each row represents (for example, Person or Group Member), when the grid declares one.

Impersonation

Rock lets administrators impersonate a person from their profile, and Rock's personalized email links sign people in the same way. Export Watch notices both. If an administrator exports data while impersonating someone, the export is credited to the administrator, since they're the one who took the data, and the person they were impersonating is recorded with it. The notification email, the daily digest and the report all point this out. An export made by someone signed in through a personal link is credited to that person and marked "Personal link".

For Obsidian grids, Export Watch learns who the administrator is each time a page loads. If Rock restarts after the page loads but before the export, or if your Rock runs on more than one web server, it may not be able to tell. In that case the export is credited to the person being impersonated and marked "Personal link".

What Isn't Recorded

Export Watch watches Rock's grid export buttons. It doesn't see data leaving Rock in other ways, such as:

  • Copying and pasting directly from a grid or page, printing, or taking screenshots.
  • Merge Template actions on Obsidian grids.
  • Data pulled through Rock's REST API, SQL, Power BI or other direct connections to the database.
  • Exports that happened before Export Watch was installed.

Obsidian grids build their export files entirely in the browser, so for those grids Export Watch adds a small script to every page for logged-in people, which reports the export to Rock as it happens. Someone with the technical know-how could block that script, so treat the records as a strong signal rather than a guarantee.

Installation & Configuration

Installing Export Watch from the Rock Shop sets up everything it needs. After the install, Rock will have:

  • Export Watch Grid Capture – A new HTTP module under Admin Tools > Settings > CMS > HTTP Modules. It's turned on automatically, so exports start being recorded as soon as Rock restarts after the install.
  • Export Watch Notifications – A new security role, which starts out empty. Its members receive Export Watch emails and can view the Data Exports report.
  • Data Export Notification – A new workflow type, in the Safety & Security category, that emails the Export Watch Notifications role each time data is exported.
  • Export Watch Daily Digest – A new job (inactive) and a system communication of the same name, in the Export Watch category.
  • Data Exports – A new report page under Tools > Reporting.

To finish setting up Export Watch:

  1. Add people to the Export Watch Notifications role. Go to Admin Tools > Settings > Security > Security Roles and add the people who are responsible for your church's data, such as an executive pastor, operations director or data administrator. Only members with an active email address receive emails.
  2. Choose how you'd like to be notified. Instant emails are on by default (see Instant Notifications below). If you'd rather receive one email a day, make the Data Export Notification workflow type inactive and turn on the daily digest instead (see Daily Digest below). You can also use both.
  3. Review who can see the report. The Data Exports page is open only to the Export Watch Notifications role and to Rock Administrators. If you'd like others to see it, add them to the role or update the page's security.

Until someone is added to the Export Watch Notifications role, exports are still recorded and appear on the report, but no emails are sent.

Instant Notifications

The Data Export Notification workflow (Admin Tools > Settings > General > Workflow Configuration, in the Safety & Security category) runs each time an export is recorded. Out of the box it sends one email to the members of its Recipient Group, which defaults to the Export Watch Notifications role. The email shows who exported the data, what was exported and from where, the columns included, and a link to all of that person's exports on the Data Exports report. If the export was made while impersonating someone, or by someone signed in through a personal link, the email says so.

Because this is a regular Rock workflow, you can change it to suit your church:

  • Change who's notified – Set the workflow's Recipient Group attribute to a different group or security role.
  • Only notify on some exports – Add a Run If condition to the Send Notification action. For example, only send the email when Row Count is greater than 100, or when Page Title contains "Giving".
  • Change the email – Edit the Subject and Body on the Send Notification action. All of the attributes below are available in Lava.
  • Turn instant emails off – Make the workflow type inactive. Exports are still recorded and the daily digest still works.

Export Watch fills in these workflow attributes for every export. A workflow type you build yourself receives the same values, as long as it has attributes with these keys:

  • ExportedBy – The person who exported the data (Person). When an administrator was impersonating someone, this is the administrator.
  • ExportedByName – That person's name.
  • Impersonating and ImpersonatingName – The person being impersonated, if any (Person), and their name.
  • IsImpersonatedSession – Yes when the person was signed in as someone else: by impersonating them, or through a personal link when Impersonating is empty.
  • ExportDateTime – When the export happened.
  • PageTitle and PageUrl – The page the export came from.
  • BlockName – The block that holds the grid.
  • GridTitle – The grid's title.
  • GridSource – Classic (WebForms) or Obsidian.
  • ExportMethod – ExcelExport, CsvExport or MergeDocument.
  • RowCount and SelectedCount – The number of rows, and the number of selected rows if the export was limited to a selection.
  • ColumnHeaders and DataFields – The exported columns, and for classic grids the underlying data fields.
  • EntityType – The kind of record each row represents.
  • InteractionGuid – The Data Exports interaction that holds the full record.
  • ExportJson – Every detail above as JSON.

The saved Data Exports interaction is also set as the workflow's entity.

Every export launches a new workflow, and the workflow type is persisted. On a busy Rock this adds up, so consider setting a Completed Workflow Retention Period on the workflow type. The export records themselves are kept on the interaction, not on the workflow.

Daily Digest

The Export Watch Daily Digest job emails a summary of the previous day's exports, grouped by person, to a notification group. It covers the whole previous calendar day, so each export appears in exactly one digest.

The job is created inactive. To turn it on, go to Admin Tools > Settings > System > Jobs Administration, open Export Watch Daily Digest, check Active and save. It runs at 7:00 AM each day by default, and you can change the schedule there too.

The job has three settings:

  • Notification Group – The group whose active members receive the digest. Defaults to the Export Watch Notifications role.
  • Digest Communication – The system communication used for the email. Defaults to Export Watch Daily Digest.
  • Send When Empty – Send the digest even on days with no exports. Defaults to No, so quiet days don't send an email.

The digest email is the Export Watch Daily Digest system communication (Admin Tools > Settings > Communications > System Communications), and you can edit it like any other. It has these merge fields:

  • DigestDate – The day the digest covers.
  • ExportCount – The total number of exports that day.
  • ExportsByPerson – A list with one item per person. Each has a PersonName, an ExportCount and a list of Exports. Each export has DateTime, Summary, PageTitle, PageUrl, BlockName, GridTitle, GridSource, ExportMethod, RowCount, SelectedCount, EntityType, ColumnHeaders, DataFields, IsImpersonatedSession and ImpersonatedPersonName.

Exports made while impersonating someone, or through a personal link, are noted in the list. The email ends with a link to that day's exports on the Data Exports report.

Data Exports Report

The Data Exports page (Tools > Reporting > Data Exports) lists every recorded export, newest first. Use the filters at the top to narrow the list:

  • Date – A date range. Either end can be left blank. With no dates selected, the report shows every export.
  • Person – Show only one person's exports. An administrator's exports made while impersonating someone are listed under the administrator.

The grid shows the person, date, page, grid title, number of rows and the columns that were exported. The Session column shows who the person was impersonating, or "Personal link", and is blank for ordinary exports. Click a row to open that person's profile.

You can link straight to a filtered view of the report. The links in the notification and digest emails do this, for example:

  • /reporting/data-exports?Person=(person alias guid)
  • /reporting/data-exports?Date=2026-10-01,2026-10-31

HTTP Module Settings

The Export Watch Grid Capture HTTP module (Admin Tools > Settings > CMS > HTTP Modules) has these settings:

  • Active – Whether exports are recorded. Turned on during the install. Rock only loads HTTP modules when it starts, so if you change this setting, restart Rock for it to take effect.
  • Order – The order Rock runs its HTTP modules in. The default is fine.
  • Notification Workflow Type – The workflow launched for each recorded export. Defaults to Data Export Notification. To record exports without notifying anyone, make the selected workflow type inactive.

Troubleshooting

  • No exports are being recorded – Check that the Export Watch Grid Capture HTTP module is Active, then restart Rock. HTTP modules are only loaded when Rock starts.
  • Classic grid exports appear, but Obsidian grid exports don't – Obsidian exports are reported by a script in the browser. Check that the person was logged in, and look in the browser's developer tools for a blocked request to /api/v2/plugins/com.9embers/exportwatch/gridexport.
  • No emails are sent – Make sure the Export Watch Notifications role (or the group you chose) has active members with active email addresses, and that the Data Export Notification workflow type is active. For the digest, make sure the job is active.
  • Too many emails – Add a Run If condition to the workflow's Send Notification action, or switch to the daily digest (see Instant Notifications above).
  • Someone can't open the report from an email – The Data Exports page is open only to the Export Watch Notifications role and Rock Administrators. Add the person to the role, or update the page's security.

Support

If you need help installing Export Watch or would like customization, please reach out using our Contact Us form.