# Understanding Columns

Columns define the structure of your TexAu tables. Each column holds one type of information and behaves differently depending on how you set it up. Columns can store data, fetch new data, calculate values, or push results to external tools.

## The Five Column Types

TexAu has five column types. Each one serves a different purpose in your workflow.

### 1. Data Source Column

Data Source columns pull data from an external source into your table. Use them to import records from a connected integration or external database.

**Best for:**
- Pulling leads from your CRM into a TexAu table
- Importing company records from an external database
- Syncing contact lists from connected tools

**How it works:**
1. Create a Data Source column and select a connected integration
2. Map the fields you want to pull in
3. TexAu imports the data from that source into your table

### 2. Action Column

Action columns run enrichment actions against external data providers. When you run an enrichment, these columns connect to providers and fetch information you do not already have.

**Best for:**
- Finding missing email addresses based on company name and domain
- Fetching job titles for people you know only by name
- Getting company information from a domain or company name
- Pulling LinkedIn URLs when you have an email address
- Discovering contact information you do not have

**How it works:**
1. Set up an Action column with a data provider (such as Apollo, BetterEnrich, FullEnrich, etc.)
2. Specify which existing columns it should use to find information (for example, "Use email address to find job title")
3. When you run enrichment, TexAu connects to that provider and fetches the data
4. Results populate in real time as the provider responds

**What makes it smart:**
- **Waterfall logic**: If one provider cannot find data, TexAu automatically tries the next provider you set up
- **Conditional enrichment**: You can enrich only empty cells, or re-enrich all rows
- **Credit usage tracking**: See the credit cost for each lookup

Action columns configured as output columns push data to external tools like CRMs.

> **Example:** You have an Action column called "Job Title" that uses Apollo. When you run enrichment, TexAu sends each email address to Apollo, and Apollo responds with the job title for that person. TexAu fills in the column with those responses.

### 3. AI Column

AI columns run an AI model with a custom prompt to generate or transform data. You write a prompt, and the AI processes each row to produce a result.

**Best for:**
- Summarizing company descriptions into one-line pitches
- Classifying leads by industry or fit score
- Generating personalized outreach messages
- Extracting structured data from unstructured text

**How it works:**
1. Create an AI column and write your prompt
2. Reference other columns as inputs in your prompt (for example, "Based on {companyDescription}, classify the industry")
3. Choose the AI model to use
4. TexAu runs the prompt for each row and populates the results

### 4. HTTP Column

HTTP columns make custom HTTP requests to any API endpoint. Use them when you need data from a source that is not a built-in integration.

**Best for:**
- Calling a custom internal API to look up account data
- Fetching data from a third-party REST API
- Sending data to an external service and capturing the response

**How it works:**
1. Create an HTTP column and configure the request (URL, method, headers, body)
2. Reference other columns to build dynamic request parameters
3. TexAu sends the request for each row and maps the response into the column

### 5. Formula Column

Formula columns calculate or combine data using formulas. They create new values based on other columns in the same row.

**Best for:**
- Combining first and last name into full name
- Calculating seniority level based on job title
- Identifying high-priority prospects based on multiple criteria
- Creating custom scoring or ranking
- Building flags (for example, "is this a Fortune 500 company?")

**How it works:**
1. Create a Formula column and write your formula
2. The formula references other columns (like `IF(job_title = "CEO", "C-Suite", "Other")`)
3. TexAu applies the formula to every row
4. Results calculate instantly and update whenever referenced columns change

**Example formulas:**
- `if(department = "Sales" or department = "Marketing", "Go-to-Market", "Other")`
- `concat(first_name, " ", last_name)` combines first and last name
- `upper(company_name)` converts company name to all uppercase
- `COALESCE(provider1_email, provider2_email, provider3_email)` picks the first non-empty value. COALESCE returns the first non-empty value from the listed columns.

## Semantic Data Types

Every column has a semantic data type that tells TexAu what kind of information the column contains. TexAu recognizes 30+ semantic types, including:

### Contact Information
- **email**: Email addresses
- **phone**: Phone numbers (with smart formatting)
- **firstName**: Person's first name
- **lastName**: Person's last name
- **fullName**: Complete name
- **linkedin**: LinkedIn profile URL
- **twitter**: Twitter/X handle

### Company Information
- **companyName**: Company or organization name
- **companyDomain**: Company website domain (for example, "texau.com")
- **companySize**: Number of employees
- **industry**: Industry classification
- **companyLinkedIn**: Company's LinkedIn URL

### Location Information
- **address**: Full street address
- **city**: City name
- **state**: State or province
- **postalCode**: Postal code
- **country**: Country name

### Professional Information
- **jobTitle**: Person's job title
- **department**: Department name
- **seniorityLevel**: Seniority (Intern, Manager, Director, C-Suite, etc.)
- **skills**: Professional skills
- **yearsExperience**: Years in profession

### Other Types
- **url**: General website URL
- **text**: Generic text field
- **number**: Numeric value
- **date**: Calendar date
- **boolean**: True/false value

> **Why it matters:** When TexAu knows a column is an email, it can format it correctly, validate it, and enable email-specific enrichments. When it is a phone number, it formats it with proper parentheses and hyphens. Semantic types unlock smarter behavior across the platform.

## Add Columns

To add a new column:

1. **Click the + icon** at the end of your column headers
2. **Choose your column type** (Data Source, Action, AI, HTTP, or Formula)
3. **Name your column** with something clear and specific
4. **Select the semantic data type** for the kind of information it holds
5. **Configure the column** depending on its type:
   - Action: Choose data provider and source columns
   - AI: Write your prompt and select the model
   - HTTP: Configure the request URL, method, headers, and body
   - Formula: Enter your formula
   - Data Source: Select the integration and fields to pull
6. **Click Save**

## Manage Columns

### Reorder Columns

1. **Right-click on any column header**
2. **Select "Move Column"**
3. **Choose where to move it** (left, right, first, last, or after a specific column)
4. Your data stays intact. Only the display order changes.

### Rename Columns

1. **Right-click on the column header**
2. **Select "Rename"**
3. **Type the new name**
4. Formulas and references update automatically.

### Duplicate Columns

1. **Right-click on the column header**
2. **Select "Duplicate"**
3. TexAu creates an identical copy with "(copy)" in the name
4. Edit as needed

### Delete Columns

1. **Right-click on the column header**
2. **Select "Delete"**
3. **Confirm**. TexAu warns you if the column is referenced by formulas.

> **Careful:** Deleting a column also deletes all data in that column. If you are not sure you need it, consider hiding it instead (see Column Visibility below).

## Column Configuration

Each column has settings you can customize:

### Column Visibility
- **Show**: Column visible in your table
- **Hide**: Column hidden but still exists (data preserved)
- **Freeze**: Column always visible when scrolling left/right (great for key identifiers)

### Formatting Options
- **Number format**: Decimals, currency symbol, thousand separators
- **Date format**: MM/DD/YYYY, DD/MM/YYYY, ISO, etc.
- **Phone format**: (555) 123-4567 or 555-123-4567
- **Text alignment**: Left, center, or right

### Validation and Defaults
- **Required field**: Warn if empty
- **Unique values**: Prevent duplicate entries
- **Default value**: Pre-fill new rows with a default
- **Allow empty cells**: Or require data entry

### Column Color Coding
- Add a color label to columns for visual organization
- Group related columns (all contact info in blue, all company info in green, etc.)

## Column Limits

- **Maximum columns per table:** 100
- **Maximum columns per import:** 100
- **Column name length:** Up to 50 characters

You will typically work with 15 to 30 columns. If you are approaching 50 to 100, consider splitting into multiple tables with shared identifiers (like email address or company domain).

> **Tip:** Start simple with essential columns, then add Action and Formula columns as you need them. You can always add more.

---

**What's Next?**
- Learn how to [work with rows](working-with-rows.md) to add and manage data
- Explore [running enrichments](running-enrichments.md) to fetch missing information
- See how to [export your data](exporting-data.md) when you are done