Skip to main content
This document covers every table in the Planning Center People data model in Parable: all 58 entity tables with full field definitions, and all 39 relationship tables, of which the most frequently queried are described individually below.

Overview

The People module is the most comprehensive in Planning Center, containing:
  • 58 entity tables - All person, household, workflow, form, messaging, and configuration data
  • 39 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 relationships link people to households via people_households_relationships
  • 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 (58 total)

Core Person & Contact Tables (10)

  • people_people - Core person records
  • people_addresses - Physical addresses
  • people_emails - Email addresses
  • people_phone_numbers - Phone numbers
  • people_households - Family units
  • 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 (8)

  • 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 (6)

  • 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 (6)

  • people_field_definitions - Custom field schemas
  • people_field_data - 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 (6)

  • 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 (4)

  • 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 (10)

  • 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 (39 total)

  • people_background_checks_relationships
  • people_conditions_relationships
  • people_connected_people_relationships
  • people_custom_senders_relationships
  • people_emails_relationships
  • people_field_data_relationships
  • people_field_definitions_relationships
  • people_field_options_relationships
  • people_form_field_options_relationships
  • people_form_fields_relationships
  • people_form_submission_values_relationships
  • people_form_submissions_relationships
  • people_forms_relationships
  • people_households_relationships
  • people_list_categories_relationships
  • people_list_results_relationships
  • people_list_shares_relationships
  • people_lists_relationships
  • people_message_groups_relationships
  • people_messages_relationships
  • people_note_categories_relationships
  • people_note_category_shares_relationships
  • people_note_category_subscriptions_relationships
  • people_notes_relationships
  • people_people_imports_relationships
  • people_people_relationships
  • people_person_apps_relationships
  • people_person_mergers_relationships
  • people_phone_numbers_relationships
  • people_reports_relationships
  • people_service_times_relationships
  • people_social_profiles_relationships
  • people_workflow_card_activities_relationships
  • people_workflow_card_notes_relationships
  • people_workflow_cards_relationships
  • people_workflow_shares_relationships
  • people_workflow_step_assignee_summaries_relationships
  • people_workflow_steps_relationships
  • people_workflows_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_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_workflow_cards_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_data

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

All 39 relationship tables are listed in the inventory above and every one of them follows the standard structure. The ten described below are the ones most often needed in reports; consult them for the relationship types each table carries.

people_people_relationships

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

people_households_relationships

Links households to people and campuses. IMPORTANT: This table stores relationships between households and people. The primary contact for a household is stored in the people_households table via the primary_contact_name column, and the relationship is available through people_households_relationships. 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
  • This table stores both People and PrimaryContact relationship types
  • Use relationship_type = 'PrimaryContact' to find the primary contact person for a household
Example Query:

people_emails_relationships

Links emails to people.

people_phone_numbers_relationships

Links phone numbers to people.

people_field_data_relationships

Links custom field data to people and other entities.

people_forms_relationships

Links forms to campuses and categories.

people_workflows_relationships

Links workflows to campuses and categories.

people_workflow_cards_relationships

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

people_messages_relationships

Links messages to people and message groups.

people_notes_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 and primary 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
    • Join through the *_relationships tables — People tables do not carry foreign-key columns to other entities

Verification Summary

58 entity tables — all listed in the inventory, all with field definitions39 relationship tables — all listed in the inventory; 10 described individually, the rest follow the standard structureAll tables include the system columns described aboveConsistent formatting with other modules Counts on this page were verified against the planning_center schema itself, and cover the complete Planning Center People data model in Parable.