Use pipes to find email addresses, phone numbers, or to trigger automations like Slack messages. Pipes are composable enrichment functions.
Find a mobile phone number for any prospect using multiple data providers in a waterfall motion.
Find work email addresses from B2B profile.
Resolve a company to Crustdata's matching candidates by domain or name. Returns the full list of matches.
Find recent company news by performing a search and scrape.
Business description, industry, and financial information.
Find work email addresses in a waterfall motion.
Check if a given email address is personal or professional.
Split a full name into first and last name.
Combine the first and last names of a prospect into a full name field.
Find role matches for a given companies like "CEO" or "CFO".
Find list of recent LinkedIn posts.
Find person profile by their work email address.
Find identity of a person from their email address.
Find information on a person based on their email
Verify email address against various factors, including syntax, domain, and server existence, to ensure it is deliverable and active.
Verify email addresses to ensure is deliverability.
Find the personal email address of a prospect by using a professional profile URL as input.
Find a mobile phone number for a prospect.
Find information on a person based on their LinkedIn profile URL.
Find a developer profile URL (e.g. GitHub) for any prospect using multiple data providers in a waterfall motion.
Find a JSON representation of a LinkedIn profile.
Find the URL for a prospect's LinkedIn profile from their personal or professional email address.
Find the LinkedIn profile URL by using the prospect's name as input.
All technologies and frameworks powering a given website.
Extract the company website URL from a work email address.
Information on funding rounds, acquisition, competitors, and investors.
Funding rounds, investors, and total funding in a waterfall motion.
Find companies similar to the company you provide as input.
Find brand data like logos, colors, and social links via the Logo.dev API.
Company data like headcount distribution, LinkedIn URLs etc. via the Crustdata API.
Find any company's website URL, LinkedIn profile URL, and cleaned name.
Executes configurable AI prompts with structured output fields.
Runs an AI research agent with web tools and structured output fields.
Extract nested JSON properties into new output fields.
An AI agent specialized in composing messages for modern workplace communication platforms (Slack, Teams, Discord, etc.)
An AI agent specialized in composing emails.
Replaces template tags like {{ name }} with actual values.
Join multiple fields into one field. The final result will be the first defined field.
Strip a field value of characters not commonly found in slugs.
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'.
Make a generic GET/POST/PUT/PATCH/DELETE HTTP request and capture the JSON response. Optionally validate the response against a JSON schema.
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 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.
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.
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.
Expand a list into sheet rows — each item is written as-is to an `expanded_value` column (objects/arrays as json).
Rotate through the rows of another sheet (e.g. a sellers roster): each unique counter value picks the next row round-robin, and the selected columns of the picked row become outputs. Re-run safe — the same counter value always picks the same row.
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.
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.
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.
Turn any URL into clean data.
Turn a list of URLs into clean scraped data.
Perform advanced AI scraping to extract data from any website. Search all subdomains and combine scraped data with search results.
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.
Input a website and get all internal URLs on the website. Results do not include links to external pages.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Send an email with Resend.
Create a contact inside a Resend audience.
Add a lead to a lemlist campaign sequence, with custom variables.
Add a lead to an Amplemarket sequence, with custom dynamic fields.
Send an email with Gmail.
Create a draft email in Gmail (does not send).
Send a Slack message to a channel.
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.
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.
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.
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.
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.
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.