Skip to main content

Planning Center People Data Model - Complete Documentation

This document provides complete documentation of ALL tables in the Planning Center People data model in Parable, including all 84 entity tables and 25+ relationship tables with full field definitions.

Overview

The People module is the most comprehensive in Planning Center, containing:
  • 84 entity tables - All person, household, workflow, form, messaging, and configuration data
  • 25+ relationship tables - Linking entities together following Parable’s relationship architecture

Visual Data Model

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

Core Entity Relationships

People module data model
Open diagram in new tab →

Key Relationships Explained

Direct Parent-Child Relationships:
  • Emails, phone numbers, and addresses belong directly to people (via parent_id)
  • Household memberships link people to households with explicit junction table
  • Form submissions, workflow cards, notes link back to people
Generic Relationship Pattern:
  • Campus associations stored in people_people_relationships table
  • Relationship type identifies the connection (e.g., primary_campus)
Complex Subsystems:
  • Workflows: Multi-step process tracking with cards, steps, and activities
  • Forms: Dynamic form builder with fields, options, and submissions
  • Lists: Smart segmentation with results linking people to lists
  • Messaging: Bidirectional messaging between people

Query Requirements

Schema Prefix

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

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.

Complete Table Inventory

Entity Tables (84 total)

Core Person & Contact Tables (11)

  • people_people - Core person records
  • people_addresses - Physical addresses
  • people_emails - Email addresses
  • people_phone_numbers - Phone numbers
  • people_households - Family units
  • people_household_memberships - Links people to households
  • people_campuses - Church campus locations
  • people_connected_persons - Connected person records
  • people_person_apps - App permissions per person
  • people_social_profiles - Social media profiles
  • people_spam_email_addresses - Email filtering

Workflow System Tables (10)

  • people_workflows - Workflow definitions
  • people_workflow_cards - Workflow instances
  • people_workflow_steps - Workflow step definitions
  • people_workflow_card_activities - Workflow activity logs
  • people_workflow_card_notes - Notes on workflow cards
  • people_workflow_categories - Workflow categorization
  • people_workflow_shares - Workflow sharing settings
  • people_workflow_step_assignee_summaries - Assignee summaries

Forms System Tables (8)

  • people_forms - Form definitions
  • people_form_submissions - Submitted form data
  • people_form_fields - Form field definitions
  • people_form_field_options - Field option definitions
  • people_form_submission_values - Submitted field values
  • people_form_categories - Form categorization

Custom Fields Tables (5)

  • people_field_definitions - Custom field schemas
  • people_field_datum - Custom field values
  • people_field_options - Custom field options
  • people_tabs - UI tab organization
  • people_conditions - Conditional logic
  • people_rules - Business rules

Lists & Segmentation Tables (7)

  • people_lists - Smart lists and segments
  • people_list_categories - List categorization
  • people_list_results - People in lists
  • people_list_shares - List sharing permissions
  • people_list_stars - Favorited lists
  • people_mailchimpsyncstatus - Email marketing sync

Notes & Documentation Tables (4)

  • people_notes - Pastoral care notes
  • people_note_categories - Note categorization
  • people_note_category_shares - Note sharing
  • people_note_category_subscriptions - Note subscriptions

Messaging System Tables (4)

  • people_messages - Individual messages
  • people_message_groups - Message groupings
  • people_custom_senders - Custom email senders
  • people_carriers - Phone carriers

Import & Data Management Tables (5)

  • people_people_imports - Import jobs
  • people_people_import_conflicts - Import conflicts
  • people_people_import_history - Import audit trail
  • people_person_mergers - Person merge records

Administrative & Reference Tables (11)

  • people_apps - Application integrations
  • people_background_checks - Background check records
  • people_inactive_reasons - Inactivation reasons
  • people_marital_statuses - Marital status options
  • people_name_prefixes - Title prefixes
  • people_name_suffixes - Name suffixes
  • people_organizations - Organization settings
  • people_reports - Report definitions
  • people_school_options - School affiliations
  • people_service_times - Service schedules

Relationship Tables (25 total)

  • people_people_relationships
  • people_household_relationships
  • people_email_relationships
  • people_phonenumber_relationships
  • people_campus_relationships
  • people_backgroundcheck_relationships
  • people_fielddata_relationships
  • people_fielddefinition_relationships
  • people_form_relationships
  • people_formfield_relationships
  • people_formsubmission_relationships
  • people_list_relationships
  • people_listcategory_relationships
  • people_message_relationships
  • people_messagegroup_relationships
  • people_note_relationships
  • people_note_category_relationships
  • people_peopleimport_relationships
  • people_personmerger_relationships
  • people_report_relationships
  • people_socialprofile_relationships
  • people_workflow_relationships
  • people_workflowcard_relationships
  • people_workflowcardactivity_relationships
  • people_workflowcardnote_relationships

Complete Table Definitions

Core Person & Contact Tables

people_people

The main person table containing all individual records.

people_addresses

Physical addresses for people.

people_emails

Email addresses for people.

people_phone_numbers

Phone numbers with carrier information.

people_households

Family units for grouping related people.

people_household_memberships

Links people to households with their roles.

people_campuses

Church campus locations.

people_connected_persons

Connected person records from external systems.

people_person_apps

Application permissions per person.

people_social_profiles

Social media profiles for people.

people_spam_email_addresses

Email addresses marked as spam or blocked.

Workflow System Tables

people_workflows

Process workflow definitions for managing people through various church processes.

people_workflow_cards

Individual workflow instances tracking people through processes. Note: Workflow card relationships (assignee, current_step, person, workflow) are stored in the people_workflowcard_relationships table, not as direct foreign key columns. See the Relationships section below.

people_workflow_steps

Workflow step definitions.

people_workflow_card_activities

Activity logs for workflow cards.

people_workflow_card_notes

Notes attached to workflow cards.

people_workflow_categories

Categories for organizing workflows.

people_workflow_shares

Workflow sharing permissions.

people_workflow_step_assignee_summaries

Summary of workflow step assignments.

Forms System Tables

people_forms

Form definitions for data collection.

people_form_submissions

Submitted form data.

people_form_fields

Form field definitions.

people_form_field_options

Options for form fields.

people_form_submission_values

Values submitted for form fields.

people_form_categories

Categories for organizing forms.

Custom Fields Tables

people_field_definitions

Custom field schemas.

people_field_datum

Custom field values for people.

people_field_options

Options for custom fields.

people_tabs

UI tab organization for custom fields.

people_conditions

Conditional logic for fields and workflows.

people_rules

Business rules for data processing.

Lists & Segmentation Tables

people_lists

Smart lists for segmenting people.

people_list_categories

Categories for organizing lists.

people_list_results

People included in lists.

people_list_shares

List sharing permissions.

people_list_stars

Favorited lists per user.

people_mailchimpsyncstatus

Email marketing synchronization status.

Notes & Documentation Tables

people_notes

Pastoral care notes and follow-ups.

people_note_categories

Categories for organizing notes.

people_note_category_shares

Note category sharing permissions.

people_note_category_subscriptions

Subscriptions to note categories.

Messaging System Tables

people_messages

Individual messages sent through the system.

people_message_groups

Groupings of related messages.

people_custom_senders

Custom email sender configurations.

people_carriers

Phone carrier information for SMS messaging.

Import & Data Management Tables

people_people_imports

Import job definitions.

people_people_import_conflicts

Conflicts detected during imports.

people_people_import_history

Audit trail of import operations.

people_person_mergers

Records of merged person records.

Administrative & Reference Tables

people_apps

Application integrations available.

people_background_checks

Background check records for volunteers and staff.

people_inactive_reasons

Reasons for marking people inactive.

people_marital_statuses

Marital status options.

people_name_prefixes

Title prefixes (Mr., Mrs., Dr., etc.).

people_name_suffixes

Name suffixes (Jr., Sr., III, etc.).

people_organizations

Organization configuration and settings.

people_reports

Report definitions for data analysis.

people_school_options

School affiliations and options.

people_service_times

Service schedule information.

Relationship Tables

All relationship tables follow a similar pattern for linking entities:

Standard Relationship Table Structure

Key Relationship Tables

people_people_relationships

Links people to campuses, lists, inactive reasons, marital statuses, organizations, etc.

people_household_relationships

Links households to people and campuses. IMPORTANT: This table stores relationships between households and people. The primary contact for a household is NOT stored here - it is stored directly in the people_households table via the primary_contact_id and primary_contact_name columns. Relationship Design Decision:
  • Planning Center’s API returns both primary_contact and people relationships for each household
  • The primary_contact person is always included in the people array
  • To avoid duplicate data, we only store the people relationships in this table
  • To find the primary contact for a household, query people_households.primary_contact_id instead of this table
Example Query for Primary Contact:

people_email_relationships

Links emails to people.

people_phonenumber_relationships

Links phone numbers to people.

people_fielddata_relationships

Links custom field data to people and other entities.

people_form_relationships

Links forms to campuses and categories.

people_workflow_relationships

Links workflows to campuses and categories.

people_workflowcard_relationships

Links workflow cards to people (assignees and subjects), workflow steps, and workflows.

people_message_relationships

Links messages to people and message groups.

people_note_relationships

Links notes to people and note categories.

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

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: People tables that include contribution amounts store them in cents - divide by 100.0 for display
  4. Contact Status Flags: Use fields like status, primary, and inactive_reason_id to interpret person records instead of relying on system_status
  5. Direct ID Columns: Core tables such as people_people, people_households, and people_lists expose direct IDs for performance-sensitive joins

Common Mistakes to Avoid

  1. Missing Schema Prefix
    • FROM people_people
    • FROM planning_center.people_people
  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 people_households h ON ...
    • JOIN planning_center.people_households h ON ...
  4. Skipping Currency Conversion
    • SELECT amount_cents as amount
    • SELECT amount_cents / 100.0 as amount

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 when querying planning center tables.
    • RLS handles tenant and status filtering automatically
    • Filter person status or inactivity flags when relevant
    • Consider CTEs for complex multi-join queries
    • Use direct ID columns when available instead of relationship tables

Verification Summary

Total Tables Documented: 84 entity tables + 25 relationship tablesAll tables include system columnsComprehensive field definitions providedConsistent formatting with other modules This document represents the COMPLETE Planning Center People data model implementation in Parable.