Product Qualified Lead (PQL) 개발 가이드

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

핸드 올림 PQL은 제품 내에서 영업팀과 연락하길 원하는 사용자입니다.

개발 환경 설정

  1. 로컬 CustomersDot 인스턴스에 대한 연결이 있는 GDK를 설정합니다.
  2. CustomersDot을 Workato의 스테이징 인스턴스와 연결합니다.

  3. 표준 설치 지침을 사용하여 CustomersDot을 설정합니다.
  4. CUSTOMER_PORTAL_URL 환경 변수를 CustomersDot 인스턴스의 로컬 URL로 설정합니다.
  5. rc 스크립트(~/.zshrc 또는 ~/.bash_profile 또는 ~/.bashrc)에 export CUSTOMER_PORTAL_URL=http://localhost:5000/를 추가하고 GDK를 재시작합니다.
  6. CustomersDot 개발 환경에서 Workato로의 자격 증명을 /config/secrets.yml에 입력하고 재시작합니다. Workato 스테이징의 자격 증명은 1Password 구독 포털 금고에 있습니다. 스테이징의 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 sandbox에 액세스를 설정합니다. 비슷한 이 예시 요청과 유사하게 진행하세요.

수동으로 리드 테스트하기

  1. 로컬 GitLab 인스턴스에 고유한 이메일로 새 사용자를 등록합니다.
  2. 새 양식을 제출하거나 새 평가판 또는 새 핸드 올림 리드를 생성하여 PQL 리드를 전송합니다.
  3. Workato 스테이징에서 쉽게 식별할 수 있는 값을 사용하세요.
  4. Workato 스테이징의 항목을 관찰하고 병합 요청 코멘트에 붙여 넣고 언급하세요.

문제 해결

  • gitlab.com 및 CustomersDot의 애플리케이션 및 Sidekiq 로그를 확인하여 리드를 모니터링합니다.
  • CustomersDot의 leads 테이블을 확인합니다.
  • Marketo Sandbox에 액세스를 요청하고 이 예시 요청을 통해 리드를 유효성 검사합니다.

핸드 올림 리드 양식 삽입

HandRaiseLeadButton은 모든 화면에 버튼과 핸드 올림 모달을 추가하는 재사용 가능한 컴포넌트입니다.

핸드 올림 리드 버튼을 다음과 같이 가져올 수 있습니다:

Haml의 경우:

.js-hand-raise-lead-trigger{ data: discover_page_hand_raise_lead_data(group) }

Vue의 경우:

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

export default {
  handRaiseLeadAttributes: {
    variant: 'confirm',
    category: 'tertiary',
    class: 'gl-sm-w-auto gl-w-full gl-sm-ml-3 gl-sm-mt-0 gl-mt-3',
    'data-testid': 'some-unique-hand-raise-lead-button',
  },
  ctaTracking: {
    action: 'click_button',
  },
  components: {
    HandRaiseLeadButton,
...
</script>

<template>

<hand-raise-lead-button
  :button-attributes="$options.handRaiseLeadAttributes"
  glm-content="some-unique-glm-content"
  :cta-tracking="$options.ctaTracking"
/>
...
</template>

핸드 올림 리드 양식 제출은 모달 제출 시 고유 데이터를 전송하고 버튼을 커스터마이즈하는 데 사용할 수 있는 다음 props을 제공함으로써 가능합니다:

props: {
  ctaTracking: {
    type: Object,
    required: false,
    default: () => ({}),
  },
  buttonText: {
    type: String,
    required: false,
    default: PQL_BUTTON_TEXT,
  },
  buttonAttributes: {
    type: Object,
    required: true,
  },
  glmContent: {
    type: String,
    required: true,
  },
  productInteraction: {
    type: String,
    required: false,
    default: PQL_PRODUCT_INTERACTION,
  },
},

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

리드 위치 모니터링

새로운 핸드 올림 양식을 삽입할 때 기존 값과 다른 고유한 glmContent 또는 glm_content 필드를 사용하세요.

PQL 리드 흐름

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

  1. 사용자가 HandRaiseLeadButton 컴포넌트gitlab.com에서 트리거합니다.
  2. HandRaiseLeadButton은 양식을 /-/subscriptions/hand_raise_leads로 전송합니다.
  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 프론트엔드가 [리드]를 백엔드로 전송 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: 모니터링 목적을 위해 [리드]를 리드 테이블에 저장합니다. HostedPlans|CreateTrialService#execute->>BaseTrialService#create_account: 고객 레코드를 고객 테이블에 생성합니다. HostedPlans|CreateTrialService#create_lead->>CreateLeadService: 고객 테이블에 리드 레코드를 생성합니다. 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#: 시험 내역 테이블에 레코드를 생성합니다.

핸드 레이즈 리드 플로우

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: 모니터링 목적을 위해 [리드]를 리드 테이블에 저장합니다. 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): [리드]