Forelight + Clay

Pull real-time infrastructure signals into any Clay table in under 5 minutes using the HTTP API enrichment block.

Before you start: you need a Forelight API key. Get your free key →
Step 1

Create a new Clay table

In Clay, create a new table or open an existing one. You can start with a list of company domains you want to monitor — one domain per row in a "Domain" column.

Step 2

Add an HTTP API enrichment column

Click + Add enrichmentHTTP API. Configure it as follows:

FieldValue
MethodGET
URLhttps://forelight.net/v1/signals
Header: AuthorizationBearer YOUR_API_KEY
Param: apex_domain{{Domain}} (your domain column)
Param: typenew_apex_domain
Param: limit10

This returns the 10 most recent signals for each company in your list.

Step 3

Map the response fields

The API returns a JSON object. Map these paths to Clay columns:

Clay column nameJSON path
Signal Typedata[0].signal_type
Scoredata[0].score
Domaindata[0].domain
Detected Atdata[0].detected_at
Company Namedata[0].company_name
Industrydata[0].company_industry
SaaS Vendordata[0].saas_vendor
Hosting Providerdata[0].hosting_provider
Total Signalstotal
Tip: Use data[0].score as a Clay filter column, or pass score_min=70 to filter at the database level before results are returned. Score ≥ 70 = high-conviction signal (geographic expansion, wildcard cert, SaaS adoption). Route high-score rows to immediate sequences; lower scores to nurture.
Step 4

Filter by signal type (optional)

Use the type query parameter to focus on a specific signal:

type valueScoreUse case
domain_velocity903+ new domains in 7 days — acquisition, rebrand, or major launch
geographic_expansion85Company registered a country-code domain — entering a new market
fresh_domain80Domain registered ≤30 days before first cert — brand new company launching infrastructure
wildcard_cert_issued70*.company.com — building out dynamic subdomain infrastructure
saas_adoption_detected65Company just adopted Shopify, HubSpot, Salesforce, Vercel, etc.
infrastructure_expansion505+ new subdomains in 24h — growth indicator
new_apex_domain40Company just registered a new top-level domain
new_subdomain20Company expanding infrastructure with a new subdomain
Step 5

Build a trigger: SaaS adoption play

One of the most powerful plays: trigger outreach when a company adopts a SaaS tool that's adjacent to yours.

Set up a Clay table with your target accounts. Add an HTTP API column with:

URL: https://forelight.net/v1/signals Params: apex_domain = {{Domain}} type = saas_adoption_detected saas_vendor = shopify ← lowercase: hubspot, salesforce, okta, vercel, etc. limit = 1

If data[0] is populated, this company just adopted that SaaS tool. Route them to your sequence.

Note: saas_vendor values are lowercase (e.g. shopify, hubspot, salesforce, okta, greenhouse, workday, zendesk). Check the API docs for the full list of detected vendors.

Templates

3 copy-paste workflow templates

Each template is a complete Clay table setup — API call, field mappings, and suggested enrichment steps. Duplicate the pattern for your use case.

Template 1 — New Shopify adopters this week

What it does: Finds companies that just launched a custom-domain Shopify store. Shopify agencies use this to reach new store owners within hours of launch — before anyone else calls.

API call:
URL: https://forelight.net/v1/signals Method: GET Header: Authorization: Bearer YOUR_API_KEY Params: type = saas_adoption_detected saas_vendor = shopify since = {{Rolling Date}} ← ISO timestamp, 7 days ago score_min = 65 limit = 100
Columns to map:
Clay columnJSON path
Domaindata[0].domain
Company Namedata[0].company_name
Detected Atdata[0].detected_at
Scoredata[0].score
Industrydata[0].company_industry
Next steps in Clay: Add Clay's "Find Company" enrichment on domain to get LinkedIn URL, employee count, and funding. Add "Find Decision Maker" to find the head of ecommerce or digital. Route score ≥ 70 rows to immediate email sequence (they adopted within 24h); score 65–69 to a slower nurture.
Template 2 — Geographic expansion alert

What it does: Finds companies that just registered a country-code TLD — acme.de, acme.fr, acme.com.au. This is a new-market-entry signal: they're either planning expansion or already there. Ideal for localization vendors, regional SIs, and market-entry consultants.

API call:
URL: https://forelight.net/v1/signals Method: GET Header: Authorization: Bearer YOUR_API_KEY Params: type = geographic_expansion since = {{Rolling Date}} ← ISO timestamp, 7 days ago limit = 100
Columns to map:
Clay columnJSON path
Domaindata[0].domain
Apex Domaindata[0].apex_domain
Company Namedata[0].company_name
Detected Atdata[0].detected_at
Scoredata[0].score
Tip: The domain field is the country-code domain (e.g. acme.de). The apex_domain is the parent company domain (e.g. acme.com). Use apex_domain to enrich the company; use domain to infer which country they're expanding into.

Next steps in Clay: Parse the TLD from domain to identify the target country. Use Clay formula: =RIGHT(domain, LEN(domain)-FIND(".",domain)). Add Clay "Find Company" on apex_domain. Route to localization/regional sequences by country.
Template 3 — Fresh company + SaaS adoption (highest-intent new companies)

What it does: Combines two signals — company is brand new (domain registered ≤30 days before cert) AND has already adopted a SaaS tool. These are the highest-intent leads: new companies that are actively buying software right now, at the exact moment vendor decisions are being made.

API call 1 — Pull fresh domains:
URL: https://forelight.net/v1/signals Params: type = fresh_domain since = {{Rolling Date}} ← 14 days ago to cast a wider net limit = 200
API call 2 — Cross-reference for SaaS adoption (add a second HTTP API column):
Use apex_domain from call 1 as the lookup key:
URL: https://forelight.net/v1/signals Params: apex_domain = {{Apex Domain}} ← from call 1 result type = saas_adoption_detected limit = 1
Filter rows where this column returns a result — these are companies with both signals.

Next steps in Clay: Add Clay "Find LinkedIn Company" + "Find Decision Maker" (founder/CTO/Head of Engineering for early-stage companies). The pitch angle: they're already buying software, they're making every vendor decision fresh — no incumbent to displace.

Full filter reference

All query parameters are optional and combinable:

ParameterDescription
apex_domainFilter to a specific company domain (e.g. acme.com)
domainExact subdomain match
typeSignal type (see above)
saas_vendorSaaS platform name (Shopify, HubSpot, Salesforce, Vercel, etc.)
industryCompany industry (e.g. retail, technology, finance)
hosting_providerAWS, Cloudflare, GCP, etc.
sinceISO 8601 timestamp — only signals after this time
score_minMinimum score (1–100) — filter in ClickHouse before results are returned. Use score_min=65 to drop low-signal noise.
limitNumber of results (default 100, max 1000)
cursorPagination cursor from previous response
Tip: Use since with a rolling Clay formula to only pull new signals each run. Add score_min=65 to drop low-signal noise at the database — only high-conviction signals reach your Clay table.
Recommended pattern

Watchlist + ?since= — the efficient way to poll

The most API-efficient Clay setup: poll for only new signals since your last run for only the accounts you care about. Two params make this work together.

Step 1 — Add your target accounts to a watchlist (once, via API):

POST https://forelight.net/v1/watchlists Authorization: Bearer YOUR_API_KEY Content-Type: application/json { "pattern_type": "apex_domain", "pattern": "acme.com" }

Once set, every signal query for your key automatically filters to watchlisted accounts — no apex_domain= param needed per row.

Step 2 — Poll with a rolling ?since= timestamp. In Clay, create a formula column that generates an ISO 8601 timestamp 24 hours in the past:

Clay formula (Date column → Text): =TEXT(NOW()-1, "yyyy-mm-dd") & "T00:00:00Z" Example output: 2026-06-27T00:00:00Z

Pass this as the since param in your HTTP API enrichment block:

FieldValue
URLhttps://forelight.net/v1/signals
Param: since{{Rolling Date}} (your formula column)
Param: score_min65
Param: limit5

This query costs a single API credit regardless of how many matching signals exist. Running it daily against 500 watchlisted accounts uses 500 credits — well within Starter quota. Combine with score_min=65 to eliminate low-signal noise at the database level before the response is returned.

Why this beats per-row domain lookups: a watchlist query returns only signals for your accounts — no filtering needed in Clay. The ?since= window means you only see new signals each run, so you can trigger outreach on first detection rather than re-processing the same signals every day.
Power tip

Batch lookup — enrich 50 domains in one call

On Starter and Pro tiers, use POST /v1/signals/batch instead of per-row GET calls. This is dramatically faster for large Clay tables and uses the same quota (1 credit per domain).

POST https://forelight.net/v1/signals/batch Authorization: Bearer YOUR_API_KEY Content-Type: application/json { "domains": ["acme.com", "shopify.com", "stripe.com"], "type": "geographic_expansion", "limit_per_domain": 5 }

Response groups signals by domain — map data["acme.com"][0].score directly to a Clay column. Use in a Clay HTTP API enrichment block with method POST and JSON body.

Advanced

Webhooks — push signals to HubSpot or Salesforce in real time

Instead of polling the API from Clay, register a webhook to receive signals the moment they're detected. Use this to create records, update lead scores, or trigger sequences automatically.

POST https://forelight.net/v1/webhooks Authorization: Bearer YOUR_API_KEY Content-Type: application/json { "url": "https://hooks.zapier.com/hooks/catch/YOUR_HOOK_ID/", "secret": "optional-hmac-secret" }

Forelight sends a POST to your URL for every new signal that matches your watchlist. The payload is a single SignalOut object — identical schema to the GET /v1/signals response. If you set a secret, each request includes an X-Forelight-Signature header (HMAC-SHA256 of the raw body).

HubSpot setup: Use a Zapier or Make.com webhook as the relay. Trigger: webhook catch → Action: HubSpot "Create or update contact/company" with apex_domain as the lookup key. Map signal_type, score, and score_reason to custom properties.

Salesforce setup: Use Salesforce Flow or a platform event. Relay via Zapier: webhook catch → Salesforce "Create record" on a custom Signal__c object with fields Signal_Type__c, Score__c, Apex_Domain__c, and Detected_At__c.

Tip: Combine webhooks with watchlists. Add your ICP accounts to a watchlist (POST /v1/watchlists) and the webhook will only fire for those accounts — no noise, no filtering needed downstream.

Need help?

Email hello@forelight.net or check the full API docs.