Orum · AsyncAPI Specification

Orum Com Webhooks

Version

View Spec View on GitHub CompanyAISalesSales EngagementSales DialerOutbound SalesSales CoachingConversation IntelligenceTelephonyRevenue OperationsWebhooksParallel DialingSales AutomationAsyncAPIWebhooksEvents

AsyncAPI Specification

orum-com-webhooks.yml Raw ↑
generated: '2026-08-13'
method: searched
source: https://support.orum.com/en-US/orum/article/ART-463-webhooks
spec_type: none
note: >-
  Orum documents an outbound webhook surface but publishes NO AsyncAPI document and no
  OpenAPI. This file is the webhook catalog transcribed from Orum's own public help-center
  article, which is readable without credentials. It corrects the 2026-08-04 profiling pass,
  which recorded webhooks as "sold as an add-on but not publicly documented" — the reference
  exists, it is simply not linked from any developer page and is only reachable from the
  2025-04-14 launch blog post. Nothing here is generated: every field, header, retry number
  and IP below is published by Orum verbatim.
discovery:
  reachable_from:
  - https://www.orum.com/blog/introducing-orum-webhooks-real-time-sales-data-for-any-crm-or-workflow
  - https://support.orum.com/en-US/orum/article/ART-463-webhooks
  not_linked_from:
  - the help-center directory index (the article is absent from all eight published directories)
  - any developer portal (none exists)
  announced: '2025-04-14'
  updated_by_provider: '~2026-03 (article states "Updated 5 months ago" as of 2026-08-13)'

commercial:
  add_on: true
  plans: [Launch, Ascend]
  pricing: contact account representative (no published figure)
  support_model: >-
    Orum states webhooks are "designed to be implemented and supported by your company's
    internal technical resources" and recommends confirming those resources exist before
    purchase.

direction: outbound-only
note_direction: >-
  Orum states webhooks "send data from Orum to your systems — but they don't pull leads or
  contacts into Orum (yet)." There is no inbound/request API of any kind.

configuration:
  surface: in-app only — Settings -> System -> Webhooks
  public_management_api: false
  fields:
  - name: Event Type
    required: true
    note: dropdown; "Call Disposition Added" is the only event published
  - name: Webhook URL
    required: true
    note: destination endpoint, must accept POST
  - name: Webhook Signing Key
    required: true
    note: >-
      customer-chosen value; Orum states it "can be anything you choose, and you may discard
      it on receipt if you don't wish to use a signing key, but something does need to be
      filled out here"
  - name: Description
    required: false

transport:
  method: POST
  content_type: application/json
  expected_response: 2xx
  timeout_seconds: 15
  note_timeout: >-
    Orum instructs endpoints to return 2xx BEFORE operating on the data; a slow handler is
    treated as a timeout and re-delivered.

events:
- name: call-disposition-added
  ui_label: Call Disposition Added
  description: >-
    Emitted when a rep logs a disposition on a completed call; carries the call detail and
    prospect metadata.
  status: published

envelope:
  shape: |
    {
      "event": "call-disposition-added",
      "payload": ...,
      "test": true
    }
  fields:
  - name: event
    type: string
    description: identifier of the event that triggered the webhook
  - name: payload
    type: object
    description: event data; varies by event type
  - name: test
    type: boolean
    description: >-
      present ONLY on requests sent by the TEST WEBHOOK button. Absent on real deliveries.
      Orum instructs consumers to check this flag before processing to avoid ingesting test
      data.

payload_fields:
  source: >-
    Published verbatim as "Call Properties Included in Webhook Payload". Orum documents the
    field list in prose only — no JSON Schema, no example payload, no types are published.
  fields:
  - datetime
  - call duration
  - disposition
  - list name
  - notes
  - objections
  - recording URL
  - user email address
  - recording type
  - inbound or outbound call
  - call transcript
  - prospect name
  - prospect phone number
  dynamic_fields: >-
    If a prospect list was uploaded by CSV, every column imported via that CSV is also
    included in the payload for all prospects on that list — so the payload shape is
    tenant-dependent and not fully knowable from the docs.

security:
  signature:
    header: x-webhook-signature
    algorithm: HMAC-SHA256
    encoding: base64
    signed_value: '{timestamp}.{stringified_body}'
    header_format: 't={timestamp},s={encoded-signature}'
    key: the customer-supplied Webhook Signing Key configured in Orum settings
    replay_window: >-
      Orum recommends rejecting a payload whose timestamp is more than five minutes old.
    verification_sample: node.js, published in the article (crypto.createHmac + timingSafeEqual)
    standards_note: >-
      This is a vendor-specific scheme, not RFC 9421 HTTP Message Signatures and not the
      Standard Webhooks specification. The header format resembles Stripe's Stripe-Signature.
    doc_defect: >-
      The published Node.js sample contradicts its own prose: the prose says reject payloads
      older than five minutes, but the sample compares against 60000 ms (one minute), and the
      snippet opens with `onst crypto = require('crypto')` (a truncated `const`). Recorded as
      observed, not corrected.
  egress_ips:
    note: >-
      Orum states it "may be necessary to whitelist certain IPs in order for webhooks to work
      as expected". No IP-range endpoint or change policy is published.
    addresses:
    - 3.138.92.104
    - 18.116.161.231
    - 3.19.195.170

delivery:
  retry_strategy: exponential backoff with jitter
  max_attempts: 8
  retry_window: 30 minutes
  retried_on: [3xx, 4xx, 5xx, timeout]
  on_exhaustion: event logged as failed in Webhook Logs
  ordering: not documented
  historical_replay: >-
    Not supported. Orum states data is delivered "via the chosen configuration moving forward
    only. There is not an option for historical records at this time."

observability:
  webhook_logs:
    location: Settings -> System -> Webhooks -> VIEW WEBHOOK LOGS
    filters: [Event Type, Date Range]
    columns:
    - ID — unique identifier for the webhook event
    - URL — the destination the webhook was sent to
    - Status — delivered or failed
    - Inserted At — timestamp the event was triggered
    api_access: false

gaps:
- No AsyncAPI, OpenAPI or JSON Schema for the payload — the field list is prose.
- No example payload published, so field names and types must be discovered by receiving one.
- Exactly one event type; no event catalog to grow into.
- No public management API — webhooks can only be created, tested, listed or deleted in the UI.
- CSV-derived columns make the payload tenant-variable and undocumentable from the outside.
- The delete flow is uncertain in Orum's own docs ("button not shown in screenshots; confirm
  if available").

x-evidence:
  fetched: '2026-08-13'
  probes:
  - url: https://support.orum.com/en-US/orum/article/ART-463-webhooks
    status: 200
  - url: https://support.orum.com/orum/article/ART-463-webhooks
    status: 502
    note: the un-localised path the launch blog post links to returns a Vercel 502
  - url: https://www.orum.com/blog/introducing-orum-webhooks-real-time-sales-data-for-any-crm-or-workflow
    status: 200