Hyros Export Tool

Export sales, calls and leads by email with origin source, last source and full campaign / ad set / ad attribution.

The API Key is sent only to this app's own server to call Hyros and is never stored. Rate limits (30/s, 1000/min) are respected automatically. Sales & calls carry full ad attribution (origin/last source, ad name, ad id, ad set name; ad set id and campaign columns fill only when your ad account exposes them in Hyros). For leads, source is resolved from the lead's @ source tags against the source catalog (~3 of 4 leads resolve; the rest are organic/untracked). Hyros's list endpoints return ~7 records/sec, so very large ranges take time — export month‑by‑month for big accounts.

How it works

Hyros has no single endpoint that returns everything, so each report combines a base list endpoint with the attribution report to resolve the campaign → ad set → ad hierarchy. All calls run server-side, paginated (250/page) and rate-limited (30/s, 1000/min) with automatic retries on 429.

SalesCalls
  1. GET /sales (or /calls) — base records, paginated. Brings email, origin source, last source, ad name, ad id directly.
  2. GET /attribution at facebook_ad, facebook_adset and facebook_campaign levels (per ad account) — resolves ad set name/ID and campaign name/ID. Runs only when “Full enrichment” is on.
Leads
  1. GET /leads — base list, paginated. Each lead carries its source as @-prefixed tags.
  2. GET /sources once — the source catalog. Lead @ tags map to it to resolve the source name, platform & ad account (no per-lead calls).
  3. GET /attribution — campaign / ad set enrichment where the ids line up.

Hyros's list endpoints return ~7 records/sec, so large ranges are slow. To speed things up the date range is split into chunks fetched in parallel (de‑duped by id), and the source catalog is cached between exports. Very large accounts (100k+ records) are still best exported month‑by‑month.