skills/sales-enrichso/SKILL.md
Enrich.so platform help — real-time B2B datan enrichment API with 50+ data points per lookup and success-based billing. Key capabilities: reverse email lookup, LinkedIn profile enrichment, email/phone finders, company data, similar company search, employee search, IP to company, and bulk enrichment. Use when you have an email but need the LinkedIn profile behind it, a LinkedIn URL but need contact details, you need to find someone's email from just name and company, company data is missing for your leads, or the Enrich.so API isn't returning expected results. Do NOT use for cross-platform enrichment strategy (use /sales-enrich), email deliverability strategy (use /sales-deliverability), or prospect list strategy (use /sales-prospect-list).
npx skillsauth add sales-skills/sales sales-enrichsoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Help the user with Enrich.so platform questions — from Reverse Email Lookup and LinkedIn Profile Enrichment through Email/Phone Finders, Company Data, Similar Company Search, Employee Search, IP to Company, Job Listings, Bulk Enrichment, and Email Validation. Enrich.so is a real-time B2B datan enrichment API platform providing 50+ data points per lookup with a success-based credit model (only pay for verified results).
If references/learnings.md exists, read it first for accumulated knowledge.
Ask the user:
What area of Enrich.so do you need help with?
What's your role?
What are you trying to accomplish? (describe your specific goal or question)
If the user's request already provides most of this context, skip directly to the relevant step. Lead with your best-effort answer using reasonable assumptions (stated explicitly), then ask only the most critical 1-2 clarifying questions at the end — don't gate your response behind gathering complete context.
Note: If the user needs a specialized skill, route them there with a brief explanation of why that skill is a better fit.
If the request maps to a specialized skill, route:
/sales-enrich/sales-deliverability/sales-prospect-list/sales-integration/sales-apollo/sales-zoominfo/sales-clearbitOtherwise, answer directly from platform knowledge using the reference below.
Read references/platform-guide.md for detailed module documentation, pricing, integrations, and data model.
You no longer need the platform guide details — focus on the user's specific situation.
Based on the user's specific question:
Enriching a list of email contacts with LinkedIn data:
email columnPOST /v1/api/bulk-enrichment with type person and upload your CSV (or pass a JSON array or CSV URL)webhookUrl in the request body to receive a callback when processing completes — avoids pollingGET /v1/api/bulk-enrichment-results?uid=<uid> using the uid returned from the submit callFinding decision-maker emails at target accounts:
find-email to process in batchDe-anonymizing website visitors with IP to Company:
GET /v1/api/ip-to-company with each IP addressBuilding a lookalike company list:
POST /v1/api/similar-companies with each URL — optionally filter by location and employee size to match your ICPSetting up Enrich.so API integration:
Authorization: Bearer <your-token>GET https://api.enrich.so/v1/api/[email protected]webhookUrl in the bulk request bodyBest-effort from research — review these, especially items about plan-gated features and integration gotchas that may be outdated.
uid immediately, but results are not available in the response. You need to either poll GET /v1/api/bulk-enrichment-results?uid=<uid> until the job completes or include a webhookUrl in your request to get notified. Jobs with large datasets can take minutes to hours depending on size.https://www.linkedin.com/in/username format. Shortened URLs, Sales Navigator URLs, or URLs with query parameters may not resolve correctly. Strip tracking parameters before calling the API.references/learnings.md with today's date./sales-enrich — Cross-platform datan enrichment strategy (multi-tool enrichment workflows, waterfall enrichment)/sales-deliverability — Email deliverability and verification strategy (SPF/DKIM/DMARC, warmup, inbox placement)/sales-prospect-list — Prospect list building strategy and best practices/sales-integration — Connect Enrich.so to CRM, automation tools, or other platforms/sales-do — Not sure which skill to use? The router matches any sales objective to the right skill. Install: npx skills add sales-skills/sales --skill sales-doUser says: "I have 500 contacts in my CRM with just email addresses. I want to add LinkedIn profiles, job titles, and company info to each one." Skill does:
email columnPOST /v1/api/bulk-enrichment) with type person and the CSV upload — explains the async workflow and webhook callback optionGET /v1/api/bulk-enrichment-results?uid=<uid> once the job completesUser says: "I need to find the VP of Engineering's email at 20 target companies for an outbound campaign." Skill does:
User says: "We get 10K website visitors a month but don't know who they are. Can Enrich.so help us identify companies visiting our site?" Skill does:
Symptom: A bulk enrichment job submitted via POST /v1/api/bulk-enrichment returns a uid, but polling GET /v1/api/bulk-enrichment-results shows the job as still processing after an extended period, or results are missing rows.
Cause: Large bulk jobs take time to process — the async nature means results are not instant. Incomplete results can occur if the input file has formatting issues (malformed CSV, missing required columns, encoding problems) or if some rows contain invalid data that cannot be processed.
Solution: First, check that your input file is valid — CSV should be UTF-8 encoded with the correct column headers for the enrichment type (e.g., email for person enrichment, linkedin_url for LinkedIn enrichment). If the job is still processing, continue polling or wait for the webhook callback — large jobs (10K+ rows) can take 30 minutes to several hours. If results are missing rows, check the job status for error counts — some rows may have failed individually. Re-submit failed rows in a separate batch. If the job appears permanently stuck, contact Enrich.so support with the job uid.
Symptom: Calling the Reverse Email Lookup endpoint with a known valid business email returns no match (HTTP 404 or empty result), even though the person has a LinkedIn profile. Cause: Enrich.so's reverse email lookup depends on the email being associated with a LinkedIn profile or other indexed data sources. If the person uses a different email on LinkedIn, has a private profile, or the email-to-profile mapping has not been indexed, no match will be returned. Free email providers (Gmail, Yahoo) have lower match rates than business domains. Solution: Verify the email is spelled correctly and is the person's primary business email. If using a free provider email, try the person's work email instead — business domains have significantly higher match rates. As an alternative path, if you know the person's name and company, use the Email Finder endpoint to find their business email, then try the reverse lookup with that address. If you have their LinkedIn URL, use LinkedIn Profile Enrichment directly instead of the reverse lookup.
Symptom: API requests return HTTP 401 even though the API token appears correct in the dashboard.
Cause: Common causes include: the token has leading/trailing whitespace when copied, the Authorization header format is wrong (must be Bearer <token>, not Basic or just the token), the token was regenerated and the old one is being used, or the account has been suspended due to billing issues.
Solution: Copy the token fresh from the Enrich.so dashboard — watch for trailing spaces or newline characters. Verify the header format is exactly Authorization: Bearer <token> with a single space after "Bearer". Check that you are using the current active token (regenerating a token invalidates the previous one). Verify your account is in good standing — check for billing alerts or suspension notices in the dashboard. Test with a simple cURL command to isolate whether the issue is in your code or the token itself: curl -H "Authorization: Bearer <token>" "https://api.enrich.so/v1/api/[email protected]".
tools
Waitlister platform help — pre-launch waitlist platform with hosted landing pages, points-based viral referrals, built-in email broadcasts, REST API, and five HMAC-signed webhook events. Use when choosing Free (100 subscribers) vs Launch $15/mo (unlimited subs, referrals + broadcasts) vs Growth $49/mo (API, webhooks, Klaviyo/Mailchimp/Kit sync, fraud detection unlock here) vs Business $129/mo, building a webhook handler that verifies X-Webhook-Signature, webhooks auto-disabled after 10 consecutive failures, API signups bypassing referral fraud detection because client_ip/fingerprint weren't forwarded, granting bonus points or pulling top referrers via the API for reward fulfillment, broadcast send caps forcing an ESP handoff, automating without Zapier (Waitlister has none — webhooks/API only), or comparing Waitlister vs LaunchList/KickoffLabs/GetWaitlist/Prefinery. Do NOT use for list-growth strategy (use /sales-audience-growth) or LaunchList help (use /sales-launchlist).
development
LaunchList platform help — viral pre-launch waitlist platform with one-time lifetime pricing, gamified referrals (queue jumping, leaderboard, position inflation), embed widget + custom form POST endpoint, new_user/email_verify webhooks, Zapier, and spam protection. Use when choosing Free (100 submissions) vs Launch $29 (500) vs Grow $79 one-time (10K — webhooks, Zapier, team unlock here), wiring waitlist signups into Mailchimp/Kit/HubSpot or a CRM because LaunchList has no email broadcast system, needing programmatic access when there is no public REST API yet (form POST + webhook workaround), building a webhook handler with referred_by referral attribution, blocking disposable-email or bot signups on a viral waitlist, a custom signup form not submitting or not tracking referrals, or comparing LaunchList vs KickoffLabs/Viral Loops/Prefinery/GetWaitlist on one-time vs subscription pricing. Do NOT use for list-growth strategy (use /sales-audience-growth) or KickoffLabs help (use /sales-kickofflabs).
development
UpViral platform help — viral referral marketing and list-building platform (by Emarky) for viral sweepstakes, giveaway/reward campaigns, pre-launch waiting lists, and milestone referrals, with REST API (`app.upviral.com/api/v1/`, form-encoded `uvapikey` + `uvmethod`), Callback-URL webhooks, IP-based fraud detection, and 30+ ESP/CRM integrations. Use when campaigns aren't tracking referral points, deciding between Starter $79/mo (10K leads, NO API) vs Business $119/mo (API + webhooks) vs Premium $319/mo, the API erroring because you're on Starter where API/webhooks are gated, building a pipeline with `add_contact`/`get_leads`/`get_leads_points`, interpreting same-IP suspicious-referral flags, or picking UpViral over Viral Loops/Vyper/Gleam. Do NOT use for newsletter audience growth (use /sales-audience-growth), KickoffLabs help (use /sales-kickofflabs), merge-tag referrals (use /sales-referralkit), SparkLoop recommendations (use /sales-sparkloop), or multi-level Level 1/2/3 tracking (use /sales-referralhero).
tools
ReferralHero platform help — full-stack referral, affiliate, waitlist, contest, and NPS platform with REST API, webhooks, Zapier, native ESP connectors, multi-level referral tracking (Level 1/2/3), coupon groups, anti-fraud, and a 5,000 calls/hour limit. Use when referrals aren't tracking, deciding between Free (no API) vs PRO $199/mo (API + webhooks) vs PREMIUM $399/mo (ReCaptcha + SMS Verification), auth failing with `no_token` or `Bearer` vs `X-API-Key`, Level 2/3 counts off from calling `level_2_all_referrals` not `level_2_referrals`, bulk 429s from not chunking the 500-transaction `add_bulk_transactions` limit, coupon endpoints 404 without a coupon group, reward fulfillment (`promote` then `unlock_promoted_reward`) failing, or comparing to SparkLoop/ReferralKit/GrowSurf. Do NOT use for newsletter audience growth (use /sales-audience-growth), merge-tag referrals (use /sales-referralkit), SparkLoop recommendations (use /sales-sparkloop), or affiliate strategy across tools (use /sales-affiliate-program).