제품 적격 리드 (PQL) 개발 가이드라인

제품 적격 리드 (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. /config/secrets.yml에서 Workato에 대한 CustomersDot 개발 자격 증명을 입력하고 재시작합니다. 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. 새 양식을 제출하거나 새 체험 혹은 새로운 손들기 리드를 생성하여 PQL 리드를 보냅니다.

  3. Workato 스테이징에서 쉽게 식별할 수 있는 값을 사용합니다.

  4. Workato의 스테이징 인스턴스에서 항목을 관찰하고 병합 요청 주석에 붙여넣고 언급합니다.

문제 해결

  • gitlab.com 및 CustomersDot에서 애플리케이션 및 Sidekiq 로그를 확인하여 리드를 모니터링합니다.

  • CustomersDot의 leads 테이블을 확인합니다.

  • Marketo 샌드박스에 대한 액세스를 요청하고, 이 요청 예제에서 리드를 검증합니다.

손들기 리드 폼 포함하기

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은 다음 API 엔드포인트에 정보를 제출합니다: /-/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#: 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: 모니터링 용도로 [lead]를 leads 테이블에 저장 CustomersDot|TrialsController#create_hand_raise_lead->>Workato|CreateLeadWorker: [lead]를 Workato에 제출하기 위한 비동기 워커 Workato|CreateLeadWorker->>Workato|CreateLeadService: [lead] Workato|CreateLeadService->>WorkatoApp#create_lead: [lead] WorkatoApp#create_lead->>Workato: [lead]가 Workato로 전송됨

모든 리드 유형에 대한 Workato 이후 PQL 흐름

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