💰 Sales Bridge · revenue attribution

Every dollar, attributed.

Your store knows what sold. Your chat, promos and pages know who and why. Sales Bridge is the connective tissue that joins them, so every paid order carries its full story back to the visit, the conversation and the campaign that created it. WHMCS, Stripe, Paystack, Shopify or your own checkout.

First + last + multi-touchNew vs renewal, automaticComposite lead intent score7-day self-heal backfill
Chat closed this deal
+₦154,800 · attributed to /pricing
Live Signals in. Attributed revenue out. Live chat "Pro plan?" Promo /pricing ×3 PIPELINE qualified closing SALE +₦154,800 REVENUE · ATTRIBUTED THIS MONTH ₦15,408,000 ₦21,890,400 100% traced
100%of sales traced to their source
6 platformsWHMCS · Stripe · Paystack · Shopify · custom
7-dayself-heal backfill on every load
0–100composite intent score per visitor
How it connects

One event in. Full attribution out.

There's no SDK to bolt onto your checkout. Your billing system fires the event it already fires (invoice.paid) and Sales Bridge does the joining. A small BillingMirror per platform maps that platform's paid-order event onto one universal conversion row, linked to the visitor session that led there.

Conversion joinLinked
invoice.paid → conversion BILLING EVENT invoice.paid · #5512 VISITOR SESSION /pricing · chat · ads BillingMirror joins UNIVERSAL CONVERSION ROW · opsiq_conversions +₦154,800 · WHMCS · first: ads · closed: chat · NG NEW vs RENEWAL · DETECTED new sale no prior paid invoice on this subscription
No checkout SDKJust the event you already fire
01

Connector fires

A BillingMirror per platform maps that store's paid-order event onto one universal conversion shape. WHMCS ships reference-grade; the same shape powers any store.

02

Session joins

OpsIQ links the order to the visitor session: page, chat thread, promo and full touch sequence. Anonymous visitors still link via UTM params or referrer.

03

Conversion writes

One row lands with first touch, last touch, device and country, and new-vs-renewal decided automatically from the subscription's invoice history.

📈 Revenue, traced

Trace every dollar back to the visit that started it.

Orders flow in from every connected store and land linked to the page, the chat and the campaign that earned them: first touch, last touch and the full path in between.

Purchases & orders · in

Every order, every store, one live feed.

The Recent Purchases table mirrors your real Sales screen: Date, Customer, Platform, Order / Items, Amount, Traffic Source, Country, Device. New paid orders land the moment your billing system fires its event. No nightly import, no spreadsheet.

  • Platform badge per row. Driven by enabled connectors, never a hardcoded list. Shopify, WHMCS and Stripe only appear when their connector is on.
  • Search by email, IP or Order ID and filter by platform, exactly like the in-app desk.
  • Multi-currency. Per-row currency with base conversion, so totals aggregate cleanly across currencies.
Live Recent Purchases live SH #7841 · Lina O. Shopify · 2 items · /pricing +₦256,800 just now W #5512 · Adam P. WHMCS · Pro plan · chat +₦154,800 US · desktop S #5489 · Maya C. Stripe · subscription · direct +₦358,800 NG · mobile P #5501 · Sarah K. Paystack · Starter · /demo +₦154,800 KE · mobile SALES TODAY 42 · ₦15,408,000 REVENUE / ALL-TIME ₦340,943,999
Revenue attribution

First touch, last touch, and revenue by source.

Each conversion is linked to the visitor session that led there: the page, the chat thread, the promo and the full touch sequence. "Where did this sale come from?" finally has a real answer.

  • First touch & last touch. The channel that discovered them and the one that closed them, side by side on the order itself.
  • Closed by chat or promo. Revenue credited to the conversation or campaign that actually moved the deal.
  • Revenue by source: organic, ads, chat and direct ranked, so you fund what earns and cut what doesn't.
Live Revenue attributed THIS MONTH ₦5,052,000 ₦11,568,000 ₦21,900,000 ▲ attributed 100% traced ATTRIBUTION PATH · SALE #5512 first touch Google Ads visited /pricing ×3 closed by live chat sale +₦154,800 REVENUE BY SOURCE organic ₦8,880k chat ₦6,120k ads ₦4,320k
Multi-touch · the full path

Last-click isn't attribution. Keep the whole sequence.

Most tools give you last-click and call it done. Sales Bridge keeps the whole sequence: the ad that discovered them, the pages they returned to, the chat that answered the final question, and the order that closed it. The path animates as the visitor moves; the sale lands with its story attached.

  • First & last touch preserved. The discovering channel and the closing channel sit on the same conversion row, never collapsed into one.
  • Anonymous still attributes. No identified visitor needed; session ID links to the checkout via UTM params or referrer.
  • Device type travels too: mobile, desktop or tablet recorded per conversion, so you see which devices actually close.
Live Attribution path · Sale #5512 live Ads first touch /pricing ×3 returned chat closed by sale +₦154,800 CONVERSION ROW first: Google Ads last: live chat device: desktop · NG
Reliability · self-heal

A missed webhook never costs you a row of revenue.

Webhooks fail: networks blip, endpoints time out, deploys restart. Sales Bridge doesn't care. Every time the dashboard loads, a 7-day self-heal sweeps the last week of paid orders from your connected store and quietly backfills anything that slipped through.

  • No cron to babysit. The heal runs on dashboard load, so a missed delivery is recovered the next time anyone opens Sales.
  • Idempotent by order ID. Backfill never double-counts; an order already recorded is skipped, not duplicated.
  • Trend stays honest. 30/60/90-day, year-over-year and month-over-month charts all reflect the recovered orders.
Live 7-day self-heal on dashboard load -7d -6d -5d missed!-4d -3d -2d -1d backfilling… Sale #5478 · recovered WHMCS · was a missed webhook · 4d ago +₦238,800 CONVERSIONS · LAST 7 DAYS 61 → 62 0 gaps · idempotent
Customer value

Know what a customer is worth.

Not just what they paid today. Every new sale and renewal rolls up per customer into a lifetime value, so a ₦154,800 first order and an ₦2,208,000 three-year account never look the same in the queue. New-versus-renewal splits itself automatically (a first paid invoice is a new sale, a later one on the same subscription is a renewal) and your team prioritises by worth, not by who shouted loudest.

New vs renewal, split automatically. No config; the stat split is automatic for any connector that follows the suffix convention.
Lifetime value on the contact: total spend, order count and last purchase travel with the customer into the CRM and chat panel.
VIP routing. High-LTV customers jump the queue, reach senior agents and trigger their own alerts.
₦2,208,000top lifetime value
Autonew vs renewal split
Lifetime value top customers ₦154,800 ₦504,000 ₦1,380,000 ₦2,208,000 ₦912,000 Sarah Adam Maya Lina Omar Lina O. · VIP · ₦2,208,000 lifetime 3 orders · last 6d ago · route to senior priority →
Rolled uplifetime value per customer
Auto-splitnew sales vs renewals
VIP-awarehigh-LTV routing & alerts
Where it fits

One event in. The rest is wiring.

New vs renewal, decided for youFirst paid invoice = new sale; a later one on the same subscription = renewal. The stat split is automatic for any connector that follows the suffix convention.
7-day self-heal backfillOpen the dashboard and recent orders backfill themselves, so a single missed webhook never costs you a row of revenue.
Everything exportsEvery conversion, every visitor session and every lead score is exportable as CSV, for your warehouse, your board deck or your accountant.
🔥 Intent → contact → outreach

Returning visitors become scored leads, then revenue.

Once revenue and intent live in one place, the rest writes itself: a composite score that means "ready to buy", a consent-gated bridge into the CRM, a real lead workflow, and follow-up that drafts with full context.

Lead scoring · composite intent

One score that means "ready to buy".

Raw pageviews lie. Sales Bridge weighs the signals that actually predict a purchase (repeat /pricing visits, a /demo view, chat questions, return cadence, country and source) and fuses them into a single 0-100 composite intent score. Cross a tier and the lead is Cold, Warm, Hot or Ready, ranked at the top of the board.

  • Weighted signal stack. Each factor contributes proportionally; a 3rd pricing visit moves the needle more than a single bounce.
  • Quality tiers, automatically: Cold / Warm / Hot / Ready by score, plus a high-value badge for sessions over five pages.
  • Source & country breakdown. See which channels and geographies bring your best-scoring leads, with flags.
Live Composite intent · Maya Chen WEIGHTED SIGNALS /pricing ×3 /demo view chat question return ×4 source: ads 92 composite / 100 READY tiers: Cold <40 · Warm 40-69 · Hot 70-89 · Ready 90+ NG 🇳🇬 · ads
Leads · CRM bridge

When intent crosses the line, it becomes a CRM contact.

The Leads screen tracks returning visitors who haven't converted yet: quality-scored, with source, country, sessions, pages and time-on-site attached. When intent crosses the line, the lead bridges straight into the CRM as a contact: consent-gated, deduped, ready for outreach.

  • Composite intent score: repeated /pricing visits, /demo views, chat questions, return cadence and source rolled into one number.
  • Capture without forms. Chat surfaces qualifying questions naturally; promo lead forms and surveys add the rest.
  • Bridged to CRM, consent-first. A captured lead becomes a contact only with consent, deduped on email, with its full attribution intact.
Live Lead → CRM SCORED LEAD M Maya Chen NG · returning · 4 sessions intent score 92 3rd /pricing · chat · consent ✓ bridge CRM CONTACT M Maya Chen contact · deduped attribution preserved queued for outreach → LEAD BOARD · RANKED BY INTENT Maya Chen 3rd /pricing 92 Adam Park returning 88
Lead management & alerts

From a score on a board to a status in a pipeline.

A lead isn't done when it's scored. Sales Bridge moves it through a real workflow (New → Contacted → Qualified → Closed) searchable by IP, city or country, deduped against existing contacts. When a lead heats up, the right person hears about it.

  • Lead status workflow. Track every prospect through New, Contacted, Qualified and Closed without a separate spreadsheet.
  • Search by location. Filter leads by IP, city or country to work a cohort, with a flagged country breakdown and source-share view.
  • Hot-lead notifications + Slack. A bell fires at score 70+ (7-day cooldown), and configurable Slack alerts ping the team on score >90, a returning customer on /pricing, or a chat keyword.
Live Lead pipeline NEW Sarah K.85 · /demo Omar D.61 · organic CONTACTED Adam P.88 · returning QUALIFIED Maya Chen92 · 🔥 ready CLOSED Lina O.won · ₦256,800 Slack alert · Maya · score 92 · back on /pricing # sales · notified instantly · 7-day cooldown open →
Outreach · close the loop

From attributed sale to the next conversation.

Once revenue and intent live in one place, follow-up writes itself. The Outreach hub turns reusable templates with {{variables}} into personalised messages, drafted with the customer's page history, purchase record and chat context already filled in.

  • Template library with variables: {{name}}, {{email}} and more, dropped into any send with a live email-client preview.
  • AI-drafted next step. A personalised follow-up built from the contact's history, ready to review and send. AI tone rewriter keeps every variable intact.
  • Sales alerts that route: score >90, a returning customer back on /pricing, or a chat keyword can ping the right person on Slack instantly.
Live DRAFTED FOLLOW-UP To: [email protected] Your Pro plan & that pricing question CONTEXT MERGED 3× /pricing ₦154,800 paid chat thread Review & send Sales alert Maya · score 92 back on /pricing # sales · Slack CONNECTORS WHMCS Stripe Shopify Paystack
Where it fits

Not another analytics tool. The bridge between them.

Keep your store, your billing and your analytics. Sales Bridge is the layer that ties revenue to the support and marketing that earned it, so the numbers finally agree.

What you want to knowStore / billing aloneWeb analytics aloneOpsIQ Sales Bridge
What sold & for how muchYes, that's its jobEstimated / sampledLinked to the real paid order
Which page started the saleUnknownYesFirst touch on the order itself
Which chat closed the saleUnknownNo concept of chatClosed-by credited to the thread
Which promo / campaign earned itUnknownLast-click only, usuallyFull multi-touch path kept
New sale vs renewalManual to separateCan't tellSplit automatically
Customer lifetime valuePer system, siloedNot its domainRolled up on the contact
Lead intent before they buyNo leads conceptPageviews, not intentComposite score → CRM bridge
Acts on it (alert / outreach)NoNoSlack alerts + drafted follow-up
One source of truthOne sliceAnother sliceSame data as chat, CRM & promos
Full feature list

Everything in Sales Bridge.

Every capability, grouped. ★ marks a stand-out.

FeatureWhat it does
Revenue tracking
Recent Purchases Feed ★Every order across every connected store, landing live in one feed.
Platform-Driven BadgesPer-row platform badges generated from enabled connectors, never a hardcoded list.
Sales Search & FilterFind any sale by email, IP, order ID or platform, just like the in-app desk.
7-Day Self-Heal Backfill ★ NEWMissed webhooks auto-backfill when the dashboard loads, idempotent by order ID.
Today / Week / Month / Year StatsOrder count and revenue for any period at a glance.
30/60/90 & All-Time Trend Chart NEWRevenue line and volume bar trended across any range.
Year-over-Year Comparison NEWThis year versus last, month by month.
Month-over-Month Comparison NEWThis month versus last, day by day.
AI Sales Readout ★ NEWPlain-English what happened, why, and what to do next about your numbers.
New vs Renewal Auto-Detection ★First paid invoice is a new sale; a later one on the same subscription is a renewal.
New vs Renewal Stats BreakdownSeparate counts and revenue for new sales and renewals.
Renewal Badge on Orders NEWAn amber renewal badge distinguishes renewals at a glance in the feed.
Multi-Currency Support NEWPer-row currency with base conversion, so totals aggregate across currencies.
Attribution
Conversion Record with Session Link ★Every order is linked to the full visitor journey that led there.
First Touch Attribution ★The channel that originally discovered the customer, preserved on the order.
Last Touch Attribution ★ NEWThe channel that closed the deal, kept alongside first touch, never collapsed.
Multi-Touch Attribution Path ★The full page / referrer / chat / campaign sequence from discovery to purchase.
Chat-Closed Conversions ★Revenue credited to the chat thread that actually won the deal.
Anonymous Attribution via UTM / Referrer ★Session links to checkout even with no identified visitor.
Lead UTM CaptureUTM parameters stored on the lead record to show which campaigns generate leads.
Device Type Tracking NEWMobile, desktop or tablet recorded per conversion.
Customer value
Customer Lifetime Value (CLV) ★Total spend, order count and ARR rolled up per customer.
VIP Customer Routing ★High-LTV customers jump the queue, reach senior agents and trigger their own alerts.
Lead capture, scoring & management
Lead Capture Via Chat ★Name, email and company captured naturally in conversation, no form.
Composite Intent Score ★0-100 from pricing / demo / cart / chat / cadence / scroll: intent, not just traffic.
Lead Quality Tiers NEWCold / Warm / Hot / Ready classification by score.
High-Value Lead Tagging NEWSessions over five pages earn a high-value badge.
Lead Source Breakdown NEWStacked bar of leads by source percentage: which channels bring the best.
Lead Country Breakdown NEWLeads ranked by country with flags.
Lead Session & Page Analytics NEWSessions, pages, time-on-site, browser and OS per lead.
Lead Status Workflow NEWMove every lead through New → Contacted → Qualified → Closed.
Lead Search by IP / City / Country NEWFilter lead cohorts by location.
Lead-to-CRM Contact Bridge ★Threshold or manual bridge to a CRM contact, deduped on email, consent-gated.
Outreach
Template Library with {{Variables}} ★Markdown templates with smart variables like {{name|fallback}}.
Template Live Email PreviewSee the message rendered with resolved variables before you send.
Template Category & ToneOrganise and filter templates by category and tone.
AI Tone Rewriter ★Rewrite the tone of a draft while keeping every variable intact.
Template Archive & Soft Delete30-day recovery window for archived templates.
AI-Drafted Next-Step Messages ★Personalised follow-ups built from page history, views, chat and LTV.
Alerts & routing
Slack Sales Alerts ★Ping the team on score >90, a returning customer on /pricing, or chat keywords.
Hot Lead Notifications NEWAn in-app bell fires at score 70+ with a 7-day cooldown.
Integration
Connector Pattern for Billing ★A BillingMirror per platform maps its paid-order event to one universal schema.
invoice.paid Event Contract ★One billing event fires the full attribution join, no checkout SDK.
WHMCS Integration (Reference) NEWReference-grade sync of invoices, clients, orders and line items.
Stripe Events Bridge NEWinvoice.payment_succeeded and subscription events into Sales Bridge.
Paystack Events Bridge NEWpayment.success transactions synced, NGN-aware.
Shopify Orders Bridge NEWorders.paid webhook brings store orders in.
Custom Checkout via API NEWFire invoice.paid from your own backend for identical attribution.
Experience, attribution & export
Country-Aware Routing NEWRoute customers to the local gateway, hours and language.
Revenue by Top SourcesTop six sources ranked by conversions, so you fund what earns.
CSV Export of ConversionsEvery conversion with all columns, ready for your warehouse or board deck.
CSV Export of SessionsPages, time, bounce, threat score and conversion link per session.
CSV Export of Lead ScoresIP, score, tier, source and engagement metrics for your CRM.
FAQ

Attribution questions, answered.

Everything teams ask before they wire their billing in: connectors, renewals, reliability and export.

Yes. Fire invoice.paid via the OpsIQ API after a successful payment. Your custom backend gets the same attribution as a Stripe-connected one: first touch, last touch, the full multi-touch path and new-vs-renewal detection all included.
WHMCS ships reference-grade today, and the same connector pattern covers Stripe, Paystack, PayPal and Shopify. Anything that can fire an invoice.paid-style event fits; no platform name is hardcoded anywhere, and the per-row badge is driven by your enabled connectors.
By invoice history on the subscription. A first paid invoice is a new sale; a later one on the same subscription is a renewal. The "New Sales" and "Renewals" stats split automatically for any connector that follows the platform-suffix convention, with no config.
A 7-day self-heal runs when the dashboard loads and backfills recent orders, so a single dropped webhook never costs you a row of revenue. It's idempotent by order ID, so a recovered order is never double-counted.
When a returning visitor's composite intent score crosses your threshold, the lead bridges into the CRM as a contact, consent-gated and deduped on email, with its full attribution (source, pages, chat, country) preserved.
Yes. Anonymous attribution links session ID to checkout via UTM params or referrer. Identification adds depth but isn't required, so even cold traffic still lands attributed.
Yes. Every conversion, every visitor session and every lead score is exportable as CSV, ready for your warehouse, your board deck or your accountant.