By default if a user is logged into Sitefinity a form submission will save their UserId to sf_form_entry, and thus the backend form responses show their username.

However it's not uncommon to want to have a form for anonymous submission. Maybe you want a whistleblower form or something.

The problem though is there's nothing in the UI to allow for this, and moreover there's only 2 events in the Forms EventHub. Created (Already saved to the database) and Updated (...entry updated). Neither allow data to be manipulated before save.

So very simply this runs a parameterized sql query to update that userid to a Guid.Empty anonymous user right after the entry is created. Feel free to blow all of the whistles.

FormEvents.csView on GitHub
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using Telerik.Sitefinity.DynamicModules;
using Telerik.Sitefinity.DynamicModules.Model;
using Telerik.Sitefinity.Forms.Model;
using Telerik.Sitefinity.Modules.Forms;
using Telerik.Sitefinity.Modules.Forms.Events;
using Telerik.Sitefinity.Security.Claims;
using Telerik.Sitefinity.Utilities.TypeConverters;
using Telerik.Sitefinity;
using Telerik.Sitefinity.Model;
using Telerik.Sitefinity.Data.Configuration;
using System.Data.SqlClient;
using System.Data;

namespace SitefinityWebApp.EventHub
{
    public static class Forms
    {
        public static void FormEntry_Created(IFormEntryCreatedEvent entry)
        {
            var formTitle = entry.FormTitle;

            if (formTitle.ToLower().Contains("[anon]") || formTitle.ToLower().Contains("[anonymous]"))
            {
                var entryId = entry.EntryId;

                try
                {
                    //Wipe the userid
                    if (entry.UserId != Guid.Empty)
                    {
                        var connectionString = Telerik.Sitefinity.Configuration.Config.Get<DataConfig>().ConnectionStrings["Sitefinity"].ConnectionString;
                        var sql = @"UPDATE [dbo].[sf_form_entry]
                           SET [user_id] = '00000000-0000-0000-0000-000000000000'
                           WHERE id = @id";

                        using (var connection = new SqlConnection(connectionString))
                        {
                            using (var command = new SqlCommand(sql, connection))
                            {
                                command.Parameters.Add("@id", SqlDbType.UniqueIdentifier).Value = entryId;

                                connection.Open();
                                command.ExecuteNonQuery();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    //Handle the error
                }

            }

        }
    }
}