Skip to main content

Planning Center Groups Data Model

This document provides complete documentation of the Planning Center Groups data model in Parable, including all tables, fields, and relationships.

Overview

The Groups module contains 18 entity tables and 7 relationship tables supporting small groups, classes, teams, group events, attendance tracking, enrollment management, and event RSVPs.

Visual Data Model

The diagram below shows the core entities and their relationships in the Groups module. Use it as a visual reference while exploring the detailed table definitions below.

Core Entity Relationships

Groups module data model
Open diagram in new tab →

Key Relationships Explained

Group Structure:
  • GROUP_TYPE categorizes groups (small groups, classes, teams, etc.)
  • GROUPs are organized by type with flexible hierarchies
  • MEMBERSHIPs link people to groups with roles (member, leader, owner)
Enrollment Process:
  • ENROLLMENT tracks join requests and approvals
  • Separate from MEMBERSHIP to handle pending/requested states
  • Once approved, becomes an active MEMBERSHIP
Event Management:
  • Groups host EVENTs (meetings, activities, gatherings)
  • ATTENDANCE tracks who actually attended
  • RSVPs track who plans to attend
  • EVENT_NOTEs provide additional context
Generic Relationship Pattern:
  • Location association via groups_group_relationships (relationship_type: location)
  • Campus linkage via groups_group_relationships (relationship_type: campus)
  • Resource assignments via groups_group_relationships
Tagging System:
  • TAG_GROUPs organize related tags
  • TAGs enable flexible categorization across groups
  • Applied via relationship tables

Query Requirements

Schema Prefix

IMPORTANT: All tables in the Planning Center Groups module are in the planning_center schema. You MUST prefix all table names with planning_center. in your queries. ✅ CORRECT: SELECT * FROM planning_center.groups_groups ❌ INCORRECT: SELECT * FROM groups_groups

Row Level Security (RLS)

This database uses Row Level Security (RLS) to automatically filter data based on:
  • tenant_organization_id: You only see data for your current organization
  • system_status: You only see ‘active’ records by default
DO NOT add these filters to your WHERE clause - they are applied automatically:
  • WHERE tenant_organization_id = 1 (unnecessary)
  • WHERE system_status = 'active' (unnecessary)
The RLS policies ensure you only access data you’re authorized to see, making these filters redundant and potentially causing performance issues.

Core Tables Overview

Primary Entity Tables

  • groups_groups - Small groups, classes, and teams
  • groups_people - People who can join groups
  • groups_memberships - Connections between people and groups
  • groups_events - Group meetings and gatherings
  • groups_attendances - Event attendance records
  • groups_rsvps - Event RSVP responses from group members
  • groups_group_types - Categories for organizing groups
  • groups_locations - Physical meeting places
  • groups_enrollments - Sign-up and registration management

Supporting Entity Tables

  • groups_campuses - Campus locations
  • groups_campus_groups - Links between campuses and groups
  • groups_event_notes - Notes for events
  • groups_group_applications - Applications to join groups
  • groups_organizations - Organization settings
  • groups_owners - Group ownership information
  • groups_resources - Group resources
  • groups_tags - Labels for group characteristics
  • groups_tag_groups - Tag groupings

Relationship Tables

  • groups_group_relationships - Links groups to other entities
  • groups_membership_relationships - Links memberships to related entities
  • groups_event_relationships - Links events to related entities
  • groups_attendance_relationships - Links attendances to related entities
  • groups_rsvp_relationships - Links RSVPs to events, groups, and people
  • groups_enrollment_relationships - Links enrollments to related entities
  • groups_group_application_relationships - Links applications to related entities

Table Definitions

groups_groups

Small groups, classes, teams, and other group entities.

groups_people

People who can participate in groups.

groups_memberships

Connections between people and groups with roles. Note: This table uses direct ID columns for performance optimization.

groups_events

Group meetings, gatherings, and activities.

groups_attendances

Records of who attended which events.

groups_rsvps

RSVP responses for group events, tracking whether people plan to attend. Note: RSVPs are linked to Events, Groups, and People through the groups_rsvp_relationships table. Use relationship joins to access the event, group, or person associated with each RSVP.

groups_group_types

Categories for organizing and configuring groups.

groups_locations

Physical locations where groups meet.

groups_enrollments

Group enrollment and registration management.

groups_tags

Labels for categorizing and filtering groups.

groups_tag_groups

Groupings for organizing tags.

groups_campuses

Campus locations for multi-site organizations.

groups_group_applications

Applications to join groups requiring approval.

groups_event_notes

Notes and annotations for events.

groups_organizations

Organization configuration and settings.

groups_owners

Group ownership and management information.

groups_resources

Resources associated with group types.

groups_campus_groups

Links between campuses and groups.

Relationship Tables

groups_group_relationships

Links groups to related entities like types, locations, and tags. Common relationship types:
  • GroupType - Links to groups_group_types
  • Location - Links to groups_locations
  • Tag - Links to groups_tags
  • Enrollment - Links to groups_enrollments
  • Campus - Links to groups_campuses

groups_membership_relationships

Links memberships to additional related entities.

groups_event_relationships

Links events to groups and locations. Common relationship types:
  • Group - Links to groups_groups
  • Location - Links to groups_locations

groups_attendance_relationships

Links attendance records to events and people. Common relationship types:
  • Event - Links to groups_events
  • Person - Links to groups_people

groups_rsvp_relationships

Links RSVPs to their associated events, groups, and people. Common relationship types:
  • Event - Links to groups_events
  • Group - Links to groups_groups
  • Person - Links to groups_people

groups_enrollment_relationships

Links enrollments to related entities.

System Fields

All tables include these system fields for data management:
  • tenant_organization_id - Multi-tenant organization identifier
  • system_status - Data lifecycle status:
    • transferring - Being imported from Planning Center
    • active - Current active data
    • stale - Marked for removal
  • system_created_at - When record was created in Parable
  • system_updated_at - When record was last updated in Parable

Common Query Patterns

Finding a Person’s Groups

Getting Group Members with Roles

Finding Events for a Group

Tracking Event Attendance

Event RSVPs Summary

Finding RSVPs for a Person

Groups by Type

Data Integrity Rules

  1. Schema Qualification: Always use planning_center. prefix for all table references
  2. Row Level Security: RLS automatically handles multi-tenancy and status filtering - do not add manual filters
  3. Monetary Values: Group event fees or donations stored in cents should be divided by 100.0 for display
  4. Archived Groups: Use archived_at IS NULL or archived_at comparisons to control visibility instead of checking system_status
  5. Direct ID Columns: Core tables such as groups_groups and groups_memberships expose direct IDs for performance-sensitive joins

Common Mistakes to Avoid

  1. Missing Schema Prefix
    • FROM groups_groups
    • FROM planning_center.groups_groups
  2. Adding Redundant RLS Filters
    • WHERE tenant_organization_id = 1 AND system_status = 'active'
    • ✅ Trust RLS to handle this automatically
  3. Joining Without Schema
    • JOIN groups_memberships m ON ...
    • JOIN planning_center.groups_memberships m ON ...
  4. Skipping Currency Conversion
    • SELECT suggested_donation_cents as suggested_donation
    • SELECT suggested_donation_cents / 100.0 as suggested_donation

Performance Considerations

  1. Indexes: All tables have optimized indexes on:
    • Primary keys and entity IDs
    • Join columns and foreign keys
    • Date columns for time-based queries
  2. Query Optimization:
    • Always use the planning_center. schema prefix
    • RLS handles tenant and status filtering automatically
    • Filter archived groups or attendance flags when relevant
    • Consider CTEs for complex multi-join queries
    • Use direct ID columns when available instead of relationship tables

Data Types and Conventions

Location Preferences

  • physical - In-person meetings
  • virtual - Online meetings
  • hybrid - Both in-person and online

Roles

  • member - Regular group member
  • leader - Group leader with additional permissions

RSVP Responses

  • yes - Person plans to attend
  • no - Person will not attend
  • maybe - Person is undecided

Application Status

  • pending - Awaiting review
  • approved - Accepted into group
  • rejected - Not accepted

Next Steps