Check Timezone Window

Node

Check Timezone Window

Description

This node compliance node.png is a compliance gate placed after Init (and before Dial or Plain Message). For each contact, it checks whether the contact’s local time falls inside the allowed calling/messaging window for their region, and whether the day is a holiday.

  • If the contact is within the compliance window → the message continues downstream (ALLOWED).

  • If outside the window (or on a holiday) → the contact is rescheduled to the next valid slot (UNDELIVERED + scheduleAfter) and the message is not forwarded.

  • If timezone, region profile, or a future slot cannot be resolved → the contact is marked UNRESOLVED and dropped.

Campaign schedule settings (time window, days, date range) from Campaign Start are also applied when computing the next slot, so both campaign schedule and regional compliance must allow the attempt.

Category

Category

Inputs

Outputs

Default Label

Flow Control

1

1

Your node's name, or Check Timezone Window if left blank

Configuration

Setting

Required?

What it does

Name

Optional

Label shown on the canvas

There are no compliance settings on the node itself. Windows and holidays come from Unified Admin → Compliance Regulation profiles, resolved by the contact’s region field. Campaign schedule comes from timezoneComplianceMetadata on the pulse (built by Campaign Start).

Prerequisites (per contact)

Field

Where

Requirement

timezone

CX Customer (cxCustomer.timezone)

Valid IANA timezone — e.g. America/New_York, Asia/Karachi

region

CX Customer (cxCustomer.region)

Region code matching a compliance profile — e.g. US-FL, CA-QC

timezoneComplianceMetadata

Message from Campaign Start

Campaign time window, days, date range, and campaign timezone

How compliance profiles are resolved

  1. Look up the profile for the contact’s region code (e.g. US-FL) from Unified Admin /compliance-regulation.

  2. For US/CA regions, merge with the federal profile (US-FED / CA-FED) using the stricter weekday and weekend windows.

  3. Region holidays are kept from the regional profile.

  4. If no regional profile exists, fall back to the federal profile when available.

  5. If nothing can be resolved → UNRESOLVED.

Each profile provides:

Rule

Meaning

Weekday window

Allowed local start–end time on Mon–Fri (minutes from midnight)

Weekend window

Allowed local start–end time on Sat–Sun

Holidays

Dates (YYYY-MM-DD) when contact must not be contacted

Decision outcomes

Decision

When

Contact status

Flow behaviour

ALLOWED

Local time is inside the compliance window and not a holiday

Unchanged

Message forwarded to next node

RESCHEDULE

Outside window or holiday, and a future valid slot exists within campaign range

UNDELIVERED + scheduleAfter set

Message not forwarded; Governor slot freed (CX Voice)

UNRESOLVED

Missing/invalid timezone, no compliance profile, or no valid slot in campaign range

UNRESOLVED

Message not forwarded; Governor slot freed (CX Voice)

Placement in the flow

CX Voice (recommended)

Campaign Start → Seize Agent → Check Seize Agent Event → Init
   → Check Timezone Window
   → Dial Node → …

Digital campaign (optional)

Campaign Start → Check Undelivered Contacts → Init
   → Check Timezone Window
   → Plain Message → …

Place it after Init (so each contact is evaluated individually) and before the outbound action (Dial / Plain Message).

Behaviour details

ALLOWED path

  • Evaluates contact local hour/minute/day against weekday or weekend window.

  • Skips holidays listed on the compliance profile.

  • Enriches msg.timezoneComplianceMetadata with checkCompliance: true and the resolved compliance window (including effectiveWindowEnd) for downstream use.

  • Emits a compliance audit log with decision ALLOWED.

RESCHEDULE path

  • Computes the next valid attempt time that satisfies:

    • Contact compliance window (weekday/weekend)

    • Holidays

    • Campaign time window / allowed days / date range (from Campaign Start)

  • Writes scheduleAfter in the campaign timezone.

  • Sets contact status back to UNDELIVERED so it can be picked up again later.

  • Increments reschedule metric; frees Governor dial slot when present.

  • Does not send the message downstream.

UNRESOLVED path

Reasons include:

Reason

Example

No timezone

Customer timezone empty

Invalid IANA timezone

e.g. "EST" instead of America/New_York

No compliance profile

Unknown or invalid region code

No valid slot

Next allowed time falls outside campaign date range / overlapping windows

Input / output

Input (expected)

Field

Source

msg.outboundMetadata.contact

Init Node

msg.outboundMetadata.contact.cxCustomer.timezone

CX Customer

msg.outboundMetadata.contact.cxCustomer.region

CX Customer

msg.timezoneComplianceMetadata

Campaign Start pulse

Output

Case

Output

ALLOWED

Same msg, with compliance metadata enriched

RESCHEDULE / UNRESOLVED

No output — contact handled via status update

Metrics & audit

Metric / log

When

ob_contacts_unqualified_total

UNRESOLVED (NO_TIMEZONE, NO_COMPLIANCE_PROFILE, NO_VALID_SLOT)

ob_total_contact_reschedule (gauge)

RESCHEDULE

Compliance audit log

Every decision: ALLOWED, RESCHEDULE, UNRESOLVED

Example

Contact in America/New_York, region US-FL, local time 21:30, weekday window 09:00–20:00:

  1. Outside compliance → not ALLOWED.

  2. Node finds next morning opening that also fits the campaign schedule.

  3. Contact updated to UNDELIVERED with scheduleAfter set.

  4. Message stopped; dial/message slot freed for CX Voice.

Notes

  • Weekend days are treated as Saturday and Sunday.

  • The node is optional — omit it if you do not enforce regional quiet hours.

  • For CX Voice, skipping a contact frees the Governor slot so dial capacity is not left reserved for a contact that will not be dialed now.