FlowAlert
All posts
How to Send WordPress Push Notifications (With or Without a Plugin)
wordpresspush-notificationstutorial

How to Send WordPress Push Notifications (With or Without a Plugin)

Send instant push notifications from WordPress to your phone — using the no-code FlowAlert plugin for WooCommerce and popular form plugins, or the REST API for anything custom.

FlowAlert TeamMay 12, 2026 6 min read

How to Send WordPress Push Notifications (With or Without a Plugin)

Whether you prefer a no-code setup or want full control via PHP, there are two ways to get instant push notifications from WordPress to your phone using FlowAlert. This guide covers both.


Option 1: The FlowAlert WordPress Plugin (No Code Required)

The FlowAlert WordPress plugin connects your site to the FlowAlert API with zero code. Install it, enter your API key, and toggle on the integrations you want.

We're continuously shipping new integrations and alert events — so if something you need isn't listed yet, it's likely coming soon (or you can use the REST API approach below in the meantime).

What the plugin currently supports

WooCommerce — fires a notification the moment a new order is placed, including order number, total, customer name, and item list. Works with both classic and block checkout, with built-in deduplication so you never get double-notified for the same order.

Easy Digital Downloads — fires on every completed purchase with amount, customer name, and product list.

Forms — all major WordPress form plugins are supported:

  • Contact Form 7
  • WPForms
  • Gravity Forms
  • Ninja Forms
  • Fluent Forms
  • Forminator
  • SureForms
  • Divi (theme or Divi Builder)
  • Jetpack Forms

Each form integration sends the form name and a summary of the submitted fields. You can configure which field is used for the notification body, set a custom event key per form type, and require acknowledgement for high-priority submissions.

Since version 1.1.0 the plugin also covers WordPress itself: it can push an alert when the site hits a fatal error and enters recovery mode, when an auto-update fails, when an administrator signs in, when a plugin or theme changes, or when a new user registers — no third-party plugin involved. And with the built-in site heartbeat, the plugin checks in with FlowAlert every 10 minutes, so if your site goes down entirely, the silence itself pages whoever is on call.

Installing the plugin

  1. In your WordPress admin go to Plugins → Add New
  2. Search for FlowAlert
  3. Click Install NowActivate
  4. Go to Settings → FlowAlert, paste your API Key (from your FlowAlert dashboard), and enable the integrations you want

That's it. Within seconds of saving you'll receive a test notification confirming the connection.

Per-integration settings

Each integration has its own configuration panel:

  • PriorityNORMAL, HIGH, or URGENT
  • Requires acknowledgement — FlowAlert keeps alerting until someone on your team taps Acknowledge
  • Custom event key — used to set up targeted routing rules per form
  • Body field — choose which submitted field appears as the notification body

There's also an optional email fallback — if the FlowAlert API is unreachable, the plugin sends a fallback email to your admin address so no alert is silently dropped.


Option 2: Custom Integration via REST API (For Developers)

If you want more control — custom event data, conditional logic, integration with plugins that aren't natively supported — you can call the FlowAlert REST API directly from PHP.

The helper function

Add this to your theme's functions.php or a /mu-plugins/flowalert.php file:

1<?php 2 3function flowalert_send($event, $title, $body, $priority = 'NORMAL', $data = []) { 4 $api_key = defined('FLOWALERT_API_KEY') ? FLOWALERT_API_KEY : ''; 5 $endpoint = 'https://api.flowalert.io/v1/events'; 6 7 if (empty($api_key)) { 8 return; 9 } 10 11 wp_remote_post($endpoint, [ 12 'headers' => [ 13 'Content-Type' => 'application/json', 14 'X-Api-Key' => $api_key, 15 ], 16 'body' => wp_json_encode(compact('event', 'title', 'body', 'priority', 'data')), 17 'timeout' => 5, 18 'blocking' => false, // fire-and-forget — no checkout latency 19 ]); 20}

Add your API key to wp-config.php:

define('FLOWALERT_API_KEY', 'fa_live_xxxxxxxxxxxx');

Hooking into WordPress events

New WooCommerce order

1add_action('woocommerce_payment_complete', function($order_id) { 2 $order = wc_get_order($order_id); 3 $total = $order->get_formatted_order_total(); 4 $customer = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(); 5 $items = implode(', ', array_map(fn($i) => $i->get_name(), $order->get_items())); 6 7 flowalert_send( 8 'woo.order_paid', 9 "💰 New Order #{$order_id}{$total}", 10 "{$customer} ordered: {$items}", 11 'HIGH', 12 ['order_id' => $order_id, 'total' => $order->get_total(), 'email' => $order->get_billing_email()] 13 ); 14});

Contact Form 7 submission

1add_action('wpcf7_mail_sent', function($form) { 2 $submission = WPCF7_Submission::get_instance(); 3 $data = $submission ? $submission->get_posted_data() : []; 4 $name = sanitize_text_field($data['your-name'] ?? 'Someone'); 5 $email = sanitize_email($data['your-email'] ?? ''); 6 7 flowalert_send( 8 'contact.form_submitted', 9 '📩 New Contact Form Submission', 10 "{$name} ({$email}) sent a message", 11 'HIGH', 12 ['name' => $name, 'email' => $email] 13 ); 14});

New user registration

1add_action('user_register', function($user_id) { 2 $user = get_user_by('id', $user_id); 3 4 flowalert_send( 5 'user.registered', 6 '👤 New User Registered', 7 "{$user->display_name} ({$user->user_email}) just signed up", 8 'NORMAL', 9 ['user_id' => $user_id, 'email' => $user->user_email] 10 ); 11});

Failed payment

1add_action('woocommerce_order_status_failed', function($order_id) { 2 $order = wc_get_order($order_id); 3 4 flowalert_send( 5 'woo.payment_failed', 6 "❌ Payment Failed — Order #{$order_id}", 7 "{$order->get_billing_email()} — card declined for {$order->get_formatted_order_total()}", 8 'URGENT' 9 ); 10});

Why use the API directly?

The REST API is the right choice when you need something the plugin doesn't cover yet:

  • WooCommerce failed payments, refunds, or stock alerts
  • User registration or post published events
  • Conditional logic — e.g. only notify for orders over $500
  • Custom post types or third-party plugins not yet natively integrated
  • Background jobs or cron tasks that should page someone on failure

As the plugin gains new integrations, you may find you need less and less custom PHP over time.


Plugin vs. REST API — Which Should You Use?

PluginREST API
Setup time~2 minutes15–30 minutes
Requires codingNoYes (PHP)
WooCommerce new orders
WooCommerce failed payments / stock❌ (coming soon)
Form submissions (CF7, Gravity, WPForms…)
Easy Digital Downloads
User registrations / post events❌ (coming soon)
Custom conditional logic
Best forStore owners, non-developersDevelopers, agencies

Both approaches produce the same result: an instant push notification on your phone the moment something important happens on your WordPress site.


Setting Up Routing Rules

Whichever method you choose, the next step is the same — go to your FlowAlert dashboard and configure Routing Rules:

  1. Go to Routing Rules → Create Rule
  2. Set the Event Key to match what you used (e.g. woo.order_paid, or the event the plugin fires)
  3. Choose who gets notified — yourself, a group, or on-call team members
  4. Set priority and acknowledgement requirements

For a solo store owner, just target yourself. For a team, create groups (Fulfilment, Finance, Support) and route the right events to the right people.


Download the FlowAlert plugin → · Get your API key →

Get alerts where you’ll actually see them.

Everything in these guides works on the free plan — connect a source, add a routing rule, and the right person’s phone knows in under two minutes.

No card required · Free plan forever · 1,000 events/month