Skip to content

Activities

Activities are the individual event records that SalesDash tracks — a call made, a deal closed, a meeting held, ad spend recorded. They are the raw material from which metrics are calculated.

Types of activities

SalesDash has five activity types:

Agent Activities are events performed by a specific agent — the most common type. They carry a type label (e.g. call, meeting, or a custom type defined by the provider), a moment, a value, and a contact key. Examples: a meeting booked, a form submitted, a pipeline stage reached.

Calls are voice calls with a duration, a result, and contact information. Used when the provider is a power dialer or telephony platform. Calls have additional fields optimised for telephony data.

Sales are closed deals with a proposition, contract value, and optional commission calculation. Used for revenue-based metrics. Sales have additional fields for financial data.

Periods are time intervals with a start and end timestamp. Used to represent ongoing states such as currently open deals or currently active customers.

Anonymous Activities are events not attributed to any specific agent. Used for data that exists at a project or campaign level rather than an individual level — ad spend is a typical example. Anonymous activities can still contribute to metrics, but they are not associated with an agent's performance.

What an agent activity records

Every agent activity records:

  • Type — what kind of event it was (e.g. call, meeting, or a custom type defined by the provider)
  • Agent — who performed it (resolved from the external identity at sync time)
  • Moment — when it occurred
  • Value — a numeric measure associated with the event (e.g. deal amount in euros)
  • Provider — which external system it came from
  • Contact key — an identifier for the customer or contact (used for contact-based metrics like unique leads touched)
  • External ID — the ID of the originating record in the external system; used to match the activity on subsequent syncs so it can be updated rather than duplicated

Where activities come from

Activities are created by providers — either via a scheduled sync process or a webhook. Each activity carries an external_id and a provider_id that identify the source record. When the same combination is encountered again on a subsequent sync, SalesDash updates the existing activity rather than creating a duplicate.

Note that external_id does not have to map one-to-one with a record in the external system. A provider can construct a composite external ID by joining multiple components with | as a separator — this is the standard convention used across SalesDash integrations, including adapters like Make and Zapier.

Two common cases where this matters:

  • Multi-phase records — if a single deal passes through five pipeline stages and each transition should be a separate activity, use <deal_id> | <phase_id> so each transition gets its own unique ID.
  • Mixed record types from one provider — if the same provider imports both deals and introductions, their numeric IDs may collide (deal #5 and introduction #5 are different records). Including the record type as a component — deal | 5 and introduction | 5 — keeps them distinct.

How activities drive metrics

A metric definition specifies what to aggregate — the source type, the aggregator (count, sum, average, etc.), any filters — and how to display the result (format, unit, phrasing). It does not specify who to aggregate for, over which period, or with which additional filters.

That context is supplied by whatever uses the metric. A competition uses the metric per agent over the competition's time window. A team goal uses it summed across the team. A dashboard widget uses it over a configurable date range. The same metric definition can power all of these simultaneously, each producing a different result because the surrounding context differs.

Because agent activities are linked to agents through external identities, only activities from linked identities contribute to agent-level results. Activities from unlinked external identities are stored but not counted.