CRM that knows where every lead came from: down to ROAS
Collect leads from every channel, see which campaigns bring visitors, run your own funnel, and learn which ads pay back: not just which get clicks.
| Campaign | Source | Spent | Leads | Revenue | ROAS |
|---|---|---|---|---|---|
| Spring 2026 | Meta | $4,200 | 62 | $18,900 | 4.5x |
| Search brand | $2,800 | 41 | $15,400 | 5.5x | |
| Retargeting | Meta | $900 | 19 | $6,100 | 6.8x |
| Winter sale | Meta | $1,500 | 12 | $2,300 | 1.5x |
You pay for ads but cannot see past the click
The lead lands in email, someone types a spreadsheet, someone forgets to call. At the end you do not know which campaign made money.
Every source, one inbox
Site forms, Meta Lead Ads, API, webhooks, import, and manual entry: all in one place with source and campaign preserved.
Same person, three forms? One record. Dedupe on phone or email; each submission adds to history.
- Site forms: any form; WordPress plugin available
- Meta Lead Ads, API intake, webhooks
- Dedupe on phone and email
- Source, campaign, and ad on every lead
| Source | Form / campaign | When | Lead |
|---|---|---|---|
| Site form (WordPress) | Quote request | 2 min ago | New |
| Meta Lead Ads | Spring 2026 | 14 min ago | New |
| API intake | Partner app | 1 h ago | Existing |
| Form rivil.app | Request a demo | yesterday | New |
See which campaigns bring people: not only who filled a form
A small script remembers each visitor’s UTM (source, medium, campaign, term, content), first touch and last. Default 30 days even if they come back before converting.
On submit, the lead arrives in CRM with the full path. You know which ad brought them and what convinced them to write.
- First and last source on every lead
- WordPress plugin or we wire your forms
- Queue and retry if CRM is briefly down
- Events to dataLayer for Google Tag Manager
Stages are yours
Define stages and statuses with colors and won/lost rules. Require fields before certain moves so nothing stays half empty.
If a lead sits too long, someone gets notified.
- Separate funnel per company
- Required fields before statuses
- SLA notifications when leads stall
- Custom fields on leads and deals
Where they came from and what happened next
Open a lead and see everything: source, form data, calls, decisions. No asking the same questions twice.
Company leads can carry firm details you capture once and reuse.
- Full history: forms, notes, status changes
- Owner, value, and status at a glance
- Structured company fields when you need them
What to call today, in order
Each rep has a daily list: calls, meetings, leads to revisit. Overdue items surface so nobody waits without an answer.
- Daily agenda per rep
- Overdue leads pushed to the top
- Assignment to reps
Calling to confirm appointment
Asked for quote, follow up needed
Presentation meeting
No answer twice
See which campaigns make money
Ad spend ties to leads and collected payments. Cost per lead and real ROAS per campaign: not click rate alone.
Meta learns better: on status change, CRM sends the event to Conversions API.
- Cost per lead and ROAS by campaign, source, ad
- Conversions API events per status
- ActiveCampaign and Mailchimp sync
- Payments on deals for correct ROAS
| Campaign | Source | Spent | Leads | Revenue | ROAS |
|---|---|---|---|---|---|
| Spring 2026 | Meta | $4,200 | 62 | $18,900 | 4.5x |
| Search brand | $2,800 | 41 | $15,400 | 5.5x | |
| Retargeting | Meta | $900 | 19 | $6,100 | 6.8x |
| Winter sale | Meta | $1,500 | 12 | $2,300 | 1.5x |
# Any site form → RIVIL CRM Form "Quote request" name, phone, email → lead utm_source, utm_campaign → source, campaign page URL → history entry
Site forms land in CRM on their own
Tell us which forms you have; we map fields into CRM with source and campaign. WordPress has a plugin. Nobody copies rows by hand.
Lead becomes client; booking becomes revenue
With RIVIL ERP, leads and deals appear there; bookings and payments in ERP update CRM automatically. See the path from first ad to last invoice.
- Leads and deals visible in ERP
- Booking or payment moves status in CRM
- API and webhooks to other tools
# CRM notifies you deal.status_changed status → Booked deal.won value 3,500 # HMAC signed, retried if needed
What people ask
Can I use CRM without ERP?
Yes. CRM works on its own. With ERP, the two sync automatically.
Where can leads come from?
Site forms (we wire any form; WordPress has a dedicated plugin), Meta Lead Ads, API, webhooks, import, or manual entry.
Can the funnel be mine?
Yes. Your stages and statuses, colors, and won/lost rules. Each company in CRM has its own funnel.
What if the same person submits twice?
Leads dedupe on phone or email: one person, every touch in history.
Does it connect to Meta?
Yes. On status change, CRM can send events to Meta Conversions API: you choose which statuses.
Need a website too?
Site forms send each lead to CRM with source and path: on a fast, SEO-ready site.