         vex.dialog.open
             message: "<div class='new-webhook' />"
             afterOpen: =>
-                @validateInput = (input) => false
+                @validateInput = (input) =>
+                    try
+                        new URL input
+                        return true
+                    catch err
+                        return false
                 @renderedForm = ReactDOM.render(
                     <NewWebhookForm
                         getErrors = {() => @errors}
                         webhookTypes = {@webhookTypes}
-                        validateInput = {@validateInput}
                         setType = {(selected) => @type = selected} 
                         setUri = {(uri) => @uri = uri} />,
                     $(".new-webhook").get(0)

                @errors = []
                uriValidated = @validateInput @uri
                @errors.push 'Please select a type' unless @type
                @errors.push 'Invalid URI entered' unless uriValidated
                @renderedForm.forceUpdate() unless uriValidated and @type
                return false unless uriValidated
                return false unless @type
                return true
            callback: (data) =>
                @data = data
                return unless data and @validateInput @uri and @type
                type = @type
                newWebhook @uri, type


        sortBy = @sortBy # JS is annoying
        [
            {
                data: 'URL'
                sortable: true
                doSort: (sortDirectionAscending) => sortBy 'uri', sortDirectionAscending
            },
