> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getparable.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

# 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:

```sql theme={null}
-- 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:

| Table                          | What It Contains           | Key Use Cases                                  |
| ------------------------------ | -------------------------- | ---------------------------------------------- |
| `people_people`                | Core person records        | Demographics, status, membership, permissions  |
| `people_households`            | Family units               | Family groupings, primary contacts             |
| `people_household_memberships` | Links people to households | Family relationships, household composition    |
| `people_emails`                | Email addresses            | Contact info, primary emails, communication    |
| `people_phone_numbers`         | Phone numbers              | Contact info, SMS capability                   |
| `people_addresses`             | Physical addresses         | Mailing, geographic analysis, home visits      |
| `people_campuses`              | Church locations           | Multi-site management, campus assignment       |
| `people_lists`                 | Custom people lists        | Segmentation, targeted ministry                |
| `people_field_data`            | Custom field values        | Additional data points, ministry-specific info |
| `people_notes`                 | Pastoral notes             | Care tracking, prayer requests, follow-ups     |
| `people_workflows`             | Process workflows          | New member classes, volunteer onboarding       |
| `people_workflow_cards`        | Workflow progress          | Individual progress through processes          |
| `people_forms`                 | Church forms               | Sign-ups, registrations, information gathering |
| `people_form_submissions`      | Form responses             | Submitted data, event registrations            |
| `people_background_checks`     | Safety screening           | Volunteer 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](/planning-center/people/basic-queries) for simple, powerful queries you can use today.

🚀 **Ready for More?** Check out [Advanced Queries](/planning-center/people/advanced-queries) for complex analysis and reporting.

📊 **Need Reports?** See [Reporting Examples](/planning-center/people/reporting-examples) for complete, production-ready reports.

🔍 **Want Details?** Review the [Data Model](/planning-center/people/data-model) for complete table documentation.

## Common Questions

### How do I find a specific person?

```sql theme={null}
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?

```sql theme={null}
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:

```sql theme={null}
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](https://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.*
