Fax Automation — Wire Faxing Into Your Own Software
Fax automation means a fax goes out, and its result comes back, without anyone opening a dashboard. Send FAX Mail supports that with three real pieces: a REST API that sends and reads faxes, outbound webhooks that push delivery results to your server, and a send-from-link option that faxes a document straight from a public URL. Together they let a CRM, an EHR, a billing job, or a nightly script trigger a fax from an event and record the outcome automatically. These developer features live on the Business and Enterprise plans, and every key and endpoint is managed at /dashboard/developers.
Plan requirement
Automation is built on the REST API and outbound webhooks, which are part of the Business ($79.99/mo) and Enterprise ($169.99/mo) plans. On lower plans the v1 routes return 403 and the developer forms are hidden, so design your automation around a Business or Enterprise account.
How it works
An automated fax flow has two halves. Outbound: your system reacts to an event — a signed contract, a discharged patient, a closed invoice — by calling POST /v1/faxes with the recipient and a document, either as base64 or a public document_url that we fetch for you. Inbound and status: rather than poll, you register a webhook endpoint so fax.delivered, fax.failed, and fax.received events arrive at your server signed with HMAC-SHA256, letting you update a record or retry on failure the instant the result is known. Because the send endpoint reuses the same gates as the dashboard — quota, BAA, and number checks — an automated send obeys the same rules a person would, so nothing slips past your plan's limits.
What you can do
- ✓Trigger an outbound fax from a CRM, EHR, or billing event by calling /v1/faxes
- ✓Fax a document straight from a public link with document_url, no local upload step
- ✓Receive delivered, failed, and received results by webhook instead of polling
- ✓Reconcile or report by listing faxes through GET /v1/faxes on a schedule
- ✓Make retries safe end to end with an Idempotency-Key on every automated send
- ✓Inherit the account's quota, BAA, and number gates on every API-driven send
Setup steps
- 1Move the account to Business or Enterprise so API and webhook features are active
- 2Create a scoped API key at /dashboard/developers and store it in your app's secret manager
- 3Identify the event in your system that should trigger a fax and call /v1/faxes from that handler
- 4Send by document_url when the file already lives at a public link, or by base64 when you hold the bytes
- 5Register a webhook endpoint for fax.delivered and fax.failed to capture the outcome automatically
- 6Attach an Idempotency-Key per send and verify the webhook signature so the loop is safe to retry
Example
// Pseudocode: fax a signed contract, then let a webhook record the result
await fetch("https://www.sendfaxmail.com/v1/faxes", {
method: "POST",
headers: {
"Authorization": "Bearer sfm_live_xxxxxxxx",
"Idempotency-Key": contract.id,
"Content-Type": "application/json",
},
body: JSON.stringify({
to: contract.recipientFax,
document_url: contract.signedPdfUrl,
}),
});
// fax.delivered / fax.failed then POSTs to your webhook endpoint.Fax Automation — FAQ
Three things working together: an API key to call POST /v1/faxes from your code, a document source — either base64 bytes or a public document_url — and a webhook endpoint to catch the result. With those in place, an event in your system sends the fax and a delivered or failed event records the outcome, all without a person in the loop.
Yes, as long as that system can make an outbound HTTPS request or run a small script. Have it call /v1/faxes when the relevant record changes — a closed deal, a discharge summary, a new order — and pass the recipient and document. If the platform cannot call an API directly, a thin middleware step or an automation tool like Zapier can sit between it and our endpoint.
They do. The API send path runs through the same gates as the dashboard, so a fax triggered by code is checked against your monthly page quota, your BAA status where PHI handling requires it, and your provisioned numbers. An automation cannot quietly exceed what the plan allows; it simply receives an error response when a gate blocks the send.
Send each fax with a stable Idempotency-Key — the underlying record id, an order number, anything unique to that one document. If your job retries after a timeout, the repeated request returns the fax that was already created instead of dialing again. Pair that with webhook handlers keyed on the fax id so a duplicated event is also harmless.
It is a first-class part of the send path. When you pass a public HTTPS document_url, the server fetches the file through an SSRF guard, checks the type is faxable, and then sends it — the same code the dashboard import uses. Keep the link reachable for the brief moment of the call; once the document is fetched the fax proceeds from our stored copy.
Build with the Fax Automation
API access and webhooks are included on the Business and Enterprise plans. Create a key at /dashboard/developers and start sending.
7-day free trial · No credit card required