Analytics

Commercial analytics

Sales over the period (the Reports page "Sales" tab). Signatures and signed revenue are dated by confirmed_at; opportunities, losses and the conversion rate by the event's creation (creation cohort). Conversion rate = confirmed / closed options (confirmed + lost + cancelled). The pipeline is the open options now, whatever the period, valued from their latest quote or expected revenue and weighted by their win probability.

Changed in 1.3.0: the legacy top-level fields are kept but use these definitions: total_events_created = opportunities created in the period, total_confirmed = those confirmed, conversion_rate = the conversion rate above (rounded, 0 when no option is closed), total_revenue_excl_tax = revenue signed in the period, total_expected_revenue = value of the open pipeline. Amounts are in the workspace currency (per-currency breakdowns were removed). Role permission: reports.view.

get/analytics/commercial

Request

  • Base URL: https://joinways.app/api/v1
  • URL: https://joinways.app/api/v1/analytics/commercial
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://joinways.app/oauth/authorize, token URL https://joinways.app/api/oauth/token, scopes: mcp.read)

Query parameters

fromstring date
Example:2026-01-01

First day included (YYYY-MM-DD, workspace time zone). Give together with to; without both, the period is the last 6 full months plus the current month (as on the Reports page). A full ISO timestamp is accepted and only its date is kept. Periods longer than 7 years are shortened to the 7 years ending on to; the effective period is echoed in period.

tostring date
Example:2026-06-30

Last day included (YYYY-MM-DD). Give together with from.

venuesstring
Example:8f1c2a4e-…,3a90b1c2-…

Comma-separated venue ids (GET /venues) to restrict the report to. Omit for all venues. An id that is not a venue of the workspace is refused with 400.

compare'year' | 'previous' | 'none'

Comparison period: year (default) = the same days one year earlier; previous = the period of the same length just before; none = no comparison (every previous value is null).

Response

Sales metrics for the period.

venue_idsstring[] nullable

Venue filter applied; null = all venues.

currencystring

Workspace currency of every amount (amounts are excl. tax, 2 decimals).

total_events_createdinteger

Legacy — opportunities created in the period.

total_confirmedinteger

Legacy — of which confirmed.

conversion_rateinteger

Legacy — conversion rate in %, rounded (0 when not computable).

total_revenue_excl_taxnumber

Legacy — revenue signed in the period.

total_expected_revenuenumber

Legacy — value of the open pipeline.

Example response

{
  "period": {
    "timezone": "Europe/Paris"
  },
  "monthly": [
    {
      "month": "2026-07"
    }
  ],
  "by_source": [
    {
      "source_key": "kactus",
      "label": "Kactus"
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.