From 8a6239207a83575bcbbc3baf8ff8999e5b22666a Mon Sep 17 00:00:00 2001 From: Kegan Maher Date: Wed, 23 Aug 2023 13:03:44 -0700 Subject: [PATCH 1/4] delete old desk conversion project --- .gitignore | 2 - .vscode/settings.json | 6 +- compose.yml | 11 - desk-to-hubspot/README.md | 24 -- desk-to-hubspot/convert.ipynb | 353 ------------------ .../data/hubspot/threads.schema.json | 7 - .../data/hubspot/tickets.schema.json | 17 - desk-to-hubspot/requirements.txt | 4 - 8 files changed, 1 insertion(+), 423 deletions(-) delete mode 100644 desk-to-hubspot/README.md delete mode 100644 desk-to-hubspot/convert.ipynb delete mode 100644 desk-to-hubspot/data/hubspot/threads.schema.json delete mode 100644 desk-to-hubspot/data/hubspot/tickets.schema.json delete mode 100644 desk-to-hubspot/requirements.txt diff --git a/.gitignore b/.gitignore index 1ccd09d..e43b0f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ -desk-to-hubspot/data/desk/*.json -desk-to-hubspot/data/hubspot/*.csv .DS_Store diff --git a/.vscode/settings.json b/.vscode/settings.json index fc83af8..7022a05 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,9 +11,5 @@ "editor.unicodeHighlight.ambiguousCharacters": false, "editor.unicodeHighlight.invisibleCharacters": false, "editor.wordWrap": "on" - }, - "python.formatting.provider": "black", - "python.linting.flake8Enabled": true, - "python.linting.enabled": true, - "python.languageServer": "Pylance" + } } diff --git a/compose.yml b/compose.yml index ac62842..2f628de 100644 --- a/compose.yml +++ b/compose.yml @@ -12,14 +12,3 @@ services: - "8000" volumes: - ./:/crm-helpdesk - - notebooks: - image: jupyter/scipy-notebook:notebook-6.4.12 - command: start-notebook.sh --NotebookApp.token='' - working_dir: /home/jovyan/work - environment: - - GRANT_SUDO=yes - - DOCKER_STACKS_JUPYTER_CMD=notebook - user: root - volumes: - - ../:/home/jovyan/work diff --git a/desk-to-hubspot/README.md b/desk-to-hubspot/README.md deleted file mode 100644 index caf5ae5..0000000 --- a/desk-to-hubspot/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Desk to Hubspot Conversion - -A Jupyter Notebook that converts exported Teamwork Desk data into a format for -import into Hubspot. - -## Getting started - -1. Clone the repository - -```bash -git clone https://github.com/cal-itp/crm-helpdesk -``` - -1. Download the [Desk export data from Drive](https://drive.google.com/drive/folders/10QsUGgBR8SfjeVzZUQqEYyn1pFgI6J4t) - -1. Place the files in the repository directory [`desk-to-hubspot/data/desk`](data/desk/) - -1. (Recommended) `Rebuild and Reopen` the devcontainer for this repository - -1. (Alternate) Install dependencies from `requirements.txt` in your preferred Python environment. - -1. Open the [notebook](convert.ipynb) and run all cells - -1. Look for CSV output in [`desk-to-hubspot/data/hubspot`](data/hubspot/) diff --git a/desk-to-hubspot/convert.ipynb b/desk-to-hubspot/convert.ipynb deleted file mode 100644 index dd0544e..0000000 --- a/desk-to-hubspot/convert.ipynb +++ /dev/null @@ -1,353 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "\n", - "import pandas as pd" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Read the raw JSON data**\n", - "\n", - "For each type: `tickets`, `companies`, `customers`, `statuses`, `users` -- build\n", - "an index for easier lookup later" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open(\"data/desk/tickets.json\") as fp:\n", - " desk_tickets_json = json.load(fp)\n", - " print(\"tickets:\", len(desk_tickets_json))\n", - " \n", - "desk_tickets_json_index = { ticket[\"id\"]: ticket for ticket in desk_tickets_json}\n", - "desk_threads_json = [{ **{\"ticketId\": ticket[\"id\"]}, **thread} for ticket in desk_tickets_json for thread in ticket[\"threads\"]]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open(\"data/desk/companies.json\") as fp:\n", - " desk_companies_json = json.load(fp)\n", - " print(\"companies:\", len(desk_companies_json))\n", - "\n", - "desk_companies_json_index = {\n", - " company[\"name\"]: company\n", - " for company in desk_companies_json\n", - " if company[\"name\"]\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "desk_customers_json = []\n", - "\n", - "for file in [\"data/desk/customers-1.json\", \"data/desk/customers-2.json\"]:\n", - " with open(file) as fp:\n", - " desk_customers_json.extend(json.load(fp))\n", - "\n", - "print(\"customers:\", len(desk_customers_json))\n", - "\n", - "desk_customers_json_index = { customer[\"id\"]: customer for customer in desk_customers_json}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open(\"data/desk/statuses.json\") as fp:\n", - " desk_statuses_json = json.load(fp)\n", - "\n", - "desk_statuses_json_index = { status[\"id\"]: status[\"name\"] for status in desk_statuses_json}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open(\"data/desk/users.json\") as fp:\n", - " desk_users_json = json.load(fp)\n", - " print(\"users:\", len(desk_users_json))\n", - "\n", - "desk_users_json_index = { user[\"id\"]: user for user in desk_users_json}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Helpers for creating Hubspot formatted data**\n", - "\n", - "Using the raw JSON data from above, convert to Hubspot field names/format" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def get_ticket_data(ticket):\n", - " ticket_data = {\n", - " \"ticket_id\": ticket[\"id\"],\n", - " \"ticket_status\": desk_statuses_json_index.get(ticket[\"ticketStatusID\"], \"CLOSED\"),\n", - " \"ticket_name\": f\"{ticket['subject']} ({ticket['id']})\",\n", - " \"ticket_pipeline\": \"Support Pipeline\"\n", - " }\n", - " return ticket_data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def get_contact_data(ticket):\n", - " contact_data = {}\n", - " customer_id = ticket.get(\"customerID\")\n", - " if customer_id and customer_id in desk_customers_json_index:\n", - " customer = desk_customers_json_index[customer_id]\n", - " contact_data = {\n", - " \"contact_first_name\": customer[\"firstName\"],\n", - " \"contact_last_name\": customer[\"lastName\"],\n", - " \"contact_email\": customer[\"email\"],\n", - " \"contact_job_title\": customer[\"jobTitle\"],\n", - " }\n", - " return contact_data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def get_company_data(ticket):\n", - " company_data = {}\n", - " customer_id = ticket.get(\"customerID\")\n", - " if customer_id and customer_id in desk_customers_json_index:\n", - " customer = desk_customers_json_index[customer_id]\n", - " company = desk_companies_json_index.get(customer[\"company\"])\n", - " if company:\n", - " company_data = {\n", - " \"company_name\": company[\"name\"],\n", - " \"company_domain_name\": company[\"website\"]\n", - " }\n", - " return company_data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def get_user_data(ticket):\n", - " user_data = {}\n", - " assigned_id = ticket.get(\"assignedToID\")\n", - " if assigned_id and assigned_id in desk_users_json_index:\n", - " user = desk_users_json_index[assigned_id]\n", - " user_data = {\n", - " \"ticket_owner\": user[\"email\"],\n", - " }\n", - " return user_data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Tickets conversion**\n", - "\n", - "Generate new Hubspot ticket records\n", - "\n", - "Only consider Desk tickets before May 2022, when the Hubspot cutover happened." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "hubspot_tickets_records = []\n", - "\n", - "prior_tickets = [d for d in desk_tickets_json if d[\"createdAt\"] < \"2022-05-01\"]\n", - "for ticket in prior_tickets:\n", - " ticket_data = get_ticket_data(ticket)\n", - " contact_data = get_contact_data(ticket)\n", - " company_data = get_company_data(ticket)\n", - " user_data = get_user_data(ticket)\n", - "\n", - " new_record = {\n", - " **ticket_data,\n", - " **contact_data,\n", - " **company_data,\n", - " **user_data\n", - " }\n", - "\n", - " hubspot_tickets_records.append(new_record)\n", - "\n", - "print(len(hubspot_tickets_records))\n", - "\n", - "ticket_columns = list(set([t for tk in hubspot_tickets_records for t in tk.keys()]))\n", - "ticket_columns.sort(reverse=True)\n", - "print(ticket_columns)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Convert Hubspot ticket data to CSV**\n", - "\n", - "Using `pandas`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ticket_columns.remove(\"ticket_id\")\n", - "tickets_df = pd.DataFrame.from_records(hubspot_tickets_records, columns=ticket_columns)\n", - "tickets_df.info()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tickets_df.to_csv(\"data/hubspot/tickets.csv\", index=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Threads conversion**\n", - "\n", - "Generate new Hubspot ticket thread (notes) records" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "hubspot_tickets_records_index = {ticket[\"ticket_id\"]: ticket for ticket in hubspot_tickets_records}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "hubspot_note_records = []\n", - "\n", - "for thread in desk_threads_json:\n", - " hubspot_ticket = hubspot_tickets_records_index[thread[\"ticketId\"]]\n", - "\n", - " new_record = {\n", - " \"note_activity_date\": thread[\"createdAt\"],\n", - " \"ticket_status\": hubspot_ticket[\"ticket_status\"],\n", - " \"ticket_name\": hubspot_ticket[\"ticket_name\"],\n", - " \"ticket_pipeline\": hubspot_ticket[\"ticket_pipeline\"],\n", - " \"note_body\": str(thread[\"body\"]).replace(\"\\r\\n\", \"\\n\").replace(\"\\r\", \"\\n\").replace(\"\\n\", \"\")\n", - " }\n", - "\n", - " hubspot_note_records.append(new_record)\n", - "\n", - "print(len(hubspot_note_records))\n", - "\n", - "note_columns = list(set([n for nt in hubspot_note_records for n in nt.keys()]))\n", - "note_columns.sort(reverse=True)\n", - "\n", - "print(note_columns)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Convert Hubspot notes data to CSV**\n", - "\n", - "Using `pandas`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "notes_df = pd.DataFrame.from_records(hubspot_note_records, columns=note_columns)\n", - "notes_df.info()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "notes_df.to_csv(\"data/hubspot/notes.csv\", index=False)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.10.5 ('base')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.5" - }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "d4d1e4263499bec80672ea0156c357c1ee493ec2b1c70f0acce89fc37c4a6abe" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/desk-to-hubspot/data/hubspot/threads.schema.json b/desk-to-hubspot/data/hubspot/threads.schema.json deleted file mode 100644 index d13ab29..0000000 --- a/desk-to-hubspot/data/hubspot/threads.schema.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "note_body": "thread.body", - "note_activity_date": "thread.createdAt", - "ticket_status": "ticket.ticketStatusID", - "ticket_name": "ticket.subject", - "ticket_pipeline": "Support Pipeline" -} diff --git a/desk-to-hubspot/data/hubspot/tickets.schema.json b/desk-to-hubspot/data/hubspot/tickets.schema.json deleted file mode 100644 index 46fd3e2..0000000 --- a/desk-to-hubspot/data/hubspot/tickets.schema.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - // use ticket.customerId to get to customer - "contact_first_name": "customer.firstName", - "contact_last_name": "customer.lastName", - "contact_email": "customer.email", - "contact_job_title": "customer.jobTitle", - // use ticket.customerId to get to customer, then customer.company - "company_name": "company.name", - "company_domain_name": "company.website", - // use the ticket.ticketStatusID to map to status names - "ticket_status": "ticket.ticketStatusID", - "ticket_name": "ticket.subject", - // hardcode to the only HubSpot pipeline (Support Pipeline) - "ticket_pipeline": "Support Pipeline", - // use the ticket.assignedToID to map to the agent's email address - "ticket_owner": "user.email" -} diff --git a/desk-to-hubspot/requirements.txt b/desk-to-hubspot/requirements.txt deleted file mode 100644 index 03991d1..0000000 --- a/desk-to-hubspot/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -black -flake8 -ipykernel -pandas From 89a11729e534af71319184a2dd6010d5b0abcbf1 Mon Sep 17 00:00:00 2001 From: Kegan Maher Date: Wed, 23 Aug 2023 13:04:18 -0700 Subject: [PATCH 2/4] update repo name, description --- .devcontainer/Dockerfile | 2 +- .devcontainer/devcontainer.json | 4 ++-- README.md | 24 ++++++++++-------------- compose.yml | 6 +++--- docs/README.md | 18 +++++++++--------- docs/admin/Permissions/invite-a-user.md | 2 +- docs/admin/crm-properties.md | 2 +- docs/admin/imports.md | 5 ++--- docs/admin/zapier.md | 4 ++-- docs/getting-started/account-setup.md | 2 +- docs/getting-started/email-setup.md | 2 +- docs/getting-started/key-terms.md | 2 +- docs/sales/deal-pipelines.md | 13 ++++--------- mkdocs.yml | 6 +++--- 14 files changed, 41 insertions(+), 51 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 29d5f1f..2b337ac 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.10 -WORKDIR /crm-helpdesk +WORKDIR /customer-success COPY docs/requirements.txt docs/requirements.txt RUN pip install -r docs/requirements.txt diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 298a40b..82e0aa3 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,10 +1,10 @@ // For format details, see https://aka.ms/vscode-remote/devcontainer.json { - "name": "cal-itp/crm-helpdesk", + "name": "cal-itp/customer-success", "dockerComposeFile": ["../compose.yml"], "service": "docs", "runServices": ["docs"], - "workspaceFolder": "/crm-helpdesk", + "workspaceFolder": "/customer-success", "postStartCommand": [], "postAttachCommand": [], // Set *default* container specific settings.json values on container create. diff --git a/README.md b/README.md index 02ca58f..86e3e4b 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,17 @@ -# CRM / Helpdesk +# Customer Success -This repository contains customer service and CRM tasks and related code. - -## Projects - -* [Desk to Hubspot ticket conversion](desk-to-hubspot/) +This repository contains customer service and CRM tasks and documentation. ## About the Repo -We use CRM / Helpdesk repo to track all requests, questions and new users for the CRM. You can find all form templates below to add an issue for the CRM: +We use this repo to track all requests, questions and new users for the CRM. You can find all form templates below to add an issue for the CRM: | Template Form | Description | | ------- | ------------ | -| [Feature Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=feature&template=feature-request-form.yml&title=%5BFeature+Request%5D%3A+) | Add new features for the CRM. | -| [New User Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=anthonyrollins&labels=new-user&template=new-user_request_form.yml&title=%5BNew+User+Request%5D%3A+) | Request CRM access for a new user. | -| [Property Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=property&template=property-request-form.yml&title=%5BProperty+Request%5D%3A+) | Request a new property in the CRM. | -| [Question Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=question&template=question-request-form.yml&title=Question%3A+) | Ask a general question about the CRM. | -| [Reporting Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=reporting&template=reporting_request_form.yml&title=%5BReporting+Request%5D%3A+) | Request a new CRM metric and or report. | -| [Deals Pipeline Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=deals-pipeline&template=deals-pipelines-request-form.yml&title=%5BDeals+Pipeline+Request%5D%3A+) | Request a new deals pipeline in the CRM. -| [CRM Record Update Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=crm-update&template=crm-record-update.yml&title=%5BCRM+Record+Update%5D%3A+) | Request an record update to the CRM (Use [Internal Support Pipeline](https://app.hubspot.com/contacts/5519226/objects/0-5/views/9946408/board)) +| [Feature Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=feature&template=feature-request-form.yml&title=%5BFeature+Request%5D%3A+) | Add new features for the CRM. | +| [New User Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=anthonyrollins&labels=new-user&template=new-user_request_form.yml&title=%5BNew+User+Request%5D%3A+) | Request CRM access for a new user. | +| [Property Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=property&template=property-request-form.yml&title=%5BProperty+Request%5D%3A+) | Request a new property in the CRM. | +| [Question Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=question&template=question-request-form.yml&title=Question%3A+) | Ask a general question about the CRM. | +| [Reporting Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=reporting&template=reporting_request_form.yml&title=%5BReporting+Request%5D%3A+) | Request a new CRM metric and or report. | +| [Deals Pipeline Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=deals-pipeline&template=deals-pipelines-request-form.yml&title=%5BDeals+Pipeline+Request%5D%3A+) | Request a new deals pipeline in the CRM. +| [CRM Record Update Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=crm-update&template=crm-record-update.yml&title=%5BCRM+Record+Update%5D%3A+) | Request an record update to the CRM (Use [Internal Support Pipeline](https://app.hubspot.com/contacts/5519226/objects/0-5/views/9946408/board)) diff --git a/compose.yml b/compose.yml index 2f628de..e2be54d 100644 --- a/compose.yml +++ b/compose.yml @@ -1,14 +1,14 @@ -name: cal-itp/crm-helpdesk +name: cal-itp/customer-success services: docs: build: context: . dockerfile: .devcontainer/Dockerfile - image: cal-itp/crm-helpdesk:docs + image: cal-itp/customer-success:docs entrypoint: [] command: sleep infinity ports: - "8000" volumes: - - ./:/crm-helpdesk + - ./:/customer-success diff --git a/docs/README.md b/docs/README.md index 4c7108f..767fe1f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,16 +1,16 @@ -# CRM / Helpdesk +# Customer Success -This repository contains customer service and CRM tasks and related code. +This repository contains customer service and CRM tasks and documentation. ## About the Repo -We use CRM / Helpdesk repo to track all requests, questions and new users for the CRM. You can find all form templates below to add an issue for the CRM: +We use this repo to track all requests, questions and new users for the CRM. You can find all form templates below to add an issue for the CRM: | Template Form | Description | | ------- | ------------ | -| [Feature Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=feature&template=feature-request-form.yml&title=%5BFeature+Request%5D%3A+) | Add new features for the CRM. | -| [New User Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=anthonyrollins&labels=new-user&template=new-user_request_form.yml&title=%5BNew+User+Request%5D%3A+) | Request CRM access for a new user. | -| [Property Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=property&template=property-request-form.yml&title=%5BProperty+Request%5D%3A+) | Request a new property in the CRM. | -| [Question Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=question&template=question-request-form.yml&title=Question%3A+) | Ask a general question about the CRM. | -| [Reporting Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=reporting&template=reporting_request_form.yml&title=%5BReporting+Request%5D%3A+) | Request a new CRM metric and or report. | -| [Deals Pipeline Request Form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=deals-pipeline&template=deals-pipelines-request-form.yml&title=%5BDeals+Pipeline+Request%5D%3A+) | Request a new deals pipeline in the CRM. +| [Feature Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=feature&template=feature-request-form.yml&title=%5BFeature+Request%5D%3A+) | Add new features for the CRM. | +| [New User Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=anthonyrollins&labels=new-user&template=new-user_request_form.yml&title=%5BNew+User+Request%5D%3A+) | Request CRM access for a new user. | +| [Property Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=property&template=property-request-form.yml&title=%5BProperty+Request%5D%3A+) | Request a new property in the CRM. | +| [Question Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=question&template=question-request-form.yml&title=Question%3A+) | Ask a general question about the CRM. | +| [Reporting Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=reporting&template=reporting_request_form.yml&title=%5BReporting+Request%5D%3A+) | Request a new CRM metric and or report. | +| [Deals Pipeline Request Form](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=deals-pipeline&template=deals-pipelines-request-form.yml&title=%5BDeals+Pipeline+Request%5D%3A+) | Request a new deals pipeline in the CRM. diff --git a/docs/admin/Permissions/invite-a-user.md b/docs/admin/Permissions/invite-a-user.md index fa68e7c..e98d0bc 100644 --- a/docs/admin/Permissions/invite-a-user.md +++ b/docs/admin/Permissions/invite-a-user.md @@ -2,7 +2,7 @@ !!! Note - To request access to Hubspot you can complete a request in Github by filling out a [new user request form](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=anthonyrollins&labels=new-user&template=new-user_request_form.yml&title=%5BNew+User+Request%5D%3A+) + To request access to Hubspot you can complete a request in Github by filling out a [new user request form](https://github.com/cal-itp/customer-success/issues/new?assignees=anthonyrollins&labels=new-user&template=new-user_request_form.yml&title=%5BNew+User+Request%5D%3A+) !!! Note diff --git a/docs/admin/crm-properties.md b/docs/admin/crm-properties.md index 6331188..34662be 100644 --- a/docs/admin/crm-properties.md +++ b/docs/admin/crm-properties.md @@ -2,4 +2,4 @@ Current (July 27th, 2023) property fields and breakdowns are located here: [Cal-ITP: Hubspot CRM Properties](https://docs.google.com/spreadsheets/d/1ZvU4WWS2K1QEtRIk16M83Xnv8X3-wPTB9Mkci_ZLyBE/edit#gid=0) -Current properties were chosen based on supporting Cal-ITP/Caltrans outreach needs. Custom properties can be added for new workflow and data needs. To request a new property, please complete the [Property Request Form.](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=property&template=property-request-form.yml&title=%5BProperty+Request%5D%3A+) +Current properties were chosen based on supporting Cal-ITP/Caltrans outreach needs. Custom properties can be added for new workflow and data needs. To request a new property, please complete the [Property Request Form.](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=property&template=property-request-form.yml&title=%5BProperty+Request%5D%3A+) diff --git a/docs/admin/imports.md b/docs/admin/imports.md index 4814296..8ae1ef4 100644 --- a/docs/admin/imports.md +++ b/docs/admin/imports.md @@ -1,8 +1,7 @@ # Imports -Importing data into Hubspot is a quick and easy way to add records and data into the CRM or to update existing records in bulk. We have conducted several imports to ensure preexisting Caltrans data is available, such as data from Blackcat, Constant Contact, past CRM’s and more. To view past imports, click [here](https://app.hubspot.com/import/5519226). - +Importing data into Hubspot is a quick and easy way to add records and data into the CRM or to update existing records in bulk. We have conducted several imports to ensure preexisting Caltrans data is available, such as data from Blackcat, Constant Contact, past CRM’s and more. To view past imports, click [here](https://app.hubspot.com/import/5519226). ## Requesting Data Imports -If you would like to add new data into Hubspot, please open up a blank [Github issue](https://github.com/cal-itp/crm-helpdesk/issues/new). In the Github issue, attach a .csv file with the import data or explain what data you want added as that data might already exist. +If you would like to add new data into Hubspot, please open up a blank [Github issue](https://github.com/cal-itp/customer-success/issues/new). In the Github issue, attach a .csv file with the import data or explain what data you want added as that data might already exist. diff --git a/docs/admin/zapier.md b/docs/admin/zapier.md index bc13023..ae9b54f 100644 --- a/docs/admin/zapier.md +++ b/docs/admin/zapier.md @@ -2,6 +2,6 @@ We use Zapier to connect the CA Mobility Marketplace website forms to Hubspot Services. There are two forms; Contactless Payment Support and Contact Form which uses Zapier to import the contact, company and service data into Hubspot. -Zapier uses the bot@calitp.org account to manage all connections. Below is the current list of Zapier connections: +Zapier uses the account to manage all connections. Below is the current list of Zapier connections: -In order to update and change these connections you will need to log in through the Google sign-in using bot@calitp.org account. Any update to the connections can be done by Anthony Rollins through the creation of a Github issue in [/crm-helpdesk](https://github.com/calitp/crm-helpdesk) repo +In order to update and change these connections you will need to log in through the Google sign-in using account. Any update to the connections can be done by Anthony Rollins through the creation of a Github issue in [/customer-success](https://github.com/calitp/customer-success) repo diff --git a/docs/getting-started/account-setup.md b/docs/getting-started/account-setup.md index 21ad28b..6caec28 100644 --- a/docs/getting-started/account-setup.md +++ b/docs/getting-started/account-setup.md @@ -1,6 +1,6 @@ # Initial Account Set Up -The CRM is a collectively built tool and will work best if its usage is widely adopted. If you are in contact with agencies as part of your work duties, please use the CRM and make HubSpot usage part of your workflow to centralize communications. You can get access to Hubspot by filling out the [New User Request Form in Github](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=anthonyrollins&labels=new-user&template=new-user_request_form.yml&title=%5BNew+User+Request%5D%3A+). +The CRM is a collectively built tool and will work best if its usage is widely adopted. If you are in contact with agencies as part of your work duties, please use the CRM and make HubSpot usage part of your workflow to centralize communications. You can get access to Hubspot by filling out the [New User Request Form in Github](https://github.com/cal-itp/customer-success/issues/new?assignees=anthonyrollins&labels=new-user&template=new-user_request_form.yml&title=%5BNew+User+Request%5D%3A+). - [Setup Two Factor Authentication](https://docs.google.com/document/d/1_nwzCX3e3NBWlSRIlqoNycHYJVrwp5_Y1s0Sq97Dmd8/edit) - [Customize your account settings](https://docs.google.com/document/d/1aXT8xPH2uo8c5HUwY7Jz8Qf_ygKoVVfd4DKB4UJRUSU/edit) diff --git a/docs/getting-started/email-setup.md b/docs/getting-started/email-setup.md index cf68032..700d08d 100644 --- a/docs/getting-started/email-setup.md +++ b/docs/getting-started/email-setup.md @@ -2,7 +2,7 @@ Logging emails is central to Hubspot’s ability to track interactions and allows for greater transparency, providing an opportunity for team members to have a deeper understanding of where a relationship is at. Once configured, Hubspot email logging allows to set up automated and/or selective logging of emails while you are in your preferred email tool. -Hubspot email logging can happen one of two ways; you can either set up your email within Hubspot, or you can install the [Hubspot email extension](https://knowledge.hubspot.com/connected-email/how-to-install-hubspot-sales). There is an option to log your emails into the system, but is not the preferred method. You can find more details on logging in the [Activities section](https://docs.calitp.org/crm-helpdesk/contacts/activities). +Hubspot email logging can happen one of two ways; you can either set up your email within Hubspot, or you can install the [Hubspot email extension](https://knowledge.hubspot.com/connected-email/how-to-install-hubspot-sales). There is an option to log your emails into the system, but is not the preferred method. You can find more details on logging in the [Activities section](https://docs.calitp.org/customer-success/contacts/activities). For those who don’t have access to add your email to Hubspot, there’s a backup option to ensure communication is continuously tracked within Hubspot. Cal-ITP created [crm@calitp.org](mailto:crm@calitp.org) to bring all conversations into Hubspot by simply cc’ing this email in any of your communication. Ensure the crm@ email is CC’d, as we want all back and forth conversations to be tracked in the CRM. diff --git a/docs/getting-started/key-terms.md b/docs/getting-started/key-terms.md index 8815b56..454a568 100644 --- a/docs/getting-started/key-terms.md +++ b/docs/getting-started/key-terms.md @@ -10,4 +10,4 @@ Objects are categories of information. Hubspot builds out from four main categor ## Properties -Properties are the fields within an object. For example, if our object is contacts, our properties would be name, email address, phone number, etc. Properties can also be customized. You can add a new property to Hubspot through the [request a new property template](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=property&template=property-request-form.yml&title=%5BProperty+Request%5D%3A+) in Github. +Properties are the fields within an object. For example, if our object is contacts, our properties would be name, email address, phone number, etc. Properties can also be customized. You can add a new property to Hubspot through the [request a new property template](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=property&template=property-request-form.yml&title=%5BProperty+Request%5D%3A+) in Github. diff --git a/docs/sales/deal-pipelines.md b/docs/sales/deal-pipelines.md index 0c18f08..da3cdeb 100644 --- a/docs/sales/deal-pipelines.md +++ b/docs/sales/deal-pipelines.md @@ -1,6 +1,6 @@ # Deal Pipelines -Deals pipelines are created to track progress, communication, and other important information for various initiatives and campaigns. Below is a list of all current Deal Pipelines. The charts below indicate the uses of our current pipelines. Pipelines can be added when a new workflow would benefit from this action. New pipelines can be created by opening an [issue on Github](https://github.com/cal-itp/crm-helpdesk/issues/new?assignees=&labels=deals-pipeline&template=deals-pipelines-request-form.yml&title=%5BDeals+Pipeline+Request%5D%3A+) using our deals pipeline template. +Deals pipelines are created to track progress, communication, and other important information for various initiatives and campaigns. Below is a list of all current Deal Pipelines. The charts below indicate the uses of our current pipelines. Pipelines can be added when a new workflow would benefit from this action. New pipelines can be created by opening an [issue on Github](https://github.com/cal-itp/customer-success/issues/new?assignees=&labels=deals-pipeline&template=deals-pipelines-request-form.yml&title=%5BDeals+Pipeline+Request%5D%3A+) using our deals pipeline template. Current list of Deal pipelines (as of 07/14/23) @@ -10,13 +10,8 @@ Current list of Deal pipelines (as of 07/14/23) | [Transit Data Check-In](https://app.hubspot.com/contacts/5519226/objects/0-3/views/11044189/board) | Outreach to transit agencies to determine their current data requirements and review their current GTFS data. | | [Contract Pipeline](https://app.hubspot.com/contacts/5519226/objects/0-3/views/11044449/board) | Tracks contracts gathered from transit agencies. | | [MDIP Outreach](https://app.hubspot.com/contacts/5519226/objects/0-3/views/11044267/board) | Outreach to transit agencies on MDIP. | -| [Cubic Umo IQ API Keys](https://app.hubspot.com/contacts/5519226/objects/0-3/views/9899343/board) | Campaign to gather Cubic API keys from a select list of transit agencies. See [issue #138](https://github.com/cal-itp/crm-helpdesk/issues/138). | -| [GRaaS](https://app.hubspot.com/contacts/5519226/objects/0-3/views/all/board) | A record of the progress and conversations with agencies related to GTFS-RT as a Service agency -| [Cal-ITP Benefits](https://app.hubspot.com/contacts/5519226/objects/0-3/views/all/board) | Tracks agency benefits onboarding process +| [Cubic Umo IQ API Keys](https://app.hubspot.com/contacts/5519226/objects/0-3/views/9899343/board) | Campaign to gather Cubic API keys from a select list of transit agencies. See [issue #138](https://github.com/cal-itp/customer-success/issues/138). | +| [GRaaS](https://app.hubspot.com/contacts/5519226/objects/0-3/views/all/board) | A record of the progress and conversations with agencies related to GTFS-RT as a Service agency +| [Cal-ITP Benefits](https://app.hubspot.com/contacts/5519226/objects/0-3/views/all/board) | Tracks agency benefits onboarding process | [Payments Dashboard](https://app.hubspot.com/contacts/5519226/objects/0-3/views/all/board) | Tracks outreach and interview stages for Payments Dashboard user research | Group | [Software for Scheduling](https://app.hubspot.com/contacts/5519226/objects/0-3/views/all/board) | Tracks agencies interested in Remix, as well as the research assessing the fit and use of existing scheduling tools and the market demand and landscape for scheduling tools at smaller agencies | Workstream, Scheduling Software, Research Stage - - - - - diff --git a/mkdocs.yml b/mkdocs.yml index 0db9ccb..e3bac2e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,7 +1,7 @@ -site_name: "Cal-ITP CRM Guide" -repo_url: https://github.com/cal-itp/crm-helpdesk +site_name: "Cal-ITP Customer Success Guide" +repo_url: https://github.com/cal-itp/customer-success edit_uri: edit/main/docs -site_url: https://docs.calitp.org/crm-helpdesk +site_url: https://docs.calitp.org/customer-success theme: name: material From 3f7ae7e0a5c02c3aa5a69d8258529ae70ff93397 Mon Sep 17 00:00:00 2001 From: Kegan Maher Date: Wed, 23 Aug 2023 13:10:26 -0700 Subject: [PATCH 3/4] update devcontainer version, definition file --- .devcontainer/Dockerfile | 2 +- .devcontainer/devcontainer.json | 34 ++++++++++++++++----------------- compose.yml | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 2b337ac..0b93a09 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.10 +FROM python:3.11 WORKDIR /customer-success diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 82e0aa3..ea96104 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,22 +7,22 @@ "workspaceFolder": "/customer-success", "postStartCommand": [], "postAttachCommand": [], - // Set *default* container specific settings.json values on container create. - "settings": { - "terminal.integrated.defaultProfile.linux": "bash", - "terminal.integrated.profiles.linux": { - "bash": { - "path": "/bin/bash" - } + "customizations": { + "vscode": { + "settings": { + "terminal.integrated.defaultProfile.linux": "bash", + "terminal.integrated.profiles.linux": { + "bash": { + "path": "/bin/bash" + } + } + }, + "extensions": [ + "DavidAnson.vscode-markdownlint", + "eamodio.gitlens", + "mhutchie.git-graph", + "esbenp.prettier-vscode" + ] } - }, - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "ms-python.python", - "ms-python.vscode-pylance", - "DavidAnson.vscode-markdownlint", - "eamodio.gitlens", - "mhutchie.git-graph", - "esbenp.prettier-vscode" - ] + } } diff --git a/compose.yml b/compose.yml index e2be54d..9f419c2 100644 --- a/compose.yml +++ b/compose.yml @@ -1,4 +1,4 @@ -name: cal-itp/customer-success +name: customer-success services: docs: From 9193b7247f64ad3962689576cc6eddc2bf9f82b4 Mon Sep 17 00:00:00 2001 From: Kegan Maher Date: Wed, 23 Aug 2023 13:15:04 -0700 Subject: [PATCH 4/4] dependabot checker for GitHub Actions --- .github/dependabot.yaml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/dependabot.yaml diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..d482e00 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,18 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "github-actions" + # Workflow files stored in the + # default location of `.github/workflows` + directory: "/" + schedule: + interval: "daily" + commit-message: + prefix: "chore" + include: "scope" + labels: + - "dependencies"