Visit types
Visit types are the three rules Webmetic uses to classify companies as intensive, returning, or new.
A visit type describes how a company visited your website: intensive, returning, or new. For example, someone at a beverage producer reads your pricing page for two minutes, and Webmetic lists the company as intensive.
If it was the company's first visit to your website, it's also new. Webmetic computes the three types for you, and the API delivers them as feeds and as webhook events.
Rules
| Visit type | Feed | Webhook event |
|---|---|---|
| Intensive | /intensive-visits: companies with at least one visit of 30 seconds or more in the period | company.intensive_visit: every visit of 30 seconds or more, once per visit |
| Returning | /returning-visits: companies with two or more visits in the period | company.returned: every visit after the first, once per visit |
| New | /new-visits: companies whose first visit falls in the period | company.identified: the first visit, once per company and website |
A visit is a Session. Webmetic only evaluates the visits your account recorded on this website.
Visits that Webmetic doesn't match to a company have no visit type.
The three types are independent of each other. One visit can trigger two events, for example company.identified and company.intensive_visit.
Intensive
A visit is intensive when it lasts 30 seconds or more in total. Webmetic reads session_duration for this, and exactly 30 seconds counts.
The number of pages and the scroll depth don't matter. Neither does session_time, which is the average time per page view.
The company.intensive_visit event can arrive later than the other events of the same visit. Webmetic keeps checking the visit after it appears in the dashboard and reports it as soon as it reaches 30 seconds.
Returning
Returning companies follow two rules on purpose:
- Feed:
/returning-visitsonly counts visits in the period and leaves out visits beforefrom_date. - Webhook:
company.returnedreports every visit of a company that has visited your website before, no matter when.
For example, a company visited your website ten times last year and once this week. It's missing from /returning-visits?from_date=-7 days, but the webhook reports the visit as company.returned.
New
A company is new on the first visit your account recorded on this website. Visits recorded by other Webmetic accounts don't count.
The /new-visits feed returns a company when this first visit falls in the period. If it was before from_date, the company is missing, even if it has visited your website often since.
For the same visit, company.identified and company.returned exclude each other.
A new webhook only reports visits from the moment you create it. It reports companies that visited before as company.returned. To get earlier new companies, query /new-visits.
Period and response
The three feeds take domain, from_date, and to_date. If you don't pass a period, they cover the last 30 days up to now.
- Period: It starts at
from_dateand ends right beforeto_date. A date without a time includes the whole day when used asto_date. For details, see Date ranges and time zones. - No pages: The response contains every row at once in
result. Because the feeds have nopageorpage_size, choose a shorter period for large results. - Order: The feeds return the rows in no fixed order.
- One row per company: Each company appears at most once per feed, but it can appear in several feeds.
- All fields: Every row has the same fields, and only hidden companies also get
blurred. Anything Webmetic doesn't know isnull, or an empty list fordirectorsandnace_codes. - Key: You need the Visitor Intelligence key. If
domainisn't one of your account's websites, the API answers withAPI_KEY_NOT_AUTHORIZED, as described under Errors. - Limits: The limit is one request per second per endpoint, as described under Rate limits. The feeds and the webhooks don't cost credits.
Shape of a row
Each row is a company with the fields of Company. The feeds leave out organization_type, primary_color, secondary_color, wz2025_codes, and the texts what_they_do_*, how_they_make_money_*, and target_audience_*. These fields are added:
| Field | Type | Example | Description |
|---|---|---|---|
sessions | array | The visits that match the rule, as Session with the page views in user_data, sorted by time, oldest first. | |
timestamp, weburl, utm_source, utm_medium, utm_campaign, utm_term, utm_content, utm_campaign_id, click_id, click_type, session_duration, session_time, visitor_city, visitor_country, visitor_zip, visitor_country_code | as in the session | "2026-10-14T08:12:05.214000" | Copies from the earliest session in sessions. |
sessions_total | integer | 1 | The number of sessions in sessions. |
pages_total | integer | 3 | The number of page views in these sessions. |
blurred | boolean | true | Only for hidden companies on the Free plan, otherwise the field is missing. |
Which visits are in sessions and count in sessions_total and pages_total depends on the feed:
/intensive-visits: only the intensive visits in the period./returning-visitsand/new-visits: all of the company's visits in the period.
Example
The example shows a row from /intensive-visits in shortened form: most fields with null and some session fields are left out.
{
"result": [
{
"company_id": "41ea486a9c95",
"company_name": "Bergquell Mineralbrunnen GmbH",
"city": "Freising",
"country_code": "DE",
"company_url": "www.bergquell.example",
"linkedin": null,
"employee_count": [201, 500],
"lead_score": 88.0,
"fit_score": 92,
"relevance_score": 80.96,
"sessions": [
{
"timestamp": "2026-10-14T08:12:05.214000",
"session_id": "01M4WQFX6YM2X5V8T4N6R1C0DZ",
"weburl": "https://your-website.com",
"utm_source": "linkedin",
"utm_medium": "social",
"utm_campaign": "messe-2026",
"session_duration": 309.0,
"session_time": 103.0,
"visitor_city": "Freising",
"visitor_country_code": "DE",
"user_data": [
{
"timestamp": "2026-10-14T08:12:05.214000",
"document_location": "https://your-website.com/pricing",
"time_spent": 95.0
},
{
"timestamp": "2026-10-14T08:13:40.214000",
"document_location": "https://your-website.com/bottling-lines",
"time_spent": 150.0
},
{
"timestamp": "2026-10-14T08:16:10.214000",
"document_location": "https://your-website.com/contact",
"time_spent": 64.0
}
]
}
],
"timestamp": "2026-10-14T08:12:05.214000",
"weburl": "https://your-website.com",
"utm_source": "linkedin",
"utm_medium": "social",
"utm_campaign": "messe-2026",
"utm_term": null,
"session_duration": 309.0,
"session_time": 103.0,
"visitor_city": "Freising",
"visitor_country_code": "DE",
"sessions_total": 1,
"pages_total": 3
}
]
}Edge cases
- Free plan: Companies you can't see on the Free plan still appear in the feeds. Their row keeps
company_idand hasblurred: trueand a placeholder incompany_name. Every other field isnull, includingsessions_totalandpages_total. In the sessions, onlysession_idandtimestamphave a value. Every other session field isnull, anduser_datais empty. - Webhooks on the Free plan: Webhooks only report the companies you can see on the Free plan. Hidden companies trigger no event. For details, see Plans.
Used by
- Feeds:
/intensive-visits,/returning-visits, and/new-visits. - Webhooks: The webhook events are
company.intensive_visit,company.returned, andcompany.identified. For details, see Webhooks. An event carries one company and a single visit, not a row like the feed. Under Menu > Integrations > Webhooks, they're called Engaged company, Returning company, and New company. - Dashboard: The notifications Engaged companies, Returning companies, and New companies use the feed rules.
- AI assistant: The AI assistant also retrieves the visit types, with the tool
get_visit_highlights.