Non-product activity
Non-product activity (NPA) models capture events that are not core in-app product usage: support-adjacent actions, marketing engagement, docs visits, emails, or any other stream you want on the account timeline without labeling it as product activity.
Prerequisites
Configure the Accounts model. Map user_id when the event is attributable to a person and you want user-level joins; otherwise some rows may be account-only if your pipeline supports it.
Model keys
| Property | Type | Key? | Description |
|---|---|---|---|
activity_id | string | yes | Unique identifier for the event. |
account_id | string | yes | Account the event belongs to. |
Default properties
| Property | Type | Description |
|---|---|---|
user_id | string | User associated with the event, if known. |
timestamp | timestamp | When the event occurred. |
Optional columns can be mapped to custom properties for filtering or reporting where supported.
Activities
Rows feed Activity occurred timeline events for this model’s name, similar to other activity-shaped models.
Configure
- Configuration → Data models → Add model → Non-product activity.
- Choose a connection and provide a query or managed source.
- Map to
activity_id,account_id, and default properties. - Validate, save, refresh, then check an account timeline.
Supported connections for this model type include warehouses, databases, HubSpot, Salesforce, Segment, SES-backed pipelines, and others per your workspace—see Data connections.
HubSpot page views and marketing activity
If you use HubSpot, you can bring page view and similar marketing events into FunnelStory as non-product activities. That requires:
- HubSpot tracking on your marketing site, product surfaces, and documentation so page views are collected.
- Visitor identify — HubSpot must associate page views with a known contact email for events to attach to contacts you can sync. Use HubSpot’s tracking API
identify(for example after login) so prior page views can be backfilled to the contact. - A HubSpot connection in FunnelStory with a non-product activity (or activity) model whose query returns those events with ids and account (or user) linkage consistent with your accounts and users models.
Identify visitors (tracking code)
After the HubSpot tracking snippet loads, call identify with the user’s email when you know it (for example post-authentication):
_hsq.push([
'identify',
{
email: 'user@example.com',
},
]);
See HubSpot’s documentation: Identify a visitor.
Single-page applications
For SPAs, trigger page view tracking on route changes:
_hsq.push(['trackPageView']);
See Track page view.
Install the snippet
Use the tracking code from HubSpot Settings → Tracking & analytics → Tracking code. HubSpot’s guide: Install the HubSpot tracking code.
Map into FunnelStory
Your model query should return stable activity_id, account_id (and user_id / timestamp) consistent with how you resolve HubSpot contacts to accounts—often via email alignment with the users model or account-level mapping rules. Validate mappings and refresh the model; then confirm events on an account timeline.
For the HubSpot connection itself, see HubSpot.
Related
- Product & activity models
- Data models overview
- Conversations (for chat-style channels)