Skip to content

ENRICHLOOPSINTEGRATIONS CRM

HubSpot meets EnrichLoops.

Enrich HubSpot companies from a domain using a Loop. Your webhook handler receives the completed profile and writes firmographics back to HubSpot company properties.

01 / A RECORD COMES INHubSpot

Your HubSpot workflow, backend, or automation tool sends the company domain to a Loop when a company is created or its domain changes.

EnrichLoopsEnrich the company. Send the profile back.
02 / THE PROFILE ARRIVESBack in HubSpot

Your HTTPS handler receives the signed EnrichLoops webhook and updates the mapped HubSpot company properties through the CRM API.

Two workflows.
Every time.

This integration uses two HTTP workflows around a Loop: one outbound call with the domain, and one inbound webhook that receives the enriched company profile.

  1. 01 / CALL THE LOOP

    Send HubSpot events to EnrichLoops.

    Your HubSpot workflow, backend, or automation tool sends the company domain to a Loop when a company is created or its domain changes.

  2. 02 / ACCEPT THE WEBHOOK

    Write the results back to HubSpot.

    Your HTTPS handler receives the signed EnrichLoops webhook and updates the mapped HubSpot company properties through the CRM API.

Prepare the HubSpot record and webhook receiver

This is a custom workflow using the EnrichLoops API and your own writeback handler. Start with a company record that has a website domain. If you start from a contact, resolve the associated company before updating company properties. Keep the HubSpot company ID alongside the domain so the result goes back to the correct record.

Create an HTTPS endpoint to receive the enrichment result and configure it as the destination of a Loop in the EnrichLoops dashboard. Keep your API key and Loop signing secret in your server environment. Your writeback handler also needs an authorized HubSpot connection that can read and update company properties.

If your HubSpot subscription supports the workflow webhook action, use it to start the request. Otherwise, your backend or automation tool can call the Loop when a company is created or its domain changes. Check HubSpot’s workflow webhook requirements before choosing the trigger.

Send the domain and save the queued task

Normalize the company domain and skip personal email providers if you derive it from a contact email. Call your existing Loop with the domain; replace the example Loop ID with the one from your dashboard.

Run your company enrichment Loop
curl -X POST "https://api.enrichloops.com/v1/loops/13d3c366-db0f-45c1-870d-7493e7d99c37/run" \
  -H "Authorization: Bearer $ENRICHLOOPS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"stripe.com"}'

The response confirms that a task is queued. It does not contain the completed company fields. Store the returned task ID with the HubSpot company ID in your backend so the inbound webhook can look up the right destination. The job can finish independently of the workflow that submitted it.

Map the completed profile to company properties

Verify the webhook signature against the raw request body using your Loop secret. Then inspect the event and task status before processing the company data. The payload below is abbreviated; consult the webhook documentation for the full contract and verification steps.

Completed company webhook
{
  "event": "task.succeeded",
  "task": {
    "id": "...",
    "object_type": "company",
    "status": "succeeded",
    "target": "stripe.com"
  },
  "data": {
    "name": "Stripe",
    "domain": "stripe.com",
    "...": "..."
  },
  "error": null
}

Use a deliberate field map. For example, write the company name to the name property, employee count to a numeric property, and the employee range to a text property. Use a custom text field for primary industry unless you explicitly map values to HubSpot’s industry options. Add dedicated properties for updated_at and last_enriched_at when you want to inspect freshness in the CRM.

Update the existing company by its record ID with PATCH /crm/v3/objects/companies/{companyId} and a properties object. Confirm property internal names and accepted values with the HubSpot companies API documentation.

Protect edits and test the complete round trip

Read the existing properties before writeback and decide which fields can be overwritten. A fill-empty policy is a useful starting point. Preserve useful CRM values when the enrichment result omits a field. Record the delivery ID so a repeated webhook does not repeat the update, and avoid re-enrolling a company solely because an enriched field changed.

Test one company, an incomplete profile, a failed lookup, and a repeated delivery. Confirm that each successful task updates the intended record and that manually entered values survive. Review your logs and credit use before enabling the workflow for all companies or running a backfill. Company lookups cost one credit on success; repeats within the 14-day freshness window cost zero credits, and failed lookups are not charged.

This flow enriches the company. For professional details about existing contacts, use a separate people enrichment lookup. For managed CRM sync, see the native Close and Pipedrive integrations.

Practical tips.

  • 01Store the EnrichLoops task id on the HubSpot record so you can reconcile retries.
  • 02Skip freemail domains (gmail.com, yahoo.com) before calling the Loop to save credits.
  • 03Map only the firmographic properties your sales team actually uses.

Need the webhook contract?

Read the companies webhook payload and signature verification docs before you wire writeback.

Open the Loops docs

More integrations.

Customer.ioPipedriveClose
See every guide

Make a little data
go a long way.

Get your API key and put enrichment to work. Start with 100 free credits a month. No card. No sales call.

Get your free API key