What happened after people attended
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
What happened after people registered for, attended or watched your webinars, read from your connected CRM or AMS (system). For a company: sales pipeline created and closed won on accounts that attended, and accounts that became customers. For an association: people who became members, members who renewed (with the renewal rate of members who did not attend, to compare) and lapsed members who came back. For an event organizer: exhibitor and sponsorship contracts from companies that attended. A deal or membership counts when it starts within window_days (default 180) after the first touch, once per account (or person). method says how it was counted in one sentence; it is association, not credit. With no CRM or AMS connected, only touched is filled and not_tracked says what to connect. Defaults to the last 12 months. Read-only. Requires read:marketing. Also at GET /v1/marketing/results/outcomes.
Request example
curl --request GET \ --url 'https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results/outcomes' \ --header 'x-access-token: <api-token>'const response = await fetch('https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results/outcomes', { method: 'GET', headers: { "x-access-token": "<api-token>" },});
const data = await response.json();console.log(data);import requests
response = requests.request( "GET", "https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results/outcomes", headers={ "x-access-token": "<api-token>" },)
print(response.json())<?php
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results/outcomes", CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => [ "x-access-token: <api-token>", ],]);
$response = curl_exec($curl);curl_close($curl);
echo $response;package main
import ( "fmt" "io" "net/http")
func main() { req, _ := http.NewRequest("GET", "https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results/outcomes", nil) req.Header.Add("x-access-token", "<api-token>")
res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://public-api.sessionboard.com/v1/organization/{orgId}/marketing/results/outcomes")) .header("x-access-token", "<api-token>") .method("GET", HttpRequest.BodyPublishers.noBody()) .build();
HttpResponse<String> response = HttpClient.newHttpClient() .send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());Try it
Response headers
Authorizations
x-access-tokenstringheaderOrganization API token. Generate from Organization Settings → API Tokens.
AuthorizationBearer <token>headerorOAuth 2.1 access token. Obtained via the OAuth PKCE flow at
/oauth/token.
Send one of these. See Authentication.
Path parameters
orgIdstringpathrequiredYour organization ID. Any other organization returns
404.
Query parameters
eventIdintegerqueryOne webinar. Leave out for every webinar in the period.
fromstring<date>queryStart of the period,
YYYY-MM-DD.tostring<date>queryEnd of the period,
YYYY-MM-DD, inclusive.groupBystringqueryWhat each row of
rowsis.- Allowed values
"topic", "webinar", "account"- Default
"topic"
targetAccountsstringquerytrue: only your target accounts.- Allowed values
"true", "false"
Responses
200application/json
OK
payloadWebinarOutcomesReportFields every webinar report carries.
Show child attributes
org_kindstring | nullCompany, association or event organizer.
nulluntil your organization sets it;labelsare then neutral.- Allowed values
"corporate", "association", "organizer", null
labelsOrgKindLabelsYour organization's own words, chosen by
org_kind. Use them for every word about people, organizations and money. For examplepeople_knownisCustomersfor a company,Membersfor an association andExhibitors and sponsorsfor an event organizer.Show child attributes
kind_namestring- Example
"Association"
people_knownstring- Example
"Members"
people_known_onestring- Example
"Member"
people_otherstring- Example
"Nonmembers"
organizationsstring- Example
"Member organizations"
organization_onestring- Example
"Member organization"
ownerstring- Example
"Staff contact"
system_of_recordstring- Example
"AMS"
questions_titlestring- Example
"Joining and renewal questions nobody has followed up"
outcomes_titlestring- Example
"Membership from people who attended"
createdstring- Example
"Became members"
closedstring- Example
"Renewed"
becamestring- Example
"Lapsed members back"
in_the_roomstring- Example
"In the room: annual dues of members who attended"
periodobjectShow child attributes
fromstring<date>tostring<date>
as_ofstring<date-time> | nullWhen the CRM or AMS was last read.
nullwhen nothing is connected.not_trackedobject[]What this report cannot measure, one plain sentence each.
Show child attributes
keystringreasonstring
truncatedbooleantruewhen the list was capped;<list>_totalthen gives the full count.systemstring | null- Allowed values
"hubspot", "salesforce", "fonteva", "nimble", null
window_daysinteger- Example
180
totalsobjectShow child attributes
touchedintegerAccounts (company, event organizer) or people (association) who registered, attended or watched.
createdWebinarMoney | nullShow child attributes
countintegeramountnumber | nullcurrencystring | null- Example
"USD"
closedWebinarMoney | nullShow child attributes
countintegeramountnumber | nullcurrencystring | null- Example
"USD"
becameobject | nullShow child attributes
countinteger
renewedobject | nullAssociations only.
Show child attributes
countintegerofintegerratenumberrate_not_attendednumber | null
in_the_roomWebinarMoney | nullShow child attributes
countintegeramountnumber | nullcurrencystring | null- Example
"USD"
rows_totalintegerrowsobject[]One row per topic, webinar or account (
groupBy), at most 25.Show child attributes
keystringnamestringtouchedintegercreatedWebinarMoney | nullShow child attributes
countintegeramountnumber | nullcurrencystring | null- Example
"USD"
closedWebinarMoney | nullShow child attributes
countintegeramountnumber | nullcurrencystring | null- Example
"USD"
becameobject | nullShow child attributes
countinteger
renewedobject | nullowner_namestring | nullfirst_touchstring<date> | nulldatestring<date> | nullWith
groupBy=webinar: the webinar date.webinarsinteger | null
methodstringHow it was counted, in one sentence ending "Association, not credit."
- Example
"Deals created on an account within 180 days after someone there registered for or watched a webinar. Association, not credit."
storyResultsStoryThe report as a narrative, ready to say back or to turn into slides. Every number in it is a field of the same response, named in
cites(paths such astotals.registrationsorchannels[0].share). Nothing is estimated or taken from outside Sessionboard; what the data cannot support is listed inmissing. Attendees are never named.Show child attributes
versioninteger- Example
1
kindstring- Allowed values
"event", "webinar", "org", "sponsor", "advocacy", "field_event", "webinar_outcomes"
titlestringheadlineStoryClaimShow child attributes
textstringcitesstring[]
findingsobject[]- Max items
5
Show child attributes
textstringcitesstring[]idstringvaluenumber | null
driversStoryClaim[]Show child attributes
textstringcitesstring[]
next_moveobject | nullShow child attributes
textstringwhystringcitesstring[]
sectionsobject[]One slide each.
Show child attributes
titlestringbulletsStoryClaim[]Show child attributes
textstringcitesstring[]
chartobject | nullShow child attributes
typestring- Allowed values
"bar", "funnel", "kpi"
titlestringxstring- Example
"label"
ystring- Example
"value"
dataobject[]Show child attributes
labelstringvaluenumber
citesstring
missingstring[]rulesstring
403
SCOPE_REQUIRED— the token lacksread:marketing(reads) orwrite:marketing(writes).ORG_WIDE_TOKEN_REQUIRED— the token is restricted to particular events; this operation reads the whole organization.FORBIDDEN— the organization's plan does not include Marketing, or the token's user cannot change goals (writes need an organization admin or the organization settings permission).
404
The event is not in your organization.
Response examples
{ "payload": { "org_kind": "corporate", "labels": { "kind_name": "Association", "people_known": "Members", "people_known_one": "Member", "people_other": "Nonmembers", "organizations": "Member organizations", "organization_one": "Member organization", "owner": "Staff contact", "system_of_record": "AMS", "questions_title": "Joining and renewal questions nobody has followed up", "outcomes_title": "Membership from people who attended", "created": "Became members", "closed": "Renewed", "became": "Lapsed members back", "in_the_room": "In the room: annual dues of members who attended" }, "period": { "from": "2026-01-15", "to": "2026-01-15" }, "as_of": "2026-01-15T09:30:00Z", "not_tracked": [ { "key": "<string>", "reason": "<string>" } ], "truncated": true, "system": "hubspot", "window_days": 180, "totals": { "touched": 123, "created": { "count": 123, "amount": 123.45, "currency": "USD" }, "closed": { "count": 123, "amount": 123.45, "currency": "USD" }, "became": { "count": 123 }, "renewed": { "count": 123, "of": 123, "rate": 123.45, "rate_not_attended": 123.45 }, "in_the_room": { "count": 123, "amount": 123.45, "currency": "USD" } }, "rows_total": 123, "rows": [ { "key": "<string>", "name": "<string>", "touched": 123, "created": { "count": 123, "amount": 123.45, "currency": "USD" }, "closed": { "count": 123, "amount": 123.45, "currency": "USD" }, "became": { "count": 123 }, "renewed": {}, "owner_name": "<string>", "first_touch": "2026-01-15", "date": "2026-01-15", "webinars": 123 } ], "method": "Deals created on an account within 180 days after someone there registered for or watched a webinar. Association, not credit.", "story": { "version": 1, "kind": "event", "title": "<string>", "headline": { "text": "<string>", "cites": [ "<string>" ] }, "findings": [ { "text": "<string>", "cites": [ "<string>" ], "id": "<string>", "value": 123.45 } ], "drivers": [ { "text": "<string>", "cites": [ "<string>" ] } ], "next_move": { "text": "<string>", "why": "<string>", "cites": [ "<string>" ] }, "sections": [ { "title": "<string>", "bullets": [ { "text": "<string>", "cites": [ null ] } ], "chart": { "type": "bar", "title": "<string>", "x": "label", "y": "value", "data": [ { "label": null, "value": null } ], "cites": "<string>" } } ], "missing": [ "<string>" ], "rules": "<string>" } }}