Custom Reports Wiki
One of the most powerful features in Planning Center Online is the ability to customize reports exactly how you want them. Customizing reports reuires a general knowledge of HTML, CSS and the Liquid Programming Language which is used to dynamically insert your data into the report. Instructions for using Liquid in Planning Center are below.
First, check out our tutorial on How To Use Custom Reports!
The Liquid Templating Language
At the center of the Planning Center Reporting process is a simple, yet powerful templating language called Liquid. Liquid is already used by some other large sites including the company who made it Shopify. Here are some helpful resources for this language:
• Liquid Template Language Website
• Liquid Template Language Usage Wiki
Report Types
There are several different reports that you can create
• Plan Report - The plan report adds on a single element called plan which is a Plan variable type
• Matrix Report - The matrix report adds on a collection of Plan variable types called plans which are the plans you have loaded in the Matrix
• People Report - The people report adds on a single element called people which is a Person variable type
Variable Types
Organization
- id
- name
- logo_url
- logo_thumbnail_url
Ministry (Service Type)
- id
- name
- plan_item_note_categories - a collection of Ministry Category objects representing all item note categories for a ministry
- plan_person_categories - a collection of Ministry Category objects representing all people categories for a ministry
- plan_note_categories - a collection of Ministry Category objects representing all plan note categories for a ministry
- parent.name - the name of the enclosing folder (add multiple levels of .parent to access more enclosing folders)
Ministry Category (Service Type Category)
- id
- name
Plan
- id
- series_title
- plan_title
- dates - string representation of dates (January 1 & 2, 2010)
- ministry - a Ministry object representing the ministry (service type) that this plan is apart of
- items - a collection of Plan Item objects representing every item in the plan
- notes - a collection of Note objects representing every note for plan
- plan_times - a collection of Time objects representing every plan time
- rehearsal_times - a collection of Time objects representing every rehearsal time
- plan_people - a collection of Plan Person objects representing everyone who has been scheduled
- plan_people_not_declined - a collection of Plan Person objects representing everyone who has been scheduled and not declined
- total_length - length of plan as a string represented as "mm:ss"
- hour - number of hours in the total length (if a plan is 1hr 10 min, hour would return 1)
- minutes - number of minutes in the total length (if a plan is 1hr 10min, minutes would return 10)
- all_minutes - the total number of minutes in the plan (if a plan is 1hr 10 min, all_minutes would return 70)
- seconds - number of seconds in the total length (if a plan is 1hr 10 min & 30sec, seconds would return 30)
- updated_at - when the plan was last updated represented as a DateTime object
- updated_by - the person who last updated this plan represented as a Person object
- created_by - the person who created this plan represented as a Person object
Plan Item
- id
- title
- title_for_url - URL Encoded version of title, most commonly used to generate graphics
- description
- details
- is_preservice - is this a pre-service item (currently doesn't appear to be set for header items)
- is_postservice - is this a post-service item (currently doesn't appear to be set for header items)
- length - length of item as a string represented as "mm:ss"
- clean_length - same as length but with ":00" removed if present
- length_since_last_header
- length_until_next_header
- length_until_end
- offset - length since start of service
- notes - a collection of Note objects representing every note for plan
- times - a collection of Plan Item Time objectest representing each time for this item
- has_any_times? - let's you know if this item has been included in any of the plan times
- item_type - a string representing which type of item this is ("Regular", "Header", "Song", "Media")
- song - a Song object representing the song for this item
- arrangement - an Arrangement object representing the song for this item
- key - a Key object representing the key for this item
Plan Item Time
- time_id - id of Time object that this relates to
- actual_time - Time this item is planeed to occur as a DateTime object
- actual_start - Time this item actually occured after running Planning Center LIVE as a DateTime object
- actual_end - Time this item actually ended after running Planning Center LIVE as a DateTime object
- actual_length - Actual length of item after running Planning Center LIVE as a string represented as "mm:ss"
- over? - true or false based on if the actual_length after running Planning Center LIVE was longer than the planned length
- difference - the amount of time over or under after running Planning Center LIVE as a string
Plan Person
- position - position of this person
- category - a Ministry Category object representing this persons category
- person - a Person object representing this person
- status - a string representing the person's availability ("U" for unconfirmed, "C" for confirmed, and "D" for declined)
- service_times - a Time object representing this person's assigned plan times
- rehearsal_times- a Time object representing this person's assigned rehearsal times
Time
- id
- name
- starts_at - starting time of plan
- ends_at - ending time of plan
Note
- category_name - name of category note is in
- note - actual not as string
Song
- title
- title
- author
- copyright
- themes
- ccli_id
- notes
Arrangement
- name
- length
- sequence
- bpm
- chord_chart
- lyrics
- music_key
- notes
Key
- name
- starting
- ending
- to_s
Person
- first_name
- last_name
- name - full name
- addresses
- phone_numbers
- emails
- notes
- photo_url
- photo_thumbnail_url
- block_out_dates - a collection of Availability objects representing every future availability option
- future_plan_people - a collection of Plan objects representing every future confirmed or unconfirmed request
- confirmed_future_plan_people - a collection of Plan objects representing every future confirmed request
- custom_properties - a collection of Custom_Property objects
- positions - a collection of Position objects
- logged_in_at - the date and time the person last logged in to Planning Center
Address
- street
- city
- state
- zip
- type_name
E-Mail Address
- address
- type_name
Phone Number
- number
- type_name
Availability
- name
- starts_at
Positions
- category - a People Category object representing the People Category this positions belongs to
- name
People Category
- service_type - a Ministry object representing the Service Type this People Category belongs to
- name
Custom_Property
- field
- option
Field
- id
- name
- people
Option
- id
- name
- people
General Variables
- now - the current date/time
- current_user - a Person object representing the logged in user
- report.title - the name of the custom report
Matrix Only Variables
- plans - a collection of Plan objects representing all Plans loaded in the Matrix
- plan_notes_categories - a collection of all Plan Note Categories loaded in the Matrix
- item_notes_categories - a collection of all Item Note Categories loaded in the Matrix
- people_categories - a collection of all People Categories loaded in the Matrix
- category_with_positions - a collection of Category objects with Positions representing all people categories
- order_of_service_opened - true or false based on if the order of service section is expanded
- plan_notes_opened - true or false based on if the plan notes section is expanded
- people - a collection of People objects for each person loaded in the Matrix (1 record for each person no matter how many times they are in the Matrix)
Category
- name
- opened - true or false based on of if the Position Category is expanded
- positions - a collection of Position objects representing all categories
Position
- name