Skip to main content
Beta: Contact support to enable provider outreach webhooks. Breaking changes may occur during the beta period.
Provider outreach webhooks are only emitted for prior authorization requests. Provider outreach is activated when Develop Health contacts the prescribing provider to request information or action, or to communicate an outcome. The prior_authorization.provider_outreach_change event is emitted when a provider outreach attempt is created or changes state, or when the outreach sequence reaches a terminal state. Each event is a complete snapshot of one communication attempt, including its current state and, after the communication is rendered, the exact message content and files sent to the provider.

Webhook body

Envelope fields

Data fields

Transmission fields

The transmission object shows what was sent, not a template name or template variables. Once an attempt reaches sent, the rendered transmission is immutable for that attempt ID. Transmission content varies by channel:
Attachment URLs expire quickly. Download required files when you receive the webhook instead of storing the URL. Provider outreach can contain protected health information and secure access credentials, so protect webhook payloads and downloaded files accordingly.

Attempts, retries, and parallel channels

Each payload describes one communication attempt through one channel. When Direct Secure Messaging and fax are sent in parallel, for example, each has its own id, communication_method, status, and transmission. Both attempts share an outreach_sequence_id and can have the same attempt_number. A retry has a new attempt id and an incremented attempt_number. The outreach window is configurable for each workflow; do not assume a fixed number of days or attempts. Use outreach_window_ends_at to determine when Develop Health will stop scheduling new attempts. When the sequence reaches completed or failed, Develop Health emits another prior_authorization.provider_outreach_change event for its most recent attempt. That event has a new event_id and the updated sequence_status; the attempt’s rendered transmission remains unchanged.

Attempt states

An attempt does not necessarily pass through every state. For example, a fax may move from sent directly to completed, because delivery and open signals are not available for every channel. Treat completed, expired, and failed as terminal for one attempt ID. A later retry or escalation is represented by a new attempt ID.

Sequence states

Attempt and sequence states are independent. For example, a fax can be delivered while its sequence eventually becomes failed because the provider did not complete the requested action.

Processing events

Webhook deliveries may be duplicated. Deduplicate delivery retries by event_id, and ignore state values your integration does not recognize. Return a 2xx response as soon as the event is durably accepted. Download any required attachments promptly, verify each file against its sha256 value, then process the event asynchronously.