Overview
Salesforce is the system of record for many sales teams, the place where leads are qualified, accounts are owned and pipeline is built. 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.
Connecting the two means your Salesforce org fills itself with fresh, high intent prospects. As soon as a new store matches the filters you set, FisherLeads sends it over, and a lead or an account appears in Salesforce, ready for a rep to work or for your automation to route. There is nothing to export by hand and no stale list to import.
FisherLeads does not install a managed package inside Salesforce. Instead it pushes new matching stores to you in real time as a signed webhook, which you route into Salesforce with Zapier in a few clicks, or with your own code against the Salesforce REST API, or you pull the same feed from the FisherLeads REST API. This guide covers all three.
What you can do
Create leads and accounts
Every matching new store becomes a Salesforce lead or account, with its website, company name, country and industry filled in.
Enrich with founder contact
The verified owner email and social profiles land on the record, so a rep can reach out on the first day the store is live.
Route and assign on arrival
A new record can fire assignment rules, drop into a queue, start a Flow or enroll in a sales cadence automatically.
Only the stores you want
Filter by platform, country, niche, revenue band or verified email, so your org only fills with leads that fit your territory.
How the integration works
There are three ways to connect FisherLeads to Salesforce. Most teams start with Zapier because it needs no code and maps straight onto the Create Record action. Teams with a Salesforce admin or developer often prefer a direct webhook or the REST API for full control over objects, record types and duplicate handling. All three carry the same store data, described further down.
Pick the one that fits your team. You can always start with Zapier to prove the flow, then move to a direct integration once you know exactly which object and fields you want.
Set it up with Zapier (no code)
The fastest path. FisherLeads sends each new store to Zapier, and Zapier creates the record in Salesforce. No code, about ten minutes, and you set it up once. Available on the Enterprise plan.
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 Salesforce as the action
Add a second step, pick Salesforce, and connect your org. Choose Create Record and select the object you want, a Lead or an Account. A store is a company, so Account or Lead is the natural fit.
Map the store fields
Map the FisherLeads fields to Salesforce fields. At a minimum, map merchant to the Company or Account Name and domain to the Website, the field Salesforce can match on. Add country, industry, email and phone for a richer record.
Test and turn it on
Run the test, confirm the record looks right in Salesforce, then switch the Zap on. From now on, every new store that matches your filter flows into your org automatically.
Use your own webhook
If you would rather not use Zapier, point the FisherLeads webhook straight at your own endpoint and call the Salesforce REST 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 upsert into whichever object, record type and field mapping your org needs.
This path gives you full control: route by territory, respect your own duplicate rules, set owners and record types, and create a Contact alongside the Account in the same transaction.
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 into Salesforce.
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 FisherLeads REST API returns the same feed, newest first, with the same filters as the dashboard. Poll it on a schedule and upsert the results into Salesforce from your own code or from a scheduled job. Read access is on the Business plan; higher limits are 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 omitted when we could not confirm it. Map them to standard or custom Salesforce fields when you build your Zap or your own sync.
| FisherLeads field | Example | Suggested Salesforce field |
|---|---|---|
| merchant | Example Beauty Co | Account or Company Name |
| domain | example.com | Website |
| url | https://example.com | Website |
| country | US | Billing Country or Country |
| niche | beauty | Industry |
| hello@example.com | Email (on the Lead or Contact) | |
| phone | +1 555 010 1234 | Phone |
| platform | shopify | Custom: Platform |
| site_type | ecommerce | Custom: Site type |
| tech | Klaviyo, Meta Pixel | Custom: Tech stack |
| product_count | 42 | Custom: Product count |
| revenue_band | Small | Custom: Estimated revenue |
| launched | 2026-06-30 | Custom: Launch date |
| socials | instagram, tiktok… | Custom: Social profiles |
Choose which stores sync
You almost never want every new store in your org. 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 with different filters if different territories or teams want different stores.
Filtering at the source keeps Salesforce clean and keeps your Zapier task usage down, since Zapier only ever sees the stores that matter to you. It also makes assignment far simpler, because a webhook scoped to one country or niche can route straight to the right queue.
Avoiding duplicate records
Salesforce has its own matching and duplicate rules, and you should lean on them. Map the FisherLeads domain to the Website field and enable a matching rule on Website, and Salesforce will flag or block a second account for the same store.
In Zapier, use the Find Record action first and fall back to Create, or use Find Record or Create, so an existing account is updated instead of duplicated. FisherLeads also deduplicates on its side: each store is sent once when it first matches, so you will not get the same launch twice.
Fire Flows, assignment rules and cadences
Because each new store lands as a real Salesforce record, everything your org already does on record creation works. Fire a lead assignment rule, drop the record into a queue, trigger a record triggered Flow, assign an owner, or enroll the new lead in a sales cadence.
A store that launched minutes ago can be owned, routed and sitting in an active cadence before your competitors have even found it. That speed is the whole point: you are working founders in their first days, when they are still choosing the tools and partners they will keep.
Freshness, retries and reliability
Stores reach Salesforce within seconds of going live. FisherLeads pushes matches as they happen rather than on a nightly batch, so your pipeline is always current.
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 everything is wired 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 your Salesforce data. Nothing from your org ever comes back to FisherLeads. What lands in Salesforce is the public store data in the table above.
Best practices
- Filter tightly at the webhook so your org only fills with stores that match your ideal customer and territory.
- Map the domain to the Website field and enable a matching rule on it so updates land on the right account and never duplicate.
- Decide up front whether a store should be a Lead or an Account, and keep the mapping consistent across all your webhooks.
- Verify the signature on every delivery if you use your own endpoint.
- Store the webhook secret somewhere safe and rotate it in the dashboard if it is ever exposed.
- Start with the Test event and one filter, confirm records look right in Salesforce, then widen the filter.

