We’ve just released a major upgrade to the custom report editor in Planning Center Services! Whether you’re creating Plan, Matrix, or People reports, you now have more power, more clarity, and more consistency to craft exactly the reports you need. Here’s what’s new:
Smarter code editor with sidebar improvements
Improved Naming: You can now consistently use up-to-date terms that match what you see in the Services UI.
- Teams (formerly People Categories)
- Service Types (formerly Ministries)
- Tags & Tag Groups (formerly Custom Properties & Fields)
Reorganized Sidebar: The left-hand sidebar has been cleaned up and reorganized for better clarity. Variables have been split into the following two sections:
- The “Variables Quick Reference” section uses all the new up-to-date terminology, like Teams, Service Types, and Tags.
- A new “Variables (Legacy)” section that lists the older variable names that you probably won't go looking for, but that will all continue to work as they always have.
Helpful Tooltips: The helper text you get when hovering over a variable has been updated in many cases to make it clearer what kind of field it is, and what to expect of its values.
More data and logic in people reports
Previously, People Reports only allowed you to loop through people directly. Now, you have more flexibility with the ability to loop through:
- teams
- my_teams
- teams_i_lead
Within each team, you can also loop through:
- leaders
- members
- positions
Additional Enhancements:
- Check if a person is a leader with person.leader?
- Loop through people in each position
- Use position.people, position.name, and more for greater detail
Plan reports: Better structure & support for needed positions
Instead of piecing together plan participants manually, you can now loop through them exactly how the UI displays them:
- Use plan.teams_with_times to loop through each team, split by time if needed
- Then loop through positions, and then through each person in that position
New features in positions:
- position.needed – Number of additional people needed for this position (✅ Highly requested!)
- position.quantity – Number of people currently scheduled
- position.temporary? – Is this a manually typed-in position not tied to a team?
- position.none? – True if someone is scheduled without a specified position (position.name returns "No Position" in this case)
IDs & Advanced filters now supported
More variables now show their id values, clearly listed in the sidebar. Plus, new Liquid filters are available thanks to an upgrade from Liquid 5.4 to 5.8.4. You can now use:
- find, find_index, has, reject
- where_exp – a powerful way to filter arrays using Jekyll-style syntax.
-
{% assign plan_teams_i_lead = plan.teams_with_times | where_exp: "team", "team.leaders contains current_user" %}
-
What’s next?
These improvements make custom reports more intuitive, performant, and in sync with the Services experience. Over the coming months, we’ll also be updating our sample reports to take advantage of these improvements. You may notice faster generation times as a result!
💚 Team Services