Engage

Website visitors

Track your sites, see who visits (known contacts and companies), their journeys and intent, and push them into the CRM.

Add a site, put its snippet in the <head> of every page — <script src="https://meetzy.me/tracker.js" data-meetzy-id="{tracking_id}" data-meetzy-api="https://meetzy.me"></script> — and Meetzy records visits, pages, sources, forms and carts. Visitors who leave their email (a form, a link from a Meetzy email) become identified; a known contact’s visit fires contact.website_visit.

In a chat
Copy a ready promptPaste it in any AI: it reads the docs and follows the rules of the API.
Open in Claude or ChatGPTA new conversation with the prompt already written.
This page as MarkdownFor an AI that cannot open links: paste the text itself.
In your editor
Claude Code or CodexAdd this line to CLAUDE.md or AGENTS.md.Meetzy API reference (read before calling the API): https://www.meetzy.ai/llms-full.txt
CursorSettings › Indexing & Docs › Add Doc, then type @Meetzy in the chat.https://www.meetzy.ai/llms-full.txt
Connect Meetzy as tools (MCP)The AI can then read and change your CRM itself — Claude Code:claude mcp add --transport http meetzy https://meetzy.me/api/mcp/mcp
Same for Codexcodex mcp add meetzy --url https://meetzy.me/api/mcp/mcp
GET/website/sites

List tracked sites

Sites with their tracking_id, settings and when the last event arrived (to check the snippet works).

Scope: read
Request
curl "https://meetzy.me/api/v1/website/sites" \
  -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/website/sites", {
  headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://meetzy.me/api/v1/website/sites",
    headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json()
Response200
{
  "sites": []
}
POST/website/sites

Add a site

Returns the site with its tracking_id for the snippet.

Scope: write

Body

domainstringrequired
Domain, e.g. acme.com.
Request
curl -X POST "https://meetzy.me/api/v1/website/sites" \
  -H "Authorization: Bearer $MEETZY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "acme.com"
  }'
const res = await fetch("https://meetzy.me/api/v1/website/sites", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    "domain": "acme.com"
  }),
});
const data = await res.json();
import os, requests

res = requests.post(
    "https://meetzy.me/api/v1/website/sites",
    headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
    json={
        "domain": "acme.com"
    },
)
data = res.json()
Response201
{
  "id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
  "from": "acme",
  "tracking_id": "meetzy_1791378962186_k3j9x2m1q",
  "domain": "acme.com",
  "is_active": true,
  "settings": {
    "track_page_views": true,
    "track_forms": true,
    "track_clicks": true
  }
}
GET/website/overview

Traffic overview

Visitors, sessions, page views, identified visitors, top pages, sources and campaigns, devices and countries, a daily series, and the hottest visitors.

Scope: read

Query parameters

tracking_idstring
One site (default: all).
daysinteger
Window in days. Default 30.
Request
curl "https://meetzy.me/api/v1/website/overview?days=7" \
  -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/website/overview?days=7", {
  headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://meetzy.me/api/v1/website/overview?days=7",
    headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json()
Response200
{
  "sites": [],
  "empty": true
}
GET/website/visitors

List visitors

Most recent first, each with crm_contact_id when the person is already in the CRM.

Scope: read

Query parameters

tracking_idstring
One site.
qstring
Search in email, name and company.
identifiedstring
true (default): only visitors with an email; false: everyone.
limitinteger
Up to 500. Default 200.
offsetinteger
Rows to skip.
Request
curl "https://meetzy.me/api/v1/website/visitors?q=payfit" \
  -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/website/visitors?q=payfit", {
  headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://meetzy.me/api/v1/website/visitors?q=payfit",
    headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json()
Response200
{
  "visitors": [
    {
      "id": "d4c3b2a1-0f9e-4d8c-b7a6-5e4d3c2b1a09",
      "tracking_id": "meetzy_1791378962186_k3j9x2m1q",
      "visitor_id": "v_8f2k1",
      "email": "camille@payfit.com",
      "name": "Camille Laurent",
      "company": "Payfit",
      "country": "France",
      "city": "Paris",
      "visit_count": 6,
      "page_views": 23,
      "lead_score": 72,
      "first_seen_at": "2026-09-28T08:14:00Z",
      "last_seen_at": "2026-10-07T09:41:00Z",
      "crm_contact_id": "e43414d6-f56f-42be-a64c-a836d6015efc"
    }
  ],
  "total": 1
}
GET/website/visitors/{id}

A visitor’s journey

The visitor, their last 300 events (page views, clicks, forms, carts — with page, referrer and data) and their sessions (duration, pages, entry page, UTM source / medium / campaign).

Scope: read

Path parameters

idstringrequired
Id of the record (UUID).
Request
curl "https://meetzy.me/api/v1/website/visitors/e43414d6-f56f-42be-a64c-a836d6015efc" \
  -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/website/visitors/e43414d6-f56f-42be-a64c-a836d6015efc", {
  headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://meetzy.me/api/v1/website/visitors/e43414d6-f56f-42be-a64c-a836d6015efc",
    headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json()
Response200
{
  "visitor": {
    "id": "d4c3b2a1-0f9e-4d8c-b7a6-5e4d3c2b1a09",
    "email": "camille@payfit.com",
    "name": "Camille Laurent",
    "company": "Payfit",
    "visit_count": 6,
    "page_views": 23,
    "lead_score": 72
  },
  "events": [
    {
      "event_type": "page_view",
      "event_name": null,
      "page_url": "https://acme.com/pricing",
      "page_title": "Pricing — Acme",
      "referrer": "https://www.google.com/",
      "created_at": "2026-10-07T09:41:00Z",
      "data": {},
      "cart_value": null
    }
  ],
  "sessions": [
    {
      "session_id": "s_91kd",
      "started_at": "2026-10-07T09:38:00Z",
      "duration": 412,
      "page_count": 5,
      "entry_page": "https://acme.com/",
      "referrer": "https://www.google.com/",
      "utm_source": "google",
      "utm_medium": "cpc",
      "utm_campaign": "brand"
    }
  ]
}
POST/website/push-to-crm

Add visitors to the CRM

Creates (or updates) a contact for each identified visitor, tagged website, with their visit counts and score.

Scope: write

Body

visitor_idsuuid[]required
Visitors (up to 500).
Request
curl -X POST "https://meetzy.me/api/v1/website/push-to-crm" \
  -H "Authorization: Bearer $MEETZY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "visitor_ids": [
      "d4c3b2a1-0f9e-4d8c-b7a6-5e4d3c2b1a09"
    ]
  }'
const res = await fetch("https://meetzy.me/api/v1/website/push-to-crm", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    "visitor_ids": [
      "d4c3b2a1-0f9e-4d8c-b7a6-5e4d3c2b1a09"
    ]
  }),
});
const data = await res.json();
import os, requests

res = requests.post(
    "https://meetzy.me/api/v1/website/push-to-crm",
    headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
    json={
        "visitor_ids": ["d4c3b2a1-0f9e-4d8c-b7a6-5e4d3c2b1a09"]
    },
)
data = res.json()
Response201
{
  "created": 0,
  "updated": 1,
  "skipped": 0,
  "contact_ids": [
    "e43414d6-f56f-42be-a64c-a836d6015efc"
  ]
}