## Statistics `campaigns.statistics(id) -> CampaignStatisticsResponse` **get** `/campaigns/{id}/statistics` Retrieve the "Statistiques" report for a campaign: the four-tile cascade funnel (appelés → eus en ligne → réels échanges → leads chauds), two secondary tiles, the distribution of exchanges by outcome, the list of hot leads, and data-extraction coverage. All counts are over distinct E.164-normalized phone numbers, and the outcome-based categories derive exclusively from calls.outcome. Cascade percentages are null when their denominator is zero. ### Parameters - `id: String` ### Returns - `class CampaignStatisticsResponse` - `statistics: { campaign, data_extraction, effort, 5 more}` - `campaign: { id, agent_name, first_activity_at, 7 more}` - `id: String` - `agent_name: String` - `first_activity_at: untyped` - `has_activity: bool` - `is_cancelled: bool` - `last_activity_at: untyped` - `max_attempts_per_contact: Float` - `name: String` - `status: :draft | :running | :paused | :completed` - `:draft` - `:running` - `:paused` - `:completed` - `timezone: String` - `data_extraction: { fields, intro}` - `fields: Array[String]` - `intro: String` - `effort: { calls_total, inbound_calls, outbound_attempts}` - `calls_total: Float` - `inbound_calls: Float` - `outbound_attempts: Float` - `funnel: { called, hot_leads, reached, real_exchanges}` - `called: { count, imported_rows}` - `count: Float` - `imported_rows: Float` - `hot_leads: { count, pct_of_reached}` - `count: Float` - `pct_of_reached: Float` - `reached: { count, inbound, outbound, 2 more}` - `count: Float` - `inbound: Float` - `outbound: Float` - `overlap: Float` - `pct_of_called: Float` - `real_exchanges: { count, pct_of_reached}` - `count: Float` - `pct_of_reached: Float` - `hot_lead_outcomes: Array[String]` - `inbound: { unique_callers}` - `unique_callers: Float` - `leads: { hot, warm}` - `hot: Array[{ attempt_id, call_id, direction, 5 more}]` - `attempt_id: String` - `call_id: String` - `direction: :inbound | :outbound` - `:inbound` - `:outbound` - `email: String` - `last_activity_at: untyped` - `name: String` - `phone: String` - `summary: String` - `warm: Array[{ attempt_id, call_id, direction, 5 more}]` - `attempt_id: String` - `call_id: String` - `direction: :inbound | :outbound` - `:inbound` - `:outbound` - `email: String` - `last_activity_at: untyped` - `name: String` - `phone: String` - `summary: String` - `outcome_breakdown: Array[{ count, label, outcome}]` - `count: Float` - `label: String` - `outcome: String` ### Example ```ruby require "revox" revox = Revox::Client.new(api_key: "My API Key") response = revox.campaigns.statistics("id") puts(response) ```