VendorStacks
← All posts
Engineering7 min read

Vendor enrichment in Zapier (and Make)

Stax
VendorStacks research desk

Zapier charges per task. That single fact should shape how you build a vendor-enrichment Zap, because the naive version — trigger, enrich, write — spends tasks on rows that were never going to be useful. Half of a typical inbound form's submissions are free-mail addresses with no company domain behind them. Enriching those costs you tasks and returns nothing.

So the shape below puts a filter before the enrichment step, and uses the endpoint that can't make the Zap wait.

The Zap

1. Trigger            — new form submission / new CRM record
2. Formatter          — extract domain from email, lowercase
3. Filter by Zapier   — only continue if domain is not free-mail
4. Webhooks by Zapier — Custom Request → GET /v1/company/{{domain}}
5. Filter by Zapier   — only continue if found is true   (optional)
6. Action             — update CRM / append to Sheet / post to Slack

Step 2–3 — extract, then filter

A Formatter step with the Text → Split action on @, taking the second segment, gets you the domain from an email address. Lowercase it in the same step.

Then the filter, which is the step that pays for itself. Configure it to continue only if the domain does not contain gmail.com, outlook.com, hotmail.com, yahoo.com, icloud.com, proton.me, aol.com. Add whatever else is common in your inbound. Every submission stopped here is a task you didn't spend and a credit you didn't use.

If you have other cheap disqualifiers — a competitor's own domain, existing customers, a country you don't sell into — put them in this filter too. Enrichment should be the last thing that happens to a lead, not the first.

Step 4 — the Webhooks custom request

Use the Webhooks by Zapier action, Custom Request:

  • Method: GET
  • URL: https://api.vendorstacks.com/v1/company/{{domain}}
  • Headers: Authorization = Bearer vr_live_…

Note the endpoint. There are two ways to look up a domain:

  • /v1/check?url=DOMAIN — answers from the index in under a second if the domain is known, and triggers a live scan of the company's public web presence if it isn't. That scan takes 15–90 seconds.
  • /v1/company/DOMAIN — reads the index only. Never scans. Guaranteed fast, same 1-credit price, and returns nothing if the domain isn't indexed yet.

In Zapier, use /v1/company. A step that can block for ninety seconds is a step that will eventually fail inside a Zap, and debugging an intermittently-timing-out webhook action is nobody's idea of a good afternoon. If you need coverage on domains that aren't indexed yet, run those through a separate batch job — an n8n workflow with a 120-second timeout is the right home for live scans.

Test the request outside Zapier first so you know the shape you're mapping:

curl "https://api.vendorstacks.com/v1/company/notify-hq.com" \
  -H "Authorization: Bearer $VENDORSTACKS_KEY"

{
  "domain": "notify-hq.com",
  "found": true,
  "vendor_stack": {
    "sms_messaging": ["twilio"],
    "payments": ["stripe"],
    "support_cx": ["zendesk"]
  },
  "subprocessor_urls": ["https://notify-hq.com/legal/subprocessors"],
  "vendor_confidence": "high",
  "scanned_at": "2026-06-28T09:12:44Z",
  "credits_used": 1
}

Step 5–6 — branch on found, then write

Zapier exposes the parsed JSON as fields you can reference in later steps. The ones worth carrying forward: the vendor lists for the categories you care about, subprocessor_urls (the company's own page where those vendors are named), vendor_confidence, and scanned_at.

A second filter on found being true is optional. If your CRM action is cheap and you want a record of every attempt, skip it and write "unknown" for the misses. If tasks are tight, filter. Either way, be precise about what a miss means: found: false is "we located no public evidence for this domain", not "this company uses no vendors". Never write it into the CRM as a negative signal — an unknown that looks like a disqualification will cost you more pipeline than the enrichment ever earned.

Misses are also free. Pricing is 1 credit per lookup, billed on successful results only — a found: false costs nothing.

The same thing in Make

Make.com works identically: an HTTP module making a GET request to the same URL with an Authorization: Bearer header, with the module set to parse the JSON response so downstream modules can reference fields directly. Put a Filter between the trigger and the HTTP module for the free-mail check, and a Router after it if you want separate paths for hits and misses. Make prices by operation rather than by task, but the same logic applies — every operation you don't spend on a junk domain is one you keep.

Cost, concretely

Say 1,200 inbound submissions a month. Free-mail filtering removes roughly half in most B2B funnels, leaving ~600 real domains. Of those, the ones with no public vendor evidence cost zero, so you're paying for maybe 400–500 successful lookups: under 500 credits, about $4.50 at the $10/1,100-credit pack. The Zapier tasks are the more expensive half of that equation, which is exactly why the filter goes before the webhook.

What you get for it: every real inbound lead arrives with a structured vendor stack, a citation URL, and enough signal to route it. If you want the scoring logic to go with it, the GTM plays post lists twelve ways to use the columns once they exist, and the API reference has every field.

Create a key and you start with 25 free credits — enough to build the Zap, test it against real submissions, and see the evidence quotes for yourself before spending a dollar.

About the author

Stax is the pangolin who fronts the VendorStacks research desk — a fitting mascot for a company that reads layered stacks for a living. Posts under this byline are written by the VendorStacks team.

VendorStacks is the subprocessor disclosure data API — structured vendor stacks with quoted evidence, 25 free credits to start.

Get an API key