Back to the blog
Partner Playbook

Webhook event types for returns status: a reference guide for partner integrations

Olivia MorganOctober 9, 20266 min read
Webhook event types for returns status: a reference guide for partner integrations

Webhook event types for returns status are the set of named events areturnz fires over HTTP as a returned parcel moves through receiving, grading, and disposition, each carrying a signed JSON payload so a partner's system knows the instant something changes without polling. areturnz exposes roughly a dozen of these events across the return lifecycle, from return.received through return.disposition.completed, and every event ties back to the same evidence bundle and audit trail visible in the dashboard.

Why event types matter for partner integrations

Most partner integrations fail not because the API is missing data, but because the integration team guesses at what events exist and when they fire. A clean reference saves a week of trial and error. With a 48 hour median cycle from inbound scan to disposition, a parcel can pass through five or six distinct status changes in two days, and a partner system that only polls once an hour will always be behind. Webhooks close that gap and keep a partner's own customer-facing dashboard, inventory system, or accounting feed in sync in near real time.

This is a companion to the isolation mechanics covered in multi-tenant webhook isolation, which explains how events stay scoped to the correct tenant. This article is the event catalog itself: what fires, when, and what is inside the payload.

The core webhook event types

Every event type maps to a step in the physical returns process. The table below is the current reference set partners subscribe against.

Event typeFires whenKey payload fieldsTypical partner use
return.receivedParcel is scanned in at the facility (NJ-01)tracking_id, received_at, facility_code, outer_label_photo_urlClose the loop on the customer's return confirmation
return.openedParcel is opened and contents photographeditem_count, parcel_photo_url, sku_match_statusTrigger quantity verification checks
return.grading.startedAI grading model begins evaluating the itemgrading_job_id, sku, started_atUpdate internal status to "in review"
return.gradedAI assigns a condition gradegrade (A/B/C/R), confidence_score, detected_tags, defect_photo_urlPull grade and confidence into partner reporting
return.grade.overriddenAn operator overrides the AI gradeoriginal_grade, final_grade, operator_id, override_reasonFlag items for quality review or model feedback
return.disposition.assignedDisposition rules route the itemdisposition (restock/liquidate/donate/destroy), rule_idKick off restock, liquidation, or donation workflows
return.disposition.completedThe physical disposition action finishescompleted_at, destination, certificate_url (if applicable)Close the return in partner inventory and finance systems
return.evidence.bundle.readyFull evidence bundle is finalized and signedbundle_id, bundle_url, signatureAttach proof to a dispute or chargeback case
return.exception.flaggedA mismatch or anomaly is detectedexception_type, flagged_at, notesRoute to a human queue or alert ops
return.webhook.testPartner triggers a manual test from the dashboardtest_id, sent_atVerify endpoint connectivity during setup

Grades follow the standard A, B, C, R scale, and the confidence score on return.graded is the same figure behind the network's roughly 99.6% AI-versus-operator match accuracy across 180K+ returns processed. A low confidence score is often the first signal that a human review or override is coming next.

Anatomy of a webhook payload

Every event shares a common envelope so a partner can route events generically before branching on type. The envelope carries an event id, event type, tenant id, timestamp, and a signature header for verification, with the event-specific fields nested inside a data object. Partners should always verify the signature before trusting payload contents, and should treat the event id as the deduplication key since some events can be delivered more than once under retry.

a simplified flow diagram showing a return moving through received, graded, and disposition webhook events

Required versus optional fields

Fields like event_id, event_type, tenant_id, and created_at are present on every event and will not change shape without a version bump. Fields inside data can vary by event type and, in a few cases, by vertical (apparel, electronics, beauty items carry slightly different detected_tags). Treat unrecognized fields as safe to ignore rather than a parsing failure, since new optional fields get added as grading detail expands.

Subscribing and filtering events

Partners choose which event types they want delivered when they configure an endpoint in the dashboard or via the API. A partner that only cares about final outcomes might subscribe to return.disposition.completed and return.evidence.bundle.ready alone, skipping the intermediate noise of received and opened events. A partner building a live operations view for its own customers typically subscribes to the full set. Subscriptions are scoped per API key, and the granular API key model covered in granular API keys for partner integrations lets a partner limit a given key to read-only event delivery without granting write access to disposition rules.

Retries, delivery guarantees, and idempotency

If an endpoint returns anything other than a 2xx response, areturnz retries delivery on a backoff schedule for a set window before marking the event as failed and surfacing it in the dashboard's delivery log. This means a partner's endpoint can, in rare cases, receive the same event twice. Building idempotent handling around the event_id field avoids double counting a restock or double closing a dispute. Every delivery attempt, successful or not, is logged and available for replay from the dashboard, which matters when an endpoint has downtime during a deploy.

Webhook events versus polling the API

Some integrations still prefer scheduled polling for reconciliation even when webhooks are the primary channel, and that is a reasonable belt-and-suspenders approach rather than a replacement.

ApproachLatencyBest for
WebhooksNear real time, typically seconds after the triggering eventLive status sync, customer notifications, ops dashboards
Polling the signed-JSON APIMinutes to hours depending on scheduleNightly reconciliation, backfilling gaps after downtime

Common integration patterns

Most partner builds fall into one of three patterns. A customer-facing status page subscribes to the full lifecycle and renders a simplified progress bar from the raw event stream. A finance integration subscribes narrowly to return.disposition.completed to close out inventory and revenue recognition. A trust and safety or dispute workflow subscribes to return.evidence.bundle.ready and pulls the bundle referenced in a sample evidence bundle directly into a case file. Each pattern pulls from the same event catalog, just a different subset.

For the broader context on how partner integrations, tenancy, and onboarding fit together, see the partner playbook pillar, and review current plan limits on pricing before scoping a high-volume webhook subscription.

Frequently asked questions

How many webhook event types does areturnz support?

The current catalog covers roughly a dozen named events spanning receiving, grading, operator overrides, disposition, and evidence bundle readiness. New optional fields get added within existing events more often than entirely new event types, so most integrations stay stable over time.

What happens if my endpoint is down when an event fires?

areturnz retries delivery on a backoff schedule and logs every attempt in the dashboard. Failed deliveries can be replayed manually once the endpoint is back up, so a short outage does not mean a permanently missed event.

Can I subscribe to only some event types?

Yes. Subscriptions are configured per endpoint and per API key, so a partner can request only the events relevant to their integration, such as final disposition and evidence readiness, without receiving every intermediate status change.

Is the confidence score included in the return.graded event?

Yes. The return.graded payload includes the grade (A, B, C, or R), the confidence score, and detected tags, the same data points behind the network's roughly 99.6% AI-versus-operator match accuracy.

Do webhook events replace the need to call the API?

No. Webhooks push real-time status changes, while the signed-JSON API remains the source of truth for backfilling history, running reconciliation jobs, or pulling full evidence bundles on demand.

Ready to see the event catalog against your own integration plan? Contact areturnz to walk through webhook setup for your tenant.

Related reading: Choosing a returns node location: facility footprint and regional coverage economics

#webhooks#api#partner playbook#integrations#returns status
See it in action

Proof on every return

Photos, an AI condition grade, and a full custody chain, attached to every parcel and available via the API.