-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Add new Tomba email, domain and phone actions #18784
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
benemohamed
wants to merge
7
commits into
PipedreamHQ:master
Choose a base branch
from
benemohamed:tomba-components
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
6fd422f
Add Tomba API actions for email and domain management
benemohamed 211e181
Fix offset calculation in getLogs action
benemohamed a6f3786
Refactor run method to consolidate parameters for phoneFinder action
benemohamed 680ccae
Merge branch 'master' into tomba-components
GTFalcao ec0f6a3
Refactor action names for consistency and clarity across Tomba compon…
benemohamed d4895ba
chore: update pnpm-lock.yaml
benemohamed 9668326
Merge branch 'master' into tomba-components
benemohamed File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,11 +1,50 @@ | ||
| # Overview | ||
|
|
||
| The Tomba API is a potent tool for email discovery and domain search. With it, you can automate the process of finding and verifying email addresses linked to a domain, which could be pivotal for lead generation, outreach campaigns, or market research. By leveraging the Tomba API on Pipedream, you streamline these tasks into efficient workflows that can interact with numerous other apps and services, such as CRMs, marketing automation tools, or database managers. The synergy between Tomba and Pipedream allows for real-time processing and integration of email data within your existing business systems. | ||
| The Tomba API is a comprehensive email finder and verification service that enables you to discover, verify, and enrich email addresses and contact data. With Tomba, you can find email addresses from domains, names, LinkedIn profiles, or blog posts, verify email deliverability, and gather detailed company intelligence. Leverage Pipedream's capabilities to integrate Tomba with hundreds of other apps, creating powerful automated workflows for lead generation, email verification, contact enrichment, and competitive research. | ||
|
|
||
| # Example Use Cases | ||
|
|
||
| - **Lead Generation Automation**: Trigger a workflow when a new company is added to your CRM. Use Tomba to find email addresses associated with the company's domain. Enrich lead data in the CRM and follow up with an automated outreach sequence using an email marketing tool like Mailchimp. | ||
| - **Lead Generation Automation**: Trigger a workflow when a new company is added to your CRM. Use Tomba to find email addresses associated with the company's domain, enrich the lead data, and automatically add qualified contacts to your outreach sequences in tools like Mailchimp or HubSpot. | ||
|
|
||
| - **Domain Research and Monitoring**: Schedule a regular Pipedream workflow that checks a list of domains and uses Tomba to gather any new email addresses. Store the findings in a Google Sheets document and send a Slack notification to the sales team with any updates or new leads. | ||
| - **Email List Verification**: Before launching an email campaign, run your contact list through a Pipedream workflow that uses Tomba's email verifier to validate each address. Automatically remove invalid emails and update your email platform like SendGrid, ensuring higher deliverability rates and protecting your sender reputation. | ||
|
|
||
| - **Verification and Clean-up for Marketing Campaigns**: Before launching an email campaign, run your email list through a Pipedream workflow that uses Tomba to verify the validity of each address. Update the campaign list in your email platform, like Sendgrid, to omit invalid or nonexistent emails, ensuring higher deliverability and engagement rates. | ||
| - **Competitive Intelligence Gathering**: Set up a scheduled workflow that monitors competitor domains using Tomba's domain search and technology detection features. Store findings in Google Sheets and send Slack notifications to your team with insights about competitor email patterns, employee counts, and tech stacks. | ||
|
|
||
| # Getting Started | ||
|
|
||
| To start using Tomba with Pipedream: | ||
|
|
||
| 1. **Sign up for Tomba**: Create an account at [tomba.io](https://tomba.io) and obtain your API key and secret from the dashboard. | ||
|
|
||
| 2. **Connect to Pipedream**: In your Pipedream workflow, add a Tomba action and authenticate using your API credentials. | ||
|
|
||
| 3. **Choose your action**: Select from 20 available actions including Email Finder, Domain Search, Email Verifier, and Company Search. | ||
|
|
||
| 4. **Configure parameters**: Set up your search criteria such as domain names, email addresses, or LinkedIn URLs. | ||
|
|
||
| 5. **Test and deploy**: Run your workflow to verify the results, then deploy for automated execution. | ||
|
|
||
| # Troubleshooting | ||
|
|
||
| **Authentication Issues** | ||
|
|
||
| - Verify your API key and secret are correctly entered in the Pipedream connection settings | ||
| - Check that your Tomba account has sufficient credits and is not suspended | ||
| - Ensure your API keys haven't expired or been regenerated | ||
|
|
||
| **Rate Limiting** | ||
|
|
||
| - Tomba enforces API rate limits based on your subscription plan | ||
| - Implement delays between requests in high-volume workflows | ||
| - Monitor your usage with the "Get Usage" action to track quota consumption | ||
|
|
||
| **No Results Found** | ||
|
|
||
| - For Email Finder: Try different name variations or check if the domain uses a non-standard email format | ||
| - For Domain Search: Some domains may have limited public email exposure | ||
| - For LinkedIn Finder: Ensure the LinkedIn URL is publicly accessible and properly formatted | ||
|
|
||
| **Invalid Email Addresses** | ||
|
|
||
| - Use the Email Verifier action to validate emails before adding them to campaigns | ||
| - Some emails may exist but have strict spam filters that prevent verification |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| import app from "../../tomba.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "tomba-author-finder", | ||
| name: "Find Author", | ||
| description: | ||
| "Generate or retrieve the most likely email address from a blog post URL. [See the documentation](https://tomba.io/api)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| blogUrl: { | ||
| propDefinition: [ | ||
| app, | ||
| "blogUrl", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.findAuthor({ | ||
| $, | ||
| blogUrl: this.blogUrl, | ||
| }); | ||
|
|
||
| $.export( | ||
| "$summary", | ||
| `Successfully found author information for blog post: ${this.blogUrl}`, | ||
| ); | ||
| return response; | ||
| }, | ||
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,66 @@ | ||
| import app from "../../tomba.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "tomba-domain-search", | ||
| name: "Search Domain", | ||
| description: | ||
| "Get every email address found on the internet using a given domain name, with sources. [See the documentation](https://tomba.io/api)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| domain: { | ||
| propDefinition: [ | ||
| app, | ||
| "domain", | ||
| ], | ||
| }, | ||
| page: { | ||
| propDefinition: [ | ||
| app, | ||
| "page", | ||
| ], | ||
| }, | ||
| limitDomainSearch: { | ||
| propDefinition: [ | ||
| app, | ||
| "limitDomainSearch", | ||
| ], | ||
| }, | ||
| country: { | ||
| propDefinition: [ | ||
| app, | ||
| "country", | ||
| ], | ||
| }, | ||
| department: { | ||
| propDefinition: [ | ||
| app, | ||
| "department", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.searchDomain({ | ||
| $, | ||
| domain: this.domain, | ||
| page: this.page, | ||
| limit: this.limitDomainSearch, | ||
| country: this.country, | ||
| department: this.department, | ||
| }); | ||
|
|
||
| $.export( | ||
| "$summary", | ||
| `Successfully found ${ | ||
| response.data?.emails?.length || 0 | ||
| } email addresses for domain: ${this.domain}`, | ||
| ); | ||
| return response; | ||
| }, | ||
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| import app from "../../tomba.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "tomba-domain-status", | ||
| name: "Get Domain Status", | ||
| description: | ||
| "Find domain status if is webmail or disposable. [See the documentation](https://tomba.io/api)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| domain: { | ||
| propDefinition: [ | ||
| app, | ||
| "domain", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.getDomainStatus({ | ||
| $, | ||
| domain: this.domain, | ||
| }); | ||
|
|
||
| $.export( | ||
| "$summary", | ||
| `Successfully retrieved domain status for: ${this.domain}`, | ||
| ); | ||
| return response; | ||
| }, | ||
| }; |
37 changes: 37 additions & 0 deletions
37
components/tomba/actions/domain-suggestions/domain-suggestions.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,37 @@ | ||||||
| import app from "../../tomba.app.mjs"; | ||||||
|
|
||||||
| export default { | ||||||
| key: "tomba-domain-suggestions", | ||||||
| name: "Suggest Domains", | ||||||
| description: | ||||||
| "Retrieve a list of suggested domains similar to or related to your search query. This helps discover competitors, similar companies, and related businesses for market research and prospecting. [See the documentation](https://tomba.io/api)", | ||||||
| version: "0.0.1", | ||||||
| type: "action", | ||||||
| annotations: { | ||||||
| destructiveHint: false, | ||||||
| openWorldHint: true, | ||||||
| readOnlyHint: true, | ||||||
| }, | ||||||
| props: { | ||||||
| app, | ||||||
| query: { | ||||||
| propDefinition: [ | ||||||
| app, | ||||||
| "query", | ||||||
| ], | ||||||
| description: "The domain or company name to find suggestions for", | ||||||
| }, | ||||||
| }, | ||||||
| async run({ $ }) { | ||||||
| const response = await this.app.suggestDomains({ | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
| $, | ||||||
| query: this.query, | ||||||
| }); | ||||||
|
|
||||||
| $.export( | ||||||
| "$summary", | ||||||
| `Successfully found domain suggestions for: ${this.query}`, | ||||||
| ); | ||||||
| return response; | ||||||
| }, | ||||||
| }; | ||||||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| import app from "../../tomba.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "tomba-email-count", | ||
| name: "Get Email Count", | ||
| description: | ||
| "Find total email addresses we have for one domain. [See the documentation](https://tomba.io/api)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| domain: { | ||
| propDefinition: [ | ||
| app, | ||
| "domain", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.getEmailCount({ | ||
| $, | ||
| domain: this.domain, | ||
| }); | ||
|
|
||
| $.export( | ||
| "$summary", | ||
| `Successfully retrieved email count for domain: ${this.domain}`, | ||
| ); | ||
| return response; | ||
| }, | ||
| }; |
33 changes: 33 additions & 0 deletions
33
components/tomba/actions/email-enrichment/email-enrichment.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| import app from "../../tomba.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "tomba-email-enrichment", | ||
| name: "Enrich Email", | ||
| description: | ||
| "Look up person and company data based on an email. [See the documentation](https://tomba.io/api)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| email: { | ||
| propDefinition: [ | ||
| app, | ||
| "email", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.enrichEmail({ | ||
| $, | ||
| email: this.email, | ||
| }); | ||
|
|
||
| $.export("$summary", `Successfully enriched data for email: ${this.email}`); | ||
| return response; | ||
| }, | ||
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| import app from "../../tomba.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "tomba-email-finder", | ||
| name: "Find Email", | ||
| description: | ||
| "Generate or retrieve the most likely email address from a domain name, a first name and a last name. [See the documentation](https://tomba.io/api)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| domain: { | ||
| propDefinition: [ | ||
| app, | ||
| "domain", | ||
| ], | ||
| }, | ||
| firstName: { | ||
| propDefinition: [ | ||
| app, | ||
| "firstName", | ||
| ], | ||
| }, | ||
| lastName: { | ||
| propDefinition: [ | ||
| app, | ||
| "lastName", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.findEmail({ | ||
| $, | ||
| domain: this.domain, | ||
| firstName: this.firstName, | ||
| lastName: this.lastName, | ||
| }); | ||
|
|
||
| $.export( | ||
| "$summary", | ||
| `Successfully found email for ${this.firstName} ${this.lastName} at ${this.domain}`, | ||
| ); | ||
| return response; | ||
| }, | ||
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| import app from "../../tomba.app.mjs"; | ||
|
|
||
| export default { | ||
| key: "tomba-email-format", | ||
| name: "Get Email Format", | ||
| description: | ||
| "Retrieve the email format patterns used by a specific domain. [See the documentation](https://tomba.io/api)", | ||
| version: "0.0.1", | ||
| type: "action", | ||
| annotations: { | ||
| destructiveHint: false, | ||
| openWorldHint: true, | ||
| readOnlyHint: true, | ||
| }, | ||
| props: { | ||
| app, | ||
| domain: { | ||
| propDefinition: [ | ||
| app, | ||
| "domain", | ||
| ], | ||
| }, | ||
| }, | ||
| async run({ $ }) { | ||
| const response = await this.app.getEmailFormat({ | ||
| $, | ||
| domain: this.domain, | ||
| }); | ||
|
|
||
| $.export( | ||
| "$summary", | ||
| `Successfully retrieved email format patterns for domain: ${this.domain}`, | ||
| ); | ||
| return response; | ||
| }, | ||
| }; |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.