Page MenuHomePhabricator

New Web Form for WME public site
Closed, ResolvedPublic5 Estimated Story Points

Description

Build new form for current temp site enterprise.wikimedia.com and new upcoming enterprise.wikimedia.com/get-started/ page.

Currently that form has fields:

  • full name
  • company
  • work email

New form will have the following user fields:

  • Full Name (input: string)
  • Company (input: string)
  • Work Email (input: string)
  • What will you create with this service? (textarea: string, limit:300char)

POST URL:
@see: https://developer.copper.com
https://api.copper.com/developer_api/v1/people

POST HEADERS:
@see: https://developer.copper.com/introduction/requests.html
X-PW-AccessToken == {{SEE SLACK DM / ASK CHUCK}}
X-PW-Application == developer_api
X-PW-UserEmail == creynolds-ctr@wikimedia.org
Content-Type == application/json

POST BODY:
@see: https://developer.copper.com/people/create-a-new-person.html
For reference here I used double-brackets to represent variable data and left the static info as is.
{{form_input_*** and {{form_textarea_*** are content submitted via the form.
{{siteurl_path_form_is_on}} is the URL path where the form was filled out on. For the initial version of the site this will only be on the /get-started/ url, but later we may have the form on other pages and we'll want to pass the url path to a custom field in the CRM so we know what page they filled out the form on. Everything else is static and just copy/pasta.

javascript
{
    "name": "{{form_input_name}}",
    "assignee_id": 912228,
    "contact_type_id": 1819832,
    "emails": [
        {
            "email": "{{form_input_email}}",
            "category": "work"
        }
    ],
    "tags": [],
    "custom_fields": [
        {
            "custom_field_definition_id": 505797,
            "value": "{{form_textarea_usecase}}"
        },
        {
            "custom_field_definition_id": 505798,
            "value": "{{siteurl_path_form_is_on}}"
        },
        {
            "custom_field_definition_id": 506996,
            "value": "{{form_input_company_name}}"
        }
    ]
}

We'll want to make sure the Copper API endpoint returns 200 or we retry. Just won't want to lose data. Also i'm not sure what, if any, data validation is on the current form but we'll want, at least, some basic string filtering here for security as we're submitting directly to a CRM. The textarea... i've mentioned 300char max... that's not a hard int... just pulled it out of my pocket. We'll want some helper text to mention that there is a limit however (UX stuff).

This can deploy on the current temp site that exists now or can be ready for v1 site launch on our prescribed timeline (ask Ryan and/or Chuck in Slack if that timeline is not clear). Any other questions, dm in slack or ask here.