SendFAXMail
Developer integration · Business & Enterprise plans

Salesforce Fax Integration — Using Our REST API and Webhooks

The honest version first: Send FAX Mail does not publish a Salesforce AppExchange package or a managed connector you install into your org. What works is calling our REST API from Salesforce's own outbound HTTP tools and receiving our signed webhooks back into Salesforce. From a Flow, an Apex callout, or an External Service you POST a recipient and a document to /v1/faxes, and you register a Salesforce-hosted endpoint to catch our fax.delivered, fax.failed, and fax.received events. No middleware is required — Salesforce already ships the HTTP building blocks, and our API plus webhooks supply the fax side.

Encrypted in transit (TLS)
HIPAA BAA included
US-based fax numbers
No activation fees
No contracts
7-day free trial

Plan requirement

This pattern is built on our REST API and outbound webhooks, which are part of the Business ($79.99/mo) and Enterprise ($169.99/mo) plans. There is no Salesforce-specific add-on to buy from us and no AppExchange listing; you connect with Salesforce's standard named credentials, Apex callouts, or Flow HTTP actions.

How it works

Salesforce can make an authenticated outbound HTTP call in several ways — a Named Credential plus an HTTP Callout in a Flow, an Apex HttpRequest, or a declarative External Service registration. Any of them can POST JSON to /v1/faxes with your bearer key in the Authorization header, the recipient in `to`, and either inline base64 or a public document_url in the body. To close the loop, you build an Apex REST endpoint or a Site-hosted service in your org and register its URL as a webhook endpoint at /dashboard/developers; our delivered, failed, and received events then post to it, HMAC-signed with an X-SFM-Signature header your Apex can verify. Because both directions are plain signed HTTP, the fax lifecycle lives inside the records and automations you already have.

What you can do

  • Send a fax from a Salesforce Flow or Apex trigger by POSTing a record's document to /v1/faxes
  • Store the returned fax id on the record and poll GET /v1/faxes/:id for status
  • Receive fax.delivered / fax.failed / fax.received into an Apex REST endpoint you register
  • Verify the X-SFM-Signature HMAC in Apex before trusting an inbound event
  • Attach a public document_url so Salesforce need not base64-encode the file
  • Use an Idempotency-Key so a retried Flow or callout never double-sends

Setup steps

  1. 1Confirm the org's Send FAX Mail account is on Business or Enterprise so the API and webhooks are active
  2. 2Create an API key at /dashboard/developers with the faxes:send scope (add faxes:read to poll status)
  3. 3In Salesforce, add a Named Credential holding the endpoint and the Authorization: Bearer header
  4. 4Build a Flow HTTP Callout or Apex HttpRequest that POSTs `to` and `document_url` to /v1/faxes
  5. 5Create an Apex REST or Site endpoint to receive events and register its URL at /dashboard/developers
  6. 6Verify the X-SFM-Signature on inbound events and write the status back onto the originating record

Example

POST /v1/faxes   (from a Salesforce Named Credential)
Authorization: Bearer sfm_live_xxxxxxxx
Idempotency-Key: {!$Flow.CurrentRecord}
Content-Type: application/json

{
  "to": "+15551234567",
  "document_url": "https://yourorg.file.force.com/servlet/.../authorization.pdf"
}

Salesforce Fax — FAQ

No, and we would rather say so than imply a managed package exists. You do not install anything from us into your org. You connect using Salesforce's own outbound HTTP — a Named Credential with a Flow HTTP Callout, an Apex callout, or an External Service — pointed at our /v1/faxes endpoint, and you catch our webhooks with an Apex REST endpoint you host.

Build a record-triggered Flow (or an Apex trigger) that fires on the change, then have it make an authenticated HTTP callout POSTing the recipient number and a document_url to /v1/faxes. Store the fax id the response returns on the record so you can correlate later status updates back to it.

Register a webhook endpoint. Stand up an Apex REST resource or a Force.com Site service in your org, register its URL at /dashboard/developers, and subscribe it to fax.delivered, fax.failed, and fax.received. Each event arrives signed with X-SFM-Signature so your Apex can verify the HMAC before updating the record.

Yes, if the file is reachable at a public HTTPS URL — for example a Content Distribution link. Put that link in the document_url field and our server fetches it behind an SSRF guard before faxing. If the file is not publicly reachable, read its bytes in Apex and send them inline as base64 in a document object instead.

Build with the Salesforce Fax

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