Safeguarding Concern Form Block

⭐ Premium

Reporting a safeguarding concern: setup and usage

This guide explains how to set up the safeguarding team, add the concern reporting form to a page, and customise it with filters. The form lets logged-in members report a concern. It is saved in the same way as incidents entered in the admin area, and the designated safeguarding lead (DSL) is notified.

Part 1: Set up the safeguarding team (do this first)

The form will not appear until a safeguarding ministry and a team contact exist. If either is missing, users see a message asking them to contact the church leadership directly, so nothing is lost, but nobody can submit a report.

Create a ministry for the team. In Church Admin, go to the Ministries section and add a new ministry, for example “Safeguarding Team”.

Add the team members. Add everyone on the safeguarding team to that ministry. They must be in the church directory.

Set the team contact. Edit the ministry and choose the Designated Safeguarding Lead as the team contact. This person receives the email for every report, so they need a valid email address in their directory record.

Link the ministry as the safeguarding ministry. Open the Child Protection area of Church Admin, which is in the “Children’s Ministry” module and select the ministry you created. (If you open the admin incident form before this is done, it shows a link straight to the right screen.)

Optional: urgent push notifications. The “urgent” tick-box on the form sends a push notification to the DSL. This only works if the DSL has logged into the Church Admin mobile app, so that their device is registered.

Note: menu names can differ slightly between plugin versions. If you cannot find a screen, open the admin Child Protection incident form. It links to the missing setup step.

Part 2: Make sure reporters are in the directory

To submit a report, a person must be logged in and have an entry in the church directory linked to their website login. This means the safeguarding team always has the reporter’s contact details. A person whose login is not linked to a directory entry sees an explanation instead of the form. To fix that, link their website user to their directory record in their Church Admin profile.

Part 3: Add the form to a page

Option A: the block

  1. Create or edit a page, for example “Report a concern”.
  2. Click the + block inserter and search for Report a Safeguarding Concern (it is in the Widgets category).
  3. Insert the block and publish the page. The editor shows a placeholder. The form itself appears to visitors on the live page.

Option B: the shortcode

Add a Shortcode block to the page and enter:

[church_admin type="safeguarding-concern"]

What visitors see

  • Not logged in: a login form, with a lost-password link. After logging in they return to the same page.
  • Logged in but not in the directory: a message asking them to contact the church office or safeguarding lead.
  • Logged in and in the directory: an emergency notice and the report form (title, description, people involved, date and time, location, action already taken, urgent tick-box).
  • After submitting: a confirmation message. The incident appears in the admin Child Protection incident list and the DSL receives an email, with a push notification if “urgent” was ticked.

Tip: add a short paragraph above the form explaining who sees reports, and link to your safeguarding policy. If you use a caching plugin, exclude this page from caching.

Part 4: Customise with filters

Filters let you change the form’s behaviour without editing the plugin. Add the code below to your child theme’s functions.php or to a snippets plugin such as Code Snippets. Avoid editing the main plugin files, because updates will overwrite your changes.

Filter 1: restrict who can report

church_admin_report_concern_allowed receives true or false (by default, true for any logged-in user) and the current user. Return false to refuse access. This example allows only certain roles:

add_filter( 'church_admin_report_concern_allowed', function ( $allowed, $user ) {
	if ( ! $allowed ) {
		return false;
	}
	$permitted_roles = array( 'administrator', 'editor', 'subscriber' ); // change to your roles
	return (bool) array_intersect( $permitted_roles, (array) $user->roles );
}, 10, 2 );

Users who are blocked see “Sorry, you do not have permission to use this form.” The same check is applied when the form is submitted.

Filter 2: change the emergency notice

church_admin_report_concern_emergency_text controls the red notice above the form. Return your own text, or an empty string to hide it.

add_filter( 'church_admin_report_concern_emergency_text', function ( $text ) {
	return 'If a child or vulnerable adult is in immediate danger, call 999 now. Do not wait to complete this form.';
} );

// To hide the notice completely:
// add_filter( 'church_admin_report_concern_emergency_text', '__return_empty_string' );

Action: do something after a report is saved

church_admin_concern_reported_frontend fires after the incident is saved. It receives the new incident ID and the reporting user. It is a good place to add extra notifications or an audit entry.

add_action( 'church_admin_concern_reported_frontend', function ( $incident_id, $user ) {
	// Example: keep a minimal audit trail. Do not log the report contents.
	error_log( 'Safeguarding concern #' . (int) $incident_id . ' submitted via website by user ' . (int) $user->ID );
}, 10, 2 );

Safeguarding data: reports contain sensitive information. Keep any extra notifications or logs free of the description text and names of the children involved.

Part 5: Test it

  1. Visit the page while logged out, and check the login form appears and returns you to the page.
  2. Log in as a directory member, submit a test report titled “TEST – please ignore”, and ensure the confirmation appears.
  3. Check that the incident appears in the admin incident list and that the DSL received the email.
  4. Test the “urgent” option and check the DSL’s phone gets the push notification.
  5. Close or delete the test incident, and tell the DSL it was a test.

Troubleshooting

  • “This form is not available at the moment”: the safeguarding ministry is not linked or has no team contact (Part 1).
  • “Your login is not linked to an entry in the church directory”: link the user’s login to their directory record (Part 2).
  • Report saved but no email arrived: check the DSL’s email address, your bulk email method settings and spam folder. The email is sent immediately and does not wait in the queue.
  • No push notification: the DSL needs to have logged into the Church Admin app on their device.