changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "additionalProperties": {},
+ "properties": {
+ "channels": {
+ "description": "Activity per channel.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "id": {
+ "description": "linkedin, email, x, instagram or whatsapp.",
+ "type": "string"
+ },
+ "invites": {
+ "description": "Connection requests sent on it (LinkedIn only).",
+ "type": "number"
+ },
+ "messages": {
+ "description": "Messages sent on it in the window.",
+ "type": "number"
+ },
+ "name": {
+ "description": "The channel's name for the customer.",
+ "type": "string"
+ },
+ "touched": {
+ "description": "People contacted on it in the window.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "messages",
+ "touched",
+ "invites"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "coverage": {
+ "additionalProperties": {},
+ "description": "What is not fully tracked.",
+ "properties": {
+ "clicks": {
+ "description": "unavailable: clicks are not tracked; never report them as zero.",
+ "type": "string"
+ },
+ "meetings": {
+ "description": "partial: some meetings are not captured, so treat meetings as a floor.",
+ "type": "string"
+ },
+ "unmatchedSendEvents": {
+ "description": "Sends in the window that could not be matched to a lead, so are left out of per-lead figures.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "clicks",
+ "meetings",
+ "unmatchedSendEvents"
+ ],
+ "type": "object"
+ },
+ "daily": {
+ "description": "Activity per day across the window, oldest first.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "date": {
+ "description": "The day (YYYY-MM-DD) in the report timezone.",
+ "type": "string"
+ },
+ "invites": {
+ "description": "Connection requests sent that day.",
+ "type": "number"
+ },
+ "messages": {
+ "description": "Messages sent that day.",
+ "type": "number"
+ },
+ "replies": {
+ "description": "First replies that day.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "date",
+ "messages",
+ "replies",
+ "invites"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "messages": {
+ "description": "Each message step's results. The message text is never returned.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "channel": {
+ "description": "linkedin, email, x, instagram or whatsapp.",
+ "type": "string"
+ },
+ "cohortReplies": {
+ "description": "How many of those mature people replied within 14 days.",
+ "type": "number"
+ },
+ "connections": {
+ "description": "Connection requests accepted in the window.",
+ "type": "number"
+ },
+ "enrolled": {
+ "description": "People currently assigned to a Sequence, all-time (not limited to the window).",
+ "type": "number"
+ },
+ "id": {
+ "description": "The Play, Sequence or workspace id.",
+ "type": "string"
+ },
+ "invites": {
+ "description": "LinkedIn connection requests sent in the window.",
+ "type": "number"
+ },
+ "mature": {
+ "description": "People first messaged in the window whose full 14-day reply window has passed; the base of replyRate.",
+ "type": "number"
+ },
+ "meetings": {
+ "description": "Meetings recorded in the window; coverage is partial.",
+ "type": "number"
+ },
+ "messages": {
+ "description": "Messages sent in the window, across channels.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Its name.",
+ "type": "string"
+ },
+ "rankable": {
+ "description": "True when it has enough mature people (minimumRankingSample) to compare.",
+ "type": "boolean"
+ },
+ "replies": {
+ "description": "People whose first reply came in the window.",
+ "type": "number"
+ },
+ "replyRate": {
+ "description": "cohortReplies over mature, 0 to 1; null when no one is mature yet (never read as zero).",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "sequenceName": {
+ "description": "The Sequence the step belongs to.",
+ "type": "string"
+ },
+ "touched": {
+ "description": "People contacted at least once in the window.",
+ "type": "number"
+ },
+ "variant": {
+ "description": "The A/B variant label; null when the step has none.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "enrolled",
+ "touched",
+ "invites",
+ "connections",
+ "messages",
+ "replies",
+ "meetings",
+ "mature",
+ "cohortReplies",
+ "replyRate",
+ "sequenceName",
+ "channel",
+ "variant",
+ "rankable"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "methodology": {
+ "additionalProperties": {},
+ "description": "How results are counted.",
+ "properties": {
+ "enrolled": {
+ "description": "How enrolled is counted: all_time_current_assignment.",
+ "type": "string"
+ },
+ "minimumRankingSample": {
+ "description": "Mature people a result needs before it is ranked.",
+ "type": "number"
+ },
+ "replies": {
+ "description": "How replies are counted: first_recorded_reply (one per person).",
+ "type": "string"
+ },
+ "replyAttribution": {
+ "description": "Which message a reply is attributed to: last_message_before_first_reply.",
+ "type": "string"
+ },
+ "responseDays": {
+ "description": "Days a person is watched for a reply before counting as mature.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "responseDays",
+ "minimumRankingSample",
+ "enrolled",
+ "replies",
+ "replyAttribution"
+ ],
+ "type": "object"
+ },
+ "period": {
+ "additionalProperties": {},
+ "description": "The exact window read.",
+ "properties": {
+ "label": {
+ "description": "The window's dates in words, for the customer.",
+ "type": "string"
+ },
+ "since": {
+ "description": "Start of the window (ISO time, inclusive).",
+ "type": "string"
+ },
+ "until": {
+ "description": "End of the window (ISO time, exclusive): when the cached report was built, so recent activity may be missing.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "since",
+ "until",
+ "label"
+ ],
+ "type": "object"
+ },
+ "plays": {
+ "description": "Each Play's results, with its Sequences' results in sequences.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "cohortReplies": {
+ "description": "How many of those mature people replied within 14 days.",
+ "type": "number"
+ },
+ "connections": {
+ "description": "Connection requests accepted in the window.",
+ "type": "number"
+ },
+ "enrolled": {
+ "description": "People currently assigned to a Sequence, all-time (not limited to the window).",
+ "type": "number"
+ },
+ "id": {
+ "description": "The Play, Sequence or workspace id.",
+ "type": "string"
+ },
+ "invites": {
+ "description": "LinkedIn connection requests sent in the window.",
+ "type": "number"
+ },
+ "mature": {
+ "description": "People first messaged in the window whose full 14-day reply window has passed; the base of replyRate.",
+ "type": "number"
+ },
+ "meetings": {
+ "description": "Meetings recorded in the window; coverage is partial.",
+ "type": "number"
+ },
+ "messages": {
+ "description": "Messages sent in the window, across channels.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Its name.",
+ "type": "string"
+ },
+ "replies": {
+ "description": "People whose first reply came in the window.",
+ "type": "number"
+ },
+ "replyRate": {
+ "description": "cohortReplies over mature, 0 to 1; null when no one is mature yet (never read as zero).",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "sequences": {
+ "description": "Results of each Sequence the Play feeds.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "cohortReplies": {
+ "description": "How many of those mature people replied within 14 days.",
+ "type": "number"
+ },
+ "connections": {
+ "description": "Connection requests accepted in the window.",
+ "type": "number"
+ },
+ "enrolled": {
+ "description": "People currently assigned to a Sequence, all-time (not limited to the window).",
+ "type": "number"
+ },
+ "id": {
+ "description": "The Play, Sequence or workspace id.",
+ "type": "string"
+ },
+ "invites": {
+ "description": "LinkedIn connection requests sent in the window.",
+ "type": "number"
+ },
+ "mature": {
+ "description": "People first messaged in the window whose full 14-day reply window has passed; the base of replyRate.",
+ "type": "number"
+ },
+ "meetings": {
+ "description": "Meetings recorded in the window; coverage is partial.",
+ "type": "number"
+ },
+ "messages": {
+ "description": "Messages sent in the window, across channels.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Its name.",
+ "type": "string"
+ },
+ "replies": {
+ "description": "People whose first reply came in the window.",
+ "type": "number"
+ },
+ "replyRate": {
+ "description": "cohortReplies over mature, 0 to 1; null when no one is mature yet (never read as zero).",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "touched": {
+ "description": "People contacted at least once in the window.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "enrolled",
+ "touched",
+ "invites",
+ "connections",
+ "messages",
+ "replies",
+ "meetings",
+ "mature",
+ "cohortReplies",
+ "replyRate"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "touched": {
+ "description": "People contacted at least once in the window.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "enrolled",
+ "touched",
+ "invites",
+ "connections",
+ "messages",
+ "replies",
+ "meetings",
+ "mature",
+ "cohortReplies",
+ "replyRate",
+ "sequences"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "range": {
+ "description": "The window read: 7d, 30d or 90d.",
+ "type": "string"
+ },
+ "rankings": {
+ "additionalProperties": {},
+ "description": "Highest and lowest eligible results; never turn null into zero.",
+ "properties": {
+ "messages": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "highest": {
+ "additionalProperties": {},
+ "description": "The message step with the highest reply rate.",
+ "properties": {
+ "cohortReplies": {
+ "description": "How many of them replied.",
+ "type": "number"
+ },
+ "id": {
+ "description": "The Play or message step id.",
+ "type": "string"
+ },
+ "mature": {
+ "description": "Mature people behind the rate.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Its name (for a message step, the Sequence name and step name).",
+ "type": "string"
+ },
+ "replyRate": {
+ "description": "Its reply rate, 0 to 1.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "replyRate",
+ "mature",
+ "cohortReplies"
+ ],
+ "type": "object"
+ },
+ "lowest": {
+ "additionalProperties": {},
+ "description": "The message step with the lowest reply rate.",
+ "properties": {
+ "cohortReplies": {
+ "description": "How many of them replied.",
+ "type": "number"
+ },
+ "id": {
+ "description": "The Play or message step id.",
+ "type": "string"
+ },
+ "mature": {
+ "description": "Mature people behind the rate.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Its name (for a message step, the Sequence name and step name).",
+ "type": "string"
+ },
+ "replyRate": {
+ "description": "Its reply rate, 0 to 1.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "replyRate",
+ "mature",
+ "cohortReplies"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "highest",
+ "lowest"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Highest and lowest reply-rate rankable message steps; null when insufficient or tied."
+ },
+ "plays": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "highest": {
+ "additionalProperties": {},
+ "description": "The Play with the highest reply rate.",
+ "properties": {
+ "cohortReplies": {
+ "description": "How many of them replied.",
+ "type": "number"
+ },
+ "id": {
+ "description": "The Play or message step id.",
+ "type": "string"
+ },
+ "mature": {
+ "description": "Mature people behind the rate.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Its name (for a message step, the Sequence name and step name).",
+ "type": "string"
+ },
+ "replyRate": {
+ "description": "Its reply rate, 0 to 1.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "replyRate",
+ "mature",
+ "cohortReplies"
+ ],
+ "type": "object"
+ },
+ "lowest": {
+ "additionalProperties": {},
+ "description": "The Play with the lowest reply rate.",
+ "properties": {
+ "cohortReplies": {
+ "description": "How many of them replied.",
+ "type": "number"
+ },
+ "id": {
+ "description": "The Play or message step id.",
+ "type": "string"
+ },
+ "mature": {
+ "description": "Mature people behind the rate.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Its name (for a message step, the Sequence name and step name).",
+ "type": "string"
+ },
+ "replyRate": {
+ "description": "Its reply rate, 0 to 1.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "replyRate",
+ "mature",
+ "cohortReplies"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "highest",
+ "lowest"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Highest and lowest reply-rate Plays among those with enough mature people; null when insufficient or tied."
+ }
+ },
+ "required": [
+ "plays",
+ "messages"
+ ],
+ "type": "object"
+ },
+ "scope": {
+ "description": "workspace or team.",
+ "type": "string"
+ },
+ "team": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "name": {
+ "description": "The Team's name.",
+ "type": "string"
+ },
+ "workspaces": {
+ "description": "Each workspace's results.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "cohortReplies": {
+ "description": "How many of those mature people replied within 14 days.",
+ "type": "number"
+ },
+ "connections": {
+ "description": "Connection requests accepted in the window.",
+ "type": "number"
+ },
+ "enrolled": {
+ "description": "People currently assigned to a Sequence, all-time (not limited to the window).",
+ "type": "number"
+ },
+ "id": {
+ "description": "The Play, Sequence or workspace id.",
+ "type": "string"
+ },
+ "invites": {
+ "description": "LinkedIn connection requests sent in the window.",
+ "type": "number"
+ },
+ "mature": {
+ "description": "People first messaged in the window whose full 14-day reply window has passed; the base of replyRate.",
+ "type": "number"
+ },
+ "meetings": {
+ "description": "Meetings recorded in the window; coverage is partial.",
+ "type": "number"
+ },
+ "messages": {
+ "description": "Messages sent in the window, across channels.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Its name.",
+ "type": "string"
+ },
+ "replies": {
+ "description": "People whose first reply came in the window.",
+ "type": "number"
+ },
+ "replyRate": {
+ "description": "cohortReplies over mature, 0 to 1; null when no one is mature yet (never read as zero).",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "touched": {
+ "description": "People contacted at least once in the window.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "enrolled",
+ "touched",
+ "invites",
+ "connections",
+ "messages",
+ "replies",
+ "meetings",
+ "mature",
+ "cohortReplies",
+ "replyRate"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "name",
+ "workspaces"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Team scope only: the Team and each workspace's results; null for workspace scope."
+ },
+ "timezone": {
+ "description": "The timezone days are counted in.",
+ "type": "string"
+ },
+ "totals": {
+ "additionalProperties": {},
+ "description": "Results across everything in scope.",
+ "properties": {
+ "cohortReplies": {
+ "description": "How many of those mature people replied within 14 days.",
+ "type": "number"
+ },
+ "connections": {
+ "description": "Connection requests accepted in the window.",
+ "type": "number"
+ },
+ "enrolled": {
+ "description": "People currently assigned to a Sequence, all-time (not limited to the window).",
+ "type": "number"
+ },
+ "invites": {
+ "description": "LinkedIn connection requests sent in the window.",
+ "type": "number"
+ },
+ "mature": {
+ "description": "People first messaged in the window whose full 14-day reply window has passed; the base of replyRate.",
+ "type": "number"
+ },
+ "meetings": {
+ "description": "Meetings recorded in the window; coverage is partial.",
+ "type": "number"
+ },
+ "messages": {
+ "description": "Messages sent in the window, across channels.",
+ "type": "number"
+ },
+ "replies": {
+ "description": "People whose first reply came in the window.",
+ "type": "number"
+ },
+ "replyRate": {
+ "description": "cohortReplies over mature, 0 to 1; null when no one is mature yet (never read as zero).",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "touched": {
+ "description": "People contacted at least once in the window.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "enrolled",
+ "touched",
+ "invites",
+ "connections",
+ "messages",
+ "replies",
+ "meetings",
+ "mature",
+ "cohortReplies",
+ "replyRate"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "range",
+ "scope",
+ "timezone",
+ "period",
+ "totals",
+ "daily",
+ "plays",
+ "messages",
+ "channels",
+ "team",
+ "rankings",
+ "methodology",
+ "coverage"
+ ],
+ "type": "object"
+}