Webhooks

Overview

Tropic provides various event types for configuring webhooks, giving you precise control over the events you want to receive. To minimize the load on your webhook intake service, we recommend selecting only the events that are essential for your needs. Webhooks enable Tropic to send a POST request to your specified URL whenever specific events occur. The POST request includes details about the webhook and a payload tailored to the event type.

Retries

Tropic will retry sending webhooks for up to three days if an error response is received. A POST request is considered failed if a 4xx or 5xx response is returned. In total, Tropic will make up to 17 retry attempts over the three-day period, with intervals between retries determined by an exponential backoff algorithm.

Resources

Comment


{
  "id": "string",
  "commentable": {
    "id": "string",
    "type": "string"
  },
  "user": {
    "id": "string",
    "email": "string",
    "first_name": "string",
    "last_name": "string",
    "department_id": "string",
    "job_title": "string",
    "manager_id": "string",
    "role": "string",
    "deactivated": "boolean"
  },
  "content": "string",
  "created_at": "string",
  "updated_at": "string"
}
    

Contract


{
  "id": "string",
  "supplier": {
    "id": "string",
    "name": "string",
    "formerly_known_as": "string",
    "slug": "string",
    "domain": "string",
    "supplier_risk_level": "string",
    "next_risk_assessment_date": "string",
    "business_use_case": "string",
    "overall_sentiment": "string",
    "business_criticality": "string",
    "suggested_fields": "object",
    "custom_fields": "array"
  },
  "currency": "string",
  "total_contract_value_cents": "integer",
  "annual_contract_value_cents": "integer",
  "monthly_contract_value_cents": "integer",
  "start_date": "string",
  "end_date": "string",
  "end_date_not_applicable": "boolean",
  "status": "string",
  "stage": "string",
  "renewal_type": "string",
  "originating_purchase_request_id": "string",
  "next_purchase_request_id": "string",
  "department": {
    "id": "string",
    "name": "string"
  },
  "category": {
    "id": "string",
    "name": "string",
    "description": "string"
  },
  "contract_owner_users": "array",
  "opt_out_date": "string",
  "renewal_reminder_date": "string",
  "billing_frequency": "string",
  "payment_terms": "string",
  "payment_method": "string",
  "purchased_from": {
    "id": "string",
    "name": "string",
    "slug": "string",
    "domain": "string"
  },
  "suggested_fields": "object",
  "custom_fields": "array",
  "documents": "array"
}
    

Document


{
  "id": "string",
  "documentables": "array",
  "name": "string",
  "file_name": "string",
  "file_type": "string",
  "summary": "string",
  "document_type": {
    "id": "string",
    "name": "string"
  },
  "expires_at": "string",
  "owners": "array",
  "uploaded_by": {
    "id": "string",
    "email": "string",
    "first_name": "string",
    "last_name": "string",
    "department_id": "string",
    "job_title": "string",
    "manager_id": "string",
    "role": "string",
    "deactivated": "boolean"
  },
  "uploaded_at": "string",
  "view_link": "string",
  "limited_access": "boolean",
  "download_link": "string"
}
    

General Request


{
  "id": "string",
  "suppliers": "array",
  "department": {
    "id": "string",
    "name": "string"
  },
  "general_category": {
    "id": "string",
    "name": "string",
    "description": "string"
  },
  "requestor": {
    "id": "string",
    "email": "string",
    "first_name": "string",
    "last_name": "string",
    "department_id": "string",
    "job_title": "string",
    "manager_id": "string",
    "role": "string",
    "deactivated": "boolean"
  },
  "submitted_on": "string",
  "document_ids": "array",
  "workflow_name": "string",
  "form_response_data": "object",
  "form_response_data_details": "array"
}
    

General Request Task


{
  "id": "string",
  "general_request_id": "string",
  "name": "string",
  "status": "string",
  "type": "string",
  "assignees": "array",
  "instructions": "string",
  "due_date": "string",
  "completed_at": "string",
  "link": "string"
}
    

Price Benchmark

Instant Price Benchmark


{
  "id": "string",
  "type": "string",
  "status": "string",
  "supplier": {
    "id": "string",
    "name": "string"
  },
  "originator": {
    "type": "string",
    "id": "string"
  },
  "external_benchmark_request_id": "string",
  "overall_savings_opportunity": "string",
  "unavailable_reason": "string",
  "notes": "string",
  "requested_at": "string",
  "created_at": "string",
  "updated_at": "string",
  "line_items": "array"
}
    

Manual Price Benchmark


{
  "id": "string",
  "type": "string",
  "status": "string",
  "supplier": {
    "id": "string",
    "name": "string"
  },
  "originator": {
    "type": "string",
    "id": "string"
  },
  "external_benchmark_request_id": "string",
  "overall_savings_opportunity": "string",
  "unavailable_reason": "string",
  "notes": "string",
  "requested_at": "string",
  "created_at": "string",
  "updated_at": "string",
  "line_items": "array"
}
    

Purchase Request


{
  "id": "string",
  "supplier": {
    "id": "string",
    "name": "string",
    "formerly_known_as": "string",
    "slug": "string",
    "domain": "string",
    "supplier_risk_level": "string",
    "next_risk_assessment_date": "string",
    "business_use_case": "string",
    "overall_sentiment": "string",
    "business_criticality": "string",
    "suggested_fields": "object",
    "custom_fields": "array"
  },
  "anticipated_spend_cents": "integer",
  "anticipated_spend_currency": "string",
  "department": {
    "id": "string",
    "name": "string"
  },
  "type": "string",
  "purchase_category": {
    "id": "string",
    "name": "string",
    "description": "string"
  },
  "requestor": {
    "id": "string",
    "email": "string",
    "first_name": "string",
    "last_name": "string",
    "department_id": "string",
    "job_title": "string",
    "manager_id": "string",
    "role": "string",
    "deactivated": "boolean"
  },
  "submitted_on": "string",
  "target_signature_date": "string",
  "document_ids": "array",
  "workflow_name": "string",
  "managed_by": "string",
  "originating_contract_id": "string",
  "next_contract_ids": "array",
  "purchased_from": {
    "id": "string",
    "name": "string",
    "slug": "string",
    "domain": "string"
  },
  "form_response_data": "object",
  "form_response_data_details": "array"
}
    

Purchase Request Task


{
  "id": "string",
  "purchase_request_id": "string",
  "questionnaire_id": "string",
  "form_response_data": "object",
  "form_response_data_details": "array",
  "name": "string",
  "status": "string",
  "type": "string",
  "assignees": "array",
  "instructions": "string",
  "due_date": "string",
  "completed_at": "string",
  "link": "string"
}
    

Event Types

Comment Events

comment.created

Triggered when a new comment is added.

Example payload:

{
  "data": {
    "object": Comment Object
  },
  "version": "1.0.0",
  "event_type": "comment.created",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "comment"
}
      

Contract Events

contract.created

Triggered when a new contract is created.

Example payload:

{
  "data": {
    "object": Contract Object
  },
  "version": "1.0.0",
  "event_type": "contract.created",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "contract"
}
      

contract.updated

Triggered when a contract is updated.

Example payload:

{
  "data": {
    "object": Contract Object
    "changes": {
      "status": {
        "from": "active"
      },
      "total_contract_value_cents": {
        "from": 1000000
      }
    }
  },
  "version": "1.0.0",
  "event_type": "contract.updated",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "contract"
}
      

Document Events

document.purchase_request_linked

Triggered when a document is linked to a purchase request.

Example payload:

{
  "data": {
    "object": Document Object,
    "purchase_request_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72"
  },
  "version": "1.0.0",
  "event_type": "document.purchase_request_linked",
  "resource_id": "9be59433-8ce8-4f43-8ce9-acfd9421e208",
  "resource_type": "document"
}
      

document.general_request_linked

Triggered when a document is linked to a general request.

Example payload:

{
  "data": {
    "object": Document Object,
    "general_request_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72"
  },
  "version": "1.0.0",
  "event_type": "document.general_request_linked",
  "resource_id": "9be59433-8ce8-4f43-8ce9-acfd9421e208",
  "resource_type": "document"
}
      

General Request Events

general_request.created

Triggered when a new general request is created.

Example payload:

{
  "data": {
    "object": General Request Object
  },
  "version": "1.0.0",
  "event_type": "general_request.created",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "general_request"
}
      

general_request.updated

Triggered when a general request is updated.

Example payload:

{
  "data": {
    "object": General Request Object,
    "changes": {
      "anticipated_spend_cents": {
        "from": 1000000
      }
    }
  },
  "version": "1.0.0",
  "event_type": "general_request.updated",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "general_request"
}
      

General Request Task Events

general_request_task.created

Triggered when a general request task is created.

Example payload:

{
  "data": {
    "object": General Request Task Object
  },
  "version": "1.0.0",
  "event_type": "general_request_task.created",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "general_request_task"
}
      

general_request_task.status_changed

Triggered when a general request task's status is updated.

Example payload:

{
  "data": {
    "object": General Request Task Object
    "current_status": "skipped",
    "previous_status": "not_started",
    "status_changed_at": "2025-05-08 14:30:00"
  },
  "version": "1.0.0",
  "event_type": "general_request_task.status_changed",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "general_request_task"
}
      

Price Benchmark Events

price_benchmark.created

Triggered when a price benchmark is created.

Example payload (instant):

{
  "data": {
    "object": Instant Price Benchmark Object
  },
  "version": "1.0.0",
  "event_type": "price_benchmark.created",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "instant_price_benchmark"
}
      

Example payload (manual):

{
  "data": {
    "object": Manual Price Benchmark Object
  },
  "version": "1.0.0",
  "event_type": "price_benchmark.created",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "manual_price_benchmark"
}
      

Purchase Request Events

purchase_request.created

Triggered when a new purchase request is created.

Example payload:

{
  "data": {
    "object": Purchase Request Object
  },
  "version": "1.0.0",
  "event_type": "purchase_request.created",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "purchase_request"
}
      

purchase_request.updated

Triggered when a purchase request is updated.

Example payload:

{
  "data": {
    "object": Purchase Request Object,
    "changes": {
      "anticipated_spend_cents": {
        "from": 1000000
      }
    }
  },
  "version": "1.0.0",
  "event_type": "purchase_request.updated",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "purchase_request"
}
      

Purchase Request Task Events

purchase_request_task.created

Triggered when a purchase request task is created.

Example payload:

{
  "data": {
    "object": Purchase Request Task Object
  },
  "version": "1.0.0",
  "event_type": "purchase_request_task.created",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "purchase_request_task"
}
      

purchase_request_task.status_changed

Triggered when a purchase request task's status is updated.

Example payload:

{
  "data": {
    "object": Purchase Request Task Object
    "current_status": "skipped",
    "previous_status": "not_started",
    "status_changed_at": "2025-05-08 14:30:00"
  },
  "version": "1.0.0",
  "event_type": "purchase_request_task.status_changed",
  "resource_id": "b24897c5-566f-43b0-b8c1-6c55a30c6c72",
  "resource_type": "purchase_request_task"
}