Form Embedder: An impossibly simple way to add a Google Form to your experience

Form Embedder :memo:

Intro :open_book:

Can you imagine a world in which this beautiful form can be added, with just a few short clicks, to any Roblox experience?

Well we live in that world! Through the power of Form Embedder, gathering feedback has never been easier. Get it here:

Setup :triangular_ruler:

  1. Create your form through Google Forms. Make sure it’s public!

  2. Ensure you have access to 3rd party APIs enabled in your experience by visiting Game Settings and toggling Allow HTTP Requests

  3. Insert Form Embedder into Workspace⁰

  4. Navigate to FormModules → Config

  5. Set the FormId var to be your form’s ID

  6. That’s it! Press Play and your experience will have an embedded form.

A feedback button will show up on the right side of the top bar.

Captura de Pantalla 2023-02-14 a la(s) 2.45.13 a. m.

Your form will show when you press this button. See more in Default Behavior. Here’s a demo of what this all looks like from start to finish.¹

Features :sparkles:

Supported Questions :grey_question:

Form Embedder supports the first five question types² available in Google Forms

  • Short Answer
  • Paragraph
  • Multiple Choice
  • Checkboxes
  • Dropdown
  • Linear Scale
  • Any questions can be marked as Required and forms will fail to submit until there are valid entries for each of them :star:

    Custom Options :writing_hand:

    Multiple Choice and Checkbox questions with Choice fields set to Other are fully supported.

    Autofilled Metadata

    To quickly populate a username, display name, or userid, name a question in your form identically to the key found in the Config.Metadata object (e.g. __username__)

    Cross-Platform Support :video_game:

    For keyboard and gamepad support, each option has its own focused state. The UI generally follows accessibility guidelines (e.g. the labels for checkboxes and radio buttons are also clickable). :computer_mouse:

    screencast 2023-02-14 01-59-46

    Text Filtering :hash:

    All text inputs are filtered by default. You can disable this through the Config file if you need information that is safe for users to share and likely to get filtered, e.g. console logs.

    Theming :art:

    Not tons of theme support… YET… but the color you pick for your theme will persist in the Lua UI :rainbow:

    Use Cases :thinking:

    In-Experience :game_die:

    The main reason I wanted to create model in the first place was to smooth out the experience of providing feedback in Accelerator playtests :smiling_face: Having an in-experience way to provide feedback is far more engaging than going back and forth between the client a web browser :see_no_evil:

    Default :black_square_button:

    The default behavior in Form Embedder adds a feedback button in the top right hand corner (next to the player list button). This toggles form visibility :eye:

    screencast 2023-02-14 01-00-24

    Custom :dancer:

    There is a ToggleForm BindableFunction you can invoke to show and hide the form. It takes in a FormId. If you would like to show different forms at different times, you can fire this event with different FormIds.

    screencast 2023-02-14 01-39-35

    Applications

    Need some ideas on what this can be used for?

    • Crowdsourced level difficulty
    • Bug reporting
    • Ban appeals
    • Admin / role applications
    Reminder about User Data

    As the creator of your experience, you are responsible for making sure that a player’s data gets deleted if they make a right to be forgotten request, regardless of whether you store personal information on or off platform. Please see About GDPR and CCPA | Documentation - Roblox Creator Hub.

    With that said, please keep in mind that publicizing personal information of others on the Roblox platform or off-platform is prohibited by our Community Standards. This includes usernames and userIDs.

    Plugin :electric_plug:

    There’s no official or semi-official support for this (yet) (probably just takes a little hackery and a bit more knowledge of file management in plugins), but the possibilities are endless… soon :tm:.

    Feedback :mega:

    Feature Requests :pleading_face:

    If you would like to provide feedback or make any feature requests, as always, feel free to comment below - but in the spirit of things, I also made a testing place that has a feedback form in it :slight_smile:

    Bug reports :bug:

    Bug reports are always welcome through preferably a DM, and otherwise in the comments section or a separate post. PLEASE INCLUDE A LINK TO YOUR FORM - it is nearly impossible to debug a problem without access to the source data.

    Maintainability :construction:

    The approach taken to achieve this goal is prone to break for various reasons. In the future I would like to convert the more breakable aspects of this into a package so that it can be more reliable.


    Anyways thats it! Thanks for reading! Hope you all get alllllll the feedback. Please share any clever usages - they’re so much fun to see :smiling_face_with_three_hearts:
    ~ BitwiseAndrea :cactus: :older_woman:

    ⁰ If you want to keep your workspace clean, move the files / folders into the appropriate locations as defined by the Setup script, and then delete the Setup script.
    š Not part of the steps: I disabled CacheForm so you can see it updating in near-real-time.
    ² If you include other question types it will almost certainly not work. I am begging you please do not include them.

    410 Likes

    This is so… cool. I can’t believe this is even possible. I really hope this is the future of feedback forms in games!

    13 Likes

    WHAAAAAAAAAAT

    This is soooo cool! How far would we go with studio :eyes: ?

    9 Likes

    NAW WHAT
    EVERYTHING ABOUT THIS IS AWESOME

    8 Likes

    Awesome! Have been looking into some sort of markdown parsing into Roblox for webpage importing, so this is super helpful baseline for some projects that I have in store! :+1:

    6 Likes

    HOLY COW! THIS IS AMAZING!
    Honestly im actually shocked Roblox has changed alot. I will be considering using this for my own games or recomending it to my other friends who make games.

    Great job! ^w^

    6 Likes

    But scammers have already been asking users for their password. This doesn’t really make it much easier, however it does look more official because it looks like their beloved Google Forms.

    16 Likes

    I think you should make it a plugin and sell. Too much to give out for free.

    Bug @BitwiseAndrea :
    My form does not work and I think its because the id contains - and _ special characters.
    1FAIpQLSfxoX7nsQogajUnBT9Xpqm56-Cnfch2Lsff_nO99KDm-inXHw

    1 Like

    This is SICK. Amazing resource. Good job!

    2 Likes

    Make sure your form is public.

    4 Likes

    Can you upload the source to GitHub to allow for others to contribute?

    2 Likes

    This looks it could get ratelimited pretty fast if you have more players, it’s like discord it can ratelimit pretty easy. Also, are you planning on making a github so people can contribute to it?

    1 Like

    @LS3VEN is correct - it seems like your form isn’t public
    image

    This is how I got the public facing link for my form, i think something in here triggers it becoming public.

    Either that or you have some special settings enabled to require users to be signed in, like limit to 1 response, which will prevent the Form Embedder from working.
    image

    6 Likes

    Thank you so much @BitwiseAndrea! This is really helpful for me as it provides a convenient way for players to report bugs/ provide feedback for my game!

    3 Likes

    Wow, what an amazing resource and a very talented UI designer for replicating googles form navigation.

    It’s a nice change to see Roblox contributing to development resources. :slight_smile:

    5 Likes

    This. Is. AWESOME!! I am defiantly using this! Thank you so much!

    I think you should add a setting in the config to set a cooldown to avoid users spamming responses.

    2 Likes

    Just wanted to provide an update after playing around with this for a while. Overall, it’s really great and easy to integrate into my existing workflow.

    My only request is the addition of descriptions being supported, because as of now the form will fail if you include them, and providing descriptions for questions is pretty important for my use case.




    Another suggestion is the ability to somehow record the username of the person who sent in the feedback. I know there is no easy way to implement this, but maybe a configurable setting and a hidden question at the beginning of the form where the module automatically inputs the user’s username + doesn’t show the question in the ui.

    Thanks again, I really appreciate this resource!

    4 Likes

    Ok I see. Does your module prevent users from sending a form twice?

    If not, thats my feature request. Maybe save to a datastore. I dont want users to keep spamming responses and only be able to fill it once, but at same time it could be a setting that we could turn on or off.

    Yes, like if we set a question as

    • %roblox_username%
    • %user_id%
    • %roblox_username% & %user_id%

    Those could be rendered (and automatically filled) as:

    • “Your Roblox username”
    • “Your Roblox ID”
    • “Your Roblox username and ID”
    5 Likes

    This is an awesome resource and definitely simplifies the process of receiving feedback.

    Thank you for creating this!

    5 Likes

    Hi,
    In your testing game when I open the feedback on my phone when I submit it I can’t walk anymore. Is this fixable?

    1 Like