Skip to main content
Run sends ava.verification.completed to the HTTPS endpoint on your Business. This page is only that event. Shipment events are a different webhook: Order webhook. You register one HTTPS endpoint per Business. Run POSTs a signed JSON envelope to that URL. data is the verification, the same object as Get verification. It is not a shipment.

Configure

Set your webhook URL, subscribed event types, and signing secret from the Business Dashboard → Developers → Setup (dashboard session — not via API key).
Run Business Manage Webhook settings

Developers → Setup — webhook URL, signing secret, and event subscriptions

  • On first save, the signing secret is returned once (looks like whsec_•••••••••••••••• when masked) — store the full value securely.
  • A company that only has Address Verification starts with ava.verification.completed.
  • A company that also has Delivery keeps the shipment events and can add this one.
  • Use Rotate secret if the secret may be compromised. The previous secret remains valid for about 24 hours.
Inspect attempts under Developers → Webhook deliveries.
Webhook delivery attempts table

Developers → Webhook deliveries

When it is sent

ava.verification.completed is sent when a processing address check finishes as confirmed, not_confirmed, or unreachable. That includes the close after 5 business days. It is not sent when you first submit a check, when you accept or decline a field visit, or when a check is confirmed immediately from a past record. At that same moment Run also sends an email with the subject “Your address check is ready.” and a device push titled “Address check updated.” Every field on data is listed here. address.normalized, address.lat, and address.lng are present only when status is confirmed. Otherwise they are null. evidence is one object, or null when Run has not recorded evidence yet.
string
Run’s id for this check. It starts with avr_.
string
Your reference for this check.
string
confirmed, not_found, processing, not_confirmed, or unreachable. See Verification statuses.
string
When you created the check, in ISO 8601. Null only if the time is missing.
string
When the check finished, in ISO 8601. null until then.
string
The address you sent.
string
The address Run confirmed. null unless status is confirmed.
number
Latitude of the confirmed address. null unless status is confirmed.
number
Longitude of the confirmed address. null unless status is confirmed.
object
One evidence object, or null. type is delivered_record for a past delivery, or location_verification for a check Run recorded.
string
delivered_record or location_verification. null when evidence is null.
string
When this evidence was recorded, in ISO 8601, or null.
string
When a past delivery arrived, in ISO 8601, or null.
string
When the evidence was confirmed, in ISO 8601, or null.
string
How it was checked: field_visit, rider, agent, local_contact, or desk_review. null when this evidence has no method.
string
confirmed, not_confirmed, or unreachable. null when this evidence has no outcome.
string
The address that was found, or null.
string
The area that was recorded, or null.
number
Latitude recorded with the evidence, or null.
number
Longitude recorded with the evidence, or null.
boolean
Whether the address could be reached. null when that was not recorded.
string
The note stored with the evidence, or null.
string
A reference stored with the evidence, or null.
string[]
Photo links. An empty list when there are no photos. Omitted from the object only when evidence itself is null.
boolean
true when you can still accept or decline a field visit.
number
The visit price in naira when available is true. null when no visit is offered. This is the rate on your account.
string
Always NGN.
string
The note for this check, or null.
number
The amount taken from the wallet, in naira, or null when this check has not been charged.
string
Always NGN.
string
historical for a normal check, or field_visit for a visit. null when this check has not been charged.
string
The wallet transaction id, or null when this check has not been charged.

Event envelope

Every delivery is a JSON POST with this shape. Headers:

Delivery and retries

Return a 2xx status to acknowledge receipt. Delivery is at-least-once. Retries reuse the same event id (evt_…) — make your handler idempotent. Run does not promise global ordering; use occurred_at and data.status. In production, webhook URLs must use HTTPS. Run blocks private/reserved destinations and disables redirects when delivering.

Verify signatures

HMAC-SHA256 of id + status + timestamp, keyed with your whsec_… secret. Compare the hex digest to X-Run-Webhook-Signature. The signature is not a hash of the JSON body. Reject timestamps older than about 5 minutes. Always verify before trusting the body.