# Changelog of HubSpot Emails · Bulk Login Detection (`corent1robert/hubspot-email-registration-checker`) Actor

- **URL**: https://apify.com/corent1robert/hubspot-email-registration-checker/changelog.md
- **Full Actor documentation**: https://apify.com/corent1robert/hubspot-email-registration-checker.md

## Changelog

All notable changes to this project are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

### \[1.0.3] - 2026-03-28

#### Added

- **[`src/hubspotInterpret.js`](src/hubspotInterpret.js)** — shared parsing + short error messages.
- **`npm run test:unit`** — [`tests/interpret-hubspot.mjs`](tests/interpret-hubspot.mjs) (no network).
- Env **`HUBSPOT_RESIDENTIAL_PROXY=1`** — optional **residential** Apify proxy (fallback to default proxy if unavailable).

#### Changed

- **403 / Cloudflare:** dataset `error` is now a **short** explanation (no multi-KB HTML).
- **JSON without `status`:** read nested `data` / `result` / etc.; conservative **heuristic** for “likely existing user” (`portalId`, `email`, SSO/password hints) so real 200 responses map to **`registered: true`** when appropriate.
- **HTTP layer:** `responseType: 'text'` + `JSON.parse` to handle HTML vs JSON cleanly.
- **Warning** on Apify when proxy URL is missing.
- Smoke test aligned with production parsing.

### \[1.0.2] - 2026-03-28

#### Added

- **[`AGENTS.md`](AGENTS.md)** — short notes for agents/maintainers (`apify run`, input paths, PII).
- **`.actor/actor.json` `meta.generatedBy`** per Apify Actor guidelines.

#### Changed

- **Retries** with exponential backoff on **429 / 408 / 5xx** and on thrown network errors (bounded attempts).
- **Input guard:** max **10,000** emails per run; **loose email validation** skips bad lines without calling HubSpot (`log.softFail`, no address in log text).
- **End-of-run `log.info`:** numeric summary only (yes / no / unclear / invalid counts).
- **README:** Apify-recommended local workflow, storage/INPUT paths, logging & privacy note.

### \[1.0.1] - 2026-03-28

#### Changed

- User-facing copy (Store **description**, **seoDescription**, input schema, **README**, dataset/output schema blurbs): **benefit-led** wording for buyers; no “API / endpoint” framing in marketplace text.

### \[1.0.0] - 2026-03-28

#### Added

- Initial release: bulk **emails** input, `POST` to HubSpot `login-requirements/login`, dataset row per email with `registered` (`true` / `false` / `null`), `hubspotStatus`, `hubspotMessage`, `correlationId`, `httpStatus`, `error`, `checkedAt`.
- **HTTP 400** responses with JSON body treated like **200** (HubSpot returns 400 + `INVALID_USER` for unknown users).
- **Apify proxy** via `Actor.createProxyConfiguration()` when available (helps with Cloudflare).
- Minimal **RUN\_LOG** (checked / total).
- Smoke test: `INVALID_USER` for a synthetic address; **SMOKE SKIP** on Cloudflare **403** challenge when no proxy.
