Google Sheets integration

Share a sheet with a service-account email. Maillayer polls and syncs rows into contacts.

The convention

  • Column A = email (required, used as upsert key)
  • Column B = name (optional, populates first_name on insert)
  • Row 1 = header (skipped)

That's it. Fixed convention so there's no column-mapping wizard — operators rearrange the sheet to match instead of fighting a UI.

Setup

  1. Google Cloud Console → IAM → Service Accounts → create one. Enable the Sheets API on the project.
  2. Create a key for the service account (JSON). Downloads a credentials file.
  3. Brand → Integrations → Connect Google Sheets. Paste the JSON (or upload). Maillayer surfaces the client_email from the JSON.
  4. In the Google Sheet you want to sync: Share → paste the service-account email → role Viewer is enough.
  5. Back in Maillayer, paste the Sheet URL (any URL from that sheet works — we extract the ID). Optional tab name.
  6. Pick actions (add to contacts with tags, welcome new rows), interval, save.

How welcome-email-on-first-sight works

Each row's email is upserted. Maillayer checks whether the upsert created a new contact (vs updated an existing one) — only fires the welcome email on creates. Re-polling the same sheet won't re-greet returning rows.

What's read
Range: <tab>!A:B. Only columns A and B. Other columns are ignored. No write access — Maillayer never modifies your sheet.