Admin Communications Platform - User Guide

Overview

Admin Communications is the tool Horsify's own team uses to email everyone on the platform at once — the monthly newsletter, a feature announcement, or a one-off notice to every club on Horsify.

You write the email in a normal rich-text editor, see it rendered exactly as it will arrive, check how many people will actually receive it, send yourself a test, and then either send it straight away or schedule it for a date and time. Horsify then delivers it in the background, keeps a per-recipient record of what was sent, and gives every recipient a one-click unsubscribe link.

Who this is for: Horsify platform administrators — you need the Admin role on your Horsify account. This is not the tool for emailing your own club's members.

Running a club? Your own member and entrant emails live under Organiser → Communications → Email Campaigns (/organiser/email-marketing). That's the one that sends from your club, to your club's people. Admin Communications sends from Horsify, to the whole platform.


Key Features

  • ✉️ Three communication types — Weekly Digest, One-Off, and Feature Announcement
  • 🎯 Four audiences — riders, organisations, organisation admins (committee members), or everyone
  • 🧩 Starter templates — three ready-made layouts so you're not staring at a blank editor
  • 📝 Rich-text composer — formatting, links, tables and images, with no HTML required
  • 🖼️ Images upload to the CDN — not embedded as base64, so emails stay small
  • 👁️ True preview — the same renderer the live send uses, so what you see is what arrives
  • 👥 Live recipient count — updated as you switch audience, with the exclusions broken out
  • 🧪 Test send — post a copy to any address before you commit
  • ⏰ Schedule for later — pick a Brisbane (AEST) date and time, and cancel it again if plans change
  • 🔁 Duplicate — copy any past campaign into a fresh draft
  • 🔒 Double-send protection — a campaign can only ever be triggered once
  • 📊 Delivery tracking — sent, failed, and a delivery rate per campaign
  • 🚫 One-click unsubscribe on every email, as required by the Australian Spam Act

Finding it

  1. Sign in with an account that has the Admin role.
  2. Open the Admin menu in the top navigation.
  3. Choose Communications → Campaigns.
  4. Or go straight to /admin/communications.

The Horsify top navigation with the Admin menu open and the Communications submenu expanded, showing Email Templates, Notifications, Campaigns and Service Tests


The campaign list

The landing page is the campaign register: five counters across the top, and every campaign ever created beneath them, newest first.

The Communications page showing counters for Total Campaigns, Drafts, Scheduled, Sending and Sent, above a table of three campaigns with their type, audience, status, created date and send date

Each row shows the campaign's type, audience, status, when it was created, and — depending on status — when it was sent, when it is scheduled for, or In progress… while it is going out.

The controls on the right depend on status:

Control Available when
Edit (pencil) Draft only
Delete (bin) Draft only
Duplicate (copy) Any status

Clicking anywhere else on a row opens that campaign's detail page.

Duplicate is the quickest way to run a recurring send: it copies everything — type, audience, subject, body, call-to-action — into a brand-new Draft named … (Copy), and drops you straight into the editor.


Creating a campaign

Click New Campaign.

Start from a template (optional)

While the body is still empty, three starter templates are offered. Picking one fills in the communication type, subject, heading, body and a call-to-action button, which you then edit. The templates disappear once there's content in the body, so choose first if you want one.

The Start from a template card offering Monthly Newsletter, Feature Announcement and Event Season

Template Good for
Monthly Newsletter A roundup of news, events and tips
Feature Announcement Telling everyone about something new
Event Season Promoting a busy run of events

Campaign details

The Campaign Details card with fields for Campaign Name, Communication Type, Audience, Subject Line with a 31/60 character counter, Preheader Text with a 0/100 counter, and Email Heading

Field Notes
Campaign Name Required. Internal only — recipients never see it.
Communication Type One-Off, Weekly Digest, or Feature Announcement. A label for your own reporting; it doesn't change how the email is sent.
Audience Who gets it. See Choosing an audience below.
Subject Line Required. The counter turns red past 60 characters, where inboxes start truncating.
Preheader Text The grey summary line inboxes show next to the subject. Counter warns past 100 characters.
Email Heading The large heading inside the email itself. Optional — leave it blank and the body starts straight away.

Both counters are advice, not limits — a long subject still sends.

Writing the email

The Compose tab is a rich-text editor: bold, italic, fonts and colours, headings, lists, links, tables, alignment, and a source-code view if you'd rather work in HTML.

The Compose tab showing the rich text editor toolbar and body content, with the Quick Image Upload panel and the collapsed plain-text section beneath it

Adding images. Use the Image button in the toolbar. Images upload to Horsify's CDN and are inserted as a normal link, rather than being embedded in the email itself — which keeps the message small enough that mail clients don't clip it. The Quick Image Upload panel underneath does the same thing but hands you a URL to paste in yourself. Uploaded newsletter images are automatically deleted after 30 days, so they are for one campaign, not a permanent library.

Plain-text version. Tucked into the collapsed section at the bottom. It's what a mail client that can't render HTML falls back to. Leave it blank and the HTML content is used.

Call-to-action button

In the sidebar you can add one button under the body — a label and a link.

The link must be an https:// address on one of Horsify's own domains — horsify.com.au, horsify.au, horsify.com, horsify.net, horsify.co.nz or horsify.club, including any subdomain of them, such as a club site. Anything else is rejected, both in the editor and by the server: platform emails go to thousands of people at once, and restricting the button to Horsify's own domains is what stops that reach being used to point people somewhere else. If the URL is wrong the field turns red and the campaign won't save.

Preview

The Preview tab renders the finished email through the same renderer the real send uses — Horsify header, your heading, the greeting, your content, the button, and the footer with its unsubscribe link. It is a static snapshot, so hit Refresh (or switch tabs again) after editing.

The Preview tab showing the composed email as recipients will see it: Horsify branded header, heading, personalised greeting, body content, a call-to-action button and the account footer

The greeting shows a sample name in the preview. In the real send, each recipient gets their own — a rider's display name or first name, an organisation's name — falling back to their email address if Horsify has no name for them.


Choosing an audience

The sidebar counts your audience live and re-counts whenever you change it.

The editor sidebar showing the Call-to-Action Button fields, a Who will receive this card reading 11 eligible recipients split into riders, organisations and organisation admins, a Send a test box, and the Save Draft, Schedule for later and Send Now buttons

Audience Who it reaches
All (Riders + Organisations) Riders and organisations together — but not organisation admins
Riders Only Individual rider accounts
Organisations Only The organisation's own contact email address
Organisation Admins (committee members) The individual people who administer a club, at their own addresses

Note that All is riders plus organisations, exactly as its label says. Committee members are a separate audience on purpose: reaching the people who run clubs is a different job from reaching the clubs themselves, and it's the one to use when you need a change to land with a human rather than an info@ inbox.

Who is excluded, and why

Horsify filters the audience before anything is sent:

  • Riders need to have opted in to marketing or newsletter email, and to have a usable email address on their account.
  • Riders who are only riding-school clients are left out of rider broadcasts — someone whose entire relationship with Horsify is booking lessons at a school isn't a platform newsletter audience. If they've also entered an event, they count as a rider again and are included.
  • Organisations need marketing consent, a contact email, and an active account.
  • Organisation admins are treated as operational contacts, so they are not filtered on marketing consent — but a committee member marked as not contactable is skipped, and admins of inactive clubs are never emailed.
  • Suppressed addresses are dropped platform-wide: anything that has previously hard-bounced, been reported as spam, or unsubscribed.
  • Duplicates are removed, ignoring capitalisation — so someone who is both a rider and their club's contact gets one email, not two.

The Excluded (suppressed / duplicate) line in the sidebar counts what those last two rules removed. People filtered out for consent or a missing email address never enter the count at all, so a low total usually means low consent rather than a fault.


Sending a test

Enter any address in Send a test and click Send test email. Your draft is saved automatically first, so you can test at any point.

A test email:

  • has [TEST] in front of the subject line,
  • is addressed to "Test Recipient" rather than a real name,
  • has no unsubscribe link — it isn't a campaign send, so there is nothing to unsubscribe from.

Everything else, including the layout and the call-to-action, is identical to the real thing.


Sending, or scheduling

Send now

Send Now shows a confirmation with a fresh recipient count and its rider / organisation / admin split.

The Send this campaign now dialog naming the campaign, showing approximately 11 recipients broken down by type, and warning that this can't be undone

Confirming locks the campaign: it moves to Sending, the recipient list is fixed at that moment, and it can never be triggered again — the button is one-way, and simultaneous clicks can't produce two sends.

Schedule for later

Schedule for later takes a date and time in AEST (Brisbane), at least a few minutes ahead.

The Schedule this campaign dialog with a date and time field, a note that times are AEST (Brisbane), and the approximate recipient count

A scheduled campaign needs a subject and a body before it will accept a time. Once scheduled it is locked for editing, but Cancel schedule on its detail page returns it to Draft so you can change it and reschedule.

Recipients for a scheduled campaign are worked out when it sends, not when you schedule it — so people who join, opt in, or unsubscribe in the meantime are accounted for. This is why a scheduled campaign shows 0 Total Recipients until its time arrives.

A scheduled campaign's detail page with a Scheduled badge, Cancel schedule and Send Now buttons, a banner reading Scheduled to send on Wednesday 04 Sep 2030 at 9:00 am AEST, and the delivery counters all reading zero


Tracking a send

The detail page carries four counters: Total Recipients, Sent, Failed, and Delivery Rate. They fill in as delivery progresses — reload the page to see the latest.

How quickly emails actually go out

Delivery is deliberately paced, in two stages.

  1. A background worker wakes on a 15-minute cycle and hands 50 emails per campaign per cycle to Horsify's email queue — about 200 an hour per campaign. This is usually what sets the pace.
  2. That queue is what actually sends, and it is rate-limited platform-wide to stay inside the email provider's quota (up to 1,500 an hour for the whole of Horsify), shared with every other email Horsify sends.

Campaigns are queued at the lowest priority on purpose, behind sign-in codes, confirmations and reminders, so a newsletter can never delay somebody's entry receipt. On a busy day that can slow a campaign further.

A campaign to a few dozen people typically goes out within the first cycle or two. A large campaign takes hours: at about 200 an hour, 3,000 recipients take around 15 hours — plan a large send well ahead of anything it is announcing. A campaign sitting in Sending with the counters climbing slowly is working correctly, not stuck. The status only settles once a cycle finds nothing left to send, so allow one extra cycle at the end.

Final statuses

Status Meaning
Draft Being written. The only status that can be edited or deleted.
Scheduled Waiting for its send time. Can be cancelled back to Draft.
Sending Going out now.
Sent Every recipient was delivered to.
PartiallyFailed Some delivered, some didn't.
Failed Nothing delivered.

Individual failures are recorded per recipient and are not retried automatically. If a campaign lands on PartiallyFailed or Failed, duplicate it and send the copy rather than trying to re-trigger the original.


Unsubscribes and compliance

Every real campaign email carries a unique unsubscribe link in its footer, satisfying the functional unsubscribe requirement of the Australian Spam Act 2003.

Clicking it takes effect immediately and shows a confirmation page. For a rider or organisation it clears both marketing and newsletter consent, and the withdrawal is written to their consent history for the audit trail the Privacy Act expects. For a committee member emailed as an organisation admin — who has no consent flag of their own — the address itself is suppressed platform-wide, without touching their contactability inside their club.

Unsubscribing only stops marketing. Account and transactional email — entry confirmations, receipts, reminders — keeps working.


Troubleshooting

Problem Cause and fix
"Only Draft campaigns can be edited." The campaign has been scheduled or sent. If it's Scheduled, use Cancel schedule to return it to Draft. Otherwise duplicate it.
The call-to-action field is red The URL must be https:// on a Horsify domain (horsify.com.au, horsify.au, horsify.com, horsify.net, horsify.co.nz or horsify.club, or a subdomain of one). Other domains are rejected.
The campaign won't save Campaign Name and Subject Line are both required, and the call-to-action URL must be valid or empty.
"The scheduled time must be at least a minute in the future." Pick a time a few minutes further out — the picker is in Brisbane time.
"Add a subject and email body before scheduling." Scheduling requires both, unlike saving a draft.
"This campaign has already been triggered for sending." It has been sent once and can't be sent again. Duplicate it.
The recipient count looks far too low Almost always consent: riders need marketing or newsletter opt-in, and organisations need marketing consent plus an active account with a contact email.
Stuck on Sending with the counters climbing slowly Expected. Campaigns are queued 50 at a time every 15 minutes — about 200 an hour — and sent at the lowest priority. A large send takes hours. Check back later.
Images have vanished from an old campaign Uploaded newsletter images are deleted after 30 days. Re-upload them before resending.

Related Articles

  • WYSIWYG Email Template Editor — customising the automated emails Horsify sends on a club's behalf\n\n---\n\nSource: wiki/features/ADMIN_COMMUNICATIONS.md \nLast synced: 2026-10-06 06:10:52 UTC
Subscription Management
Creating an Event