# pipe0 > pipe0 builds revenue systems at any scale, on one engine with three layers. For a rep's day-to-day: a Slack bot (@pipe0) that researches accounts, finds contact data, and prepares meeting briefs. For revenue systems: Sheets, a Clay-style spreadsheet UI with tables that hold 2M records, plus schedules, reports and point-in-time recovery, so any list becomes an always-on play. For infrastructure: a developer API and an MCP server for signal engines, lead routing and CRM sync, reachable from agents like Claude Code, ChatGPT and Cursor. Two primitives underlie all of it — searches find records, pipes enrich them — composed over 50+ data providers to find and validate emails, enrich people and companies, and automate sales workflows. ## Product - [pipe0](https://pipe0.com): Revenue systems at any scale — Slack copilot, always-on plays, and enrichment infrastructure - [Enrichment & search API](https://pipe0.com/enrichment-api): One call across 50+ providers and 1B+ profiles, built to sit inside your own product - [Pricing](https://pipe0.com/pricing): Usage-based credits, free tier, no credit card required - [pipe0 vs Clay](https://pipe0.com/compare/pipe0-vs-clay): Factual comparison for data enrichment and sales automation - [pipe0 vs Apollo](https://pipe0.com/compare/pipe0-vs-apollo): Outreach platform with one database vs agentic GTM workspace with 50+ providers - [pipe0 vs ZoomInfo](https://pipe0.com/compare/pipe0-vs-zoominfo): Enterprise B2B database vs usage-priced multi-provider enrichment - [pipe0 vs FullEnrich](https://pipe0.com/compare/pipe0-vs-fullenrich): Curated waterfalls in a full engine vs a focused email and phone waterfall ## Docs - [Authentication](https://pipe0.com/docs/authentication): Create an API key and send authenticated requests. - [Autocomplete](https://pipe0.com/docs/autocomplete): Resolve the values a config field accepts. - [Billing](https://pipe0.com/docs/billing): How pipe0 bills pipes and searches in credits, and how subscriptions work. - [Core concepts](https://pipe0.com/docs/concepts): The mental model behind every pipe0 request. Records, fields, sync vs async, and sandbox vs production. - [Connections](https://pipe0.com/docs/connections): How requests authenticate with external providers, and how to bring your own API keys. - [Quickstart](https://pipe0.com/docs): Make your first pipe0 request. Find email addresses, phone numbers, and LinkedIn data through the API, the UI, or MCP. - [Rate limits](https://pipe0.com/docs/rate-limits): pipe0's error-free rate limiting — runs are always accepted and prioritized by how much work you have queued. How task priorities, capacity headers, cancellation, and the two safety limits work. - [Versions and deprecation](https://pipe0.com/docs/versions): Pipe and search ids end in a version number. Always build on the newest version that is not deprecated, and replace deprecated ids you find in existing code. - [Enrichment script (TypeScript)](https://pipe0.com/docs/examples/basic-script-typescript): A minimal TypeScript script that enriches records through the pipe0 API. - [Search script (TypeScript)](https://pipe0.com/docs/examples/basic-search-typescript): A minimal TypeScript script that searches for leads through the pipe0 API. - [Qualify & email](https://pipe0.com/docs/examples/qualify-and-email): Enrich a LinkedIn profile, decide if the person is an ICP fit, and email the ones that are. - [Search then enrich](https://pipe0.com/docs/examples/search-then-enrich): Run a people search and pipe the results straight into an enrichment request. - [Signup alerts](https://pipe0.com/docs/examples/signup-alerts): Post a Slack alert when a high-value user signs up. - [Headless UI (Beta)](https://pipe0.com/docs/sdks/form-ui): React components for rendering pipe0 forms and catalog pickers. - [MCP Server](https://pipe0.com/docs/sdks/mcp): Connect AI agents and LLM clients to pipe0 using the Model Context Protocol (MCP). - [Slack Agent](https://pipe0.com/docs/sdks/slack-agent): Mention @pipe0 in Slack to search, enrich, and run workflows from a channel or a direct message. - [TypeScript Client](https://pipe0.com/docs/sdks/typescript-client): Strongly-typed TypeScript SDK for running enrichment pipes and provider searches against the pipe0 API. - [Concepts](https://pipe0.com/docs/pipes/concepts): Single-provider and waterfall pipes, and the two field modes that shape a pipe's config. - [Overview](https://pipe0.com/docs/pipes): Pipes add fields to your input records. Use them to find email addresses, phone numbers, and profiles, or to trigger actions like Slack messages. - [Inputs](https://pipe0.com/docs/pipes/inputs): pipe0 cleans your input data before processing. It fixes common format errors and handles missing fields per record instead of failing the task. - [Request payload](https://pipe0.com/docs/pipes/request-payload): The pipes request payload contains your input data and the list of pipes to run over it. - [Response object](https://pipe0.com/docs/pipes/response-object): The response object contains your enriched records, along with metadata about the run. - [Conditional runs](https://pipe0.com/docs/pipes/run-if): Use run_if to run a pipe only for records that match conditions. - [Templates](https://pipe0.com/docs/pipes/templates): Reference record fields and declare outputs in text fields, using a whitelisted subset of Liquid. - [Overview](https://pipe0.com/docs/search): Search creates records from filters. Use it to find people and companies, often called prospecting, list building, or sourcing. - [Pagination](https://pipe0.com/docs/search/pagination): Fetch every page of a search result by passing next_page back as the search payload. - [Request payload](https://pipe0.com/docs/search/request-payload): The search request payload describes what you want to find. Combine a search with filters to find companies or people. - [Response object](https://pipe0.com/docs/search/response-object): The response object contains your search results, along with metadata about your search. ## Sheets - [Import rows and run searches](https://pipe0.com/docs/sheets/add-rows): Add rows from a CSV import or a search. Pull from prospecting sources like Crustdata and from HubSpot, Salesforce, Attio, Postgres, or Databricks. - [Work with AI agents](https://pipe0.com/docs/sheets/ai-agents): Let Claude Code, ChatGPT, or Cursor run your sheets through the pipe0 MCP server. Agents get 100+ enrichments and searches, schedules, and reports. - [Clean up rows with effects](https://pipe0.com/docs/sheets/clean-up): Deduplicate rows and filter them with a prompt. Effects preview a diff before applying, and every effect shows up in the sheet history. - [How a sheet runs](https://pipe0.com/docs/sheets/concepts): Columns declare pipes, cells carry statuses, and a run only recomputes stale cells. The mental model behind every sheet. - [Enrich rows](https://pipe0.com/docs/sheets/enrich): Add pipe columns that fill in work emails and phone numbers for every row. Waterfall pipes bill only the provider that returned a result. - [Export and CRM sync](https://pipe0.com/docs/sheets/export): Export a sheet to CSV or write enriched rows back to HubSpot, Salesforce, or Attio. Finish a partial CRM write safely with adopt. - [Pipe0 Sheets](https://pipe0.com/docs/sheets): A data enrichment spreadsheet where columns run pipes over rows. The no-code Clay alternative for sales automation and GTM teams, built on the pipe0 API. - [Limits and scale](https://pipe0.com/docs/sheets/limits): A sheet holds up to 2 million rows. How virtualized rendering, batched background runs, and cold storage keep large sheets responsive. - [Build your first sheet](https://pipe0.com/docs/sheets/quickstart): Create a sheet, add rows with a search, enrich them with a pipe column, and export a CSV. Five minutes, no code. - [Undo and point-in-time recovery](https://pipe0.com/docs/sheets/recovery): Every sheet change is an effect in an append-only history. Create restore points, travel back to them, and undo mistakes without losing rows. - [Reports](https://pipe0.com/docs/sheets/reports): Build versioned reports from sheet data with metric, chart, and data table components. Snapshots freeze the data; email delivery ships it. - [Schedule runs](https://pipe0.com/docs/sheets/schedules): Run enrichment and report delivery on a cron schedule with timezone support. Drip through large sheets with window scheduling. - [When you don't need a sheet](https://pipe0.com/docs/sheets/stateless): pipe0 runs stateless too. One-shot API calls and MCP runs for enrich-on-signup, agent lookups, and actions, and how they hand off to a sheet. ## API Reference - [API Reference](https://pipe0.com/docs/api): REST endpoints for pipe0, grouped by product. Each endpoint shows request and response schemas with an interactive playground. - [Check search run](https://pipe0.com/docs/api/search/check): Check the status and collect results of an asynchronous search run via the pipe0 API. - [Run search (sync)](https://pipe0.com/docs/api/search/run-sync): Run a people or company search and get results in one synchronous API response. - [Run search (async)](https://pipe0.com/docs/api/search/run): POST /v1/search/run — find people and companies with asynchronous searches via the pipe0 data enrichment API. - [Check pipes run](https://pipe0.com/docs/api/pipes/check): Check the status and collect the results of an asynchronous pipe run via the pipe0 API. - [Run pipes (sync)](https://pipe0.com/docs/api/pipes/run-sync): POST /v1/pipes/run/sync — run data enrichment pipes and get results in a single synchronous response. - [Run pipes (async)](https://pipe0.com/docs/api/pipes/run): POST /v1/pipes/run — run data enrichment pipes asynchronously over your records. Request and response schemas, authentication, and examples. ## Pipe Catalog - [Pipe Catalog](https://pipe0.com/docs/pipe-catalog): Browse enrichment pipes - [AI prompt (prompt:run@1)](https://pipe0.com/docs/pipe-catalog/prompt:run/1): Executes configurable AI prompts with structured output fields. - [AI agent (agent:run@1)](https://pipe0.com/docs/pipe-catalog/agent:run/1): Runs an AI research agent with web tools and structured output fields. - [Company news (company:newssummary:domain@1)](https://pipe0.com/docs/pipe-catalog/company:newssummary:domain/1): Find recent company news by performing a search and scrape. - [Tech stack (company:techstack:builtwith@2)](https://pipe0.com/docs/pipe-catalog/company:techstack:builtwith/2): All technologies and frameworks powering a given website. - [Website from email (company:domain:workemail@1)](https://pipe0.com/docs/pipe-catalog/company:domain:workemail/1): Extract the company website URL from a work email address. - [Funding history (company:funding:waterfall@1)](https://pipe0.com/docs/pipe-catalog/company:funding:waterfall/1): Funding rounds, investors, and total funding in a waterfall motion. - [Work email from name (person:workemail:waterfall@1)](https://pipe0.com/docs/pipe-catalog/person:workemail:waterfall/1): Find work email addresses in a waterfall motion. - [Work email checker (email:iswork@1)](https://pipe0.com/docs/pipe-catalog/email:iswork/1): Check if a given email address is personal or professional. - [Split name (person:name:split@1)](https://pipe0.com/docs/pipe-catalog/person:name:split/1): Split a full name into first and last name. - [Join name (person:name:join@1)](https://pipe0.com/docs/pipe-catalog/person:name:join/1): Combine the first and last names of a prospect into a full name field. - [Company overview (company:overview@3)](https://pipe0.com/docs/pipe-catalog/company:overview/3): Business description, industry, and financial information. - [JSON extract (json:extract:multi@1)](https://pipe0.com/docs/pipe-catalog/json:extract:multi/1): Extract nested JSON properties into new output fields. - [Send email with Resend (email:send:resend@1)](https://pipe0.com/docs/pipe-catalog/email:send:resend/1): Send an email with Resend. - [Create Contact (contact:create:resend@1)](https://pipe0.com/docs/pipe-catalog/contact:create:resend/1): Create a contact inside a Resend audience. - [Enroll Lead in Campaign (lead:enroll:lemlist@1)](https://pipe0.com/docs/pipe-catalog/lead:enroll:lemlist/1): Add a lead to a lemlist campaign sequence, with custom variables. - [Enroll Lead in Campaign (lead:enroll:instantly@1)](https://pipe0.com/docs/pipe-catalog/lead:enroll:instantly/1): Add a lead to an Instantly campaign, with custom variables. - [Enroll Prospect in Sequence (lead:enroll:nooks@1)](https://pipe0.com/docs/pipe-catalog/lead:enroll:nooks/1): Enroll a Nooks prospect into a Nooks sequence. - [Nooks prospect match (prospect:match:nooks@1)](https://pipe0.com/docs/pipe-catalog/prospect:match:nooks/1): Find the Nooks prospect for an email address. Nooks prospects are synced from your CRM; a clean miss completes with found = false. - [Nooks user match (user:match:nooks@1)](https://pipe0.com/docs/pipe-catalog/user:match:nooks/1): Find the Nooks user (a seat in your workspace) for an email address — e.g. to route each enrollment to the right owner. - [Enroll Lead in Sequence (lead:enroll:amplemarket@1)](https://pipe0.com/docs/pipe-catalog/lead:enroll:amplemarket/1): Add a lead to an Amplemarket sequence, with custom dynamic fields. - [Send email (email:send:gmail@1)](https://pipe0.com/docs/pipe-catalog/email:send:gmail/1): Send an email with Gmail. - [Create email draft (email:draft:gmail@1)](https://pipe0.com/docs/pipe-catalog/email:draft:gmail/1): Create a draft email in Gmail (does not send). - [Send message into channel (message:send:slack@1)](https://pipe0.com/docs/pipe-catalog/message:send:slack/1): Send a Slack message to a channel. - [Send direct message (message:send-direct:slack@1)](https://pipe0.com/docs/pipe-catalog/message:send-direct:slack/1): Send a Slack direct message to a workspace member. - [Message writer (message:write@1)](https://pipe0.com/docs/pipe-catalog/message:write/1): An AI agent specialized in composing messages for modern workplace communication platforms (Slack, Teams, Discord, etc.) - [Email writer (email:write@1)](https://pipe0.com/docs/pipe-catalog/email:write/1): An AI agent specialized in composing emails. - [Fill a text template (template:fill@1)](https://pipe0.com/docs/pipe-catalog/template:fill/1): Replaces template tags like {{ name }} with actual values. - [Merge fields (fields:merge@1)](https://pipe0.com/docs/pipe-catalog/fields:merge/1): Join one or more fields into one field. The final result will be the first defined field. A single-source merge establishes a stable output name that additional sources can join later without consumers changing. - [Slugify field (field:slugify@1)](https://pipe0.com/docs/pipe-catalog/field:slugify/1): Strip a field value of characters not commonly found in slugs. - [Extract domain (field:domainify@1)](https://pipe0.com/docs/pipe-catalog/field:domainify/1): Transform URL input into a domain. Also tolerates bare domains and email addresses (the part after @ is used). Examples: 'https://go.com' → 'go.com'; 'jane@acme.io' → 'acme.io'. - [Timestamp (field:timestamp@1)](https://pipe0.com/docs/pipe-catalog/field:timestamp/1): Write the moment the pipe ran (ISO 8601, UTC) into a column — optionally offset into the future/past or truncated to a date. The building block for freshness cadences, follow-up dates, and expiry columns. - [Formula (formula:run@1)](https://pipe0.com/docs/pipe-catalog/formula:run/1): Compute a value per row with a JavaScript formula over mapped columns — cleanup, math, conditionals, date arithmetic — without an external provider. - [Sales signals from profile (signals:personprofilematch@1)](https://pipe0.com/docs/pipe-catalog/signals:personprofilematch/1): Detect sales signals — job changes, promotions, role changes, work anniversaries, graduations — from a standardized person profile inside a per-row time window. - [HTTP request (http:request@1)](https://pipe0.com/docs/pipe-catalog/http:request/1): Make a generic GET/POST/PUT/PATCH/DELETE HTTP request and capture the JSON response. Optionally validate the response against a JSON schema. - [Append row to sheet (row:append:sheet@1)](https://pipe0.com/docs/pipe-catalog/row:append:sheet/1): Add rows to a pipe0 sheet in a given project. config.project and config.sheet may each be a literal slug or a `{{ field_name }}` tag. - [Claim (bucket:claim@1)](https://pipe0.com/docs/pipe-catalog/bucket:claim/1): Claim an entry in a bucket (write-if-absent). Wins (is_claim_successful: true) or finds the entry already taken (no_result). Put this before a write pipe to guard against duplicates across sheets, runs, and time. - [Enroll in stream (stream:enroll@1)](https://pipe0.com/docs/pipe-catalog/stream:enroll/1): Add this row's identifier to a stream's watch list, so changes about that person arrive as updates. Free; the stream must already exist. - [Remove from stream (stream:unenroll@1)](https://pipe0.com/docs/pipe-catalog/stream:unenroll/1): Take this row's identifier off a stream's watch list, so it stops being watched and stops costing money. Free. - [Count (bucket:count@1)](https://pipe0.com/docs/pipe-catalog/bucket:count/1): Assign the next sequence number to an entry in a counter bucket, exactly once (a re-run returns the same number). The building block for round-robin lead routing. - [Check (bucket:check@1)](https://pipe0.com/docs/pipe-catalog/bucket:check/1): Look up an entry in an existing claim bucket WITHOUT writing. Present → no_result (e.g. suppressed); absent → completed. For suppression / do-not-contact / already-seen gates. - [Count if (bucket:countif@1)](https://pipe0.com/docs/pipe-catalog/bucket:countif/1): Count events per entry in an event-counter bucket: each run where the condition matches increments the entry's count; otherwise the current count is read unchanged. Outputs the running count and when it last changed. - [Expand list to sheet (row:expandappend:sheet@1)](https://pipe0.com/docs/pipe-catalog/row:expandappend:sheet/1): Expand a list into sheet rows — each item is written as-is to an `expanded_value` column (objects/arrays as json). - [Round-robin from sheet (row:roundrobin:sheet@1)](https://pipe0.com/docs/pipe-catalog/row:roundrobin:sheet/1): Rotate through the rows of another sheet (e.g. a sellers roster). Each unique counter value picks the next row round-robin; the selected columns of the picked row become outputs. Re-run safe — the same counter value always picks the same row. - [Find rows in sheet (rows:find:sheet@1)](https://pipe0.com/docs/pipe-catalog/rows:find:sheet/1): Look up rows in another pipe0 sheet matching a condition block (and/or over eq, neq, gt, gte, lt, lte, contains, matches). Outputs the total match count, the matching rows, and their record IDs. - [Delete rows in sheet (rows:delete:sheet@1)](https://pipe0.com/docs/pipe-catalog/rows:delete:sheet/1): Delete rows in ANOTHER pipe0 sheet matching a condition block. The replace-on-refresh building block: delete previously written downstream rows before re-appending fresh ones. - [Find rows in Postgres (rows:find:postgres@1)](https://pipe0.com/docs/pipe-catalog/rows:find:postgres/1): Look up rows in your own PostgreSQL database with a read-only SQL query resolved per row. Outputs the total match count and the matching rows. - [Find rows in Databricks (rows:find:databricks@1)](https://pipe0.com/docs/pipe-catalog/rows:find:databricks/1): Look up rows in your own Databricks SQL warehouse with a read-only SQL query resolved per row. Outputs the total match count and the matching rows. - [Find company lookalikes (company:lookalikes:companyenrich@2)](https://pipe0.com/docs/pipe-catalog/company:lookalikes:companyenrich/2): Find companies similar to the company you provide as input. - [Role finder (role:waterfall@1)](https://pipe0.com/docs/pipe-catalog/role:waterfall/1): Find one person at a company holding a given job title like "CEO" or "CFO". - [Role finder (multiple) (roles:waterfall@1)](https://pipe0.com/docs/pipe-catalog/roles:waterfall/1): Find every person at a company holding one of the given job titles, as a list. Expand it into rows to enrich each person. - [LinkedIn posts (person:posts:content:crustdata@1)](https://pipe0.com/docs/pipe-catalog/person:posts:content:crustdata/1): Find list of recent LinkedIn posts. - [X posts (profile:posts:x@1)](https://pipe0.com/docs/pipe-catalog/profile:posts:x/1): Find the recent X (Twitter) posts of an account by handle. - [Post on X (post:create:x@1)](https://pipe0.com/docs/pipe-catalog/post:create:x/1): Publish a post from your connected X (Twitter) account. - [LinkedIn ads (ads:linkedin:waterfall@1)](https://pipe0.com/docs/pipe-catalog/ads:linkedin:waterfall/1): The ads a company is running in the LinkedIn ad library, with their creative. - [Google ads (ads:google:waterfall@1)](https://pipe0.com/docs/pipe-catalog/ads:google:waterfall/1): The creatives a company is running in the Google Ads Transparency Center, with their variations. - [Meta ads (ads:meta:waterfall@1)](https://pipe0.com/docs/pipe-catalog/ads:meta:waterfall/1): The ads a company is running in the Meta Ad Library (Facebook, Instagram), with their creative. - [Work email from LinkedIn URL (person:workemail:profileurl:waterfall@1)](https://pipe0.com/docs/pipe-catalog/person:workemail:profileurl:waterfall/1): Find work email addresses from B2B profile. - [Full LinkedIn profile from email (person:identity:email:waterfall@2)](https://pipe0.com/docs/pipe-catalog/person:identity:email:waterfall/2): The standard reverse email lookup: email address → the person behind it, as their LinkedIn profile_url plus a full standardized profile (current role and company, work history, education, seniority, location). - [Company match (company:match:crustdata@2)](https://pipe0.com/docs/pipe-catalog/company:match:crustdata/2): Company data like headcount distribution, LinkedIn URLs etc. via the Crustdata API. - [Company match (company:match:amplemarket@1)](https://pipe0.com/docs/pipe-catalog/company:match:amplemarket/1): Company data via the Amplemarket API: headcount by department and job function, funding events, technologies, locations and LinkedIn presence. Matches on domain, LinkedIn URL, or both. - [Open jobs (company:jobs:amplemarket@1)](https://pipe0.com/docs/pipe-catalog/company:jobs:amplemarket/1): Qualify a company on whether it is hiring for a role you care about. Returns its open postings as one list, filtered by function, department, seniority and remote-only. Coverage is partial — many companies return no matching postings — so it suits qualifying rows you already have; to FIND companies hiring, start from a jobs search. - [HubSpot contact match (contact:match:hubspot@1)](https://pipe0.com/docs/pipe-catalog/contact:match:hubspot/1): Check whether a contact exists in your HubSpot portal by email. Matches the primary email exactly (and optionally secondary emails); a clean miss completes with found = false. - [HubSpot company match (company:match:hubspot@1)](https://pipe0.com/docs/pipe-catalog/company:match:hubspot/1): Check whether a company exists in your HubSpot portal by domain. Domain is HubSpot's dedupe key but not unique — 0..N matches are normal; the primary match is the oldest record. - [HubSpot deal match (deal:match:hubspot@1)](https://pipe0.com/docs/pipe-catalog/deal:match:hubspot/1): Find deals in your HubSpot portal for a company (by domain) or contact (by email) via HubSpot's association graph — deals have no natural key of their own. - [HubSpot update object (object:update:hubspot@1)](https://pipe0.com/docs/pipe-catalog/object:update:hubspot/1): Update a HubSpot record (standard or custom object) by its record ID, mapping columns to properties. Blank values are skipped by default so un-enriched cells never erase CRM data. - [HubSpot associated objects (object:associations:hubspot@1)](https://pipe0.com/docs/pipe-catalog/object:associations:hubspot/1): Retrieve the HubSpot records associated with a source record — one level of joins across standard and custom objects (e.g. a company's deals, or a custom object linked to a company). - [HubSpot log activity (activity:log:hubspot@1)](https://pipe0.com/docs/pipe-catalog/activity:log:hubspot/1): Log an activity in HubSpot — a note, task, call, email, or meeting engagement — and associate it with a contact, company, deal, or custom object so it shows on the record's timeline. - [Salesforce person match (person:match:salesforce@1)](https://pipe0.com/docs/pipe-catalog/person:match:salesforce/1): Check whether a person exists in your Salesforce org by email — across Contacts, Leads, and Person Accounts in one call, with deterministic precedence and converted-lead redirect. A clean miss completes with found = false. - [Salesforce account match (account:match:salesforce@1)](https://pipe0.com/docs/pipe-catalog/account:match:salesforce/1): Find accounts in your Salesforce org by company domain. Salesforce has no domain field, so the match probes exact spellings of the Website URL (never substring matching). Multiple matches are normal; a clean miss completes with count = 0. - [Salesforce opportunity match (opportunity:match:salesforce@1)](https://pipe0.com/docs/pipe-catalog/opportunity:match:salesforce/1): Find opportunities in your Salesforce org for a company (by domain, via the matched account) or person (by email, via contact roles) — opportunities have no natural key of their own. A clean miss completes with count = 0. - [Salesforce record lookup (record:lookup:salesforce@1)](https://pipe0.com/docs/pipe-catalog/record:lookup:salesforce/1): Fetch a full Salesforce record (any standard or custom object) by its record ID — every field visible to the connected user. A deleted or missing record completes with found = false. - [Salesforce update record (record:update:salesforce@1)](https://pipe0.com/docs/pipe-catalog/record:update:salesforce/1): Update a Salesforce record (standard or custom object) by its record ID, mapping columns to fields. Blank values are skipped so un-enriched cells never erase CRM data; the output carries the fresh post-save record. - [Salesforce assert record (record:assert:salesforce@1)](https://pipe0.com/docs/pipe-catalog/record:assert:salesforce/1): Create-or-update (upsert) a Salesforce record anchored on an External ID field — Salesforce's native idempotent write. One matching record updates, none creates; `created` says which happened. - [Salesforce activities (activities:find:salesforce@1)](https://pipe0.com/docs/pipe-catalog/activities:find:salesforce/1): Read a Salesforce record's activity timeline — tasks and events (calls, emails, meetings) associated with a contact, lead, account, or opportunity. Returns the true activity count, the last-activity date, and the timeline items. An empty timeline completes with count = 0. - [Salesforce log activity (activity:log:salesforce@1)](https://pipe0.com/docs/pipe-catalog/activity:log:salesforce/1): Log an activity in Salesforce as a Task (the native 'Log a Call' idiom — subtype call/email/task) against a contact, lead, account, or opportunity. Optionally rerun-safe via an External ID idempotency key. - [Attio person match (person:match:attio@1)](https://pipe0.com/docs/pipe-catalog/person:match:attio/1): Check whether a person exists in your Attio workspace by email. email_addresses is Attio's unique identity attribute, so any address on a record matches exactly; a clean miss completes with found = false. - [Attio company match (company:match:attio@1)](https://pipe0.com/docs/pipe-catalog/company:match:attio/1): Check whether a company exists in your Attio workspace by domain. Exact domain values are unique (at most one match); root-domain matching also finds subdomain records. A clean miss completes with a count of 0. - [Attio deal match (deal:match:attio@1)](https://pipe0.com/docs/pipe-catalog/deal:match:attio/1): Find deals in your Attio workspace linked to a company (by domain) or person (by email), optionally narrowed to specific stages. Deals have no natural key — matching traverses the relationship. A clean miss completes with a count of 0. - [Attio match record (record:match:attio@1)](https://pipe0.com/docs/pipe-catalog/record:match:attio/1): Find one record of ANY Attio object (custom objects included) by a unique attribute — the generic find-by-key. A clean miss completes with found = false. - [Attio lookup record (record:lookup:attio@1)](https://pipe0.com/docs/pipe-catalog/record:lookup:attio/1): Fetch one Attio record of any object (custom objects included) by its record ID — the full record with every attribute. A missing record completes with found = false. - [Attio update record (record:update:attio@1)](https://pipe0.com/docs/pipe-catalog/record:update:attio/1): Update an Attio record (standard or custom object) by its record ID, mapping columns to attributes. Blank values are skipped so un-enriched cells never erase CRM data. - [Attio find activities (activities:find:attio@1)](https://pipe0.com/docs/pipe-catalog/activities:find:attio/1): Read the activity timeline of one Attio record — notes, meetings, and tasks linked to it — merged newest-first. A record with no activity completes with found count = 0. - [Validate email (email:validate:zerobounce@1)](https://pipe0.com/docs/pipe-catalog/email:validate:zerobounce/1): Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active. - [Validate email (person:email:validate:millionverifier@1)](https://pipe0.com/docs/pipe-catalog/person:email:validate:millionverifier/1): Verify email addresses to ensure is deliverability. - [Personal email from LinkedIn (person:personalemail:profileurl:waterfall@1)](https://pipe0.com/docs/pipe-catalog/person:personalemail:profileurl:waterfall/1): Find the personal email address of a prospect by using a professional profile URL as input. - [Mobile number from email (person:mobile:workemail:waterfall@1)](https://pipe0.com/docs/pipe-catalog/person:mobile:workemail:waterfall/1): Find a mobile phone number for a prospect. - [Extract (website:extract:parallel@1)](https://pipe0.com/docs/pipe-catalog/website:extract:parallel/1): Extract relevant content from a website using Parallel's Extract API. Returns a flat list of results — page title, publish date and the excerpts most relevant to your objective. - [Page to markdown (website:markdown:parallel@1)](https://pipe0.com/docs/pipe-catalog/website:markdown:parallel/1): Fetch one web page and return its full content as clean markdown. Handles JavaScript-rendered pages and PDFs. - [Company identity (company:identity@3)](https://pipe0.com/docs/pipe-catalog/company:identity/3): Find any company's website URL, LinkedIn profile URL, and cleaned name. - [Company identity (company:identity:crustdata@1)](https://pipe0.com/docs/pipe-catalog/company:identity:crustdata/1): Resolve a company to Crustdata's matching candidates by domain or name. Returns the full list of matches. - [Mobile number from LinkedIn profile (person:mobile:profileurl:waterfall@1)](https://pipe0.com/docs/pipe-catalog/person:mobile:profileurl:waterfall/1): Find a mobile phone number for any prospect using multiple data providers in a waterfall motion. - [GitHub profile from LinkedIn URL (person:devprofileurl:profileurl:waterfall@1)](https://pipe0.com/docs/pipe-catalog/person:devprofileurl:profileurl:waterfall/1): Find a developer profile URL (e.g. GitHub) for any prospect using multiple data providers in a waterfall motion. - [Full LinkedIn profile (person:profile:waterfall@2)](https://pipe0.com/docs/pipe-catalog/person:profile:waterfall/2): Find a standardized JSON representation of a LinkedIn profile. - [Email → LinkedIn URL (URL only) (person:profileurl:email:waterfall@1)](https://pipe0.com/docs/pipe-catalog/person:profileurl:email:waterfall/1): URL only: email address → LinkedIn profile URL, no profile data. For a reverse email lookup use person:identity:email:waterfall@2 (Full LinkedIn profile from email), which returns the same profile_url plus the full profile. - [LinkedIn URL from name (person:profileurl:name@1)](https://pipe0.com/docs/pipe-catalog/person:profileurl:name/1): Find the LinkedIn profile URL by using the prospect's name as input. ## Search Catalog - [Search Catalog](https://pipe0.com/docs/search-catalog): Browse search datasets - [People search (people:profiles:crustdata@3)](https://pipe0.com/docs/search-catalog/people:profiles:crustdata/3): Filter-based people search on Crustdata's dataset — widest filter surface: employer, growth, and LinkedIn signals. - [Company search (companies:profiles:crustdata@3)](https://pipe0.com/docs/search-catalog/companies:profiles:crustdata/3): Filter-based company search on Crustdata's dataset — widest filter surface: funding, investors, growth, team composition, technology signals. - [People search (people:profiles:amplemarket@2)](https://pipe0.com/docs/search-catalog/people:profiles:amplemarket/2): Filter-based people search on Amplemarket's dataset — precise prospecting filters. - [Company search (companies:profiles:amplemarket@2)](https://pipe0.com/docs/search-catalog/companies:profiles:amplemarket/2): Filter-based company search on Amplemarket's dataset — precise firmographic filters. - [Job search (jobs:crustdata@1)](https://pipe0.com/docs/search-catalog/jobs:crustdata/1): Find companies hiring for a role. Filter Crustdata's indexed job listings by title, category, location and posting date, and by the hiring company's firmographics. - [Company search (AI) (companies:entitysearch:parallel@1)](https://pipe0.com/docs/search-catalog/companies:entitysearch:parallel/1): Natural-language company search powered by Parallel Entity Search — for asks static filters can't express. - [People search (AI) (people:entitysearch:parallel@1)](https://pipe0.com/docs/search-catalog/people:entitysearch:parallel/1): Natural-language people search powered by Parallel Entity Search — for asks static filters can't express. - [AI research (research:agent@1)](https://pipe0.com/docs/search-catalog/research:agent/1): Researches the web with an agent and returns rows whose columns you define in the prompt. - [List event guests (people:eventguests:luma@1)](https://pipe0.com/docs/search-catalog/people:eventguests:luma/1): Fetch all guests of a Luma event using your own Luma API key. - [Slack channel members (people:channelmembers:slack@1)](https://pipe0.com/docs/search-catalog/people:channelmembers:slack/1): List the members of a Slack channel: one row per person with full name, email address (when the workspace exposes it), Slack user ID, and a standardized slack_member_match object (handle, title, timezone, admin/guest flags). - [Google Calendar events (events:googlecalendar@1)](https://pipe0.com/docs/search-catalog/events:googlecalendar/1): List events from a Google Calendar: one row per event (recurring events expanded into occurrences) with title, attendee emails, and a standardized calendar_event_match object (times, timezone, type, location, organizer, meeting link). - [LinkedIn post search (posts:content:crustdata@1)](https://pipe0.com/docs/search-catalog/posts:content:crustdata/1): Keyword-based LinkedIn post search. - [X post search (posts:x@1)](https://pipe0.com/docs/search-catalog/posts:x/1): Keyword and mention search over recent X (Twitter) posts — last 7 days, with recency, author, and link filters. - [X profile followers (people:followers:x@1)](https://pipe0.com/docs/search-catalog/people:followers:x/1): List the followers of any public X (Twitter) account by handle: one row per follower with name, handle, stable user ID, and the full X profile (bio, counts, location, website). - [My X followers (people:followers:self:x@1)](https://pipe0.com/docs/search-catalog/people:followers:self:x/1): List the followers of your connected X (Twitter) account: one row per follower with name, handle, stable user ID, and the full X profile (bio, counts, location, website). - [Read sheet rows (sheet:rows@1)](https://pipe0.com/docs/search-catalog/sheet:rows/1): List rows from a pipe0 sheet. - [Read bucket entries (bucket:entries@1)](https://pipe0.com/docs/search-catalog/bucket:entries/1): List the entries in a bucket — one row per entry, with its identifying field values (and counter number / expiry). - [Query Postgres (query:postgres@1)](https://pipe0.com/docs/search-catalog/query:postgres/1): Run a read-only SQL query against your own PostgreSQL database and return the rows. - [Query Databricks (query:databricks@1)](https://pipe0.com/docs/search-catalog/query:databricks/1): Run a read-only SQL query against your Databricks SQL warehouse and return the rows. - [HubSpot contacts (contacts:hubspot@1)](https://pipe0.com/docs/search-catalog/contacts:hubspot/1): List contacts from your HubSpot portal: identity columns (id, email, name) plus a JSON record with the standard property set and any custom properties you pick. - [HubSpot companies (companies:hubspot@1)](https://pipe0.com/docs/search-catalog/companies:hubspot/1): List companies from your HubSpot portal: identity columns (id, name, domain) plus a JSON record with the standard property set and any custom properties you pick. - [HubSpot deals (deals:hubspot@1)](https://pipe0.com/docs/search-catalog/deals:hubspot/1): List deals from your HubSpot portal: identity columns (id, name, amount) plus a JSON record with the standard property set and any custom properties you pick. - [HubSpot owners (owners:hubspot@1)](https://pipe0.com/docs/search-catalog/owners:hubspot/1): List the owners (users) of your HubSpot portal, optionally with how many companies, contacts, or deals each owns — e.g. all owners with more than 50 companies. - [Salesforce contacts (contacts:salesforce@1)](https://pipe0.com/docs/search-catalog/contacts:salesforce/1): List contacts from your Salesforce org: identity columns (id, name, email) plus a JSON record with the standard field set and any custom fields you pick. Filter with field conditions or run one of the org's own list views. - [Salesforce leads (leads:salesforce@1)](https://pipe0.com/docs/search-catalog/leads:salesforce/1): List leads from your Salesforce org: identity columns (id, name, email, company) plus a JSON record with the standard field set. Converted leads are excluded by default; filter with field conditions or run one of the org's own list views. - [Salesforce accounts (accounts:salesforce@1)](https://pipe0.com/docs/search-catalog/accounts:salesforce/1): List accounts from your Salesforce org: identity columns (id, name, domain) plus a JSON record with the standard field set and any custom fields you pick. Filter with field conditions or run one of the org's own list views. - [Salesforce opportunities (opportunities:salesforce@1)](https://pipe0.com/docs/search-catalog/opportunities:salesforce/1): List opportunities from your Salesforce org: identity columns (id, name, amount) plus a JSON record with the standard field set (including IsClosed/IsWon). Filter by status, stage, amount, or field conditions — or run one of the org's own list views. - [Salesforce users (users:salesforce@1)](https://pipe0.com/docs/search-catalog/users:salesforce/1): List users (record owners) from your Salesforce org, with per-user owned-record counts computed in a single aggregate query — e.g. every rep owning more than 10 accounts. - [Query Salesforce (SOQL) (query:salesforce@1)](https://pipe0.com/docs/search-catalog/query:salesforce/1): Run a read-only SOQL query against your Salesforce org — including native aggregates (GROUP BY / HAVING / COUNT), e.g. every owner with more than 10 accounts. - [Attio people (people:attio@1)](https://pipe0.com/docs/search-catalog/people:attio/1): List people from your Attio workspace: identity columns (id, email, name) plus a JSON record with the standard attribute set and any custom attributes you pick. - [Attio companies (companies:attio@1)](https://pipe0.com/docs/search-catalog/companies:attio/1): List companies from your Attio workspace: identity columns (id, name, domain) plus a JSON record with the standard attribute set and any custom attributes you pick. - [Attio deals (deals:attio@1)](https://pipe0.com/docs/search-catalog/deals:attio/1): List deals from your Attio workspace: identity columns (id, name, value) plus a JSON record with the standard attribute set and any custom attributes you pick. - [Attio records (records:attio@1)](https://pipe0.com/docs/search-catalog/records:attio/1): List records of ANY Attio object — custom objects included. Each row carries the record id plus a JSON record with a compact attribute set and any custom attributes you pick. - [Attio list entries (entries:attio@1)](https://pipe0.com/docs/search-catalog/entries:attio/1): List entries of an Attio list — where pipelines live. Each row carries the entry id, the parent record id, and a JSON with the entry's list-level attributes (like stage) plus picked parent-record attributes. - [Query Attio (SQL) (query:attio@1)](https://pipe0.com/docs/search-catalog/query:attio/1): Run a read-only SQL query against your Attio workspace (Enterprise plan) — the only way to aggregate (GROUP BY, COUNT) across objects and lists server-side. - [Attio users (users:attio@1)](https://pipe0.com/docs/search-catalog/users:attio/1): List the workspace members (users) of your Attio workspace: id, email, name, and access level — e.g. for building a round-robin assignment list. ## Deprecated pipes and searches (do not use) These ids still run for existing integrations but must not be used in new work. Each line names the current id to use instead. - company:newssummary:website@1 → use [company:newssummary:domain@1](https://pipe0.com/docs/pipe-catalog/company:newssummary:domain/1) - company:websiteurl:email@1 → use [company:domain:workemail@1](https://pipe0.com/docs/pipe-catalog/company:domain:workemail/1) - company:funding:leadmagic@1 → use [company:funding:waterfall@1](https://pipe0.com/docs/pipe-catalog/company:funding:waterfall/1) - people:workemail:waterfall@1 → use [person:workemail:waterfall@1](https://pipe0.com/docs/pipe-catalog/person:workemail:waterfall/1) - people:email:iswork@1 → use [email:iswork@1](https://pipe0.com/docs/pipe-catalog/email:iswork/1) - people:name:split@1 → use [person:name:split@1](https://pipe0.com/docs/pipe-catalog/person:name:split/1) - company:overview@1 → use [company:identity@3](https://pipe0.com/docs/pipe-catalog/company:identity/3) - company:overview@2 → use [company:overview@3](https://pipe0.com/docs/pipe-catalog/company:overview/3) - people:workemail:profileurl:waterfall@1 → use [person:workemail:profileurl:waterfall@1](https://pipe0.com/docs/pipe-catalog/person:workemail:profileurl:waterfall/1) - company:match:crustdata@1 → use [company:match:crustdata@2](https://pipe0.com/docs/pipe-catalog/company:match:crustdata/2) - people:personalemail:profile:waterfall@1 → use [person:personalemail:profileurl:waterfall@1](https://pipe0.com/docs/pipe-catalog/person:personalemail:profileurl:waterfall/1) - people:email:validate:zerobounce@2 → use [email:validate:zerobounce@1](https://pipe0.com/docs/pipe-catalog/email:validate:zerobounce/1) - company:identity@2 → use [company:identity@3](https://pipe0.com/docs/pipe-catalog/company:identity/3) - people:phone:profile:waterfall@1 → use [person:mobile:profileurl:waterfall@1](https://pipe0.com/docs/pipe-catalog/person:mobile:profileurl:waterfall/1) - people:profile:waterfall@1 → use [person:profile:waterfall@2](https://pipe0.com/docs/pipe-catalog/person:profile:waterfall/2) - people:profileurl:email:waterfall@1 → use [person:profileurl:email:waterfall@1](https://pipe0.com/docs/pipe-catalog/person:profileurl:email:waterfall/1) - company:identity@1 → use [company:identity@3](https://pipe0.com/docs/pipe-catalog/company:identity/3) - people:professionalprofile:waterfall@1 → use [person:profile:waterfall@2](https://pipe0.com/docs/pipe-catalog/person:profile:waterfall/2) - people:professionalprofileurl:email:waterfall@1 → use [person:profileurl:email:waterfall@1](https://pipe0.com/docs/pipe-catalog/person:profileurl:email:waterfall/1) - people:profiles:crustdata@1 → use [people:profiles:crustdata@3](https://pipe0.com/docs/search-catalog/people:profiles:crustdata/3) - people:profiles:crustdata@2 → use [people:profiles:crustdata@3](https://pipe0.com/docs/search-catalog/people:profiles:crustdata/3) - companies:profiles:crustdata@1 → use [companies:profiles:crustdata@3](https://pipe0.com/docs/search-catalog/companies:profiles:crustdata/3) - companies:profiles:crustdata@2 → use [companies:profiles:crustdata@3](https://pipe0.com/docs/search-catalog/companies:profiles:crustdata/3) - people:profiles:amplemarket@1 → use [people:profiles:amplemarket@2](https://pipe0.com/docs/search-catalog/people:profiles:amplemarket/2) ## Full Documentation - [Full docs as single file](https://pipe0.com/llms-full.txt) ## Notes - Individual pages can be accessed as markdown by appending `.mdx` to any docs URL (e.g. https://pipe0.com/docs/search.mdx) - Pipe and search ids are versioned (`@1`, `@2`, …). Use the highest version that is not deprecated; see https://pipe0.com/docs/versions - The full documentation is available at https://pipe0.com/llms-full.txt