Gong model

Calls

Every Gong call with its rep, participants, talk time, Gong's interaction statistics and the CRM records it is linked to, on one row.

Grain
one row per gong_account x call
Built from
  1. 6
    Raw tables
  2. 6
    Staging
  3. 1
    Core
  4. 1
    Analytics
Reads from Gong
callcall_context_integrationcall_interactioncall_participantcall_speakeruser
Ships as
Weld and dbt SQL, open source on GitHub
core.gong.calls
1-- core.gong.calls
2-- Every Gong call with its rep, participants, talk time, Gong's interaction
3-- statistics and the CRM records it is linked to, on one row.
4--
5-- Grain: one row per gong_account x call.
6-- Depends on: staging.gong.call, .call_participant, .call_speaker,
7--             .call_interaction, .call_crm_object, .user
8--
9-- Every child table is aggregated to call grain in its own CTE BEFORE the joins.
10-- Joining participants and speakers raw would multiply talk time by the number of
11-- participants.
12--
13-- THE REP is the call's primary_user_id: the Gong user who owns the call (usually
14-- the host). It is the dimension Gong's own Team Stats use.
15--
16-- TWO KINDS OF TALK RATIO:
17--   rep_talk_ratio / company_talk_ratio   computed here from per-speaker talk
18--       seconds: the rep's (or everyone internal's) share of all talk time on the
19--       call. Always 0 to 1, and auditable from call_speaker.
20--   gong_talk_ratio and the other gong_* columns   Gong's own interaction
21--       statistics, passed through as Gong reports them. Use these when the number
22--       has to match the Gong UI; see the README on units.
23
24WITH participants AS (
25    SELECT
26        gong_account,
27        call_id,
28        COUNT(*)                              AS participants,
29        COUNTIF(affiliation = 'Internal')     AS internal_participants,
30        COUNTIF(affiliation = 'External')     AS external_participants
31    FROM {{staging.gong.call_participant}}
32    GROUP BY 1, 2
33),
34
35speaker_affiliation AS (
36    -- A speaker counts as internal if Gong tied them to a user or the matching
37    -- participant is affiliated Internal.
38    SELECT
39        s.gong_account,
40        s.call_id,

This model and the 7 it depends on. Deploy them together; refs like {{staging.…}} resolve to the matching folders in Weld, and the dbt view uses source() and ref().

Notes

How it counts. And where it stops.

Every child table is aggregated to call grain in its own CTE BEFORE the joins. Joining participants and speakers raw would multiply talk time by the number of participants. THE REP is the call's primary_user_id: the Gong user who owns the call (usually the host). It is the dimension Gong's own Team Stats use. TWO KINDS OF TALK RATIO: rep_talk_ratio / company_talk_ratio computed here from per-speaker talk seconds: the rep's (or everyone internal's) share of all talk time on the call. Always 0 to 1, and auditable from call_speaker. gong_talk_ratio and the other gong_* columns Gong's own interaction statistics, passed through as Gong reports them. Use these when the number has to match the Gong UI; see the README on units.

Raw tables it reads

  • raw.gong.call
  • raw.gong.call_context_integration
  • raw.gong.call_interaction
  • raw.gong.call_participant
  • raw.gong.call_speaker
  • raw.gong.user

Put Gong in front
of your agents.

Connect Gong, deploy the models, and ask questions in Claude, Cursor or ChatGPT. Free for 14 days, no credit card.