Overview
PPM's Help Center uses a single Intercom workspace with three audience-separated sections:
π Tenants β tenants of PPM-managed properties
π’ Owners β property owners whose assets PPM manages
π Internal β PPM staff only (should never be visible externally)
Audience targeting works by setting a custom contact attribute on each Intercom contact, then creating Help Center audience rules that show or hide collections based on that attribute.
Step 1 β Create the Custom Attribute
In Intercom, go to Settings β Custom Data β Contact Data β New Attribute and create:
Name:
ppm_roleType: String (single-select or free text)
Allowed values:
tenant,owner,staff
This attribute is the single source of truth for all audience routing.
Step 2 β Set the Attribute on Each Contact
There are three ways to set ppm_role on a contact:
A. Manually (one-off)
In Intercom, open any contact β click the Attributes panel β find ppm_role β set the value.
B. Via Buildium Sync (n8n automation)
The PPM AI OS syncs contacts from Buildium. When a contact is created or updated in n8n, the workflow sets ppm_role based on the Buildium record type:
Buildium Tenant record β
ppm_role = tenantBuildium Owner record β
ppm_role = ownerPPM staff (manual list) β
ppm_role = staff
The n8n HTTP call to set a contact attribute looks like:
POST https://api.intercom.io/contacts/{contact_id}
{
"custom_attributes": {
"ppm_role": "tenant"
}
}
C. Via Intercom Messenger (self-service)
If a visitor identifies themselves via a form or chat, a custom bot flow can set ppm_role automatically based on their response.
Step 3 β Configure Help Center Audience Rules
In Intercom, go to Help Center β Customize β Audience for each root collection and apply the following rules:
Collection | Rule | Value |
π Tenants (19114025) | ppm_role = | tenant |
π’ Owners (19114031) | ppm_role = | owner |
π Internal (19114038) | ppm_role = | staff |
Important: Apply rules at the root collection level. Child collections automatically inherit the parent's audience rule β you do not need to set rules on each sub-collection individually.
Default behavior for unrecognised contacts: Set the fallback to show no collections until ppm_role is set. This prevents anonymous visitors from seeing internal content.
Step 4 β Fallback for Unknown Visitors
Visitors who have not yet been identified (no ppm_role set) will see a neutral Help Center landing page. Configure this in Help Center β Customize β Default Content:
Show a welcome message prompting them to identify themselves
Optionally show a public "General FAQ" collection with no audience restriction
Do not show Tenants, Owners, or Internal sections
Step 5 β AI OS Integration Points
The following PPM AI OS workflows interact with this attribute system:
KP Executor (workflow 7DGWkmTyMnx4DVDR)
When the AI CCO publishes a policy to Intercom, it sets the parent_id based on the policy's audience field from kp_proposals. The collection mapping is stored in Supabase table kp_intercom_collections. Audience values map as follows:
internalβ π Internal / Maintenance Procedures (19114040)tenantβ π Tenants / Policies & Rights (19114029)ownerβ π’ Owners / Policies & Compliance (19114036)
Admin Agent (future)
When creating a tenant or owner contact in Intercom via the Admin Agent, the workflow must set ppm_role at creation time to ensure the contact sees the correct Help Center content from their first interaction.
Collection ID Reference
Audience | Section | Collection ID |
Tenant | π Tenants (root) | 19114025 |
Tenant | Getting Started | 19114026 |
Tenant | Rent & Payments | 19114027 |
Tenant | Maintenance | 19114028 |
Tenant | Policies & Rights | 19114029 |
Tenant | Move-Out | 19114030 |
Owner | π’ Owners (root) | 19114031 |
Owner | Onboarding | 19114032 |
Owner | Financials | 19114033 |
Owner | Property & Maintenance | 19114034 |
Owner | Leasing | 19114035 |
Owner | Policies & Compliance | 19114036 |
Owner | Support & Portal | 19114037 |
Staff | π Internal (root) | 19114038 |
Staff | Operations | 19114039 |
Staff | Maintenance Procedures | 19114040 |
Staff | Compliance | 19114041 |
Staff | Financial Procedures | 19114042 |
Staff | HR & Admin | 19114043 |
Ongoing Maintenance
When a tenant becomes a former tenant, update
ppm_roletoformer_tenantor unset itWhen an owner offboards, unset
ppm_roleto remove their accessNew staff should have
ppm_role = staffset manually until the HR onboarding automation is builtThe Internal section should never be linked publicly anywhere β no QR codes, no website links, no Messenger buttons pointing to it
