Integration Recipe

WhatsApp + Google Sheets: the setup recipe

Native integration, no third-party automation tool neededLast verified August 2026

Spun can write WhatsApp activity straight into a Google Sheet you own: new leads, orders, calls, archived chats and more, each as a new row, as it happens. It connects with your own Google account (not a shared bot), and it needs nothing outside Spun to work: no Zapier account, no automation platform, no code.

This recipe walks through the real setup: connecting Google, choosing what triggers a row, and what actually lands in the sheet. For the full feature tour and FAQ, see the Google Sheets integration page.

1. Connect your Google account

  1. 1

    Open the Sheets panel

    In your Spun inbox: Settings, then Google Sheets. This is manager/owner-only, since it grants access to a Google account.

  2. 2

    Sign in with Google

    You are asked for permission over the spreadsheets Spun creates or that you explicitly pick, not your whole Drive. Spun does not request access to read your other files.

  3. 3

    Pick a destination

    Create a new spreadsheet in your Drive with one click, or connect an existing sheet (including a folder in a Shared Drive) via the picker.

The connection is per-organization: whoever connects becomes the "sheet owner" shown in the settings panel, and every trigger writes to sheets that account can reach.

2. Choose what creates a row

A "trigger" pairs one WhatsApp event with one sheet tab. You can start from a ready-made template or build a custom trigger from any supported event.

  • Quick-start templates: Leads Log (fires on a lead-qualifying label), Order Tracker (chat-flow completed), Call Log (call ended), Support Log (chat archived), Daily Summary (a scheduled daily row of message/contact/response-time stats). One click creates the sheet, tab and formatting.
  • Custom triggers: any of the 11 supported events, incoming/outgoing message, contact created/updated/deleted, label assigned, chat flow completed, queued message sent, lead qualified, chat archived, call completed.

Related: See the full events and templates list

3. What actually lands in the sheet

Every event ships with sensible default columns you can use as-is, or open the mapping editor to add, remove or reorder them, exclude phone numbers or message text for privacy, and (on qualifying events) add an AI-generated one-line chat summary column.

Here is the real default layout for the most common trigger, a new incoming WhatsApp message:

Default row for the "Incoming message" event
{
  "Timestamp": "2026-08-18T09:14:02Z",
  "From": "+972501234567",
  "From Name": "Sarah Cohen",
  "Chat": "+972501234567",
  "Chat Name": "Sarah Cohen",
  "Type": "text",
  "Message": "Hi, do you still have this in blue?",
  "Open Chat": "<link back to this chat in your Spun inbox>"
}

Every column is a fixed value, never a formula: WhatsApp text is written to Sheets as literal text, on purpose, so a message can never inject a working spreadsheet formula.

4. Send a test row before relying on it

  1. 1

    Create the trigger

    Save your mapping, or apply a quick-start template.

  2. 2

    Send a queued test row

    The settings panel has a "test row" action: it goes through the real delivery pipeline, not a preview, and the panel polls until the row actually appears.

  3. 3

    Check the sheet

    Confirm the row landed with the columns you expect, then send a real WhatsApp message to see it capture live.

Good to know before you rely on it

  • It is a best-effort log, not a guaranteed mirror. Two honest gaps: messages backfilled in bulk or arriving in a flood do not fire the row-creating event, and capture only becomes durable once the event is queued, so a crash at the exact wrong instant can drop a row. For a complete historical record, use the separate one-off Export History feature instead of trusting the live trigger for the past.
  • Renaming the sheet tab is safe; Spun tracks it by its internal ID, not its title, and heals the mapping automatically.
  • Google enforces its own request quotas, so a very high-volume account can occasionally see a trigger pause briefly under load. The settings panel shows the health of every trigger and why, if one pauses.

Frequently asked questions

Do I need a Zapier or Make account for this?

No. The Google Sheets sync is a native Spun integration: it talks to Google directly using your own connected account. No automation platform is involved.

Which Google account does Spun use?

Whichever account a manager or owner connects in Settings > Google Sheets. Spun only requests access to spreadsheets it creates or that you explicitly pick, not your whole Drive.

Can I map my own columns instead of the defaults?

Yes. Every trigger has a mapping editor with a live preview: add, remove or reorder columns, exclude phone numbers or message bodies, and add an AI chat-summary column on the events that support it.

What happens if I rename the sheet tab?

Nothing breaks. Spun tracks the tab by its internal Google Sheets ID, not its title, and picks up the new name automatically on the next check.

Does this capture every single message, even old ones?

Live triggers capture activity going forward and are best-effort, not a guaranteed complete mirror; bulk-imported or flood-arriving messages do not fire a row. For historical completeness, use the separate Export History action instead.

Is my data safe from formula injection or a malicious message body?

Yes. Every value Spun writes is inserted as raw literal text, never evaluated as a formula, specifically so a WhatsApp message can never plant a working spreadsheet formula in your sheet.

Set this up in your own workspace

Google Sheets sync ships on Spun’s Pro and Power plans: unlimited team members, flat monthly pricing, free trial, no per-message fees.

Start Free Trial

See all integrations

More integration recipes

HubSpot CRM · Zapier & Make