Hydra logoHydra · Hydra Support

CRM

CRM — Leads, Contacts, Accounts, Opportunities

Hydra's CRM tracks four object types — Leads, Contacts, Accounts, and Opportunities. This article explains how they relate and how to manage each one.

CRM — Leads, Contacts, Accounts, Opportunities

Hydra's CRM has four core objects. Each one has a clear purpose and a strict relationship to the others, modeled on the standard Salesforce/HubSpot pattern.

The four objects

ObjectWhat it isRequired field
LeadAn unidentified person who hasn't shared an email yetNone
ContactAn identified person you know by emailMust be linked to an Account
AccountA company or organizationName
OpportunityA potential deal attached to an AccountAccount, name

How they relate

  • A Lead has no account. They're anonymous visitors or inbound form submissions where you don't yet know which company they belong to.
  • A Contact is always linked to exactly one Account.
  • An Account can have many Contacts and many Opportunities.
  • An Opportunity always belongs to an Account, and optionally has one primary Contact.
  • Lifecycle stage (Prospect / Active / At Risk / Churned) lives on the Account, not on individual people. A person doesn't churn — their company does.

Leads

Creating a lead manually

Go to Leads → New Lead. Fill in whatever you know — name, phone, company, and optional notes. Email is optional; if you know it, fill it in, but a Lead doesn't require one.

Auto-created leads

Leads can be created automatically from a few sources:

  • Anonymous widget chat — when an unidentified visitor chats in via the widget, Hydra creates a Lead for them. If they share their email mid-conversation, the Lead can be converted to a Contact (but only if they can also be linked to an Account).
  • Bot capture (behaviors) — when a bot pursues a behavior with capture fields and successfully collects the visitor's info, that creates a Lead with source = bot. The Lead is linked back to the originating bot and conversation via the source_conversation_id provenance column.
  • Marketing site forms — submissions to the public waitlist endpoint create a Lead (or update one if the email already exists).

Bot-captured Leads are de-duplicated by email — if the same visitor is captured twice, you get one Lead with the original provenance preserved, not two.

View originating conversation

Any Lead or Contact with at least one conversation shows a → View originating conversation link in the detail header. Clicking it opens the inbox with that conversation pre-selected and the correct tab (messaging or email) auto-focused.

For bot-captured Leads, the link points at the exact conversation where capture happened (stored in source_conversation_id). For anonymous widget-created Leads — where no capture event ever fired — the link falls back to the oldest conversation on the record, which is the interaction that caused the Lead to be inserted in the first place. Leads with zero conversations (e.g. pure manual creation) don't render the link.

Editing the name or email

On a Lead or Contact detail page, click the name in the header (or the "Anonymous" placeholder for unidentified leads) to edit it inline. The same applies to the email line directly below — click an existing email to change it, or click + Add email when none is set. Press Enter to save, Esc to cancel, or click outside to save.

Adding an email to a Lead does not convert it to a Contact — emails captured by chat or by manual edit both stay on the Lead until someone clicks Convert to Contact and picks an Account. The two-step flow is deliberate: every Contact in Hydra is bound to an Account, so promotion has to be explicit.

Converting a lead to a contact

From a Lead's detail page, click Convert to Contact. A modal opens and collects:

  1. Email (required) — pre-filled if the Lead already has one
  2. Account — pick an existing account OR create a new one inline
  3. Opportunity (optional) — check the box to also create an opportunity during conversion (Growth plan or higher)

On success, the Lead becomes a Contact linked to the chosen Account, and if an Opportunity was requested, it's created and linked to both.

Contacts

Contacts are identified people, always tied to an Account.

Creating a contact manually

Go to Contacts → New Contact. The form collects name, email (required), phone, job title, and notes — plus an Account section with two tabs:

  • Existing Account — pick from a dropdown of accounts you've already created
  • New Account — fill in company name, domain, industry, website, and phone to create an account inline

A contact cannot be saved without an account.

Demoting a contact to a lead

If you realize a record shouldn't be a contact (bad data, wrong person, etc.), click Demote to Lead on the contact detail page. The person is moved back to Leads and the account association is cleared.

This is the only way to remove a contact's account — direct "unlink" is not supported because contacts must always have an account.

Reassigning to a different account

Use the Account dropdown on the contact's profile to switch them to a different account. The lifecycle events timeline records the move.

Accounts

Accounts are companies. Every Account has a lifecycle stage:

StageMeaning
ProspectNot yet a paying customer
ActiveActive customer relationship
At RiskShowing churn signals
ChurnedEnded their relationship

Creating an account

Click New Account on the Accounts page. Account name is the only required field.

Adding a contact to an account

On any account detail page, click + Add Contact in the Contacts section. You'll be taken to the New Contact form with this account pre-selected.

Account fields

Accounts track industry, website, phone, MRR, health score (0–100), renewal date, and renewal status. You can also attach custom fields from Settings → Custom Fields.

Onboarding plans

An onboarding plan is a checklist of milestones for a new account. Create one from the account detail page, add milestones with due dates, and check them off as completed. Milestone completions can trigger Flows.

Deleting an account

An account can only be deleted once all of its Contacts and Opportunities have been moved or deleted. This prevents accidental data loss — the alternative would be silently orphaning records.

Opportunities

Growth plan or higher. Opportunities are not available on the Starter plan.

An Opportunity is a potential deal — a specific thing you're trying to sell to an Account.

Stages

Opportunities move through six standard stages:

  1. Prospecting — early, qualifying the need
  2. Qualification — confirmed fit and budget
  3. Proposal — formal offer delivered
  4. Negotiation — working through terms
  5. Closed Won — deal signed
  6. Closed Lost — deal lost or abandoned

Creating an opportunity

Three entry points:

  • Opportunities → New Opportunity — full form
  • Account detail → Opportunities → + New Opportunity — account pre-filled
  • Contact detail → Opportunities → + New Opportunity — account and contact pre-filled
  • Lead convert modal — check "Also create an opportunity" when converting a lead

Required fields: name, account. Optional: primary contact (from the account's contact list), stage, amount, close date, probability, notes.

Pipeline view

The Opportunities page groups opportunities by stage and shows totals at the top:

  • Open Pipeline — sum of amounts on all non-closed opportunities
  • Weighted — amount × probability on all open opportunities (forecast)
  • Won — sum of Closed Won amounts

Moving through stages

On an opportunity's detail page, click Advance to [next stage] for the quick forward action, or use Mark Won / Mark Lost to close the deal. Stage changes emit lifecycle events so Flows can react (e.g. send a congratulations email on Closed Won).

Plan gating

FeatureStarterGrowthScale
Leads
Contacts
Accounts
Opportunities

Lifecycle events

Every person, account, and opportunity has an append-only timeline recording conversions, stage changes, account links, and custom events raised by Flows. Events are never deleted — it's your audit trail.

Visitor timeline

Open any Lead or Contact detail page and you'll see a Site activity card mounted directly below the Profile card, above Latest report / Tickets / Conversations. It's a chronological view of everything that person did on your site — pageviews, sessions, custom events, and identify calls — pulled from the same data source as the global Site Activity dashboard but scoped to this one record.

The card only has data for people who have browsed a page where a tracking-enabled widget is embedded. If you're not seeing anything yet, see Site Activity tracking for how to turn tracking on for a widget.

Summary tiles

The top of the card has four tiles:

  • Sessions — count of distinct browsing sessions. A session is contiguous activity with no more than 30 minutes of silence between events; once that gap opens, the next event starts a new session.
  • Time on site — sum of session durations across every session, formatted human-readable (e.g. 12m, 1h 5m).
  • Last seen — date and time of the most recent event of any kind.
  • Custom events — count of events fired via hydra.track() from your site code. Pageviews and session-starts don't count toward this number.

Top pages

Below the tiles is a Top pages list — the five most-viewed page paths for this person, with view counts. If they've only visited one or two pages, the list is shorter; if they've visited fewer than five distinct paths, there's no padding.

Timeline

The chronological Timeline sits below Top pages. Events are grouped into sessions, newest session first, and each session shows its start time, end time, and total event count. Within a session, events render with:

  • An icon — 📄 pageview, session start, 👤 identify, 🎯 custom event
  • The page path (for pageviews) or event name (for custom / identify events)
  • A property summary for custom events, when properties were attached via hydra.track('name', { ... })
  • A relative timestamp — 3m ago, 2h ago, 5d ago, or an absolute date for older events

Empty state

If the person has no recorded site activity, the card shows: "No site activity captured for this contact." Two reasons this typically appears:

  • Tracking isn't enabled on the widget they used. Site Activity is per-widget and off by default. The empty state is the same whether tracking was never turned on or the widget they encountered didn't have it on.
  • They never browsed a tracked page. A Lead created manually, or one that came in via an inbound email, has no widget script in their history to record events from.

Pre-chat events show up too

Hydra stitches anonymous browsing history to the CRM record once a visitor identifies themselves — typically by chatting and giving the bot a name and email, or by your site code calling hydra.identify() after they log in. The timeline shows everything the person did before they were identified as well as everything after.

This is what makes the timeline useful for sales context — you can see which pricing page a Lead read, how long they spent on the docs, and what custom events they hit before they ever opened a chat.

Custom fields

You can add custom fields to Contacts, Accounts, and Opportunities under Settings → Custom Fields. Field types: text, number, date, select (dropdown), boolean.