shipping-carriers

Implements Shiprocket and EasyPost carrier integrations for shipment creation, tracking, and webhooks.

Updated Mar 31, 2026
One-click install
npx skills add https://github.com/gengirish/dropflow --skill shipping-carriers-gengirish
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: shipping-carriers
Source: https://github.com/gengirish/dropflow/tree/main/.cursor/skills/shipping-carriers
Command: npx skills add https://github.com/gengirish/dropflow --skill shipping-carriers-gengirish

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @easypost/api.

What problem does it solve? Building e-commerce shipping requires integrating multiple carrier APIs with different authentication schemes, payload formats, and status codes. This Skill provides working TypeScript patterns for domestic India shipping via Shiprocket and international shipping via EasyPost, including token caching, AWB generation, rate shopping, and unified tracking status mapping. ## Core Features & Use Cases - Shiprocket Integration: Typed wrapper for Shiprocket's REST API covering token authentication with 8-day caching, adhoc order creation, AWB assignment, and AWB-based tracking for domestic India shipments. - EasyPost Integration: International shipment creation with customs declarations, multi-carrier rate shopping across DHL, FedEx, and UPS, and label purchase returning tracking numbers and label URLs. - Carrier Webhook Handling: Next.js webhook endpoint pattern that enqueues tracking updates to a worker queue, plus a unified status map normalizing carrier-specific codes to IN_TRANSIT, DELIVERED, and other canonical states. - Use Case: When an order is placed in DropFlow, use the carrier selection logic to route domestic orders to Shiprocket and international orders to EasyPost, then generate labels and normalize webhook tracking events into a single status model. ## Quick Start Use the shipping-carriers skill to create a Shiprocket order and generate an AWB for a domestic India shipment.

Frequently Asked Questions about shipping-carriers

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I integrate Shiprocket API in Node.js?▼

Shiprocket has no official Node.js SDK, so build a typed fetch wrapper around its REST API at apiv2.shiprocket.in. Authenticate via the /auth/login endpoint, cache the returned token for its 8-day validity, then call endpoints like /orders/create/adhoc and /courier/assign/awb with a Bearer token.

How to create international shipments with EasyPost?▼

Use the @easypost/api package to create a Shipment with from_address, to_address, parcel dimensions, and customs_info including HS tariff numbers. Then call lowestRate with preferred carriers like DHL, FedEx, and UPS, and buy the shipment to receive a tracking code and label URL.

Shiprocket vs EasyPost for India e-commerce shipping?▼

Shiprocket is an aggregator suited for domestic India shipments with pincode-based addresses and prepaid orders. EasyPost handles international shipments with customs declarations and multi-carrier rate shopping, so a common pattern routes by the isInternational flag.

How do I handle Shiprocket token expiration?▼

Cache the auth token in memory along with an expiry timestamp set 8 days ahead, matching Shiprocket's token validity. Before each API call, check whether the cached token is still valid and re-authenticate via /auth/login only when expired.

How to normalize tracking statuses from different carriers?▼

Maintain a lookup map translating carrier-specific codes into unified statuses. Shiprocket returns numeric codes like 6 for in-transit and 7 for delivered, while EasyPost uses strings like in_transit and out_for_delivery, both mapping to canonical values such as IN_TRANSIT and DELIVERED.

Why does my Shiprocket order creation fail with a 401 error?▼

A 401 typically means the Bearer token is missing or expired, so verify the token cache logic and re-authenticate. Also confirm the phone number strips the +91 prefix and that prices are converted from paise to rupees, since malformed payloads can surface as request errors.