AfterShip Tracking follows shipments across couriers. You create a tracking from a tracking number and a courier slug, or let AfterShip detect the courier, and it tags every checkpoint with one of nine delivery statuses from InfoReceived to Delivered, Exception, or Expired. Each tracking carries the courier's estimated delivery date, AfterShip's own estimate with a confidence code, the promised date from the order, an on_time_status, failed delivery attempts, and proof of delivery. Webhooks post tracking_update, edd_revise, and tracking_pending_time events to up to 10 URLs.
An operator on Fibric uses those events to find the shipment that has gone quiet or will miss its promise and proposes the customer message or the claim for approval.
This is a reference listing. It documents what Fibric would read from AfterShip and what it could propose, based on the vendor's published interfaces. Fibric builds it under a managed deployment when you request it; selecting it here installs nothing.
Inputs
Trackings with tag and subtag: InfoReceived, InTransit, OutForDelivery, AttemptFail, Delivered, AvailableForPickup, Exception, Expired, or Pending
Checkpoints with checkpoint_time, location, message, and event codes such as delayed, held_by_customs, delivery_attempt_failed, or returned_to_sender
aftership_estimated_delivery_date with a confidence_code, courier_estimated_delivery_date, latest_estimated_delivery with a revise_reason, and on_time_status
order_promised_delivery_date, failed_delivery_attempts, signed_by, proof_of_delivery, and return_to_sender per tracking
Webhook events tracking_update, edd_revise, and tracking_pending_time, with is_tracking_first_tag marking the first update under a status
Couriers the account has enabled, courier detection for a bare tracking number, and courier connections
first_mile and last_mile legs and multi_piece_info for shipments handed between carriers
Proposed actions
Target capability: propose creating a tracking through POST /trackings with tracking_number, slug, order_number, and the promised delivery date
Target capability: propose updating a tracking's order information or custom fields through PUT /trackings/:id
Target capability: propose a retrack of an Expired tracking through POST /trackings/:id/retrack
Target capability: propose marking a tracking completed through POST /trackings/:id/mark-as-completed
Target capability: propose a courier connection so account-specific couriers return checkpoints
Proposed actions are target capabilities. Every action runs propose-first and needs a validated deployment and the appropriate permissions.
What you can build
Find the shipment that went quiet
Subscribe to tracking_pending_time at your threshold. When a tracking sits in Pending or InTransit past it, propose the courier inquiry and the customer message for approval.
Compare latest_estimated_delivery and its revise_reason with order_promised_delivery_date. When on_time_status turns late, propose the notice and any concession under your policy.
Look up the tracking by order_number and draft the reply from the latest checkpoint message, tag, and estimated delivery date. The agent approves before it goes.
An AfterShip account with an API key; legacy aftership-api-key headers are not accepted since the 2023-10 version
Requests pinned to a version path such as https://api.aftership.com/tracking/2026-07
Couriers enabled in the admin portal, which also steers courier auto-detection
A webhook URL on port 80, 443, or 8080, with the webhook secret from Settings > Webhooks
Authentication
An as-api-key header on every request, created under API keys in the AfterShip account; signed requests add as-signature-hmac-sha256 or as-signature-rsa-sha256 with a date header valid for three minutes.
Limits
Limits are per endpoint per second: 20 for POST /trackings, 6 for GET /trackings, 5 for GET /trackings/:id, 3 for courier detection
A tracking with no information for 30 days becomes Expired and must be retracked
Failed webhooks are retried up to 14 times with a delay of 2^n times 30 seconds, then dropped
Email and SMS notifications on a status are a premium feature of the product, not part of the API
Access and pricing
Reference listing. Fibric builds the connector under a managed deployment when you request it. Your quote covers the build, capabilities, usage, and support.
Nine: InfoReceived, InTransit, OutForDelivery, AttemptFail, Delivered, AvailableForPickup, Exception, Expired, and Pending. Each checkpoint also carries a subtag such as InTransit_001 and an event code such as delayed or held_by_customs. Expired means no tracking information for 30 days since the tracking was added.
How do I check that a webhook came from AfterShip?
Every request carries an aftership-hmac-sha256 header: a base64 HMAC of the body using the webhook secret from Settings > Webhooks. You can add up to five custom headers per URL for your own bearer token or basic authentication. Failed events are retried up to 14 times.
What rate limits apply?
Per endpoint per second: POST /trackings 20, GET /trackings 6, GET, PUT, and DELETE /trackings/:id 5, POST /couriers/detect 3. Excess returns 429 TooManyRequests, and every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.
Ask about AfterShip
Ask about the capabilities and requirements in this listing.
This connector listing is developed, published, and supported by Fibric. It describes integration with AfterShip through published interfaces. Third-party names and logos identify the systems an integration connects to; they are the property of their respective owners, who are not affiliated with Fibric and do not sponsor or endorse this listing. Trademark policy