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 name and email.
  5. Get a confirmation page — and, if you have set it up, a confirmation email.

Behind the scenes, Salesforce creates a Contact (or matches an existing one by email), an Opportunity, and a Selection record linking everything together.

This guide covers the volunteer flow only. For paid tickets, donations, products, or bookable time slots, see Events & Shops. The two 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. (It is used by the e-commerce side of Liminal.)


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 will not appear in 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 (custom fields added by the package), fill in:
    • Event Image URL — a public URL to a hero image (recommended size: 1200×600 or larger). Hosting tips: SharePoint, Files in a public Experience site, or any CDN.
    • Address Street / City / State / Postal Code — shown on the event card for context. None are required.
  4. Save the Campaign.

Tip: Make a Campaign template — clone it for each new event. Campaign Member Statuses, ownership, and parent campaigns all carry over.


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.
  2. Fill in:
    • Name — short internal name (e.g. Greeter).
    • Label — public name shown to volunteers. Leave blank to mirror Name.
    • Description — what the role involves. Rich text supported in the form, but bullets/headings will be stripped on the public card (use short paragraphs).
    • Image (Landing) — a public URL for a per-role photo. Optional; if absent, the event image is used as the role card photo.
    • Engagement — look up your Campaign from Step 1.
  3. Save.

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

Repeat for each role on the event.


Step 3 — Create the time slots (Liminal Availabilities)

Each shift is a Liminal Availability record under a role. This is what volunteers actually pick on screen.

  1. From the role's record page, scroll to Liminal Availabilities and click New.
  2. In the record-type picker, choose Slot. The other types (Stock, Hybrid) are for the e-commerce side and will not appear in the volunteer page.
  3. Fill in:
    • Offering — should default to the role you started from.
    • Engagement — the Campaign.
    • Start Datetime — when the shift begins.
    • End Datetime — when the shift ends. Must be the same day or later than Start, and both must fall inside the Campaign's Start Date / End Date. A validation rule will reject anything outside the event window.
    • Max Bookings — how many volunteers can claim this exact shift. Defaults to 1 if left blank.
  4. Save.

Repeat for every shift. If you need ten Saturday 9–noon slots and ten Saturday 1–4 slots, create two Availabilities with Max Bookings = 10 (not twenty separate records).

Note: The package supports two slot styles: dated (whole-day) and datetimed (with hours). The volunteer flow uses Datetime slots only. Date-only slots will be ignored.


Step 4 — Publish the signup page

The volunteer wizard is a single Lightning Web Component called Volunteer Signup (limVolunteerSignup).

  1. Open Lightning App Builder (Setup > Lightning App Builder, or use Edit Page on any Lightning page).
  2. Create a new page, or edit an existing App Page, Home Page, or Record Page.
  3. From the Custom – Managed components in the left sidebar, drag Volunteer Signup onto the canvas.
  4. Save and Activate the page. For a public-facing site, build the page inside an Experience Cloud site rather than internal Salesforce.
  5. Optionally pair it with Page Hero and Back Link (also in the Custom – Managed list) to give the page a banner and a navigation link.

That single component contains all five wizard steps — you don't need to add five components.

Making it public

The signup component supports guest users on Experience Cloud sites:

  1. Make sure your Experience Cloud site is published.
  2. In Setup > Digital Experiences > All Sites > (your site) > Administration > Pages, set the page hosting the component to allow guest access.
  3. On the Guest User Profile for the site, grant:
    • Read on Campaign, Liminal Offering, Liminal Availability.
    • Create on Contact, Opportunity, Liminal Selection.
  4. Create sharing rules so the guest user can see your active Campaigns and their child Offerings/Availabilities. (How you do this depends on your org-wide defaults.)

Test the page in a private/incognito browser window before announcing it — that is the easiest way to confirm guest access works.


The package ships with a starter Flow called Volunteer Confirmation Email Autolaunched Flow. It is a template — you need to clone and wire it up before any email will send.

Option A — Quick wire-up

  1. Go to Setup > Flows.
  2. Find Volunteer Confirmation Email Autolaunched Flow, click the down-arrow, and choose Save As > A New Flow to make an editable copy.
  3. Open your copy. In the email action, replace the Email Template ID with the Id of an email template you have created in your org (Setup > Email Templates).
  4. Save and activate the cloned flow.
  5. Create 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, passing:
    • contactId — from the related Opportunity's Primary Contact, or from a Contact lookup by Volunteer Email.
    • selectionId — the triggering record's Id.
    • volunteerEmail — from Volunteer Email on the triggering record.
  6. Activate the record-triggered flow.

Send yourself through the signup as a test — you should get the email.

Option B — Use your own automation

The Selection record stores everything the email needs:

  • Volunteer Name, Volunteer Email
  • Start Datetime, End Datetime
  • A relationship to the Opportunity (which has the event and role in its name)

You can build any record-triggered Flow, Email Alert, or Process you like — the package does not require the shipped template.


Step 6 — What admins see after a signup

For each volunteer signup, three records are created:

RecordWhat it holdsWhere to find it
ContactVolunteer's first name, last name, email. Matched by email; existing Contacts are reused.Contacts tab.
OpportunityNamed like Volunteer – Spring Park Cleanup – Greeter – jane@example.com, stage Prospecting, Close Date = the shift's start date. Includes the volunteer's full info in the Description.Opportunities tab. Filter by Lim Order ID starts with LIM-.
Liminal SelectionThe booking. Status Ordered, linked to the Offering, Availability, Opportunity. Carries the volunteer's name and email as a denormalized copy.Liminal Selections tab, or the related list on Offering / Availability / Opportunity.

To see who has signed up for a shift, open the Liminal Availability record and look at the Liminal Selections related list.

To see all volunteers for an event, list Liminal Selections WHERE Offering.Engagement = <Campaign>.


Capacity and "spots available"

The volunteer page shows three levels of capacity:

  • Event card — sums spots available across all roles on the Campaign.
  • Role card — spots available on this role across all shifts.
  • Shift buttonMax Bookings − (Claimed + Ordered selections) on that exact shift.

A shift turns grey and reads Fully Booked when its count reaches Max Bookings. The role turns grey when every shift is full. The event turns grey when every role is full.

Past shifts are automatically marked Past date and disabled.


Common questions

Can a volunteer sign up for two shifts? Yes — the page returns to the event list after each signup. Capacity reflects new bookings immediately.

Can a volunteer cancel? Not from the public page. Admins can delete the Liminal Selection (or change its status to something other than Claimed/Ordered); the spot will free up immediately.

What if the volunteer enters an email that already exists in Salesforce? The package finds the existing Contact (exact email match) and links the new Opportunity and Selection to it. No duplicate Contact is created.

Can I customize the colors and copy? The component uses your org's Lightning Design System theme. Copy on the cards (titles, descriptions) all comes from your Campaign and Offering records. Layout colors (the green/orange/grey progress bars) are baked into the component.

Can I run two volunteer events in different time zones? Yes, but the slot picker currently formats times in the volunteer's browser timezone. If you're publishing to volunteers all in one region, this works correctly. If you're publishing to a multi-timezone audience, include the timezone in the role description until a future release adds per-offering timezone display.

Can I require the event to be active to count? Yes — unchecking Active on the Campaign removes it from the volunteer page immediately.

The volunteer didn't get the confirmation email. Three things to check, in order:

  1. Did you actually set up the record-triggered flow that calls the autolaunched flow? (The shipped flow is a template — it doesn't run on its own.)
  2. Is the email template Id in your cloned flow valid in your org?
  3. Are you running into deliverability limits? Setup > Email > Deliverability > Access Level must be set to All email (it is No email in fresh sandboxes).

A volunteer slot disappeared after I saved it. The most common reason is the slot's Start/End Datetime falling outside the Campaign's Start Date / End Date — there is a validation rule that prevents save. Less commonly, the record type was set to Stock or Hybrid instead of Slot.


Quick setup checklist

  • Campaign created, marked Active, with Start Date and End Date filled in.
  • Event Image URL populated (otherwise the card has no hero photo).
  • At least one Liminal Offering linked to the Campaign via Engagement.
  • Liminal Availability records added under each Offering, record type = Slot, with Start/End Datetime inside the Campaign window and Max Bookings set.
  • Lightning page created and Volunteer Signup component dropped on it.
  • Page activated (and made public via Experience Cloud if needed).
  • Guest user profile granted read/create on the relevant objects, with sharing rules in place.
  • Confirmation email flow cloned, given a valid email template Id, and triggered from a record-triggered Flow on Liminal Selection insert.
  • Tested end-to-end in an incognito browser.