Complete reference for Portal.io API webhook event types, including proposal status changes, build status updates, payment events, and order changes.
When you create a webhook subscription, you specify which event types you want to receive. Portal.io delivers a signed HTTP POST payload to your registered HTTPS endpoint each time a subscribed event occurs. This page documents every available event type and the shape of its payload.
Your endpoint must respond with a 2xx status code to acknowledge receipt. If Portal.io does not receive a 2xx response, it retries the delivery on this schedule: 1 minute, 5 minutes, 30 minutes, 2 hours, 12 hours.
Fired when the Portal.io AI builder finishes generating a proposal or encounters an error during generation. Subscribe to this event if you need to react when a build completes asynchronously.Event name:ProposalBuildStatusChanged
Fired when Portal.io’s AI outline generation completes or fails. Useful for workflows that wait for an AI-generated scope before proceeding.Event name:ProposalOutlineStatusChanged
Fired whenever a proposal’s status changes. Common transitions include Draft → Sent, Sent → Approved, and Approved → Ordered. The full proposal object is included in the payload.Event name:ProposalStatusChanged
Fired when a contact record is created or updated in Portal.io. This Zapier-compatible event provides the full contact and primary location in a single payload.Event name:PersonModification
Fired when a payment’s status changes in Portal.io (e.g. pending → collected, collected → refunded). Useful for triggering accounting system updates.Event name:PaymentStatusChange
Fired when an order’s status changes in Portal.io (e.g. pending → submitted, submitted → received). Subscribe to this event to keep external fulfillment or purchasing systems in sync.Event name:OrderStatusChange