Predictive campaign throws 400 on Sydney edge when +61 formatting drops

Trying to get the predictive campaign firing outbound through the Sydney edge so the +61 prefix doesn’t vanish again. The flow arch-pred-7741-syd just throws a 400 Bad Request on /api/v2/outbound/campaigns and the dialer bails out with ERR_NUMBER_FORMAT_MISMATCH. We’ve got 2024.2.0 on mypurecloud.com.au and the E.164 normalizer keeps chewing up the country code right before the ACMA recording hop, leaving the console stuck on {"status":"failed","reason":"invalid_e164"}.

The 400 error on the Sydney edge isn’t a bug. It’s a validation mismatch between the contact list format and the campaign’s region settings. The E.164 normalizer in Genesys expects strict adherence to the +CCXXXXXXXXXX pattern without spaces or dashes. If your source data has +61 4... or 04..., the outbound engine rejects it before the SIP INVITE ever leaves the edge node.

You need to force the normalization in the contact list upload or fix it via a Studio script before the dialer picks it up. Since you’re seeing ERR_NUMBER_FORMAT_MISMATCH, the campaign is likely set to au but the numbers aren’t clean.

Here’s the Studio snippet to sanitize the number before it hits the predictive dialer. Use this in a Set Data action right after the Find Contact step:

// Clean phone number for E.164 compliance
let rawPhone = contact.phoneNumber;
let cleanPhone = rawPhone.replace(/\D/g, ''); // Strip all non-digits

if (cleanPhone.startsWith('04')) {
 cleanPhone = '61' + cleanPhone.substring(1); // Convert 04xx to 614xx
} else if (cleanPhone.startsWith('4')) {
 cleanPhone = '61' + cleanPhone; // Add country code if missing
}

if (!cleanPhone.startsWith('+')) {
 cleanPhone = '+' + cleanPhone;
}

// Update the contact for the dialer
contact.phoneNumber = cleanPhone;

Apply this to your flow arch-pred-7741-syd. Also, check the campaign settings in the UI. Ensure the Region is explicitly set to au and not default. The Sydney edge is stricter about local formatting rules compared to US edges.

One more thing. If you’re using the API to push contacts, use the POST /api/v2/outbound/contacts/lists/{listId}/contacts endpoint with the phoneNumber field strictly as +61412345678. Don’t rely on the UI to fix it post-upload. The validation happens at ingestion time.

Restart the campaign after updating the flow. The dialer caches the last known good format, so a restart forces it to re-evaluate the contact list against the new logic.