Form submissions to your phone
A contact form that only emails you is easy to miss. If a new inquiry is worth answering within the hour, it’s worth a push: who wrote, what they want, and every field they filled in.
Any form can do this, since Honk only needs one HTTPS request. This guide covers the three usual setups: a WordPress form plugin, a hosted form tool, and a form on your own site.
Before you start
- A Honk account. Honk is invite-only for now: request access.
- A project for your website, with an ingestion key: in the web app, open the project, then Keys.
Every code example below gives each submission its own group. Two people writing at the same time get you two notifications, not one group with a count, and a retry never sends the same submission twice.
WordPress: the Honk Me plugin
The Honk Me plugin for WordPress finds Contact Form 7, WPForms, Gravity Forms, Elementor Pro Forms, Fluent Forms and Ninja Forms by itself. Each entry arrives titled with the form’s name, and each form is its own group in Honk. Install and connect the plugin as the WooCommerce guide shows; it works without WooCommerce too.
Under Settings ▸ Honk ▸ Events ▸ Forms, click Details under your form plugin to choose whether notifications include what people entered. With Contact Form 7, WPForms and Gravity Forms, you can also leave out single fields, form by form. What people entered is personal data, so it’s sent only while Include customer names and emails is on.
Without the plugin
The plugin is in review for the WordPress plugin directory. Until it’s listed, or if you’d rather not install it, a few lines in a must-use plugin do the job. First put the key in wp-config.php and create wp-content/mu-plugins/honk.php with the honk_send() helper, as in the WooCommerce guide. Then add the hook for your form plugin.
Contact Form 7, after the form’s email has been sent:
// Contact Form 7: every sent form becomes a push with all of its fields.
add_action('wpcf7_mail_sent', function ($form) {
$submission = WPCF7_Submission::get_instance();
if (!$submission) {
return;
}
$lines = [];
foreach ($submission->get_posted_data() as $field => $value) {
$lines[] = $field . ': ' . (is_array($value) ? implode(', ', $value) : $value);
}
$id = $form->id() . '-' . $submission->get_meta('timestamp');
honk_send([
'title' => 'New message: ' . $form->title(),
'message' => implode("\n", $lines),
'severity' => 'light',
'priority' => 'high',
'category' => 'customers',
'source' => 'contact-form-7',
'group_key' => 'forms/' . $id, // one group per submission
], 'cf7-' . $id);
});WPForms, after the entry is saved:
// WPForms: the same, after the entry is saved.
add_action('wpforms_process_complete', function ($fields, $entry, $form_data, $entry_id) {
$lines = [];
foreach ($fields as $field) {
if ($field['value'] !== '') {
$lines[] = $field['name'] . ': ' . $field['value'];
}
}
honk_send([
'title' => 'New entry: ' . $form_data['settings']['form_title'],
'message' => implode("\n", $lines),
'severity' => 'light',
'priority' => 'high',
'category' => 'customers',
'source' => 'wpforms',
'group_key' => 'forms/wpforms-' . $form_data['id'] . '-' . $entry_id,
], 'wpforms-' . $form_data['id'] . '-' . $entry_id);
}, 10, 4);The push shows the form’s name as the title and every field in the message. On iPhones with Apple Intelligence, Honk also lists the key details of an inquiry, like the budget and the deadline, and can draft a reply for you to copy, all on the device.
Hosted forms: Make, Zapier or n8n
Hosted form tools send webhooks in their own format, which Honk can’t read directly. Put a workflow tool in between to receive the submission and send Honk the fields you want.
In Make, the last module is HTTP ▸ Make a request:
Make scenario
1. Your form tool ▸ Watch responses (or Webhooks ▸ Custom webhook)
2. HTTP ▸ Make a request
URL: https://honk-me.app/v1/messages
Method: POST
Headers: Authorization = Bearer honk_…
Body type: Raw
Content type: JSON (application/json)
Request content:
{
"title": "New form entry: {{1.form_name}}",
"message": "{{1.name}} <{{1.email}}>: {{1.message}}",
"severity": "light",
"priority": "high",
"category": "customers",
"group_key": "forms/{{1.id}}"
}The same works in Zapier with Webhooks by Zapier ▸ POST (Payload Type json, the same data fields, and the Authorization header), or in n8n with the Honk node. Where you can, keep the key in the tool’s credentials or connection settings rather than in a plain text field.
Your own site
If your site has a back end, send the request from there once the submission is saved. The customer requests guide does it in Laravel, and every library has the same recipe for Node.js, Go, Swift, Kotlin, Java and Rust. Never call Honk from the browser: anyone could read the key in the page.
Keep it calm
- One group per submission in the code examples, so every inquiry pushes. The plugin keeps one group per form instead. If a form starts getting spam, add a honeypot field or a CAPTCHA to the form itself.
- Priority High makes every inquiry push, even if you’ve raised your push threshold to High to keep routine events quiet.
- Quiet hours hold inquiries overnight and give you one summary in the morning, unless you choose otherwise.
- Personal data: send only what you need to reply. Messages are kept for 3, 14 or 30 days, depending on your plan.
Honk is invite-only for now: request access. Everything in this guide works on the Free plan.