Skip to content

Google Sheets integration

A lead log in Google Sheets

Paste one Apps Script into your sheet, deploy it as a web app, and Needle adds a row for every lead it finds - one column per field.

7-day free trial - no card. Cancel anytime.

How it works

  1. Step 1

    Save a brand and turn on Auto Search

    Add the problem phrases, competitors, and communities you care about. Needle reruns the search on your schedule.

  2. Step 2

    Add the script

    In the sheet, open Extensions → Apps Script, replace the sample code with needle-google-sheets.gs, and save.

  3. Step 3

    Deploy it as a web app

    Deploy → New deployment → Web app. Execute as: Me. Who has access: Anyone. Authorize it, then copy the URL ending in /exec.

  4. Step 4

    Test and enable in Needle

    Paste the /exec URL under Alerts & Integrations → Google Sheets and click Test and enable. The test writes the header row only.

Why teams log Needle leads in Sheets

Available on the Growth plan and up.

  • Nothing to install

    The script runs in your own Google account. Needle never gets access to your Drive.

  • Work the list your way

    Add owner, status, or notes columns to the right of the Needle columns; the script leaves them alone.

  • No duplicate rows

    The script skips an event_id it has already written, on top of Needle’s own 30-day dedupe.

Download the Apps Script

One file, with the setup steps in its header comment.

Download script (.gs)

needle-google-sheets.gs

  • Writes to a tab named "Needle leads", created on the first request, with a frozen header row.
  • Test events from Needle write the header row and no data row, so a test never leaves a fake lead in your sheet.
  • Skips duplicates by checking the last 500 rows and a 6-hour cache of event_ids.
  • After editing the script, use Deploy → Manage deployments → Edit → New version so the same /exec URL serves the new code.

Columns the script writes

In this order, from the flat LeadEvent v1 payload. Reading columns come first, ids last.

ColumnFrom the event
occurred_atoccurred_at
brand_namebrand.name
lead_tierlead.tier
lead_platformlead.platform
lead_titlelead.title
lead_urllead.url
lead_authorlead.author
lead_excerptlead.excerpt
lead_posted_atlead.posted_at
lead_scorelead.lead_score
lead_relevancelead.relevance
lead_intent_typelead.intent_type
lead_evidencelead.evidence
lead_matched_termlead.matched_term
lead_competitor_mentionslead.competitor_mentions, joined as "A, B"
lead_dashboard_urllead.dashboard_url
brand_idbrand.id
lead_idlead.id
eventevent
schemaschema
event_idevent_id

When Google Sheets is the wrong choice

  • Every request must be verified

    Apps Script cannot read request headers, so the script cannot check the signature. The /exec URL is the secret. If that is not enough, put n8n or your own endpoint in front of the sheet.

  • You want leads in a CRM

    On Scale, HubSpot and Pipedrive create one record per lead directly.

  • You want to be alerted, not to log

    A sheet does not ping anyone. Pair it with Slack or Google Chat alerts.

Checked 2026-10-30

  • Google Apps Script: a web app’s doPost(e) receives the request body but not its headers, and web apps answer POST with a 302 redirect, which Needle treats as success. Source

Frequently asked questions

Setup, limits, and every platform are covered in the docs.

Which URL do I paste into Needle?
The web app URL from your deployment: https://script.google.com/macros/s/…/exec. Needle rejects sheet links and other script.google.com URLs.
Is the request signed?
Needle signs it, but Apps Script cannot read the X-Needle-Signature header, so the script cannot verify it. Keep the /exec URL private. If it leaks, create a new deployment, paste the new URL in Needle, and archive the old one.
Can I change the columns?
Add your own to the right of the Needle columns at any time. To reorder Needle columns, edit COLUMNS in the script before rows exist, then deploy a new version.
Does Google Sheets get one request per lead or a digest?
One per lead. Needle sends one request per hot or worth-engaging lead after each Auto Search run - at most 25 per destination per run - and never sends the same lead to the same destination twice within 30 days. Runs follow the interval you set per brand: every 4 to 24 hours on Growth, as often as hourly on Scale.
Which plan includes Google Sheets?
Google Sheets is available on the Growth plan and up. The 7-day free trial lets you try it first.
Does Needle reply or post for me?
No. Needle finds and ranks conversations and can draft a reply for you to edit. You decide whether to respond, and you post it yourself.

Connect Needle to Google Sheets today

Send ranked buyer threads to Google Sheets on your Auto Search schedule, so the conversations worth replying to land where your team already works.