Documentation

​
​

Development

User Acquisition

Monetization

Industry

Vivox Unity SDK

Vivox Unity SDK

Vivox
​
​
Vivox Unity SDK
  • Overview
  • Get started
  • Release notes
  • Developer guide
    • Set up your project
    • Create voice and text channels
    • Messaging
      • Channel messages
      • Message metadata
      • Chat history
      • Edit and delete messages
      • Directed messages
      • Offline direct messages
      • Anti-flooding
      • Large text channel setting
      • Retrieve Conversations list
      • Set Chat Markers
    • Player management
    • Device management
    • Audio management
    • Mobile development
    • Text-to-speech
    • Speech-to-text
    • Real-time recording
    • Server-side-recording
    • Troubleshooting
  • Tutorials
  • Reference
  1. Vivox Unity SDK documentation
  2. Vivox Unity Developer Guide

Message metadata

Attach metadata to Vivox messages for additional context.
Read time 2 minutes
Last updated 8 months ago

Send and receive additional information between players by attaching metadata to Vivox messages. This metadata can enhance player communication and support gameplay features..
Send information such as display names, a player’s local mute state, game data and more by adding metadata to messages. The metadata doesn't alter the original message content but provides context or instructions to the recipient or the game logic. Attach the metadata by using
MessageOptions.Metadata
; once received, retrieve the metadata with
VivoxMessage.Metadata
.
Note
Vivox is unable to send empty messages. To attach metadata, you must send a non-empty text message.
The following code sample is an example of sending a message with JSON metadata that communicates the user’s local mute state:
using UnityEngine;using Unity.Services.Vivox;[System.Serializable]public class MetadataInfo{ public string Type;}[System.Serializable]public class PlayerMuteInfoMetadata{ public string Type = "PlayerMuteInfo"; public string PlayerId; public bool LocallyMuted;}public async void MutePlayerLocally(VivoxParticipant participant){ // ... (player mute logic) // If it was a self-mute, the local user's input device would be muted. if (participant.IsSelf) { // Send a message with metadata to the channel communicating the local player's updated input device mute state to other participants. var messageOptions = new MessageOptions { Metadata = JsonUtility.ToJson(new PlayerMuteInfoMetadata { PlayerId = VivoxService.Instance.SignedInPlayerId, LocallyMuted = VivoxService.Instance.IsInputDeviceMuted }) }; await VivoxService.Instance.SendChannelTextMessageAsync(participant.ChannelName, "Metadata", messageOptions); }}
The following code sample is an example of parsing a message with JSON metadata:
VivoxService.Instance.ChannelMessageReceived += OnChannelMessageReceived;// In your channel message received handler:void OnChannelMessageReceived(VivoxMessage message){ // You can now parse or use the metadata that was attached when sending the message. if (!string.IsNullOrEmpty(message.Metadata)) { // Parse JSON metadata. var metadataType = JsonUtility.FromJson<MetadataInfo>(message.Metadata).Type; switch (metadataType) { case "PlayerMuteInfo": var playerInfo = JsonUtility.FromJson<PlayerMuteInfoMetadata>(message.Metadata); // Handle updating player info in UI. break; default: break; } }}
Note
The size limit for attached metadata is 65,536 bytes (64 KiB).

Copyright © 2026 Unity Technologies
LegalPrivacy PolicyCookiesDocumentation Terms of UseDo Not Sell or Share My Personal InformationYour Privacy Choices (Cookie Settings)

"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S and elsewhere (more info here). Other names or brands are trademarks of their respective owners.

Some pages are machine-translated for convenience, and may contain inaccuracies. In the event of conflicting information, the English version is authoritative.


    Report a problem with this page