Integrate

CRM hand-off: webhooks and HubSpot

A reply or a meeting click pushes the company, person, thread and brief to your CRM; Birdray stops there.

Settings → CRM hand-off.

When

On a reply, on a booking-link click, or by hand from the enrollment drawer ("Hand off to CRM"). Choose which triggers apply.

Webhook

A JSON POST to your URL, signed with HMAC-SHA256 in X-Birdray-Signature: sha256=… using the secret you set. Zapier, Make and n8n catch it natively. Payload:

{
  "event": "birdray.handoff",
  "trigger": "replied",
  "company": { "license_no": "1109913", "name": "Keil Electric LLC", "city": "El Cajon", "wc_carrier": "State Compensation Insurance Fund", "wc_expiration": "2026-11-01", "website": "keilelectric.com" },
  "person": { "name": "Andy", "title": "Owner", "email": "andy@keilelectric.com", "phone": "(619) 689-0112" },
  "conversation": { "play": "SD electrical & HVAC, WC renewals", "owner": { "name": "…", "email": "…" }, "touches": 2, "reply_snippet": "Sure, send me what you have", "gmail_thread_id": "18f…", "first_email": { "subject": "…", "body": "…" } },
  "brief": { "summary": "…", "hooks": [ { "text": "…", "source": "…" } ], "recommended_angle": "renewal" },
  "birdray_url": "https://app.birdray.com/app/contractor/1109913"
}

HubSpot

Paste a private-app token (scopes: contacts write, companies write, notes write). Each hand-off upserts the contact by email and the company by domain, associates them, and attaches a note with the brief, the first email and the reply.

Delivery and retries

Hand-offs go out on the hour. The page lists each one with its status and the target's response; failed or skipped ones can be retried after you fix the target. "Send a test hand-off" uses your most recent enrollment with an email.

Writing back

When the deal is won or lost, tell Birdray through the API status endpoint and any running enrollment stops.