Account Model Field Reference
This page documents every recognized account property in FunnelStory, its expected data type, and what it's used for. When mapping your query columns to account properties, use this as your reference.
Property Categories
Required Properties
These properties must be present for the model to function.
| Property | Type | Description |
|---|---|---|
account_id | string | The unique identifier for the account. This is the model key -- each row must have a unique, non-null account_id. FunnelStory uses this to identify and deduplicate accounts across refreshes. |
Default Properties
These are pre-populated in the mapping UI. While not strictly required, they are strongly recommended for a useful account model.
| Property | Type | Description |
|---|---|---|
name | string | The display name of the account (company name). Shown throughout the FunnelStory UI. |
domain | string | The primary web domain of the account (e.g., example.com). Used for enrichment, domain-based matching, and deduplication. Should be lowercase, without http:// or www. prefixes. |
created_at | timestamp | When the account was created or became a customer. Used as the account start date in lifecycle tracking. See Timestamp Formatting for format requirements. |
Revenue and Lifecycle
| Property | Type | Description |
|---|---|---|
amount | float | The account's revenue value (ARR, contract value, MRR, etc.). Used in revenue reporting, health scoring, and dashboards. For accounts with multiple deals/contracts, aggregate the total in your query. |
expires_at | timestamp | When the account's contract or subscription expires. Drives renewal management and expiry-based alerts. See Timestamp Formatting. |
Churn Tracking
| Property | Type | Description |
|---|---|---|
is_churned | boolean | Whether the account has churned. Set to true for churned accounts, false or omit for active accounts. FunnelStory uses this to segment accounts and track churn metrics. |
churned_at | timestamp | When the account churned. Used for churn timeline analysis. See Timestamp Formatting. |
Account Hierarchy
| Property | Type | Description |
|---|---|---|
parent_account_id | string | The account_id of this account's parent account. Used to build parent-child hierarchies. The parent account must exist in the same model. FunnelStory resolves the relationship and can roll up metrics from children to parents. |
CRM Identifiers
| Property | Type | Description |
|---|---|---|
sfdc_account_id | string | The Salesforce Account record ID (18-character ID). Links this account to its Salesforce record for CRM sync and opportunity tracking. |
hubspot_company_id | string | The HubSpot Company record ID. Links this account to its HubSpot record for CRM sync. |
Role-based assignment (CSM, AE, …)
These properties enable automatic account assignment by role. When FunnelStory refreshes the Account model, it matches the email or name values against workspace users and creates account assignments for the corresponding designation.
| Property | Type | Description |
|---|---|---|
csm_email | string | Email of the assigned Customer Success Manager. Matched against workspace users. |
csm_name | string | Name of the assigned CSM. Used as fallback when email is not available. |
cse_email | string | Email of the assigned Customer Success Engineer. |
cse_name | string | Name of the assigned CSE. |
ae_email | string | Email of the assigned Account Executive. |
ae_name | string | Name of the assigned AE. |
se_email | string | Email of the assigned Sales Engineer. |
se_name | string | Name of the assigned SE. |
How auto-assignment works: During each account refresh, FunnelStory looks at these property values and attempts to match them against users in your workspace. If a match is found, the account is automatically assigned to that user under the corresponding designation (CSM, AE, etc.). Manual assignments are never overwritten by auto-assignment.
Shared team assignment
This property ties an account to a Shared team (a group of workspace users). It works alongside the role-based properties above, not instead of them.
| Property | Type | Description |
|---|---|---|
team_id | string | Must match the External Team ID of a shared team defined under Admin → Team → Shared Teams. On each Account model refresh, FunnelStory assigns all members of that team to the account (auto-assigned, without a CSM/AE-style designation). If the value is empty or does not match any team, no assignment is made from this property. Manual assignment for a given user on that account prevents team-based auto-assignment for that same user. |
Custom Properties
Any column in your query that you map to a property name not listed above becomes a custom account property. Custom properties:
- Appear in the account detail view
- Can be used as filters in Accounts View and Audiences
- Can be used in workflow conditions
- Must follow the naming pattern: letters, numbers, hyphens, underscores, and spaces (regex:
^[a-zA-Z0-9-_ ]+$)
Common custom properties include: industry, tier, plan_name, region, employee_count, health_score, contract_type.
Data Type Reference
| Type | Description | Example Values |
|---|---|---|
string | Text values. Strings longer than 4,000 characters are truncated. | "Acme Corp", "enterprise" |
float | Decimal numbers. Used for monetary values, scores, percentages. | 50000.00, 0.85 |
integer | Whole numbers. | 42, 1000 |
timestamp | Date/time values. See Timestamp Formatting for format rules. | 1705305600, "2024-01-15T12:00:00Z" |
boolean | True/false values. | true, false, 1, 0 |
json | Structured data stored as JSON. Used for complex/nested values. | {"key": "value"} |
Timestamp Formatting
Timestamp formatting is critical for properties like created_at, expires_at, and churned_at to work correctly across FunnelStory. The system needs to interpret these values as actual points in time, not just text.
Format preference (most preferred first)
1. Native database timestamp type -- Preferred
If your database column is typed as TIMESTAMP, DATETIME, TIMESTAMPTZ, or similar, the database driver preserves the type and FunnelStory can read it directly. This is the most natural format when querying from SQL databases and warehouses -- no conversion needed.
-- These work because the column type carries through:
SELECT created_at FROM accounts -- where created_at is TIMESTAMP
2. Unix timestamp in seconds (integer) -- Good
A single integer representing seconds since January 1, 1970 UTC. Unambiguous and reliable, with no timezone confusion or format ambiguity.
1705305600
This represents 2024-01-15T12:00:00Z.
3. RFC 3339 / ISO 8601 string -- Acceptable
When timestamps must be represented as strings, RFC 3339 is the preferred string format:
2024-01-15T12:00:00Z
2024-01-15T12:00:00+00:00
2024-01-15T07:00:00-05:00
Other ISO 8601 variations (e.g., 2024-01-15 12:00:00) are generally recognized but less reliable.
4. Arbitrary string formats -- Will NOT work
FunnelStory cannot parse non-standard date strings. These formats will fail:
Jan 15, 2024
15/01/2024
01-15-2024
January 15th, 2024
If your source data uses these formats, you must convert them in your query.
Converting timestamps in your query
If your source data has timestamps in a non-ideal format, convert them in the query before FunnelStory receives them.
String date to Unix seconds:
| Dialect | Conversion |
|---|---|
| PostgreSQL | EXTRACT(EPOCH FROM created_at)::BIGINT |
| MySQL | UNIX_TIMESTAMP(created_at) |
| BigQuery | UNIX_SECONDS(created_at) or UNIX_SECONDS(TIMESTAMP(date_string)) |
| Snowflake | DATE_PART(EPOCH_SECOND, created_at) |
| Databricks | UNIX_TIMESTAMP(created_at) |
| Redshift | EXTRACT(EPOCH FROM created_at)::BIGINT |
| MS SQL | DATEDIFF(SECOND, '1970-01-01', created_at) |
Unix milliseconds to seconds:
SELECT (created_at_ms / 1000) AS created_at FROM accounts
String to timestamp type (when column is VARCHAR):
-- PostgreSQL
SELECT created_at::TIMESTAMP AS created_at FROM accounts
-- BigQuery
SELECT TIMESTAMP(date_string_column) AS created_at FROM accounts
-- Snowflake
SELECT TO_TIMESTAMP(date_string_column) AS created_at FROM accounts
Which properties need timestamp formatting?
All properties with type timestamp in the tables above:
created_at-- account creation / start dateexpires_at-- contract / subscription expirychurned_at-- when the account churned- Any custom property you intend to use as a date/time value
Next Steps
- See Writing Queries for query format details per data source type
- See Advanced Configuration for how to use these properties for ARR, churn, CSM assignment, and more
- See Real-World Examples for complete worked examples with mappings