PwC and OpenAI launched an agentic contact-service offering on July 15 built around voice and digital agents that work with existing contact-center platforms. A week later, OpenAI said its new Presence deployments let companies define which policies, evaluations, and escalation rules stay consistent and which behavior changes by channel.
That distinction is the operating model for an omnichannel chatbot. Start with a channel contract: one page that names the facts and controls every channel must share, then states the adaptations each interface is allowed to make. Use the following seven fields before copying a web chatbot into voice, messaging, email, or an in-app assistant.
| Contract field | Must stay consistent | May change by channel |
|---|---|---|
| Policy truth | Eligibility, prices, dates, exclusions | Answer length and order |
| Identity | Required assurance for each data class | Verification method |
| Actions | Permission and approval boundary | How confirmation is collected |
| Escalation | Trigger, owner, urgency | Queue and handoff wording |
| Evidence | Source, decision, action result | Transcript or recording format |
| Continuity | Conversation ID and customer goal | Fields available in the interface |
| Presentation | Brand terms and required disclosures | Tone, pacing, buttons, links |
If a team cannot fill out this contract, adding channels will multiply contradictions rather than access.
One Policy Core, Several Channel Adapters
The common failure is to duplicate the whole chatbot for each surface. The web team writes one prompt, the contact-center vendor writes another, and the messaging team shortens a third. Each version also receives its own copy of the refund policy. Six weeks later, one says 30 days, another says 14, and voice promises an exception that chat correctly escalates.
Separate the system into two layers.
The policy core decides what is true and allowed. It contains approved knowledge, precedence rules, identity requirements, action permissions, escalation triggers, and the exact facts that cannot be paraphrased into a different meaning. A pricing exception should resolve the same way regardless of where the customer asks.
The channel adapter decides how to conduct the interaction. Voice uses short turns and confirms characters aloud. Web chat can show a comparison, a source link, and a button. Messaging assumes interruptions between replies. Email can carry more detail but should not execute a sensitive action merely because the message is long.
This separation prevents two opposite mistakes. A single identical prompt across every channel ignores interface constraints. Fully independent prompts let business policy drift. Share the decision; adapt the delivery.
Version the core and adapters separately. A useful release identifier might be returns-core-v12 + voice-v4 or returns-core-v12 + web-v7. When one channel fails, the combination tells reviewers whether the problem came from the policy decision or its presentation.
The existing chatbot change-management process provides the release record and rollback discipline. For omnichannel support, add the channel, adapter version, and parity-test result to that record.
Worked Example: One Return, Three Interfaces
Assume an online store has this approved policy:
Standard items: return within 30 days of delivery. Sale items: return within 14 days of delivery. Damaged items: report within 60 days for review. The chatbot may explain eligibility but may not approve a refund. Requests outside the relevant window go to a support specialist.
The customer asks about a sale item delivered 18 days ago. The policy core should return the same structured decision every time:
{
"intent": "return_eligibility",
"decision": "escalate",
"reason_code": "sale_window_expired",
"facts": {
"item_type": "sale",
"days_since_delivery": 18,
"return_window_days": 14
},
"allowed_action": "create_support_handoff",
"refund_approved": false,
"source": "returns-policy-v12"
}
The channel adapters can express that decision differently without changing it.
Web chat
Your sale item is outside the standard 14-day return window. I cannot approve a refund, but support can review the circumstances. Would you like me to send your order number and this conversation for review?
Voice
Sale items normally have a 14-day return window, and this delivery was 18 days ago. I can't approve an exception. I can ask a support specialist to review it. Would you like me to do that?
Messaging
This sale item is 4 days beyond the 14-day return window. I can't approve a refund. Reply REVIEW and I’ll create a support handoff with this context.
All three identify the governing rule, avoid promising a refund, and offer the same allowed next step. Voice avoids a dense paragraph. Web asks before transferring the transcript. Messaging supplies a durable reply command because the customer may return later.
Now imagine web says “support can review” while voice says “I can make an exception.” That is a policy-parity failure even if callers rate the voice interaction as friendlier. The shared decision object makes the defect visible before teams debate tone.
Test Decisions Before Testing Style
Build a parity set from intents that appear in more than one channel. Start with 20 to 30 cases: common questions, policy edges, missing information, identity boundaries, action confirmation, and handoffs. Run every case through each channel configuration.
Grade the decision first. Did each version select the same policy, eligibility outcome, allowed action, and escalation state? A difference in those fields is a hard failure unless the channel contract explicitly authorizes it.
Then grade presentation. Voice can fail for talking too long while web passes with the same facts. Messaging can fail because a button-only instruction is unusable after the session expires. Those are channel defects, not reasons to fork the policy.
| Test case | Shared pass condition | Channel-specific check |
|---|---|---|
| Public pricing question | Same current price and qualification | Link on web; short readout on voice |
| Account-specific status | No disclosure before required identity | Verification fits the surface |
| Refund exception | No promise; correct review route | Confirmation is explicit and captured |
| Missing source | Same uncertainty and fallback | Channel gives a usable next step |
| Customer interrupts | Decision does not silently change | Voice stops; chat accepts correction |
| Conversation transfer | Same goal, facts, and risk state arrive | Destination receives usable fields |
Keep at least one paraphrase per channel. A caller may say “I got it a couple Tuesdays ago,” while a web visitor pastes an order date and a messaging user sends only “return?” The input differs; the policy outcome should not.
Use the voice AI checklist for interruption, silence, and transcript-specific tests. Multilingual deployments also need more than translated copy: the multilingual support guide explains why terminology, fallbacks, and review ownership must survive language changes.
Carry State Without Carrying Everything
Omnichannel does not require every channel to remember every word. It requires the next channel to receive the minimum state needed to continue safely.
A transfer packet should contain:
- conversation and customer identifiers, with the identity assurance already completed;
- the customer's current goal in one sentence;
- relevant facts the customer supplied;
- the policy source and decision reason;
- actions attempted, confirmed, completed, or denied;
- the escalation trigger and destination;
- sensitive fields that must be omitted or redacted.
Do not replace this packet with a model-written summary alone. Include stable fields beside the summary so a creative paraphrase cannot turn “asked about refund eligibility” into “refund approved.” The receiving channel should be able to distinguish customer claims, source facts, and completed system actions.
Continuity also needs an expiry rule. Identity verified during a live phone call may not authorize an account change from a messaging link opened three days later. Keep the conversation goal, but require fresh verification when the assurance window or channel changes.
The AI-to-human handoff design covers triggers and ownership in depth. The omnichannel addition is provenance: the human should see which channel gathered each fact and which checks remain valid.
Measure Parity, Then Measure Each Experience
One blended containment or satisfaction score can hide a broken channel. Report shared decision quality and channel experience separately.
Policy parity rate is the percentage of matched test cases where every channel reaches the same required decision. If 46 of 50 cases agree, parity is 92%. The four mismatches need review even if each individual chatbot looks accurate in isolation.
Unsafe divergence rate counts cases where at least one channel crosses an identity, permission, approval, or escalation boundary. This should be a release gate, not an average that strong FAQ answers can offset.
Transfer completeness measures handoffs containing every required field. A voice agent that escalates often but sends the customer's goal, verification state, and attempted action can create less support work than a web bot with a lower handoff rate and empty tickets.
After those shared measures, use channel-native signals: interruption and recognition errors for voice; abandonment and click-through for web; delayed replies and expired sessions for messaging; reopen and reply time for email. Do not compare them as if a voice turn and an email thread were equivalent units.
Review mismatches weekly. When one appears, classify it as source drift, core-decision drift, adapter wording, missing state, integration failure, or reviewer error. That label tells the team whether to fix one channel or the shared layer.
Expand Without Forking the Customer Experience
Launch one new channel against intents the existing chatbot already handles reliably. Freeze the policy core during the first parity run. Adapt turn length, controls, and evidence capture, then compare matched cases before real customers arrive.
During the live pilot, keep risky actions behind the same approvals used in the established channel. Sample cross-channel conversations, especially those that transfer. Add every meaningful mismatch to the parity set. Promote the adapter only after both the shared decisions and the native experience pass their thresholds.
The durable advantage of an omnichannel chatbot is not appearing in more places. It is giving a customer the same trustworthy decision in each place, expressed in the form that works there. A channel contract, shared policy core, explicit adapters, parity tests, and structured transfer state make that possible without forcing every interaction to look identical.
In Agentkit, Q&A pairs can pin policy-sensitive answers, while conversation logs and four web deployment options—JavaScript widget, React, iframe, and WordPress—support a consistent knowledge layer across website surfaces.
No credit card required.



