Overview
Google Sheets is the simplest place in the world to keep a list. FisherLeads is where you find online stores the moment they launch, each one confirmed live and enriched with the founder contact, platform and tech it runs on. Put the two together and you get a spreadsheet that fills itself with fresh leads, no copy and paste and no nightly export.
As soon as a new store matches the filters you set, FisherLeads sends it over and a new row appears at the bottom of your sheet, with its domain, founder email, country, niche and more already in place. The result is a living running list of every store that fits your market, ordered by the moment it went live.
A sheet is the right choice when you want something light and flexible. It is easy to share with a team, easy to sort and filter, easy to turn into a pivot table or a chart, and easy to hand to another tool as a source. You can treat it as your working pipeline, or as a staging table that feeds a CRM, an outreach tool or a dashboard downstream.
FisherLeads does not run as an add on inside Google Sheets. Instead it pushes new matching stores to you in real time as a signed webhook, which you route into a sheet with Zapier in a few clicks, or with your own code against the Sheets API, or you pull the same feed from the REST API on your own schedule. This guide covers all three.
What you can do
A live running list
Every matching new store lands as a new row the day it launches, so your sheet is always current without any manual work.
Share it with the team
A sheet is instant to share. Give reps, partners or clients a view of fresh stores without buying anyone a new seat.
Sort, filter and pivot
Order by launch date, filter by country or niche, build a pivot table or a chart. The full spreadsheet toolbox works on your leads.
Feed other tools
Use the sheet as a staging table. Downstream Zaps can read each new row and push it onward to a CRM, an alert or an outreach step.
How the integration works
There are three ways to connect FisherLeads to Google Sheets. Most people start with Zapier because it needs no code and writes a row for you automatically. Teams with a developer sometimes prefer a direct webhook or the REST API so they can shape the rows exactly as they want. All three carry the same store data, described further down.
Pick the one that fits your team. You can always start with Zapier and move to a direct integration later without changing the feed or your filters.
Set it up with Zapier (no code)
The fastest path, and the one most teams use. FisherLeads sends each new store to Zapier, and Zapier appends a row to your sheet. No code, about ten minutes, and you set it up once. Available on the Enterprise plan.
Prepare your sheet
Create a Google Sheet and add a header row, one column per field you want to keep, for example Domain, Merchant, Email, Platform, Country, Niche and Launched. Zapier maps to these headers.
Add a webhook in FisherLeads
In the dashboard, open Developers and add a webhook. Give it a filter, for example Shopify, US, verified email, so you only receive the stores you care about.
Create a catch hook in Zapier
Start a new Zap and choose Webhooks by Zapier as the trigger, with the Catch Hook event. Zapier generates a unique URL for you to copy.
Paste the URL and send a test
Copy the Zapier URL into your FisherLeads webhook, then press Test in the dashboard. Zapier catches the event so it can read the real store fields.
Add the Google Sheets action
Add a second step, choose Google Sheets and the Create Spreadsheet Row action, then connect your Google account and pick your spreadsheet and worksheet.
Map the store fields to columns
Map each FisherLeads field to the matching column: Domain, Merchant, Url, Email, Platform, Country, Niche, Launched and the rest. Leave any column blank that you do not need.
Turn it on
Publish the Zap. From now on, every new store that matches your filter is appended as a fresh row within seconds of launching, with nothing more to do.
Use your own webhook
If you would rather not use Zapier, point the FisherLeads webhook straight at your own endpoint and write rows to the Sheets API yourself. When new stores match, FisherLeads sends a single signed POST with the batch of leads. Each lead has the same shape as the API, so you can loop over the array and append a row for each one.
POST https://hooks.zapier.com/... (your catch hook URL)
Content-Type: application/json
X-FisherLeads-Event: leads.new
X-FisherLeads-Signature: 3a7f... (hmac-sha256 of the raw body)
{
"event": "leads.new",
"count": 2,
"leads": [
{
"domain": "example.com",
"url": "https://example.com",
"merchant": "Example Beauty Co",
"platform": "shopify",
"site_type": "ecommerce",
"country": "US",
"niche": "beauty",
"launched": "2026-06-30",
"email": "hello@example.com",
"phone": "+1 555 010 1234",
"socials": { "instagram": "https://instagram.com/examplebeauty" },
"tech": ["Klaviyo", "Meta Pixel"],
"revenue_band": "Small"
}
]
}Every delivery is signed so you can be sure it came from FisherLeads. Compute an HMAC SHA256 of the raw request body with your webhook secret (shown next to the webhook in the dashboard) and compare it, constant time, to the X-FisherLeads-Signature header before you write anything to your sheet.
import crypto from "crypto";
function verify(rawBody, signature, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(rawBody)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature),
);
}Use the REST API
Prefer to pull rather than be pushed to? The REST API returns the same feed, newest first, with the same filters as the dashboard. Poll it on a schedule and append the results to your sheet from your own script, for example with Apps Script or the Sheets API. Read access is on the Business plan, with higher limits on Enterprise.
curl "https://fisherleads.com/v1/leads?platform=shopify&country=US&has_email=true&page=1" \
-H "Authorization: Bearer fk_live_your_key_here"The data you get
Each store brings the fields below, the same shape across webhooks and the API. A field is left empty when we could not confirm it. Give each field its own column in your sheet and map them when you build your Zap or your own script.
| FisherLeads field | Example | Suggested column |
|---|---|---|
| domain | example.com | Domain |
| url | https://example.com | URL |
| merchant | Example Beauty Co | Merchant |
| platform | shopify | Platform |
| site_type | ecommerce | Site type |
| country | US | Country |
| niche | beauty | Niche |
| launched | 2026-06-30 | Launched |
| hello@example.com | ||
| phone | +1 555 010 1234 | Phone |
| tech | Klaviyo, Meta Pixel | Tech |
| revenue_band | Small | Revenue band |
Choose which stores sync
You almost never want every new store in your sheet. Each webhook carries a filter, set in the dashboard when you create it, so only matching stores are sent. Filter by platform, country, niche, site type, revenue band and whether the store has a verified email. Create several webhooks pointed at different sheets or different tabs if different teams track different stores.
Filtering at the source keeps your sheet focused and keeps your Zapier task usage down, since Zapier only ever sees the stores that matter to you. A tight filter also makes the sheet far easier to read, because every row already fits your market.
Keeping the sheet clean
A spreadsheet has no built in idea of a unique record, so it will happily hold the same domain twice if you let it. FisherLeads helps here by sending each store only once, when it first matches your filter, so you will not receive the same launch again from our side. For most people that alone keeps the sheet clean, and treating it as an append only log is the simplest and most reliable approach.
If you want a hard guarantee against duplicates inside the sheet itself, add a Zapier Lookup Spreadsheet Row step on the domain column before the Create Spreadsheet Row step, and only create a row when the lookup finds nothing. It costs one extra Zapier task per store but prevents a repeat row ever being written.
A third option is to let rows land freely and dedupe when you read the sheet, with a pivot table keyed on domain, a UNIQUE formula, or conditional formatting that highlights any repeated domain. Choose the approach that matches how strict your downstream use needs to be. An append only log is fine for review, a lookup step is better when the sheet feeds another automation.
Sort, pivot and report
Once your leads are in a sheet, everything Google Sheets does is available to you. Sort by the Launched column to see the very newest stores first, filter by Country or Niche to focus a campaign, and build a pivot table to count launches by platform or by week. A QUERY formula can turn the raw list into any slice you want without touching the source rows.
The sheet also makes a clean staging table. A downstream Zap can watch for each new row and push it onward, to a CRM, to a Slack alert, or into an outreach sequence, so the sheet becomes both a record you can read and a trigger for the rest of your stack. Conditional formatting can flag the rows that matter most, for example stores with a verified email or a larger revenue band, so your team works the best leads first.
Freshness, retries and reliability
Stores reach your sheet within seconds of going live. FisherLeads pushes matches as they happen rather than on a nightly batch, so the top of your list is always the latest the market has to offer.
Deliveries are reliable. Reply with any 2xx status to acknowledge a webhook. If your endpoint errors or times out, FisherLeads keeps the leads and retries on the next pass, and after repeated failures the webhook is paused automatically so a broken URL does not pile up. Use the Test button in the dashboard to send a signed ping and confirm the row writes correctly before you rely on it.
Security and your data
Every webhook is signed with an HMAC SHA256 of the body using a secret only you and FisherLeads hold, so you can verify each delivery really came from us and was not tampered with in transit.
The integration is one way: FisherLeads sends new stores to you. It does not read, store or scan anything in your Google account or your spreadsheets. Nothing from your sheet ever comes back to FisherLeads. What lands in your sheet is the public store data in the table above.
Best practices
- Add a header row first and map fields to those headers, so columns stay stable as the sheet grows.
- Filter tightly at the webhook so the sheet only fills with stores that match your ideal customer.
- Decide up front whether the sheet is an append only log or a deduplicated table, and add a lookup step if you need the latter.
- Keep the Launched column formatted as a date so sorting and pivots behave.
- Verify the signature on every delivery if you write rows from your own endpoint.
- Start with the Test event and one filter, confirm a row looks right, then widen the filter.

