> ## 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 Groups SQL Queries

## Build Stronger Community Through Data-Driven Group Ministry

Your small groups are where life change happens. With Parable's SQL access to Planning Center Groups data, you can understand participation patterns, identify growth opportunities, and ensure no one falls through the cracks in your community.

## Quick Start

Ready to explore your groups data? Here's your first query to see your active groups and their membership:

```sql theme={null}
-- See your 10 most active groups with member counts
SELECT 
    g.group_id,
    g.name,
    g.description,
    g.memberships_count,
    g.schedule,
    g.location_type_preference,
    g.created_at
FROM planning_center.groups_groups g
WHERE g.archived_at IS NULL  -- Only active groups
ORDER BY g.memberships_count DESC NULLS LAST
LIMIT 10;
```

## What You Can Do With Groups Queries

### 👥 Understand Group Participation

* Track membership growth and retention
* Identify groups that need more members
* Find people not yet connected to a group
* Monitor leadership coverage across groups

### 📊 Measure Engagement

* Analyze attendance patterns and trends
* Identify highly engaged vs occasional participants
* Track event participation rates
* Measure group meeting consistency

### 🎯 Strategic Planning

* Evaluate group types and their effectiveness
* Plan new groups based on participation gaps
* Optimize group locations and meeting times
* Balance group sizes for better community

### 📈 Generate Leadership Reports

* Track leader-to-member ratios
* Identify potential new leaders
* Monitor group health metrics
* Create dashboard views for ministry leaders

## Available Tables

Your Planning Center Groups data is organized into these main tables:

| Table                | What It Contains            | Key Use Cases                               |
| -------------------- | --------------------------- | ------------------------------------------- |
| `groups_groups`      | Group information           | Group details, schedules, settings          |
| `groups_memberships` | Member-to-group connections | Who's in which group, roles, join dates     |
| `groups_people`      | People in the Groups system | Member profiles, permissions                |
| `groups_events`      | Group meetings and events   | Meeting schedules, locations, cancellations |
| `groups_attendances` | Event attendance records    | Who attended what, attendance tracking      |
| `groups_group_types` | Categories for groups       | Small groups, classes, teams, etc.          |
| `groups_locations`   | Physical meeting locations  | Address details, venue information          |
| `groups_tags`        | Labels for groups           | Group characteristics, ministries           |
| `groups_enrollments` | Sign-ups and registrations  | Future group enrollments, waitlists         |

## Understanding Relationships

Parable stores Planning Center relationships in separate tables to maintain data integrity. This means connections between entities are stored in dedicated relationship tables:

* `groups_group_relationships` - Links groups to types, locations, tags, etc.
* `groups_membership_relationships` - Links memberships to groups and people
* `groups_event_relationships` - Links events to groups and locations
* `groups_attendance_relationships` - Links attendances to events and people

We'll show you exactly how to use these relationship tables in our query examples!

## Key Concepts

### Groups vs Memberships vs People

* **Groups** are the small groups, classes, or teams in your church
* **Memberships** connect people to groups with specific roles (member, leader)
* **People** are individuals who can be members of multiple groups

### Events vs Attendances

* **Events** are scheduled group meetings or activities
* **Attendances** track who actually showed up to each event

### Roles in Groups

Members can have different roles:

* `member` - Regular participant
* `leader` - Group leader with additional permissions

## Next Steps

📚 **New to SQL?** Start with [Basic Queries](/planning-center/groups/basic-queries) for simple, powerful queries you can use today.

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

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

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

## Common Questions

### Why do some fields show NULL?

NULL values appear when:

* A group hasn't been archived (`archived_at IS NULL` means active)
* Optional information wasn't provided (like `virtual_location_url`)
* An event hasn't happened yet (`canceled_at IS NULL` means not canceled)

### How do I filter for active groups only?

```sql theme={null}
WHERE archived_at IS NULL  -- Active groups haven't been archived
```

### What's the difference between created\_at and system\_created\_at?

* `created_at` - When the group was created in Planning Center
* `system_created_at` - When the data was synced to Parable
* Use `created_at` for ministry metrics

### How do I find a person's groups?

You need to join through the memberships table:

```sql theme={null}
SELECT 
    g.name as group_name,
    m.role,
    m.joined_at
FROM planning_center.groups_memberships m
JOIN planning_center.groups_groups g 
    ON m.group_id = g.group_id
JOIN planning_center.groups_people p 
    ON m.person_id = p.person_id
WHERE p.person_id = 'YOUR_PERSON_ID'
    AND g.archived_at IS NULL;
```

### What does location\_type\_preference mean?

This indicates where the group typically meets:

* `physical` - In-person at a location
* `virtual` - Online meetings
* `hybrid` - Both in-person and online options

## Tips for Success

1. **Start Simple** - Begin with basic SELECT queries before adding complexity
2. **Use Comments** - Document what your queries do for future reference
3. **Test with LIMIT** - Add `LIMIT 10` while developing queries
4. **Handle NULLs** - Use `IS NULL` or `IS NOT NULL` appropriately
5. **Check Relationships** - Remember to join through relationship tables

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

***

*Your groups data tells the story of community. Let's help you understand it better.*
