Skip to main content

Volunteers

How to configure the Flourish Liminal managed package to run volunteer signups.

Overview

The volunteer module gives your supporters a five-step web flow:

  1. Pick an event — choose from your active Campaigns.
  2. Pick a role — what kind of help you need (e.g. Greeter, Setup Crew, Driver).
  3. Pick a time slot — a specific shift on that event.
  4. Fill in their details — name, email, phone, and organization.
  5. Get a confirmation page — and, if configured, a confirmation email.

Behind the scenes, Salesforce creates a Contact (or matches an existing one by email), an Opportunity with volunteer details, a Selection record linking everything together, and a Campaign Member connecting the volunteer to the event.

For day-of operations, a separate Volunteer Check-In page lets staff manage arrivals with a simple table view.

Admins also have access to two additional tools:

  • Engagement Builder — create and configure events, roles, and shifts in a guided interface.
  • Engagement Dashboard — view rosters, check in/out volunteers, export data, and monitor capacity.

For paid tickets, donations, products, or bookable time slots, see Events & Shops. The two modules are independent — you can use either, both, or neither.


Before You Start

Make sure you have:

  • The Flourish Liminal managed package installed in your org.
  • Permission to create Campaigns, edit Lightning pages, and manage Flows.
  • An idea of which events and roles you want to publish.
  • A way for volunteers to reach the page — typically a Salesforce Experience Cloud site, but any Lightning page works.

NPSP is not required for volunteer signup.


Step 1 — Create the Event (Campaign)

A volunteer "event" is a standard Salesforce Campaign.

  1. Go to the Campaigns tab and click New.
  2. Fill in:
    • Campaign Name — the public title volunteers will see (e.g. Spring Park Cleanup).
    • Active — check this box. Inactive Campaigns won't appear on the volunteer page.
    • Description — a short summary. Plain text shows best; rich formatting will be stripped on the event card.
    • Start Date / End Date — the date window of the event. Volunteer slots must fall inside this window.
  3. In the Liminal section of the page layout:
    • Engagement Type — set to Volunteer.
    • Event Image URL — a public URL to a hero image (recommended size: 1200×600 or larger).
    • Address Street / City / State / Postal Code — shown on the event card for context. None are required.
    • Timezone Name and Timezone Offset — auto-populated when you save. Defaults to America/Chicago (US Central). The offset is DST-aware based on Start Date. Change the timezone name if your event is in a different timezone; the offset will recompute automatically.
  4. Save the Campaign.

Tip: You can also create Campaigns through the Engagement Builder, which provides a guided interface for setting up the engagement, roles, and shifts all in one place.


Step 2 — Create One or More Roles (Liminal Offerings)

A "role" is what kind of help you need. Each role is a Liminal Offering record linked to your Campaign.

  1. From the Liminal Offerings tab, click New (or use the Engagement Builder).
  2. Fill in:
    • Name — short internal name (e.g. Greeter).
    • Label — public name shown to volunteers. Leave blank to use the Name.
    • Description — what the role involves.
    • Image (Landing) — a public URL for a per-role photo. Optional.
    • Engagement — look up the Campaign you created in Step 1.
  3. Save.

You don't need to set price, stock, or any of the e-commerce fields — just leave them blank.


Step 3 — Create the Time Slots (Liminal Availabilities)

Each shift is a Liminal Availability record under a role.

  1. From the role's record page, scroll to Liminal Availabilities and click New (or use the Engagement Builder's Shifts tab).
  2. In the record-type picker, choose Slot.
  3. Fill in:
    • Offering — should default to the role you started from.
    • Engagement — the Campaign.
    • Start Datetime / End Datetime — when the shift begins and ends. Both must fall inside the Campaign's date window (a validation rule enforces this).
    • Max Bookings — how many volunteers can claim this shift. Defaults to 1 if left blank.
    • Slot Open/Close — must be set to Open. If creating manually, you must set this yourself or the shift won't be counted in capacity rollups.
  4. Save.

Tip: The Engagement Builder's Shifts tab provides a calendar view where you click a date, click "Add Shift," fill in the start/end times and max bookings, and save. It handles the record type, Slot Open/Close, and timezone conversion automatically.


Step 4 — Publish the Signup Page

The volunteer wizard is a single component called Volunteer Signup.

  1. Open Lightning App Builder — create or edit a page.
  2. From the Custom – Managed components, drag Volunteer Signup onto the canvas.
  3. Save and Activate. For a public-facing site, build the page inside an Experience Cloud site.

Note: Place the Volunteer Signup component on the page, not Volunteer Event List. The signup component is the full wizard that wraps all five steps.

Making It Public

If you're using an Experience Cloud site for public-facing signups:

  1. Set the page to allow guest access.
  2. On the Guest User Profile, grant:
    • Read on Campaign, Liminal Offering, and Liminal Availability.
    • Create on Contact, Opportunity, Liminal Selection, and CampaignMember.
  3. Create sharing rules so the guest user can see your active Campaigns and their child records.

Step 5 — Set Up the Check-In Page (Optional)

The Volunteer Check-In component provides a day-of management interface for staff.

  1. Create a new page in Lightning App Builder (or an Experience Cloud page for on-site tablets).
  2. Drag Liminal: Volunteer Check-In onto the canvas.
  3. Save and Activate.

The check-in page provides:

  • Date picker — defaults to today.
  • Event dropdown — auto-populated based on the selected date.
  • Include Unconfirmed toggle — shows volunteers with Claimed status in addition to Ordered.
  • Stats bar — "X of Y checked in" with a progress bar.
  • Search — filter by name, email, organization, or role.
  • Volunteer table — alphabetical list with Check In, Check Out, and Undo buttons.
  • Filter persistence — the date, event, and toggle state are saved in the browser so refreshing keeps your selection.

For Experience Cloud sites, grant the guest user the same object permissions as the signup page, plus Edit on Liminal Selection (so check-in and check-out can be recorded).


Step 6 — Configure the Confirmation Email (Optional)

The package ships a starter Flow template named Volunteer Confirmation Email Autolaunched Flow. To enable email confirmations:

  1. Clone the template: Go to Setup → Flows, find the template, and use Save As → A New Flow.
  2. Set the email template: In your cloned flow, replace the Email Template ID with the ID of an email template you've created (Setup → Email Templates).
  3. Save and activate the cloned flow.
  4. Create a trigger: Set up a Record-Triggered Flow on Liminal Selection that runs after insert with the entry condition Volunteer Email is not blank, and calls your autolaunched flow.
  5. Activate the record-triggered flow.

Send yourself through the signup as a test to confirm delivery.


Step 7 — Use the Engagement Dashboard

The Engagement Dashboard is an admin tool for monitoring and managing volunteer events.

  1. Add the Liminal: Engagement Dashboard component to a Lightning App Page.
  2. The left panel shows an Overview plus sections for Events, Shops, and Volunteers.

For Volunteer engagements, the dashboard shows:

  • Metrics strip — Total Slots, Signed Up, Checked In, Checked Out, No-Show.
  • Charts — fill rate donut and volunteers-by-role bar chart.
  • Search bar — filter by name or email in real time.
  • Roster tree — Date → Role → Shift → Volunteer, all collapsible. Shows volunteer name (linked to the Contact record), email, status pill, and Check In / Check Out / Undo buttons.
  • CSV export — downloads the full roster as a CSV file.

What Gets Created After a Signup

For each volunteer signup, four records are created:

RecordWhat it holdsWhere to find it
ContactVolunteer's first name, last name, and email. Matched by email; existing Contacts are reused.Contacts tab
OpportunityNamed Volunteer – Event – Role – email. Stage set to Prospecting. Carries volunteer details (first name, last name, email, phone, organization). Linked to the Campaign.Opportunities tab (filter by Lim Order ID starts with LIM-)
Liminal SelectionThe booking record. Status set to Ordered, linked to the Offering, Availability, and Opportunity. Start/End Datetime copied from the shift.Liminal Selections tab
Campaign MemberLinks the Contact to the Campaign with status Responded. Created once per Contact per Campaign (duplicates are silently skipped).Campaign Members related list on the Campaign

Capacity and "Spots Available"

Capacity is shown at three levels:

  • Event card — total spots available across all roles.
  • Role card — spots available for that role across all its shifts.
  • Shift button — remaining spots on that specific shift (Max Bookings minus existing Claimed and Ordered selections).

Important: The capacity total on a role only counts Max Bookings from Availabilities where Slot Open/Close is set to Open. If you create Availabilities manually without setting this field, they won't be counted and capacity will show as 0.


Common Questions

Can a volunteer sign up for two shifts? Yes. Capacity updates immediately after each booking.

Can a volunteer cancel? Not from the public page. An admin can delete the Liminal Selection record, and the spot will free up immediately.

What if the volunteer enters an email that already exists? The existing Contact is reused. No duplicate is created.

Why does the check-in page show no events? The date picker defaults to today. Make sure your Campaign's Start Date and End Date span today's date.

Why does my dashboard show 0 slots? Check that Slot Open/Close is set to Open on your Availability records. If you have many records to fix, a developer can run a quick backfill script — see the note below.

Backfill script for missing Slot Open/Close values (requires developer access)

Run the following in Anonymous Apex (Setup → Developer Console → Debug → Open Execute Anonymous Window):

List<Lim_Availability__c> avails = [
SELECT Id FROM Lim_Availability__c
WHERE Slot_Open_Close__c = null
AND RecordType.DeveloperName = 'Slot'
];
for (Lim_Availability__c a : avails) {
a.Slot_Open_Close__c = 'Open';
}
update avails;

Why is the volunteer name blank in the dashboard? The dashboard reads volunteer details from the Opportunity's order fields (First Name, Last Name, Email, etc.). If a name is blank, the Opportunity is missing those field values — usually older data created before the package populated them.


Quick Setup Checklist

  • Campaign created, marked Active, Engagement Type set to Volunteer, with Start Date and End Date.
  • Event Image URL populated.
  • At least one Liminal Offering linked to the Campaign.
  • Liminal Availability records created: record type = Slot, Slot Open/Close = Open, Start/End Datetime within the Campaign window, Max Bookings set.
  • Volunteer Signup component placed on a Lightning or Experience page.
  • Volunteer Check-In component placed on a staff-facing page (optional).
  • Engagement Dashboard placed on an admin page (optional).
  • Guest user profile granted read/create on relevant objects plus CampaignMember create.
  • Sharing rules in place for guest access.
  • Confirmation email flow cloned and configured (optional).
  • End-to-end test completed in an incognito browser.