Plenty of lists start life in a spreadsheet: event sign-ups, a stall's mailing list, leads from a partner. Connecting Google Sheets to SendBeam adds each new row as a contact, so the sheet can keep being where people type while SendBeam does the sending.
Native integration: no
SendBeam has no Google Sheets app of its own. The routes below connect the two through n8n, Make or Zapier today, with the SendBeam node in n8n doing the SendBeam side for you.
How it works
- Pick your automation tool. n8n with the official SendBeam node, Make or Zapier. Each connects to Google Sheets with its own trigger, shown below.
- Create an API key. Settings → API keys in SendBeam, with contacts:write, and lists:write if the workflow adds people to a list. The full key is shown once. To send SendBeam events out instead, add an endpoint under Settings → Webhooks.
- Map the fields and test. Map the fields between Google Sheets and SendBeam, run the workflow once with your own address, and check the result before switching it on.
Code
In n8n: Google Sheets to SendBeam
n8n workflow1. Google Sheets Trigger, watching the sheet for new rows
2. SendBeam → Contact → Create or update
Email the email column from step 1
First name the first name, if there is one
Source google-sheets
3. SendBeam → Contact → Add to list
Contact By email, the same expression as step 2
List From list, then pick the list by name Install the SendBeam node from Settings → Community nodes (n8n-nodes-sendbeam). Adding someone who is already a contact, or already on the list, succeeds, so the workflow is safe to re-run.
In Make: Google Sheets to the REST API
Make scenarioModule 1: the Google Sheets module that watches a sheet for new rows
Module 2: HTTP → Make a request
URL: https://sendbeam.io/api/v1/contacts
Method: POST
Headers: x-api-key = sb_live_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Body type: Raw
Content type: JSON (application/json)
Request content:
{
"email": "{{1.email}}",
"first_name": "{{1.first_name}}",
"source": "google-sheets"
} Replace {{1.email}} and {{1.first_name}} with the email column and the name, mapped from module 1. A 409 answer means the contact already exists; route it to GET /api/v1/contacts?q= with the same address if you need the contact's id.
In Zapier: Google Sheets to the REST API
ZapTrigger Google Sheets → New Spreadsheet Row
Action Webhooks by Zapier → POST
URL https://sendbeam.io/api/v1/contacts
Payload type json
Data
email the email column
first_name the first name
source google-sheets
Headers
x-api-key sb_live_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Webhooks by Zapier is available on Zapier's paid plans. The SendBeam app for Zapier will replace this step with a Create Contact action once it is listed in Zapier's directory.
Things to know
- For a sheet that already has hundreds of rows, import it once as a CSV under Contacts → Import, then let the workflow pick up new rows only.
- Keep one header row, and a column per field, so the mapping stays stable when rows are added.
- Only add people to a marketing list if they agreed to hear from you. Someone who only bought or booked can still get receipts and reminders through Send transactional.
Go further
- Documentation Overview →
- Docs Webhooks: SendBeam events for your workflows →
- Docs API reference →
Related integrations
Also: Astro, Next.js, Hugo, Eleventy, WordPress, Cloudflare Pages, Netlify, Vercel, Zapier, Make, n8n, Tally, Jotform, Stripe, Shopify, Gumroad, Lemon Squeezy, Calendly, Eventbrite, Webflow, HubSpot, Slack.