Your team set up CF7 to send a Slack message every time someone fills in the contact form. It worked for a while. Then one day the notifications stopped. Or maybe you are setting it up fresh and the Slack channel is completely silent even after the form submits successfully.
There are four reasons this happens. Three of them have nothing to do with your CF7 configuration.
Reason 1: You Are Using a Legacy Slack Webhook URL
Slack has two types of incoming webhooks and they are not interchangeable.
Legacy Incoming Webhooks were created before Slack apps existed. They look like:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
App-based Incoming Webhooks are the current supported method. They look identical in format but are generated through a Slack App in your workspace.
Slack stopped creating new legacy webhooks years ago and has been progressively deprecating them. If your webhook URL was generated more than a few years ago through the old "Incoming Webhooks" configuration in Slack settings (not through an app), it may have stopped working without any notification.
How to confirm: Send a test POST to your webhook URL directly:
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"Test from WordPress"}' \
YOUR_WEBHOOK_URL
If you get invalid_token or no_service in the response, the webhook is retired. If you get ok, the webhook is still active.
Fix: Create a fresh Slack App and generate a new webhook:
- Go to
api.slack.com/apps - Click "Create New App" → "From scratch"
- Name it something like "WordPress CF7 Alerts"
- Under "Add features and functionality", choose "Incoming Webhooks"
- Toggle "Activate Incoming Webhooks" to On
- Click "Add New Webhook to Workspace"
- Choose the channel and click Allow
- Copy the new webhook URL
Update this URL in your CF7 Slack plugin settings or in your custom code.
Reason 2: The Dedicated Plugin Is Abandoned
Most CF7 to Slack plugins on WordPress.org were last updated years ago. The "Slack Contact Form 7" plugin's most recent support thread reported it not working in WordPress 5.8 — with zero replies from the plugin author. That was in 2021. The plugin has not been updated since.
An abandoned plugin that hooks into CF7's submission process will break silently when CF7 or WordPress updates change the internal hooks the plugin relies on. The form submits. The plugin fires. Something in the hook chain fails. No Slack message arrives. No error appears anywhere.
If you are using a dedicated CF7 Slack plugin, check its last updated date in your WordPress admin. If it has not been updated in the past year, it is almost certainly running against outdated CF7 internals.
Reason 3: The Webhook URL Is Correct But the Payload Format Is Wrong
Slack's Incoming Webhooks API has evolved. The original format sent a simple text field:
{"text": "New form submission from Jane Smith"}
The current recommended format uses Block Kit:
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*New CF7 Submission*\n*Name:* Jane Smith\n*Email:* jane@example.com"
}
}
]
}
Old plugins that send the legacy text format still work for now but may produce warnings or stop working if Slack deprecates the simple text format fully. More importantly, if a plugin is sending a malformed payload, Slack returns an error that the plugin silently discards.
How to Connect CF7 to Slack Without a Dedicated Plugin
The most reliable approach is to call Slack's webhook directly from CF7 using Contact Form to API. You configure the Slack webhook URL as the API endpoint, set Content-Type: application/json as the header, and define the message payload using your CF7 field values.
A simple payload that puts the form data in a readable Slack message:
{
"text": "New contact form submission:\n*Name:* [your-name]\n*Email:* [your-email]\n*Message:* [your-message]"
}
Or with Block Kit for a cleaner Slack message:
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "New Website Enquiry"
}
},
{
"type": "section",
"fields": [
{"type": "mrkdwn", "text": "*Name:*\n[your-name]"},
{"type": "mrkdwn", "text": "*Email:*\n[your-email]"}
]
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Message:*\n[your-message]"
}
}
]
}
Replace [your-name], [your-email], and [your-message] with your actual CF7 field names. Contact Form to API substitutes the real submitted values before sending the request to Slack.
No dedicated Slack plugin needed. No abandoned codebase to worry about. When Slack updates their webhook format, you update the payload in your settings.
Reason 4: Slack Rate Limiting or App Permissions
If notifications were working and then stopped intermittently, Slack may be rate limiting your webhook. Slack allows 1 message per second per webhook URL. If your form receives bursts of submissions, some Slack messages may be dropped with a 429 Too Many Requests response that the plugin never surfaces.
Also check whether the Slack app that owns your webhook is still installed in your workspace. Workspace admins can remove apps, which immediately invalidates all webhooks created by that app.
In Slack: go to your workspace settings, then Apps, and confirm your WordPress integration app is still listed and active.
Quick Diagnosis
# Step 1: Test your webhook URL directly
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"CF7 webhook test"}' \
https://hooks.slack.com/services/YOUR/WEBHOOK/URL
# Expected: ok
# invalid_token or no_service = webhook retired, create a new one
# channel_not_found = the channel was deleted or renamed
# Step 2: Check the channel still exists in Slack
# The channel the webhook was configured for must still exist
# Step 3: Confirm the plugin's last update date
# WordPress admin → Plugins → check "Last Updated" for your Slack plugin
Top comments (0)