Security

Last updated 8 October 2026

How prospects.fyi handles your CRM, your email and your data, for the person who has to approve it. It is written from the code, so every line here is something the service does today. The privacy page covers everything else we store.

The short version

  • Salesforce enforces your own permissions on everything we read or write.
  • We write only our own fields, fill a standard field only when it is blank, and never delete a record.
  • Nothing is pushed until a rep presses the button.
  • What we read from your Salesforce stays with your account, is never shared with anyone else, and is never sent to an AI model.
  • Tokens are encrypted, and disconnecting revokes them and deletes what we read.

Your CRM: Salesforce

Connecting.A rep connects through Salesforce’s own sign-in (OAuth 2.0 with PKCE). We ask for two permissions: api and refresh_token. Salesforce applies the connected user’s own profile, permission sets and sharing rules to every read and write, so we can never see or change more than that user can.

Recommended. Connect a dedicated integration user that holds only the Prospects_Integration permission set: read, create and edit on Accounts, Contacts and Leads and our own fields, with no delete, no View All and no Modify All. If the connected user can view or modify all data, Settings says so and recommends that dedicated user.

What we write.

  • Our own fields, the ones that start with pfyi__.
  • Standard fields only where they are blank, and only when your settings allow it.
  • We never overwrite a value that is already there, and never delete a record.
  • We only push when a rep presses Send to Salesforce. Nothing is written in the background.

What we read. Only what is needed to avoid duplicates and to keep a rep off accounts your org already has:

  • Before a push: the record id and the standard fields a push might fill.
  • For each Account, when “Skip companies already in Salesforce” is on: its name, website, owner, type, created date, last activity date, and whether it has a won or an open opportunity.
  • Any field your admin names in a rule, which can only be one of your org’s own fields. Fields that belong to an installed package (ZoomInfo’s, or any other vendor’s) cannot be chosen, so we never read them.

Rules. The first account to connect an org is its admin. Only the admin can change which accounts are left alone, and an attempt by anyone else is refused and logged.

Your email: Gmail

Connecting Gmail is open to invited accounts only for now. When a rep connects it, we use it to send or draft the emails they write in prospects.fyi, and to check the threads they sent from here for a reply: who replied, when, and the short preview Gmail shows. We read message details, not full message bodies, and only on those threads. The token is sealed the same way as Salesforce’s, and disconnecting revokes it at Google.

What we keep, and for how long

  • Accounts read from Salesforce are kept per prospects.fyi account, never pooled across customers. They are read again once a week while you are connected; any Account not read again within 30 days is deleted by a daily job, and all of them are deleted at once when you disconnect.
  • A note on a company in your drop, such as “In Salesforce: owned by Sam Reed, last touched Mar 2026”, is worked out from those Accounts when your morning email is built and appears only in that email. We do not store it.
  • The record of what we pushed where (the Salesforce id of each record we created or updated) is kept so a second push updates instead of duplicating.
  • The activity log is kept for one year.
  • The shared company recordholds public research only: what web pages and government records, such as FMCSA filings, say about a company. Any rep’s research can add to it, and it is shared across users. Nothing read from your CRM is ever written into it.

Encryption

  • Salesforce and Gmail refresh tokens are sealed with AES-256-GCM before they are stored, under keys held outside the database. Salesforce tokens can have a key of their own, so it can be rotated on its own.
  • Access tokens are never stored. Each job asks for a fresh one.
  • Everything travels over HTTPS.

Access and audit

  • The tables holding CRM and email data have row-level security on with no policies, so only our own server can reach them. No browser can query them directly.
  • Every connect, disconnect, sync, push, rules change and refused change is logged with record counts, never record contents. Settings shows each account its own activity.

AI and your data

Research and writing use Anthropic’s Claude through its API. What goes to the model is public research about companies and what you tell us about what you sell. No name, record or field from your Salesforce is ever sent to a model.It is used to compare against a company’s name and website after research is done. If your admin turns on “aim leads at companies like our customers”, one line of counts goes into the research request, such as “food manufacturing (12), Texas (9), 51-200 people (8)”. Those industries, states and sizes come from our own public research on your customers’ websites, not from your CRM. Off unless your admin turns it on. Under Anthropic’s commercial terms, data sent through its API is not used to train its models.

Subprocessors

The companies that process data for us, on our behalf and for nothing else.

NameWhat forData
VercelHosting the site and its servers, and analyticsEvery request to the site, in passing
SupabaseThe databaseEverything the service stores, including sealed tokens and Accounts read from Salesforce
AnthropicThe AI model behind research and writingCompany research and what you tell us about what you sell. Never data read from your CRM
ResendSending the morning email and sign-in codesYour email address and the email's contents
TwilioSign-in codes by textYour phone number, if you add one
StripePaymentsBilling details for paid plans
GoogleAnalytics, and Gmail for accounts that connect itPage views; for Gmail, the mail you send and reply details on those threads
SalesforceYour own CRM, only for accounts that connect itWhat a rep pushes, and the Account details listed above

Our database is hosted in the United States, in AWS US East.

Reporting a security issue

If you find a security problem, write to colin@prospects.fyi with what you found and how to reproduce it. It goes straight to the person who runs the service. Please give us a chance to fix it before telling anyone else.