Birdray stops at the reply. Everything after that is yours.
Top of funnel here; the deal in your CRM. Emails go out through Gmail, replies and meeting clicks go to HubSpot or any webhook, your CRM writes back won or lost, and the API covers anything else.
Each producer connects their own mailbox with send permission only. Emails leave from their address, replies land in their inbox, threads stay in Sent. Optional reply detection.
- ✓Send as you, never from Birdray
- ✓Daily caps per mailbox, warm-up aware
- ✓Disconnect any time
A reply or a booking-link click creates or updates the contact and company, associates them, and attaches a note with the brief, the first email and the reply.
- ✓Private app token, stored server-side
- ✓Contact by email, company by domain
- ✓Note with the whole conversation
Every hand-off is one JSON POST signed with HMAC-SHA256, so any workflow tool can catch it and route it anywhere.
- ✓Company, person, conversation, brief
- ✓Signed with your secret
- ✓Test button and retry from Settings
Keys per workspace that act as the admin who created them. Search the dataset, read your book and contacts, add to lists, enroll, and write status back.
- ✓GET /search, /companies, /contacts, /handoffs
- ✓POST /lists, /enroll, /status
- ✓won or lost stops any running enrollment
Drop any spreadsheet or a Clay export. Name, email, company, title, domain and licence number map automatically; the rest stays as custom fields the agent can use.
- ✓Templates for leads, companies, suppression
- ✓Licence number links people to companies
- ✓Duplicates merge by email
One script on your site records which prospects visited after an email, so you know who is looking before they reply.
- ✓Async script, first-party key
- ✓Ties visits to sent emails
- ✓Optional
What a hand-off looks like.
When a contractor replies or clicks your booking link, this is what leaves Birdray.
{
"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" },
"person": { "name": "Andy", "title": "Owner", "email": "andy@keilelectric.com" },
"conversation": { "play": "SD electrical, WC renewals", "touches": 2, "reply_snippet": "Sure, send me what you have", "gmail_thread_id": "18f…" },
"brief": { "summary": "…", "hooks": [ … ], "recommended_angle": "renewal" },
"birdray_url": "https://app.birdray.com/app/contractor/1109913"
}Write back with POST /api/v1/status when the deal closes and the agent stops. Keys live under Settings → API.
Connect your Gmail in thirty seconds.
Send permission only. We can send as you; we can't read your mail.