SendFAXMail
Developer integration · Business & Enterprise plans

Fax From Google Sheets — Using Apps Script and Our API

A spreadsheet is a natural place to keep a list of recipients and documents, and Google Sheets ships Apps Script, which can call any web API. So you can fax a row straight from a sheet — no add-on from us, and we do not publish one on the Google Workspace Marketplace. You write a short Apps Script function that reads a row's fax number and document link and posts them to our REST API, then trigger it from a menu, a button, or a time-based run.

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

Plan requirement

This relies on our REST API, part of the Business ($79.99/mo) and Enterprise ($169.99/mo) plans; requests from a key on a lower plan return a 403. Apps Script itself is free with a Google account. Keep the bearer key in Script Properties rather than hard-coded in a cell, and limit who can edit the script.

How it works

In the sheet's Apps Script editor you write a function that walks the rows, reads the recipient number and a document URL from each, and uses UrlFetchApp to POST to /v1/faxes with your key in the Authorization header. Store the key in Script Properties so it never sits in a visible cell. You can bind the function to a custom menu for on-demand sends, to a drawing used as a button, or to a time-driven trigger that sweeps new rows on a schedule. The function writes the returned fax id and a timestamp back into the row so the sheet doubles as a send log, and it skips any row that already has an id.

What you can do

  • Fax any row by reading its recipient number and a document link from the sheet
  • Call /v1/faxes with UrlFetchApp — no server beyond Apps Script itself
  • Run sends from a custom menu, an in-sheet button, or a time-based trigger
  • Write the fax id and sent-time back into the row as a built-in log
  • Skip already-sent rows so a repeated run never refaxes them
  • Keep the key in Script Properties instead of a visible cell

Setup steps

  1. 1Put the account on Business or Enterprise and create a key at /dashboard/developers
  2. 2Open Extensions to Apps Script and store the key in Script Properties
  3. 3Write a function that reads each row's number and document URL
  4. 4POST to /v1/faxes with UrlFetchApp and the Authorization header
  5. 5Write the returned fax id and timestamp back into the row
  6. 6Bind the function to a menu, a button, or a scheduled trigger

Example

// Google Apps Script bound to the sheet
function faxRow(number, docUrl) {
  const key = PropertiesService.getScriptProperties().getProperty("SFM_KEY");
  const res = UrlFetchApp.fetch("https://www.sendfaxmail.com/v1/faxes", {
    method: "post",
    contentType: "application/json",
    headers: { Authorization: "Bearer " + key },
    payload: JSON.stringify({ to: number, document_url: docUrl }),
  });
  return JSON.parse(res.getContentText()).id;
}

Google Sheets Fax — FAQ

No add-on from us is listed, and we would not hint that one is. Apps Script can already reach external APIs with UrlFetchApp, so a few lines bound to your sheet are the entire integration. You are calling our REST API directly from the spreadsheet, not installing a packaged Workspace app.

In Script Properties, not in a cell or a shared tab. Anything typed into the grid is visible to every collaborator and can leak through exports; Script Properties keep the key out of the data. Give the key only the faxes:send scope and rotate it at /dashboard/developers when editors change.

Yes. Add a time-driven trigger in Apps Script that runs your function every hour or every morning, scanning for rows marked ready and without a fax id yet. Each qualifying row gets posted to /v1/faxes, and the id written back into the row prevents the next run from sending it again.

A URL our server can fetch — a published PDF, a signed cloud link, or any public HTTPS file. Put it in document_url and the fetch happens behind an SSRF guard. If a document must stay private, fetch its bytes inside the script and send them inline as base64 instead of a link.

Build with the Google Sheets 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