GTM Automation

How to Automatically Enrich and Score Leads When They Fill Out a Form

Oct 25, 2026

The short answer

The moment a lead submits a form, a webhook fires to an enrichment tool that appends firmographic, technographic, and contact data to the raw submission. A scoring function then evaluates that enriched record against your ICP criteria and writes a numeric score back to your CRM before any human touches the lead. The whole sequence runs in under 60 seconds and requires no manual research.

Key takeaways

  • A form submission should trigger an enrichment call immediately — waiting until a rep manually researches the lead wastes the window when intent is highest.
  • Enrichment only adds value if the fields you pull map directly to your scoring criteria; define the score first, then decide what data to enrich.
  • A lead score is only as reliable as the data underneath it — enriching from a single provider and treating the result as ground truth leads to bad routing decisions.
  • Routing logic (to SDR, to sequence, to nurture, or to disqualify) should be automated as part of the same workflow, not handled manually after scoring.
  • Any workflow that writes to your CRM needs deduplication logic; a form fill from an existing contact should update the record, not create a duplicate.
  • The enrichment-scoring workflow is a living system — revisit score weights whenever your closed-won data shifts.

How to Automatically Enrich and Score a Lead the Moment They Fill Out a Form

When a lead fills out your form, you have two things: a name, an email, maybe a company name — and a narrow window of high intent. Most teams waste that window. The form submission goes into a CRM queue, a rep manually Googles the company, checks LinkedIn, and decides whether to follow up. By then, the lead has moved on.

The fix is a workflow that fires the moment the form is submitted, enriches the record automatically, scores it against your ICP, and routes it — all before a human ever opens a notification. Orange Slice is built around exactly this trigger-enrich-score-route pattern, but the steps below apply regardless of what tooling you use.

Here's exactly how to build it.


Step 1: Define Your Score Before You Touch Any Tools

Most teams build this backwards. They set up enrichment first and figure out scoring later. That leads to enriching data fields that never influence a decision.

Start with your scoring model. Write down the five or six signals that most reliably predict a good fit. Common ones:

  • Company size (employee count or revenue band)
  • Industry or vertical
  • Tech stack — are they already running tools yours integrates with or competes against?
  • Funding stage — seed-stage companies behave differently from Series B+
  • Job title / seniority of the person who filled out the form
  • Geography — if you have territory rules or compliance constraints

Assign a point value to each. A simple model might give 20 points for being in the right industry, 20 for the right company size, 20 for a relevant tech stack signal, 20 for the right seniority, and 20 for being in your target geography. A perfect-fit lead scores 100. Define your routing tiers: 80–100 goes to immediate SDR outreach, 50–79 goes to an automated nurture sequence, below 50 gets disqualified.

The exact numbers matter less than having them written down before you build anything. Your workflow will implement these thresholds as logic — and logic needs numbers.


Step 2: How Do You Set Up the Webhook Trigger?

Every major form tool — HubSpot Forms, Typeform, Webflow, Gravity Forms, Tally — can fire a webhook on submission. That webhook carries the raw form data as a JSON payload.

Configure your form to send a POST request to your automation layer the instant a submission happens. The payload should include at minimum:

  • First name, last name
  • Work email address
  • Company name (if you collect it)
  • Any other fields you collect (phone, job title, use case)

If you're not collecting company name on the form, the work email domain is enough — your enrichment step will resolve the company from the domain.

Do not rely on a polling integration (where your automation checks for new submissions every 5 or 15 minutes). That delay kills the real-time advantage. Use the webhook.


Step 3: What Should You Enrich in Real Time?

With the raw submission in hand, your workflow calls an enrichment source to fill in the fields your scoring model needs.

What you're looking for from enrichment:

FieldWhy it matters for scoring
Employee countDetermines if company is in your size band
Industry / verticalDirect ICP match signal
Estimated revenueProxy for budget
Tech stackIntegration fit or competitive signal
Funding stage & recencyBuying propensity signal
Job title normalizationConfirms seniority and department
LinkedIn profile URLEnables downstream personalization
Verified work emailConfirms deliverability before sequencing

A few practical notes:

Use the work email domain as your primary company lookup key. Company names have too many variations ("Acme Inc.", "Acme", "Acme Corporation") to match reliably. The domain is deterministic.

Enrich from a provider that has coverage for your ICP. If you sell to SMBs, make sure your enrichment source has good SMB coverage — many data providers skew toward enterprise. If tech stack is a scoring signal, you need a provider that actually returns tech stack data, not just firmographics.

Handle enrichment failures gracefully. Not every company will have a full data profile. Build a fallback: if enrichment returns no company size, default to "unknown" and score that field as zero rather than letting the workflow break.

Orange Slice's data enrichment agent handles this kind of real-time lookup — pulling firmographics, tech stack, funding signals, and verified contact data from a work email or domain. It's worth knowing it's designed for list-based and workflow-based enrichment, not as a standalone form-webhook integration out of the box. You'd wire it into your automation layer via the workflow builder.


Step 4: Run the Scoring Logic

Once enrichment returns, your workflow has a full record. Now apply the scoring model you defined in Step 1.

The scoring logic is a conditional evaluation. In a no-code tool like Make or Zapier, this is a series of filters and math operations. In a more flexible environment, it's a function — and TypeScript is a clean choice for expressing weighted scoring rules precisely.

A simple scoring function looks like this in plain language:

score = 0
if company.employees is between 50 and 500: score += 20
if company.industry is in ["SaaS", "Fintech", "DevTools"]: score += 20
if company.techStack includes "Salesforce": score += 20
if contact.seniorityLevel is "Director" or above: score += 20
if company.country is "US": score += 20

The output is a number between 0 and 100. That number, plus the enriched fields, gets written to your CRM.

For teams that want to build more sophisticated scoring logic without a full marketing automation platform, Orange Slice's TypeScript columns let you express custom scoring rules directly in the spreadsheet layer — useful when you're scoring enriched records in bulk or want to iterate on weights quickly.


Step 5: How Should You Route Leads Based on Score?

Scoring is only useful if it drives a different action at each tier. Hard-code the routing logic into the same workflow:

Score 80–100 (Strong ICP match) → Create or update CRM record with enriched data and score → Assign to the appropriate SDR based on territory or round-robin → Trigger an immediate task or Slack alert to the assigned rep → Optionally, enroll in a high-touch sequence

Score 50–79 (Partial match) → Create or update CRM record → Enroll in an automated nurture sequence → Flag for SDR review if score crosses 80 after a behavioral trigger (e.g., opens three emails, visits pricing page)

Score below 50 (Poor fit) → Create CRM record marked as disqualified with reason → No sequence enrollment → Optionally, send a self-serve resource email if the product has a free tier

The routing step is where the workflow pays for itself. Without it, every lead — regardless of fit — hits the same queue and competes for rep attention.


Step 6: Write to CRM Without Creating Duplicates

Before your workflow creates a new CRM record, it must check whether one already exists.

Query your CRM by email address. If a record exists, update it with the new enriched fields and score. If the score has increased (because the person has a new title or their company has grown), overwrite the old score. If no record exists, create one.

This upsert pattern is non-negotiable. Form fills from existing contacts — someone who downloaded a whitepaper six months ago and is now requesting a demo — should update the existing record, not create a second one. Duplicate records corrupt your pipeline reporting and lead to two reps contacting the same person.

Most CRM APIs (HubSpot, Salesforce) support upsert natively. If you're using Orange Slice's CRM agent, it handles deduplication logic as part of the sync step.


How Does the Full Workflow Fit Together?

Here's the complete sequence as a linear flow:

  1. Lead submits form → webhook fires immediately
  2. Automation layer receives payload → extracts email and company domain
  3. Deduplication check → query CRM for existing record by email
  4. Enrichment call → fetch firmographics, tech stack, seniority, funding
  5. Scoring function → evaluate enriched fields against ICP model, produce score
  6. Routing logic → determine action tier based on score
  7. CRM write → upsert record with enriched fields, score, and routing outcome
  8. Downstream action → SDR task, sequence enrollment, or disqualification

The entire chain from step 1 to step 8 should complete in under two minutes. If any step takes longer — usually enrichment — add async handling so the CRM write and routing happen as soon as enrichment returns, without blocking other form submissions.

You can see how this kind of multi-step GTM workflow is structured in the Orange Slice workflow builder, which is designed for exactly this type of trigger-enrich-score-route sequence.


What Happens When Enrichment Returns Incomplete Data?

Enrichment coverage is never 100%. Smaller companies, new domains, and non-English markets often return sparse results. Build these fallbacks:

  • Missing company size: Score the size dimension as zero. Don't block the workflow.
  • Missing tech stack: If tech stack is a high-weight signal, flag the record for manual SDR research rather than auto-routing to disqualified.
  • Unverified email: Do not enroll in an email sequence. Route to a task for manual verification or use a secondary email verification call before sequencing. Google's bulk sender guidelines state that a bounce rate above 1% warrants attention and above 2% triggers enforcement action — so verify before any sequence enrollment (Google Postmaster Tools Help).
  • No LinkedIn profile found: Proceed with other enriched fields. LinkedIn coverage gaps are common for founders and executives at small companies.

A partially enriched lead that scores 60 on available data is still actionable. A workflow that breaks on missing fields is not.


How Do You Keep the Scoring Model Accurate Over Time?

Your scoring weights are a hypothesis. Test them against reality.

Every quarter, pull your closed-won deals from the past 90 days and check what score they received when they first submitted a form. If your best customers are consistently scoring 60 when your model says 80 is the threshold for immediate outreach, your weights are wrong.

Adjust the weights. Rerun the scoring logic against your existing pipeline. Update the routing thresholds. This is a 30-minute exercise that directly improves pipeline quality.

The use cases section has concrete examples of how teams have tightened ICP fit by iterating on enrichment-based scoring — worth reviewing before you set your initial weights.


Build the workflow once, instrument it with logging so you can see where leads are routing, and revisit the score weights with your first closed-won review. That's the full loop.

Frequently asked questions

What data should I enrich from a form submission?

Enrich the fields your scoring model actually uses. At minimum: company size, industry, revenue range, and tech stack. If seniority matters to your ICP, pull job title and department. If geography is a qualifier, pull country and region. Don't enrich fields you'll never act on — every unused enrichment call wastes credits and adds latency.

How fast does real-time lead enrichment need to be?

Fast enough that the enriched score is in your CRM before a rep opens the notification. In practice, the full enrichment-and-score cycle should complete in under two minutes. If your enrichment provider takes longer, consider async enrichment with a flag that holds routing until the score is written.

What's the difference between enrichment and scoring?

Enrichment adds data you don't have — company size, tech stack, funding stage, verified email. Scoring evaluates that data against your ICP and produces a number or tier. You can't score reliably without enriching first, but enrichment without scoring just gives reps a richer record to manually assess, which defeats the automation goal.

Can I enrich and score leads without a marketing automation platform?

Yes. You need three things: a webhook from your form tool, an enrichment API or agent, and a way to write the result to your CRM. Tools like Zapier, Make, or a custom workflow platform can wire these together without Marketo or HubSpot workflows. The scoring logic can live in a TypeScript column or a simple conditional in your automation layer.

What score threshold should trigger immediate SDR outreach?

There's no universal threshold. Set it by working backwards from your closed-won data: what firmographic and technographic profile do your best customers share? Leads that match that profile on three or more dimensions should go to immediate outreach. Leads that match one or two go to a nurture sequence. Leads that match none get disqualified automatically.

How do I prevent duplicate CRM records when a form is submitted?

Before writing any enriched data, query your CRM by email address and company domain. If a match exists, update the existing record rather than creating a new one. Most CRM APIs support an upsert operation for this. Build this deduplication check into the workflow before the enrichment step, not after.