Workflow: Lead → Cash
Modules involved: Leads · Opportunities · Proposals · Contracts · Invoices · Payments
Who uses it: SDR, Sales Agent, Sales Manager, Finance
Typical duration: 1 day – 6 months (depends on the sales cycle)
Overview
This is the core sales workflow in CRMConnect: from the first contact with a prospect to collecting payment. Each stage has a dedicated module; transitions between modules are made through explicit actions (conversion, creation from an existing record) that preserve the full history.
Flow diagram
[LEAD]
│ configurable status (pipeline + stage)
│ ↓ Converted to Opportunity (manual, "Add Opportunity" button)
│
[OPPORTUNITY]
│ status: configurable from Settings → Opportunity Statuses
│ ↓ Create Proposal (from opportunity or directly)
│
[PROPOSAL]
│ Draft (6) → Sent (4) → Reviewed (1) → Accepted (3)
│ ↘ Rejected (2) / Revised (5)
│ ↓ Converted to Invoice OR to Sales Order
│
[CONTRACT] ←── optional, created from an accepted Proposal or independently
│ digitally / manually signed
│
[INVOICE]
│ Draft (6) → Sent (1) → Partially Paid (3) → Paid (2)
│ ↘ Overdue (4) / Cancelled (5)
│
[PAYMENT]
│ recorded manually or via gateway
│
[CLOSED - WON ✓]
Step by step
1. Lead — Capturing the prospect
Where: /admin/leads
How a lead enters:
- Manually: Add Lead button from the leads list
- Web form: embed
/admin/leads/formson your website - Email pipe: email sent to the capture address configured at
/admin/leads/email_integration - Excel import:
/admin/excelimport - Facebook Lead Ads: automatically via the
/admin/facebookleadsintegrationintegration - Workflow automation: trigger on external event
Key fields at creation:
| Field | Required | Notes |
|---|---|---|
| Name | Yes | Contact person |
| Company | Recommended | Prospect's organization |
| Email / Phone | Recommended | At least one of the two |
| Status | Yes | Configurable statuses from /admin/leads/statuses |
| Pipeline | Yes | Groups leads by sales workflow |
| Source | Recommended | For ROI reporting by channel |
| Assigned to | Recommended | The allocated agent |
Lead statuses are fully configurable — there are no fixed values. Common examples: New, Contacted, Qualified, Demo Scheduled, Proposal Sent. Leads can be manually marked as Lost (with a reason) or Junk without being deleted.
Actions on a lead:
- Add note, call, email, SMS from the activity tab
- Set a follow-up reminder
- Attach files
- Associate with a marketing campaign
- Edit custom fields
2. Opportunity — Qualifying the prospect
Where: /admin/leads (filter: Opportunities) or /admin/opportunities
How it is created: From an open lead, use the Convert to Opportunity button (or Add Opportunity directly). Contact data is copied automatically; the lead remains active and displayed separately.
Technically, opportunities are leads with the
is_opportunity = 1flag. They appear in the Opportunities list, not in the Leads list.
Additional fields to fill in:
| Field | Notes |
|---|---|
| Estimated value | Potential transaction amount |
| Opportunity status | Configurable from /admin/opportunities/statuses |
| Estimated close date | For sales forecasting |
| Probability (%) | Contributes to the weighted pipeline |
Actions:
- Proposal created directly from the opportunity (automatically populates the client and value)
- Notes and activities separate from the original lead
3. Proposal — Quoting
Where: /admin/proposals
How it is created:
- From an opportunity: Create Proposal button — pulls contact data and value
- From a lead: similar
- Directly from the menu:
/admin/proposals/list_proposals→ Add
Proposal statuses:
| Code | Status | When it appears |
|---|---|---|
| 6 | Draft | On creation; not visible to the client |
| 4 | Sent | After pressing Send (automatic email with portal link) |
| 1 | Reviewed | Client opened the link from the portal |
| 7 | (sent manually) | Status change without email |
| 3 | Accepted | Client clicks Accept in portal OR you change it manually |
| 2 | Rejected | Client clicks Reject in portal OR you change it manually |
| 5 | Revised | Client requests changes |
An expired proposal (past the
open_tilldate) can no longer be accepted by the client from the portal.
What a proposal contains:
- Product/service lines with quantity, unit price, taxes, discount
- Terms and conditions
- Digital signature (optional)
- Attached files
- Internal notes
Proposal → invoice conversion:
When the proposal is Accepted, the Convert to Invoice button appears (or Convert to Sales Order). All lines are automatically copied into the new document. The link is maintained: proposals.invoice_id → invoices.id.
4. Contract — The legal document (optional)
Where: /admin/contracts
When it is used: Contracts are not mandatory in the workflow — some companies go directly from Proposal → Invoice. Contracts are relevant when there is a recurring written commitment or a SLA.
How it is created:
- From an accepted proposal: Create Contract button
- Independently: from the Client Documents menu
Digital signature: if the Document Management module or the contract signature functionality is enabled, the client receives a link and signs electronically.
Contract statuses: configurable. Examples: Draft, Active, Expired, Terminated.
An expired contract can generate an automatic reminder via email (configurable in Workflow Automation).
5. Invoice — The payment request
Where: /admin/invoices
How it is created:
- Converted from an accepted Proposal (most common)
- Converted from a Sales Order
- Directly:
/admin/invoices/list_invoices→ Add Invoice - Automatically from a project (see Workflow 2)
Invoice statuses:
| Code | Status | When it appears |
|---|---|---|
| 6 | Draft | On creation |
| 1 | Not Sent | Saved, not yet sent |
| 1 | Sent | Sent to the client by email |
| 3 | Partially Paid | At least one partial payment received |
| 2 | Paid | Fully settled |
| 4 | Overdue | Due date passed, unpaid |
| 5 | Cancelled | Manually marked as cancelled |
Important invoice settings:
- Series and prefix (configurable per company at
/admin/billing/config) - VAT per line or globally
- Currency (multi-currency supported)
- Due date — generates an automatic reminder on expiry
- Available payment method (online payment link if gateway configured)
Sending an invoice:
The Send button generates an email with the PDF attached and a client portal link. The client can download the invoice and register payment online.
eFactura (Romania):
If the instance is configured for Romania and the ANAF token is active, an eFactura button appears on each invoice:
- Generate XML — produces the UBL file compliant with the e-Factura standard (pre-check)
- Send to ANAF — submits the invoice to SPV; returns the ANAF registration number
- Check status — queries ANAF for the validation status
- Download archive — downloads the ZIP with signed XML + PDF returned by ANAF
If Auto-send eFactura = ON (configurable at /admin/billing/efactura), submission happens automatically after X days from issuance.
→ eFactura
6. Payment — Collecting payment
Where: /admin/payments
How it is recorded:
- Manually (most common): from the invoice, Record Payment button — fill in the amount, date, payment method
- Partially: successive partial payments can be recorded; the invoice moves to Partially Paid status
- Automatically: if a payment gateway is configured (Stripe, etc.) and the client pays from the portal
- Advance payment on the client's account — applied later to an invoice
When a payment is recorded:
- Invoice moves to Paid status (if amount = total) or Partially Paid
- A payment receipt/confirmation is generated
- The activity is logged in the client's history
What is created automatically
| Event | Created automatically |
|---|---|
| Lead via web form | Lead with source filled in |
| Lead via Facebook Lead Ad | Lead with mapped fields |
| Proposal sent | Email with portal link + staff notification |
| Client opens the proposal | Status → Reviewed; staff notification |
| Proposal accepted | Staff notification; activity log |
| Invoice converted from proposal | All lines copied; invoice_id link set |
| Invoice sent | PDF email + client portal link |
| Due date passed | Status → Overdue; reminder email (if configured) |
| Payment recorded | Invoice status updated; activity log |
| Invoice sent to ANAF | ANAF registration number returned; status → Awaiting Validation |
| Invoice validated by ANAF | Status → OK; signed archive available for download |
Points where the workflow may stall
| Problem | Likely cause | Solution |
|---|---|---|
| Lead does not appear in pipeline | Pipeline not set or status not assigned to pipeline | Check /admin/leads/pipelines and /admin/leads/statuses |
| Proposal cannot be accepted from portal | open_till date expired |
Extend the date or change the status manually |
| "Convert to Invoice" button does not appear | Proposal not in Accepted status | Change the status to Accepted |
| Invoice does not send email | SMTP not configured or client address missing | Check SMTP settings at /admin/settings → Email |
| Payment does not close the invoice | Amount paid < invoice total (including taxes) | Verify that the amount includes VAT |
| eFactura — ANAF validation error | XML rejected (missing field or incorrect format) | Correct the invoice (client VAT number, address, VAT), regenerate XML and resubmit |
| eFactura — expired token | ANAF token has expired | Regenerate the token at /admin/billing/efactura → Regenerate button |
Reports relevant to this workflow
- Sales Report —
/admin/reports/sales— revenue by period - Leads Report —
/admin/reports/leads— conversions by source and pipeline - Sales Overview —
/admin/sales— combined KPIs - Goals —
/admin/goals— sales target vs actual
Modules involved — detailed documentation
- Leads · Lead Pipelines · Lead Sources
- Opportunities
- Proposals
- Contracts
- Invoices · Recurring Invoices
- Payments
- eFactura
- Lead Scoring · Sales Commission
Each stage in this workflow auto-fills the next — an accepted Proposal populates the Sales Order, a confirmed Sales Order populates the Invoice. Avoid manual data re-entry by always converting from the previous document rather than creating a new one independently.
Do not skip the Contract step when legally required. An invoice issued without a signed contract has no contractual backing — if a dispute arises, the absence of a contract weakens your legal position regardless of the invoice status.