Pushover Push Notifications
Total CMS integrates with Pushover to send push notifications to your phone, tablet, or desktop when form actions are triggered. This is a Pro edition feature.
1. Create a Pushover Account
Section titled “1. Create a Pushover Account”Sign up at pushover.net and install the Pushover app on your device. Pushover charges a one-time $5 fee per platform (iOS, Android, Desktop).
2. Create an Application
Section titled “2. Create an Application”Go to pushover.net/apps/build and create a new application for your Total CMS site. This gives you an Application Token.
3. Get Your User Key
Section titled “3. Get Your User Key”Your User Key is displayed on your Pushover dashboard.
4. Configure Total CMS
Section titled “4. Configure Total CMS”Go to Settings > Push Notifications in the Total CMS admin and enter your Application Token and User Key.
5. Test Your Configuration
Section titled “5. Test Your Configuration”Use the Test Push Notifications section at the bottom of the settings page to send a test notification and verify everything is working.
Form Action
Section titled “Form Action”The pushover action sends a push notification when a form is saved or an object is deleted. Add it to your collection’s formSettings in .meta.json.
Basic Example
Section titled “Basic Example”{ "action": "pushover", "title": "New Submission", "message": "A new form was submitted."}Properties
Section titled “Properties”| Property | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | Must be "pushover" | |
title | string | No | App name | Notification title (max 250 characters). Supports Twig. |
message | string | Yes | Notification body (max 1024 characters). Supports Twig. | |
priority | int | No | 0 | Notification priority level (see below) |
sound | string | No | User default | Notification sound (see below) |
link | string | No | Supplementary clickable URL (max 512 characters). Supports Twig. | |
linkTitle | string | No | Label for the supplementary URL (max 100 characters). Supports Twig. | |
image | object | No | Image attachment from a collection (max 5MB, see below) | |
group | bool | No | false | Send to group key instead of user key (see below) |
continue | bool | No | false | Continue to next action even if notification fails |
Twig Variables
Section titled “Twig Variables”All text fields (title, message, link, linkTitle) support Twig template syntax with access to:
{{ data.fieldName }}- Form field values from the submitted object{{ user.fieldName }}- The authenticated user who triggered the action
{ "action": "pushover", "title": "{{ data.schema }} Updated", "message": "{{ user.name }} updated {{ data.title }}", "link": "https://mysite.com/admin/collections/blog/{{ data.id }}", "linkTitle": "View in Admin"}Priority Levels
Section titled “Priority Levels”| Value | Name | Behavior |
|---|---|---|
-2 | Lowest | No notification generated, badge increment only |
-1 | Low | No sound or vibration, popup notification only |
0 | Normal | Sound, vibration, and alert per device settings |
1 | High | Bypasses quiet hours, always sounds and vibrates |
2 | Emergency | Repeats every 60 seconds until acknowledged (up to 1 hour) |
Sounds
Section titled “Sounds”| Value | Sound |
|---|---|
| (empty) | User’s default sound |
pushover | Pushover (default) |
bike | Bike |
bugle | Bugle |
cashregister | Cash Register |
classical | Classical |
cosmic | Cosmic |
falling | Falling |
gamelan | Gamelan |
incoming | Incoming |
intermission | Intermission |
magic | Magic |
mechanical | Mechanical |
pianobar | Piano Bar |
siren | Siren |
spacealarm | Space Alarm |
tugboat | Tugboat |
alien | Alien Alarm (long) |
climb | Climb (long) |
persistent | Persistent (long) |
echo | Pushover Echo (long) |
updown | Up Down (long) |
vibrate | Vibrate Only |
none | None (silent) |
Users can also upload custom sounds to their Pushover account and reference them by name.
Image Attachments
Section titled “Image Attachments”You can attach an image from a collection to the notification. The image is processed through ImageWorks (resized to 1920x1920 max, converted to JPEG) before sending. Pushover supports attachments up to 5MB.
| Property | Type | Required | Description |
|---|---|---|---|
image.collection | string | Yes | Collection name |
image.id | string | Yes | Object ID. Supports Twig (e.g., {{ data.id }}) |
image.property | string | Yes | Image or gallery property name |
image.name | string | No | Gallery image name. Use first, last, random, featured, or a specific filename |
Single Image Property
Section titled “Single Image Property”{ "action": "pushover", "title": "New Product", "message": "{{ data.title }} was added", "image": { "collection": "products", "id": "{{ data.id }}", "property": "photo" }}Gallery Property
Section titled “Gallery Property”{ "action": "pushover", "title": "Gallery Updated", "message": "{{ data.title }}", "image": { "collection": "products", "id": "{{ data.id }}", "property": "gallery", "name": "first" }}If the image cannot be generated (missing property, empty gallery, etc.), the notification is sent without an attachment.
Delivery Groups
Section titled “Delivery Groups”Pushover delivery groups let you broadcast the same notification to multiple users with a single key. To use groups:
- Create a delivery group at pushover.net/groups/build and add your team members
- Enter the group key in Settings > Push Notifications > Pushover Group Key
- Add
"group": trueto your action config
{ "action": "pushover", "title": "New Order", "message": "{{ data.customerName }} placed an order", "group": true}When group is true, the notification is sent to the group key. When false (default), it uses the user key. This lets you configure both keys in settings and choose per-action which audience receives the notification.
Complete Examples
Section titled “Complete Examples”Blog Notification on New Post
Section titled “Blog Notification on New Post”{ "formSettings": { "newActions": [ { "action": "pushover", "title": "New Blog Post", "message": "{{ user.name }} published: {{ data.title }}", "sound": "magic", "link": "https://mysite.com/blog/{{ data.slug }}", "linkTitle": "Read Post" }, { "action": "redirect-object", "link": "/admin/collections/blog/{id}" } ] }}E-commerce Order Notifications
Section titled “E-commerce Order Notifications”{ "formSettings": { "newActions": [ { "action": "pushover", "title": "New Order #{{ data.id }}", "message": "{{ data.customerName }} placed an order for ${{ data.total }}", "priority": 1, "sound": "cashregister", "link": "https://mysite.com/admin/collections/orders/{{ data.id }}", "linkTitle": "View Order" }, { "action": "mailer", "mailerId": "order-confirmation" }, { "action": "redirect-object", "link": "/admin/collections/orders/{id}" } ], "deleteActions": [ { "action": "pushover", "title": "Order Cancelled", "message": "Order #{{ data.id }} was cancelled by {{ user.name }}", "priority": 1, "continue": true }, { "action": "redirect", "link": "/admin/collections/orders" } ] }}Non-Critical Analytics with Continue
Section titled “Non-Critical Analytics with Continue”{ "action": "pushover", "title": "Content Updated", "message": "{{ data.title }} was modified", "priority": -1, "continue": true}Using continue: true ensures that if the Pushover API is unreachable, the remaining form actions (like redirects) still execute.
Rate Limits
Section titled “Rate Limits”Pushover allows 10,000 messages per month on the free tier. Each successful API call counts as one message regardless of how many devices the user has. The quota resets on the 1st of each month.
See Also
Section titled “See Also”- Form Settings - Configure form actions for collections
- Mailer Actions - Send email notifications from form actions
- Webhook Actions - Call external URLs from form actions