Skip to main content

Verification and Troubleshooting

After configuring and saving your Account model, use this page to verify it's working correctly and troubleshoot common issues.

Verification Checklist

1. Refresh the Model

After saving the model as Active:

  1. Go to Configuration > Data Models
  2. Find the Account model card
  3. Click Refresh Model to trigger an immediate data pull

The refresh may take a few seconds to several minutes depending on the data volume and connection type.

2. Check the Accounts View

Navigate to the Accounts View in the sidebar. Verify:

  • Accounts are appearing in the list
  • Account names look correct (not IDs or garbled text)
  • The total account count is reasonable for your business
  • Domains are populated (if you mapped domain)

3. Spot-Check Individual Accounts

Click on a few accounts and verify:

  • Name and domain match what's in your source system
  • ARR / Amount is correct (cross-reference with your CRM or billing system)
  • Created At date makes sense (not 1970-01-01 or null)
  • Expiry date is in the future for active accounts (if mapped)
  • CSM / AE assignments show the right people (if mapped)
  • Custom properties are populated and have expected values

4. Verify Parent-Child Relationships

If you configured parent_account_id:

  • Parent accounts show child accounts in their detail view
  • Child accounts show their parent
  • No orphaned parent references (parent IDs pointing to non-existent accounts)
  • aggregate_amount on parent accounts reflects the sum of children's ARR

5. Verify Churn Status

If you configured is_churned:

  • Churned accounts are marked as churned in the UI
  • Active accounts are NOT marked as churned
  • The ratio of churned to active accounts looks reasonable

6. Verify role-based assignments (CSM, AE, …)

If you configured csm_email or other role-based assignment properties:

  • Accounts are assigned to the correct workspace users
  • Navigate to an assigned account and confirm the CSM/AE matches your CRM
  • Users not in the workspace are not auto-assigned (check if expected users need to be invited first)

7. Verify shared team assignments (team_id)

If you mapped team_id to match Shared teams:

  • After Refresh model, accounts whose team_id matches a team’s External Team ID show assignments for all members of that team
  • Accounts with an empty team_id or a value that does not match any shared team have no team-driven assignments from this property
  • If you manually assigned a user to an account, confirm team-based auto-assignment did not replace that relationship for that user (manual pairs are preserved)

Common Issues and Fixes

Query validation fails

Symptoms: Error message when clicking Validate in the query editor.

Common causes:

  • SQL syntax error: Check for missing commas, unclosed quotes, wrong table/column names. The error message usually includes the specific SQL error.
  • Connection issue: The data source may be unreachable. Test the connection in Configuration > Integrations.
  • Permission denied: The database user may lack SELECT privileges on the table. Check grants.
  • SOQL/HS block errors: Ensure SOQL_START has a matching SOQL_END. Check that JSON in HS blocks is valid. Blocks cannot be nested.

No accounts appear after refresh

Symptoms: Accounts View is empty after refreshing the model.

Common causes:

  • Query returns zero rows: Run your query directly against the source and confirm it returns data. Your WHERE clause might be too restrictive.
  • Model is in Draft: Check the model card -- if it says "Draft", it's not active. Edit the model and save as Active.
  • Mapping issue: account_id might not be mapped, or mapped to a column that contains NULLs.
  • Refresh didn't complete: Wait a few minutes and refresh again. Check for any error indicators on the model card.

Duplicate accounts

Symptoms: The same account appears multiple times.

Common causes:

  • Query returns multiple rows per account: If you're joining with deals/contracts, you need GROUP BY on the account ID to aggregate to one row per account. Review the combining contracts section.
  • Non-unique account_id values: Ensure your account_id column truly contains unique values. Run SELECT account_id, COUNT(*) FROM (...) GROUP BY account_id HAVING COUNT(*) > 1 against your query to find duplicates.

Incorrect ARR / amount values

Symptoms: Amount values are wrong -- too high, too low, or zero.

Common causes:

  • Not aggregating: If an account has multiple deals, you need SUM() to get the total. Without it, you'll get only one deal's amount.
  • Wrong column mapped: Verify the amount property is mapped to the correct column (e.g., total_amount, not single_deal_amount).
  • Currency/unit mismatch: Some sources store amounts in cents (divide by 100) or in different currencies.
  • NULL values: Use COALESCE(SUM(amount), 0) to handle accounts with no deals.

Timestamps show as wrong dates or "1970-01-01"

Symptoms: created_at, expires_at, or other dates show January 1, 1970 or obviously wrong dates.

Common causes:

  • Milliseconds instead of seconds: If your source stores Unix timestamps in milliseconds, divide by 1000 in your query: (created_at_ms / 1000) AS created_at
  • String format not recognized: FunnelStory needs Unix seconds, native database timestamps, or RFC 3339 strings. Arbitrary date strings like "Jan 15, 2024" won't work. Convert them in your query. See Timestamp Formatting.
  • Column type mismatch: The column might be typed as VARCHAR instead of TIMESTAMP in your database. Cast it: CAST(date_column AS TIMESTAMP) or convert to Unix seconds.
  • Timezone issues: If dates are off by hours, the timezone might not be specified. Use UTC-aware timestamps or explicit timezone conversion.

CSM auto-assignment not working

Symptoms: Accounts have csm_email values but aren't assigned to CSMs in FunnelStory.

Common causes:

  • Email doesn't match: The email in your data must exactly match the email the user registered with in FunnelStory. Check for case differences, extra spaces, or different email aliases.
  • User not in workspace: The CSM must be invited to and have accepted their invitation to the FunnelStory workspace.
  • Manual assignment exists: Auto-assignment never overwrites manual assignments. If an account was manually assigned to a different CSM, the auto-assignment is skipped.
  • Property name typo: Ensure you're mapping to csm_email (not csm-email or csmEmail).

Parent-child relationships not appearing

Symptoms: parent_account_id is mapped but accounts don't show hierarchy.

Common causes:

  • Parent doesn't exist in model: The parent account must be returned by the same query. If parent_account_id points to an account ID not in your results, the relationship can't be created.
  • Self-referencing: An account cannot be its own parent. Ensure parent_account_id != account_id.
  • Circular reference: Account A is parent of B, and B is parent of A. This is invalid.
  • NULL vs empty string: Accounts without parents should have NULL for parent_account_id, not an empty string.

Data Join columns not appearing

Symptoms: You configured a Data Join but the joined columns aren't available for mapping.

Common causes:

  • Join column mismatch: The values in the left and right join columns must match. For example, if the primary query uses a Salesforce 18-character ID and the secondary uses a 15-character ID, they won't match.
  • Secondary query error: The Data Join's query might be failing. Try validating it independently.
  • Column name collision: If both queries return a column with the same name, the primary query's column takes precedence. Rename columns in the secondary query to avoid collisions.

Model stuck in Draft / "Missing Configuration"

Symptoms: The model card shows "Draft" or lists missing configuration items.

Common causes:

  • No data source configured: The model needs a connection and query.
  • Missing required mapping: account_id must be mapped to a column.
  • Empty query: The query field is blank.
  • Join misconfigured: A Data Join exists but is missing its query or join columns.

To fix: edit the model, complete any missing fields, and save as Active.


Refresh Intervals and Data Freshness

  • Hourly refresh: Data is at most 1 hour old. Good for CRM data that changes frequently.
  • Daily refresh: Data is at most 24 hours old. Good for warehouse data that's updated on a schedule.

You can always trigger a manual refresh from the model card. During a refresh, the previous data remains visible -- it's replaced once the new refresh completes successfully. If a refresh fails, the previous data is preserved.


Getting Help

If you've gone through this troubleshooting guide and the issue persists:

  1. Check the query independently: Run your query directly against the source system to verify it returns expected results
  2. Simplify: Start with a minimal query (just account_id, name, created_at) and add fields incrementally
  3. Check mappings: Edit the model and review that each property is mapped to the correct column
  4. Review field types: Ensure timestamps are in a supported format, booleans are true/false or 1/0, and amounts are numeric

Next Steps

Once your Account model is verified and working:

  • Configure the Users model to link users to accounts
  • Set up Product Activity models to track user engagement
  • Connect Support Ticket or Conversation models for customer support data