'Test weekly summary email was sent to the Lead destination inbox.', 'test_queued' => 'The test weekly summary could not send immediately, so it was saved in the fallback mail queue for retry.', 'test_failed' => 'The test weekly summary email could not be sent. Check the site mail setup and try again.', 'missing_recipient' => 'Add a Lead destination inbox before sending a test weekly summary.', 'unknown_action' => 'Weekly summary action was not recognised. No email was sent.', ]; $setup_weekly_summary_notice_message = $setup_weekly_summary_notice_messages[$setup_weekly_summary_notice_key] ?? ''; $setup_weekly_summary_notice_type = in_array($setup_weekly_summary_notice_key, ['test_sent'], true) ? 'success' : 'warning'; $matewa_fallback_mail_notice_key = isset($_GET['matewa_fallback_mail_notice']) ? sanitize_key(wp_unslash($_GET['matewa_fallback_mail_notice'])) : ''; $matewa_fallback_mail_notice_messages = [ 'retry_sent' => 'Queued email retry completed. At least one saved email was sent.', 'retry_none' => 'No queued emails were waiting to retry.', 'retry_failed' => 'Retry attempted, but at least one queued email still could not be sent.', 'unknown_action'=> 'Fallback mail action was not recognised.', ]; $matewa_fallback_mail_notice_message = $matewa_fallback_mail_notice_messages[$matewa_fallback_mail_notice_key] ?? ''; $matewa_fallback_mail_notice_type = in_array($matewa_fallback_mail_notice_key, ['retry_sent', 'retry_none'], true) ? 'success' : 'warning'; $matewa_fallback_mail_queue_count = function_exists('matewa_fallback_mail_queue_count') ? matewa_fallback_mail_queue_count() : 0; $matewa_fallback_mail_status_label = function_exists('matewa_fallback_mail_status_label') ? matewa_fallback_mail_status_label() : 'Mail route ready.'; $matewa_fallback_mail_last_error = function_exists('matewa_fallback_mail_last_error_label') ? matewa_fallback_mail_last_error_label() : ''; $matewa_setup_key_notice_key = isset($_GET['matewa_setup_key_notice']) ? sanitize_key(wp_unslash($_GET['matewa_setup_key_notice'])) : ''; $matewa_setup_key_panel_should_open = '' !== $matewa_setup_key_notice_key; // AGENCYSETUPKEYDROPDOWNRENDERFIX1: // The client-site setup key panel is a collapsed support/agency utility on Setup. // Keep a defensive include here so the panel still renders if load order changes. if (!function_exists('matewa_agency_client_setup_key_render_panel') && defined('MATEWA_PLUGIN_DIR')) { $matewa_setup_key_module = MATEWA_PLUGIN_DIR . 'includes/agency-client-setup-key.php'; if (is_readable($matewa_setup_key_module)) { require_once $matewa_setup_key_module; } } $matewa_show_setup_remote_key_panel = function_exists('matewa_agency_client_setup_key_render_panel'); $matewa_support_step_number = $matewa_show_setup_remote_key_panel ? '6' : '5'; $matewa_display_pages_step_number = $matewa_show_setup_remote_key_panel ? '7' : '6'; $matewa_language_controls_allowed = function_exists('matewa_is_pro') ? matewa_is_pro() : false; $matewa_i18n_languages = []; $matewa_i18n_languages_file = defined('MATEWA_PLUGIN_DIR') ? MATEWA_PLUGIN_DIR . 'public/i18n/languages.json' : ''; if ($matewa_i18n_languages_file && is_readable($matewa_i18n_languages_file)) { $matewa_i18n_raw = json_decode((string) file_get_contents($matewa_i18n_languages_file), true); if (is_array($matewa_i18n_raw)) { foreach ($matewa_i18n_raw as $matewa_lang_code => $matewa_lang_meta) { if (!is_array($matewa_lang_meta)) { continue; } $matewa_code = strtolower(str_replace('_', '-', sanitize_text_field((string) ($matewa_lang_meta['code'] ?? $matewa_lang_code)))); if ('en' === $matewa_code) { continue; } if ('' === $matewa_code) { continue; } $matewa_i18n_languages[$matewa_code] = [ 'code' => $matewa_code, 'englishName' => sanitize_text_field((string) ($matewa_lang_meta['englishName'] ?? $matewa_code)), 'nativeName' => sanitize_text_field((string) ($matewa_lang_meta['nativeName'] ?? ($matewa_lang_meta['englishName'] ?? $matewa_code))), 'flagEmoji' => sanitize_text_field((string) ($matewa_lang_meta['flagEmoji'] ?? '')), 'flagFile' => sanitize_file_name((string) ($matewa_lang_meta['flag'] ?? '')), 'flagExists' => '' !== sanitize_file_name((string) ($matewa_lang_meta['flag'] ?? '')) && file_exists(dirname($matewa_i18n_languages_file) . '/flags/' . sanitize_file_name((string) ($matewa_lang_meta['flag'] ?? ''))), ]; } } } $matewa_selected_default_language = isset($widget_default_language) ? strtolower(str_replace('_', '-', (string) $widget_default_language)) : 'auto'; if ('en' === $matewa_selected_default_language) { $matewa_selected_default_language = 'en-gb'; } $matewa_selected_visible_languages = []; foreach (explode(',', isset($widget_visible_languages) ? (string) $widget_visible_languages : '') as $matewa_visible_language_code) { $matewa_visible_language_code = strtolower(str_replace('_', '-', trim($matewa_visible_language_code))); if ('en' === $matewa_visible_language_code) { $matewa_visible_language_code = 'en-gb'; } if ('' !== $matewa_visible_language_code) { $matewa_selected_visible_languages[$matewa_visible_language_code] = true; } } ?>
Setup

1

Business basics

Set the business details, WhatsApp number, inbox and key details your widget needs.

Use full international format, for example 447900123456.

Used for account, product and trial messages. It is not the lead inbox.

Shown inside the widget experience.

Helps future setup suggestions match your trade.

2

Lead routing PRO

Free hands enquiries to WhatsApp. Email lead delivery and reporting unlock with Pro.

Choose where new enquiries go.

Email lead deliverySend each captured enquiry to your sales or enquiries inbox.
PRO
Lead tools & weekly summariesTest delivery, monitor lead totals and receive weekly reports.
PRO

Your Free widget continues to hand visitors directly to WhatsApp.

New website leads are emailed here. Use your sales or enquiries inbox.

Lead tools Use these tools to test, refresh or reset your lead reports.
Mail delivery:
Last mail error:
Refresh lead totals
Retention settings

Raw lead details are kept for , then cleared. Dashboard totals stay.

Reset controls
3

Plan key

Add your Pro licence key, or upgrade directly.

For security, saved keys are hidden after saving and are not printed back into the page. Leave this field blank to keep the saved key, or enter a new key to replace it.

Saved key hidden for security.
Agency own-site access verified. Client seats granted by this key: 0. Agency own-site access: .

After entering a paid licence or private access key, use this to save the hidden key and recheck access immediately.

Buy client licences
4

Widget basics

Turn the website widget on and choose whether visitors can select a country code.

Default widget language Choose the language the widget returns to after a hard reset. Auto follows the website language first.
Visible languages Select which languages visitors can choose. Leave all unchecked to show every available language.
Choose visible languages
Default widget language PRO Free follows the website language. Browse the same language catalogue as Pro below; selection remains locked until Pro is active.
Auto — website language
Auto website language
· PRO
5

Agency setup key

Only needed if an agency is pushing a saved setup pack into this client site.

> Open one-time agency setup key Generate a temporary key for remote setup. Keep closed for normal self-setup.

Support diagnostics

Only open this if support asks.

Open safe support summary No endpoints or raw registry details shown
Support-only summary

This shows safe plan status only. Endpoint URLs, registry payloads, hashes, install IDs and raw validation data stay hidden.

Display pages PRO

Free displays the widget on every page. Upgrade to Pro to choose individual pages.

Choose whether the widget appears everywhere or only on selected pages.

Showing on all pagesFixed placement for 247ChatMate Free.
HomepageService pagesContact page

Page-by-page targeting unlocks with Pro.

Widget Page Display
Detected pages

Tick the pages where the widget should appear.

ID; if ($home_page_id > 0 && $available_page_id === $home_page_id) { continue; } $available_page_title = $available_page->post_title ?: ('Page #' . $available_page_id); $available_page_url = get_permalink($available_page_id); ?>