Product Qualified Lead (PQL) 개발 지침

Product Qualified Lead(PQL) 퍼널은 사용자와 팀 구성원을 연결합니다. PQL 제품 원칙에 대해 더 읽어보세요.

Hand-raise PQL은 제품 내에서 영업팀과 대화를 요청하는 사용자입니다.

개발 환경 설정

  1. 로컬 CustomersDot 인스턴스에 연결된 GDK를 설정하세요.
  2. CustomersDot을 Workato의 스테이징 인스턴스와 연결하세요.

  3. 표준 설치 지침을 사용하여 CustomersDot을 설정하세요.
  4. CUSTOMER_PORTAL_URL 환경 변수를 로컬 (또는 ngrok) CustomersDot 인스턴스의 URL로 설정하세요.
  5. rc 스크립트(~/.zshrc 또는 ~/.bash_profile 또는 ~/.bashrc)에 export CUSTOMER_PORTAL_URL='https://XXX.ngrok.io/'을 추가하고 GDK를 재시작하세요.
  6. CustomersDot 개발 환경에서 Workato에 대한 자격 증명을 /config/secrets.yml에 입력한 후 재시작하세요. Workato 스테이징의 자격 증명은 1Password Subscription 포털 보증에 있습니다. 스테이징의 URL은 https://apim.workato.com/gitlab-dev/services/marketo/lead입니다.
  workato_url: "<%= ENV['WORKATO_URL'] %>"
  workato_client_id: "<%= ENV['WORKATO_CLIENT_ID'] %>"
  workato_client_secret: "<%= ENV['WORKATO_CLIENT_SECRET'] %>"

리드 모니터링 설정

  1. Marketo 샌드박스에 액세스를 설정하세요. 비슷한 이 예제 요청처럼 설정하세요.

매뉴얼으로 리드 테스트하기

  1. 로컬 GitLab 인스턴스에서 고유한 이메일로 새 사용자를 등록하세요.
  2. 새 양식을 제출하거나 새 평가판이나 새 HandRaise 리드를 생성하여 PQL 리드를 보내보세요.
  3. Workato 스테이징에서 쉽게 식별 가능한 값을 사용하세요.
  4. Workato 스테이징에서 항목을 확인하고 머지 요청 코멘트와 언급에 붙여넣으세요.

문제 해결

  • gitlab.com 및 CustomersDot의 애플리케이션 및 Sidekiq 로그를 확인하여 리드를 모니터링하세요.
  • CustomersDot의 leads 테이블을 확인하세요.
  • Marketo 샌드박스의 액세스를 요청하여 리드를 유효성 검사하세요. 이 예제 요청에 따라 설정하세요.

Hand-raise 리드 양식 삽입

HandRaiseLeadButton은 재사용 가능한 컴포넌트로, 버튼과 Hand-raise 모달을 화면에 추가합니다.

다음과 같이 Hand-raise 리드 버튼을 가져올 수 있습니다.

import HandRaiseLeadButton from 'ee/hand_raise_leads/hand_raise_lead/components/hand_raise_lead_button.vue';

export default {
  components: {
    HandRaiseLeadButton,
...
</script>

<template>

<hand-raise-lead-button />

Hand-raise 리드 양식은 다음 매개변수를 provide 또는 inject를 통해 받아들입니다.

    provide: {
      small,
      user: {
        namespaceId,
        userName,
        firstName,
        lastName,
        companyName,
        glmContent,
      },
      ctaTracking: {
        action,
        label,
        property,
        value,
        experiment,
      },
    },

ctaTracking 매개변수는 Snowplow 추적을 구현하기 위한 data-track 속성에 따릅니다. 제공된 추적 속성은 HandRaiseLeadButton 컴포넌트 내의 버튼에 추가되며, 선택 시 Hand-raise 리드 모달을 활성화합니다.

리드 위치 모니터링

새 Hand-raise 양식을 삽입할 때, 기존 값과는 다른 고유한 glmContent 또는 glm_content 필드를 사용하세요.

현재 다음과 같은 glm_content 값을 사용합니다:

glm_content설명
discover-group-security 이 값은 그룹 보안 기능 발견 페이지에 사용됩니다.
discover-group-security-pqltest 이 값은 그룹 보안 기능 발견 페이지에서 CTA 3개를 사용한 실험에 사용됩니다.
discover-project-security 이 값은 프로젝트 보안 기능 발견 페이지에 사용됩니다.
discover-project-security-pqltest 이 값은 프로젝트 보안 기능 발견 페이지에서 CTA 3개를 사용한 실험에 사용됩니다.
group-billing 이 값은 그룹 청구 페이지에 사용됩니다.
trial-status-show-group 이 값은 네임스페이스에 유효한 평가판이 있는 경우 상단 좌측 내비게이션에서 사용됩니다.

컴포넌트 테스트

Jest 테스트에서 컴포넌트의 존재 여부를 테스트할 수 있습니다.

expect(wrapper.findComponent(HandRaiseLeadButton).exists()).toBe(true);

PQL 리드의 흐름

PQL 리드의 흐름은 다음과 같습니다:

  1. 사용자가 HandRaiseLeadButton 컴포넌트gitlab.com에서 시작합니다.
  2. HandRaiseLeadButton은 양식을 /-/subscriptions/hand_raise_leads API 엔드포인트에 제출합니다.
  3. 해당 엔드포인트는 양식을 CustomersDot trials/create_hand_raise_lead 엔드포인트로 다시 게시합니다.
  4. CustomersDot은 양식 데이터를 leads 테이블에 기록하고 양식을 Workato에 전송합니다.
  5. Workato은 양식을 Marketo에 전송합니다.
  6. Marketo는 점수를 매기고 양식을 Salesforce에 전송합니다.
  7. 판매팀은 Salesforce를 사용하여 리드에 연락합니다.

평가판 리드 흐름

GitLab.com에서의 평가판 리드 흐름

sequenceDiagram Trial Frontend Forms ->>TrialsController#create_lead: GitLab.com frontend가 백엔드로 [리드]를 보냄 TrialsController#create->>CreateLeadService: [리드] TrialsController#create->>ApplyTrialService: [리드] 평가판을 적용합니다 CreateLeadService->>SubscriptionPortalClient#generate_trial(sync_to_gl=false): [리드] CustomersDot에 고객 계정 생성 ApplyTrialService->>SubscriptionPortalClient#generate_trial(sync_to_gl=true): [리드] CustomersDot에 평가판을 적용 SubscriptionPortalClient#generate_trial(sync_to_gl=false)->>CustomersDot|TrialsController#create(sync_to_gl=false): GitLab.com이 [리드]를 CustomersDot에 보냄 SubscriptionPortalClient#generate_trial(sync_to_gl=true)->>CustomersDot|TrialsController#create(sync_to_gl=true): GitLab.com이 CustomersDot에 평가판 적용을 요청

CustomersDot에서의 평가판 리드 흐름 (sync_to_gl)

sequenceDiagram CustomersDot|TrialsController#create->>HostedPlans|CreateTrialService#execute: 모니터링을 위해 [리드]를 leads 테이블에 저장 HostedPlans|CreateTrialService#execute->>BaseTrialService#create_account: customers 테이블에 고객 레코드 생성 HostedPlans|CreateTrialService#create_lead->>CreateLeadService: customers 테이블에 리드 레코드 생성 HostedPlans|CreateTrialService#create_lead->>Workato|CreateLeadWorker: Workato에 [리드]를 제출하는 비동기 워커 Workato|CreateLeadWorker->>Workato|CreateLeadService: [리드] Workato|CreateLeadService->>WorkatoApp#create_lead: [리드] WorkatoApp#create_lead->>Workato: [리드]가 Workato로 전송됨

CustomersDot 네임스페이스에 대한 시도 적용

sequenceDiagram HostedPlans|CreateTrialService->load_namespace#Gitlab api/namespaces: 네임스페이스 세부 정보 로드 HostedPlans|CreateTrialService->create_order#: 주문 테이블에 주문 생성 HostedPlans|CreateTrialService->create_trial_history#: trial_histories 테이블에 레코드 생성

손을 든 리드 플로우

GitLab.com에서의 손을 든 플로우

sequenceDiagram HandRaiseForm Vue Component->>HandRaiseLeadsController#create: GitLab.com 프론트엔드가 [리드]를 백엔드로 전송 HandRaiseLeadsController#create->>CreateHandRaiseLeadService: [리드] CreateHandRaiseLeadService->>SubscriptionPortalClient: [리드] SubscriptionPortalClient->>CustomersDot|TrialsController#create_hand_raise_lead: GitLab.com이 [리드]를 CustomersDot로 전송

CustomersDot에서의 손을 든 플로우

sequenceDiagram CustomersDot|TrialsController#create_hand_raise_lead->>CreateLeadService: 모니터링 목적을 위해 [리드]를 leads 테이블에 저장 CustomersDot|TrialsController#create_hand_raise_lead->>Workato|CreateLeadWorker: [리드]를 Workato로 전송하기 위한 비동기 워커 Workato|CreateLeadWorker->>Workato|CreateLeadService: [리드] Workato|CreateLeadService->>WorkatoApp#create_lead: [리드] WorkatoApp#create_lead->>Workato: [리드]가 Workato로 전송됨

모든 리드 유형에 대한 Workato 이후 PQL 플로우

sequenceDiagram Workato->>Marketo: [리드] Marketo->>Salesforce(SFDC): [리드]