Act! CRM · AsyncAPI Specification

Act Webhooks

Version

View Spec View on GitHub CRMMarketing AutomationContact ManagementSalesOpportunity ManagementODataSmall BusinessAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: >-
  https://apimta.act.com/act.web.api/ActHooks/Index (Act! WebHooks —
  Notifications) and the Webhooks operations in
  openapi/act-webhooks-api-openapi.yml.
type: Webhooks
asyncapi_published: false
asyncapi_note: >-
  Act! publishes no AsyncAPI document. Probed /asyncapi.yaml, /asyncapi.json and
  the Swiftpage GitHub organization — nothing. The event surface is documented
  in prose plus a REST registration API, so this file is the webhook catalog,
  not a spec.
description: >-
  Act! Web API ships a first-class webhook registration API: a client POSTs a
  webhook describing an entity to monitor, a trigger event, an optional OData
  query to shape the payload, a callback URL and a symmetric callback token.
  Notably, delivery is POLLED, not pushed at the moment of change — the Act!
  Webhook Notifications service polls on an interval (default 900 seconds) and
  then fires callbacks. An integrator expecting real-time semantics from the
  word "webhook" will be surprised: worst-case latency is the polling interval,
  not milliseconds.

availability:
  self_hosted: true
  cloud: false
  cloud_note: >-
    "This is not available in the cloud as of now, but coming soon." Webhooks
    are configured by the Act! installer, which creates or connects to a webhook
    registration database — so today the event surface belongs to self-hosted
    Act! Premium for Web deployments, not Act! Premium Cloud.
  source: https://apimta.act.com/act.web.api/ActHooks/Index

registration:
  endpoint: POST /api/webhooks
  operationId: Webhooks_Post_EE3CCFA8
  spec: openapi/act-webhooks-api-openapi.yml
  request_fields:
    monitor: The entity monitored for notifications.
    triggerEvent: The event that fires the notification.
    queryOption: >-
      Any valid OData query, used to target/filter the webhook and to request
      additional properties in the notification body. Optional. If null or
      blank the notification carries only the default properties. The provider
      warns that repeating a default property inside queryOption can stop the
      webhook firing correctly.
    callbackUrl: The endpoint the notification is POSTed to.
    callbackToken: A symmetric key added to the Authorization header of the callback.
    description: Free-text description of the webhook.

management_operations:
  - operationId: Webhooks_Get_3F017BC6
    method: GET
    path: /api/webhooks
    summary: List registered webhooks (OData query supported).
  - operationId: Webhooks_Get_8857FC56
    method: GET
    path: /api/webhooks/{id}
  - operationId: Webhooks_Put_20B03A3C
    method: PUT
    path: /api/webhooks/{id}
  - operationId: Webhooks_Patch_B8C243E8
    method: PATCH
    path: /api/webhooks/{id}
  - operationId: Webhooks_Delete_649F8293
    method: DELETE
    path: /api/webhooks/{id}
  - operationId: Webhooks_Suspend_A12B132D
    method: PUT
    path: /api/webhooks/{id}/suspend
    summary: Suspend a webhook.
  - operationId: Webhooks_Continue_511537A0
    method: PUT
    path: /api/webhooks/{id}/continue
    summary: Resume a suspended webhook.
  - operationId: Webhooks_PutTokenReset_C1A718D3
    method: PUT
    path: /api/webhooks/reset-token
    summary: Rotate the webhook callback token.

monitors:
  - Activities
  - Companies
  - Contacts
  - Fields
  - Groups
  - History
  - Opportunities
  - Products

trigger_events:
  - Created
  - Updated
  - Alarms

events:
  - name: Activities.Created
    monitor: Activities
    triggerEvent: Created
  - name: Activities.Updated
    monitor: Activities
    triggerEvent: Updated
  - name: Activities.Alarms
    monitor: Activities
    triggerEvent: Alarms
    note: >-
      Alarms behave differently from the other events — they are pulled into a
      queue on the polling cycle but are not broadcast until the alarm actually
      sounds. Default payload properties for Alarms are id, startTime and
      leadMinutes.
  - name: Companies.Created
    monitor: Companies
    triggerEvent: Created
  - name: Companies.Updated
    monitor: Companies
    triggerEvent: Updated
  - name: Contacts.Created
    monitor: Contacts
    triggerEvent: Created
  - name: Contacts.Updated
    monitor: Contacts
    triggerEvent: Updated
  - name: Fields.Created
    monitor: Fields
    triggerEvent: Created
    note: >-
      Metadata is cached, so Fields webhooks do not send notifications when a
      field is created or updated OUTSIDE the API.
  - name: Fields.Updated
    monitor: Fields
    triggerEvent: Updated
    note: Same metadata-cache caveat as Fields.Created.
  - name: Groups.Created
    monitor: Groups
    triggerEvent: Created
  - name: Groups.Updated
    monitor: Groups
    triggerEvent: Updated
  - name: History.Created
    monitor: History
    triggerEvent: Created
  - name: History.Updated
    monitor: History
    triggerEvent: Updated
  - name: Opportunities.Created
    monitor: Opportunities
    triggerEvent: Created
  - name: Opportunities.Updated
    monitor: Opportunities
    triggerEvent: Updated
  - name: Products.Created
    monitor: Products
    triggerEvent: Created
  - name: Products.Updated
    monitor: Products
    triggerEvent: Updated

payload:
  default_properties: [id, created, edited]
  alarm_default_properties: [id, startTime, leadMinutes]
  shaping: queryOption (OData $select/$expand) adds properties to the notification body.

delivery:
  model: polled-then-pushed
  polling_interval_seconds: 900
  polling_interval_setting: PollingIntervalSeconds
  retry_interval_seconds: 120
  retry_interval_setting: PollingRetryIntervalSeconds
  retry_attempts: 3
  retry_attempts_setting: RetryAttempts
  on_exhaustion: The webhook is suspended (resume with PUT /api/webhooks/{id}/continue).
  configuration_service: Act.Webhook.Notifications
  note: >-
    These are service-configuration settings on the Act! installation, so an
    on-premises administrator can change them; the values above are the
    documented defaults.

security:
  callback_auth: >-
    The callbackToken supplied at registration is sent back in the
    Authorization header of each callback — a shared bearer secret, not a
    signature.
  signature: false
  signature_note: >-
    There is no HMAC payload signature and no timestamp/replay defence. A
    receiver can only compare the Authorization header to the token it
    registered, which means the secret travels on every delivery.
  tls: >-
    The provider explicitly documents registering an http:// callbackUrl when
    the receiver has no valid certificate, and registering the Act! Web API over
    http when IT is not certificated — so plaintext delivery of the shared token
    is a documented path.

gaps:
  - No AsyncAPI document.
  - No HMAC signature on deliveries; the shared token is replayed on every callback.
  - Plaintext (http) callback registration is documented as supported.
  - Not available on Act! Premium Cloud ("coming soon").
  - Minimum 15-minute notification latency by default.