Virtual Airlines Webhooks
Virtual Airlines webhooks send selected airline activity to a Discord channel. They are useful for an operations room, pilot community, management team, or live airline activity feed. Discord is the supported destination. FlyHub sends formatted messages asynchronously; it does not send a generic JSON callback to an arbitrary URL, and it does not provide an inbound webhook that your website can call. Each event below includes the information you can expect to see in Discord. Use this guide to set up a destination, choose events, and understand delivery.What you can build
With a Discord destination, an airline can announce:- flight bookings, cancellations, completions, rejections, and settlements;
- pilot applications and membership decisions;
- pilots joining, leaving, being suspended, restored, removed, or changing roles;
- fleet changes and schedule changes;
- published airline announcements.
Set up a Discord destination
From FlyHub:- Open the airline in Airlines.
- Open Manage airline.
- Select Ownership.
- Open Integrations and choose the Discord webhook option.
- Give the destination a name that tells managers where it goes, such as
Operations roomorPilot announcements. - Paste a Discord webhook URL and choose one or more event types.
- Save it, then use Test before relying on it for operations.
Accepted Discord URLs
FlyHub accepts only an HTTPS Discord webhook URL with this structure:- protocol must be
https; - host must be exactly
discord.com,www.discord.com, ordiscordapp.com; - the path must be
/api/webhooks/...or/api/vN/webhooks/...; - the webhook ID must contain 5–30 digits;
- the token must contain 20–200 letters, numbers, dots, underscores, or hyphens;
- a trailing slash is allowed;
- query strings and fragments are removed before storage.
discord.com/api/webhooks/…123456.
An airline can have up to 10 active or paused destinations. A removed or automatically disabled destination does not count toward that active limit, but it cannot be restored; create a new destination from Integrations instead.
Manage destinations
Owners and authorized managers can manage Discord destinations from Manage airline → Ownership → Integrations. From there you can list destinations, create one, choose its events, send a test, pause or resume it, and remove it. After a destination is created, FlyHub shows only a safe preview of its URL. If the URL changes, create and test the replacement before removing the old destination. A removed or disabled destination cannot be restored from the page. The event examples below show the kind of notification that can appear in Discord.Event catalog
FlyHub maps selected airline activity to public event names. The event name is included in every normal Discord embed as anEvent field.
The same action can produce a different public event depending on the resulting state. For example, a membership application that is immediately accepted can produce
pilot.joined, while a pending application produces pilot.applied.
Event examples
The Discord payload
These are Discord webhook messages, not a custom FlyHub JSON event protocol. FlyHub sends an HTTPPOST to Discord with a JSON body containing a username, disabled mentions, and one embed.
Representative normal payload:
Payload safety and size
- Discord mentions are disabled with
allowed_mentions.parse: [], so airline text cannot accidentally ping everyone, a role, or a user. - Only public airline and operation details are copied into the summary.
- A normal message contains one embed.
- At most 25 embed fields are included.
- Embed field names are capped at 256 characters and values at 1,024 characters.
- Long text is shortened when necessary so the message stays readable in Discord.
- The sender name is the airline ICAO code followed by
Operations.
Delivery behavior
Normal notifications are asynchronous. When a supported action occurs, FlyHub sends the matching notification to every active destination subscribed to that event. A destination must be active when the notification is processed; pausing a destination stops new notifications from being sent to it. Temporary failures may be retried automatically. Delivery timing is not guaranteed, so use the event details rather than the arrival time when interpreting an update. If your Discord workflow triggers automation, make it tolerant of an occasional duplicate notification.Automatic destination disablement
Repeated delivery failures can automatically disable a destination. A disabled destination does not receive events and cannot be reactivated from the page; fix the Discord configuration and create a replacement. A paused destination can be resumed from Integrations.Duplicate tolerance
Notifications are not a guaranteed exactly-once stream. Your Discord workflow should tolerate an occasional duplicate and should avoid treating the arrival of a message as proof that a flight or membership action succeeded; use the event details and the FlyHub API when you need to verify state.What counts as a successful post
FlyHub sends a standard Discord webhook request with the payload described above. A notification is considered delivered when Discord accepts the request. If Discord or FlyHub is temporarily unavailable, the notification may be retried according to the delivery behavior above.Pause, resume, change, and rotate safely
Temporary pause
Choose Pause on the destination. Choose Resume when you want notifications to continue.Change the event list
Edit the destination and replace its event selection. The new selection becomes the complete subscription list.Change the Discord channel
Discord webhook URLs are not edited in place. Create the new destination, send a test, confirm the message arrived in the intended channel, then remove the old destination.Recover from automatic disablement
Inspect the preview, check the Discord channel and webhook permissions, create a new Discord webhook if necessary, then create a new FlyHub destination. A disabled destination is historical and cannot be reactivated.Troubleshooting
- If FlyHub rejects the URL, copy it again from Discord and confirm that it is an HTTPS Discord webhook URL.
- If Test fails, confirm that the Discord webhook still exists and that the destination channel accepts messages.
- If no notifications arrive, confirm that the destination is active and that the event is selected.
- If a destination is disabled after repeated delivery failures, create a replacement after checking the Discord channel and permissions.
- If FlyHub reports a temporary problem, wait a moment and retry from the Integrations screen. Do not create duplicates until you have confirmed the destination’s current state.
Limits and non-features
Discord notifications do not provide:- arbitrary custom HTTP destinations;
- inbound webhooks into FlyHub;
- signed generic callbacks or a signing-secret configuration;
- a delivery-history page;
- replaying a past event;
- editing a Discord URL in place;
- restoring a removed or automatically disabled destination;
- complete private account records;
- guaranteed exactly-once delivery.
Security checklist
- Keep the complete Discord URL private.
- Do not paste it into a public issue, screenshot, source file, or browser URL.
- Use a separate Discord webhook per channel or purpose so it can be revoked without disrupting every notification.
- Subscribe only to events the channel should receive.
- Test in a private operations channel before using a public community channel.
- Treat
disabledas a configuration or delivery-health problem, not as a reason to bypass the safeguards. - Remember that notifications may contain pilot display names, route information, scores, aircraft details, and financial net results. Choose the Discord channel’s audience accordingly.