Sync Modules¶
PyPropertyMe includes optional sync modules for exporting PropertyMe data to external systems.
Available Modules¶
| Module | Use Case | Installation |
|---|---|---|
| Airtable Sync | Custom views, reporting, team collaboration | uv add pypropertyme[airtable] |
| MongoDB Sync | Analytics, AI/ML pipelines, system integrations | uv add pypropertyme[mongodb] |
Architecture¶
Both sync modules follow the same patterns:
- Separate CLI entry points -
pypropertyme-airtableandpypropertyme-mongodb - Upsert logic - Records are created if new, updated if existing
- Stale record refresh - Ensures external systems stay in sync with PropertyMe
- Optional dependencies - Only install what you need
Common Features¶
Tables/Collections¶
Both modules sync these 8 entity types:
| Entity | Airtable Table | MongoDB Collection |
|---|---|---|
| Contacts | Contacts | contacts |
| Members | Members | members |
| Properties | Properties | properties |
| Tenancies | Tenancies | tenancies |
| Tenancy Balances | Tenancy Balances | tenancy_balances |
| Jobs | Jobs | jobs |
| Inspections | Inspections | inspections |
| Tasks | Tasks | tasks |
Tenancies and Tenancy Balances
Tenancies and Tenancy Balances are two views of the same PropertyMe entity (same IDs): Tenancies carries the lease agreement fields (active tenancies only), Tenancy Balances carries the financial fields (all tenancies, active and closed). Both are synced.
Stale Record Handling¶
After syncing, records in the external system that weren't included in the PropertyMe sync response are refreshed:
- Most tables fetch each stale record's current state from PropertyMe by ID; records that return 404 (deleted) are logged and skipped
- Properties are refreshed in bulk from the archived properties endpoint
- Tenancies are flagged closed in bulk using the tenancy balances response as the close signal; Tenancy Balances rows are refreshed in bulk from the same response
This ensures PropertyMe remains the single source of truth.
Choosing a Module¶
Use Airtable When¶
- You need custom views and filters for your team
- Non-technical users need to access and visualize data
- You want to create automations with Airtable integrations
- You need linked records between entities
- Data volume is moderate (Airtable has record limits)
Use MongoDB When¶
- You're building analytics or reporting dashboards
- You need the data for AI/ML pipelines
- You're integrating with other systems via APIs
- You need full-text search capabilities
- Data volume is large or growing
Getting Started¶
Choose your sync module:
- Airtable Sync - Full documentation for Airtable integration
- MongoDB Sync - Full documentation for MongoDB integration