Skip to main content

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

PropertyTypeKey?Description
activity_idstringyesUnique identifier for the event.
account_idstringyesAccount the event belongs to.

Default properties

PropertyTypeDescription
user_idstringUser associated with the event, if known.
timestamptimestampWhen 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

  1. Configuration → Data models → Add model → Non-product activity.
  2. Choose a connection and provide a query or managed source.
  3. Map to activity_id, account_id, and default properties.
  4. 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:

  1. HubSpot tracking on your marketing site, product surfaces, and documentation so page views are collected.
  2. 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.
  3. 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.