Planning Center People SQL Queries

Know Your Congregation Through Data

Your church database is the foundation of ministry. With Parableโ€™s SQL access to Planning Center People data, you can understand your congregation deeply, track engagement, manage pastoral care, and ensure no one is overlooked.

Quick Start

Ready to explore your people data? Hereโ€™s your first query to see recent additions to your church:
-- See the 10 most recently added people
SELECT 
    person_id,
    first_name,
    last_name,
    name,
    status,
    membership,
    created_at,
    CASE 
        WHEN child = true THEN 'Child'
        WHEN graduation_year IS NOT NULL THEN 'Student'
        ELSE 'Adult'
    END as age_group
FROM planning_center.people_people
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 10;

What You Can Do With People Queries

๐Ÿ‘ฅ Understand Your Congregation

  • Track membership growth and demographics
  • Identify family units and relationships
  • Analyze age distributions and life stages
  • Monitor geographic spread of your church

๐Ÿ“Š Measure Engagement

  • Track attendance patterns across ministries
  • Identify highly engaged vs occasional attendees
  • Find people not connected to any groups or serving teams
  • Monitor volunteer participation

๐ŸŽฏ Pastoral Care

  • Identify people needing follow-up
  • Track milestones (birthdays, anniversaries)
  • Monitor spiritual journey progress
  • Manage background checks and safety protocols

๐Ÿ“ˆ Strategic Planning

  • Demographic analysis for ministry planning
  • Campus and location insights
  • Communication preferences analysis
  • Volunteer capacity planning

Available Tables

Your Planning Center People data is organized into these primary tables:
TableWhat It ContainsKey Use Cases
people_peopleCore person recordsDemographics, status, membership, permissions
people_householdsFamily unitsFamily groupings, primary contacts
people_household_membershipsLinks people to householdsFamily relationships, household composition
people_emailsEmail addressesContact info, primary emails, communication
people_phone_numbersPhone numbersContact info, SMS capability
people_addressesPhysical addressesMailing, geographic analysis, home visits
people_campusesChurch locationsMulti-site management, campus assignment
people_listsCustom people listsSegmentation, targeted ministry
people_field_dataCustom field valuesAdditional data points, ministry-specific info
people_notesPastoral notesCare tracking, prayer requests, follow-ups
people_workflowsProcess workflowsNew member classes, volunteer onboarding
people_workflow_cardsWorkflow progressIndividual progress through processes
people_formsChurch formsSign-ups, registrations, information gathering
people_form_submissionsForm responsesSubmitted data, event registrations
people_background_checksSafety screeningVolunteer clearance, child safety

Understanding Relationships

Parable stores Planning Center relationships in separate tables to maintain data integrity. Key relationship patterns include:
  • people_people_relationships - Links people to campuses, lists, inactive reasons
  • people_household_relationships - Links households to people and campuses
  • people_email_relationships - Links emails to people
  • people_phone_number_relationships - Links phone numbers to people
  • people_field_data_relationships - Links custom field data to people
Weโ€™ll show you exactly how to join these tables in our examples!

Key Concepts

Person Status

  • active - Current member/attendee
  • inactive - No longer attending
  • Other custom statuses your church defines

Membership Levels

Your church defines membership levels like:
  • Member - Full members
  • Regular Attender - Non-members who attend regularly
  • Visitor - Occasional attendees
  • Custom levels specific to your church

Age Groups

  • child - Boolean flag for children
  • graduation_year - Indicates students
  • birthdate - For age calculations
  • grade - Current school grade

Permissions

  • site_administrator - Full system access
  • people_permissions - Access to People app
  • can_create_forms - Form creation rights
  • can_email_lists - Mass email permissions

Next Steps

๐Ÿ“š New to SQL? Start with Basic Queries for simple, powerful queries you can use today. ๐Ÿš€ Ready for More? Check out Advanced Queries for complex analysis and reporting. ๐Ÿ“Š Need Reports? See Reporting Examples for complete, production-ready reports. ๐Ÿ” Want Details? Review the Data Model for complete table documentation.

Common Questions

How do I find a specific person?

SELECT * FROM planning_center.people_people
WHERE LOWER(first_name) LIKE '%john%' 
   OR LOWER(last_name) LIKE '%smith%'
   AND status = 'active';

Whatโ€™s the difference between name fields?

  • name - Full display name
  • first_name - First/given name
  • last_name - Family/surname
  • nickname - Preferred name
  • middle_name - Middle name
  • given_name - Legal first name

How do I calculate age from birthdate?

SELECT 
    name,
    birthdate,
    EXTRACT(YEAR FROM AGE(CURRENT_DATE, birthdate)) as age
FROM planning_center.people_people
WHERE birthdate IS NOT NULL;

How do I find household members?

Join through the household membership table:
SELECT 
    h.name as household_name,
    p.name as person_name,
    hm.pending
FROM planning_center.people_households h
JOIN planning_center.people_household_memberships hm 
    ON h.household_id = hm.household_id
JOIN planning_center.people_people p 
    ON hm.person_id = p.person_id
WHERE h.household_id = 'YOUR_HOUSEHOLD_ID';

What does status = โ€˜activeโ€™ mean?

Active people are current participants in your church. Inactive people have been marked as no longer attending (moved, deceased, etc.). Always filter by status unless you specifically need inactive records.

Tips for Success

  1. Filter by Status - Usually include WHERE status = 'active'
  2. Handle NULLs - Many fields are optional, use COALESCE or IS NOT NULL
  3. Use Relationships - Join through relationship tables for connected data
  4. Consider Privacy - Be mindful of sensitive data like medical notes
  5. Test with LIMIT - Add LIMIT 10 while developing queries

Getting Help

  • ๐Ÿ› Found an issue? Report it at github.com/getparable/parable-api/issues
  • ๐Ÿ“– Need more examples? Check our other query guides in this folder
  • ๐Ÿ’ฌ Have questions? Reach out to your Parable support team

Every person matters. Let data help you care for them better.