Skip to content
Features

Everything CIO Pipelines does — in one page.

A complete reference for the Contact Activity panel, dashboard widgets, engagement banners, outbound CDP integration, customization, and how it all fits together.

Inbound · per Contact

Contact Activity Panel

A Lightning record-page panel that gives every recruiter, AE, and CSM a real-time view of a single Contact's Customer.io engagement — without leaving the Contact record.

Engagement banner

A prominent colored banner at the top of the panel, driven by the strongest available signal for this Contact. Priority is page views first, then email engagement, then quiet states.

StateTriggerExample message
HOTJob page viewed in the last hourActively job-shopping — viewed /jobs/nurse-icu 12 minutes ago
WARMJob pages viewed today (1–24h ago)Browsing your site — 4 job pages today
ENGAGEDJob page viewed in the last 7 daysRecently job-shopping — viewed /jobs/locum 4 days ago
WARMEmail opened or clicked in the last 24hEmail engagement — opened your last campaign 3 hours ago
QUIETAnything olderLow engagement — last activity 14 days ago
NONENo activity at allNo recent Customer.io activity

Five KPI cards

  • Last Sent — most recent campaign or transactional email delivered
  • Last Opened — most recent open event
  • Last Clicked — most recent click event
  • Job Pages Today — count of page views matching your job-page URL pattern in the last 24h
  • Last Page View — most recent page view, with URL and timestamp

Recently Viewed Job Pages

A list of the URLs the candidate hit on your careers site, ordered most-recent first. Pages are classified as "job pages" by a configurable substring list (default includes job, career, position, role, opening, hiring, nurse, physician, doctor, locum, specialist, therapy, therapist, healthcare).

Email activity datatable

Sent, delivered, opened, clicked, bounced, failed, unsubscribed — the most recent activities, in a sortable table.

Where it lives

Drag the CIO Pipelines: Contact Activity component onto any Contact Lightning Record Page in the Lightning App Builder. Save and activate. No code, no profile assignment.

Inbound · aggregate

Recruiter Dashboard Widgets

Three list widgets and four engagement banners that surface aggregate Customer.io signal across recruiters, teams, and the entire pipeline.

Three list widgets

WidgetMaster labelScope
cioMyActiveCandidatesCIO Pipelines: My Active CandidatesContacts owned by the running user with recent Customer.io engagement
cioTeamActiveCandidatesCIO Pipelines: Team Active CandidatesContacts owned by the user's team
cioPipelineActiveCandidatesCIO Pipelines: Pipeline Active CandidatesEvery Contact the user can see via sharing

Four engagement banners

BannerMaster labelWhere it lives
cioContactBannerCIO Pipelines: Engagement Banner (Contact)Contact record page (full-width above layout)
cioMyEngagementBannerCIO Pipelines: My Candidates BannerApp / Home page
cioTeamEngagementBannerCIO Pipelines: Team Candidates BannerApp / Home page
cioPipelineEngagementBannerCIO Pipelines: Pipeline Candidates BannerApp / Home page

Team scoping

The Team widget supports four strategies, configurable in CIO Pipelines: Settings:

  • Manager Hierarchy (default) — uses User.ManagerId
  • Public Group — pass any group's ID
  • Queue — pass any queue's ID
  • All Users — every user in the org

Engagement scoring

Candidates rank by recency × intensity × frequency, weighted so page views (especially job-page views) outrank pure email engagement. Recruiters care most about active job-shoppers, so that's what surfaces first.

Outbound

Outbound CDP Integration

Every Salesforce DML event you care about — record creation, field changes, ownership transfers, deletions — flows into Customer.io's Pipelines CDP API in real time. Configurable per object, per event, per field, per filter.

What gets sent

CDP eventSalesforce triggerUse case
identifyAfter insert / update on Contact, Lead, AccountSync person/company traits to Customer.io
trackAfter insert / update / delete / undelete on supported objectsSend custom events (Status changed, Stage moved, Case opened)
groupAfter insert / update on Account-related recordsAssociate people with companies (B2B)

Configuration without code

Admins build the integration in the CIO Pipelines Lightning app:

  1. Configure credentials (Pipelines CDP write key, Site ID, Region — both endpoints ship pre-registered)
  2. Build event triggers (object, DML events, Customer.io event type, filter conditions, batch mode)
  3. Map fields (Salesforce field → Customer.io payload field, with DIRECT, UPPERCASE, LOWERCASE, DATE_FORMAT transforms)
  4. Add filters (visual filter builder, JSON-stored, evaluated by CIO_FilterEvaluator)

Async, governor-safe execution

All HTTP callouts run in Queueable context — never in the trigger transaction. Failed callouts publish CIO_Retry_Event__e, which CIO_RetryHandler consumes with configurable backoff.

Audit trail

Every API call (success or failure) writes a CIO_Activity_Log__c record with the trigger that fired it, the Salesforce record ID, sanitized request and response bodies, HTTP status, and timestamp. Bodies are retained for 30 days by default (admin-tunable, 7-day floor).

Inbound webhooks (bonus)

CIO Pipelines also exposes a hardened inbound webhook receiver at /services/apexrest/ciopipelines/cio/webhook/. Signatures are HMAC-SHA256, verified with constant-time comparison.

Configuration

Customization & Per-Widget Settings

Every recruiter-facing label, every banner message, every KPI label, every URL pattern, every team scope — admin-controlled. CIO Pipelines ships with recruiting-tuned defaults, but the same code runs verticals from healthcare staffing to freight brokerage to real estate.

Per-widget settings

The CIO Pipelines: Settings page exposes a configuration panel for every widget — time window, max items, included engagement states, refresh cadence, and per-widget toggles. All settings are persisted in a single JSON blob; admins never edit JSON.

Banner template editing

Every banner has per-state message templates exposed as plain-text textareas. Supported placeholders include {name}, {minutes}, {hours}, {pageTitle}, {pageUrl}, {count}, and {state}.

Industry-agnostic defaults

The package ships with healthcare-recruiting-tuned defaults, but every label is rewritable in five minutes. A freight broker might rewrite the HOT_JOB template to:

{name} is reviewing freight options — viewed {pageTitle} {minutes} min ago — quote them now.

Architecture

How it works

CIO Pipelines is a Salesforce-native managed package. There's no middleware, no external server, no proxy. Outbound flows from Apex triggers to Customer.io's CDP API. Inbound flows from Customer.io's App API into Lightning Web Components. Both directions respect Salesforce sharing, FLS, and platform limits.

┌──────────────────────────────────────┐ │ SALESFORCE ORG │ └──────────────────────────────────────┘ │ ▲ OUTBOUND │ │ INBOUND │ │ ┌───────────────────▼─────────┐ ┌────┴───────────────────┐ │ Apex Trigger Layer │ │ Lightning Web │ │ IntegrationService │ │ Components Layer │ │ Queueable Callout │ │ ContactActivity │ │ Activity Log │ │ ActiveCandidates │ └───────────────────┬─────────┘ └────┬───────────────────┘ │ │ ▼ │ ┌──────────────────────────────────────┐ │ CUSTOMER.IO │ │ Pipelines CDP API App API │ │ (write) (read) │ └──────────────────────────────────────┘

What's in the box

  • 40 production Apex classes, 36 test classes, comprehensive coverage
  • 17 Lightning Web Components covering admin and recruiter UIs
  • 5 custom objects: Settings, Event Trigger, Field Mapping, Activity Log, Retry Event (Platform Event)
  • 2 permission sets: CIO_Admin (full configuration), CIO_ReadOnly (recruiter-facing)

API regions

RegionCDP URLApp API URL
UShttps://cdp.customer.io/v1https://api.customer.io
EUhttps://cdp-eu.customer.io/v1https://api-eu.customer.io

Ready to put Customer.io's signal where your Salesforce team works?

Install in Sandbox