Capture-demand swarm · Lost-call-recovery agent · Missed-call-detection skill · Published June 1, 2026
Cross-vendor missed-call event normalization for multi-location operators
CallRail, Invoca, Five9, CallTrackingMetrics, RingCentral, DialogTech, WhatConverts, Marchex, PhoneWagon, Phonexa, ResponseTap, Mediahawk, Avoxi, CallTrack.io, Convirza, Service Direct, Activedemand, Adinton, Calltracks, and Callsource ship strong call-event-webhook primitives. The missed-call-detection skill on the lost-call-recovery agent — cross-vendor webhook subscription, canonical event-schema normalization, per-vendor missed-call reconciliation, E.164 caller-phone normalization, location and DNI source-campaign resolution, after-hours classification, cross-vendor deduplication, downstream routing to sibling skills, all under a compliance gate anchored on TCPA + state two-party consent recording + CPNI + FTC TSR + FCC TRACED Act/STIR-SHAKEN — is the orchestration layer above them.
What this skill closes
- 20+ call-tracking vendor coverage. CallRail, Invoca, Five9, CallTrackingMetrics, RingCentral, DialogTech, WhatConverts, Marchex, PhoneWagon, Phonexa, ResponseTap, Mediahawk, Avoxi, CallTrack.io, Convirza, Service Direct, Activedemand, Adinton, Calltracks, Callsource. Subscription manager that registers + rotates + validates webhook endpoints per vendor per account per tracking-number.
- Canonical event-schema spec. Single portfolio- wide schema (event_id, event_timestamp ISO 8601 UTC, vendor_source, tracking_number E.164, caller_phone E.164, callee_phone E.164, direction, status, duration_seconds, talk_time_seconds, hold_time_seconds, ivr_time_seconds, ring_time_seconds, hangup_cause, call_recording_url, transcript_url, ivr_state_final, location_id, source_campaign_id, source_medium, source_keyword, source_ad_group, utm_parameters) that every downstream sibling skill reads from.
- Per-vendor mapping specs. Per-CallRail, per-Invoca, per-Five9, per-CallTrackingMetrics, per-RingCentral, per-DialogTech, per-WhatConverts, per-Marchex, per-PhoneWagon, and per-Phonexa mapping specs that translate each vendor’s native webhook payload into the canonical schema.
- Missed-call classification reconciliation. CallRail’s status=completed with talk_time=0 + Invoca’s status=Missed + CallTrackingMetrics’s status=NoAnswer + Marchex’s status=NotConnected + Phonexa’s status=Voicemail-Caller all map to a single canonical missed boolean, with duration normalization (include vs exclude IVR + greeting per operator rule) and hangup-cause normalization onto a four-value taxonomy.
- Caller-phone E.164 normalization. NPA-NXX North American Numbering Plan validation + ITU-T E.164 international prefix detection + carrier lookup (Twilio Lookup + Numverify + NumLookup + NumberGuru) + carrier-type classification (mobile + landline + VoIP + toll-free) + FTC National DNC + per-state DNC + spam classification (Truecaller + Robokiller + Hiya + Nomorobo).
- Location resolution. Tracking-number-to-location mapping from operator master record, DNI (Dynamic Number Insertion) pool session lookup for shared pools, IP-geolocation cross-reference (MaxMind, IP2Location), call recording or transcript location-mention detection, IVR final-state extraction. Confidence tier and resolution-method tag recorded on every event.
- DNI source-campaign resolution. Tracking-number-to-source mapping + DNI session-to-source attribution (Google Ads + Microsoft Advertising + Meta + organic + direct + referral) + UTM parameter extraction + Google Ads keyword/ad-group/campaign extraction from the Ads API.
- After-hours classification, cross-vendor deduplication, and priority-tiered downstream routing. OpeningHoursSpecification + SpecialOpeningHoursSpecification + time-zone resolution drive a four-value classification (BusinessHoursMissed, AfterHoursMissed, HolidayMissed, WeekendMissed). Cross-vendor dedup windows (30 sec, 60 sec, 5 min) + call-recording-fingerprint dedup + event-ID dedup. Priority tiering (Critical, High, Medium, Low) routes the canonical event to sibling skills: per-location SMS template library, Cal.com/ Calendly callback-link, CRM record creation, attribution event emission, recovery-rate dashboard.
- Per-event compliance gate. Five anchors — TCPA (47 USC 227, 47 CFR Part 64) + state two-party consent recording (CA Penal Code 632, FL 934.03, IL 720 ILCS 5/14-2, and the other 11-state group) + CPNI (47 CFR Part 64 Subpart U) + FTC TSR (16 CFR Part 310) + FCC TRACED Act + STIR/SHAKEN. Plus the broader gate (CAN-SPAM, CASL, GDPR + ePrivacy, UK PECR, state- comprehensive-privacy, ADA Title III + WCAG 2.2 AA, NIST AI RMF + ISO 42001 + ISO 27001 + SOC 2 Type II) enforced via policy-as-code (OPA Rego + AWS Cedar + Casbin + Cerbos + Oso). WORM audit trail (AWS S3 Object Lock + GCS retention + Azure Blob immutable + Snowflake Time Travel) with per-statute retention.
Where the orchestration above the vendor stack compounds
A single CallRail webhook delivering call events to a single endpoint is well-solved. CallRail ships a strong primitive. So does every other vendor in the call-tracking, IVR-contact-center, VoIP-PBX, and recording-transcription categories. The compound cases the lost-call-recovery agent has to handle are the ones the single-vendor view cannot reach: a Denver franchisee on CallRail, a Boulder franchisee on CallTrackingMetrics, a Phoenix franchisee on Invoca, a Tucson franchisee on DialogTech, and corporate on Marchex — all rolling up to one operator dashboard that has to treat every missed call the same way.
Per-vendor missed-call definitions diverge. CallRail flags a missed call as status=completed with talk_time=0. Invoca uses status=Missed. CallTrackingMetrics uses status=NoAnswer. Marchex uses status=NotConnected. Phonexa distinguishes Voicemail-Caller from Voicemail-System. Per-vendor call-duration definitions diverge (include IVR vs exclude IVR vs include greeting). Per-vendor hangup-cause taxonomies diverge. Per-vendor caller- phone formats diverge (+1 prefix vs no prefix vs formatted string). Per-vendor webhook signature schemes diverge.
Without an orchestration layer above the vendors, the operator dashboard ends up displaying inconsistent missed-call counts, missed-call latency drifts past the recovery half-life that the lost-call-recovery business case depends on, and the per-event compliance gate (TCPA + state two-party consent recording + CPNI + FTC TSR + FCC TRACED Act/STIR-SHAKEN) cannot be enforced consistently across vendors. The orchestration layer — webhook subscription manager + canonical event-schema spec + per-vendor mapping + missed-call-classification reconciliation + E.164 normalization + location resolution + DNI source-campaign resolution + after-hours classification + cross-vendor deduplication + signature validation + compliance gate + downstream routing — is operator-side architecture. The skill on this page is that orchestration layer.
The real ecosystem this sits above
Call tracking
CallRail, Invoca, CallTrackingMetrics, DialogTech, WhatConverts, Marchex, PhoneWagon, Phonexa, ResponseTap, Mediahawk, Avoxi, CallTrack.io, Convirza, Service Direct, Activedemand, Adinton, Calltracks, Callsource. Each ships per-account per-tracking- number per-call-event-webhook primitives with that vendor’s payload shape and missed-call convention. The canonical schema + per-vendor mapping + cross-vendor reconciliation above them is operator-side architecture.
IVR + contact center
Five9, Genesys Cloud, NICE CXone, Talkdesk, Avaya, 8x8, RingCentral Contact Center, Aircall, Dialpad, Cisco Webex Contact Center, Vonage Contact Center, Mitel, Zoom Contact Center, GoTo Contact Center, Amazon Connect, Twilio Flex. Each ships strong queue-event primitives. Cross-vendor deduplication against the call-tracking-side event stream + per-60-second-SLA downstream routing is operator-side architecture.
VoIP + PBX
Twilio, Telnyx, Bandwidth, Vonage, Plivo, MessageBird (Bird), Sinch, Voxbone, Voxbeam, 3CX, Cisco BroadSoft, FreePBX, Asterisk, MetaSwitch. Each ships strong per-number per-call-event webhook primitives. Cross-vendor canonical event-schema + DNI pool decoding is operator-side architecture.
Recording + transcription
Gong, Chorus.ai, Otter.ai Business, Rev.ai, AssemblyAI, Deepgram, Sonix, Trint, AWS Transcribe, Google Speech-to-Text, Azure Speech-to-Text. Each ships strong per-recording per- transcript primitives. Per-event transcript location-mention detection + IVR-state extraction (used as a last-resort location resolution path) is operator-side architecture.
Number lookup + spam detection
Number lookup: Twilio Lookup, Numverify, NumLookup, NumberGuru. Spam detection: Truecaller, Robokiller, Hiya, Nomorobo. Each ships strong per-number primitives. Carrier-type classification downstream of these, fed into TCPA-side text-back suppression, is operator-side architecture.
Policy-as-code, WORM storage, compliance tooling
Policy-as-code: OPA Rego, AWS Cedar, Casbin, Cerbos, Oso. WORM storage: AWS S3 Object Lock, GCS retention policies, Azure Blob immutable storage, Snowflake Time Travel. Compliance tooling: OneTrust, TrustArc, Ketch, Securiti, BigID for consent management; Hyperproof, Drata, Vanta, Thoropass for SOC 2 / ISO 27001 / ISO 42001 control evidence. Each ships strong primitives. The per-event gate that maps TCPA + state two-party consent + CPNI + FTC TSR + FCC TRACED Act + the broader privacy + accessibility stack onto an operator-counsel-approved policy bundle is operator-side architecture.
How the architecture is set up
- Cross-vendor webhook subscription manager. Register, rotate, and validate webhook endpoints across CallRail, Invoca, Five9, CallTrackingMetrics, RingCentral, DialogTech, WhatConverts, Marchex, PhoneWagon, Phonexa, ResponseTap, Mediahawk, Avoxi, CallTrack.io, Convirza, Service Direct, Activedemand, Adinton, Calltracks, Callsource. Per-vendor rate-limit coordination + per-vendor signature scheme validation (X-CallRail-Signature, X-Invoca-Signature, X-CTM-Signature, X-Marchex-Signature, X-Phonexa-Signature).
- Canonical call-event schema spec. event_id, event_timestamp ISO 8601 UTC, vendor_source, tracking_number E.164, caller_phone E.164, callee_phone E.164, direction, status (Answered, Missed, Busy, NoAnswer, Voicemail, Abandoned), duration_seconds, talk_time_seconds, hold_time_seconds, ivr_time_seconds, ring_time_seconds, hangup_cause, recording_url, transcript_url, ivr_state_final, location_id, source_campaign_id, source_medium, source_keyword, source_ad_group, utm_parameters.
- Per-vendor mapping specs. Per-CallRail, per-Invoca, per-Five9, per-CTM, per-RingCentral, per-DialogTech, per-WhatConverts, per-Marchex, per-PhoneWagon, per-Phonexa mapping specs that translate each vendor’s native payload to the canonical schema. Versioned and signed by operator counsel policy.
- Missed-call classification reconciliation. CallRail status=completed with talk_time=0, Invoca status=Missed, CallTrackingMetrics status=NoAnswer, Marchex status=NotConnected, Phonexa status=Voicemail-Caller all map to a single canonical missed boolean per the operator missed-call rule.
- Duration + hangup-cause normalization. Per-operator rule on include vs exclude IVR + greeting time. Hangup-cause taxonomy reduced to four canonical values (Customer, System, NoAnswer, Voicemail).
- Caller-phone E.164 normalization. NPA-NXX NANP validator for North American numbers. ITU-T E.164 country-code prefix detector for international numbers. Carrier lookup (Twilio Lookup, Numverify, NumLookup, NumberGuru — operator chooses). Carrier-type classification. FTC National DNC + per- state DNC check. Spam classification (Truecaller, Robokiller, Hiya, Nomorobo — operator chooses).
- Location resolution. Tracking-number-to-location from operator master record (primary). DNI pool session lookup against the operator DNI-vendor session API (for shared pools). IP-geolocation cross-reference via MaxMind or IP2Location (fallback). Transcript location-mention detection (last resort). IVR final-state extraction. Confidence tier and resolution-method tag recorded on every event.
- DNI source-campaign resolution. Tracking-number-to-source from operator master record. DNI session source attribution recovers Google Ads, Microsoft Advertising, Meta, organic, direct, referral sources. UTM parameters from the landing-page session. Google Ads keyword/ad-group/campaign from the Ads API for paid-search-attributed calls.
- OpeningHoursSpecification after-hours classification. Read OpeningHoursSpecification + SpecialOpeningHoursSpecification + location time zone from operator master record. Four-value classification: BusinessHoursMissed, AfterHoursMissed, HolidayMissed, WeekendMissed.
- Cross-vendor deduplication. Configurable windows (30 sec, 60 sec, 5 min) on caller_phone + callee_phone. Call-recording-fingerprint deduplication for cases where the same call landed at two vendors with different caller-ID presentations. Event-ID deduplication catches webhook retries.
- Per-event compliance gate. Five anchors: TCPA (47 USC 227, 47 CFR Part 64) + state two-party consent recording (CA Penal Code 632, FL 934.03, and the other 11-state group) + CPNI (47 CFR Part 64 Subpart U) + FTC TSR (16 CFR Part 310) + FCC TRACED Act/STIR-SHAKEN. Broader gate (CAN-SPAM, CASL, GDPR + ePrivacy, UK PECR, state-comprehensive-privacy, ADA Title III + WCAG 2.2 AA, NIST AI RMF + ISO 42001 + ISO 27001 + SOC 2 Type II) enforced via policy-as-code (OPA Rego + AWS Cedar + Casbin + Cerbos + Oso).
- Downstream routing to sibling skills. Priority tiering (Critical, High, Medium, Low) fans the canonical event to the per-location SMS template library skill, the Cal.com/Calendly callback-link skill, the CRM record-creation skill, the attribution event-emission skill, and the recovery-rate dashboard skill — all on the same lost-call-recovery agent.
- WORM audit trail. Operator-controlled WORM storage (AWS S3 Object Lock + GCS retention + Azure Blob immutable + Snowflake Time Travel) with per-statute retention windows (TCPA 4yr + FTC 7yr + CAN-SPAM 5yr + GDPR 6yr + CCPA 3yr + state telephone-privacy variable) per operator counsel policy. Every webhook ingest, normalization decision, classification decision, gate decision, and routing decision is logged with rule_id, policy_version, and decision.
Frequently asked questions
What is cross-vendor missed-call event normalization for multi-location operators?
A 200-location franchise operator runs a mixed call-tracking footprint. Some franchisees use CallRail. Some use CallTrackingMetrics. Some use Invoca, DialogTech, WhatConverts, Marchex, or PhoneWagon. Corporate uses one stack, franchisees use another. Every vendor ships a strong webhook primitive that delivers call-event payloads in that vendor’s shape, with that vendor’s field names, on that vendor’s schedule, with that vendor’s missed-call definition. The missed-call-detection skill on the lost-call-recovery agent (one of six skills in the bundle on the capture-demand swarm, alongside the per-location SMS template library skill, the Cal.com/Calendly callback-schedule-link skill, the CRM record-creation skill, the attribution event-emission skill, and the recovery-rate dashboard skill) subscribes to every vendor’s webhook, normalizes the per-vendor event shape into a canonical event-schema spec, reconciles per-vendor missed-call classifications into a single canonical missed-call label, normalizes caller phone numbers to E.164, resolves the tracking number back to a location, decodes the Dynamic Number Insertion (DNI) session to a source campaign, classifies the call against the location’s OpeningHoursSpecification (business hours vs after hours vs holiday), deduplicates across vendors, validates webhook signatures, and routes the resulting canonical event to downstream sibling skills under a compliance gate anchored on TCPA + state two-party consent recording laws + CPNI + FTC TSR + FCC TRACED Act/STIR-SHAKEN. The call-tracking + IVR-contact-center + VoIP-PBX + recording-transcription + number-lookup + spam-detection vendors below each ship strong primitives. The orchestration layer above them — schema normalization, cross-vendor reconciliation, location and source-campaign resolution, compliance gate, audit trail — is operator-side architecture.
Where does single-vendor-webhook handling stop compounding for multi-location, multi-vendor call-tracking operators?
A single CallRail webhook delivering call events to a single endpoint is a well-solved problem. CallRail ships a strong primitive. So does Invoca, Five9, CallTrackingMetrics, RingCentral, DialogTech, WhatConverts, Marchex, PhoneWagon, Phonexa, ResponseTap, Mediahawk, Avoxi, CallTrack.io, Convirza, Service Direct, Activedemand, Adinton, Calltracks, and Callsource. The orchestration above them — that handles the case where Denver franchisee uses CallRail, Boulder uses CallTrackingMetrics, Phoenix uses Invoca, Tucson uses DialogTech, and corporate uses Marchex — is what compounds. Cross-vendor missed-call definitions diverge: CallRail flags a call as status=completed with talk_time=0 when nobody picked up; Invoca uses status=Missed; CallTrackingMetrics uses status=NoAnswer; Marchex uses status=NotConnected; Phonexa distinguishes Voicemail-Caller from Voicemail-System. Cross-vendor call-duration definitions diverge: some include IVR time, some exclude it, some include greeting playback time. Cross-vendor hangup-cause taxonomies diverge: CallRail uses Customer vs System; Invoca uses AnsweredAnotherEnd; Phonexa uses Voicemail-Caller. Cross-vendor caller-phone formats diverge: CallRail prefixes +1, Invoca strips the prefix, CallTrackingMetrics returns formatted strings like (303) 555-1234. Cross-vendor webhook signature schemes diverge: each vendor signs with its own header (X-CallRail-Signature, X-Invoca-Signature, X-CTM-Signature). Without an orchestration layer above the vendors, missed-call latency drifts past the recovery-window the lost-call-recovery business case depends on (vendor benchmarks place the recovery half-life in the low-single-digit minutes; the lost-call-recovery agent target is detection plus downstream routing inside that window). The orchestration layer above the vendors — webhook subscription manager + canonical event-schema + per-vendor mapping + missed-call-classification reconciliation + E.164 normalization + location resolution + DNI source resolution + after-hours classification + cross-vendor deduplication + signature validation + compliance gate + downstream routing — is operator-side architecture. The skill on this page is that orchestration layer.
What does the canonical event-schema normalization layer do?
The skill maintains a portfolio-wide canonical call-event schema with these fields: event_id (skill-generated UUID), event_timestamp (ISO 8601 UTC), vendor_source (CallRail, Invoca, etc), tracking_number (E.164), caller_phone (E.164), callee_phone (E.164), direction (inbound, outbound), status (Answered, Missed, Busy, NoAnswer, Voicemail, Abandoned), duration_seconds, talk_time_seconds, hold_time_seconds, ivr_time_seconds, ring_time_seconds, hangup_cause (Customer, System, NoAnswer, Voicemail), call_recording_url, transcript_url, ivr_state_final, location_id, source_campaign_id, source_medium, source_keyword, source_ad_group, utm_parameters. Per-vendor mapping specs translate each vendor’s native webhook payload into this schema. The mapping spec for CallRail handles its talk_time=0 missed-call convention. The mapping spec for Invoca handles its Missed status enum and its AnsweredAnotherEnd hangup cause. The mapping spec for CallTrackingMetrics handles its NoAnswer status. The mapping spec for Marchex handles its NotConnected status. The mapping spec for Phonexa handles its Voicemail-Caller vs Voicemail-System distinction. A canonical missed-call classifier reads the normalized fields and applies the operator’s missed-call rule (status in (Missed, NoAnswer, NotConnected) OR talk_time=0 with ring_time > threshold OR hangup_cause=NoAnswer) to emit a single canonical missed boolean. Duration normalization applies the operator’s rule on whether to include IVR time + greeting time (often: exclude both from talk_time, expose them as separate fields). Hangup-cause normalization maps the per-vendor enum to a canonical four-value taxonomy. Per-vendor webhook signature validation runs against each vendor’s documented signature scheme before any event is accepted. The vendors ship strong webhook primitives. The canonical schema + per-vendor mapping + reconciliation rules above them are operator-side architecture.
How does caller-phone normalization, location resolution, and DNI source-campaign resolution work?
Caller-phone normalization parses every inbound phone number to E.164. North American numbers route through the NPA-NXX North American Numbering Plan validator. International numbers route through a country-code prefix detector against the ITU-T E.164 country-code registry. Carrier lookup runs against Twilio Lookup, Numverify, NumLookup, or NumberGuru (operator chooses; the skill is vendor-agnostic and operator counsel selects which vendor data the operator is comfortable sharing). The carrier-type classification (mobile vs landline vs VoIP vs toll-free) is recorded on the canonical event so downstream SMS-routing skills can suppress text-back attempts to landlines. The do-not-call check runs against the FTC National Do Not Call Registry and the per-state DNC registries the operator has subscribed to. Spam classification runs against Truecaller, Robokiller, Hiya, or Nomorobo (operator chooses) so callbacks to spam-likely numbers can be suppressed under TCPA policy. Location resolution is the hardest part. The tracking-number-to-location mapping (loaded from the operator master record) is the primary path. For DNI pools (where multiple website visitors share a tracking-number pool and the assignment is session-based), the skill calls back into the operator DNI-vendor session API to recover which page the caller was on and which location’s page that was. IP-geolocation cross-reference (against MaxMind or IP2Location) is a fallback when DNI session lookup fails. Call-recording or transcript location-mention detection (the caller said the store name) is a last-resort fallback when the tracking-number is shared across locations. The IVR final-state extraction is consulted when the IVR captured a location selection ("press 1 for Denver, press 2 for Boulder"). DNI source-campaign resolution is the parallel problem: tracking-number-to-source-campaign mapping is primary; DNI session-to-source attribution recovers Google Ads, Microsoft Advertising, Meta, organic, direct, and referral sources from the DNI vendor’s session log; UTM parameters extracted from the landing-page session are joined to the call event; Google Ads keyword + ad-group + campaign are pulled from the Google Ads API for paid-search-attributed calls. Every resolution path is recorded on the event with a confidence tier and the resolution-method tag for audit.
What does the after-hours classification, cross-vendor deduplication, and downstream routing layer do?
After-hours classification reads the operator master-record OpeningHoursSpecification for the resolved location (the schema.org standard for business hours) plus the location time zone plus the SpecialOpeningHoursSpecification for holidays. The skill compares the canonical event_timestamp against the location’s opening hours and emits a four-value classification: BusinessHoursMissed (the call landed during open hours and was missed — highest-priority recovery target), AfterHoursMissed (no staff was on duty — high-priority but needs different SMS template tone), HolidayMissed (the location was closed for a holiday — same handling as after-hours), WeekendMissed (handled per operator policy). Cross-vendor deduplication runs across configurable windows (30 seconds, 60 seconds, 5 minutes) on caller_phone + callee_phone. If the same caller hit two vendors’ tracking numbers within the window, the orchestration layer picks the higher-confidence vendor event and suppresses the duplicate. Call-recording-fingerprint deduplication (acoustic fingerprint comparison) catches rare cases where the same call landed at two vendors with different caller-ID presentations. Event-ID deduplication catches webhook retries. Downstream routing applies priority tiering — Critical (BusinessHoursMissed, non-spam, opted-in caller), High (AfterHoursMissed, non-spam, opted-in caller), Medium (spam-suspected, requires human review per operator counsel policy), Low (deduplicated suppressed copy) — and then fans the canonical event out to sibling skills on the lost-call-recovery agent: the per-location SMS template library skill (which selects a template and triggers send under TCPA consent verification), the Cal.com/Calendly callback-schedule-link skill (which embeds a per-location callback link), the CRM record-creation skill (which writes a lead record with full attribution), the attribution event-emission skill (which fans server-side conversion events back to Google Ads, Microsoft Advertising, Meta, GA4, and the operator MMP), and the recovery-rate dashboard skill (which tracks per-template, per-vendor, per-location recovery rate). Every routing decision is logged with the rule_id + policy_version + decision + caller_consent_status to the WORM audit trail.
What compliance does the per-event gate enforce, and how does it map to TCPA, state two-party consent recording, CPNI, FTC TSR, and the FCC TRACED Act?
Five anchors. Anchor 1: TCPA (47 USC 227 + 47 CFR Part 64). Outbound text-back triggered by a missed-call event is a marketing communication. TCPA prior express written consent is required before a text-back is sent to a wireless number for marketing purposes. The orchestration gate refuses to route to the SMS template library sibling skill until the per-caller consent status (loaded from the operator consent register: prior express written, prior express, none) has been verified against the message classification (transactional vs marketing). DNC checks against the FTC National Do Not Call Registry and per-state DNC registries are enforced on the same gate. Anchor 2: state two-party consent recording laws. Eleven states require all-party consent for call recording (California Penal Code 632, Florida 934.03, Connecticut, Delaware, Illinois 720 ILCS 5/14-2, Maryland, Massachusetts, Montana, Nevada, New Hampshire, Pennsylvania, Washington). The skill records the caller_state (resolved from caller_phone NPA-NXX or from caller-provided location) on the canonical event so downstream recording-skills can branch on consent regime. If the call was recorded by the vendor without the per-state consent disclosure being played, the recording_consent_validated flag is false and the recording_url is suppressed from downstream sibling skills under operator counsel policy. Anchor 3: CPNI (47 CFR Part 64 Subpart U). Customer Proprietary Network Information rules govern telecom-carrier disclosure of call detail. Where the operator is a telecom carrier (or operates a hosted IVR/contact center that touches CPNI), the canonical event payload is partitioned into CPNI vs non-CPNI fields and CPNI fields are routed only to skills authorized under the operator CPNI policy (with annual CPNI training certification logged). Anchor 4: FTC TSR (16 CFR Part 310). For outbound telemarketing follow-up triggered by a missed-call event, the Telemarketing Sales Rule applies: abandoned-call rate caps (under 3% of answered calls per 30-day campaign), safe-harbor predictive-dialer rules, do-not-call enforcement, the per-call disclosure of the seller’s identity and the purpose of the call. The orchestration gate refuses to trigger outbound-call-back skills until per-campaign TSR compliance has been validated. Anchor 5: FCC TRACED Act + STIR/SHAKEN. The 2019 TRACED Act and the STIR/SHAKEN call-authentication framework (47 CFR 64.6300-6308) require originating carriers to attest to caller-ID. The orchestration gate reads the STIR/SHAKEN attestation header (A, B, or C) from the inbound event and downgrades trust for B-attest and C-attest calls (likely spoofed caller-ID) per operator counsel policy. Outbound callbacks the skill triggers must originate from numbers in the operator ROBOCALL Mitigation Database (RMD) registration to remain deliverable. Broader gate (also enforced per event before downstream routing): CAN-SPAM (15 USC 7701) for any email-channel follow-up, CASL (Canadian Anti-Spam Law) for Canadian callers, GDPR Article 6 + 21 + 22 + ePrivacy Directive 2002/58/EC for EU callers, UK PECR for UK callers, state-comprehensive-privacy laws (Connecticut CTDPA + Texas DPSA + Virginia CDPA + Colorado CPA + Utah CPA + Oregon + Tennessee + Montana + Indiana + Iowa + Florida + Delaware + additional states in effect) for US callers, ADA Title III (Robles v Dominos 9th Cir 2019) + WCAG 2.2 AA for the SMS template content the callback links route to, NIST AI RMF + ISO 42001 + ISO 27001 + SOC 2 Type II for the model and infrastructure side. Compliance gate enforcement runs through policy-as-code: the operator chooses one or more of OPA Rego + AWS Cedar + Casbin + Cerbos + Oso to encode per-jurisdiction rules. Audit trail writes to operator-controlled WORM storage (AWS S3 Object Lock + GCS retention + Azure Blob immutable + Snowflake Time Travel) with per-statute retention windows (TCPA 4yr + FTC 7yr + CAN-SPAM 5yr + GDPR 6yr + CCPA 3yr + state telephone-privacy variable) per operator counsel policy.
Engage the lost-call-recovery agent
Cross-vendor webhook subscription + canonical event-schema normalization + per-vendor missed-call reconciliation + E.164 caller-phone normalization + location + DNI source-campaign resolution + OpeningHoursSpecification after-hours classification + cross-vendor deduplication + per-event compliance gate + downstream routing to sibling skills — shipped as the orchestration layer above the operator call-tracking + IVR-contact-center + VoIP-PBX + recording-transcription + number-lookup + spam-detection stack.
Related reading
- Missed-call text-back (companion architecture — the normalized event triggers the SMS text-back response)
- Per-location SMS template library (sibling skill on the same agent — SMS template library triggered on the canonical missed-call event)
- Attribution event emission (sibling skill on the same agent — emits server-side conversion events after normalization)