1 of 33

2 of 33

WHERE ARE WE HEADED?

Customized Mission Team Pages

ROCK, PAPER, PASSPORT

2

BEFORE

AFTER

Full Code Reference

https://my.coloradocommunity.org/rx26

3 of 33

WHAT WE'LL COVER

Agenda

ROCK, PAPER, PASSPORT

3

01

The Problem We Were Solving

Transparency, individual vs. family giving, and easy ways to give

02

Native Rock Building Blocks

The Fundraising Opportunity group type does more than you'd think

03

The Landing & Participant Pages

Custom Lava, SQL, and the page-parameter trick that avoids hardcoding

04

Leader Tools

Rosters, requirements, and spiritual gifts for team leaders

05

Gotchas & Takeaways

Permissions, IDs to swap, and lessons learned the hard way

4 of 33

WHY WE BUILT THIS

The Problem We Were Solving

ROCK, PAPER, PASSPORT

4

  • Transparency for the congregation — members wanted to see how each mission trip, and each traveler, was doing toward their fundraising goal.
  • Two kinds of trips: Individual, where fundraising is tied to one traveler, and Family, where every family member's giving rolls up into one shared total.
  • Team leadership visibility — leaders needed to track participant progress and see who still had outstanding requirements.
  • An easy giving choice — a custom landing page per trip so a congregant could support the whole team or one specific person.

GOAL

One page per trip that’s honest about progress — and easy for anyone to support.

Built entirely on Rock RMS — no separate fundraising platform.

5 of 33

BEFORE WE DIVE IN

A Note on Today's Demo

ROCK, PAPER, PASSPORT

5

  • Colorado Community Church's public website runs on a different platform — Rock is our back-end database and giving engine, not our public site.
  • That meant our live mission pages were hardcoded per group — one page built per trip.
  • For this session, every screenshot comes from a sample Rock instance built entirely with Rock's native, out-of-the-box capabilities — so you can see the full pattern, including a simpler way to build it.
  • The upgrade: page parameters.
  • Instead of one hardcoded page per trip, Rock can read the Group Id from the URL and set the group dynamically — one page, several trips, just different links.

6 of 33

HOW IT ALL CONNECTS

The Full Picture

ROCK, PAPER, PASSPORT

6

CONGREGANT PATH

Missions List

(native)

→

Mission Team Page

(custom landing)

→

Participant Page

(native + custom)

MISSION TRIP LEADER PATH

My Account

(custom entry)

→

Fundraising

Opportunity View

(native)

→

Leader Toolbox

(native + custom)

→

Requirements &

Spiritual Gifts

(custom)

Native Rock — unmodified Custom Lava / SQL we added

7 of 33

BUILDING BLOCK #1

The Foundation: Fundraising Opportunity

ROCK, PAPER, PASSPORT

7

  • Rock ships a native “Fundraising Opportunity” group type, purpose-built for trips, internships, and projects.
  • The Individual vs. Family rollup is a native setting on the Fundraising group.
  • We added one more role to it: “Team Donation Profile” — a role that represents the whole team, so congregants can give to everyone at once.

Roles on the Fundraising Opportunity group type, including our added “Team Donation Profile.”

8 of 33

BUILDING BLOCK #2

Native Baseline: The Missions Page

ROCK, PAPER, PASSPORT

8

  • This is Rock's stock “Fundraising Opportunity List” block — zero customization.
  • It lists all Fundraising type opportunities.
  • Everything from here is about what happens after someone clicks “View Details.”

9 of 33

A KEY DECISION

Different Ways to Build Your Pages

ROCK, PAPER, PASSPORT

9

HARDCODED (our live site)

  • One Rock page built per mission trip
  • Group Id is a literal number baked into the Lava
  • New trip = new page, every time or reuse previous trip pages by changing out the hardcoded Group Id

{% assign groupId = XXX %}

PAGE PARAMETER (recommended)

  • One Rock page shared by every trip
  • Group Id comes from the URL
  • New trip = a new link, same page

{% assign groupId = 'Global' | PageParameter:'GroupId' %}

The beauty of Rock is that you can arrange your pages as you want. For example, if you want to use the native “Trip Details” page you can do that and just add the additional HTML blocks to that page. Our instance is different because we currently do not have a Rock based website.

10 of 33

BUILDING A NEW MISSION TEAM PAGE

New “Mission Team Page” Set Up

ROCK, PAPER, PASSPORT

10

  • Add a new child page to your external site under the Missions page.
  • We placed ours: External Homepage > Connect > Missions > New we named “Mission Team Page”
  • Set the Layout to “Full Width”, no other changes needed to the settings
  • Add two HTML blocks to that page in the Main Zone. We named the top HTML block “Fundraising Progress” and the bottom block “Group Members.”

11 of 33

BUILDING BLOCK #3

Connecting Native to Custom

ROCK, PAPER, PASSPORT

11

  • The native Fundraising List block has a “Detail Page” setting — where it sends people when they click “View Details.”
  • Point that setting at a newly added “Mission Team Page” instead of Rock's stock view.
  • Rock automatically appends the Group Id as a page parameter — which is exactly what your custom page is listening for.
  • How: From the main “Missions” page edit the “Fundraising List” block and choose your newly created “Mission Team Page” in the “Detail Page” dropdown list.

12 of 33

THE LANDING PAGE

The Mission Team Page: Two Blocks

ROCK, PAPER, PASSPORT

12

  • Block 1 — Fundraising Progress
  • The header panel: total raised, total goal, and a progress bar for the whole group.
  • Block 2 — Group Members
  • The card grid: one card per traveler, plus a “Mission Team Profile” card for all-team gifts.
  • Both are custom HTML Content blocks — both read the same Group Id page parameter.

13 of 33

GOTCHA #1

Turn On the Lava Commands You Need

ROCK, PAPER, PASSPORT

13

  • Lava can't query the database or read entities by default — it's locked down for security.
  • Every custom block in this build needs “Sql” checked under Enabled Lava Commands.
  • The Group Requirements page also needs “Rock Entity” checked, since it looks for group.Members directly.
  • Forget this step and your block renders blank — with no error to point you at why.

14 of 33

INSIDE THE BLOCKS

The Group Totals Block

ROCK, PAPER, PASSPORT

14

  • Reads the group from the Group Id page parameter, then reads a custom “FinancialAccount” attribute on the Group to know which fund to total.
  • One {% sql %} block sums every transaction tied to the group's members against that fund.
  • A second {% sql %} block sums each member's fundraising goal — falling back to a group-level default when no individual goal is set.
  • Lava math turns those two numbers into a percentage and an amount remaining for the progress bar.

15 of 33

INSIDE THE BLOCKS

The Group Member List Block

ROCK, PAPER, PASSPORT

15

  • Same page-parameter pattern — no group hardcoded.
  • Reads the group's ParticipationType attribute (Individual / Family) and forks the display logic on it.
  • Pulls the “Team Donation Profile” members first (by Group Role Id) so the all-team card always sorts to the top, then the rest of the roster alphabetically.
  • For Family-type groups, checks each member's PrimaryFamilyId against their teammates — if more than one match, it shows a combined family bar instead of an individual one.

16 of 33

GOTCHA #2

Creating, Finding & Using Your Group Role Id

ROCK, PAPER, PASSPORT

16

1

Create the role

Settings › General › Group Types › Fundraising Opportunity › Roles — add “Team Donation Profile.”

2

Find the Group Type Id

From the Fundraising Group Type click the ⋮ dropdown menu › Audit Details on the group type page. Ships with Rock, so it's most likely 31 — verify, don't assume.

3

Query the Role Id

Admin Tools › SQL Editor — run a query against GroupTypeRole filtered to that Group Type Id.

If you want to use an “All Team Donation” profile for each team, you will need to create a specific Group Role on the Fundraising Opportunity Group Type. You will need that Role Id in the query so that the “All Team” profile is populated at the top of the group member list.

17 of 33

SEEING IT WORK

Individual vs. Family, Side by Side

ROCK, PAPER, PASSPORT

17

INDIVIDUAL TYPE

FAMILY TYPE

Notice “Freeman Family: $650.00 raised” — Gerry and Zippy Freeman's giving is combined into one family bar instead of two individual ones.

18 of 33

ONE LAYER DEEPER

Our Changes to The Participant Page

ROCK, PAPER, PASSPORT

18

  • Keeps Rock's native “Fundraising Opportunity Participant” block for Profile, Updates, and Requirements.
  • But we replace its Progress Lava Template with a custom HTML block.
  • Why: the native template can't do the family-rollup math — our replacement reads GroupId / GroupMemberId straight from the page parameters and rebuilds everything the block used to hand it for free.
  • We adjusted some of the verbiage on the page in regards to the funding amount still needed for clarity.

19 of 33

DETAILS

How to Change The Participant Page

ROCK, PAPER, PASSPORT

19

  • Edit the Fundraising Opportunity Participant block
  • Comment out the standard lava under the Progress Lava Template
  • Make sure the Main Page lists the custom “Mission Team Page” we created earlier. This redirects people back to the group page from the “Trip Details” button.
  • Add an HTML block to the Main Zone under the Fundraising Opportunity Participant block. We named ours Individual Fundraising Progress

20 of 33

HANDLING THE EDGE CASE

Family Type, Solo Traveler

ROCK, PAPER, PASSPORT

20

  • David King is on a Family-type trip — but no one else in his family is on the team.
  • The Lava checks familyMemberCount > 1 before showing a family bar.
  • Since the count is 1, it falls back to a clean individual-progress view — no empty “family” section, no confusing $0 bar.
  • A small check that saves a lot of “why does this look broken” support requests.

21 of 33

GOTCHA #3

If Your Page Shows Nothing, Check This List

ROCK, PAPER, PASSPORT

21

✓

Edit Group → Show Public

The attribute value must be set to “Yes.”

✓

Group → Security → View

“All Users” role must be Allow in order for the group members to show up on the public pages. (We get consent for this as part of our application process.)

✓

Financial Account

The fund tied to the trip must be marked Public.

✓

ParticipationType attribute

Its view security (on the Group Type) must allow “All Users,” or the family block silently won't render.

22 of 33

THE LEADER PATH

Leader Entry Point via Addition to the My Account page

ROCK, PAPER, PASSPORT

22

  • A “Group List Personalized Lava” block (native block type) added to the public My Account page, filtered to Fundraising Opportunity groups only.
  • Personalized — it only shows the trips this person belongs to.
  • Its customized Lava template adds a leader asterisk icon, and badges the leader's entry with a pending-member count so nothing gets missed.

23 of 33

THE LEADER PATH

Customizing the Leader Entry Point

ROCK, PAPER, PASSPORT

23

  • Add a Group List Personalized Lava block to the Sidebar1 Zone on the page.
  • Set the Detail Page to Fundraising Opportunity View
  • Select ONLY the Fundraising Opportunity Group Type to be included.
  • Add the custom lava to the Lava Template section.
  • In the Group Type settings > Roles > Leader, toggle on the option to “View Group”; otherwise, the group won’t show on the list.

​

24 of 33

ZERO EXTRA WORK

From View Page to Leader Toolbox

ROCK, PAPER, PASSPORT

19

  • This is the native Fundraising Opportunity View page — completely unmodified.
  • Rock automatically shows a “Leader Toolbox” button to anyone whose group role has IsLeader checked.

25 of 33

THE LEADER PATH

Customizing the Leader Toolbox

ROCK, PAPER, PASSPORT

25

NATIVE ROSTER

OUR ADDITIONS

A “Group Requirements & Spiritual Gifts” button (via the block's Post-HTML setting) plus a Fundraising Progress detail block, reusing the same family-rollup Lava from the landing page.

26 of 33

THE LEADER PATH

Our Additions to the Leader Toolbox

ROCK, PAPER, PASSPORT

26

  • Create a child page for the Group Requirements & Spiritual Gifts button. Make note of the page number for the button code.
  • Add an HTML block for the button or add the code to the Post-HTML on the Advanced Settings of the Fundraising Leader Toolbox block.
  • Add a Fundraising Progress block at the bottom of the Main section to give a detailed breakout of the funds.

27 of 33

A DIFFERENT TECHNIQUE

Group Requirements & Spiritual Gifts

ROCK, PAPER, PASSPORT

27

  • No SQL here at all.
  • Loops group.Members directly and reads member.GroupMemberRequirements, group.GroupRequirements, and group.GroupType.GroupRequirements through Rock's Lava object model.
  • Green / red badges compare each requirement against the member's GroupMemberRequirements, scoped by role where needed.
  • You can customize this to bring in person attributes or group member attributes that you would like to display.
  • A reminder that Rock gives you two ways in: raw SQL for aggregate math, or Lava objects for entity relationships.

28 of 33

A DIFFERENT TECHNIQUE

Group Requirements & Spiritual Gifts Page Setup

ROCK, PAPER, PASSPORT

28

  • Navigate to your newly created “Group Requirements & Spiritual Gifts” page from the last step
  • Add an HTML block to the Main zone on the Page
  • Add the corresponding code to the block
  • Customize the code to bring in person attributes or group member attributes that you would like to display

29 of 33

BEFORE YOU COPY THIS

Values You Must Swap for Your Instance

ROCK, PAPER, PASSPORT

29

ITEM

SAMPLE VALUE

WHY IT MATTERS

Group Role Id

65

“Team Donation Profile” role — pins the all-team card and drives the donation split.

Group Type Id

31

Fundraising Opportunity group type — used to look up the role Id and group-type default attributes.

Participant Page Id

473

Where each “View Participant Page” button links.

Donation Page Id

474

Where each “Contribute” button links.

Requirements Page Id

862

Where the Leader Toolbox's extra button links.

GroupMember EntityTypeId

90

Used throughout the SQL to filter FinancialTransactionDetail rows.

30 of 33

LOOKING BACK

Lessons Learned

ROCK, PAPER, PASSPORT

30

  • Reuse pays off.
  • The same family-rollup progress-bar pattern shows up three times — the landing page, the participant page, and the leader toolbox — each time adapted, never rebuilt from scratch.
  • The per-member SQL-in-a-loop pattern works, but has a cost.
  • The family total on the participant page runs a query per family member instead of one batched query — fine at trip-team scale, worth watching if your groups get large.
  • Permissions bite first-time testers hardest. Security Settings and “Public” settings on the group/group type must be set.
  • Every one of the four permissions gotchas will surface as “the page shows nothing” — not an error message — which makes them easy to lose an afternoon to.

31 of 33

PARTICIPANT PROGRESS PAGE CHANGES

BRINGING IT TOGETHER

The Full Build Checklist

ROCK, PAPER, PASSPORT

NEW LANDING PAGE – GROUP PROGRESS & MEMBER LIST

  • Set up the Fundraising Opportunity group + Individual/Family type
  • Add a “Team Donation Profile” role; look up its Group Role Id (CODE 1)
  • Add new page for “Mission Team Pages”
  • Point the native Fundraising List block at your custom landing page
  • Build the Group Totals block (page parameter + 2 SQL queries) (CODE 2)
  • Build the Group Member List block (role pinning + family fork) (CODE 3)
  • Override (comment out) the Participant Page's Progress lava template
  • Add HTML block to page and add custom code to generate new Fundraising Progress (CODE 4)

LEADER TOOLBOX ADDITIONS & CHANGES

  • Add the “Mission Team Groups” block to My Account page (CODE 5 for custom Lava Template) and point it to the Fundraising Opportunity View page.
  • Add new page for the Requirements & Spiritual Gifts grid with HTML block (CODE 7)
  • Add the Requirements & Spiritual Gifts button (CODE 6) and Fundraising Progress block

31

GENERAL ITEMS TO CONSIDER

  • Swap every sample Id (Role, Page, Group Type, EntityType) for your instance's own (notated in the code samples)
  • Check security settings if page items are missing
  • Get group member consent to publish their images
  • Verify HTML block settings Lava Commands – may need to enable Sql and/or Rock Entity

32 of 33

33 of 33

APPENDIX

Full Code Reference

Every Lava and SQL snippet, in full, for you to access and adapt.

https://my.coloradocommunity.org/rx26