Home Use-Case Tutorials

Use-Case Tutorials

Vikesh Tiwari
By Vikesh Tiwari
10 articles

Build a B2B Email Outreach List from Scratch

Build a B2B Email Outreach List from Scratch This tutorial covers building a targeted B2B email list from a company name list, with no LinkedIn URLs as starting input. You will go from company names to contactable leads ready for outreach. Before you begin - Connect these integrations in Settings > Integrations: - Apify (for LinkedIn scraping) - BetterEnrich or Apollo (for email finding) - Hunter.io or Findymail (as fallbacks) What you will build A two-table workflow: - Table 1 - Company to contacts: scrape decision-maker profiles from each company. - Table 2 - Contacts to emails: find email for each LinkedIn URL found in Table 1. Step 1: Build the company-to-contacts table Create the table 1. Click New Table and name it Company Employee Scrape. 2. Add a column called Company LinkedIn URL (the LinkedIn company page URL, e.g. https://linkedin.com/company/acme). 3. Import your company list as a CSV or paste company page URLs. Add the scraping action 1. Click Add Column. 2. Select Action Column. 3. Search for and select Scrape LinkedIn Company Employees (Apify). 4. Map the Company LinkedIn URL column to the input. 5. Configure filters: - Set Job Title Keywords to your target function: "sales", "marketing", "growth", "revenue". - Set Location if targeting a specific geography. 6. Click Save. 7. Click Run All Rows. This action costs 8 credits per row. Each row produces multiple employee results. Step 2: Extract LinkedIn profile URLs After the scrape completes, your table will have columns for each employee's name and LinkedIn profile URL. Export this table as a CSV or copy the LinkedIn URL column for use in the next table. If you are using Workbooks, add the second table in the same Workbook and use a cross-table reference for the LinkedIn URL column. Step 3: Build the email enrichment table 1. Click New Table and name it Contact Email Enrichment. 2. Import the LinkedIn profile URLs from Step 2 as the first column. Add work email finding 1. Click Add Column and select an Action Column. 2. Select Find Work Email by LinkedIn URL (BetterEnrich). 3. Map LinkedIn URL to the input. 4. Select Email as the output. 5. Click Save. This action costs 2 credits per row. Add a fallback email source 1. Add another Action Column. 2. Select Find Email using LinkedIn URL (Apollo). 3. Map LinkedIn URL to the input. 4. Select Email as output. 5. Click Save. This action costs 2 credits per row. Add a combined email formula 1. Click Add Column and select Formula Column. 2. Enter: IF(betterenrich_email != "", betterenrich_email, apollo_email) 3. Name it Final Email. Step 4: Run and filter 1. Click Run All Rows on the email enrichment table. 2. After completion, filter the table: show only rows where Final Email is not empty. 3. Export as CSV or push to your sequencing tool. What to expect Building this workflow with 50 target companies: - Employee scrape: typically returns 100-500 contacts depending on company size and filter settings - Email enrichment: typically 50-70% of those contacts will have a work email found Troubleshooting The Apify scrape returns employees from companies I did not include. Verify all company URLs are LinkedIn company page URLs, not personal profile URLs. Company URLs follow the pattern linkedin.com/company/name, not linkedin.com/in/name. Job title filter returns no results. Some job titles on LinkedIn do not match common keywords. Try broader terms like "sales" instead of "account executive". You can also leave the filter empty and filter by job title in TexAu after the scrape returns results. Email hit rate is below expectations. Company size and industry affect coverage. Mid-market SaaS companies typically have higher email coverage than small agencies or local businesses. Add FullEnrich or Prospeo as additional fallback columns to increase overall reach.

Last updated on Apr 29, 2026

Build a Company Research Workflow from Domains

Build a Company Research Workflow from Domains This tutorial walks through building a table that starts with company domains and returns a complete company profile including firmographics, technology stack, decision-maker contacts, and social presence. Before you begin - Connect these integrations in Settings > Integrations: - Apollo (for company enrichment) - Apify (for LinkedIn employee scraping) - No external setup is needed for TexAu utility actions. What you will build A table where each row is a company domain, and the columns build out a complete picture of that company: | Column | Type | Source | |--------|------|--------| | Company Domain | Data | Your input | | Company Profile | Action | Enrich Company (Apollo) | | Technology Stack | Action | Get Website Tech Stack (TexAu Utility) | | Company Website Meta | Action | Get Web Meta Tags (TexAu Utility) | | LinkedIn Company URL | Formula | Built from domain | | Key Contacts | Action | Scrape LinkedIn Company Employees (Apify) | Step 1: Create the table 1. Click New Table and name it Company Research. 2. Import your list of company domains as a CSV, or paste them directly. 3. Name the first column Company Domain (e.g. acme.com, not https://acme.com). Step 2: Enrich company firmographics 1. Click Add Column and select Action Column. 2. Search for and select Enrich Company (Apollo). 3. Map the Company Domain column to the company domain input. 4. Select these outputs: - Company Name - Industry - Employee Count - Annual Revenue Range - Location (City, Country) - LinkedIn URL - Short Description 5. Click Save. This action costs 2 credits per row. Step 3: Get the technology stack 1. Click Add Column and select Action Column. 2. Search for and select Get Website Tech Stack (TexAu Utility). 3. Map the Company Domain column to the URL input. Add https:// prefix with a formula if needed: CONCAT("https://", company_domain). 4. Select Technologies as the output. This returns a list of detected tools. 5. Click Save. This action costs 1 credit per row. Step 4: Get website metadata 1. Click Add Column and select Action Column. 2. Search for and select Get Web Meta Tags (TexAu Utility). 3. Map CONCAT("https://", company_domain) as the URL input. 4. Select Title, Description, and Keywords as outputs. 5. Click Save. This action costs 1 credit per row. The meta title and description give you a quick summary of how the company describes itself, useful for personalizing outreach. Step 5: Build the LinkedIn Company URL Most company LinkedIn URLs follow a predictable pattern. Build one from the Apollo output or directly: 1. Click Add Column and select Formula Column. 2. If Apollo returned a LinkedIn URL, use: apollo_linkedin_url 3. If not, you can build an approximate URL: CONCAT("https://linkedin.com/company/", LOWER(REPLACE(company_name, " ", "-"))) Name this column LinkedIn Company URL. Step 6: Scrape decision-maker contacts 1. Click Add Column and select Action Column. 2. Search for and select Scrape LinkedIn Company Employees (Apify). 3. Map the LinkedIn Company URL column to the input. 4. Configure filters: - Job Title Keywords: "cto", "vp engineering", "head of", "director", "founder" - Max Results: 10 (to limit to top results per company) 5. Click Save. This action costs 8 credits per row and returns multiple contacts per company. Step 7: Run all rows 1. Click Run All Rows. 2. Monitor the progress. The Apify column will take longer than the others. 3. After completion, review the data. Step 8: Export or pass to enrichment Export the contact rows from Step 6 as a CSV and run them through email enrichment in a separate table: 1. Click Export and download the table as CSV. 2. Create a new table for contact enrichment. 3. Import the LinkedIn profile URLs from the exported file. 4. Add Find Work Email by LinkedIn URL (BetterEnrich) as an Action Column. Troubleshooting Enrich Company returns empty fields for a domain. Apollo may not have data for every company. Small companies, very new companies, and companies with no web presence are less likely to be in Apollo's database. Try Get Meta Tags and Get Tech Stack as alternative ways to gather minimal company data. The LinkedIn Company URL formula returns a wrong URL. The formula-built URL works for companies with simple, predictable slugs. Companies with unusual characters in their names, initials, or multiple LinkedIn pages will not be found this way. If Apollo returns a LinkedIn URL, use that directly instead. Apify returns contacts that are not in the expected job function. LinkedIn keyword matching is broad. A search for "director" will return all titles containing the word "director." Add more specific terms to refine results, or filter the output by job title in TexAu using a formula column after the run.

Last updated on Apr 06, 2026

Enrich a CRM Export with Missing Contact Details

Enrich a CRM Export with Missing Contact Details This tutorial shows how to take a CRM export with incomplete contact records and fill in missing fields: job title, company, email, phone, and LinkedIn URL. Before you begin - Export your contacts from your CRM as a CSV. Include all fields, even empty ones. - Connect these integrations in Settings > Integrations: - BetterEnrich (for LinkedIn-based enrichment) - Snov.io (for email-to-profile enrichment) - Apollo (for name + domain email finding) What you will build The strategy adapts based on what data each contact already has: - If you have a LinkedIn URL: use it for full profile and email enrichment. - If you have an Email but no LinkedIn URL: use Snov.io to get profile data, then use the LinkedIn URL Snov.io returns for further enrichment. - If you have Name + Company/Domain only: use Apollo or Hunter.io to find a work email by name and domain. You will build one table with conditional columns that route each contact through the right path. Step 1: Import your CRM export 1. Click New Table and name it CRM Re-Enrichment. 2. Click Import CSV. 3. Upload your CRM export CSV. 4. Map the columns. At minimum, ensure you have: First Name, Last Name, Email, Company Name, LinkedIn URL (even if mostly empty). Step 2: Add LinkedIn-based profile enrichment For contacts that already have a LinkedIn URL, enrich their profile data first. 1. Click Add Column and select Action Column. 2. Select Enrich Contact (B2B Enrichment). 3. Map the LinkedIn URL column to the LinkedIn Profile URL input. 4. Select outputs: Current Job Title, Current Company Name, Location Country, Current Company Domain. 5. Click Save. This column will return data only for rows where the LinkedIn URL is present. Rows without a LinkedIn URL will show empty output. Step 3: Add email-to-profile enrichment for contacts with email only For contacts that have an email address but no LinkedIn URL: 1. Click Add Column and select Action Column. 2. Select Enrich Contact (Snov.io). 3. Map the Email column to the Email input. 4. Select outputs: LinkedIn URL, Current Position, Current Company, Industry. 5. Click Save. This gives you a LinkedIn URL for contacts that previously had none. You can then use the returned LinkedIn URL in Step 2's action. Step 4: Add email finding for contacts with name + domain only For contacts with no email and no LinkedIn URL - just a name and company: 1. Add a formula column to extract or format the company domain: - If you have a website column: EXTRACT_DOMAIN(website_column) - If you only have company name: you will need to manually find the domain or use SerpApi to find it. 2. Click Add Column and select Action Column. 3. Select Find Email using Name and Domain (Apollo). 4. Map First Name, Last Name, and Domain to the inputs. 5. Select Email as output. 6. Click Save. This action costs 2 credits per row. Step 5: Build a merged columns formula After enrichment, some fields may now come from multiple sources. Use formulas to consolidate: For the email field: IF(original_email != "", original_email, IF(snov_email != "", snov_email, apollo_email)) For the job title field: IF(original_job_title != "", original_job_title, b2b_enrichment_job_title) For the LinkedIn URL field: IF(original_linkedin != "", original_linkedin, snov_linkedin_url) Name each merged column with a Final_ prefix, e.g. Final_Email, Final_Job_Title. Step 6: Run and export 1. Click Run All Rows. 2. After completion, filter to review enrichment coverage. 3. Export as CSV and re-import into your CRM using your CRM's import or update tool. Expected results For a typical CRM export of 500 contacts with 30-40% missing data: - Email fill rate improves by 15-25% from the multi-source approach - Job title fill rate improves by 30-50% using B2B Enrichment - LinkedIn URL fill rate depends heavily on how well-known the contacts are Troubleshooting Snov.io returns data for some contacts but the LinkedIn URL field is empty. Not all Snov.io profiles include a LinkedIn URL. The field is populated only when Snov.io has observed the email-to-LinkedIn connection. Use BetterEnrich's LinkedIn URL finder as an additional step for contacts where Snov.io did not return a LinkedIn URL. B2B Enrichment returns an outdated job title. Enrichment reflects the data available. If a contact recently changed jobs, the LinkedIn-sourced data may lag. Check the final result against the LinkedIn profile manually for high-value contacts. Formula columns show errors after consolidation. Check that column names in your formula exactly match the column names in your table. Column names are case-sensitive in formulas. Use the column name as it appears in the table header.

Last updated on Apr 06, 2026

Find and Enrich Leads from LinkedIn

Find and Enrich Leads from LinkedIn This tutorial walks through building a table that takes LinkedIn profile URLs and returns enriched contact data including work email, phone number, job title, and company details. Before you begin - You need a LinkedIn profile URL column in your table. You can source these from Apify LinkedIn scrapers or import a CSV. - Connect these integrations in Settings > Integrations before starting: - BetterEnrich (for email and phone) - Apollo (optional, as a fallback email source) What you will build A table with these columns: | Column | Type | What it does | |--------|------|-------------| | LinkedIn URL | Data | Starting input | | Profile Data | Action | Enrich Contact (B2B Enrichment) | | Work Email | Action | Find Work Email by LinkedIn URL (BetterEnrich) | | Mobile Number | Action | Find Mobile Number by LinkedIn URL (BetterEnrich) | | Email Fallback | Action | Find Email using LinkedIn URL (Apollo) | Step 1: Start your table 1. Click New Table from the dashboard. 2. Name it LinkedIn Lead Enrichment. 3. Import your LinkedIn URL list as a CSV or paste URLs directly into the first column. 4. Name the first column LinkedIn URL. Step 2: Add contact data enrichment 1. Click Add Column. 2. Select Action Column. 3. Search for and select Enrich Contact (B2B Enrichment). 4. Map the LinkedIn URL column to the LinkedIn Profile URL input. 5. Select these output fields: First Name, Last Name, Current Job Title, Current Company Name, Location Country, Open to Work. 6. Click Save. This action costs 2 credits per row. Step 3: Add work email finding 1. Click Add Column. 2. Select Action Column. 3. Search for and select Find Work Email by LinkedIn URL (BetterEnrich). 4. Map the LinkedIn URL column to the LinkedIn Profile URL input. 5. Select Email as the output field. 6. Click Save. This action costs 2 credits per row. Step 4: Add mobile number finding 1. Click Add Column. 2. Select Action Column. 3. Search for and select Find Mobile Number by LinkedIn URL (BetterEnrich). 4. Map the LinkedIn URL column to the LinkedIn Profile URL input. 5. Select Phone Number as the output field. 6. Click Save. This action costs 10 credits per row. Step 5: Add an email fallback Some contacts will not have a BetterEnrich email. Add Apollo as a fallback source. 1. Click Add Column. 2. Select Action Column. 3. Search for and select Find Email using LinkedIn URL (Apollo). 4. Map the LinkedIn URL column to the LinkedIn URL input. 5. Select Email as the output. 6. Click Save. This action costs 2 credits per row. To use the Apollo result only when BetterEnrich failed, add a formula column: IF(work_email != "", work_email, apollo_email) Name this column Final Email. Step 6: Run the table 1. Click Run All Rows in the toolbar. 2. Monitor the progress bar. 3. When complete, review the results. Filter the table to show only rows where Final Email is not empty. These are your enriched and contactable leads. Expected results For a list of 100 LinkedIn URLs: - Profile data (Job Title, Company): typically 85-95% fill rate - Work email (BetterEnrich): varies by list quality, typically 40-70% - Mobile (BetterEnrich): typically 20-50% - Combined email reach (BetterEnrich + Apollo): typically 60-80% Troubleshooting LinkedIn URLs are returning no data. Verify the URLs are full profile URLs starting with https://linkedin.com/in/. URLs with /pub/ format or company page URLs will not work with contact enrichment actions. Email hit rate is low. BetterEnrich coverage varies by job function and geography. Tech roles and North American contacts tend to have higher coverage. For lower coverage segments, add FullEnrich or Prospeo as additional fallback columns. Mobile columns are mostly empty. Mobile number availability is generally lower than email. Mobile numbers are most commonly found for senior executives and sales-facing roles. For other roles, focus on work email for outreach.

Last updated on Apr 06, 2026

Find Mobile Numbers for a List of LinkedIn Profiles

Find Mobile Numbers for a List of LinkedIn Profiles This tutorial shows how to build a table that finds mobile phone numbers for a list of contacts using their LinkedIn URLs. It covers running multiple phone number sources in a Waterfall to maximize coverage. Before you begin - Connect these integrations in Settings > Integrations: - BetterEnrich (primary mobile source) - Apollo (secondary mobile source) - LeadMagic (third source - for additional coverage) What you will build A table that tries three mobile number sources in order and returns the best available number: | Column | Type | Source | |--------|------|--------| | LinkedIn URL | Data | Your input | | Mobile (BetterEnrich) | Action | Find Mobile Number by LinkedIn URL (BetterEnrich) | | Mobile (Apollo) | Action | Find Mobile Number using LinkedIn URL (Apollo) | | Mobile (LeadMagic) | Action | Find Mobile Number by LinkedIn URL (LeadMagic) | | Final Mobile | Formula | First non-empty result from the three sources | Step 1: Create the table 1. Click New Table and name it Mobile Number Finder. 2. Import your list of LinkedIn URLs as a CSV, or paste them directly. 3. Name the first column LinkedIn URL. Step 2: Add BetterEnrich mobile finding 1. Click Add Column and select Action Column. 2. Search for and select Find Mobile Number by LinkedIn URL (BetterEnrich). 3. Map the LinkedIn URL column to the LinkedIn Profile URL input. 4. Select Phone Number as the output. 5. Click Save. This action costs 10 credits per row. Step 3: Add Apollo as a fallback 1. Click Add Column and select Action Column. 2. Search for and select Find Mobile Number using LinkedIn URL (Apollo). 3. Map the LinkedIn URL column to the LinkedIn URL input. 4. Select Phone Number as output. 5. Click Save. This action costs 2 credits per row. Step 4: Add LeadMagic as a second fallback 1. Click Add Column and select Action Column. 2. Search for and select Find Mobile Number by LinkedIn URL (LeadMagic). 3. Map the LinkedIn URL column to the LinkedIn URL input. 4. Select Phone Number as output. 5. Click Save. This action costs 10 credits per row. Step 5: Build the final mobile formula 1. Click Add Column and select Formula Column. 2. Enter: IF(betterenrich_mobile != "", betterenrich_mobile, IF(apollo_mobile != "", apollo_mobile, IF(leadmagic_mobile != "", leadmagic_mobile, "") ) ) 3. Name this column Final Mobile. This formula returns the first non-empty result from the three sources, in priority order. Step 6: Add a Normalize Phone formula Phone numbers from different sources come in different formats. Normalize them before exporting: 1. Click Add Column and select Action Column. 2. Search for and select Normalize Phone Number (TexAu Utility). 3. Map Final Mobile as the Phone input. 4. Select Normalized Phone as the output. 5. Click Save. This formats all numbers consistently (e.g. to E.164 format: +15105551234). Step 7: Run the table 1. Click Run All Rows. 2. After completion, filter by Final Mobile is not empty to see how many contacts have a number. Expected results For a list of 100 LinkedIn profiles: - BetterEnrich alone: typically 20-50% coverage - BetterEnrich + Apollo: typically 30-60% - BetterEnrich + Apollo + LeadMagic: typically 35-65% Mobile number coverage is significantly lower than email coverage. Executives and sales-facing roles yield the highest hit rates. Developer, engineering, and non-client-facing roles tend to have lower mobile number availability. When to use mobile numbers vs email Mobile numbers are most valuable for: - Cold calling outreach - SMS sequences - WhatsApp outreach - Verifying identity in high-value deals For bulk outreach, email is more cost-effective. Reserve mobile enrichment for high-priority accounts or contacts where email outreach has not converted. Troubleshooting All three sources return empty for the same contact. Mobile number availability is not guaranteed. If all three sources return empty, the contact's number is not in the available databases. No enrichment provider has complete global coverage. Accept that some contacts will not be reachable by mobile. Numbers are returned in different formats from different sources. The Normalize Phone Number utility action solves this. Always run normalization before exporting or passing numbers to a dialer or sequencing tool. BetterEnrich mobile costs are higher than expected. BetterEnrich mobile costs 10 credits per row regardless of whether a number is found. Run Apollo first (lower cost) and only run BetterEnrich on rows where Apollo returned empty. This requires running the table in two stages with a filter between them.

Last updated on Apr 06, 2026

Push Enriched Contacts to HubSpot Automatically

Push Enriched Contacts to HubSpot Automatically This tutorial shows how to enrich a list of contacts in TexAu and push them directly to HubSpot as new contacts. You will build a table that handles both the enrichment and the CRM sync in one run. Before you begin - Connect these integrations in Settings > Integrations: - BetterEnrich (for email and phone finding) - HubSpot (for contact creation) - requires HubSpot OAuth connection - Make sure your HubSpot account has the contacts permission for the API scope you connected. What you will build A single table with enrichment and HubSpot push in the same run: | Column | Type | What it does | |--------|------|-------------| | LinkedIn URL | Data | Starting input | | Work Email | Action | Find Work Email by LinkedIn URL (BetterEnrich) | | Mobile | Action | Find Mobile Number by LinkedIn URL (BetterEnrich) | | First Name | Action | From Enrich Contact (B2B Enrichment) | | Last Name | Action | From Enrich Contact (B2B Enrichment) | | Job Title | Action | From Enrich Contact (B2B Enrichment) | | Company Name | Action | From Enrich Contact (B2B Enrichment) | | Push to HubSpot | Action | Create Contact (HubSpot) | | HubSpot Contact ID | Output | Returned HubSpot ID for reference | Step 1: Set up the table 1. Click New Table and name it Enrich and Push to HubSpot. 2. Import your LinkedIn URL list as a CSV or paste them in. 3. Name the first column LinkedIn URL. Step 2: Enrich profile data 1. Click Add Column and select Action Column. 2. Select Enrich Contact (B2B Enrichment). 3. Map LinkedIn URL to the LinkedIn Profile URL input. 4. Select these outputs: First Name, Last Name, Current Job Title, Current Company Name. 5. Click Save. Step 3: Find work email 1. Click Add Column and select Action Column. 2. Select Find Work Email by LinkedIn URL (BetterEnrich). 3. Map LinkedIn URL as input. 4. Select Email as output. 5. Click Save. This action costs 2 credits per row. Step 4: Find mobile number 1. Click Add Column and select Action Column. 2. Select Find Mobile Number by LinkedIn URL (BetterEnrich). 3. Map LinkedIn URL as input. 4. Select Phone Number as output. 5. Click Save. This action costs 10 credits per row. Step 5: Configure the HubSpot push 1. Click Add Column and select Action Column. 2. Search for and select Create Contact (HubSpot). 3. Map each field: - Email - map to Work Email column (required) - First Name - map to First Name - Last Name - map to Last Name - Job Title - map to Job Title - Company - map to Company Name - Phone - map to Mobile Number 4. Click Save. Step 6: Add a pre-send filter To avoid pushing contacts with no email to HubSpot (which would create incomplete records), add a condition to the HubSpot column. 1. Open the Create Contact (HubSpot) column settings. 2. Click Add Condition. 3. Set: only run this column when Work Email is not empty. 4. Click Save. Step 7: Run the table 1. Click Run All Rows. 2. After completion, check the HubSpot Contact ID output column. Rows with a Contact ID were successfully pushed to HubSpot. 3. Open HubSpot and verify the new contacts appear in your Contacts list. Step 8: Handle duplicates If a contact with the same email already exists in HubSpot, Create Contact (HubSpot) will fail with a duplicate error. To update existing contacts instead: 1. Remove the Create Contact (HubSpot) column. 2. Add an Update Contact (HubSpot) column instead. 3. First look up the existing HubSpot Contact ID using Search Contacts (HubSpot) with the email as a filter. 4. Map the returned Contact ID and the enriched fields to Update Contact (HubSpot). Troubleshooting HubSpot push column shows errors for some rows. The most common cause is a missing required field (Email is required for HubSpot contact creation). Check that the Work Email column has a value for the failing rows. Use the pre-send filter from Step 6 to skip empty email rows completely. Contacts are created in HubSpot but some fields are empty. The field may be empty because the enrichment step returned no data for that row. Check the enrichment columns to see which rows have missing data. This is expected for contacts with limited LinkedIn profile data. The HubSpot integration disconnects after a few hundred rows. HubSpot uses OAuth. If the OAuth token expires mid-run, reconnect the HubSpot integration in Settings > Integrations and re-run the failed rows. Consider batching very large lists (1,000+ contacts) into multiple runs of 500 rows each.

Last updated on Apr 06, 2026

Send Enriched Data to Instantly for Outreach

Send Enriched Data to Instantly for Outreach This tutorial shows how to build a TexAu table that enriches a list of LinkedIn URLs and pushes the results directly to Instantly as leads in an active campaign. Before you begin - Connect these integrations in Settings > Integrations: - BetterEnrich (for email finding) - Instantly (for pushing leads to campaigns) - Have an active campaign set up in Instantly. You will need the Campaign ID. - Find your Instantly Campaign ID in Instantly under your campaign settings. What you will build A table that: 1. Takes LinkedIn URLs as input. 2. Finds a work email for each contact. 3. Pulls contact details (name, company, title). 4. Pushes each enriched contact as a lead into your Instantly campaign. Step 1: Create the table 1. Click New Table and name it Instantly Lead Push. 2. Import your LinkedIn URL list as a CSV. 3. Name the first column LinkedIn URL. Step 2: Enrich contact profile 1. Click Add Column and select Action Column. 2. Select Enrich Contact (B2B Enrichment). 3. Map LinkedIn URL to the LinkedIn Profile URL input. 4. Select these outputs: First Name, Last Name, Current Job Title, Current Company Name. 5. Click Save. Step 3: Find work email 1. Click Add Column and select Action Column. 2. Select Find Work Email by LinkedIn URL (BetterEnrich). 3. Map LinkedIn URL to the input. 4. Select Email as output. 5. Click Save. Step 4: Add an email validation check Push only verified, deliverable emails to Instantly to protect your sender domain. 1. Click Add Column and select Action Column. 2. Select Verify Email Address (BetterEnrich). 3. Map the Email output from the BetterEnrich column as input. 4. Select Verification Status as output. 5. Click Save. Step 5: Add the Instantly lead push 1. Click Add Column and select Action Column. 2. Search for and select Add Lead To Sequence (Instantly). 3. Configure the fields: - Email - map to your Work Email column - First Name - map to First Name - Last Name - map to Last Name - Company Name - map to Current Company Name - Campaign ID - enter your Instantly Campaign ID directly, or map to a column that contains it 4. Add a Run Condition: only run when Verification Status = "valid". 5. Click Save. Step 6: Run the table 1. Click Run All Rows. 2. After completion, review the output column for the Instantly action. 3. Check Instantly - your verified contacts should appear as leads in the campaign. Step 7: Confirm in Instantly 1. Log in to Instantly. 2. Open the campaign you specified. 3. Navigate to the Leads tab. 4. Verify the pushed contacts appear and the campaign status shows them as active. What about personalization variables? Instantly supports personalization variables in email sequences (e.g. {{company}}, {{icebreaker}}). You can push custom values for these variables from TexAu. To add a personalized icebreaker: 1. Add an AI Column to your TexAu table. 2. Use a prompt like: "Write a one-sentence personalized opener for {{first_name}}, who works as {{job_title}} at {{company_name}}. Keep it under 20 words." 3. Map the AI output to a custom variable column. 4. When configuring the Add Lead To Sequence (Instantly) action, add the icebreaker field and map it to your AI column output. Troubleshooting Leads appear in Instantly but the campaign is not sending. Check your Instantly campaign status. If the campaign is paused or the sending schedule has not started, leads will queue until the campaign activates. This is an Instantly setting, not a TexAu issue. Instantly action column shows errors for some rows. The most common cause is an invalid or empty email. The run condition on Verification Status = "valid" will skip rows where verification failed. Rows showing errors indicate the email field passed the condition but was still rejected by the Instantly API - usually because the email format is malformed. Check the raw email value for those rows. Duplicate leads in Instantly. Instantly will create a duplicate if you push the same email address twice. Before re-running the table, check whether contacts are already in Instantly. Add a check column using List Leads (Instantly) to verify existing leads before pushing. Campaign ID is incorrect. The Campaign ID in Instantly is a UUID. Find it by opening the campaign in Instantly and copying the ID from the URL or the campaign settings page. Make sure there are no spaces when pasting it into the TexAu action configuration.

Last updated on Apr 06, 2026

Set Up a Scheduled Enrichment Run

Set Up a Scheduled Enrichment Run This tutorial shows how to configure a TexAu table to run automatically on a recurring schedule. Use this to keep a contact list enriched continuously without manual effort. Before you begin - You need a table already set up with data source and action columns. If you do not have one yet, build it first. See Find and Enrich Leads from LinkedIn for a starting template. - Your plan must include Scheduled Jobs. Check Settings > Billing to confirm. How Scheduled Jobs work A Scheduled Job triggers your table on a repeating cadence. When the job fires: - TexAu re-runs the configured columns on the rows you specify. - You choose whether to re-run all rows, only new rows, or only rows added since the last run. - Results update in place for existing rows that are re-run. Step 1: Configure your table for scheduling Before setting a schedule, make sure your table is configured correctly: 1. Open your table. 2. Confirm all Action Columns are mapped to the right input columns. 3. Confirm the table runs successfully by clicking Run All Rows once manually. 4. Fix any errors before setting up the schedule. Step 2: Create a Scheduled Job 1. Click the Schedule icon in the table toolbar (looks like a clock). 2. Click Create Schedule. Step 3: Configure the schedule 1. Set the Frequency: - Hourly - for near-real-time feeds - Daily - for daily lead refreshes - Weekly - for weekly list maintenance - Monthly - for CRM hygiene runs 2. Set the Start Time - the time of day to run (in your account timezone). 3. Set the Start Date - the first date the schedule should fire. Step 4: Choose which rows to run 1. Under Rows to Run, select one option: - All rows - re-runs every row in the table each time - New rows only - runs only rows added since the last scheduled run - Empty rows only - runs only rows where the output columns are still empty For a list that grows over time (e.g. a CRM feed), select New rows only. This prevents re-spending credits on rows already enriched. For a periodic refresh of an existing list, select All rows. Step 5: Save the schedule 1. Review the schedule summary. 2. Click Save Schedule. 3. The schedule appears in the Scheduled Jobs panel with a Next Run time. Monitor a scheduled run 1. Click Scheduled Jobs in the left sidebar (or open the table and click the clock icon). 2. Find your job in the list. 3. Click the job to see: - Last Run - when it last executed - Next Run - when it will run again - Last Run Status - success, partial failure, or error - Rows processed - how many rows ran in the last execution Pause or cancel a schedule To pause temporarily: 1. Open the Scheduled Jobs panel. 2. Find your job. 3. Click Pause. The next run will not fire until you resume. To cancel permanently: 1. Open the Scheduled Jobs panel. 2. Find your job. 3. Click Delete Schedule. Deleting the schedule does not delete the table or its data. It only removes the automation. Troubleshooting The scheduled job fired but no rows were processed. Check the Rows to Run setting. If you selected New rows only and no new rows were added since the last run, the job ran with nothing to process. This is expected behavior, not an error. The scheduled job shows a partial failure status. Some rows may have errored while others completed. Open the table and filter by rows where the output column shows an error. Fix the data issue on those rows and re-run them manually. I set a schedule but the job never fires. Check that your plan supports Scheduled Jobs. Free plan accounts may not have access. Also verify the schedule timezone matches your expectation - TexAu uses the timezone set in Settings > Profile. Credits ran out mid-schedule and the job stopped. TexAu pauses the run when your credit balance reaches zero. Top up your credits in Settings > Billing and re-run the failed rows manually.

Last updated on Apr 06, 2026

Build a Multi-Provider Email Waterfall for Maximum Coverage

Build a Multi-Provider Email Waterfall for Maximum Coverage This tutorial shows how to configure a waterfall of email finding providers in TexAu. The setup uses BetterEnrich as the primary source with FullEnrich, Apollo, and Findymail as fallbacks. The goal is to maximize the percentage of contacts with a verified work email address. Before you begin - Connect these integrations in Settings > Integrations: - BetterEnrich (primary) - FullEnrich (fallback 1) - Apollo (fallback 2) - Findymail (fallback 3) - Confirm you have enough credits for the number of rows you plan to enrich. Email finding actions typically cost 2 credits per successful lookup. Check Settings > Billing for your balance. What a waterfall does A waterfall runs email finding actions in sequence for each contact. It tries the first source. If that source returns an email, it stops. If the first source returns no result, it tries the second source, then the third, and so on. Credits are only consumed for sources that return a result (pay-on-match). The benefit: significantly higher overall email coverage than any single provider alone. Set up the waterfall Step 1: Create the table 1. Click New Table and name it (for example, Email Waterfall). 2. Import your list of LinkedIn profile URLs. 3. Confirm the first column is named LinkedIn URL. Step 2: Add BetterEnrich as the primary source 1. Click Add Column and select Action Column. 2. Search for and select Find Work Email by LinkedIn URL (BetterEnrich). 3. Map the LinkedIn URL column as input. 4. Select Email as the output field. 5. Click Save. 6. Name the column Email - BetterEnrich. Step 3: Add FullEnrich as fallback 1 1. Click Add Column and select Action Column. 2. Search for and select Find Work Email by LinkedIn URL (FullEnrich). 3. Map the LinkedIn URL column as input. 4. Add a Run Condition: run this column only when Email - BetterEnrich is empty. 5. Select Email as the output field. 6. Click Save. 7. Name the column Email - FullEnrich. Step 4: Add Apollo as fallback 2 1. Click Add Column and select Action Column. 2. Search for and select Find Email using LinkedIn URL (Apollo). 3. Map the LinkedIn URL column as input. 4. Add a Run Condition: run only when both Email - BetterEnrich and Email - FullEnrich are empty. 5. Select Email as the output field. 6. Click Save. 7. Name the column Email - Apollo. Step 5: Add Findymail as fallback 3 1. Click Add Column and select Action Column. 2. Search for and select Find Email Using LinkedIn URL (Findymail). 3. Map the LinkedIn URL column as input. 4. Add a Run Condition: run only when Email - BetterEnrich, Email - FullEnrich, and Email - Apollo are all empty. 5. Select Email as the output field. 6. Click Save. 7. Name the column Email - Findymail. Step 6: Build the final email formula 1. Click Add Column and select Formula Column. 2. Enter the following formula: IF(email_betterenrich != "", email_betterenrich, IF(email_fullenrich != "", email_fullenrich, IF(email_apollo != "", email_apollo, email_findymail ) ) ) 3. Name this column Final Email. Use Copilot to build the waterfall (optional) You can ask Copilot to configure this waterfall automatically: 1. Open a new table with a LinkedIn URL column. 2. Click Copilot in the sidebar. 3. Type: Find work emails using BetterEnrich, FullEnrich, Apollo, and Findymail in a waterfall. Use LinkedIn URL as input. 4. Copilot configures the columns and run conditions. 5. Review the setup and adjust if needed. Run the table 1. Click Run All Rows. 2. Columns with run conditions execute only where needed. The first provider runs for all rows. Subsequent providers run only for rows where previous providers returned no result. 3. After completion, filter by Final Email is not empty to see your total coverage. Expected coverage | Configuration | Typical email coverage | |---|---| | BetterEnrich only | 40 to 60% | | BetterEnrich + FullEnrich | 55 to 70% | | + Apollo | 65 to 80% | | + Findymail | 70 to 85% | Coverage varies by target industry, geography, and job function. Troubleshooting Run conditions are not being respected. All columns run for all rows. Verify the run condition references the exact column name used in the table. If you renamed a column after creating the condition, the condition may reference the old name. Open the column settings and update the condition. The waterfall is too expensive for my budget. Use fewer fallback sources. For most use cases, BetterEnrich + one fallback provides 55 to 70% coverage at a lower cost. Add more sources only for priority lists where maximum coverage justifies the extra spend. Two providers return different emails for the same contact. This can happen when providers have observed different email addresses for the same person. To determine which is valid, add a verification column using Verify Email (BetterEnrich) or another email verification action. Keep the email that passes verification. Related articles - Understand How Credits Work - Understand Your TexAu Plan

Last updated on Apr 06, 2026

Verify and Clean an Email List

Verify and Clean an Email List This tutorial walks through running an existing email list through validation and deliverability checking. Use this before importing contacts into an email sequence or CRM to remove invalid addresses that would hurt your sender reputation. Before you begin - Start with a CSV of email addresses. The file needs at least one column with email addresses. - No external integrations are required. This workflow uses TexAu's built-in utility actions. What you will build A single table with these columns: | Column | Type | What it does | |--------|------|-------------| | Email | Data | Your starting email list | | Email Type | Action | Identify Email Type (TexAu Utility) | | Normalized Email | Formula | Cleans formatting issues | | Verification Status | Action | Verify Email Address (BetterEnrich) | | Catch-All Check | Action | Verify Catch-All Email (BetterEnrich) | | Final Decision | Formula | Clean / Risky / Invalid label | Step 1: Import your email list 1. Click New Table and name it Email Validation. 2. Click Import CSV. 3. Upload your file and map the email column to the first column. 4. Name the column Email. Step 2: Normalize email formatting Before validating, clean the email addresses. Common issues include extra spaces and mixed-case addresses. 1. Click Add Column and select Formula Column. 2. Enter: LOWER(TRIM(email_column)) 3. Name this column Normalized Email. Use Normalized Email as the input for all subsequent action columns. Step 3: Identify email type 1. Click Add Column. 2. Select Action Column. 3. Search for and select Identify Email Type (TexAu Utility). 4. Map the Normalized Email column to the email input. 5. Select Email Type as the output - this returns values like work, personal, role-based, disposable. 6. Click Save. This is a free TexAu utility action. It does not cost credits. Step 4: Verify email deliverability 1. Click Add Column. 2. Select Action Column. 3. Search for and select Verify Email Address (BetterEnrich). 4. Map Normalized Email as input. 5. Select Verification Status and Is Deliverable as outputs. 6. Click Save. This action costs 1 credit per row. Verification Status returns values like valid, invalid, catch_all, unknown. Step 5: Check catch-all domains Catch-all domains accept any email sent to them, making it impossible to verify individual addresses. Add this check to flag those addresses separately. 1. Click Add Column. 2. Select Action Column. 3. Search for and select Verify Catch-All Email (BetterEnrich). 4. Map Normalized Email as input. 5. Select Is Catch All as the output - returns true/false. 6. Click Save. This action costs 1 credit per row. Step 6: Build the Final Decision column 1. Click Add Column and select Formula Column. 2. Enter this formula: IF(verification_status = "invalid", "Remove", IF(is_catch_all = "true", "Risky", IF(email_type = "disposable", "Remove", IF(email_type = "role-based", "Risky", "Clean" ) ) ) ) 3. Name this column Final Decision. Step 7: Run the table 1. Click Run All Rows. 2. Wait for all columns to complete. Step 8: Filter and export 1. Filter the table to show only rows where Final Decision = "Clean". 2. Click Export to download as CSV. 3. Import the clean list into your email tool. For the "Risky" rows, you can run a separate outreach campaign with adjusted messaging and monitor bounce rates closely. Expected results For a typical purchased or cold contact list of 1,000 emails: - Clean: 40-60% - Risky (catch-all domains): 15-25% - Remove (invalid or disposable): 20-35% Deliverability rates improve significantly when you only send to "Clean" addresses. Troubleshooting Verification Status shows "unknown" for many emails. "Unknown" means the verifier could not confirm the address one way or another. This commonly happens for strict corporate mail servers that do not respond to verification checks. Treat "unknown" as risky - do not send at full volume. Test with a small batch first. Most addresses on a domain return "catch_all". The company's mail server accepts all addresses on their domain. You cannot verify individual addresses on that domain. Use a different channel or verify with a real send to a small test group. The normalized email column is showing the same issues as the raw email column. Check your formula. Make sure you are applying LOWER(TRIM(...)) to the column name that contains the raw email, not to a static text value.

Last updated on Apr 06, 2026