๐ฅContacts
Contacts is Ring Tonic's lightweight CRM. Every phone call and form submission your tracking generates can be matched to a contact, moved through a pipeline of stages, and tracked from first touch to closed-won revenue โ without leaving the platform.
The Kanban view, contact detail page, custom fields, and stage drag-and-drop are Agency plan features. The basic table view and individual contact details remain available on every plan.
The Pipeline
Every contact has a stage showing where they are in your funnel. Stages are forward-only by default โ a contact advances automatically (from phone calls, form submissions, or events sent from other tools), but only owners and admins can move one backward.
0
New
A contact exists but no event has been recorded
10
Contacted
An outbound or inbound interaction has happened
30
Qualified
AI auto-qualification or manual review marked the lead worth pursuing
40
Appointment Booked
A calendar event was created (typically from an outside tool)
50
Proposal Sent
A quote or proposal has been delivered
100
Won / Customer
Closed-won โ revenue recognized
200
Lost
Closed-lost
300
Unqualified
Excluded from the funnel (spam, wrong fit, etc.)
The terminal stages (Won, Customer, Lost, Unqualified) are mutually exclusive โ once a contact lands in one, it stops advancing automatically. (Won and Customer are both "won" outcomes and share the same place in the funnel order.) To move a contact out of a terminal stage you have to drag it there yourself, which only owners and admins can do.
Why fixed stages? Ring Tonic intentionally ships an opinionated stage set matching the call-tracking industry norm (CallRail, WhatConverts). This keeps funnel analytics consistent across workspaces. Workspace-customizable stages are a planned future enhancement.
Kanban View
The default view at Contacts is a horizontally-scrolling Kanban board with one column per pipeline stage.

What each column shows:
Stage label (e.g. "Form Submitted") with a colored badge
Count of contacts currently in that stage
Total deal value โ the combined value of all contacts in the column
Up to 50 cards, most-recently-changed first
Load more at the bottom if more cards exist
Each card shows:
Contact name (or phone number if the name is blank)
Phone number, formatted for your workspace
Email, if known
"About X hours ago" โ when the contact last moved into this stage
Click a card to open the Contact Detail page.
Moving cards between stages
Drag any card onto a different column to change its stage. Three behaviors:
Forward move (e.g. Contacted โ Qualified) โ instant, no confirmation. Any logged-in user can do this.
Backward move (e.g. Won โ Qualified) โ owners and admins only, with an Undo toast. Other users get a permission error.
Same column โ nothing happens.
Moving a contact backward is recorded in its timeline as a manual change, and moving it out of Won or Lost automatically updates the matching won/lost close date.
Table View
Click the Table toggle (top-right of the Kanban) to switch to a flat, sortable, filterable table โ handy for bulk operations or richer filtering.

Sort by name, phone, last stage change, deal value, and more
Filter by stage, campaign, source, or date range
Multi-select for bulk actions (assign owner, archive, export CSV)
Ring Tonic remembers which view you used last.
Contact Detail
Click any card or row to open the full contact detail page.

Header
Contact name as the page title
Current Stage badge
Value โ the contact's deal value
Phone, email, and company (whichever are known)
Tabs
Timeline โ a chronological feed of everything tied to this contact:
Stage changes (showing where each one came from โ a manual edit, a call, a form, or an outside tool)
Form submissions
Calls (with a link to the call detail page)
Notes
Repeat events that didn't change anything (marked (ignored) โ see below)
Custom fields โ your workspace's custom fields (see Custom Fields)
Notes โ free-form team notes
Calls โ call history for this contact only
Forms โ form submissions for this contact, showing everything that was submitted
Why some events say "(ignored)"
When the same event happens twice (for example, the same visitor submits a form more than once), the first one moves the contact to the new stage. Later repeats still appear in the timeline but are marked (ignored), because the contact is already at that stage. This keeps a complete history without throwing off your pipeline counts.
Custom Fields
Custom fields are your own typed fields that attach to every contact. They accept values from form submissions, the API, and manual edits.

Field types you can add:
Text
Free-form notes, IDs, statuses
Number
Lead scores, ticket counts, quantities
Date
Appointment dates, deadlines
Single Select
One choice from a fixed list (lead source, region)
Multi Select
Several choices from a list (tags, interests)
Boolean
A simple Yes/No toggle
URL
A link, e.g. a LinkedIn profile
Defining a custom field
Go to Settings โ Custom Fields
Click Add custom field
Choose a key (a lowercase identifier like
lead_scoreโ it can't be changed after saving), a display label, and a typeFor Single Select / Multi Select, add the allowed options
Mark Required if the field must be set on every contact (enforced on manual create/edit only; form submissions and API calls may leave it blank)
Save
The key can't be changed. Once a custom field is saved, its key is fixed โ existing contacts' values are stored under that key. You can rename the label any time, and you can archive a whole field (which hides it from forms but keeps the historical values).
Editing custom field values on a contact
You edit custom fields one at a time, right where you see them. Open a contact โ either the quick-view panel (click a card or row) or the full detail page โ and go to the Custom fields section.
Find the field you want to change and click its Edit control.
An inline editor opens with the right kind of input โ a text, number, date, or link box; a dropdown for Single Select; checkboxes for Multi Select; or a Yes/No toggle.
Make your change and click Save.
Each field saves on its own, so editing one never touches the others. Validation runs the moment you save (type, required, allowed options), and anything that needs fixing shows a message right on that field.
How Stages Get Set Automatically
Most of the time you won't move contacts by hand โ events do it for you.
Form submission matched by phone or email
Form Submitted
First submission only; later ones just add timeline entries
Phone call auto-qualified by AI
Qualified
Driven by your workspace's AI auto-qualification rules
An event sent via the Postback API
Whatever stage was sent
Used to connect outside tools (CRM, scheduler, automations)
Manual drag in the Kanban
Whatever column you dropped on
Owners/admins for backward moves
Stage advancement is forward-only by default. If a call or an outside event asks to move a contact backward, it's recorded in the timeline but the contact doesn't actually move. Only an owner or admin can move a contact backward (or a developer using the API's force option).
Won and Lost Tracking
Ring Tonic tracks Won and Lost separately so your analytics can compute close rates and lost-revenue baselines.
When a contact moves to Won, Ring Tonic records the close date and locks in the deal value โ keeping your close-rate and revenue reports accurate.
When a contact moves to Lost, it records the close date and keeps the deal value, so you can see how much potential revenue slipped away.
Funnel analytics in the Analytics section roll these up by source, campaign, and date range.
Plan Gating
Contact detail panel (quick-view)
All plans
Kanban view, full detail page, timeline, custom fields, stage drag
Agency
Auto-creating contacts from form submissions
Agency (via Form Submissions)
Creating/updating contacts via the API
Agency (via API)
If you open Contacts on a non-Agency plan, you'll see a pricing prompt. Existing contact records remain accessible via the table view and individual detail panels.
Common Questions
Can I import contacts from a CSV?
Yes โ Contacts โ Add contact โ Import from CSV. Required columns are name and at least one of phone or email. Custom field columns are matched automatically by their header to a custom field's key.
What happens to a contact's data if I archive a custom field?
The values are kept on the contact. The field just stops appearing in new contact forms and the Custom Fields tab. To bring it back, un-archive it from Settings โ Custom Fields.
Can two workspaces share contacts?
No. Contacts are workspace-scoped. The same phone number can exist as a contact in multiple workspaces, but each workspace's funnel is independent.
How do duplicate contacts get merged?
Automatic merging isn't available yet. When a new call or form comes in, Ring Tonic matches it to an existing contact by checking, in order: a reference ID from your other tools, then phone number, then email. If a match is ambiguous, it doesn't guess โ it flags it so you can decide. A manual merge tool is on the roadmap.
Can I create custom stages?
Not yet โ the stages are a fixed set. Workspace-customizable stages are planned but not committed.
How are deleted contacts handled?
Deleted contacts are moved to the trash โ they disappear from the Kanban and table, but their identifiers (reference ID, phone, and email) stay reserved. If the same lead comes in again later, it's restored instead of creating a duplicate.
Related Guides
Form Submissions โ capture leads from a website
API โ push contacts and conversions programmatically
Analytics โ funnel chart and revenue-by-source reporting
Webhooks โ subscribe to
contact.stage_changedandconversion.recorded
Last updated