# What is Tabula?

Tabula is a visual prospecting and enrichment platform that helps you find, research, and prepare high-quality leads in minutes.

{% embed url="<https://www.youtube.com/watch?v=BeoRnwqiE5I>" %}

With Tabula, you can:

* **Search** millions of companies, contacts, or hiring signals
* **Import** your own lead lists from CSV
* **Enrich** them with 50+ data providers and 450+ connected sources
* **Research** websites and public sources with AI agents
* **Verify** emails to improve deliverability
* **Clean & organize** your data with powerful visual transformations
* **Personalize** outreach with AI-generated insights
* **Download** a ready-to-use list for campaigns

Tabula combines **prospecting, enrichment, and workflow automation** in one place, so you spend less time managing data and more time closing deals.

We’re constantly adding new enrichment providers, and you can request any provider you need for your workflows. Join our [Slack community](https://join.slack.com/t/tabulaio/shared_invite/zt-3270bn0nl-ehOuw4bLXyLXvmiJxhgvVQ) to share requests, get updates, and connect directly with our team.


# Product Updates

Welcome! You can find the latest product updates listed down below by their release dates.

### <mark style="color:blue;">**October 23, 2025 - Version 1.14.0**</mark>

**Output Attribute Window**

Browse and filter all enrichment queries and output fields - now easier to navigate and select.

**New smart actions (one-click)**

* **Extract domain from a link** – Quickly pull out website domains from any URL.
* **Calculate array length** – Instantly count elements in any array.

**Improved search and enrichment experience**

* **Search node** - Easily locate and explore data in your flows.
* **Query descriptions** - Each query now includes a clear description for better context.
* **View raw JSON** - You can now inspect the raw JSON for every row.
* **Progress tracking** - See real-time progress on large searches.

**Refreshed Home Page**

* The Quick Start buttons got a clean new look for a smoother start.

**New Vendors and Query Support**

* **TheirStack**: Find Companies

### <mark style="color:blue;">**September 4, 2025 - Version 1.13.0**</mark>

* Added support for clickable links inside table cells.
* Added detailed descriptions for pricing options in the Search and Enrich nodes.
* The report switcher has been removed from the Flow page toolbar for a cleaner interface.
* Added additional categories to improve search options.

**New Vendors and Query Support**

* **TheirStack**: Find Companies
* **PredictLeads**:  Enrich company by domain, Get job listings by domain, Get tech stack by domain, Get news by domain, Get financial details by domain, Get website history by domain, Get GitHub repositories by domain, Get job details by job id
* **Exodium**: Find companies, Find people, Get tech stack by company id, Get social media by company id, Get employees rating by company id, Get workforce trends by company id, Get contacts by person id, Get social media by person id, Enrich person by person id, Get signals by company id, Get financial details by company id, Get website keywords by company id, Get company id by domain, Get signals by person id, get person id by name and domain.

### <mark style="color:blue;">**August 21, 2025 - Fix - Version 1.12.1**</mark>

Support unstable network connection on application start

### <mark style="color:blue;">**August 12, 2025 - Version 1.12.0**</mark>

**Updated Home page**

* Fresh design with **Quick Start** buttons for instant access to searches.
* Find local businesses, run Google searches, or explore news directly from Tabula.

**Toolbar**

* Quick access to your remaining credits from every page.

**New Vendors and Query Support**

* **TheCompaniesAPI**: Find companies, Enrich company by domain, Get company email patterns, Get AI insights about company, Enrich company by LinkedIn
* **BuitWith**: Get tech stack by domain
* **Muraena**: Find people, Enrich company by domain, Enrich person by email, Enrich person by LinkedIn, Enrich person by person id
* **Serper.dev**: Find local businesses, Google search, News search, Scrape website
* **TheirStack**: Get tech stack by domain
* **FireCrawl**: Scrape URL, Enrich with web search, Get links from URL
* **Perplexity**: Enrich with web search

### <mark style="color:blue;">**July 20, 2025 - Version 1.11.0**</mark>

**Enrichment credits support**

* Start with the Base plan and customize it by adding Enrichment credits
* Kickstart your workflow with **30 free trial enrichment credits**.

**Search & Enrich improvements**

* Preview and select output columns directly in Search nodes
* Preview output columns even there is not a

**Use AI improvments**

* Support even more OpenAI modes
* AI Node column auto-complete now works regardless of column name case.
* New Reasoning Effort parameter in the AI Node for finer control over AI responses.

### <mark style="color:blue;">**June 11, 2025 - Version 1.10.0**</mark>

**AI Columns Node (Use AI)**

* Added support for multiple output columns.
* Output columns can now be generated directly from the prompt.
* Added web search option for AI enrichment.
* Added model selection for AI tasks.

**Search and Enrich**

* You can add new rows to the source or run enrichers only on selected rows. Press the Run button to apply AI calls and enrichers to all new, non-enriched rows.
* A one-click option was added in the JSON cell preview to convert arrays to columns or extract rows.

**Table View**

* Added the ability to insert a new column with popular actions directly from the table view.

**New Vendors and Query Support**

**LeadMagic**:&#x20;

* Find jobs
* Enrich company by domain
* Enrich company by LinkedIn
* Get decision makers by domain
* Get decision makers by company name
* Get employees by domain
* Get employees by company name
* Get competitors by domain
* Get competitors by LinkedIn
* Get funding details by domain
* Enrich person by LinkedIn
* Get email by domain and name
* Get Email by LinkedIn
* Get LinkedIn by email
* Get phone by LinkedIn
* Get phone by email
* Verify email

### <mark style="color:blue;">**May 8, 2025 - Version 1.9.0**</mark>

**New Vendors and Query Support**

* **TheCompaniesAPI**: Find lookalike companies
* Standardize output columns in all Verify Emails queries
* Find the complete list of enrichers [here](/integrations/enrichment/list-of-supported-queries)

**Search and Enrich**

* Support TextArea fields&#x20;
* Support demo key to share and export/import flows without sharing API keys
* Improved logic of mapping columns for waterfall enrichment

**Bugs**

* Some major bugs in the Team version were fixed

### <mark style="color:blue;">**April 30, 2025 - Version 1.8.1**</mark>

**New Vendors and Query Support**

* **CompanyEnrich**: Find Companies, Find Lookalike Companies, Enrich company by domain, Enrich company by email
* **ZeroBounce**: Get email by domain and name, Get email pattern by domain, Verify emails
* **Kickbox**: Verify emails
* **MailChecker**: Verify emails
* **Bouncify**: Verify emails
* Find the complete list of enrichers [here](/integrations/enrichment/list-of-supported-queries)

**Search and Enrich**

* You can now select how many rows to preview in the Search node.
* Add providers' API keys directly from the flow, without needing to switch to the Connectors page.

**Other Updates**

* Paste comma-separated items into the multi-selector to convert them into tags at once.

### <mark style="color:blue;">**April 17, 2025 - Version 1.7.0**</mark>

**New Vendors and Query Support**

* **Apollo**: Find companies, Get job listings by companyId
* **Uplead**: Get domain by company name
* **AnymailFinder**: Get decision makers by company name
* **Prospeo**: Get employees by company name
* **Hunter**: Get employees by company name
* **EmailListVerify**: Verify emails
* **CaptainVerify**: Verify emails
* **Mails**: Verify emails
* **Heybounce**: Verify emails
* **Cleanify**: Verify emails
* **Emailable**: Verify emails
* **Bounceban**: Verify emails
* **Clearout**: Verify emails
* Find the complete list of enrichers [here](/integrations/enrichment/list-of-supported-queries)

**Search**

* Added a total number of results to the preview.

**Smart Actions**

* Added smart suggestions for different column types, especially to improve working with Arrays and Objects.

### <mark style="color:blue;">**April 1, 2025 - Version 1.6.0**</mark>

**New Vendors and Query Support**

* **Nubela**: Find companies, people, and jobs (and more 18 enrichment queries)
* **NeverBounce**: Email verification
* **Enrichley**: Email verification

**Search & Enrich Nodes**

* Added **categories** for both queries and inputs to improve navigation
* Improved feedback when no results are returned

**Multiselect Controls**

* "Select All" and "Select Contains" options are now hidden when only one selection is allowed

**Search Settings Improvements**

* Adjusted **Max rows per search** control with validation and help text

### <mark style="color:blue;">**March 15, 2025 - Version 1.5.0**</mark>

**Search & Enrich**

* Added **status tracking** in enrichment nodes
* New nodes: **Enrich People** and **Enrich Companies**
* New **Verify Emails** node with support for 8 enrichment providers
* Added 8 new vendors – see the full list \[here]

**Data Catalog**

* Create and switch between multiple **views** of the same dataset
* Each view supports its own filters and settings
* Filters now apply to the **entire dataset**, not just the sample

**Other Updates**

* Improved UX across the **Catalog** and **Connectors** pages
* Better navigation in the **toolbar**
* Updated **home screen**, toolbars, and left-side navigation
* "Convert to Column" added to the **JSON viewer**
* Support for "Remove All Columns" option in the **Columns node**

### <mark style="color:blue;">**November 5, 2024**</mark>

#### Data Enrichment

* Added support for new data providers: Uplead, LeadMagic, PeopleDataLabs, and more
* Optimized performance of API and enrichment nodes to reduce execution times
* Improved UX for managing and sharing API keys within teams

#### More updates

* Improved application performance
* Accelerated data flow creation and editing
* Updated interface and optimized page load times, including catalogs and connectors
* Improved stability of Postgres database connections during extended use
* Fixed file upload and preview errors, ensuring smoother operations
* Fixed issues with exporting charts to PNG/SVG
* Addressed bugs related to row count discrepancies in unions and property grids

### <mark style="color:blue;">**September 16, 2024 - Hotfix**</mark>

* Bug fixing

### <mark style="color:blue;">**September 9, 2024**</mark>

* Supported 450+ sources&#x20;
* Introduced a new Enrichment Node tool supporting multiple data enrichment providers and cascade enrichment
* Manage and purchase credits for sources and AI usage directly from the billing page

### <mark style="color:blue;">**August 1, 2024**</mark>

* Added the ability to include tables and charts from the repository, improving the visual representation of data in reports
* Enabled sharing of connectors and files from the catalog, facilitating better collaboration and resource sharing among users.
* Various bug fixing and improvement for Teamwork

### <mark style="color:blue;">**April 10, 2024**</mark>

* Introduced team support, allowing users to collaboratively work on shared Flows
* Enabled cloud storage for user files, ensuring accessibility from anywhere
* Added the ability to share documents (flows, data sources, connectors) among team members
* Introduced scheduled Job execution
* Multiple improvements in the Reports designer
* New feature lets users select source nodes from Catalog easily
* Introduced auto-formatting in API node for better usability, readability
* Minor UI adjustments with updates to colors and user experience enhancements
* Enhanced app performance with fixes for key bugs and issues for smoother operation
* Enhanced Windows performance with C++ library in installer and streamlined access to app version info in Help menu

#### Known issues

* The cloud version does not have the option to save output to a local file
* If a local file is used as the Source node, the results of the Chart nodes will not be available on the Job page

### <mark style="color:blue;">**December 7, 2023**</mark>

#### **Tabula dashboards**

<div align="left"><figure><img src="/files/sCW8j9AKuGGrSNHXb8sX" alt="" width="375"><figcaption></figcaption></figure></div>

Build visually compelling dashboards to track project KPIs and metrics. View reports as workflows in the same interface, detailing raw sources and preparation steps.

#### **Flow history version**

<div align="left"><figure><img src="/files/4Jplz9rqnisrYw8uKiND" alt="" width="375"><figcaption></figcaption></figure></div>

Easily navigate through historical versions of your workflows to understand their progression without losing important past changes.

#### **Expression editor popup**

<div align="left"><figure><img src="/files/xbaz3FZYACQ8ZtgYLWCh" alt="" width="375"><figcaption></figcaption></figure></div>

If you input numerous expressions, expand the editor to open a popup for a clearer view of all the applied formulas.

#### More updates

**Group filters**

You can group filters, put them in bunches, and link these bunches. Doing this helps organize data in more detailed ways, making it easier to analyze and work with complex sets of information.

**Source files are now added to the catalog**

It means you can keep all the files that were used in the workflow as sources. So you can check the date when these files were added to get rid of mess, and efficiently organize your work process.

**Added new function for dateTime conversion**

Tabula enables the transformation of UNIX timestamps into easily readable date and time formats.

### <mark style="color:blue;">**October 27, 2023**</mark>

#### **UI Updates**

New toolbar design: tools are now grouped by meaning.

Now, if you drag-n-drop columns in the table, rename or delete columns, only one instance of the Columns node is created.

#### New table header.

* Open the table on full screen with one click
* Table filters are easier to find and apply

![](/files/NR9WSM3OlEjVvwaXXx9G)

#### Enhanced JSON viewer

Open Objects and Arrays in the structured view. Copy paths to objects and values with one click.

![](/files/R7FxotgoK0zMc4z32KtP)

#### **Reworked Jobs page**

For each flow, only one Job is created. Under the Job, you will find all run instances "Runs" with their logs and output datasets. Outputs from the last run are shown on the top of the Job pages.

#### **AI Table node - beta**

A new node where you can ask Tabula to join tables, filter, sort, or calculate fields with natural language! You can work with one or multiple tables as sources.

<figure><img src="/files/yLNe89964sWAvnLDjHo2" alt=""><figcaption><p>AI Table Preview</p></figcaption></figure>

### <mark style="color:blue;">**September 6, 2023**</mark>

**Major UI Updates - New Look and Feel**

We've given Tabula a fresh new look and feel! Our updated user interface is designed to enhance your experience and make navigation smoother than ever before.

**Generate datasets with AI**

Say goodbye to manual data entry! Tabula now allows you to create an "Empty table" with the help of AI. This feature streamlines data organization and reduces manual effort.

**"API Call" Node**

With the all-new "API column" node, you now have the power to seamlessly integrate external APIs into your workflows. This exciting addition opens up a world of possibilities for automating tasks and fetching real-time data.

### <mark style="color:blue;">**August 2, 2023**</mark>

**Features**

* A new linear chat was added.
* Now you can download your chat in PNG or SVG format
* We also added tutorials for smooth onboarding

Some major bugs were fixed.

### <mark style="color:blue;">**July 13, 2023**</mark>

**Meet our new updated design!** Even more intuitive and stunning. Wait for the next updates soon!

<figure><img src="/files/mYkBP0VaBljj7RNUTFjz" alt=""><figcaption><p>New Home Page</p></figcaption></figure>

#### Small changes and issues

* Filters are now case-independent
* You can close the right panel on Explorer and Design Flow pages
* Bar charts now have gridlines
* Fixed major bugs with filters on the Explorer page after applying Group By command

### <mark style="color:blue;">**June 28, 2023**</mark>

#### **Home page**

The new home page features quick links to your most recent datasets and flows for convenient navigation.

#### **Magic column node (GPT)**

Introducing a new node that allows you to generate a column based on text prompts. Cleanup, restructure, or enrich your datasets at a speed 5x faster with our AI's assistance. We're working to incorporate more AI support, stay tuned…

### <mark style="color:blue;">**June 9, 2023**</mark>

#### **Catalog and Explorer pages**

* You can now open and analyze your CSV or Excel files without the need to create a new flow. Open them directly from the Catalog page and explore them with custom filters
* Features include: filtering, sorting, grouping by, columns hiding, and data bars
* You also can change the size and type of the sample data for large datasets
* You have the option to save your filtered datasets or transform them into data flows for advanced operations.

### <mark style="color:blue;">**May 24, 2023**</mark>

#### **Empty table node**

The empty table can be used for creating quick samples or dictionaries. Seamlessly copy and paste data from different sources like Excel or other spreadsheets using Cmd-V \ Ctrl-V commands.

#### **Chat node**

Now working in Runtime over the whole datasets

### <mark style="color:blue;">**March 31, 2023**</mark>

**Enhanced CSV File Support**

* Work with CSV files of any size (flows continue to work with samples during design time)
* Download sample data as CSV from any node during design time
* Improved CSV delimiter autodetection

**Refined Autocomplete in Expression Editor**

* Added descriptions for function parameters
* Included examples for each function
* Streamlined user experience

**Chart Node (Beta)**

* New chart node supporting bar and column charts
* Currently functional only during design time

**New Materializations Types for Database Tables**

* Update - add or update all new values in the existing table
* Incremental updates - add or update filtered values in the existing table

**Improved Source Logic**

* Filter rows and select columns directly in the Source node for database tables

**Node Groups**

* Duplicate groups via the context menu
* Enhanced canvas layout logic for expanded groups

**Additional UX Enhancements**

* Updated Join and Output nodes user interface
* Displayed a thousand separators in the table for numerical values

###

### <mark style="color:blue;">**January 5, 2023**</mark>

**Canvas**

* **Updated logic of canvas**
  * Drag-n-drop nodes without their selection
  * Zoom in and out
    * Mouse: Hold down  ⌘ Command (Mac) or Ctrl (Windows) and scroll the mouse wheel up to zoom in or down to zoom out.
    * Trackpad: Pinch two fingers together to zoom out or stretch two fingers apart to zoom in
    * Hotkeys: Zoom in: Shift +, Zoom out: Shift -, Zoom to fit: Shift 1
* **New controls panel on canvas**
  * In the bottom right corner of the Canvas, hover over the “centralized” icon
  * A menu will open with buttons
    * to centralize the canvas
    * to show Minimap
    * to create “Text” (Memo)
* **Groups of nodes**
  * Select multiple nodes with “Shift” + Mouse Drag
  * In the Action panel: select “Group nodes” (or press “G” button)
  * Use a group’s context menu to ungroup
  * Change group color from a palette on the group’s upper right corner
* **Editing node names on Canvas**
  * Use the context menu on nodes to edit the node’s name right on the canvas
  * As an alternative, you also can edit node’s names from the property grid
* **Copy nodes from the context menu**

**Discovery & Analyze of Data**

* **Statistics in columns headers**
  * Ranges and valid-missing percentage
    * for valid\missing values statistics to see → hover on a cell with ranges or unique values under column names
  * Histograms and the most popular values
    * hover on any cell right under the column’s name and click it to expand the statistics
* **Statistics in preview mode in a property grid**
  * Filter, Duplicate, and Change type nodes show statistics like as many rows were filtered
* **Change type node →** we now highlight cells that were not converted
* **Show special symbols in the table**
  * only by hotkey → Ctrl + 1

**Misc**

* **Improved UI for expression editor**
  * show functions’ parameters description
* **User-defined scalar functions**
  * now you can define custom functions and reuse them in expressions

#### **Known Issues**

* XSLX files are not working in the flows where there are DB tables or views (neither as Sources nor as Outputs)
* Canvas default cell sizes are changed
* Statistics are not always loading in column headers
* Groups cannot be nested


# Installation and Login

Please watch a video tutorial on how to download, install, and log in.

{% embed url="<https://www.youtube.com/watch?v=6ySZQk0ZLE4>" %}


# Supported Integrations

Tabula connects to hundreds of sources so you can search, enrich, and update leads without switching tools. You can bring data into Tabula in three main ways:

#### **1. Multiple Search Providers**

Use Tabula’s integrated search nodes to instantly access:

* **Company databases** with firmographic and technographic data
* **Contact databases** with verified emails and phone numbers
* **Job boards & hiring signals** for intent-based prospecting
* Others searches like Google, News, Places, Reviews etc.

#### **2. Enrichment Providers**

Enhance your lead lists with 50+ built-in enrichment integrations, including:

* Firmographics (industry, size, revenue, location)
* Technographics (software & tools used by the company)
* Social & web data (LinkedIn, Twitter, website info)
* Contact data (emails, phone numbers, roles)

#### **3. File & Database Connections**

Import, sync, and export data directly from:

* **CSV files** (local or cloud)
* **Databases**: PostgreSQL, Snowflake, MySQL, and more
* **450+ supported connectors** via Tabula’s integration hub (CRMs, data warehouses, spreadsheets, cloud apps)


# FAQ

{% hint style="info" %}
Can't find the correct answer please ask our community in Slack [#general\_chat](https://join.slack.com/t/tabulaio/shared_invite/zt-2cugjcmpx-IDV_U4ga8mQ26J3W3kT6_g) channel.
{% endhint %}

### TABULA OVERVIEW

<details>

<summary>What is Tabula?</summary>

Tabula lets go-to-market teams skip the tool hacks and build the workflows they actually need. Prospect leads, clean and enrich them - all in one place.

Start with a list from your CRM, CSV file or search fresh leads directly inside Tabula. Enrich leads with 400+ data points, clean up messy fields, dedupe and filter, pull insights from websites with AI, and write personalized messages without switching tools or hitting row limits.

</details>

<details>

<summary>What can I use Tabula for?</summary>

Tabula is built for flexible, scalable GTM workflows. You can:

**Build lead lists** from CSV files, CRMs, or search directly in Tabula: companies, contacts, jobs, signals, and more.

**Enrich your data** using multiple providers at once, combining firmographics, emails, social links, tech stack, and funding data in a single flow.

**Use AI to extract insights** from websites or search results, or generate custom fields like summaries, angles, and icebreakers.

Teams use Tabula for everything from outbound prospecting and CRM enrichment to inbound lead scoring, and campaign personalization.

</details>

<details>

<summary>Can Tabula help me avoid spam filters?</summary>

Yes, but not by playing games with email settings. The best way to avoid spam traps is to send fewer, better emails to the right people.

Tabula helps you:

* Target the right companies and contacts, not just “anyone with an email”
* Add context and personalization that make your outreach genuinely relevant
* Verify emails with multiple providers before sending, reducing bounce rates and protecting your domain reputation

Better targeting + verified, clean contacts + strong personalization = fewer sends, higher open rates, and less chance of getting blocked.

</details>

<details>

<summary>Who actually ends up using Tabula on a team?</summary>

It depends on the size and setup of your company.

**In larger companies:**

* **Sales or GTM leaders** decide what makes a lead “worth chasing”: the filters, enrichment rules, and segmentation criteria.
* **RevOps or operations folks** bring those rules to life in Tabula, so the CRM always has clean, up-to-date, enriched records.
* **SDRs and AEs** can also use Tabula directly because it’s simple and intuitive. This shortens the development loop, instead of waiting for ops to build every search or enrichment flow, reps can quickly pull fresh leads or run their own research in minutes.

**In smaller teams or startups:**

* A **growth lead** often wears all the hats: running searches, enriching leads, pulling research, and kicking off outreach.
* When the team grows, SDRs and AEs can start using Tabula directly to find leads and run enrichment without relying entirely on the growth lead or ops, keeping things fast and flexible.

**For outbound agencies:**

* One strategist or founder usually runs multiple client projects from a single Tabula workspace.
* If agencies have SDRs or account managers, they can also jump into Tabula directly to run ad-hoc research or personalization instead of waiting for the strategist to hand everything over.

</details>

<details>

<summary>How will Tabula change the way I work?</summary>

Think about the hours your team spends wrestling with bad CSV files, half-complete data, and tabs full of different research tools. Tabula rolls all of that into one clean workflow.

You can:

* Start with a search or import from your CRM/CSV
* Enrich leads with 400+ attributes
* Let AI agents pull extra context from websites or other sources
* Standardize and clean your records automatically

That means less manual prep and more time actually talking to the right people.

</details>

<details>

<summary>Can I customize Tabula to my business processes?</summary>

Absolutely. Tabula’s workflows are fully visual and modular, so you can build processes that match the way you work.&#x20;

You can create custom fields, apply complex formulas, integrate with your CRM or databases, and even add AI-based transformations. This flexibility means you’re not forced into a one-size-fits-all setup - you design it around your goals.

</details>

### DATA ENRICHMENT

<details>

<summary>How does Tabula compare to ZoomInfo or other large data providers?</summary>

Instead of relying on one giant database, Tabula gives you access to **many** data providers at once - often at a lower cost. This improves coverage because no single provider has perfect data. By combining sources, you can find more leads, fill more data gaps, and avoid overpaying for a single locked-in license.

</details>

<details>

<summary>How good is Tabula’s data quality?</summary>

Tabula doesn’t store its own database of leads. Instead, it connects you directly to 50+ external enrichment providers inside one credit-based workspace. You can choose the sources you trust most (such as Apollo, Clearout and many others) and pull their data straight into your workflows.

Many customers see a big jump in both **quality** and **coverage** by using our **waterfall enrichment** feature. This lets you search multiple providers in sequence for the same field (like email or phone) and only pay for the first valid result returned.

</details>

<details>

<summary>Do I need my own accounts or API keys for enrichment providers?</summary>

For many providers, you can use Tabula’s managed keys. If you already have your own accounts, you can connect those instead. This flexibility means you can start right away or bring your existing subscriptions into your Tabula workflows.

</details>

<details>

<summary>Can I find people who aren’t on LinkedIn?</summary>

Yes. Because Tabula connects to multiple search and enrichment providers — including those that pull from public websites, business directories, and niche databases — you can discover contacts who aren’t on LinkedIn at all.

</details>

<details>

<summary>Does Tabula support lead scoring?</summary>

Yes. You can create custom scoring rules in your workflow using any combination of enriched fields, signals, and filters. The result is a ranked list of leads that match your exact criteria.

</details>

<details>

<summary>Which prospecting, enrichment tools, and CRMs can I use with Tabula?</summary>

Tabula connects you to 50+ lead search and enrichment providers, and more then 450 sources like Salesforce and HubSpot, and databases like Snowflake or PostgreSQL. You can mix and match sources: for example, find leads with any enrichment provider, enrich with contacts from you CRM, and push results directly into your warehouse.

</details>

<details>

<summary>Can I schedule enrichments to run automatically?</summary>

Yes. You can schedule workflows so they re-run on a set schedule - hourly, daily, or weekly - keeping your lead and company data fresh without manual work.&#x20;

</details>

### PLANS & BILLING

<details>

<summary>How do Tabula plans work?</summary>

In Tabula, you begin with a Base plan: either **Solo** (for individual use) or **Team** (for collaborative work). From there, you can customize your plan by adding the specific types of credits your workflows require. This way, you only pay for what you actually need.

</details>

<details>

<summary>What types of credits are available?</summary>

* **Enrichment credits**. Used for lead and company enrichment across our connected providers
* **AI credits.** Used for AI-powered tasks, such as data transformations, research automation, and content generation.
* **Source credits.** Used for pulling data from SaaS sources, like HubSpot.

</details>

<details>

<summary>Do you have annual plans?</summary>

Currently, all plans are billed **monthly**. Please contact us if you need customizable plan

</details>

### CREDITS & USAGE

<details>

<summary>What are enrichment credits?</summary>

Enrichment credits are used when you add or update data about leads or companies through our connected enrichment providers. Each enrichment action consumes a set number of credits depending on the provider and the type of data retrieved.

</details>

<details>

<summary>What are AI credits?</summary>

AI Credits are used for all AI-powered actions in Tabula, such as automated research, data transformation, and content generation. AI usage is measured in **tokens**, where 1 credit equals 1 AI token. As a reference, 1 token is roughly equal to 3–4 English characters (including spaces). The number of tokens used depends on the length of your input and the AI’s output.

</details>

<details>

<summary>What are source credits?</summary>

Source Credits are used when pulling data from certain SaaS sources like HubSpot. Each record retrieved from these sources consumes a set number of Source Credits.

</details>

<details>

<summary>How can I check my remaining credits?</summary>

You can view your current credit balance for each type (Enrichment, AI, and Source) at any time using the toolbar at the top of any page in Tabula. Or you can go to Account -> Usage page for more detailed view.

</details>

<details>

<summary>Do credits roll over if I don’t use them?</summary>

Credits reset at the start of each billing cycle and do not roll over, so we recommend planning your usage within the month to make the most of them.

</details>

### DATA MANAGEMENT

<details>

<summary>Which data transformation features does Tabula have?</summary>

We cover all SQL features and some more such as auto-flattening JSON.

</details>

<details>

<summary>How does Tabula process data, does it push any data to the server?</summary>

No, the application only verifies your credentials during the initial launch.

Therefore, it is safe to use sensitive information in your flows as all data is stored on your local computer. We are actively working on implementing cloud features.

</details>

<details>

<summary>I have a large .CSV file that I cannot open with Excel. Could Tabula open it?</summary>

Yes. Tabula can open CSV files of any size. By default, it loads a 10,000-row sample for faster editing, but when you run your workflow, all cleanups and transformations are applied to the entire file.

</details>

<details>

<summary>Can Tabula work with BigData, large files, or tables?</summary>

Yes, handling large databases is a core priority for us. Tabula natively supports Snowflake and PostgreSQL connectors, allowing you to transform massive datasets without ever leaving your environment.

</details>

### TROUBLESHOOTING

<details>

<summary>Where can I find local logs to attach with my feedback?</summary>

The log files a hosted below. If an error occurs during a job execution you can find logs on the job page `Three dot button → Show logs`.

Locating the folder where log files are stored can be a challenging task, particularly if the option to hide system files and folders is enabled in the operating system's settings.

**For Mac OS:**

1. Open any folder in Finder.
2. Press `Command + Shift + Period`.
3. See the hidden files appear in the folder.
4. Navigate to “`/Users/%username%/Library/Application Support/tabula/latest/logs`”

For Windows 10:

1. Open File Explorer from the taskbar.
2. Select `View → Options → Change folder and search options`.
3. Select the `View` tab and, in `Advanced settings`, select `Show hidden files, folders, and drives` and OK.
4. Navigate to “`C:\Users\%username%\AppData\Roaming\tabula\latest\logs`”

**For Windows 11:**

1. Open File Explorer from the taskbar.
2. Select `View → Show → Hidden items`.
3. Navigate to “`C:\Users\%username%\AppData\Roaming\tabula\latest\logs`”

Where "`%username%`" is your name of the user.

</details>

{% hint style="info" %}
Can't find the correct answer please ask our community in Slack [#general\_chat](https://join.slack.com/t/tabulaio/shared_invite/zt-2cugjcmpx-IDV_U4ga8mQ26J3W3kT6_g) channel.
{% endhint %}


# Bulk Emails Enrichment

### What this tool does

Bulk Email Enrichment identifies verified work email addresses for a list of contacts based on their first name, last name, and company domain.

This tool is designed for:

* Sales prospecting
* CRM enrichment and cleaning
* RevOps workflows
* List building and outbound preparation

The process runs asynchronously in the background. Once started, you do not need to keep the page open. You can safely leave and return later to download results.

Only work (business) email addresses are searched.

### What you need in your file

#### Required Columns

Your CSV file must contain:

* First Name
* Last Name
* Company Domain

**Example:**&#x20;

{% file src="/files/bhcL2EJdEakBrU4JBsG0" %}

#### Domain Format Rules

* Use the company’s main website domain (e.g., `notion.so`, `hubspot.com`)
* Do not include `http://` or `https://`
* Do not include LinkedIn URLs

#### File Requirements

* File type: **CSV**
* The first row must contain column headers
* UTF-8 encoding recommended
* Each contact should be in a separate row

For best results, ensure names and domains are clean and correctly formatted before uploading.

{% hint style="success" %}
Pro Tip: Use Tabula Studio to format, clean, or standardize fields without any code.
{% endhint %}

### How enrichment works (waterfall logic)

#### What Is Waterfall Enrichment?

Tabula uses a waterfall enrichment system.

For each contact:

1. Provider A is queried first
2. If no verified email is found, Provider B is queried
3. If still not found, additional providers are queried sequentially

The process stops immediately upon finding a valid email.

#### Why This Matters

* Higher overall match rate
* Broader provider coverage
* No duplicate charging
* Only one credit is used per successfully found email

If no provider finds an email, no credit is consumed.

### Credit usage and estimated cost

#### How Credits Work

* **1 successfully found email = 1 credit**
* No credit is used if no email is found
* Failed lookups do not consume credits

#### Estimated Cost

Before starting enrichment, you will see:

* Number of rows to enrich
* Maximum credits that could be used (assuming 100% match rate)
* Your current credit balance

The maximum credit estimate assumes that every row returns a valid email address.\
Actual credit usage is often lower.

You will never be charged more than the number of emails successfully found.

### What happens after you click “Start Enrichment”

Once enrichment begins:

* Processing runs in the background
* You may close the page safely
* The job continues asynchronously

#### Processing Time

Processing time depends on your file size and the provider's response time.

* Small lists typically complete within minutes
* Larger lists may take longer

#### Results

When processing is complete:

* You can download a new CSV file from the Home page
* Your original columns are preserved
* A new column containing the found work email has been added
* Rows without a found email remain in the file

Each row will indicate whether an email was found or not.


# Enrichment

Node that enhances data with additional information, e.g., appending company details or social media profiles

## How to

{% content-ref url="/pages/H9vIvEIpVjR0QxiXBVFt" %}
[How to add your API key in Tabula](/integrations/enrichment/how-to-add-your-api-key-in-tabula)
{% endcontent-ref %}

{% content-ref url="/pages/s0YhCzsRTykZUXS5Bqzv" %}
[Waterfall Enrichment](/integrations/enrichment/waterfall-enrichment)
{% endcontent-ref %}

## Data Providers

{% content-ref url="/pages/ybtfMHTn3tc2NPMic5IX" %}
[Data Providers](/integrations/enrichment/data-providers)
{% endcontent-ref %}


# Data Providers

List of all supported data providers

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td><strong>AnymailFinder</strong></td><td>anymailfinder.com</td><td></td><td><a href="/pages/JvJoufA372h1FiCB2S0T">/pages/JvJoufA372h1FiCB2S0T</a></td><td><a href="/files/97SQP4CK6tMkhfSgf0Lg">/files/97SQP4CK6tMkhfSgf0Lg</a></td></tr><tr><td><strong>Apollo</strong></td><td>apollo.io</td><td></td><td><a href="/pages/o10N1GEG4rYDO8dtzWl8">/pages/o10N1GEG4rYDO8dtzWl8</a></td><td><a href="/files/3Qi5CiUxZyYEayYUUMPV">/files/3Qi5CiUxZyYEayYUUMPV</a></td></tr><tr><td><strong>Bounceban</strong></td><td>bounceban.com</td><td></td><td><a href="/pages/DFNRV4StAJBrs6hbxNap">/pages/DFNRV4StAJBrs6hbxNap</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Bouncer</strong></td><td>usebouncer.com</td><td></td><td><a href="/pages/IpV1P7fOaCbdPrPZFXGe">/pages/IpV1P7fOaCbdPrPZFXGe</a></td><td><a href="/files/A5iR7auHvVOdlCyNDqzQ">/files/A5iR7auHvVOdlCyNDqzQ</a></td></tr><tr><td><strong>Bouncify</strong></td><td>bouncify.io</td><td></td><td><a href="/pages/bfG0g5GQn4lGj1JDpz4P">/pages/bfG0g5GQn4lGj1JDpz4P</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>CaptainVerify</strong></td><td>captainverify.com</td><td></td><td><a href="/pages/ly6zNyRZp4RaolhAEE2o">/pages/ly6zNyRZp4RaolhAEE2o</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Cleanify</strong></td><td>cleanify.io</td><td></td><td><a href="/pages/jZhYLzlnBqA8h06BIMD1">/pages/jZhYLzlnBqA8h06BIMD1</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Clearout</strong></td><td>clearout.io</td><td></td><td><a href="/pages/A8zDnAkL2VrqVXl2NiUi">/pages/A8zDnAkL2VrqVXl2NiUi</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>CompanyEnrich</strong></td><td>companyenrich.com</td><td></td><td><a href="/pages/UTzyfkXPFSA0s42BGjjG">/pages/UTzyfkXPFSA0s42BGjjG</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>ContactOut</strong></td><td>contactout.com</td><td></td><td><a href="/pages/kOL8t9hp1qovNjOUrnfB">/pages/kOL8t9hp1qovNjOUrnfB</a></td><td><a href="/files/Npkc74wximQrsS62hOyJ">/files/Npkc74wximQrsS62hOyJ</a></td></tr><tr><td><strong>Discolike</strong></td><td>discolike.com</td><td></td><td></td><td><a href="/files/CwAvBnBjYCexq6FkpyiB">/files/CwAvBnBjYCexq6FkpyiB</a></td></tr><tr><td><strong>Emailable</strong></td><td>emailable.com</td><td></td><td><a href="/pages/pHICiRTaDmUjTCmpCrFo">/pages/pHICiRTaDmUjTCmpCrFo</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>EmailListVerify</strong></td><td><a href="https://emaillistverify.com/">emaillistverify.com</a></td><td></td><td><a href="/pages/3r3dGFJ3Gque1M9nbnOh">/pages/3r3dGFJ3Gque1M9nbnOh</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Enrichley</strong></td><td>enrichley.io</td><td></td><td></td><td><a href="/files/lFT1ASbFOQMinrtwGM1p">/files/lFT1ASbFOQMinrtwGM1p</a></td></tr><tr><td><strong>Explorium</strong></td><td>explorium.ai</td><td></td><td></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Findymail</strong></td><td>findymail.com</td><td></td><td><a href="/pages/SehbvU6GwWefSVm7r5e6">/pages/SehbvU6GwWefSVm7r5e6</a></td><td><a href="/files/ZPctXG1vllK5Ljx93u3N">/files/ZPctXG1vllK5Ljx93u3N</a></td></tr><tr><td><strong>Firecrawl</strong></td><td>firecrawl.dev</td><td></td><td></td><td><a href="/files/kROoEf8GEgFzJ4VH6Akd">/files/kROoEf8GEgFzJ4VH6Akd</a></td></tr><tr><td><strong>Heybounce</strong></td><td>heybounce.io</td><td></td><td><a href="/pages/y8lbj0zWSjkpe6rvzQ5G">/pages/y8lbj0zWSjkpe6rvzQ5G</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Hunter</strong></td><td>hunter.io</td><td></td><td><a href="/pages/N0xmDtfMybTLV9NKnOCG">/pages/N0xmDtfMybTLV9NKnOCG</a></td><td><a href="/files/7PnZTSfE2Qsey6c9iamj">/files/7PnZTSfE2Qsey6c9iamj</a></td></tr><tr><td><strong>Kickbox</strong></td><td>kickbox.com</td><td></td><td><a href="/pages/XA5VRI7AVt5gbzPQnPdC">/pages/XA5VRI7AVt5gbzPQnPdC</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>LeadMagic</strong></td><td>leadmagic.io</td><td>Coming soon..</td><td></td><td><a href="/files/OR32OHrKDfAbs7o1apTi">/files/OR32OHrKDfAbs7o1apTi</a></td></tr><tr><td><strong>MailChecker</strong></td><td>mailchecker.com</td><td></td><td><a href="/pages/6yUEffY3LHe2sUdQlIsu">/pages/6yUEffY3LHe2sUdQlIsu</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Mails</strong></td><td>mails.so</td><td></td><td><a href="/pages/9hjlSHn0fzmgtPAsQ8Eh">/pages/9hjlSHn0fzmgtPAsQ8Eh</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>MillionVerifier</strong></td><td>millionverifier.com</td><td></td><td><a href="/pages/AmuSs2q9Fsdj9QNcQRNV">/pages/AmuSs2q9Fsdj9QNcQRNV</a></td><td><a href="/files/Ro6Ijhgl0hcBwSGWQQMe">/files/Ro6Ijhgl0hcBwSGWQQMe</a></td></tr><tr><td><strong>Muraena</strong></td><td>muraena.ai</td><td></td><td></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>NeverBounce</strong></td><td>neverbounce.com</td><td></td><td></td><td><a href="/files/FUTSKOuAprYfos9x4pSR">/files/FUTSKOuAprYfos9x4pSR</a></td></tr><tr><td><strong>Nubela (Proxycurl)</strong></td><td>nubela.co</td><td></td><td><a href="/pages/Siujz0KK0nCa5n5W4Ytz">/pages/Siujz0KK0nCa5n5W4Ytz</a></td><td><a href="/files/VvuHeOAAZJFBY4tLTrN6">/files/VvuHeOAAZJFBY4tLTrN6</a></td></tr><tr><td><strong>PeopleDataLabs</strong></td><td>peopledatalabs.com</td><td></td><td><a href="/pages/zjXYK7FDSxJGEH4tLxBK">/pages/zjXYK7FDSxJGEH4tLxBK</a></td><td><a href="/files/wwr2abDbcObP2vXP8Q3Z">/files/wwr2abDbcObP2vXP8Q3Z</a></td></tr><tr><td><strong>Perplexity</strong></td><td>perplexity.ai</td><td></td><td></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Prospeo</strong></td><td>prospeo.io</td><td></td><td><a href="/pages/JIEEmJbHe9UAezdRz574">/pages/JIEEmJbHe9UAezdRz574</a></td><td><a href="/files/f5HGBcXYL0hTks49ckcr">/files/f5HGBcXYL0hTks49ckcr</a></td></tr><tr><td><strong>ReverseContact</strong></td><td>reversecontact.com</td><td></td><td><a href="/pages/9mq43X0y6QW7AkSGkwOH">/pages/9mq43X0y6QW7AkSGkwOH</a></td><td><a href="/files/YtpG9skNcAgGxLMkwP6X">/files/YtpG9skNcAgGxLMkwP6X</a></td></tr><tr><td><strong>Serper</strong></td><td>serper.dev</td><td></td><td></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>TheCompaniesAPI</strong></td><td>thecompaniesapi.com</td><td></td><td><a href="/pages/4GGLQHGc73rddrwjM6Qz">/pages/4GGLQHGc73rddrwjM6Qz</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>UpLead</strong></td><td>uplead.com</td><td></td><td><a href="/pages/SDxMbW5nRMzDEpel4hHw">/pages/SDxMbW5nRMzDEpel4hHw</a></td><td><a href="/files/acS7khaNLAV4xW6En4ka">/files/acS7khaNLAV4xW6En4ka</a></td></tr><tr><td><strong>ZeroBounce</strong></td><td>zerobounce.net</td><td></td><td><a href="/pages/NjjfGuKIiShTIzOst6Mk">/pages/NjjfGuKIiShTIzOst6Mk</a></td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr></tbody></table>


# AnymailFinder

https\://anymailfinder.com/

### Supported queries

**Enrich companies**

* Get employees by domain&#x20;
* Get employees by company name
* Get decision makers by domain
* Get decision makers by company name

**Enrich people**

* Get email by domain and name
* Get email by LinkedIn


# Apollo

https\://www\.apollo.io/

### How to

{% content-ref url="/pages/Lo2uuvqaSsC0v2iNeK9o" %}
[How to find Apollo API key](/integrations/enrichment/data-providers/apollo/how-to-find-apollo-api-key)
{% endcontent-ref %}

### Supported queries

**Searches**

* Find people
* Find companies

**Enrich companies**

* [Enrich company by domain](/integrations/enrichment/data-providers/apollo/enrich-company-by-domain)
* Get job listings by companyId

**Enrich people**

* Enrich person and company by email
* [Enrich person by LinkedIn](/integrations/enrichment/data-providers/apollo/enrich-person-by-linkedin)

### Unsupported queries

* Find companies (Apollo API supports very few filters)


# How to find Apollo API key

Learn how to find API key in Apollo.io account

1. Login to your account on Apollo.io
2. Go to <https://developer.apollo.io/keys/>

<figure><img src="/files/cz5Q6ZRlSQfd2ZAZzdgU" alt=""><figcaption></figcaption></figure>

3. Press **Create a new key** button to generate a new key
4. Give the key a name and select the following options from APIs dropdown menu:
   1. api/v1/contacts/search
   2. api/v1/people/search
   3. api/v1/people/match
   4. api/v1/people/show
   5. api/v1/organizations/show
   6. api/v1/organizations/search
   7. api/v1/organizations/enrich
   8. api/v1/mixed\_companies/search
   9. api/v1/mixed\_people/search

<figure><img src="/files/E0bJW3bRtlE5ON19G126" alt=""><figcaption></figcaption></figure>

5. Press **Create API key**
6. Press the **Copy** icon to copy the key


# Enrich person by LinkedIn

Provider Apollo.io

### Overview

Return person's details based on personal LinkedIn URL.

### Input parameters

<table><thead><tr><th width="236">Name</th><th width="135">Is Required</th><th width="144">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>LinkedIn URL</strong></td><td><strong>required</strong></td><td>text column</td><td>Personal LinkedIn URL</td></tr><tr><td>Email</td><td>optional</td><td>text column</td><td>Person's email address</td></tr><tr><td>First Name</td><td>optional</td><td>text column</td><td>Person's first name</td></tr><tr><td>Last Name</td><td>optional</td><td>text column</td><td>Person's last name</td></tr><tr><td>Full Name</td><td>optional</td><td>text column</td><td>Person's full name</td></tr><tr><td>Company Name</td><td>optional</td><td>text column</td><td>The company a person is working at</td></tr><tr><td>Company Domain</td><td>optional</td><td>text column</td><td>The company website, e.g <code>google.com</code></td></tr></tbody></table>

### Output fields

Fields that are not extracted by default can be found in a column with an original response (select option "Save original response" in advanced settings). Use the Unnest node or JSON preview window to extract such fields to the new columns.

<table><thead><tr><th width="239">Name</th><th width="132.33333333333331">Type</th><th width="124">Extracted</th><th>Description</th></tr></thead><tbody><tr><td>Full Name</td><td>text</td><td>yes</td><td>The person's complete name, e.g., John Doe</td></tr><tr><td>First Name</td><td>text</td><td>yes</td><td>The person's given name, e.g., John</td></tr><tr><td>Last Name</td><td>text</td><td>yes</td><td>The person's last name, e.g. Doe</td></tr><tr><td>Headline</td><td>text</td><td>yes</td><td>Brief professional title or tagline, e.g., Data Analyst at Tabula</td></tr><tr><td>Title</td><td>text</td><td>yes</td><td>Professional title or job position of the person, e.g., Senior Data Analyst</td></tr><tr><td>LinkedIn URL</td><td>text</td><td>yes</td><td>Personal LinkedIn URL</td></tr></tbody></table>

### Sample response

{% tabs %}
{% tab title="Person Found" %}
{% code overflow="wrap" %}

```json
{
    "person": {
        "id": "6453e9bd8f50d40001f1e348",
        "first_name": "Tim",
        "last_name": "Zheng",
        "name": "Tim Zheng",
        "linkedin_url": "http://www.linkedin.com/in/tim-zheng-677ba010",
        "title": "Founder & CEO",
        "email_status": null,
        "photo_url": "https://media.licdn.com/dms/image/D5603AQEFiVRxq2aFCg/profile-displayphoto-shrink_200_200/0/1676521918175?e=1701907200&v=beta&t=6QqL_xwsDybj-FIUTr6XaEeLyrHxs7QS-IHSbVtYCak",
        "twitter_url": null,
        "github_url": null,
        "facebook_url": null,
        "extrapolated_email_confidence": null,
        "headline": "Founder & CEO at Apollo",
        "email": "name@domain.io",
        "organization_id": "5e66b6381e05b4008c8331b8",
        "employment_history": [
            {
                "_id": "651e57392998d400013ac5bd",
                "created_at": null,
                "current": true,
                "degree": null,
                "description": null,
                "emails": null,
                "end_date": null,
                "grade_level": null,
                "kind": null,
                "major": null,
                "organization_id": "5e66b6381e05b4008c8331b8",
                "organization_name": "Apollo",
                "raw_address": null,
                "start_date": "2016-01-01",
                "title": "Founder & CEO",
                "updated_at": null,
                "id": "651e57392998d400013ac5bd",
                "key": "651e57392998d400013ac5bd"
            },
            {
                "_id": "651e57392998d400013ac5be",
                "created_at": null,
                "current": false,
                "degree": null,
                "description": null,
                "emails": null,
                "end_date": "2015-01-01",
                "grade_level": null,
                "kind": null,
                "major": null,
                "organization_id": null,
                "organization_name": "Braingenie",
                "raw_address": null,
                "start_date": "2011-01-01",
                "title": "Founder & CEO",
                "updated_at": null,
                "id": "651e57392998d400013ac5be",
                "key": "651e57392998d400013ac5be"
            },
            {
                "_id": "651e57392998d400013ac5bf",
                "created_at": null,
                "current": false,
                "degree": null,
                "description": null,
                "emails": null,
                "end_date": "2011-01-01",
                "grade_level": null,
                "kind": null,
                "major": null,
                "organization_id": "54a22f23746869331840e813",
                "organization_name": "Citadel Investment Group",
                "raw_address": null,
                "start_date": "2011-01-01",
                "title": "Investment & Trading Associate",
                "updated_at": null,
                "id": "651e57392998d400013ac5bf",
                "key": "651e57392998d400013ac5bf"
            }
        ],
        "state": "California",
        "city": "San Francisco",
        "country": "United States",
        "organization": {
            "id": "5e66b6381e05b4008c8331b8",
            "name": "Apollo.io",
            "website_url": "http://www.apollo.io",
            "blog_url": null,
            "angellist_url": null,
            "linkedin_url": "http://www.linkedin.com/company/apolloio",
            "twitter_url": "https://twitter.com/meetapollo/",
            "facebook_url": "https://www.facebook.com/MeetApollo",
            "primary_phone": {
                "number": "+1415-640-9303",
                "source": "Owler",
                "country_code_added_from_hq": true
            },
            "languages": [],
            "alexa_ranking": 3514,
            "phone": "+1415-640-9303",
            "linkedin_uid": "18511550",
            "founded_year": 2015,
            "publicly_traded_symbol": null,
            "publicly_traded_exchange": null,
            "logo_url": "https://zenprospect-production.s3.amazonaws.com/uploads/pictures/64beb2c5e966df0001384ac1/picture",
            "crunchbase_url": null,
            "primary_domain": "apollo.io",
            "sanitized_phone": "+14156409303",
            "industry": "information technology & services",
            "keywords": [
                "sales engagement",
                "lead generation",
                "predictive analytics",
                "lead scoring",
                "sales strategy",
                "conversation intelligence",
                "sales enablement",
                "lead routing",
                "sales development",
                "email engagement",
                "revenue intelligence",
                "sales operations",
                "demand generation"
            ],
            "estimated_num_employees": 1200,
            "industries": [
                "information technology & services"
            ],
            "secondary_industries": [],
            "snippets_loaded": true,
            "industry_tag_id": "5567cd4773696439b10b0000",
            "industry_tag_hash": {
                "information technology & services": "5567cd4773696439b10b0000"
            },
            "retail_location_count": 0,
            "raw_address": "535 mission street, san francisco, california, united states",
            "street_address": "535 Mission Street",
            "city": "San Francisco",
            "state": "California",
            "postal_code": "94105",
            "country": "United States",
            "owned_by_organization_id": null,
            "suborganizations": [],
            "num_suborganizations": 0,
            "seo_description": "Search, engage, and convert over 265 million contacts at over 70 million companies with Apollo's sales intelligence and engagement platform.",
            "short_description": "Apollo.io combines a buyer database of over 270M contacts and powerful sales engagement and automation tools in one, easy to use platform. Trusted by over 160,000 companies including Autodesk, Rippling, Deel, Jasper.ai, Divvy, and Heap, Apollo has more than one million users globally. By helping sales professionals find their ideal buyers and intelligently automate outreach, Apollo helps go-to-market teams sell anything.\n\nCelebrating a $100M Series D Funding Round 🦄",
            "annual_revenue_printed": "###.#",
            "annual_revenue": ###.#,
            "total_funding": 251200000,
            "total_funding_printed": "251.2M",
            "latest_funding_round_date": "2023-08-01T00:00:00.000+00:00",
            "latest_funding_stage": "Series D",
            "funding_events": [
                {
                    "id": "6520fc8e0f5b210001b5285b",
                    "date": "2023-08-01T00:00:00.000+00:00",
                    "news_url": null,
                    "type": "Series D",
                    "investors": "Bain Capital Ventures, Sequoia Capital, Tribe Capital, Nexus Venture Partners",
                    "amount": "100M",
                    "currency": "$"
                },
                {
                    "id": "624f4dfec786590001768016",
                    "date": "2022-03-01T00:00:00.000+00:00",
                    "news_url": null,
                    "type": "Series C",
                    "investors": "Sequoia Capital, Tribe Capital, Nexus Venture Partners, NewView Capital",
                    "amount": "110M",
                    "currency": "$"
                },
                {
                    "id": "61b13677623110000186a478",
                    "date": "2021-10-01T00:00:00.000+00:00",
                    "news_url": null,
                    "type": "Series B",
                    "investors": "Tribe Capital, NewView Capital, Nexus Venture Partners",
                    "amount": "32M",
                    "currency": "$"
                },
                {
                    "id": "5ffe93caa54d75077c59acef",
                    "date": "2018-06-26T00:00:00.000+00:00",
                    "news_url": "https://techcrunch.com/2018/06/26/yc-grad-zenprospect-rebrands-as-apollo-lands-7-m-series-a/",
                    "type": "Series A",
                    "investors": "Nexus Venture Partners, Social Capital, Y Combinator",
                    "amount": "7M",
                    "currency": "$"
                },
                {
                    "id": "6520fc8f0f5b210001b52860",
                    "date": "2016-10-01T00:00:00.000+00:00",
                    "news_url": null,
                    "type": "Other",
                    "investors": "Y Combinator, SV Angel, Social Capital, Nexus Venture Partners",
                    "amount": "2.2M",
                    "currency": "$"
                }
            ]
        },
        "phone_numbers": [
            {
                "raw_number": "+1415-640-9303",
                "sanitized_number": "+14156409303",
                "type": "work_hq",
                "position": 0,
                "status": "no_status",
                "dnc_status": null,
                "dnc_other_info": null
            }
        ],
        "intent_strength": null,
        "show_intent": false,
        "revealed_for_current_team": true,
        "hashed_email": "8d935115b9ff4489f2d1f9249503cadf",
        "personal_emails": [],
        "departments": [
            "c_suite"
        ],
        "subdepartments": [
            "executive",
            "founder"
        ],
        "functions": [
            "entrepreneurship"
        ],
        "seniority": "founder"
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="Person Not Found" %}

```json
{
    "person": {
        "id": "66c62ff44bbdec01b29f5d74",
        "name": "",
        "email": null,
        "title": null,
        "headline": null,
        "functions": [],
        "last_name": null,
        "photo_url": null,
        "seniority": null,
        "first_name": null,
        "github_url": null,
        "departments": [],
        "show_intent": false,
        "twitter_url": null,
        "email_status": null,
        "facebook_url": null,
        "linkedin_url": "1233838383",
        "subdepartments": [],
        "intent_strength": null,
        "organization_id": null,
        "employment_history": [],
        "is_likely_to_engage": false,
        "revealed_for_current_team": true,
        "extrapolated_email_confidence": null
    }
}
```

{% endtab %}
{% endtabs %}


# Enrich company by domain

Provider Apollo.io

### Overview

Return company details based on website domain.

### Input parameters

<table><thead><tr><th width="236">Name</th><th width="135">Is Required</th><th width="144">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>Company Domain</strong></td><td><strong>required</strong></td><td>text column</td><td>Domain of the company, e.g., company.com</td></tr></tbody></table>

### Output fields

Fields that are not extracted by default can be found in a column with an original response (select option "Save original response" in advanced settings). Use the Unnest node or JSON preview window to extract such fields to the new columns.

<table><thead><tr><th width="239">Name</th><th width="132.33333333333331">Type</th><th width="124">Extracted</th><th>Description</th></tr></thead><tbody><tr><td>Company Name</td><td>text</td><td>yes</td><td>Name of the company, e.g., Retable Inc</td></tr><tr><td>Website</td><td>text</td><td>yes</td><td>Official website URL of the company, e.g., www.company.com</td></tr><tr><td>LinkedIn URL</td><td>text</td><td>yes</td><td>Company's LinkedIn profile URL, e.g., www.linkedin.com/company/yourcompany</td></tr><tr><td>Industry</td><td>text</td><td>yes</td><td>Sector in which the company operates, e.g., Technology, Healthcare</td></tr><tr><td>Primary Domain</td><td>text</td><td>yes</td><td>Main domain name of the company, e.g., company.com</td></tr><tr><td>Facebook URL</td><td>text</td><td>yes</td><td>Company's Facebook profile URL, e.g., www.facebook.com/yourcompany</td></tr><tr><td>Blog URL</td><td>text</td><td>yes</td><td>URL of the company's official blog, e.g., www.company.com/blog</td></tr><tr><td>Angellist Url</td><td>text</td><td>yes</td><td>Company's AngelList profile URL, e.g., www.angel.co/yourcompany</td></tr><tr><td>Crunchbase Url</td><td>text</td><td>yes</td><td>Company's Crunchbase profile URL, e.g., www.crunchbase.com/organization/yourcompany</td></tr><tr><td>Twitter Url</td><td>text</td><td>yes</td><td>Company's Twitter profile URL, e.g., www.twitter.com/yourcompany</td></tr><tr><td>Logo Url</td><td>text</td><td>yes</td><td>URL of the company's logo image, e.g., www.company.com/logo.png</td></tr><tr><td>Number of Employees</td><td>number</td><td>yes</td><td>Total number of employees in the company, e.g., 50</td></tr><tr><td>Phone</td><td>text</td><td>yes</td><td>Company's contact phone number, e.g., +1-800-123-4567</td></tr><tr><td>Raw Address</td><td>text</td><td>yes</td><td>Complete address of the company in a single line, e.g., 123 Main St, San Francisco, CA 94105, USA</td></tr><tr><td>Country</td><td>text</td><td>yes</td><td>Country where the company is based, e.g., United States</td></tr><tr><td>Postal Code</td><td>text</td><td>yes</td><td>Company's postal or ZIP code, e.g., 10001</td></tr><tr><td>State</td><td>text</td><td>yes</td><td>State or province where the company is located, e.g., California</td></tr><tr><td>City</td><td>text</td><td>yes</td><td>City where the company is located, e.g., San Francisco</td></tr><tr><td>Street Address</td><td>text</td><td>yes</td><td>Street address of the company, e.g., 123 Main St</td></tr><tr><td>Alexa Ranking</td><td></td><td></td><td></td></tr><tr><td>Founded Year</td><td></td><td></td><td></td></tr><tr><td>Short Description</td><td>text</td><td>yes</td><td>Brief overview of the company, e.g., Leading provider of data analytics solutions</td></tr><tr><td>Annual Revenue</td><td>number</td><td>yes</td><td>Total yearly revenue of the company, e.g., $5 million</td></tr><tr><td>Annual Revenue Printed</td><td>text</td><td>yes</td><td>Total yearly revenue of the company in a formatted text, e.g., $5M</td></tr><tr><td>Total Funding</td><td>number</td><td>yes</td><td>Total amount of funding the company has raised, e.g., $10 million</td></tr><tr><td>Total Funding Printed</td><td>text</td><td>yes</td><td>Total amount of funding the company has raised in a formatted text, e.g., $10M</td></tr><tr><td>Latest Funding Round Date</td><td>date</td><td>yes</td><td>Total amount of funding the company has raised in a formatted text, e.g., $10M</td></tr><tr><td>Latest Funding Stage</td><td>text</td><td>yes</td><td>Most recent funding stage the company has reached, e.g., Series B</td></tr><tr><td>Technology Names</td><td>array</td><td>yes</td><td>List of technologies used by the company, e.g., Python, SQL, Tableau</td></tr><tr><td>Current Technologies</td><td>array</td><td>yes</td><td>Technologies currently used by the company, e.g., Python, SQL, Tableau</td></tr><tr><td>Funding Events</td><td>array</td><td>yes</td><td>Details of the company's funding rounds, e.g., Series A in 2019, Series B in 2021</td></tr></tbody></table>

### Sample response

{% tabs %}
{% tab title="Company Found" %}
{% code overflow="wrap" %}

```json
{
    "organization": {
        "id": "5e66b6XXXXXXXXXXXXXXXXXX",
        "name": "Apollo.io",
        "website_url": "http://www.apollo.io",
        "blog_url": null,
        "angellist_url": null,
        "linkedin_url": "http://www.linkedin.com/company/apolloio",
        "twitter_url": "https://twitter.com/MeetApollo/",
        "facebook_url": "https://www.facebook.com/MeetApollo/",
        "primary_phone": {
            "number": "202374XXXX",
            "source": "Account"
        },
        "languages": [],
        "alexa_ranking": 522,
        "phone": "202374XXXX",
        "linkedin_uid": "185115XX",
        "founded_year": 2015,
        "publicly_traded_symbol": null,
        "publicly_traded_exchange": null,
        "logo_url": "https://apollo-server.com/uploads/pictures/61824XXXXXXXXXXXXXXXXXXX/picture",
        "crunchbase_url": null,
        "primary_domain": "apollo.io",
        "persona_counts": {},
        "industry": "computer software",
        "keywords": [
            "sales engagement",
            "lead generation",
            "predictive analytics",
            "lead scoring",
            "sales strategy",
            "conversation intelligence",
            "sales enablement",
            "lead routing",
            "sales development",
            "email engagement",
            "revenue intelligence",
            "sales operations",
            "demand generation"
        ],
        "estimated_num_employees": 170,
        "snippets_loaded": true,
        "industry_tag_id": "5567cdXXXXXXXXXXXXXXXXXX",
        "retail_location_count": 0,
        "raw_address": "535 Mission St, Suite 1100, San Francisco, California 94105, US",
        "street_address": "535 Mission St",
        "city": "San Francisco",
        "state": "California",
        "postal_code": "94105",
        "country": "United States",
        "owned_by_organization_id": null,
        "suborganizations": [],
        "num_suborganizations": 0,
        "seo_description": "Apollo is a data-first engagement platform that embeds intelligence within your workflows to help you execute, analyze, and improve on your growth strategy.",
        "short_description": "Apollo is the unified engagement acceleration platform that gives reps the ability to dramatically increase their number of quality conversations and opportunities. Reps are empowered do more than just conduct outreach, they learn who to target, how to reach out, and what to say at speed and scale. We help drive growth and success by providing the means for teams to discover and utilize their organization’s unique best practices. By working in a unified platform, reps and managers alike save hours of time each day, strategy changes are instantly scaled across the whole team, and managers can finally dig into data at each step of their pipeline to continually find new ways to improve. \n\nTeams get access to our database of 200+ million contacts with a built-in fully customizable Scoring Engine, full sales engagement stack, our native Account Playbook builder, and the industry’s only custom deep analytics suite. Managers create and enforce order and process with the industry’s most advanced Rules Engine.\n\nApollo is the foundation for your entire end-to-end sales strategy.\n\nJoin teams like Autodesk, Copper (ProsperWorks), and Snowflake to experience the future of sales today. Ready to join our crew? Email sales@apollo.io. ",
        "annual_revenue_printed": "###.#",
        "annual_revenue": ###.#,
        "total_funding": 9200000,
        "total_funding_printed": "9.2M",
        "latest_funding_round_date": "2018-06-26T00:00:00.000+00:00",
        "latest_funding_stage": "Series A",
        "funding_events": [
            {
                "id": "5ffe93XXXXXXXXXXXXXXXXXX",
                "date": "2018-06-26T00:00:00.000+00:00",
                "news_url": "https://techcrunch.com/2018/06/26/yc-grad-zenprospect-rebrands-as-apollo-lands-7-m-series-a/",
                "type": "Series A",
                "investors": "Nexus Venture Partners",
                "amount": "7M",
                "currency": "$"
            },
            {
                "id": "5ffe93XXXXXXXXXXXXXXXXXX",
                "date": "2016-10-01T00:00:00.000+00:00",
                "news_url": null,
                "type": "Other",
                "investors": "Y Combinator, SV Angel, Social Capital, Nexus Venture Partners",
                "amount": "2.2M",
                "currency": "$"
            }
        ],
        "technology_names": [
            "Cloudflare DNS",
            "Mailchimp Mandrill",
            "Gmail",
            "Marketo",
            "Google Apps",
            "Microsoft Office 365",
            "CloudFlare Hosting",
            "Route 53",
            "Zendesk",
            "Google Cloud Hosting",
            "Stripe",
            "Lever",
            "Segment.io",
            "Amplitude",
            "Hubspot",
            "Nginx",
            "CrazyEgg",
            "Squarespace ECommerce",
            "Linkedin Marketing Solutions",
            "Yandex Metrica",
            "Mobile Friendly",
            "Typekit",
            "Google Tag Manager"
        ],
        "current_technologies": [
            {
                "uid": "cloudflare_dns",
                "name": "Cloudflare DNS",
                "category": "Domain Name Services"
            },
            {
                "uid": "mailchimp_mandrill",
                "name": "Mailchimp Mandrill",
                "category": "Email Delivery"
            },
            {
                "uid": "gmail",
                "name": "Gmail",
                "category": "Email Providers"
            },
            {
                "uid": "marketo",
                "name": "Marketo",
                "category": "Marketing Automation"
            }
        ],
        "account_id": "614264XXXXXXXXXXXXXXXXXX",
        "account": {
            "id": "614264XXXXXXXXXXXXXXXXXX",
            "domain": "apollo.io",
            "name": "Apollo",
            "team_id": "5c1004XXXXXXXXXXXXXXXXXX",
            "organization_id": "5e66b6XXXXXXXXXXXXXXXXXX",
            "account_stage_id": "5c1004XXXXXXXXXXXXXXXXXX",
            "source": "salesforce",
            "original_source": "salesforce",
            "owner_id": "5c1004XXXXXXXXXXXXXXXXXX",
            "created_at": "2021-09-15T21:24:18.374Z",
            "phone": "(123) 456-XXXX",
            "phone_status": "no_status",
            "test_predictive_score": null,
            "hubspot_id": null,
            "salesforce_id": "0015g0XXXXXXXXXXXX",
            "crm_owner_id": "0055g0XXXXXXXXXXXX",
            "parent_account_id": null,
            "sanitized_phone": "+112345XXXXX",
            "account_playbook_statuses": [],
            "existence_level": "full",
            "label_ids": [],
            "typed_custom_fields": {},
            "modality": "account",
            "persona_counts": {}
        },
        "departmental_head_count": {
            "engineering": 45,
            "accounting": 4,
            "product_management": 5,
            "support": 31,
            "arts_and_design": 10,
            "sales": 37,
            "education": 6,
            "consulting": 10,
            "human_resources": 10,
            "business_development": 22,
            "operations": 10,
            "finance": 8,
            "entrepreneurship": 4,
            "marketing": 7,
            "information_technology": 5,
            "administrative": 3,
            "legal": 0,
            "media_and_commmunication": 0,
            "data_science": 0
        }
    }
}

```

{% endcode %}
{% endtab %}

{% tab title="Company Not Found" %}

```json
```

{% endtab %}
{% endtabs %}


# Bounceban

https\://bounceban.com/

### Supported queries

**Verify emails**

* Verify email


# Bouncer

https\://www\.usebouncer.com/

### Supported queries

**Verify emails**

* Verify emails


# Bouncify

https\://www\.bouncify.com/

### Supported queries

**Verify emails**

* Verify email


# CaptainVerify

https\://captainverify.com/

### Supported queries

**Verify emails**

* Verify email


# Cleanify

https\://cleanify.io/

### Supported queries

**Verify emails**

* Verify email


# Clearout

https\://clearout.io/

### Supported queries

**Enrich people**

* Enrich person by LinkedIn
* Enrich person by Email
* Get email by domain and name

**Verify emails**

* Verify email


# CompanyEnrich

https\://companyenrich.com/

### Supported queries

**Searches**

* Find companies
* Find lookalike companies

**Enrich companies**

* Enrich company by domain
* Enrich company by LinkedIn


# ContactOut

https\://contactout.com/

### How to

{% content-ref url="/pages/AQUl0rvXdq82rvmX4BPr" %}
[How to find ContactOut API key](/integrations/enrichment/data-providers/contactout/how-to-find-contactout-api-key)
{% endcontent-ref %}

### Supported queries

**Searches**

* Find companies
* Find people

**Enrich people**

* Get contacts by LinkedIn
* Get LinkedIn by email
* [Enrich person by LinkedIn](/integrations/enrichment/data-providers/contactout/enrich-person-by-linkedin)
* [Enrich person by email](https://app.gitbook.com/o/53BAh4NBcVyOgNBqlmWT/s/t2TZFevDoRrOBI2rPK1p/~/changes/204/integrations/enrichments/enrichment-providers/contactout/enrich-person-by-email)

**Verify emails**

* Verify email


# How to find ContactOut API key

Learn how to find API key in ContactOut account

1. Login to your account on ContactOut
2. Go to <https://contactout.com/api-dashboard>

<figure><img src="/files/7omDxG3fJjCR6YaiFyZC" alt=""><figcaption></figcaption></figure>

3. Press **Copy** button to copy your key


# Enrich person by LinkedIn

Provider Сontactout.com

### Overview

Return person's details based on email.

### Input parameters

<table><thead><tr><th width="236">Name</th><th width="135">Is Required</th><th width="144">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>Email</strong></td><td><strong>required</strong></td><td>text column</td><td>The person's email</td></tr></tbody></table>

### Output fields

Fields that are not extracted by default can be found in a column with an original response (select option "Save original response" in advanced settings). Use the Unnest node or JSON preview window to extract such fields to the new columns.

<table><thead><tr><th width="239">Name</th><th width="132.33333333333331">Type</th><th width="124">Extracted</th><th>Description</th></tr></thead><tbody><tr><td>Full Name</td><td>text</td><td>yes</td><td>The person's complete name, e.g., John Doe</td></tr><tr><td>Headline</td><td>text</td><td>yes</td><td>Brief professional title or tagline, e.g., Data Analyst at Tabula</td></tr><tr><td>LinkedIn URL</td><td>text</td><td>yes</td><td>The person's LinkedIn profile URL, e.g., <a href="http://www.linkedin.com/in/yourprofile">www.linkedin.com/in/yourprofile</a></td></tr><tr><td>Location</td><td>text</td><td>yes</td><td>The person's city and state of residence, e.g., San Francisco, CA</td></tr><tr><td>Photo URL</td><td>text</td><td>yes</td><td>URL of the person's profile photo, e.g., www.website.com/photo.jpg</td></tr><tr><td>GitHub URLs</td><td>text</td><td>yes</td><td>Links to the person's GitHub profiles or repositories, e.g., github.com/username</td></tr><tr><td>All Emails</td><td>array</td><td>yes</td><td>List of all email addresses associated with the person, e.g., john.doe@example.com</td></tr><tr><td>All Work Emails</td><td>array</td><td>yes</td><td>List of all work email addresses associated with the person, e.g., john.doe@company.com</td></tr><tr><td>All Personal Emails</td><td>array</td><td>yes</td><td>List of all personal email addresses associated with the person, e.g., john.doe@gmail.com</td></tr><tr><td>Employment History</td><td>array</td><td>yes</td><td>Record of the person's past job positions, e.g., Data Analyst at Tabula from 2018-2021</td></tr><tr><td>Industry</td><td>text</td><td>yes</td><td>Sector in which the person works, e.g., Data Analytics, Technology</td></tr><tr><td>All Phone Numbers</td><td>array</td><td>yes</td><td>List of all phone numbers associated with the person, e.g., +1-800-123-4567</td></tr><tr><td>Summary</td><td>text</td><td>yes</td><td>Brief professional summary or bio of the person, e.g., Experienced data analyst with expertise in data visualization and predictive analytics</td></tr></tbody></table>

### Sample response

{% tabs %}
{% tab title="Person Found" %}
{% code overflow="wrap" %}

```json
{
  "status_code": 200,
  "profile": {
    "email": "0getfisher@gmail.com",
    "workEmail": "work-email@obm-international.com",
    "workEmailStatus": "Verified | Unverified",
    "fullName": "Bobbi Singh",
    "headline": "Manager, Business Operations & Marketing at OBM International",
    "industry": "Broadcast Media",
    "linkedinUrl": "https://www.linkedin.com/in/bobbisingh",
    "profilePictureUrl": "https://images.contactout.com/profiles/ca33f14227b1e5d3a1d53b0b5ca36fc8",
    "confidenceLevel": "",
    "altMatches": [],
    "phone": " +61.438347437",
    "twitter": "",
    "github": "",
    "company": {
      "name": "OBM International",
      "url": "https://www.linkedin.com/company/obm-international",
      "website": "http://obm.international",
      "headquarter": "HQ",
      "locations": [
        {
          "line1": "Address Line 1",
          "line2": "Address Line 2",
          "city": "City",
          "state": "State",
          "country": "US",
          "postalCode": "12345",
          "description": "Headquarters"
        }
      ]
    },
    "location": "Bermuda",
    "summary": "An experienced professional with over 19 years in Marketing (digital, print, radio, television), Communications, Content Creation, Copy Writing, Website Maintenance, Social Media Exploitation, Relationship Building, Business Development, Business Operations, Training and Leadership.\\n",
    "experience": [
      {
        "end": "Present",
        "start": 2018,
        "title": "Manager, Business Operations & Marketing",
        "description": "Established in 1936, OBMI is a global master planning, architecture and design firm, with a rich history of shaping the architectural landscape of Bermuda. Within the firm, I support the OBMI Bermuda office on a multi-faceted level. My commitment to relationship building & client management, together with my passion and proficiency in marketing & communications, allows me to be an integral member of the team. Currently, my mandates include:Marketing•\tLead all marketing initiatives for the OBMI Bermuda office•\tCreation all print and digital ads for the local market•\tCreate, design and execute the quarterly newsletter•\tCopy & creative of OBMI Bermuda articles for local and international publication•\tManage Google My Business content•\tOversee see all aspects of the OBMI Bermuda website•\tCapture and analyze various metrics to identify areas of enhancement•\tExplore industry trends, best practices and innovative marketing solutions for potential adoptionBusiness Operations•\tProject management •\tClient relationship management•\tVendor & consultant management•\tOffice administration•\tPrimary point of contact for Bermuda office•\tCollaborate with corporate office in Miami on marketing & company-wide initiatives/roll-outs",
        "organization": [
          {
            "name": "OBM International",
            "profile_url": "https://www.linkedin.com/company/obm-international"
          }
        ]
      }
    ],
    "education": [
      {
        "end": "2004",
        "name": "George Brown College",
        "major": "Journalism",
        "start": "2002",
        "degrees": ["Journalism"],
        "profile_url": "http://www.linkedin.com/edu/george-brown-college-19978"
      }
    ],
    "skills": [
      "Digital Marketing",
      "Content Creation",
      "Business Development",
      "Project Management",
      "Client Relationship Management"
    ]
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="Person Not Found" %}

```json
{
  "status_code": 404,
  "message": "Not Found"
}
```

{% endtab %}
{% endtabs %}


# Enrich person by email

Provider Сontactout.com

### Overview

Return person's details based on LinkedIn URL.

### Input parameters

<table><thead><tr><th width="236">Name</th><th width="135">Is Required</th><th width="144">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>LinkedIn URL</strong></td><td><strong>required</strong></td><td>text column</td><td>The person's LinkedIn profile URL, e.g., <a href="http://www.linkedin.com/in/yourprofile">www.linkedin.com/in/yourprofile</a></td></tr></tbody></table>

### Output fields

Fields that are not extracted by default can be found in a column with an original response (select option "Save original response" in advanced settings). Use the Unnest node or JSON preview window to extract such fields to the new columns.

<table><thead><tr><th width="239">Name</th><th width="132.33333333333331">Type</th><th width="124">Extracted</th><th>Description</th></tr></thead><tbody><tr><td>Full Name</td><td>text</td><td>yes</td><td>The person's complete name, e.g., John Doe</td></tr><tr><td>Headline</td><td>text</td><td>yes</td><td>Brief professional title or tagline, e.g., Data Analyst at Tabula</td></tr><tr><td>LinkedIn URL</td><td>text</td><td>yes</td><td>The person's LinkedIn profile URL, e.g., <a href="http://www.linkedin.com/in/yourprofile">www.linkedin.com/in/yourprofile</a></td></tr><tr><td>Location</td><td>text</td><td>yes</td><td>The person's city and state of residence, e.g., San Francisco, CA</td></tr><tr><td>Photo URL</td><td>text</td><td>yes</td><td>URL of the person's profile photo, e.g., www.website.com/photo.jpg</td></tr><tr><td>GitHub URLs</td><td>text</td><td>yes</td><td>Links to the person's GitHub profiles or repositories, e.g., github.com/username</td></tr><tr><td>All Emails</td><td>array</td><td>yes</td><td>List of all email addresses associated with the person, e.g., john.doe@example.com</td></tr><tr><td>All Work Emails</td><td>array</td><td>yes</td><td>List of all work email addresses associated with the person, e.g., john.doe@company.com</td></tr><tr><td>All Personal Emails</td><td>array</td><td>yes</td><td>List of all personal email addresses associated with the person, e.g., john.doe@gmail.com</td></tr><tr><td>Employment History</td><td>array</td><td>yes</td><td>Record of the person's past job positions, e.g., Data Analyst at Tabula from 2018-2021</td></tr><tr><td>Industry</td><td>text</td><td>yes</td><td>Sector in which the person works, e.g., Data Analytics, Technology</td></tr><tr><td>All Phone Numbers</td><td>array</td><td>yes</td><td>List of all phone numbers associated with the person, e.g., +1-800-123-4567</td></tr><tr><td>Summary</td><td>text</td><td>yes</td><td>Brief professional summary or bio of the person, e.g., Experienced data analyst with expertise in data visualization and predictive analytics</td></tr></tbody></table>

### Sample response

{% tabs %}
{% tab title="Person Found" %}
{% code overflow="wrap" %}

```json
{
  "status_code": 200,
  "profile": {
    "url": "https://www.linkedin.com/in/example-person",
    "email": ["email1@example.com", "email2@gmail.com"],
    "work_email": ["email1@example.com"],
    "personal_email": ["email2@gmail.com"],
    "phone": ["+1234567891"],
    "github": ["github_name"],
    "twitter": ["twitter_username"],
    "fullName": "Example Person",
    "headline": "Manager, Business Operations & Marketing at OBM",
    "industry": "Broadcast Media",
    "company": {
      "name": "Legros, Smitham and Kessler",
      "url": "https://www.linkedin.com/company/legros-smitham-and-kessler",
      "domain": "legros.com",
      "email_domain": "legros.com",
      "overview": "Legros, Smitham and Kessler is a publicly traded healthcare company specializing in pharmaceuticals, biotechnology, and medical devices. Founded in 2007 and headquartered in the United States, they are committed to advancing medical innovation and improving patient outcomes.",
      "type": "Public Company",
      "size": 50,
      "country": "United States",
      "revenue": 6101000,
      "founded_at": 2007,
      "industry": "Healthcare",
      "headquarter": "535 Kuhic Gardens Apt. 044",
      "website": "http://www.legros.com",
      "logo_url": "https://images.contactout.com/companies/voluptates",
      "specialties": [
        "Healthcare",
        "Medical",
        "Pharmaceuticals",
        "Biotechnology",
        "Medical Devices"
      ],
      "locations": [
        "426 Lyda Unions, 551, Janniefort, New Hampshire, 56941-1470, Nicaragua",
        "308 Cassandra Harbor Apt. 751, 78817, Darionburgh, Louisiana, 18743, Timor-Leste"
      ]
    },
    "location": "Bermuda",
    "summary": "An experienced professional with over 19 years in Marketing (digital, print, radio, television), Communications, Content Creation, Copy Writing, Website Maintenance, Social Media Exploitation, Relationship Building, Business Development, Business Operations, Training and Leadership.\\n",
    "experience": [
      {
        "end": "Present",
        "start": 2018,
        "title": "Manager, Business Operations & Marketing",
        "description": "Established in 1936, OBMI is a global master planning, architecture and design firm, with a rich history of shaping the architectural landscape of Bermuda. Within the firm, I support the OBMI Bermuda office on a multi-faceted level. My commitment to relationship building & client management, together with my passion and proficiency in marketing & communications, allows me to be an integral member of the team. Currently, my mandates include:Marketing•\tLead all marketing initiatives for the OBMI Bermuda office•\tCreation all print and digital ads for the local market•\tCreate, design and execute the quarterly newsletter•\tCopy & creative of OBMI Bermuda articles for local and international publication•\tManage Google My Business content•\tOversee see all aspects of the OBMI Bermuda website•\tCapture and analyze various metrics to identify areas of enhancement•\tExplore industry trends, best practices and innovative marketing solutions for potential adoptionBusiness Operations•\tProject management •\tClient relationship management•\tVendor & consultant management•\tOffice administration•\tPrimary point of contact for Bermuda office•\tCollaborate with corporate office in Miami on marketing & company-wide initiatives/roll-outs",
        "organization": [
          {
            "name": "OBM International",
            "profile_url": "https://www.linkedin.com/company/obm-international"
          }
        ]
      }
    ],
    "education": [
      {
        "end": "2004",
        "name": "George Brown College",
        "major": "Journalism",
        "start": "2002",
        "degrees": ["Journalism"],
        "profile_url": "http://www.linkedin.com/edu/george-brown-college-19978"
      }
    ],
    "skills": [
      "Digital Marketing",
      "Content Creation",
      "Business Development",
      "Project Management",
      "Client Relationship Management"
    ],
    "profile_picture_url": "https://images.contactout.com/profiles/ca33f14227b1e5d3a1d53b0b5ca36fc8"
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="Person Not Found" %}

```json
{
  "status_code": 200,
  "profile": []
}
```

{% endtab %}
{% endtabs %}


# Discolike

https\://www\.discolike.com/

### Supported queries

**Searches**

* Find lookalike companies


# TheCompaniesAPI

https\://www\.thecompaniesapi.com/

### Supported queries

**Searches**

* Find lookalike companies


# Findymail

https\://www\.findymail.com/

### Supported queries

**Enrich companies**

* Get employees by domain

**Enrich people**

* Enrich person by LinkedIn
* Get email by domain and name
* Get email by LinkedIn
* Get phone by LinkedIn

**Verify emails**

* Verify email


# Emailable

https\://emailable.com/

### Supported queries

**Verify emails**

* Verify email


# EmailListVerify

https\://emaillistverify.com/

### Supported queries

**Verify emails**

* Verify email


# Enrichley

https\://www\.enrichley.io/

### Supported queries

**Verify emails**

* Verify emails


# Heybounce

https\://www\.heybounce.io/

### Supported queries

**Verify emails**

* Verify email


# Hunter

https\://hunter.io/

### Supported queries

**Enrich companies**

* Enrich company by domain
* Get employees by domain
* Get employees by company name

**Enrich people**

* Enrich person by email
* Enrich person and company by email
* Get email by domain and name

**Verify emails**

* Verify email


# Kickbox

https\://kickbox.com/

### Supported queries

**Verify emails**

* Verify email


# Mails

https\://mails.so/

### Supported queries

**Verify emails**

* Verify email


# MailChecker

https\://www\.mailercheck.com/

### Supported queries

**Verify emails**

* Verify email


# MillionVerifier

https\://www\.millionverifier.com/

### Supported queries

**Verify emails**

* Verify email


# NeverBounce

https\://www\.neverbounce.com/

### Supported queries

**Verify emails**

* Verify emails


# Nubela (Proxycurl)

https\://nubela.co/

### Supported queries

**Searches**

* Find companies
* Find people
* Find jobs

**Enrich companies**

* Enrich company by domain
* Enrich company by LinkedIn
* Get employees by LinkedIn
* Get employees count by LinkedIn
* Get job listings by companyID
* Get number of job listings by companyID
* Get job listing details
* Get customers by LinkedIn
* Get followers by LinkedIn

**Enrich people**

* Enrich person by LinkedIn
* Enrich person by Twitter
* Enrich person by Facebook
* Enrich person by email
* Get LinkedIn by domain and name
* Get LinkedIn by company name and role
* Get email by LinkedIn
* Get phone by LinkedIn
* Get social media profiles by phone


# PeopleDataLabs

https\://peopledatalabs.com/

### Supported queries

**Enrich companies**

* Enrich company by domain
* Enrich company by LinkedIn

**Enrich people**

* Enrich person by LinkedIn
* Enrich person and company by email


# Prospeo

https\://prospeo.io/

### Supported queries

**Enrich companies**

* Get employees by domain
* Get employees by company name

**Enrich people**

* Enrich person by LinkedIn
* Get email by domain and name
* Get phone by LinkedIn

**Verify emails**

* Verify email


# ZeroBounce

https\://www\.zerobounce.net/

### Supported queries

**Enrich companies**

* Get email pattern by domain

**Enrich people**

* Get email by domain and name

**Verify emails**

* Verify email


# ReverseContact

https\://www\.reversecontact.com/

### How to

{% content-ref url="/pages/8RVkLTGovAldmNAK9KHq" %}
[How to find Reverse Contact API key](/integrations/enrichment/data-providers/reversecontact/how-to-find-reverse-contact-api-key)
{% endcontent-ref %}

### Supported queries

**Enrich companies**

* [Enrich company by domain](https://app.gitbook.com/o/53BAh4NBcVyOgNBqlmWT/s/t2TZFevDoRrOBI2rPK1p/~/changes/208/integrations/enrichments/enrichment-providers/reversecontact/enrich-company-by-domain)
* [Enrich company by LinkedIn](https://app.gitbook.com/o/53BAh4NBcVyOgNBqlmWT/s/t2TZFevDoRrOBI2rPK1p/~/changes/208/integrations/enrichments/enrichment-providers/reversecontact/enrich-company-by-linkedin)

**Enrich people**

* [Enrich person by LinkedIn](https://app.gitbook.com/o/53BAh4NBcVyOgNBqlmWT/s/t2TZFevDoRrOBI2rPK1p/~/changes/208/integrations/enrichments/enrichment-providers/reversecontact/enrich-person-by-linkedin)
* [Enrich person and company by email](https://app.gitbook.com/o/53BAh4NBcVyOgNBqlmWT/s/t2TZFevDoRrOBI2rPK1p/~/changes/208/integrations/enrichments/enrichment-providers/reversecontact/enrich-person-and-company-by-email)


# How to find Reverse Contact API key

Learn how to find API key in Reverse Contact account

1. Login to your account on Reverse Contact
2. Go to <https://app.reversecontact.com/api>

<figure><img src="/files/VAa8RlljqV18kwLBbo4F" alt=""><figcaption></figcaption></figure>

1. Press **GET MY API KEY** button to generate a new key
2. Select and Copy your key

<figure><img src="/files/Fhuz5Hvb5TEqOwmL5rhG" alt=""><figcaption></figcaption></figure>


# Enrich person by LinkedIn

Provider Reversecontact.com

### Overview

Return person's details based on personal LinkedIn URL.

### Input parameters

<table><thead><tr><th width="236">Name</th><th width="135">Is Required</th><th width="144">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>LinkedIn URL</strong></td><td><strong>required</strong></td><td>text column</td><td>Personal LinkedIn URL</td></tr></tbody></table>

### Output fields

Fields that are not extracted by default can be found in a column with an original response (select option "Save original response" in advanced settings). Use the Unnest node or JSON preview window to extract such fields to the new columns.

<table><thead><tr><th width="239">Name</th><th width="132.33333333333331">Type</th><th width="124">Extracted</th><th>Description</th></tr></thead><tbody><tr><td>First Name</td><td>text</td><td>yes</td><td>The person's first name</td></tr><tr><td>Last Name</td><td>text</td><td>yes</td><td>The person's last name</td></tr><tr><td>Headline</td><td>text</td><td>yes</td><td>The person's headline</td></tr><tr><td>LinkedIn URL</td><td>text</td><td>yes</td><td>The person's linkedin URL</td></tr><tr><td>Work Email</td><td>text</td><td>yes</td><td>The person's work email</td></tr><tr><td>Personal Email</td><td>text</td><td>yes</td><td>The person's personal email</td></tr><tr><td>Location</td><td>text</td><td>yes</td><td>The person's location</td></tr><tr><td>Photo URL</td><td>text</td><td>yes</td><td>The person's photo URL</td></tr><tr><td>Employment History</td><td>array</td><td>yes</td><td>The person's employment history</td></tr><tr><td>Company Name</td><td>text</td><td>yes</td><td>The name of the company where the person works</td></tr><tr><td>Number of Employees</td><td>number</td><td>yes</td><td>Number of employees in this company</td></tr><tr><td>Industry</td><td>text</td><td>yes</td><td>This company's industry</td></tr><tr><td>Website</td><td>text</td><td>yes</td><td>This company's website</td></tr><tr><td>Summary</td><td>text</td><td>yes</td><td>The person's summary</td></tr></tbody></table>

### Sample response

{% tabs %}
{% tab title="Person Details" %}
{% code overflow="wrap" %}

```json
{
  "success": true,
  "credits_left": 90000,
  "rate_limit_left": 19000,
  "person": {
    "publicIdentifier": "williamhgates",
    "linkedInIdentifier": "ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc",
    "linkedInUrl": "https://www.linkedin.com/in/ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc",
    "firstName": "Bill",
    "lastName": "Gates",
    "headline": "Co-chair, Bill & Melinda Gates Foundation",
    "location": "Seattle, Washington, United States of America",
    "summary": "Co-chair of the Bill & Melinda Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft. Voracious reader. Avid traveler. Active blogger.",
    "photoUrl": "https://media.licdn.com/dms/image/D5603AQHv6LsdiUg1kw/profile-displayphoto-shrink_800_800/0/1695167344576?e=1723680000&v=beta&t=NcEpysYwCpQ_NBg0QTz_a265pEOhfGICFJUX92-KNpw",
    "creationDate": {
      "month": 5,
      "year": 2013
    },
    "followerCount": 35415,
    "positions": {
      "positionsCount": 3,
      "positionHistory": [
        {
          "title": "Co-chair",
          "companyName": "Bill & Melinda Gates Foundation",
          "description": "",
          "startEndDate": {
            "start": {
              "month": 1,
              "year": 2000
            },
            "end": null
          },
          "companyLogo": "https://media.licdn.com/dms/image/C4E0BAQE7Na_mKQhIJg/company-logo_400_400/0/1633731811337/bill__melinda_gates_foundation_logo?e=1726099200&v=beta&t=LIgstVg1oR5LmBl9u1kolb_xeOqs5kX1ZTcUpaEtsE4",
          "linkedInUrl": "https://www.linkedin.com/company/8736/",
          "linkedInId": "8736"
        },
        {
          "title": "Founder",
          "companyName": "Breakthrough Energy",
          "description": "",
          "startEndDate": {
            "start": {
              "month": 1,
              "year": 2015
            },
            "end": null
          },
          "companyLogo": "https://media.licdn.com/dms/image/C4D0BAQGwD9vNu044FA/company-logo_400_400/0/1630531940051/breakthrough_energy_ventures_logo?e=1726099200&v=beta&t=DIU32ElAkeY4aqcq_9uJTAhiZI-v0GoOX77409cLZRE",
          "linkedInUrl": "https://www.linkedin.com/company/19141006/",
          "linkedInId": "19141006"
        },
        {
          "title": "Co-founder",
          "companyName": "Microsoft",
          "description": "",
          "startEndDate": {
            "start": {
              "month": 1,
              "year": 1975
            },
            "end": null
          },
          "companyLogo": "https://media.licdn.com/dms/image/C560BAQE88xCsONDULQ/company-logo_400_400/0/1630652622688/microsoft_logo?e=1726099200&v=beta&t=zueWlWXcJ4WjwGSzlUWgPOnjoAm8C2KfSIcWWHxWrGg",
          "linkedInUrl": "https://www.linkedin.com/company/1035/",
          "linkedInId": "1035"
        }
      ]
    },
    "schools": {
      "educationsCount": 2,
      "educationHistory": [
        {
          "degreeName": "",
          "fieldOfStudy": "",
          "description": null,
          "linkedInUrl": "https://www.linkedin.com/company/1646/",
          "schoolLogo": "https://media.licdn.com/dms/image/C4E0BAQF5t62bcL0e9g/company-logo_400_400/0/1631318058235?e=1726099200&v=beta&t=tSGQKfAlig70DD9n2_xkYR54yBTf7K3aKsau8PMQSVM",
          "schoolName": "Harvard University",
          "startEndDate": {
            "start": {
              "month": 1,
              "year": 1973
            },
            "end": {
              "month": 1,
              "year": 1975
            }
          }
        },
        {
          "degreeName": "",
          "fieldOfStudy": "",
          "description": null,
          "linkedInUrl": "https://www.linkedin.com/company/30288/",
          "schoolLogo": "https://media.licdn.com/dms/image/D560BAQGFmOQmzpxg9A/company-logo_400_400/0/1683732883164/lakeside_school_logo?e=1726099200&v=beta&t=cylwvrQe7Q4N8oU1hotzPfrae8yxPuzdtG1ocBSuEmA",
          "schoolName": "Lakeside School",
          "startEndDate": {
            "start": {
              "month": null,
              "year": null
            },
            "end": {
              "month": null,
              "year": null
            }
          }
        }
      ]
    },
    "skills": [],
    "languages": []
  },
  "company": {
    "linkedInId": "1035",
    "name": "Microsoft",
    "universalName": "microsoft",
    "linkedInUrl": "https://www.linkedin.com/company/1035",
    "employeeCount": 228581,
    "employeeCountRange": {
      "start": 10001,
      "end": 1
    },
    "websiteUrl": "https://news.microsoft.com/",
    "tagline": null,
    "description": "Every company has a mission. What's ours? To empower every person and every organization to achieve more. We believe technology can and should be a force for good and that meaningful innovation contributes to a brighter world in the future and today. Our culture doesn’t just encourage curiosity; it embraces it. Each day we make progress together by showing up as our authentic selves. We show up with a learn-it-all mentality. We show up cheering on others, knowing their success doesn't diminish our own. We show up every day open to learning our own biases, changing our behavior, and inviting in differences. Because impact matters.\n\nMicrosoft operates in 190 countries and is made up of more than 220,000 passionate employees worldwide.\n",
    "industry": "Software Development",
    "phone": null,
    "specialities": [
      "Business Software",
      "Developer Tools",
      "Home & Educational Software",
      "Tablets",
      "Search",
      "Advertising",
      "Servers",
      "Windows Operating System",
      "Windows Applications & Platforms",
      "Smartphones",
      "Cloud Computing",
      "Quantum Computing",
      "Future of Work",
      "Productivity",
      "AI",
      "Artificial Intelligence",
      "Machine Learning",
      "Laptops",
      "Mixed Reality",
      "Virtual Reality",
      "Gaming",
      "Developers",
      "IT Professional"
    ],
    "followerCount": 22736947,
    "headquarter": {
      "city": "Redmond",
      "country": "US",
      "postalCode": "98052",
      "geographicArea": "Washington",
      "street1": "1 Microsoft Way",
      "street2": null
    },
    "logo": "https://media.licdn.com/dms/image/C560BAQE88xCsONDULQ/company-logo_400_400/0/1630652622688/microsoft_logo?e=1725494400&v=beta&t=joSXHhDAEare7f9gk8MwXr2sOr84zX7HDx2h5znXEYI"
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="Person Not Found" %}

```json
{
  "success": false,
  "title": "An error has occurred 🚒",
  "msg": "This LinkedIn Profile is not available or does not exist."
}
```

{% endtab %}
{% endtabs %}


# Enrich person and company by email

Provider Reversecontact.com

### Overview

Return person's details based on email.

### Input parameters

<table><thead><tr><th width="236">Name</th><th width="135">Is Required</th><th width="144">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>Email</strong></td><td><strong>required</strong></td><td>text column</td><td>The person's email</td></tr><tr><td><strong>First Name</strong></td><td>optional</td><td>text column</td><td>The person's first name</td></tr><tr><td><strong>Last Name</strong></td><td>optional</td><td>text column</td><td>The person's last name</td></tr><tr><td><strong>Company Domain</strong></td><td>optional</td><td>text column</td><td>Domain of the company, e.g., company.com</td></tr></tbody></table>

### Output fields

Fields that are not extracted by default can be found in a column with an original response (select option "Save original response" in advanced settings). Use the Unnest node or JSON preview window to extract such fields to the new columns.

<table><thead><tr><th width="239">Name</th><th width="132.33333333333331">Type</th><th width="124">Extracted</th><th>Description</th></tr></thead><tbody><tr><td>First Name</td><td>text</td><td>yes</td><td>The person's first name</td></tr><tr><td>Last Name</td><td>text</td><td>yes</td><td>The person's last name</td></tr><tr><td>Headline</td><td>text</td><td>yes</td><td>The person's headline</td></tr><tr><td>LinkedIn URL</td><td>text</td><td>yes</td><td>The person's linkedin URL</td></tr><tr><td>Photo URL</td><td>text</td><td>yes</td><td>The person's photo URL</td></tr><tr><td>Work Email</td><td>text</td><td>yes</td><td>The person's work email</td></tr><tr><td>Personal Email</td><td>text</td><td>yes</td><td>The person's personal email</td></tr><tr><td>Employment History</td><td>array</td><td>yes</td><td>The person's employment history</td></tr><tr><td>Location</td><td>text</td><td>yes</td><td>The person's location</td></tr><tr><td>Company Name</td><td>text</td><td>yes</td><td>The name of the company where the person works</td></tr><tr><td>Number of Employees</td><td>number</td><td>yes</td><td>Number of employees in this company</td></tr><tr><td>Company Industry</td><td>text</td><td>yes</td><td>This company's industry</td></tr><tr><td>Company Website</td><td>text</td><td>yes</td><td>This company's website</td></tr><tr><td>Summary</td><td>text</td><td>yes</td><td>The person's summary</td></tr></tbody></table>

### Sample response

{% tabs %}
{% tab title="Person Details" %}
{% code overflow="wrap" %}

```json
{
  "success": true,
  "email": "bill.gates@microsoft.com",
  "emailType": "professional",
  "credits_left": 90000,
  "rate_limit_left": 19000,
  "person": {
    "publicIdentifier": "williamhgates",
    "linkedInIdentifier": "ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc",
    "linkedInUrl": "https://www.linkedin.com/in/ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc",
    "firstName": "Bill",
    "lastName": "Gates",
    "headline": "Co-chair, Bill & Melinda Gates Foundation",
    "location": "Seattle, Washington, United States of America",
    "summary": "Co-chair of the Bill & Melinda Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft. Voracious reader. Avid traveler. Active blogger.",
    "photoUrl": "https://media.licdn.com/dms/image/D5603AQHv6LsdiUg1kw/profile-displayphoto-shrink_800_800/0/1695167344576?e=1723680000&v=beta&t=NcEpysYwCpQ_NBg0QTz_a265pEOhfGICFJUX92-KNpw",
    "creationDate": {
      "month": 5,
      "year": 2013
    },
    "followerCount": 35415,
    "positions": {
      "positionsCount": 3,
      "positionHistory": [
        {
          "title": "Co-chair",
          "companyName": "Bill & Melinda Gates Foundation",
          "description": "",
          "startEndDate": {
            "start": {
              "month": 1,
              "year": 2000
            },
            "end": null
          },
          "companyLogo": "https://media.licdn.com/dms/image/C4E0BAQE7Na_mKQhIJg/company-logo_400_400/0/1633731811337/bill__melinda_gates_foundation_logo?e=1726099200&v=beta&t=LIgstVg1oR5LmBl9u1kolb_xeOqs5kX1ZTcUpaEtsE4",
          "linkedInUrl": "https://www.linkedin.com/company/8736/",
          "linkedInId": "8736"
        },
        {
          "title": "Founder",
          "companyName": "Breakthrough Energy",
          "description": "",
          "startEndDate": {
            "start": {
              "month": 1,
              "year": 2015
            },
            "end": null
          },
          "companyLogo": "https://media.licdn.com/dms/image/C4D0BAQGwD9vNu044FA/company-logo_400_400/0/1630531940051/breakthrough_energy_ventures_logo?e=1726099200&v=beta&t=DIU32ElAkeY4aqcq_9uJTAhiZI-v0GoOX77409cLZRE",
          "linkedInUrl": "https://www.linkedin.com/company/19141006/",
          "linkedInId": "19141006"
        },
        {
          "title": "Co-founder",
          "companyName": "Microsoft",
          "description": "",
          "startEndDate": {
            "start": {
              "month": 1,
              "year": 1975
            },
            "end": null
          },
          "companyLogo": "https://media.licdn.com/dms/image/C560BAQE88xCsONDULQ/company-logo_400_400/0/1630652622688/microsoft_logo?e=1726099200&v=beta&t=zueWlWXcJ4WjwGSzlUWgPOnjoAm8C2KfSIcWWHxWrGg",
          "linkedInUrl": "https://www.linkedin.com/company/1035/",
          "linkedInId": "1035"
        }
      ]
    },
    "schools": {
      "educationsCount": 2,
      "educationHistory": [
        {
          "degreeName": "",
          "fieldOfStudy": "",
          "description": null,
          "linkedInUrl": "https://www.linkedin.com/company/1646/",
          "schoolLogo": "https://media.licdn.com/dms/image/C4E0BAQF5t62bcL0e9g/company-logo_400_400/0/1631318058235?e=1726099200&v=beta&t=tSGQKfAlig70DD9n2_xkYR54yBTf7K3aKsau8PMQSVM",
          "schoolName": "Harvard University",
          "startEndDate": {
            "start": {
              "month": 1,
              "year": 1973
            },
            "end": {
              "month": 1,
              "year": 1975
            }
          }
        },
        {
          "degreeName": "",
          "fieldOfStudy": "",
          "description": null,
          "linkedInUrl": "https://www.linkedin.com/company/30288/",
          "schoolLogo": "https://media.licdn.com/dms/image/D560BAQGFmOQmzpxg9A/company-logo_400_400/0/1683732883164/lakeside_school_logo?e=1726099200&v=beta&t=cylwvrQe7Q4N8oU1hotzPfrae8yxPuzdtG1ocBSuEmA",
          "schoolName": "Lakeside School",
          "startEndDate": {
            "start": {
              "month": null,
              "year": null
            },
            "end": {
              "month": null,
              "year": null
            }
          }
        }
      ]
    },
    "skills": [],
    "languages": []
  },
  "company": {
    "linkedInId": "1035",
    "name": "Microsoft",
    "universalName": "microsoft",
    "linkedInUrl": "https://www.linkedin.com/company/1035",
    "employeeCount": 228581,
    "employeeCountRange": {
      "start": 10001,
      "end": 1
    },
    "websiteUrl": "https://news.microsoft.com/",
    "tagline": null,
    "description": "Every company has a mission. What's ours? To empower every person and every organization to achieve more. We believe technology can and should be a force for good and that meaningful innovation contributes to a brighter world in the future and today. Our culture doesn’t just encourage curiosity; it embraces it. Each day we make progress together by showing up as our authentic selves. We show up with a learn-it-all mentality. We show up cheering on others, knowing their success doesn't diminish our own. We show up every day open to learning our own biases, changing our behavior, and inviting in differences. Because impact matters.\n\nMicrosoft operates in 190 countries and is made up of more than 220,000 passionate employees worldwide.\n",
    "industry": "Software Development",
    "phone": null,
    "specialities": [
      "Business Software",
      "Developer Tools",
      "Home & Educational Software",
      "Tablets",
      "Search",
      "Advertising",
      "Servers",
      "Windows Operating System",
      "Windows Applications & Platforms",
      "Smartphones",
      "Cloud Computing",
      "Quantum Computing",
      "Future of Work",
      "Productivity",
      "AI",
      "Artificial Intelligence",
      "Machine Learning",
      "Laptops",
      "Mixed Reality",
      "Virtual Reality",
      "Gaming",
      "Developers",
      "IT Professional"
    ],
    "followerCount": 22736947,
    "headquarter": {
      "city": "Redmond",
      "country": "US",
      "postalCode": "98052",
      "geographicArea": "Washington",
      "street1": "1 Microsoft Way",
      "street2": null
    },
    "logo": "https://media.licdn.com/dms/image/C560BAQE88xCsONDULQ/company-logo_400_400/0/1630652622688/microsoft_logo?e=1725494400&v=beta&t=joSXHhDAEare7f9gk8MwXr2sOr84zX7HDx2h5znXEYI"
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="Person Not Found" %}

```json
{
  "success": true,
  "email": "efzefhzefzef@live.fr",
  "emailType": "personal",
  "credits_left": 90000,
  "rate_limit_left": 19000,
  "person": false,
  "company": false
}
```

{% endtab %}
{% endtabs %}


# Enrich company by domain

Provider Reversecontact.com

### Overview

Return company details based on website domain.

### Input parameters

<table><thead><tr><th width="236">Name</th><th width="135">Is Required</th><th width="144">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>Company Domain</strong></td><td><strong>required</strong></td><td>text column</td><td>Domain of the company, e.g., company.com</td></tr></tbody></table>

### Output fields

Fields that are not extracted by default can be found in a column with an original response (select option "Save original response" in advanced settings). Use the Unnest node or JSON preview window to extract such fields to the new columns.

<table><thead><tr><th width="239">Name</th><th width="132.33333333333331">Type</th><th width="124">Extracted</th><th>Description</th></tr></thead><tbody><tr><td>Company Name</td><td>text</td><td>yes</td><td>Name of the company, e.g., Retable Inc</td></tr><tr><td>Website</td><td>text</td><td>yes</td><td>Official website URL of the company, e.g., www.company.com</td></tr><tr><td>LinkedIn URL</td><td>text</td><td>yes</td><td>Company's LinkedIn profile URL, e.g., www.linkedin.com/company/yourcompany</td></tr><tr><td>Industry</td><td>text</td><td>yes</td><td>Sector in which the company operates, e.g., Technology, Healthcare</td></tr><tr><td>Logo Url</td><td>text</td><td>yes</td><td>URL of the company's logo image, e.g., www.company.com/logo.png</td></tr><tr><td>Number of Employees</td><td>number</td><td>yes</td><td>Total number of employees in the company, e.g., 50</td></tr><tr><td>Phone</td><td>text</td><td>yes</td><td>Company's contact phone number, e.g., +1-800-123-4567</td></tr><tr><td>Headquarter</td><td>object</td><td>yes</td><td>Location of the company's main office, e.g., New York, NY</td></tr><tr><td>Country</td><td>text</td><td>yes</td><td>Country where the company is based, e.g., United States</td></tr><tr><td>Postal Code</td><td>text</td><td>yes</td><td>Company's postal or ZIP code, e.g., 10001</td></tr><tr><td>State</td><td>text</td><td>yes</td><td>State or province where the company is located, e.g., California</td></tr><tr><td>City</td><td>text</td><td>yes</td><td>City where the company is located, e.g., San Francisco</td></tr><tr><td>Street Address</td><td>text</td><td>yes</td><td>Street address of the company, e.g., 123 Main St</td></tr><tr><td>Short Description</td><td>text</td><td>yes</td><td>Brief overview of the company, e.g., Leading provider of data analytics solutions</td></tr><tr><td>Specialities</td><td>array</td><td>yes</td><td>Key areas of expertise or services offered by the company, e.g., Data Visualization, Predictive Analytics</td></tr></tbody></table>

### Sample response

{% tabs %}
{% tab title="Company Found" %}
{% code overflow="wrap" %}

```json
{
  "success": true,
  "credits_left": 90000,
  "rate_limit_left": 19000,
  "company": {
    "linkedInId": "1035",
    "name": "Microsoft",
    "universalName": "microsoft",
    "linkedInUrl": "https://www.linkedin.com/company/1035",
    "employeeCount": 228581,
    "employeeCountRange": {
      "start": 10001,
      "end": 1
    },
    "websiteUrl": "https://news.microsoft.com/",
    "tagline": null,
    "description": "Every company has a mission. What's ours? To empower every person and every organization to achieve more. We believe technology can and should be a force for good and that meaningful innovation contributes to a brighter world in the future and today. Our culture doesn’t just encourage curiosity; it embraces it. Each day we make progress together by showing up as our authentic selves. We show up with a learn-it-all mentality. We show up cheering on others, knowing their success doesn't diminish our own. We show up every day open to learning our own biases, changing our behavior, and inviting in differences. Because impact matters.\n\nMicrosoft operates in 190 countries and is made up of more than 220,000 passionate employees worldwide.\n",
    "industry": "Software Development",
    "phone": null,
    "specialities": [
      "Business Software",
      "Developer Tools",
      "Home & Educational Software",
      "Tablets",
      "Search",
      "Advertising",
      "Servers",
      "Windows Operating System",
      "Windows Applications & Platforms",
      "Smartphones",
      "Cloud Computing",
      "Quantum Computing",
      "Future of Work",
      "Productivity",
      "AI",
      "Artificial Intelligence",
      "Machine Learning",
      "Laptops",
      "Mixed Reality",
      "Virtual Reality",
      "Gaming",
      "Developers",
      "IT Professional"
    ],
    "followerCount": 22736947,
    "headquarter": {
      "city": "Redmond",
      "country": "US",
      "postalCode": "98052",
      "geographicArea": "Washington",
      "street1": "1 Microsoft Way",
      "street2": null
    },
    "logo": "https://media.licdn.com/dms/image/C560BAQE88xCsONDULQ/company-logo_400_400/0/1630652622688/microsoft_logo?e=1725494400&v=beta&t=joSXHhDAEare7f9gk8MwXr2sOr84zX7HDx2h5znXEYI"
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="Company Not Found" %}

```json
{
  "success": true,
  "credits_left": 90000,
  "rate_limit_left": 19000,
  "company": false
}
```

{% endtab %}
{% endtabs %}


# Enrich company by LinkedIn

Provider Reversecontact.com

### Overview

Return company details based on LinkedIn URL.

### Input parameters

<table><thead><tr><th width="236">Name</th><th width="135">Is Required</th><th width="144">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>LinkedIn URL</strong></td><td><strong>required</strong></td><td>text column</td><td>Company's LinkedIn profile URL, e.g., www.linkedin.com/company/yourcompany</td></tr></tbody></table>

### Output fields

Fields that are not extracted by default can be found in a column with an original response (select option "Save original response" in advanced settings). Use the Unnest node or JSON preview window to extract such fields to the new columns.

<table><thead><tr><th width="239">Name</th><th width="132.33333333333331">Type</th><th width="124">Extracted</th><th>Description</th></tr></thead><tbody><tr><td>Company Name</td><td>text</td><td>yes</td><td>Name of the company, e.g., Retable Inc</td></tr><tr><td>Website</td><td>text</td><td>yes</td><td>Official website URL of the company, e.g., www.company.com</td></tr><tr><td>LinkedIn URL</td><td>text</td><td>yes</td><td>Company's LinkedIn profile URL, e.g., www.linkedin.com/company/yourcompany</td></tr><tr><td>Industry</td><td>text</td><td>yes</td><td>Sector in which the company operates, e.g., Technology, Healthcare</td></tr><tr><td>Logo Url</td><td>text</td><td>yes</td><td>URL of the company's logo image, e.g., www.company.com/logo.png</td></tr><tr><td>Number of Employees</td><td>number</td><td>yes</td><td>Total number of employees in the company, e.g., 50</td></tr><tr><td>Phone</td><td>text</td><td>yes</td><td>Company's contact phone number, e.g., +1-800-123-4567</td></tr><tr><td>Headquarter</td><td>object</td><td>yes</td><td>Location of the company's main office, e.g., New York, NY</td></tr><tr><td>Country</td><td>text</td><td>yes</td><td>Country where the company is based, e.g., United States</td></tr><tr><td>Postal Code</td><td>text</td><td>yes</td><td>Company's postal or ZIP code, e.g., 10001</td></tr><tr><td>State</td><td>text</td><td>yes</td><td>State or province where the company is located, e.g., California</td></tr><tr><td>City</td><td>text</td><td>yes</td><td>City where the company is located, e.g., San Francisco</td></tr><tr><td>Street Address</td><td>text</td><td>yes</td><td>Street address of the company, e.g., 123 Main St</td></tr><tr><td>Short Description</td><td>text</td><td>yes</td><td>Brief overview of the company, e.g., Leading provider of data analytics solutions</td></tr><tr><td>Specialities</td><td>array</td><td>yes</td><td>Key areas of expertise or services offered by the company, e.g., Data Visualization, Predictive Analytics</td></tr></tbody></table>

### Sample response

{% tabs %}
{% tab title="Company Found" %}
{% code overflow="wrap" %}

```json
{
  "success": true,
  "credits_left": 1796,
  "rate_limit_left": 19999,
  "company": {
    "linkedInId": "1035",
    "name": "Microsoft",
    "universalName": "microsoft",
    "linkedInUrl": "https://www.linkedin.com/company/1035",
    "employeeCount": 228581,
    "employeeCountRange": {
      "start": 10001,
      "end": 1
    },
    "websiteUrl": "https://news.microsoft.com/",
    "tagline": null,
    "description": "Every company has a mission. What's ours? To empower every person and every organization to achieve more. We believe technology can and should be a force for good and that meaningful innovation contributes to a brighter world in the future and today. Our culture doesn’t just encourage curiosity; it embraces it. Each day we make progress together by showing up as our authentic selves. We show up with a learn-it-all mentality. We show up cheering on others, knowing their success doesn't diminish our own. We show up every day open to learning our own biases, changing our behavior, and inviting in differences. Because impact matters.\n\nMicrosoft operates in 190 countries and is made up of more than 220,000 passionate employees worldwide.\n",
    "industry": "Software Development",
    "phone": null,
    "specialities": [
      "Business Software",
      "Developer Tools",
      "Home & Educational Software",
      "Tablets",
      "Search",
      "Advertising",
      "Servers",
      "Windows Operating System",
      "Windows Applications & Platforms",
      "Smartphones",
      "Cloud Computing",
      "Quantum Computing",
      "Future of Work",
      "Productivity",
      "AI",
      "Artificial Intelligence",
      "Machine Learning",
      "Laptops",
      "Mixed Reality",
      "Virtual Reality",
      "Gaming",
      "Developers",
      "IT Professional"
    ],
    "followerCount": 22736947,
    "headquarter": {
      "city": "Redmond",
      "country": "US",
      "postalCode": "98052",
      "geographicArea": "Washington",
      "street1": "1 Microsoft Way",
      "street2": null
    },
    "logo": "https://media.licdn.com/dms/image/C560BAQE88xCsONDULQ/company-logo_400_400/0/1630652622688/microsoft_logo?e=1725494400&v=beta&t=joSXHhDAEare7f9gk8MwXr2sOr84zX7HDx2h5znXEYI"
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="Company Not Found" %}

```json
{
  "success": false,
  "title": "An error has occurred 🚒",
  "msg": "This LinkedIn Profile is not available or does not exist."
}
```

{% endtab %}
{% endtabs %}


# UpLead

https\://www\.uplead.com/

### Supported queries

**Enrich companies**

* Enrich company by domain
* Get employees by domain
* Get domain by company name

**Enrich people**

* Enrich person by email
* Enrich person and company by email
* Get email by domain and name

### Unsupported queries

Verify email (API endpoint not found)


# Waterfall Enrichment

How to chain multiple enrichment providers, step by step

### What is waterfall enrichment?

Waterfall enrichment lets you try multiple providers in sequence — only moving to the next if the previous one didn’t return data. This avoids wasting API credits, prevents conflicting results, and increases coverage.

It works like this:

* Run the first provider.
* If the output column is still empty, run the second.
* If still empty, run the third — and so on.

***

### How to set it up

#### Step 1: Add the first enrichment node

* Start with your primary provider. Add an enrichment node to the canvas.
* Select the provider, map the required inputs (for example, an `email` field), and configure outputs.
* Leave the **“Run only if column is empty”** setting blank. Since this is the first node in the chain, it should run unconditionally.

#### Step 2: Add fallback nodes

* Now add a second enrichment node to the right of the first. This is your fallback provider — it should run only if the previous one didn’t return a value.
* In the **“Run only if column is empty”** dropdown, select the output column from the first node (e.g. `Email Status`). This makes the second provider conditional — it will only run when the chosen column is empty.

Repeat this step to add more fallback nodes. Each one should:

* Be placed to the right of the previous one.
* Use the same “Run only if column is empty” setting, pointing to the same target column.

***

### Important options

#### Map new columns to existing ones.

When you apply **“Run only if column is empty”**, the **“Map new columns to existing ones”** option is automatically turned ON.

This ensures the node writes into an existing column (same name and type), instead of creating a new one. It merges outputs from different nodes into the same column.

You can switch this option manually:

* **Keep it ON** to use a shared field across providers.
* **Turn it OFF** if you need to store each provider’s result separately.

#### Show response status

Adds a column that shows the status for each row:

* `Processed`
* `Not found`
* `Empty input`
* `Error: <reason>`

Useful to track which node returned a result.

#### Show original response

Saves the complete raw API response in a separate column. This is helpful when:

* You need an audit trail.
* You want to extract extra fields that have not been mapped yet.

***

### Example: Email verification with three providers

You want to verify email addresses using **MillionVerifier**, **NeverBounce**, and **ZeroBounce** - in that order.

1. **MillionVerifier** (first node):
   * Input: `email`
   * Output: `Email Status`
   * **Run only if column is empty**: *(leave blank)*
   * **Map new columns to existing ones**: *(not applicable)*
2. **NeverBounce** (second node, after MillionVerifier):
   * Input: `email`
   * Output: `Email Status`
   * **Run only if column is empty**: `Email Status`
   * **Map new columns to existing ones**: auto-enabled (writing to the same `Email Status`)
3. **ZeroBounce** (third node):
   * Input: `email`
   * Output: `Email Status`
   * **Run only if column is empty**: `Email Status`
   * **Map new columns to existing ones**: auto-enabled

Now the waterfall logic is in place:

* MillionVerifier runs first and fills `Email Status` if possible.
* If it's empty, NeverBounce runs and writes into the same column.
* If it's still empty, ZeroBounce tries last.

This way, you get one clean output column and only pay for what's needed.


# How to add your API key in Tabula

Tabula Enrichment Node and Data Providers Documentation

## Overview

Tabula's new functionality allows data analysts to utilize the Enrichment Node feature, which supports multiple data providers to enhance their data sets. To use this feature, you need to register with the data provider of your choice and obtain an API key, which you will then add to Tabula via the Connectors screen.

Follow the steps below to configure and use the Enrichment Node with a data provider.

## Step-by-Step Guide

### Step 1: Adding an Enrichment Node

1. In the main window, click on the "Enrich" button to add an Enrichment Node to your workflow
2. Select "ReverseContact" (example) as the data vendor from the Integration dropdown menu
3. Click on the "Go to settings" button to proceed to the next screen

<figure><img src="/files/oNfXfSkUb35sRhPUigLF" alt=""><figcaption></figcaption></figure>

### Step 2: Viewing API Keys

4. You will be directed to the API Key management screen
5. Here, you will see a list of stored API keys for the selected data vendor
6. Click on "Add new key" to add a new API key

<figure><img src="/files/McDGyU24IsEhOgFnMIrw" alt=""><figcaption></figcaption></figure>

### Step 3: Adding a New API Key

7. A modal window will appear prompting you to enter details for the new API key
   * **Key Name**: Enter a name for your API key
   * **API Key**: Enter the API key obtained from the data provider
   * **Set as default**: Toggle this option if you want this key to be used by default
8. Click on the "Add" button to save the key

<figure><img src="/files/yJpjszLMsaukFHVAa3VX" alt=""><figcaption></figcaption></figure>

### Step 4: Saving the API Key

9. After adding the key, you will be redirected back to the API key management screen, where the new key will be listed
10. Click the "Save" button to save the key and return to the Connectors screen

<figure><img src="/files/PhyJCO9gGbikhuT8HxfX" alt=""><figcaption></figcaption></figure>

### Step 5: Returning to Connectors Screen

11. You will be redirected back to the Connectors screen
12. Ensure that the status of the API key for ReverseContact is active

<figure><img src="/files/oEqJHAgEpMnnFMdMtRIf" alt=""><figcaption></figcaption></figure>

### Step 6: Finalizing API Key Configuration

13. You are now ready to use the Enrichment Node with the new API key.
14. You can start integrating the enriched data into your workflows.

<figure><img src="/files/spoRQoUbTkjh73J4aUN0" alt=""><figcaption></figcaption></figure>

## Additional Notes

* Make sure to register with the desired data provider and keep your API key secure
* The API key must be properly configured for the Enrichment Node to function correctly
* For further assistance or inquiries, refer to the support documentation or contact customer support


# List of Supported Queries

{% embed url="<https://airtable.com/embed/app1AXYhIoL2NKyZP/shraOzIxSr4uPKh8J?viewControls=on>" %}


# Collections


# Search Companies

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th align="right"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Find lookalike companies</strong></td><td>Find companies similar to input domains, filter by industry, keywords, location, etc.</td><td align="right">Discolike</td><td><a href="/files/CwAvBnBjYCexq6FkpyiB">/files/CwAvBnBjYCexq6FkpyiB</a></td></tr><tr><td><strong>Find lookalike companies</strong></td><td>Find companies similar to input domains, filter by NAICS, revenue, type, etc.</td><td align="right">CompanyEnrich</td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Find lookalike companies</strong></td><td>Find companies similar to input domains, with no other filters.</td><td align="right">TheCompaniesAPI</td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr><tr><td><strong>Find companies</strong></td><td>Find companies by filters such as location, size, keywords.</td><td align="right">Apollo</td><td><a href="/files/3Qi5CiUxZyYEayYUUMPV">/files/3Qi5CiUxZyYEayYUUMPV</a></td></tr><tr><td><strong>Find companies</strong></td><td>Find companies by filters such as location, size, and industry.</td><td align="right">ContactOut</td><td><a href="/files/Npkc74wximQrsS62hOyJ">/files/Npkc74wximQrsS62hOyJ</a></td></tr><tr><td><strong>Find companies</strong></td><td>Find companies by filters such as size, funding data, type and keywords.</td><td align="right">Nubela</td><td><a href="/files/VvuHeOAAZJFBY4tLTrN6">/files/VvuHeOAAZJFBY4tLTrN6</a></td></tr><tr><td><strong>Find companies</strong></td><td>Find companies by filters such as NAICS, category, and revenue.</td><td align="right">CompanyEnrich</td><td><a href="/files/nzGUxQkqxz2ffrblURUT">/files/nzGUxQkqxz2ffrblURUT</a></td></tr></tbody></table>


# Search People

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th align="right"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Find people</strong></td><td>Find people by filters such as title, keywords, company list, or company location.</td><td align="right">Apollo</td><td><a href="/files/3Qi5CiUxZyYEayYUUMPV">/files/3Qi5CiUxZyYEayYUUMPV</a></td></tr><tr><td><strong>Find people</strong></td><td>Find people by title, education or experience, and company industry, size.</td><td align="right">ContactOut</td><td><a href="/files/Npkc74wximQrsS62hOyJ">/files/Npkc74wximQrsS62hOyJ</a></td></tr><tr><td><strong>Find people</strong></td><td>Find people by title, industry, interest, or skills, and by company attributes.</td><td align="right">Nubela</td><td><a href="/files/VvuHeOAAZJFBY4tLTrN6">/files/VvuHeOAAZJFBY4tLTrN6</a></td></tr></tbody></table>


# Get Job Listings

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th align="right"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Find jobs</strong></td><td>Find job listings by filters such as type, keywords, and experience.</td><td align="right">Nubela</td><td><a href="/files/VvuHeOAAZJFBY4tLTrN6">/files/VvuHeOAAZJFBY4tLTrN6</a></td></tr><tr><td><strong>Get job listings by companyId</strong></td><td>Get open job listing by Apollo company ID</td><td align="right">Apollo</td><td><a href="/files/3Qi5CiUxZyYEayYUUMPV">/files/3Qi5CiUxZyYEayYUUMPV</a></td></tr><tr><td><strong>Get job listings by companyId</strong></td><td>Get open job listing by Nubela company ID</td><td align="right">Nubela</td><td><a href="/files/VvuHeOAAZJFBY4tLTrN6">/files/VvuHeOAAZJFBY4tLTrN6</a></td></tr><tr><td><strong>Get job listing details</strong></td><td>Get open job listing details by job LinkedIn URL.</td><td align="right">Nubela</td><td><a href="/files/VvuHeOAAZJFBY4tLTrN6">/files/VvuHeOAAZJFBY4tLTrN6</a></td></tr></tbody></table>


# Data Sources

Tabula automatically extracts and loads data from the selected sources to your data storage (database or data warehouse). You can access the data with our no-code solution for further cleanup, analysis, or reporting. After the trial period, you must buy credits to continue updating your data.

We use Fivetran.com integration for authorization and syncing 450+ connectors. Please find the full list of connectors and their data schemas [here](https://fivetran.com/docs/connectors).


# Configuring Fivetran Integration

Configuring Fivetran Integration in Tabula

### Overview

Tabula now supports seamless integration with Fivetran, enabling users to easily connect to various external data sources such as Google Analytics, Facebook Ads, or Stripe. This guide will walk you through the steps to connect and configure a data source using Fivetran in Tabula.

## Step-by-Step Guide

### Step 1: Add a New Data Source

1. Start from the Connectors screen in Tabula.
2. Click on the "Add source" button.

<figure><img src="/files/gYoEEZTaGzalikaGDexR" alt=""><figcaption><p>Connectors Screen</p></figcaption></figure>

### Step 2: Browse Available Sources

3. On the Browse Available Sources screen, search for the data source you want to connect to. In this example, we'll choose Facebook Ads.
4. Click on the "Set up" button next to the selected data source.

<figure><img src="/files/N8TNLQmGs7qaqPVGYtP7" alt=""><figcaption><p>Browse Available Sources</p></figcaption></figure>

<figure><img src="/files/ItLx4p4QC1D9ASJKrJzS" alt=""><figcaption><p>Select Facebook Ads</p></figcaption></figure>

### Step 3: Confirm Destination

5. Select the destination database where the data from the source will be stored. If you don't have a storage solution yet, you can register for a free Snowflake trial account using our [video guide](/integrations/data-storages/snowflake). For this example, we will use an already connected PostgreSQL database.
6. Click on the "Ok! Go next" button to proceed.

<figure><img src="/files/pH1YjMKKVwFXlTAKXgYZ" alt=""><figcaption><p>Confirm Destination</p></figcaption></figure>

### Step 4: Authorize Fivetran

7. A browser window will open, prompting you to authorize Fivetran to access the selected data source. Follow the on-screen instructions to complete the authorization. In this example, you'll authorize Fivetran to access Facebook Ads.
8. After authorization, return to the Tabula application.

<figure><img src="/files/HbQ0Z42kAthkBzfGIHlq" alt=""><figcaption><p>Authorize Fivetran</p></figcaption></figure>

### Step 5: Configure Sync Settings

9. Back in Tabula, you will see a screen to configure the sync settings.
   * **Source Name**: Enter a name for your source.
   * **Sync Frequency**: Set the frequency at which Tabula should synchronize data from the source.
   * **Select Tables**: Choose which tables to sync. (Note: loading the data schema may take some time)
10. After configuring the settings, click on the "Start sync" button.

<figure><img src="/files/NxYlwjAwKEMY2pXH07sF" alt=""><figcaption><p>Configure Sync Settings</p></figcaption></figure>

{% hint style="warning" %}
**Important Notice**

Please be aware that the data transfer process from your selected source can potentially take a significant amount of time depending on the volume of data. In some cases, this process may take up to several hours. We appreciate your patience during this time.
{% endhint %}

### Step 6: Using the Active Connector

11. Once the connector status shows as active, it can be used in the Source node while building your workflow in Tabula.

<figure><img src="/files/vZIBTFhymqcbWtEa0pkN" alt=""><figcaption><p>Active Connector</p></figcaption></figure>

## Additional Notes

* Ensure you have appropriate permissions and access to the data source you want to connect.
* The sync frequency and selected schemas play a crucial role in how up-to-date your data is.
* For further assistance, refer to the help documentation or contact customer support.


# Data Storages

### Overview

Select a database or data warehouse to store and compute your data. Tabula executes all data transformations directly within the storage, ensuring your data remains secure and does not leave the database.

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Snowflake</strong></td><td>snowflake.com</td><td></td><td><a href="/files/Sv25RBJAILwiN4BI9m3e">/files/Sv25RBJAILwiN4BI9m3e</a></td><td><a href="/pages/KnPbDji6jzuylTKR5ZAe">/pages/KnPbDji6jzuylTKR5ZAe</a></td></tr><tr><td><strong>PostgreSQL</strong></td><td>postgresql.com</td><td></td><td><a href="/files/Niku7T0dZGuZiRw694OW">/files/Niku7T0dZGuZiRw694OW</a></td><td></td></tr><tr><td><strong>BigQuery</strong></td><td>coming soon...</td><td></td><td><a href="/files/bCE1U1At4MoNfCeJUJs6">/files/bCE1U1At4MoNfCeJUJs6</a></td><td></td></tr></tbody></table>


# PostgreSQL

## Configure PostgreSQL connection

#### Accessing the PostgreSQL Connector

* Navigate to the **Connectors Page** from the main menu.
* Select **Add Storage** and choose **PostgreSQL** from the list of available connectors.

#### Connection Settings

* **Connection name.** Enter a unique name for this connection
* **Host.** Specify the hostname or IP address of your PostgreSQL server.
* **Port.** Enter the port number your PostgreSQL server is listening on. The default port for PostgreSQL is `5432`.
* **Username.** Enter the username that will be used to connect to your PostgreSQL database.
* **Password.** Enter the password associated with the provided username.
* **Database.** Provide the name of the database you wish to connect to within your PostgreSQL server.
* **Schema (optional).** Enter the schema name here if you need to set a specific schema as default. You can leave this field blank or select another schema in the Source node in the Flow Designer.&#x20;

#### Test and Save

* **Test connection.** Click this button to verify that the connection settings are correct. If successful, you will see a confirmation message. If there are issues, you will receive an error message detailing what needs to be corrected.
* **Save and Test.** This button allows you to save your settings and immediately test the connection. If the connection test is successful, the connector will be saved and ready for use.


# Snowflake

#### Tutorial: how to create a 30-day trial Snowflake account and register it in Tabula

{% embed url="<https://www.youtube.com/watch?v=56sl1x6UHqs>" %}

## Configure Snowflake connection

#### Accessing the Snowflake Connector

* Navigate to the **Connectors Page** from the main menu.
* Select **Add Storage** and choose **Snowflake** from the list of available connectors.

#### Connection Settings

* **Connection name.** Enter a unique name for this connection
* **Host.** Specify the hostname or IP address of your Snowflake account. Follow the format `accountname.snowflakecomputing.com`.
* **Port.** **Port**: Enter the port number. The default port for Snowflake is `443`.
* **Username.** Enter the username that will be used to connect to your Snowflake instance.
* **Password.** Enter the password associated with the provided username.
* **Role**. Specify the role that should be assumed when connecting to Snowflake. If left blank, the default role associated with the username will be used.
* **Warehouse.** Enter the name of the warehouse to use when executing queries. This field is required.
* **Database.** Provide the name of the database you wish to connect to within your PostgreSQL server.
* **Schema (optional).** Enter the schema name here to set a specific schema as default. You can leave this field blank or select another schema in the Source node in the Flow Designer.&#x20;

#### Additional Parameters

By default, Tabula will create a new schema in the execution database when executing queries. If you have restricted access to the default database or are working within a shared Snowflake environment, you may need to specify alternative database and schema names. This is especially useful for shared Snowflake databases where multiple users or applications share the same resources.

* **Database.** Specify an alternative database name if you cannot use the default execution database.
* **Schema.** Specify an alternative schema name if you cannot use the default schema.

#### Test and Save

* **Test connection.** Click this button to verify that the connection settings are correct. If successful, you will see a confirmation message. If there are issues, you will receive an error message detailing what needs to be corrected.
* **Save and Test.** This button allows you to save your settings and immediately test the connection. If the connection test is successful, the connector will be saved and ready for use.


# BigQuery

Coming Soon..


# ClickHouse

Coming Soon..


# Designing Flows

## Overview

Visual data flows are a graphical representation of data transformation processes using a series of interconnected nodes. Each node in the pipeline represents a specific data transformation action or operation, such as filtering, sorting, or aggregating data.&#x20;

The purpose of visual data pipelines is to provide a user-friendly, intuitive way to design, configure, and understand complex data processing tasks without the need for extensive programming knowledge.

<figure><img src="/files/CKxBDdHjeGMB5E0BMvCM" alt=""><figcaption></figcaption></figure>

#### Key aspects of visual data pipelines

**Nodes.** Nodes are the fundamental building blocks of a visual data pipeline. Each node serves a specific purpose and encapsulates a particular data transformation operation, such as filtering rows based on specific conditions, sorting columns, or adding new columns using expressions.

**Connections.** In a visual data pipeline, nodes are connected to define the data flow through the transformation process. The output of one node becomes the input of the next node in the sequence, allowing you to chain together multiple transformations to achieve the desired result.

**Visual Interface.** The primary advantage of a visual data pipeline is its user-friendly graphical interface. You can add nodes on a canvas with one click, connect them in the desired order, and configure the settings for each node using a property grid.

**Real-time Preview.** Our data pipelines include a real-time preview feature that allows you to see the impact of their transformations on a sample of the dataset instantly. This helps you understand the results of their configuration choices and adjust settings as necessary.


# Creating Flows

## Overview

You will design and set up your data transformations on the Flow page. A data flow consists of connected nodes that perform different transformations to process data in Flow Designer. When you build a data flow, you add and connect nodes. You also configure those nodes and workflow properties. To make a new flow, go to Flows Page and select **Create a Flow,** or go to Home Page and select **Create a Data Flow.**&#x20;

Flow connections move in a downstream direction horizontally. In this mode, you will work with sample data to apply and preview results in real-time.

<figure><img src="/files/6lBxmhivwlIN8YO46WCm" alt=""><figcaption></figcaption></figure>

## How It works

1. Open the app and select "Create" on the Flows pages
2. **Add Transform Nodes**. In Design Flow mode, various nodes are available, each performing specific tasks, such as sorting, filtering, or merging data. To include a node in the flow, click on it in the toolbar, and it will be added to the canvas.

   \
   As the first step, you need to add a Source node and select your source dataset. You can add any number of sources you need.

<figure><img src="/files/HoBks3oHAUeBZQxCVDJc" alt=""><figcaption></figcaption></figure>

3. **Connect Nodes.** If any canvas nodes are selected, a new node is automatically set as an input connector. If not no nodes were selected, you would see a blue frame around the canvas; you need to click on the node you want to connect to.

<figure><img src="/files/6mmth5KVhjRhbUsOXIhf" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/DgQI1NKVetBQ7hYjIM4p" alt=""><figcaption></figcaption></figure>

4. **Configure Draft Nodes.** Each node features settings that can be adjusted to customize the transformation. Click on a node to open its settings panel and modify the necessary parameters.
5. **Realtime Preview.** While configuring the node’s parameters, you will see a result table preview in real time.
6. **Apply the Transform.** Press the Apply button on the settings panel once you are good with the transformation result.
7. **Add Destination.** Add node Output and set your destination dataset where the result should be saved. You can add more than one destination.
8. **Execute Flow.** Press the "Run" button to execute the flow.


# Flow Designer Guide


# Working with Canvas

## Basics of Canvas

**Add and Edit Nodes**

Select a node on a toolbar and click on it; the node will be added to the flow and automatically connect to the selected node on canvas.

<figure><img src="/files/ergeQDrsKHO9aamPY9HO" alt=""><figcaption></figcaption></figure>

Click the right mouse button to open the context menu, where you can:

* rename the node
* duplicate
* disconnect the node from the previous one in the flow
* delete

#### **Connect Nodes**

If no nodes were previously selected on the canvas and a new node was added, you will see a blue frame around the canvas and sign "Select input node." You need to select a node to connect to and click on it; a new node will be connected to the selected one.

You can disconnect the node via the context menu.

<figure><img src="/files/DRsFLai3x3JsyMIJku6y" alt=""><figcaption></figcaption></figure>

#### **Multi-node selection**

<figure><img src="/files/xvRkiTUK9WxaBDxieSZq" alt=""><figcaption></figcaption></figure>

You can select multiple nodes, see [instructions](/data-flows/designing-flows/flow-designer-guide/working-with-canvas#multi-nodes-selection), and then:

* drag-and-drop selected nodes on the canvas
* delete all selected nodes via the context menu
* group nodes, see [instruction](/data-flows/designing-flows/flow-designer-guide/using-groups)
* add the union transform to merge selected datasets

## Canvas Controls

#### Multi-nodes selection

* **Mouse:** Shift + Left button - hold and drag
* **Trackpad:** Shift + Imitation of the left button - hold and drag

<figure><img src="/files/hdIUeMm2iwhQetJhbsZ3" alt=""><figcaption></figcaption></figure>

#### Zoom in and out

* **Mouse:** Hold down  ⌘ Command (Mac) or Ctrl (Windows) and scroll the mouse wheel up to zoom in or down to zoom out.
* **Trackpad:** Pinch two fingers together to zoom out or stretch two fingers apart to zoom in
* **Hotkeys:**
  * Zoom in: Shift +
  * Zoom out: Shift -
  * Zoom to fit: Shift 1

## **Canvas Menu**

<figure><img src="/files/Mtm0zZBlkPUEVXqYRqRe" alt=""><figcaption></figcaption></figure>

#### **Centralize**

Use the centralize button on the lower right corner of the canvas to reset zoom and canvas position.

#### **Minimap**

Hover over the centralize button and wait till the menu is opened; select a minimap to see the whole flow at a glance.

#### Text Note

Hover over the centralize button and wait until the menu opens; select a note. You can change a note's color text and move it around the canvas.&#x20;

Open the context menu on the right mouse button to remove or duplicate the note.


# Using Groups

## **Adding Groups**

You can select multiple nodes, see [instructions](/data-flows/designing-flows/flow-designer-guide/working-with-canvas#multi-nodes-selection), then press **G**, use the context menu, or select an action **Group Nodes** from the right panel. A new group will be created.

Collapse the group by clicking on the arrow icon in the header. Open back by clicking on arrows over the left upper group corner.&#x20;

<figure><img src="/files/J86VIOl5KmY3yYmy5f7o" alt=""><figcaption></figcaption></figure>

## **Editing and Removing Groups**

**Rename**.&#x20;

In the right panel, select the Transform tab to rename the group and see how many nodes it contains.

**Add new nodes**.&#x20;

Drag the node over the group, the group canvas highlighted in blue, then drop the node, and it will be added to the group.

**Ungroup**.&#x20;

Select "Ungroup" in the context menu. Use it to remove grouping without removing nodes inside.

**Duplicate group**.&#x20;

Select "Duplicate" in the context menu. The group will be duplicated with all the nodes inside.

**Remove group.**&#x20;

Warning! group will be deleted within all the nodes inside it. Select "Delete" from the context menu.

**Change the background color**.&#x20;

Click on the grey circle over the group header and select a new color from the palette.


# Working with Table

Tables are a foundational element in data management and analytics, and Tabula offers a versatile table interface that allows for multiple functionalities, making your data handling smoother and more efficient. This article will discuss the key features of tables in Tabula, including their Preview and Simple modes, how to interact with them, and much more.

## Table Modes

### Preview Mode

When you are editing the node, the table is in Preview Mode. This mode is designed to review data and assess how your changes affect the dataset. Any changes you make to the data will be *highlighted*, providing immediate visual feedback.&#x20;

There are different types of highlighting:

* new column(s) is added - green background
* the existing column will be removed - red background
* the existing column will be replaced with a new one - you will see both the old (grey background and red icon in the header) and new column (green background) alongside
* the existing row will be removed - red background
* the existing column will not change but is involved in the current transform settings - grey background&#x20;

<div><figure><img src="/files/Ht1p7edxwHbtmtGxctMr" alt=""><figcaption></figcaption></figure> <figure><img src="/files/h7sxYIgOueZhQBcS0yRX" alt=""><figcaption></figcaption></figure></div>

Use the toggle "**Show only the affected columns**" in the footer to hide all columns not involved in the current transformation.

<figure><img src="/files/j4tlveDaccRUf1bRFivo" alt=""><figcaption></figcaption></figure>

### Default Mode

After clicking "Apply" on your transformation, the table will shift to Default Mode. This mode allows more direct interaction with your table data.

#### Edit in Place

This feature streamlines the data modification process by allowing you to perform several tasks directly on the table.

* Rename columns. To rename a column, all you have to do is double-click on the column header. This action will transform the header into an editable text field.
* Move columns. You can change the columns' order by dragging the column header and dropping it at the desired location.
* Change column type. You can also modify the data type of a column directly from the table view. Click on the data type icon next to the column name to change and select a new type from the menu.

<figure><img src="/files/joylXT9aIHM3arwxKYiR" alt="" width="563"><figcaption></figcaption></figure>

#### Context Menu

The context menu offers a list of options to manipulate columns. This menu is accessible by clicking the icon with three dots next to the column name when the table is in Simple Mode.

* Rename. Selecting "Rename" opens up an editable text field for the column name.
* Insert Left and Insert Right. These options allow you to insert a new column to the selected column's left or right.
* Sort A-Z and Sort Z\_A. Options to sort the column data in ascending or descending order.
* Move to Beginning, Move to End. Options to move the selected column to either the table's beginning or end, respectively.
* Hide and Delete. The "Hide" option will make the column invisible but won't remove it from the table, while "Delete" will remove the column.

You can **download** the table as a CSV file or copy its contents from the menu in the footer. Only sample data used in Flow Designer will be downloaded.

## General Features

<figure><img src="/files/OnZgTN5o36VJi7qa9ru7" alt=""><figcaption></figcaption></figure>

#### Columns Search Panel

This panel appears on the left side of the table view, allowing you to search for columns and quickly navigate to them.

#### Full-Screen View

You can open the table in a full-screen view for a more immersive data exploration experience. Drag and drop the upper border of the table header till the table sticks to the toolbar.

#### Long Text Cells

<figure><img src="/files/15e81dqvK1kwbzUg43vo" alt=""><figcaption></figcaption></figure>

Cells containing long text can be expanded in a popup window where you can have a clear view of your data and navigate between rows.

#### Convert the row to the header.

Select a row by clicking on it's number. You can convert the selected row into a header row.

<figure><img src="/files/7eu1QOAx6mKFzRHpuzfk" alt=""><figcaption></figcaption></figure>

#### Filter Bar

This bar contains options like filter, group by, sort, and bars. It's intended for quick data exploration and doesn't create new transformations in the flow.

* Filter. This option lets you narrow down the data in your table based on specific conditions. You can select a column and specify the criteria for the data you want to view.
* Group by. This function aggregates your data based on one or more columns. It essentially combines rows that have the same values in the specified columns.
* Sort. Sorting allows you to arrange the rows in your table based on the values in one or more columns. You can sort data in ascending or descending order.
* Data Bars. The "Bars" feature visually represents the values in a column with horizontal bars, similar to a mini bar chart within each cell.
* Show formatting marks. It reveals hidden characters like spaces, tabs, and line breaks within the table's cells when activated.
* Hide columns. The "Hide Columns" option makes specific columns invisible in the table view. This is different from deleting a column; hidden columns can be easily brought back into view.

#### Column Header Statistics

<figure><img src="/files/XfF3ShtKdQSjRrqkDjYS" alt=""><figcaption></figcaption></figure>

You can find quick column statistics right in the column header. The range of values is displayed for numerical columns, whereas the number of unique entries is shown for categorical columns. A colored line beneath this statistical information visually indicates the column's ratio of valid to missing data. Hovering over this line will reveal the numerical details of this ratio.

Clicking on statistics information will expand it to show additional statistics like data distribution or the top unique values in that column.

####


# Managing Flows

Numerous actions are at your disposal for effective flow management. We'll delve into each of them below:

1. Changing your flow's name
2. Removing your flow
3. Creating a duplicate of your flow
4. Export flow
5. Import flow

<figure><img src="/files/OGLcD1NGBejgWi39BHKx" alt=""><figcaption></figcaption></figure>

### Renaming your flow

To change the name of a Flow, you have a couple of options:

1. Click on the current name of your Flow, and you'll be able to edit it directly.
2. Navigate to your Flows page, open the context menu for the specific Flow, choose the "Rename" option, and then type the new name into the "Flow Name" field.

### Deleting your flow

You have two methods to remove a flow: You can either delete it while in the flow designer, accessible through the navigation bar menu, or from your Flows page by utilizing the context menu.

### Duplicating your flow

You have two options for making a copy of an entire flow: You can do it either from inside the flow designer through the navigation bar menu or from your Flows page via the context menu. This action will result in a duplicate of your flow, preserving its current location.


# Sharing Flows

{% hint style="info" %}
Flows are shared with the corresponding report, job, and connection.
{% endhint %}

For sharing a Flow with a fellow team member, visit your Flows page and select the "Share" in the context menu. Alternatively, you can also access the sharing feature from the navigation bar when you're inside a Flow.

<figure><img src="/files/tIAhwtKxt02tuQTTUuzN" alt=""><figcaption></figcaption></figure>

After clicking on "Share," a pop-up window labeled "Share Flow" will display. Within this window, utilize the "Add people" field to include any team member in your Flow. You have the option to grant them either editing or viewing privileges (further details on these are below). Once you've made your selections regarding the individual and their permission level, simply click the "Share" button. Your team member will then receive an email notification and can immediately collaborate with you on the Flow!

You can always use the "Share" button to check the list of individuals with access to a Flow, modify their permissions, or completely revoke their access.

{% hint style="warning" %}
**Please Note:** If you can't find your teammate's name in the "People with access" section, it indicates that they haven't joined your Tabula team yet.
{% endhint %}


# Demo: Building a Simple Flow

Here's a 5-minute video where we build a simple flow from start to finish. This flow demonstrates how to filter data, add calculated fields, and build charts for the report.

{% embed url="<https://youtu.be/cIRWgOnmpBk>" %}

### Transcript:

This is a step-by-step tutorial on how to launch your first project in Tabula. Let's get started!

**Part 1. Connect Data.**

From the home page, you can connect your data. You can either use local CSV or Excel files, or connect directly to your cloud database if you use one.

In this tutorial, we will work with local datasets.

Before we begin, let's go through the Tabula interface.

In our Catalog, you can store files that you work with. Remember that Tabula is a desktop app, which means no data will leave your computer and appear somewhere in the cloud. We prioritize security the most. If you do not have a data warehouse, our Catalog will serve as your database.

In Flows, you can modify your data by merging data, adding new columns, and building dashboards.

Jobs are the list of your completed data analytics tasks. It's like a folder with final reports.

Let's go back to the home page and start working with data. I select a local file upload, pick a CSV, and preview it. Then I click on "Add to Catalog" to keep it handy for future use.

The next window you see is our exploration page. First of all, you can check data validity and control data quality and value distribution for each column.

Using the exploration bar, you can get quick insights into your data. For example, let's filter out only active advertising campaigns.

If you're done with your analysis at this step, you can already download this new dataset onto your computer. To continue working with the data, click on "Add to Flow."

**Part 2. Analyze data in Tabula**

Now we are ready to start our data analysis project in Tabula!

As you can see, we have uploaded a file with Facebook campaigns. At the bottom, you can preview your dataset. On the right side, you see auto-cleanup suggestions, such as deleting empty rows or formatting the text case. You can apply these suggestions or simply ignore them if you don't need them.

Also, on the right side, you will perform all your data transformations.

As you remember, we have filtered our initial dataset, so the operation is recorded here in the data pipeline.

In the top menu, you see different operators that we call Nodes. Use them to manipulate your data. They are similar to what you have in spreadsheets or when working with SQL.

Now, let's build a chart. I select a Chart node and specify the axes. The dashboard is created. In our future releases, it will be possible to download not only a static image but also a dynamic dashboard with connected data.

Let's take a step back and add a new custom metric to our filtered table. To do this, I will add a new column and, as an example, divide the budget by the number of clicks to calculate the CTR (Click-Through Rate).

And I can create a new chart with the calculated metric.

**Part 3: GPT Magic Node**

Now let's explore how the magic AI feature works in Tabula. You can format data or create new values using natural language. For example, I can ask the AI to perform a new calculation. Don't forget to click on the purple button to launch the GPT command.

Later, I will show you more advanced examples of how to use AI in your data analysis.

**Part 4: Downloading Your Results**

When you are finished with your data manipulations, click on the output node. Then, select a destination folder on your computer or push the table directly to the cloud data warehouse. After that, click on "Run" at the top of the screen to apply all the transformations you have created.

Go to the jobs section and find your results: two charts and the table.

**Part 5: GPT Tutorials**

I suggest studying our tutorials available in Flows, particularly paying attention to the GPT tutorial. You can format unstructured data like phone numbers or translate text into another language. Explore our examples, and we look forward to seeing your own AI use cases. Don't hesitate to share them with our community in the Slack channel.

Here is a quick overview of how you can handle data in Tabula. If you need more tutorials like this, please let us know!

See you in Tabula!


# Tools (Nodes)

The concept of a node is central to the data transformation process. Each node represents a specific data transformation action with its associated settings. Nodes are the building blocks of the data

{% hint style="info" %}
Download our [cheatsheet](https://www.tabula.io/cheatsheet)
{% endhint %}

### Source and output transformations

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Source</strong></td><td>Adds outer dataset to the flow</td><td></td><td><a href="/files/9wsooLNGtZNR78T20sxr">/files/9wsooLNGtZNR78T20sxr</a></td><td><a href="/pages/WgnHh23mscj6YZGTuE3K">/pages/WgnHh23mscj6YZGTuE3K</a></td></tr><tr><td><strong>Output</strong></td><td>Saves the result of data flow in an outer dataset</td><td></td><td><a href="/files/O6AIfQ8kNNgL4i4ZtLiY">/files/O6AIfQ8kNNgL4i4ZtLiY</a></td><td><a href="/pages/0Hgl21Io7LQyZ9KOzfrD">/pages/0Hgl21Io7LQyZ9KOzfrD</a></td></tr><tr><td><strong>Empty table</strong></td><td>Adds empty table where users can manually add data</td><td></td><td><a href="/files/ddVSddTlqvXMszcDhINo">/files/ddVSddTlqvXMszcDhINo</a></td><td><a href="/pages/mLOtLMY5Lv6CHpkqFqXs">/pages/mLOtLMY5Lv6CHpkqFqXs</a></td></tr><tr><td><strong>Chart</strong></td><td>Show charts</td><td></td><td><a href="/files/CNekNhY6Rs5M110el1jk">/files/CNekNhY6Rs5M110el1jk</a></td><td><a href="/pages/T3fllRuwGmXMkjUDTbPz">/pages/T3fllRuwGmXMkjUDTbPz</a></td></tr></tbody></table>

### Search & Enrichment

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td></td><td><strong>Data Enrichment</strong></td><td>Enrich people &#x26; companies data with multi-providers</td><td><a href="/pages/x7VAaonKzFulDwsyKEcv">/pages/x7VAaonKzFulDwsyKEcv</a></td></tr><tr><td></td><td><strong>Search</strong></td><td>Coming soon...</td><td></td></tr><tr><td></td><td><strong>AI Research</strong></td><td>Coming soon...</td><td></td></tr></tbody></table>

### Cleanup transformations

<table data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>New Column</strong></td><td>Adds a new column with “text”, number, or function</td><td></td><td><a href="/files/0sz4k0ycH8zBYGWRHgPM">/files/0sz4k0ycH8zBYGWRHgPM</a></td><td><a href="/pages/qgCmJVrLNCWykOEj76R6">/pages/qgCmJVrLNCWykOEj76R6</a></td></tr><tr><td><strong>Change column type</strong></td><td>Changes a data type for selected column(s)</td><td></td><td><a href="/files/N8IdqvwvLZRbIwwMkMiq">/files/N8IdqvwvLZRbIwwMkMiq</a></td><td><a href="/pages/GnqELalwD6jLe9AxYfdi">/pages/GnqELalwD6jLe9AxYfdi</a></td></tr><tr><td><strong>Columns Edit</strong></td><td>Renames, deletes and moves columns</td><td></td><td><a href="/files/q2kPsO4pJ2l5BCmqK0UT">/files/q2kPsO4pJ2l5BCmqK0UT</a></td><td><a href="/pages/Fnw1rECiTiGejppWJ7Co">/pages/Fnw1rECiTiGejppWJ7Co</a></td></tr><tr><td><strong>If...Then</strong></td><td>Adds a new column with a value based on the specified condition</td><td></td><td><a href="/files/Pc21BH1qoDVXxxHuIyFs">/files/Pc21BH1qoDVXxxHuIyFs</a></td><td><a href="/pages/lvf3SXBkAU0yQY65XdmZ">/pages/lvf3SXBkAU0yQY65XdmZ</a></td></tr><tr><td><strong>Sort</strong></td><td>Sorts a table by the specified column(s)</td><td></td><td><a href="/files/awJwCIgBV15GSjTjzuJC">/files/awJwCIgBV15GSjTjzuJC</a></td><td><a href="/pages/HKeNqCrNWfZF4cFXBRSN">/pages/HKeNqCrNWfZF4cFXBRSN</a></td></tr><tr><td><strong>Filter</strong></td><td>Filters rows based on the specified condition</td><td></td><td><a href="/files/Uyiu5MRkcuwOsNxK9gpk">/files/Uyiu5MRkcuwOsNxK9gpk</a></td><td><a href="/pages/N6lqlo52oMZxxgFiMVCc">/pages/N6lqlo52oMZxxgFiMVCc</a></td></tr><tr><td><strong>Remove Duplicates</strong></td><td>Removes duplicated rows</td><td></td><td><a href="/files/YkVRHZ0hHw71gxTsXMfg">/files/YkVRHZ0hHw71gxTsXMfg</a></td><td><a href="/pages/8uaLucUyJz4g4wlWLHY0">/pages/8uaLucUyJz4g4wlWLHY0</a></td></tr><tr><td><strong>Split Text</strong></td><td>Splits a column with the specified delimeter and returns the result in the new columns</td><td></td><td><a href="/files/nDBB7b6KvCsM9YTaWWx5">/files/nDBB7b6KvCsM9YTaWWx5</a></td><td><a href="/pages/ERUhieEis5D0DdZJmK3x">/pages/ERUhieEis5D0DdZJmK3x</a></td></tr><tr><td><strong>Extract Text</strong></td><td>Extracts the specified part of text into a new column(s)</td><td></td><td><a href="/files/qLJJ1EcjdlfG36OCpyAS">/files/qLJJ1EcjdlfG36OCpyAS</a></td><td><a href="/pages/tjowAC0eeRxOckn9OjPS">/pages/tjowAC0eeRxOckn9OjPS</a></td></tr><tr><td><strong>Find and Replace</strong></td><td>Finds and replaces the specified part of text</td><td></td><td><a href="/files/qcZDV0m7ZoUx0ZW8oHxc">/files/qcZDV0m7ZoUx0ZW8oHxc</a></td><td><a href="/pages/JZc9XQCutE2p27AK2R2u">/pages/JZc9XQCutE2p27AK2R2u</a></td></tr><tr><td><strong>Match Text</strong></td><td>Counts matches based on specified pattern in a column(s)</td><td></td><td><a href="/files/kntBahsLALtg3sWtcE9T">/files/kntBahsLALtg3sWtcE9T</a></td><td><a href="/pages/ZtlEWuMoepZryK9sjWeU">/pages/ZtlEWuMoepZryK9sjWeU</a></td></tr><tr><td><strong>Rolling Functions</strong></td><td>Calculates a window function operates on a group (“window”) of related rows</td><td></td><td><a href="/files/Y0blER2D4ta5KUFFQPww">/files/Y0blER2D4ta5KUFFQPww</a></td><td><a href="/pages/3SoAz0W8ZxvXgh3sgdQ4">/pages/3SoAz0W8ZxvXgh3sgdQ4</a></td></tr><tr><td><strong>Nest</strong></td><td>Creates Objects or Arrays in JSON format from the specified columns</td><td></td><td><a href="/files/KQKNCmKCEMOBvjH2u7Zj">/files/KQKNCmKCEMOBvjH2u7Zj</a></td><td><a href="/pages/WdcUcPtnDPdhdXKiCOtM">/pages/WdcUcPtnDPdhdXKiCOtM</a></td></tr><tr><td><strong>Unnest</strong></td><td>Flats Objects of Arrays in JSON format into columns or rows</td><td></td><td><a href="/files/jiirwCy5e8mdqahfG2x0">/files/jiirwCy5e8mdqahfG2x0</a></td><td><a href="/pages/Shugd9s1AJ8E3flHAqSI">/pages/Shugd9s1AJ8E3flHAqSI</a></td></tr><tr><td><strong>API Call</strong></td><td>Calls an external API and return a new column with answers</td><td></td><td><a href="/files/lDXNrVZ4XdkaG3u5gw4x">/files/lDXNrVZ4XdkaG3u5gw4x</a></td><td><a href="/pages/cb928qvomzJW1wWU8ZXg">/pages/cb928qvomzJW1wWU8ZXg</a></td></tr></tbody></table>

### Advanced transformations

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Join</strong></td><td>Joins 2 tables using the specified columns as keys</td><td></td><td><a href="/files/VcUDOFFTK69jAPKFr2ge">/files/VcUDOFFTK69jAPKFr2ge</a></td><td><a href="/pages/I1pCeM12aDqupuck3DSv">/pages/I1pCeM12aDqupuck3DSv</a></td></tr><tr><td><strong>Union</strong></td><td>Stacks rows of 2 or more tables</td><td></td><td><a href="/files/8HjRMwOCuqfV41wv85wE">/files/8HjRMwOCuqfV41wv85wE</a></td><td><a href="/pages/IUQQv3hzMjo5GtZ021iU">/pages/IUQQv3hzMjo5GtZ021iU</a></td></tr><tr><td><strong>Group by</strong></td><td>Groups rows and computes aggregate functions for the resulting group</td><td></td><td><a href="/files/gZyJm5DmAqK2eYlJ5NoM">/files/gZyJm5DmAqK2eYlJ5NoM</a></td><td><a href="/pages/xilWRhWIU0jht5r8iMpa">/pages/xilWRhWIU0jht5r8iMpa</a></td></tr><tr><td><strong>Pivot</strong></td><td>Creates new columns from values in the specified columns and computes aggregate functions as values for the new columns</td><td></td><td><a href="/files/YK0yQhP8y49FmmcctYv7">/files/YK0yQhP8y49FmmcctYv7</a></td><td><a href="/pages/L7KQq6pYmDAezpnQRGYA">/pages/L7KQq6pYmDAezpnQRGYA</a></td></tr><tr><td><strong>Unpivot</strong></td><td>Reshapes the data by merging one or more columns into key and value columns</td><td></td><td><a href="/files/XhFdVSOiSE5iLb1LeDes">/files/XhFdVSOiSE5iLb1LeDes</a></td><td><a href="/pages/oI3KMyIahB4iTUGNW4CM">/pages/oI3KMyIahB4iTUGNW4CM</a></td></tr></tbody></table>

### AI transformations

<table data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>AI Column</strong></td><td>Adds a new column based on GPT answer</td><td></td><td><a href="/files/qKUo0CZiZYAL3S4KD1lo">/files/qKUo0CZiZYAL3S4KD1lo</a></td><td><a href="/pages/WgnHh23mscj6YZGTuE3K">/pages/WgnHh23mscj6YZGTuE3K</a></td></tr><tr><td><strong>AI Table</strong></td><td>Creates a new table based on GPT prompt</td><td></td><td><a href="/files/22sb3t7rZHaC7JHw7IoB">/files/22sb3t7rZHaC7JHw7IoB</a></td><td><a href="/pages/dptDMQqurlCpaJbcTjhU">/pages/dptDMQqurlCpaJbcTjhU</a></td></tr></tbody></table>


# Use AI

Calls AI for each row to extract, enrich or cleanup.

<figure><img src="/files/HT0TMwWgUBvcLFVoVNjh" alt=""><figcaption></figcaption></figure>

## Overview

{% hint style="success" %}
Find prompt examples [here](https://www.tabula.io/categories-templates/ai-co-pilot)
{% endhint %}

The Use AI node helps you run an AI model on your table, row by row. You write a prompt, pick a model, and the node returns the results for every row in new columns.

<figure><img src="/files/p0BKjGD9IK6WOZBmzFLb" alt=""><figcaption></figcaption></figure>

## How It Works

### **1. Write a Prompt**

Describe what you want the AI to do for each row in the prompt box. Use `@ColumnName` to pull in values from your table.

**Example**:

{% code overflow="wrap" %}

```
Visit @CompanyDomain and find their ICP titles. Return them as a comma-separated string.
```

{% endcode %}

### **2. Choose a Model**

Select the AI model you want to use from the drop-down menu. Not all models support web search

### **3. Web Search (Optional)**

Turn on web search if your prompt needs fresh information from the internet. If the chosen model does not support web search, this option will be disabled.

Set the search depth to Low, Medium, or High:

* **`high`** Most comprehensive context, highest cost, slower response.
* **`medium`** (default) Balanced context, cost, and latency.
* **`low`** Least context, lowest cost, fastest response, but potentially lower answer quality.

### **4. Set Output Columns**

Add as many output columns as you need. For each column, set its name, type (String, Integer, Boolean, etc), and optional description to help AI.

You can use “Generate from prompt” to let the AI suggest columns based on your prompt.

If you don’t add any columns, the node will automatically create them based on the AI’s first response.

Switch to JSON schema view if you want to see or edit all columns as JSON.

### **5. Execute the Prompt**

You can run the node on all rows, just one row, or selected rows. An alternative way to get the result for a specific row is to find any output column in the table preview and click the "Generate row" link.

The node works row by row, passing each row’s values to the prompt and writing back the results.

### **6. Edit or Regenerate Rows**

After the run, you can manually edit, add, or delete values in the output columns. You can also re-run the node for any specific rows directly from the table, without affecting other rows.

## Tips for Best Results

**Test your prompt**

Start by running the node on one or a few rows to see if you get the desired output. Adjust your prompt or output columns before running it on the whole table. We recommend always using this option first. When you are ready, press the "All rows" button to return values for all remaining rows.  It will not refill rows already containing the result.

**One row at a time**

The node works with only one row at a time. It cannot calculate aggregations, compare, or group rows.

**Changing output columns**

If you want to change the output columns after a run, reset the results.

**Web search and credits**

Using a web search will use more credits. Only turn it on if your prompt actually needs it.

**Model limits**

Each model has its limit for how much text it can process. Try a shorter prompt or pick a different model if you hit an error.

**Show only affected columns.**

Use the "Show only affected columns" toggle below the table to show only the columns used in the prompt or set as output columns and hide all other columns.


# Sources and Outputs


# Data Source

Adds datasets to the flow

## Overview

The Source Node is the starting point in your data journey within Tabula.io. It allows you to connect to various data sources, including Snowflake and PostgreSQL, as well as local files such as CSV and Excel. You can easily import data sets into your workflow by simply dragging and dropping the Source Node onto your canvas.

{% hint style="info" %}
If you want to connect to cloud apps like Google Ads or Hubspot, please book a demo with our team.
{% endhint %}

<figure><img src="/files/HoBks3oHAUeBZQxCVDJc" alt=""><figcaption></figcaption></figure>

## Settings

You can add local files from your computer or connect to databases and warehouses.

<figure><img src="/files/x8kkFhZ9KwtoIKRH94bz" alt=""><figcaption></figcaption></figure>

## Adding the local file

If you want to add a file (CSV or Excel) from a local computer, select **Local file** and specify the path. When you select a file, you can preview 100 first rows at the bottom of the screen, and in the right panel, you'll have options to customize the upload.

{% hint style="info" %}
You can connect to a file of any size, as Tabula reads only sample (10,000 rows) data for design mode. During a job running, the whole file will be read.&#x20;
{% endhint %}

**First row contains headers**

If your file contains column headers - enable this option to convert the first line of the table to the headers.

**Auto-detect data types**

This option automatically checks each column's content and assigns the appropriate type (String, Integer, etc.) to the columns. If you do not select this option, all columns will be imported as Strings.

<details>

<summary>Advanced settings</summary>

**Values separated by**

This parameter specifies the character used to separate columns in the file. You can choose any of the most popular delimiters, specify your own, or leave the option of automatic detection.

**Charset**

Allows you to specify which charset is used in the file manually.

**Quote symbol**

In CSV and Excel files, a quote symbol (usually double quotes) encloses fields containing special characters like commas or line breaks. This ensures that the data within these quotes is treated as a single unit during parsing, maintaining accurate data structure.

**Quote escape symbol**

A quote escape symbol, usually a backslash (\\), is employed in CSV and Excel files to indicate that a quote enclosed within quotes should be treated as part of the data. This prevents misinterpretation of the quote as a delimiter.

**Maximum columns count**

This determines the highest number of columns allowed in a single row of a spreadsheet. It restricts the data structure by specifying the maximum number of separate data fields present side by side within a single row.

**Maximum cell length**

This option specifies the maximum number of characters a single cell within a spreadsheet can contain. This setting is crucial for ensuring data integrity and preventing issues from long text entries, which could impact file readability, system performance, or compatibility with other software.

</details>

## Connect to table or view in cloud warehouse.

If you want to connect to a dataset from a database, first, you need to create a connector - this can be done by selecting the option **Add connection** from the Source connection list or in the main menu via the Connectors tab.

**Database (only for Snowflake)**

Select the database you want to connect to.

**Schema**

Select a scheme from the list.

**Tables and Views**

Specify which table or view we want to add as a data source.

**Columns & Filter rows**

Select which columns to add to the source or filter the rows in the original table.

{% hint style="info" %}
Don't forget to click the Create button to finalize the table import and Source node creation. We only collect a sample (10,000 rows) to increase performance and reduce costs.
{% endhint %}

## Limitations

At the moment all sources in one data flow should use the same connector to external tables. So you cannot use datasets from Postgres and Snowflake in the same flow, but you can combine local files with any type of external connectors.


# Blank Table

Adds empty table to the flow, you can manually add and edit data.

<figure><img src="/files/zc1CogkLlVDRM9F7Mi8j" alt=""><figcaption></figcaption></figure>

## Overview

The Empty Table Node offers a straightforward way to manually input data directly into your workflow. An empty table interface appears when you add this node onto your canvas, allowing you to type in your data or paste it from your clipboard. This feature is particularly useful for incorporating ad-hoc data, running quick tests, or supplementing existing data sets.

<figure><img src="/files/5ydZ391yOoUtnVMoUbz0" alt=""><figcaption></figcaption></figure>

## Settings

You have two options for creating a table.&#x20;

<figure><img src="/files/R9bfDe3L0XY3IYVy09Ml" alt=""><figcaption></figcaption></figure>

## **Create manually**

**Adding and removing rows and columns**

To add and remove rows:

* Use the Rows fields in the right panel to specify the desired number of rows.
* Use the + icon after the last row in the table to add a new row.
* Press "Enter" after editing any cell in the last existing row to add a new row.
* Select "Insert row above" or below options in the context menu (right-click over a row number)
* Select "Duplicate row" in the context menu
* Select "Delete" in the context menu to remove the row.

To add and remove columns:

* Use the Columns fields in the right panel to specify the desired number of columns.
* Use the "+ Add" and "X" buttons near the column list in the right panel to add or remove a new column, respectively.
* Use the + icon after the last column header in the table to add a new column.
* Select Insert left or right options in the context menu (right-click a column header)
* Select "Delete" in the context menu to remove the column.

**Rename and set type for columns.**

{% hint style="info" %}
Now we support a restricted number of types: String, Integer, Decimal, Boolean, Date, DateTime, Time.
{% endhint %}

* Use the right panel to set names and types
* Double-click on the column name in the table header to rename the in-place
* Click on the data type icon in the column header to change the type

**Editing cells**

Use arrows to navigate between cells.

Fill with values depending on column type:

String -> fill cells with free text; no quotes are needed.

Decimal -> use a period (.) as a decimal part separator

Boolean -> use values *true* or *false*

DateTime -> use format yyyy-MM-dd HH:mm:ss (ex. 2023-04-25 13:54:21)

Date -> use format yyyy-MM-dd (ex. 2023-04-25)

Time -> use format HH:mm:ss (ex. 13:54:21)

{% hint style="info" %}
You can copy an existing table from Excel or CSV (using hotkeys Ctr+C or Cmd+C, depending on your operating system) and paste it directly into the table in the app by putting the focus in the first field and pressing Ctrl+V or Cmd+V.
{% endhint %}

## Ask AI

Set a prompt, and AI will automatically generate the table. The AI creativity slider sets the "freedom" for AI to generate the result, whether it should strictly match the query or allow deviations.

To get the result from AI, click on the airplane icon first, and if you are happy with the answer, hit "Create table". Hit the "Start new chat" button to start a new chat and forget the previous context.&#x20;


# Output

Saves the result of data flow in an outer dataset.

## Overview

The Output Node is the final step in your data transformation process. It allows you to materialize the results of your data flows directly into your database platforms like Snowflake and Postgres or save them as a local file.

<figure><img src="/files/THlYGp0dDHEaEzzd5keb" alt=""><figcaption></figcaption></figure>

## Settings

With the Output node, you can materialize results as a table or a view directly into Snowflake or Postgres or save them as a file. You only could select connectors that were used in Sources, or if you didn't use any external connectors in Source nodes, you are free to select any.

![](/files/xdFfN5aXkWUfyVKSwwXY)

## Saving to a local file

![](/files/3opVvcLHgjxAKjPUZbUV)

**Destination folder**

Click on the folder icon to open a window for selecting a folder on the local computer where you want to save the file.

**File name**

You can choose between two file types to save and specify a name.

* \*.csv - comma-separated values
* \*.xlsx - classic MS Excel format

**Save columns' names as the first row**

If you don't want to save table headers, turn this off. By default, the option is set to save column names as the first row.

**Save options**

![](/files/3SaogpiLe9Fue1RwOsi4)

**Rewrite the existing file**. Delete the file if it exists and create a new one on each run.

**Create a new file.** Create a new file on each run with a timestamp suffix added to the name.

**Append**. Append new data to the existing file on every run. If a file does not exist, create it.

<details>

<summary><strong>Advanced settings</strong></summary>

In the advanced settings, you can select which character to separate values: comma, semicolon, tab, space, or custom symbol.

</details>

## Materializing as a table or view

![](/files/zIxxrwrqmYdv60LuGBVo)

**Database (only for Snowflake)**

Select the database you want to save to. Use the refresh icon if you believe that database or schema lists are not the latest ones.

**Schema**

Select a target schema from the list.

**Name**

Specify a table or view name. You can also toggle REWRITE to select from the existing views or tables.&#x20;

**Type and Save Options**

The following materialization options are supported:

* View (drop and create a new view on each run)
* Table
  * Create (drop and create a new table on each run)
  * Append or update (append or update data on every run)
  * Incremental update (update table on each run using custom filters)

### Table materialization

![](/files/KlTzrQfInWpM6EYVXT0E)

* **Drop and create**

  Drop the table if it exists and create a new one on each run.
* **Append and update**

  Append or update rows in the existing table. If a table does not exist, create it.
* **Incremental update**

  Append or update filtered rows in the existing table. If a table does not exist, create it.

**Unique key (only for Append and Incremental Update options)**

Optionally, if you can set a unique key, the records with the same unique keys will be updated. A unique key determines whether a record has new values and should be updated. Not specifying a unique key will result in append-only behavior, which means all filtered rows will be inserted into the preexisting target table without regard for whether the rows represent duplicates.

### Incremental Update

The first time you execute a flow in Tabula, a new table is generated in your data warehouse by transforming the entire dataset from your source. For any subsequent runs, Tabula will only process and transform the specific rows you've chosen to filter, appending them to the already existing target table.&#x20;

Typically, you'll filter rows that have been added or updated since your last flow run. By doing so, you're minimizing the volume of data that needs to be transformed, which speeds up the runtime, enhances your warehouse's performance, and cuts down on computational expenses.

**Condition to filter records (only for Incremental Update options)**

Set a boolean condition to tell Tabula which rows to update or append on an incremental run.

You'll often want to filter for "new" rows, as in rows created since the last time the flow was run. The best way to find the timestamp of the most recent run is by checking the most recent timestamp in your target table. Use `$target` to query to the target existing table. You can point to any column in the target table, adding a dot (.) to `$target -> $target.my_column`

In the example below, only the following rows will be updated where `last_updated_time` are bigger than the maximum `last_updated_time` in the existing table.

```markup
last_updated_time > max($target.last_updated_time)
```


# Chart

Create a chart.

<figure><img src="/files/Qn3mGehnQ5ERiaml7naf" alt=""><figcaption></figcaption></figure>

## Overview

Chart node allows you to create informative charts based on your data so that you can visualize, gain insights, and design presentations.

<figure><img src="/files/W5cXpdtmfWb26M4GOThm" alt=""><figcaption></figcaption></figure>

## Settings

There are three types of charts available.

![](/files/xes44MdB3xHoGpuqe1ac)

### Column and Bar Charts

<figure><img src="/files/dp1tGaJRX5PiUciKF3Kh" alt=""><figcaption></figcaption></figure>

<div align="left"><figure><img src="/files/1gcDt6HMHpenklmQr6hE" alt=""><figcaption></figcaption></figure></div>

In a bar chart, values are indicated by the length of bars, each corresponding with a measured group. Bar charts can be oriented vertically or horizontally; vertical bar charts are sometimes called column charts. Horizontal bar charts are a good option when you have many bars to plot or the labels on them require additional space to be legible.

**Fields for column chart:**

X-axis - represents categories (aka dimensions) that should be measured

Y-axis - represents measure-numeric values, which could be aggregated.

{% hint style="info" %}
In a bar chart, the X-axis and Y-axis are swapped.
{% endhint %}

The **Aggregate Columns** option allows you to enable or disable aggregation. For example, the Chart node is built after [Group by](broken://pages/xilWRhWIU0jht5r8iMpa) node where aggregation has already been performed.

Using the "+Add button," you can add another column for visualization on the chart.

**Sort by** allows you to sort results.

### Line chart

<div align="left"><figure><img src="/files/QSzk3TVEV0jeHgCNVay7" alt=""><figcaption></figcaption></figure></div>

Line charts show changes in value across continuous measurements, such as those made over time. Movement of the lineup or down helps bring positive and negative changes. It can also expose overall trends to help the reader make predictions or projections for future outcomes.

**Fields**:

X-axis - represents categories (aka dimensions) that should be measured

Y-axis - represents measure-numeric values, which could be aggregated. Also, you can add more than one measure to the chart, shown in separate colored lines.

### Runtime

When you run a job, charts are calculated on the whole dataset. You can find the resulting charts on the job page.

### Download charts

![](/files/eVutDbBFnUtMFPxNsA1q)

You can download charts by clicking on the <img src="/files/hPvOhDLULFnLg1cbWtsa" alt="" data-size="line"> export icon in the footer.&#x20;

**Options**:

* Copy as SVG to the clipboard
* Download PNG file
* Download SVG file


# Search and Enrichment


# Search Leads


# Enrich Leads


# Enrich Companies


# Enrich People


# Verify Emails


# Filtering and Sorting


# Filter

Filters rows based on the specified condition

<figure><img src="/files/BfpQEhsd92prqPXyzL1m" alt=""><figcaption></figcaption></figure>

## Overview

The Filter Node allows you to filter your dataset based on specific conditions or custom formulas.

<figure><img src="/files/hTdHwcnLabUbdejvA0NO" alt=""><figcaption></figcaption></figure>

## **Settings**

#### **Find rows where**

The "Find Rows Where" property allows you to define the conditions for filtering rows in your dataset. There are two options for creating conditions:

**1. Predefined Operators**

Using predefined operators, you can easily set up conditions based on column values and comparison operators. Follow these steps to create a condition:

1. Select the column you want to use as a basis for the condition.
2. Choose a comparison operator (e.g., equal, contains, more, etc.) depending on the column's data type.
3. Enter a value to compare with the selected column's values.

To add more conditions, click the "Add Condition" button. You can combine multiple conditions using the following logical operators:

* **And**: Both conditions must be true for a row to pass the filter.
* **Or**: At least one of the conditions must be true for a row to pass the filter.

You can also add a new group of conditions. Click the "Add Condition" button and select "Add group".

**2. Custom Formula**

To use a custom formula, enable the "Custom Formula" toggle. With this option, you can define any condition that returns a boolean value (true or false).

#### **Action**

The "Action" property lets you choose what to do with rows that pass the filter conditions. There are two available options:

1. **Keep Filtered**: Only keep rows that meet the filter conditions in the dataset.
2. **Remove Filtered**: Remove rows that meet the filter conditions from the dataset.


# Remove Duplicates

Removes duplicated rows

<figure><img src="/files/ZgJY15wbHsunuHHi4T9d" alt=""><figcaption></figcaption></figure>

## Overview

The Remove Duplicates Node allows you to identify and remove duplicate rows within your dataset. This node allows you to compare the entire rows or analyze specific columns to find duplicates.

<figure><img src="/files/bcDZv9PzWIjJ3V0QCTZy" alt=""><figcaption></figcaption></figure>

## Settings

There are two options for identifying duplicates:

#### **Compare the whole row.**

By selecting this option, the node will compare the entire row to identify duplicates. When all columns in a row have the same values as another row, it will be considered a duplicate.

#### **Select columns to analyze duplicates.**

This option allows you to specify which columns should be analyzed for duplicates. You can choose one or more columns to compare for duplicates. When you have chosen the columns, the node will only consider rows as duplicates if the selected columns have the same values in both rows.


# Sort

Sorts a table by the specified column(s)

<figure><img src="/files/qT3BPlXwfRxuQLBavqwI" alt=""><figcaption></figcaption></figure>

## Overview

The Sort Node allows you to sort your dataset based on one or more columns, with a specified sorting direction for each column.

<figure><img src="/files/1CkR6cf2DQ5142A21enf" alt=""><figcaption></figcaption></figure>

## **Settings**

#### **Sort table by**

Choose which columns you want to sort by. Press the “**+Then sort by**” link to add more columns to sort.

**Sorting Direction**

The available options are:

1. **Ascending**: Sort the column in ascending order, from the smallest to the largest value.
2. **Descending**: Sort the column in descending order, from the largest to the smallest value.


# Columns Operations


# Modify Columns

Renames, deletes and moves columns

## Overview

The Columns Node allows you to manage your dataset's columns by renaming, removing, and changing the order of columns using a simple drag-and-drop interface.

<figure><img src="/files/KrYOUJDQMfAEkKWKQTf8" alt=""><figcaption></figcaption></figure>

## **Settings**

The Property Grid visually represents each column in your dataset as a plate displaying the column's name and data type. You can interact with these plates to perform the following actions:

#### **Change Column Order**

To change the order of the columns, click and drag the desired column plate to a new position in the Property Grid. The column will be moved to the new location when you release the mouse button.

#### **Rename Column**

To rename a column, click the pencil icon on the column plate or double-click the column name. This will make the column name editable. Type in the new column name, press Enter or click outside the input box to confirm the change.

#### **Remove Column**

Click the Trash icon on the column plate to remove a column from the dataset.


# Change Type

Changes a data type for selected column(s)

<figure><img src="/files/8u6ZWnn52dV5jrA9PVC2" alt=""><figcaption></figcaption></figure>

## Overview

The Column Type Node allows you to easily modify the data types of specific columns in your dataset. Adding this node to your canvas allows you to select columns and convert them to integers, strings, dates, or other supported data types.

<figure><img src="/files/6A12nygG8DVMUoEEj48B" alt=""><figcaption></figcaption></figure>

## Settings

You can change the column type in two ways in the app:&#x20;

1\. Using the toolbar, select the column you want to change the column type for and click on the 'Change column type' node

2\. From the table header, click on the column type icon and select the appropriate option

<figure><img src="/files/7FoCDhGdXixyTA42aqfm" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can select multiple columns simultaneously and convert them to the same data type.
{% endhint %}

#### Change type for

Select the columns you want to change the type for. All columns should have the same original formatting.

#### Set new type

#### String

Simple text. You can convert any other type to a String.

#### Integer

A column type that stores whole number values without decimal points or fractions.

Options: You can specify **a decimal separator in the original column** - period or comma, then decimal numbers will be truncated.

#### Decimal

A column that stores numeric values with an unfixed number of decimal places.

You should specify **a decimal separator in the original column** - period or comma.

{% hint style="info" %}
All decimals are stored in databases as float type
{% endhint %}

#### Boolean

A column that stores binary data representing *true* and *false*. You can convert to boolean columns containing the following values:

* 'true', 't', 'yes', 'y', 'on', '1' return TRUE.&#x20;
* 'false', 'f', 'no', 'n', 'off', '0' return FALSE

#### DateTime, Date, Time types

DateTime stores both date and time information. Date stores only date part and Time - only time part. When converted all values in those columns will be displayed in ISO standard format: yyyy-MM-dd HH:mm:ss.ssa

Example:

```
Datetime: 2023-08-17 10:30:45
Date: 2023-08-17
Time: 10:30:45
```

You should specify the **format of the original column**.&#x20;

* Select one from the predefined list. See [supported](/data-transformation/formulas/supported-date-parts) abbreviations. Instead of "\*" could be the following symbols: "-", "\_", space
* Switch the toggle **"custom"** to enter a custom formatting.

#### Array

A column that can hold multiple values or elements within a single cell allows for storing and manipulating structured data like lists, sets, or matrices, which can be useful for performing operations on groups of related information.

Example:

```
["2022-06-01", "2022-06-22", "DW", "inactive"]
```

#### Object

A column that stores a collection of values, often of the same data type, grouped under a single variable.

Example:

{% code overflow="wrap" %}

```
{"End": "2022-06-22", "Start": "2022-06-01", "Status": "inactive", "Campaign name": "DW"}
```

{% endcode %}


# Formula Column

Adds a a new column(s) with “text”, number, or formula

<figure><img src="/files/AeRXPCrjQUqrF3oXyAq3" alt=""><figcaption></figcaption></figure>

## Overview

The New Column Node allows you to add new columns to your dataset based on formulas, including existing column values and various functions.

<figure><img src="/files/S1AyM2YL66oczh6jrJuo" alt=""><figcaption></figcaption></figure>

## **Settings**

You can create new columns, specify their names, and define the expressions or formulas to calculate the values for the new columns.

#### **Set Value To**

Use the "Set Value To" property to define the expression or formula for calculating the values in the new column. The expression editor provides autocomplete functionality, helping you easily access functions and column names.&#x20;

An expression can consist of:

* text -> <mark style="color:green;">"my\_string"</mark> (always frame text with double quotes)&#x20;
* numbers -> <mark style="color:orange;">1.2</mark>  (use a period to separate the integral and fractional parts of decimal types.)&#x20;
* column names -> My\_Column (start typing column name and use auto-suggestions to add column reference)&#x20;
* functions -> <mark style="color:blue;">Round</mark>(<mark style="color:orange;">1.2234</mark>, <mark style="color:orange;">2</mark>)

See the full list of operators in our tutorial [What are Formulas?](/data-transformation/formulas/what-are-formulas)

#### **Column Name**

The "Column Name" property allows you to specify the name for the new column. By default, the new column will be added to the dataset. If you want to overwrite an existing column instead, enable the "Overwrite" toggle and select the column you want to overwrite from the list.

#### +Add Column

<div align="left"><figure><img src="/files/qxSTIF1S7p4o3ClTfnxA" alt="" width="380"><figcaption></figcaption></figure></div>

To add more new columns, click the "Add Column" button. You can create multiple new columns with unique names and expressions.

You can reference any columns added earlier in this node.

## **Preview**

New columns will appear in the dataset, showing the calculated values based on the expressions or formulas you defined.

<div align="left"><figure><img src="/files/fIgu3DfAwWCRbMgsJ0Fd" alt="" width="563"><figcaption></figcaption></figure></div>


# If...Then Column

Adds a new column with a value based on the specified condition

<figure><img src="/files/J2Ir0wLuqPd6eIK3u9lT" alt=""><figcaption></figcaption></figure>

## Overview

The If...Then Node allows you to create or modify columns in your dataset based on conditional expressions. The node applies a value or expression to a new or existing column depending on whether the specified conditions are met.

<figure><img src="/files/ZBjcDbTGNlZuWbNP6ffV" alt=""><figcaption></figcaption></figure>

## **Settings**

#### **If**

The "If" property allows you to define the condition for the If..Then Node. There are two options for creating conditions:

1. Predefined Operators. You can easily set up conditions based on column values and comparison operators using predefined operators. Follow these steps to create a condition:
   1. Select the column you want to use as a basis for the condition.
   2. Choose a comparison operator (e.g., equal, contains, etc) depending on the column's data type.
   3. Enter a value to compare with the selected column's values.
2. Custom Formula. To use a custom formula, enable the "Custom Formula" toggle. With this option, you can define any condition that returns a boolean value (true or false).

#### **Then set a value to**

If the condition in the "If" property is met (returns true), the value or expression defined in the "Then Set Value To" property will be applied to the new or existing column.

#### **+ Add Condition (Else If)**

You can add an "Else If" block by clicking the "+Add Condition" button. This block will be evaluated if the previous condition(s) are not met (return false). If the "Else If" condition is met (returns true), its corresponding value or expression will be applied to the new or existing column.

#### **Otherwise (if all conditions are failed)**

If all conditions in the "If" and "Else If" blocks fail (return false), the value or expression specified in the "Otherwise" property will be applied to the new or existing column.

#### **Column Name**

The "Column Name" property allows you to specify the name for the new or existing column. By default, the new column will be added to the dataset. If you want to overwrite an existing column instead, enable the "Overwrite" toggle and select the column you want to overwrite from the list.

## **Preview**

The new or modified column will appear in the dataset, showing the values or expressions applied based on the conditions you defined


# Window Function

Calculates a window function operates on a group (“window”) of related rows

## **Overview**

The rolling node allows you to perform calculations across a set of rows related to the current row. Unlike regular aggregate functions, which return a single value for a group of rows, window functions return a value for each row based on the rows within its "window."&#x20;

<figure><img src="/files/gGiHXjCTX0K5NFYyeApQ" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Learn more in our tutorial: [Window Functions](/tutorials/window-functions)
{% endhint %}

## Settings

#### Set value to

Select the column to calculate aggregation and choose one of the aggregation functions: Average, Count, Min, Max, Sum.

#### Rows window

This parameter defines the range of rows that should be included in the window frame relative to the current row and their sorting.

**starts from - ends with**

Specify the frame using one of the following options:

* All preceding. Includes all rows from the start of the partition to the current row.
* Preceding. Includes the previous **n** rows before the current row.
* Current row. Includes the current row only.
* Following. Includes the next **n** rows after the current row.
* All following. Includes all rows from the current row to the end of the partition.

**sorted by**

This parameter is used to specify the order in which the window function will process the rows. Defining the order, especially when using ranking or numbering functions, is important as it directly impacts the output.

#### Partitioned by

This parameter divides the data into partitions to which the window function is applied. If you don't specify the "Partitioned by" clause, the function will treat the whole result set as a single partition.

#### **Column name**

Enter the name for a newly created column.


# Split Column

Splits column(s) based on a specified delimiter

## Overview

The Split Node allows you to split text from one or multiple columns in your dataset into separate columns or arrays based on a specified delimiter.

<figure><img src="/files/9srZBczxsII7MZ1yl6Jo" alt=""><figcaption></figcaption></figure>

## **Settings**

<figure><img src="/files/bSyyeHcItkmdAa3KLH6p" alt=""><figcaption></figcaption></figure>

#### **Split text from**

Select one or multiple columns you want to split in the "Split text from" property. The selected columns should contain text data that will be split using a specified delimiter.

#### **By delimiter**

Specify the delimiter to split the text using the "By delimiter" property. You can choose between a text delimiter or a regular expression (regex) delimiter:

1. Text delimiter: Enter a simple text string that will be used to split the column values.
   1. Regex delimiter: Enter a regular expression (regex) pattern that will be used to split the column values. Find out how to use Regex [Using Regex](/tutorials/using-regex) and the list of supported tokens [Regex: List of Tokes](/data-transformation/formulas/regex-list-of-tokes)

#### **Set into**

In the "Set Into" property, choose one of the following options for the output format:

#### **Array**

If you select "Array," the Split Node will create a new column containing arrays with the split parts of the original text.

#### **Columns**

If you select "Columns," the Split Node will create separate columns for each split part of the original text. You need to specify the number of columns to be created. By default, two columns will be created.

#### **Ignore case**

When this option is enabled, the Split Node will not differentiate between uppercase and lowercase characters in the delimiter.


# Replace Text

Finds and replaces the specified part of text

<figure><img src="/files/8u6ZWnn52dV5jrA9PVC2" alt=""><figcaption></figcaption></figure>

## Overview

The Find and Replace Node allows you to search for specific text within one or multiple columns in your dataset and replace the found text with a specified value. In this guide, we will explain the properties and functionalities of the Find and Replace Node.

<figure><img src="/files/1TQmmNJz1ediSRS6aUeW" alt=""><figcaption></figcaption></figure>

## **Settings**

#### **Search into**

In the "Search Into" property, select one or multiple columns to search for the specified text or pattern. The selected columns should contain text data that can be processed using the specified text or pattern.

#### **Find**

Specify the text or regex pattern to find using the "Find" property. You can choose between a text string or a regular expression (regex) pattern:

1. Text string: Enter a simple text string that will be used to find the text within the column values.
2. Regex pattern: Enter a regular expression pattern that will be used to find the text within the column values. Find out how to use Regex [Using Regex](/tutorials/using-regex) and the list of supported tokens [Regex: List of Tokes](/data-transformation/formulas/regex-list-of-tokes)

#### **Replace with**

Enter the replacement text in the "Replace With" property. This text will replace the found text or pattern within the selected columns.

#### **Ignore case**

Enable the "Ignore Case" toggle if you want the search process to be case-insensitive. When this option is enabled, the Find and Replace Node will not differentiate between uppercase and lowercase characters when finding the text.

#### **Match all occurrences**

The "Match All Occurrences" toggle is enabled by default. When this option is enabled, the Find and Replace Node will search for and replace all occurrences of the specified text or pattern within the selected columns.


# Extract Text

Extracts the specified part of text into a new column(s)

## Overview

The Extract Node allows you to extract specific text from one or multiple columns in your dataset and place the extracted text into separate columns or arrays.

<figure><img src="/files/nrzdb0fcr7F1BhnFCkWH" alt=""><figcaption></figcaption></figure>

## **Settings**

#### **Extract From**

In the "Extract From" property, select one or multiple columns that you want to extract text. The selected columns should contain text data that can be processed using the specified text or pattern.

#### **Find**

Specify the text or pattern to find and extract using the "Find" property. You can choose between a text string or a regular expression (regex) pattern:

1. Text string: Enter a simple text string that will be used to find and extract the text from the column values.

<figure><img src="/files/mme6DRkCGaSESjQe8LNV" alt=""><figcaption></figcaption></figure>

2. Regex pattern: Enter a regular expression pattern that will be used to find and extract the text from the column values. Find out how to use Regex [Using Regex](/tutorials/using-regex) and the list of supported tokens [Regex: List of Tokes](/data-transformation/formulas/regex-list-of-tokes)

<figure><img src="/files/L0DaFw9vS7Tp38aWxARo" alt=""><figcaption></figcaption></figure>

#### **Set into**

In the "Set Into" property, choose one of the following options for the output format:

#### **Array**

If you select "Array," the Extract Node will create a new column containing arrays with the extracted text parts.

#### **Columns**

If you select "Columns," the Extract Node will create separate columns for each extracted text part. You need to specify the number of columns to be created. By default, two columns will be created. A maximum of 50 columns can be created.

#### **Ignore case**

Enable the "Ignore Case" toggle if you want the extraction process to be case-insensitive. When this option is enabled, the Extract Node will not differentiate between uppercase and lowercase characters when finding and extracting the text.


# Match Text

Finds and counts all matches in a column(s) of a specified text

<figure><img src="/files/FEIaUelU5wVNrAHU615Z" alt=""><figcaption></figcaption></figure>

## Overview

The Matches Node allows you to search for and count the number of matches of a specific text or pattern within a selected column in your dataset.

<figure><img src="/files/8k9p4YT3DdD4Ps2j6q1R" alt=""><figcaption></figcaption></figure>

## **Settings**

#### **Count matches into**

In the "Count Matches Into" property, select a column you want to search for the specified text or pattern. The selected column should contain text data that can be processed using the specified text or pattern.

#### **Find**

Specify the text or regex pattern to find using the "Find" property. You can choose between a text string or a regular expression (regex) pattern:

1. Text string: Enter a simple text string that will be used to find the text within the column values.
2. Regex pattern: Enter a regular expression pattern that will be used to find the text within the column values. Find out how to use Regex [Using Regex](/tutorials/using-regex) and the list of supported tokens [Regex: List of Tokes](/data-transformation/formulas/regex-list-of-tokes)

#### **Column name**

Enter a name for the new column in the "Column Name" property. This column will store the count of matches found in the selected column.

#### **Ignore case**

Enable the "Ignore Case" toggle if you want the search process to be case-insensitive. When this option is enabled, the Matches Node will not differentiate between uppercase and lowercase characters when finding the text.


# Table Operations


# Combine Tables

Joins 2 tables using the specified columns as keys

## Overview

The Join Node allows you to combine two datasets based on one or more shared keys. This is particularly useful for scenarios where you want to merge data from different sources to create a comprehensive view. It's similar to VLookup in Excel but more comprehensive. Read more about in our tutorial [Join Types](/tutorials/join-types)<br>

<figure><img src="/files/Qb70MruRryLtOeke0eue" alt=""><figcaption><p>Select Join node on toolbar</p></figcaption></figure>

## Settings

**Left and Right tables**

Select two nodes to join. Left and Right join types will work depending on nodes selection in this section.

#### Types of Joins

Tabula supports the following types of joins:

* **Left Join**: Includes all records from the left table and the matching records from the right table.
* **Right Join**: Includes all records from the right table and the matching records from the left table.
* **Inner Join**: Includes only the records with matching keys in both tables.
* **Full Join**: Includes all records when a match occurs in either the left or right table.
* **Cross Join**: Combines all records from both tables.

{% hint style="info" %}
Be cautious with "Cross Joins" as they can result in many records.
{% endhint %}

#### Keys

Key columns are the basis for matching records between the two datasets you're joining. A key is a specific field (or fields) in each table used to align the data. These columns contain unique identifiers or attributes in both datasets, allowing to match rows from one table to another.&#x20;

Select keys for left and right tables from dropdowns. You can add more than one key pair with the  **"+ Add"** link.

{% hint style="info" %}
When you have multiple keys, the join operation will consider all keys for matching records.
{% endhint %}

#### Output columns

Uncheck the columns you do not want to see in the result table. You can use tabs "Left table" and "Right table" to filter columns by table quickly.




---

[Next Page](/llms-full.txt/1)

