Accounts, contacts and pipeline, in one system.
Multi-channel campaigns — segmentation, sends, events, and revenue attribution
Explore the specification
| Campaign Number | Name | Type | Status | Start Date |
|---|---|---|---|---|
| CMP-11937 | Campaign 151 | EmailDrip | Planned | 28 Sep |
| CMP-55259 | Campaign 721 | WebinarSeries | Launched | 20 Sep |
| CMP-92864 | Campaign 507 | FieldEvent | Active | 08 Sep |
| CMP-33030 | Campaign 673 | TradeShow | Paused | 05 Sep |
| CMP-96293 | Campaign 669 | DirectMail | Completed | 08 Sep |
| CMP-86782 | Campaign 656 | DigitalAds | Planned | 11 Sep |
| Campaign Number | Name | Type | Owner | Start Date |
|---|---|---|---|---|
| CMP-89885 | Campaign 640 | EmailDrip | ER | 17 Sep |
| CMP-72941 | Campaign 919 | WebinarSeries | EP | 16 Sep |
| CMP-34424 | Campaign 127 | FieldEvent | GK | 21 Sep |
| CMP-55625 | Campaign 589 | TradeShow | ZD | 24 Sep |
| CMP-91485 | Campaign 675 | DirectMail | SR | 21 Sep |
| CMP-64178 | Campaign 803 | DigitalAds | WZ | 16 Sep |
| Response Number | Campaign | Channel | Responder Type | Responder Email |
|---|---|---|---|---|
| RSP-18935 | CMP-31660 | Lead | [email protected] | |
| RSP-61030 | CMP-43531 | Social | Account | [email protected] |
| RSP-74600 | CMP-91830 | DirectMail | Anonymous | [email protected] |
| RSP-57623 | CMP-11170 | Webinar | Lead | [email protected] |
| RSP-21143 | CMP-48305 | Event | Account | [email protected] |
| RSP-47784 | CMP-18096 | DigitalAd | Anonymous | [email protected] |
| Opportunity | Account | Campaign | Attribution Model | Touch Position |
|---|---|---|---|---|
| OPP-691 | ACC-240 | CMP-43185 | AM-2192 | First |
| OPP-597 | ACC-407 | CMP-48664 | AM-4650 | Middle |
| OPP-661 | ACC-416 | CMP-80016 | AM-1537 | Last |
| OPP-684 | ACC-340 | CMP-45191 | AM-9912 | Only |
| OPP-752 | ACC-895 | CMP-40393 | AM-4546 | First |
| OPP-750 | ACC-251 | CMP-73889 | AM-6533 | Middle |
| Campaign | Spend | Attributed Revenue | ROI | Lead Count |
|---|---|---|---|---|
| CMP-59428 | 47,235.56 | 28,003.09 | 120 | 20 |
| CMP-66559 | 29,451.74 | 33,831.70 | 100 | 31 |
| CMP-42762 | 12,133.29 | 17,707.99 | 850 | 23 |
| CMP-12055 | 33,015.89 | 13,648.75 | 140 | 5 |
| CMP-61717 | 38,791.67 | 25,470.57 | 610 | 35 |
| CMP-30038 | 3,302.82 | 31,959.45 | 170 | 39 |
| Segment Code | Name | Entity Type | Owner | Member Count |
|---|---|---|---|---|
| SC-137 | Segment 719 | Leads | TJ | 30 |
| SC-264 | Segment 334 | Accounts | WX | 16 |
| SC-267 | Segment 793 | Both | VD | 25 |
| SC-397 | Segment 717 | Leads | FM | 2 |
| SC-427 | Segment 296 | Accounts | ZN | 34 |
| SC-862 | Segment 327 | Both | LF | 16 |
| Campaign | Session Name | Session Type | Start At | Event Venue |
|---|---|---|---|---|
| CMP-14819 | Session 511 | Keynote | 14 Sep | EV-2035 |
| CMP-96073 | Session 679 | Breakout | 16 Sep | EV-3991 |
| CMP-35410 | Session 261 | Workshop | 09 Sep | EV-3756 |
| CMP-55036 | Session 621 | Webinar | 13 Sep | EV-8982 |
| CMP-25793 | Session 895 | Reception | 28 Sep | EV-8312 |
| CMP-76269 | Session 233 | BoothSession | 07 Sep | EV-2492 |
| Campaign | Session Name | Start At | Capacity | Registered Count |
|---|---|---|---|---|
| CMP-81575 | Session 198 | 09 Sep | 570 | 9 |
| CMP-12319 | Session 759 | 28 Sep | 760 | 20 |
| CMP-78254 | Session 352 | 06 Sep | 840 | 33 |
| CMP-90013 | Session 153 | 12 Sep | 290 | 5 |
| CMP-54175 | Session 812 | 20 Sep | 360 | 21 |
| CMP-61286 | Session 455 | 11 Sep | 940 | 12 |
Illustrative records generated from the specification. Explore the views to inspect the planned operating model.
Built for your team.
Sales leaders who need a pipeline the whole team keeps honest.
- Defined tables
- 16
- Operational views
- 12
- Defined roles
- 7
- Reports
- 8
Defined in the planned system specification.
What’s inside.
Multi-channel campaigns — segmentation, sends, events, and revenue attribution
Accounts
Companies, sites and ownership
Contacts
People, roles and consent
Pipeline
Stages, probability and next steps
Quotes
Priced proposals with approval
Activities
Calls, meetings, email and tasks
Forecast
Commit, best case and quota
- 01Lead
- 02Qualify
- 03Proposal
- 04Negotiate
- 05Won
Built for your team
Marketing Manager
Owns Campaigns end-to-end. Approves campaign launch, owns the budget, signs off on spend, and reads ROI. The named owner on most Campaigns.Owner rows.
Marketing Operations
Builds Segments and SegmentRules, manages CampaignChannels and ChannelTargets, runs the recompute and fan-out jobs, monitors deliverability and suppression. The hands-on engine of the campaign factory.
Field Marketing
Owns FieldEvent and TradeShow campaigns specifically. Manages EventVenues and on-site logistics, owns EventSessions, sees EventAttendance, and reconciles event spend.
Demand Gen Manager
Owns digital and content campaigns — DigitalAds, EmailDrip, WebinarSeries, IntegratedMulti. Sees ad-platform spend pulls, content engagement, and digital ROI.
Sales Operations
Read-only for attribution. Reconciles campaign-attributed revenue back to commission Credits in crm-commissions. The auditor seat between Marketing and Sales.
Viewer
Executive read-only on ROI. CMO, CFO, board seat. Sees the Marketing ROI dashboard and the Campaign ROI report; cannot drill into PII or per-line spend.
Reports and dashboards
Explore what each report measures and the records behind it.
Marketing ROI Dashboard
Per Campaign: Spend, AttributedRevenue, ROI, InfluencedPipeline, LeadCount, OpportunityCount, CostPerLead, CostPerOpportunity. Drills from total marketing investment down to Campaign Type, Channel, Owner, and individual Campaign. The CMO and Viewer landing report.
Campaign Performance
Per Campaign by week: Sends, Opens, Clicks, FormSubmits, Registrations, Attendees, Responses, Conversions. Sliceable by Channel and by Segment. Tracks goal attainment vs. Campaigns.GoalType/GoalValue.
Channel Mix Analysis
Spend, Responses, Leads, Opportunities, AttributedRevenue, ROI by Channel across all campaigns in the period. Answers "which channels are pulling weight" and feeds the next-quarter budget allocation.
Segment Performance
Per Segment: target volume, response rate by Channel, Lead-to-Opportunity conversion, attributed revenue per member. Identifies high-performing segments and stale ones.
Event ROI
Per FieldEvent / TradeShow / WebinarSeries Campaign: registrations, attendees, no-show rate, captured responses, attributed revenue, cost per attendee, cost per qualified lead. The Field Marketing post-event readout.
Attribution by Model Comparison
Same closed-won revenue base, attributed under each AttributionModel (FirstTouch, LastTouch, Linear, TimeDecay, WShape, UShape) side by side. Shows how the active model choice changes the credit split — used to evaluate model swaps before a controlled rollout.
Budget vs. Actual
Per Campaign: Budget by Channel vs. Spend by Channel, variance, expected pace vs. actual pace. Triggers the budget-pacing alert and the next-quarter forecast.
Lead-to-Pipeline Attribution
From Lead source Campaign through Opportunity creation through ClosedWon. Shows the funnel volume, conversion rates, and attributed revenue per Campaign × Channel × Segment.
One connected workspace
From Lead source Campaign through Opportunity creation through ClosedWon. Shows the funnel volume, conversion rates, and attributed revenue per Campaign × Channel × Segment.
| Opportunity | Account | Campaign | Attribution Model | Touch Position |
|---|---|---|---|---|
| OPP-691 | ACC-240 | CMP-43185 | AM-2192 | First |
| OPP-597 | ACC-407 | CMP-48664 | AM-4650 | Middle |
| OPP-661 | ACC-416 | CMP-80016 | AM-1537 | Last |
| OPP-684 | ACC-340 | CMP-45191 | AM-9912 | Only |
- Opportunity
- OPP-691
- Account
- ACC-240
- Campaign
- CMP-43185
- AttributionModel
- AM-2192
- TouchPosition
- First
- Weight
- 920
- AttributedAmount
- 12,909.79
owner Sales Operations
Go from the big picture to the details behind it. Open any record to see its status, owner and history.
Illustrative records. Connections follow the authored specification.
Controls and automation
System checks
segment-recompute-on-rule-change — appEventTrigger on SegmentRules.record.changed → code.executor runs the rule predicate over Leads / Accounts, upserts SegmentMembers (insert new, refresh LastSeenAt on existing, soft-delete missing), bumps Segments.LastComputedAt and MemberCount.
campaign-launch-fanout — appEventTrigger on Campaigns.record.updated (Status: Launched) → code.executor resolves CampaignChannels, materializes ChannelTargets per Segment × Channel, queues the per-channel send sub-workflow, validates suppression.
email-channel-send — appEventTrigger on ChannelTargets.record.created where Channel=Email → erpaiNode invokes the crm-email-marketing send pipeline with Segment members + EmailTemplate + CAN-SPAM footer; updates ChannelTarget.Status and ProviderJobRef.
social-channel-publish — appEventTrigger on ChannelTargets.record.created where Channel=Social → erpaiNode invokes crm-social-media-management Posts with the SocialPost asset; updates ChannelTarget.Status.
direct-mail-list-export — appEventTrigger on ChannelTargets.record.created where Channel=DirectMail → code.executor exports CSV (name, US address, ZIP) to the configured mail vendor SFTP / API; updates ChannelTarget.Status to Sent on confirmation.
event-attendance-sync — webhookTrigger from event platforms (Cvent, Hopin, Zoom Webinars) → code.executor upserts EventAttendance line items keyed on EventSession + AttendeeEmail, creates parent Responses row (ResponseType: Registration on register, Attendance on check-in, NoShow on session end without check-in).
response-attribution — appEventTrigger on Responses.record.created → erpaiNode resolves the Lead or Account, writes the touch to that record's timeline (via the crm-leads and crm-pipeline integrations), no AttributionTouches yet (those wait for ClosedWon).
attribution-recompute-on-deal-close — appEventTrigger on crm-pipeline.Opportunities.record.updated (Status: ClosedWon) → code.executor reads the active AttributionModel and the Account's Responses in the lookback window, applies the model weights (FirstTouch / LastTouch / Linear / TimeDecay / WShape / UShape), writes one AttributionTouches row per touch idempotently on (Opportunity, Response, AttributionModel).
campaign-budget-pacing-alert — scheduleTrigger daily 09:00 → code.executor reads active Campaigns, computes expected pace by channel from StartDate / EndDate / CampaignBudget, emailSend to the Marketing Manager and Owner if Spend > expected pace × Budget.
roi-recompute — scheduleTrigger nightly 02:00 → code.executor recomputes CampaignROI per Campaign: Spend, AttributedRevenue, ROI, InfluencedPipeline, LeadCount, OpportunityCount, CostPerLead, CostPerOpportunity. Materializes one row per Campaign per AsOfDate so trend charts work. Integrations: inbound from web forms (Responses), event platforms (Cvent, Hopin, Zoom Webinars — EventAttendance), digital ad platforms (Google Ads, LinkedIn Ads, Meta Ads — CampaignSpend), crm-leads (new leads tagged with Campaign), crm-pipeline (Opportunities ClosedWon for attribution). Outbound to crm-email-marketing (per-target send invocation, CAN-SPAM compliant), crm-social-media-management (publish invocation), direct mail vendors (CSV list export), SMS gateway (TCPA-compliant send), GL / Finance (CampaignSpend posting in USD), and email (pacing alerts, ROI digests). All amounts USD; all addresses US (state, ZIP); CAN-SPAM enforced on every email send; TCPA consent enforced on every SMS send.
Make it work your way.
Use Proto to configure this system for your business. Review fields, rules and approvals before releasing changes.
Previews contain illustrative data from the system specification.