Redmine CRM
CRMA CRM that lives inside Redmine. Leads, contacts, companies, deals, quotations and contracts, filtered, grouped and exported with Redmine’s own query engine and filed against the projects and issues you already have.
Multiple servers: $399
- Redmine
- 5.1 · 6.1 · 7.0
- Database
- MySQL · PostgreSQL
- Languages
- 50
- Record types
- 8
- Permissions
- 55
- Tests
- 585
Leads, contacts and companies
Convert a lead into a contact, a company and a deal in one step, with duplicates checked first. Companies nest into parents and subsidiaries, and contacts export as vCard.
Deals and pipelines
A kanban board per pipeline, with stages, colours and probabilities you define. Every column totals its deals and shows the weighted figure, so the board reads as a forecast.
Quotations and contracts
Line items from your product catalogue with tax and discounts, a PDF and a recorded send. Contracts move from draft to activation, with amendments and renewal notices.
Every list is a Redmine query
Filter, group with counts and totals, choose columns, sort, save and share with a role. Edit in bulk, export to CSV, and import through Redmine’s own wizard.
Inside Redmine, not beside it
Link records to issues, turn a won deal into a project, and use Redmine’s roles, custom fields, attachments, global search, mail and REST API.
55 permissions, 12 switchable features
View, add, edit and delete per record type, plus record-level visibility. A feature you switch off answers 404 instead of just hiding its menu entry.
A CRM that lives inside Redmine
A customer-relationship manager built as a Redmine plugin rather than beside one. A lead is filtered the way an issue is filtered, a deal is grouped the way an issue is grouped, and the query you build is saved and shared through the same mechanism, because it is the same mechanism.
It keeps its own tables and reads nobody else’s. Nothing here needs another plugin installed, and nothing here writes to another plugin’s data.
No lock-in
Every list exports to CSV, every contact to vCard, and the whole dataset is yours in ordinary tables you can query directly.
The screens
Seven places you will spend your time. The figures quoted are illustrative sample data.
Dashboard
Leads, contacts and the pipeline over a period you choose. Every figure is a link into the list it counts, carrying the filter with it, and the weighted value names its own formula, so nobody has to guess what it means.
Kanban board
Drag a deal between stages and its probability, close date and history follow the move. Each column totals its own deals and shows the weighted figure beneath, so the board reads as a forecast and not just a to-do list.
Any list
Redmine’s query engine, pointed at CRM records: filter, group with per-group counts and totals, choose your columns, sort, save the query and share it with a role. The export honours the filter rather than the page you happen to be looking at.
Activity calendar
Month, week, day or agenda. State is in the colour and in the chip’s title, so it does not depend on being able to tell red from green, and it subscribes as iCalendar.
One record, everything about it
Deals, activities, quotations, contracts, linked issues, notes, attachments and sent mail, all on the record they concern. Download the contact as a vCard straight into a phone.
Searchable everywhere
Any list long enough to need it gets a real search box, and the long ones (companies, contacts, owners) fetch as you type instead of rendering nine hundred options. A company nobody has recorded yet can be typed in and added on the spot.
Your vocabulary, not ours
Statuses, sources, industries, activity types, lost reasons and product categories are yours to add, rename, reorder and retire. Retiring one keeps it on the records that already carry it instead of blanking them.
Eight record types
Each with its own list, form, permissions and custom fields.
Leads
One name, not two. A company typed as free text because a lead often names one you have never heard of, and remembered as a real link when it matches. Convert a lead and it becomes a contact, a company and a deal in one step, duplicates checked first.
Contacts and companies
Companies nest into parents and subsidiaries. Contacts carry work and home addresses, two emails, phone and mobile, job title and department. Both export as vCard.
Deals
Stage, probability, amount, currency, weighted value and expected close date. Winning or losing one is an action with its own permission, and losing asks why.
Quotations
Line items from your product catalogue, tax and discounts, a PDF, and a send that records what went out and when. Accepted, rejected or expired is a state, not a note.
Contracts
Draft through review, approval, signature and activation, with amendments that version the terms and renewals that look ahead by the notice period you set.
Activities and notes
Calls, meetings, emails and tasks against any record, with reminders, a calendar and an iCalendar feed. Notes thread under the record they belong to.
Lists and export
Every list is a Redmine query, which means none of this had to be reinvented and none of it behaves differently from the issue list your team already knows.
| What you can do | How it works |
|---|---|
| Filter | On any field, with the operators Redmine already gives you. |
| Group | By status, owner, company, stage, source or type, with a count and a total per group. |
| Choose columns | Sort on them, and total the numeric ones. |
| Save the query | Privately, or shared with the roles you pick. It appears in the sidebar beside the list. |
| Table or cards | The same records, laid out either way. The cards show the columns you chose. |
| Act in bulk | Tick rows and edit or delete them together, each record still checked against your permissions and its own rules. |
| Export | To CSV, and contacts to vCard 3.0, the format Outlook, Apple Contacts and Android all read. |
Import
Companies, contacts and leads import from CSV through Redmine’s own import wizard, with the same column mapping and dry run you get for issues.
Pipeline and reporting
A pipeline is a named set of stages, each with a colour and a probability. You can run several, since new business and renewals rarely share a shape, and the board, the forecast and the dashboard all read from whichever one the deal belongs to.
Qualification → Proposal → Negotiation → Closing → Won or Lost
Reports cover the funnel, win and loss rates, why deals were lost, forecast by period, activity volume, and contract renewals coming due. Each one is a page of its own with a bookmarkable URL.
Inside Redmine, not beside it
This is the part a standalone CRM cannot do.
| Redmine feature | What the CRM does with it |
|---|---|
| Issues | Link any CRM record to issues. The issue shows what it is linked to, and the record shows the issues. |
| Projects | Turn a won deal or a signed contract into a project. Every list works globally or scoped to one project, following the project menu. |
| Permissions | 55 of them, in Redmine’s own roles: view, add, edit and delete per record type, plus convert, change stage, merge, export, import and manage settings. Record-level visibility on top: owner only, team, project members, or everyone. |
| Custom fields | On all eight record types, administered on Redmine’s own custom-fields page, filterable and exportable like any other. |
| Attachments | On records, through Redmine’s storage and its permissions. |
| Search | CRM records appear in Redmine’s global search. |
| Send from a record, with templates. Notifications follow each user’s own preferences, set on their account page. | |
| REST API | On all eight record types: read, create, update and delete, in JSON or XML, with the API key auth you already use. |
Configuration
Twelve features switch off independently. Switching one off closes its URLs, not just its menu entry: a feature you have turned off answers 404 rather than hiding the link and leaving the page reachable.
The twelve features
Leads, Companies, Contacts, Deals, Activities, Products, Quotations, Contracts, Reports, Duplicates, Imports and Emails.
| Setting | What it does |
|---|---|
| Record numbering | Prefix per record type, padding width, and an optional year in the number, as in LD-2026-000148. |
| Currencies | A default, a base for comparison, and which currencies the forms offer at all. |
| Default visibility | What a new record is visible to before anyone changes it. |
| Rounding | Decimal places and half-up, half-even or half-down. |
| Reminder lead time | How long before an activity is due its reminder is sent, when the activity does not say. |
| Renewal notice | Which days before a contract ends should raise a renewal. |
| Notifications | Which of the events send mail at all. Each user opts out of the rest on their own account page. |
| Lookup values | Renaming a value changes it everywhere it is already used. Deleting one that records point at asks what they should say instead. |
Compatibility
| Redmine | Rails | Database | Status |
|---|---|---|---|
| 7.0 | 8.1 | MySQL 8 · PostgreSQL | Supported |
| 6.1 | 7.2 | MySQL 8 · PostgreSQL | Supported |
| 5.1 | 6.1 | MySQL 8 · PostgreSQL | Supported |
One codebase across all three, with no version-specific branch to pick. The plugin brings its own stylesheet and one vendored library (Select2, MIT) and loads them only on its own pages: nothing is injected into Redmine’s issue, project or admin screens, and nothing is fetched from a third-party host at runtime, so an installation behind a firewall behaves the same as one that is not.
Languages
All 50 locales Redmine ships, each carrying the full key set, so a missing translation can never put “Translation missing” on a page. Untranslated entries fall back to English.
Your data
The plugin owns its tables end to end. It does not read or write any other plugin’s data, and nothing else is required for it to work.
Standalone
No dependency on an invoicing, billing or finance plugin. If you run one, there is an optional export hand-off you switch on yourself; by default nothing leaves.
Ordinary tables
Plain relational schema you can query, back up and report on with whatever you already use.
Portable
Every list exports before you go, and contacts leave as vCard. Schema migrations reverse; the ones that seed starting values or merge existing data are one-way, as you would expect.
Audited
Records keep their own timeline: who changed what, and when.
Install in three steps
Requires shell access and the ability to run rake tasks. Always back up before installing a plugin.
cd /path/to/redmine tar xzf redmine_crm.tar.gz -C plugins/
# no gems to add: the plugin has no runtime dependencies of its own RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=redmine_crm
# Project → Settings → Modules → turn on CRM in each project that should have it # Administration → Roles → grant the permissions you want # global lists are governed by the same permissions across a user’s memberships
Does it work with my existing issues?
Can I install it on a hosted Redmine?
What does the license cover?
Is the source available?
How do refunds work?
Pricing
Single server
One Redmine instance · unlimited users · 12 months of updates.
Multiple servers
Unlimited Redmine servers · unlimited users · 12 months of updates.