Dispatch #4471 Today, 09:14
Q3-vendor-invoices.zip
to billing@northline-co.com
Delivered
contract-draft-v4.pdf
to legal@harrowfield.io
Delivered
onboarding-kit.zip
to ops@delridge-partners.com
Retrying
audit-export-aug.csv
to finance@northline-co.com
Delivered
Outbound delivery

Send files out, know they arrived.

Ferrymark dispatches files to partners and vendors through expiring links, retries failed deliveries automatically, and gives you a receipt for every one — instead of an email thread asking "did you get this?"

99.6%
first-attempt delivery rate across all recipients
72h
default link expiry, adjustable per dispatch
4
retry attempts before a dispatch is flagged for review

What happens after you hit send

Every dispatch moves through the same four stages, and you can query the status of any of them at any point.

01

Dispatch created

Your backend calls the dispatch endpoint with the file and one or more recipients. Ferrymark returns a dispatch ID immediately.

02

Link generated per recipient

Each recipient gets a unique, expiring link — never a shared one — so you can see exactly who opened what.

03

Delivery attempted

The notification goes out by email or webhook. A failed attempt is retried on a backoff schedule, not left to fail silently.

04

Receipt recorded

Open and download events are timestamped and queryable, and can trigger your own webhook the moment they happen.

For the deliveries that matter

Per-recipient links

No shared download URLs. Every recipient's link is unique, scoped, and revocable on its own.

Automatic retries

A bounced email or unreachable webhook is retried on a backoff schedule before it's escalated to you.

Delivery receipts

Know when a link was opened and the file downloaded, not just that an email was sent.

Expiry by default

Links expire on a schedule you set. Nothing you send stays reachable indefinitely by default.

One call to dispatch

Ferrymark handles link generation, retries, and receipts after this.

// server: dispatch a file to two recipients const dispatch = await ferrymark.dispatch.create({ fileUrl: "s3://exports/audit-export-aug.csv", recipients: ["finance@northline-co.com"], expiresIn: "72h", onReceipt: "https://yourapp.com/hooks/ferrymark", });