Product Qualified Lead (PQL) 개발 가이드라인
GitLab v19.1Product Qualified Lead(PQL) 퍼널은 사용자와 팀원을 연결합니다. hand-raise PQL이란 제품 내에서 영업팀과 상담을 요청하는 사용자를 의미합니다. 로컬 CustomersDot 인스턴스에 연결된 GDK를 설정하세요.
Product Qualified Lead(PQL) 퍼널은 사용자와 팀원을 연결합니다. PQL 제품 원칙에 대해 자세히 읽어보세요.
hand-raise PQL이란 제품 내에서 영업팀과 상담을 요청하는 사용자를 의미합니다.
개발 환경 설정#
-
로컬 CustomersDot 인스턴스에 연결된 GDK를 설정하세요.
-
Workato의 스테이징 인스턴스와 통신하도록 CustomersDot을 설정하세요.
-
표준 설치 안내에 따라 CustomersDot을 설정하세요.
-
CUSTOMER_PORTAL_URL환경 변수를 로컬 CustomersDot 인스턴스 URL로 설정하세요. -
셸
rc스크립트(~/.zshrc또는~/.bash_profile또는~/.bashrc)에export CUSTOMER_PORTAL_URL=http://localhost:5000/을 추가하고 GDK를 재시작하세요. -
CustomersDot 개발 환경에서 Workato에 접속하기 위한 자격 증명을
/config/secrets.yml에 입력하고 재시작하세요. Workato 스테이징 자격 증명은 1Password Subscription portal vault에 있습니다. 스테이징 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'] %>"
리드 모니터링 설정#
- 이 예시 요청을 참고하여 Marketo 샌드박스에 대한 액세스를 설정하세요.
리드 수동 테스트#
-
로컬 GitLab 인스턴스에 고유한 이메일로 새 사용자를 등록하세요.
-
새 폼을 제출하거나 새 트라이얼 또는 새 hand raise 리드를 생성하여 PQL 리드를 전송하세요.
-
Workato 스테이징에서 쉽게 식별할 수 있는 값을 사용하세요.
-
Workato 스테이징 인스턴스의 항목을 확인하고 머지 리퀘스트 댓글에 붙여넣고 멘션하세요.
문제 해결#
-
gitlab.com과 CustomersDot의 애플리케이션 및 Sidekiq 로그를 확인하여 리드를 모니터링하세요. -
CustomersDot의
leads테이블을 확인하세요. -
이 예시 요청을 참고하여 Marketo 샌드박스에 대한 액세스를 요청하고 리드를 검증하세요.
hand-raise 리드 폼 삽입#
HandRaiseLeadButton은 모든 화면에 버튼과 hand-raise 모달을 추가하는 재사용 가능한 컴포넌트입니다.
다음과 같이 hand-raise 리드 버튼을 임포트할 수 있습니다:
<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>
hand-raise 리드 폼 제출 시 모달 제출에 고유한 데이터를 전송하고, 다음 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 컴포넌트 내부의 버튼에 첨부되며,
해당 버튼을 선택하면 hand-raise 리드 모달이 트리거됩니다.
리드 위치 모니터링#
새 hand raise 폼을 삽입할 때는 기존 값과 다른 고유한 glmContent 또는 glm_content 필드를 사용하세요.
PQL 리드 흐름#
PQL 리드의 흐름은 다음과 같습니다:
-
사용자가
gitlab.com에서HandRaiseLeadButton컴포넌트를 트리거합니다. -
HandRaiseLeadButton이 다음 API 엔드포인트로 정보를 제출합니다:/-/gitlab_subscriptions/hand_raise_leads. -
해당 엔드포인트는 폼을 CustomersDot의
leads/gitlab_com/hand_raises엔드포인트로 재전송합니다. -
CustomersDot은 폼 데이터를
leads테이블에 기록하고, 폼을 Workato로 전송합니다. -
Workato가 폼을 Marketo로 전송합니다.
-
Marketo가 스코어링을 수행하고 폼을 Salesforce로 전송합니다.
-
영업팀이 Salesforce를 사용하여 리드에 연결합니다.
트라이얼 리드 흐름#
GitLab.com의 트라이얼 리드 흐름#
sequenceDiagram Trial Frontend Forms->>TrialsController#35;create_lead: GitLab.com frontend sends [lead] to backend TrialsController#35;create->>CreateLeadService: [lead] TrialsController#35;create->>ApplyTrialService: [lead] Apply the trial CreateLeadService->>SubscriptionPortalClient#35;generate_trial_lead: [lead] Creates customer account on CustomersDot ApplyTrialService->>SubscriptionPortalClient#35;generate_trial(sync_to_gl#61;true): [lead] Asks CustomersDot to apply the trial on namespace SubscriptionPortalClient#35;generate_trial_lead->>CustomersDot|Leads#58;#58;GitlabCom#58;#58;UltimatesController#35;create: GitLab.com sends [lead] to CustomersDot SubscriptionPortalClient#35;generate_trial(sync_to_gl#61;true)->>CustomersDot|TrialsController#35;create(sync_to_gl#61;true): GitLab.com asks CustomersDot to apply the trial
CustomersDot의 트라이얼 리드 흐름 (sync_to_gl)#
sequenceDiagram CustomersDot|Leads#58;#58;GitlabCom#58;#58;UltimatesController#35;create->>HostedPlans|CreateTrialService#35;execute: Save [lead] to leads table for monitoring purposes HostedPlans|CreateTrialService#35;execute->>BaseTrialService#35;create_account: Creates a customer record in customers table HostedPlans|CreateTrialService#35;create_lead->>CreateLeadService: Creates a lead record in customers table HostedPlans|CreateTrialService#35;create_lead->>Workato|CreateLeadWorker: Async worker to submit [lead] to Workato Workato|CreateLeadWorker->>Workato|CreateLeadService: [lead] Workato|CreateLeadService->>WorkatoApp#35;create_lead: [lead] WorkatoApp#35;create_lead->>Workato: [lead] is sent to Workato
CustomersDot에서 네임스페이스에 트라이얼 적용#
sequenceDiagram HostedPlans|CreateTrialService->load_namespace#Gitlab api/namespaces: Load namespace details HostedPlans|CreateTrialService->create_order#: Creates an order in orders table HostedPlans|CreateTrialService->create_trial_history#: Creates a record in trial_histories table
Hand raise 리드 흐름#
GitLab.com의 Hand raise 흐름#
sequenceDiagram HandRaiseForm Vue Component->>HandRaiseLeadsController#create: GitLab.com frontend sends [lead] to backend HandRaiseLeadsController#create->>CreateHandRaiseLeadService: [lead] CreateHandRaiseLeadService->>SubscriptionPortalClient: [lead] SubscriptionPortalClient->>CustomersDot|HandRaisesController#create: GitLab.com sends [lead] to CustomersDot
CustomersDot의 Hand raise 흐름#
sequenceDiagram CustomersDot|HandRaisesController#create->>CreateLeadService: Save [lead] to leads table for monitoring purposes CustomersDot|HandRaisesController#create->>Workato|CreateLeadWorker: Async worker to submit [lead] to Workato Workato|CreateLeadWorker->>Workato|CreateLeadService: [lead] Workato|CreateLeadService->>WorkatoApp#create_lead: [lead] WorkatoApp#create_lead->>Workato: [lead] is sent to Workato
모든 리드 유형에 대한 Workato 이후의 PQL 흐름#
sequenceDiagram Workato->>Marketo: [lead] Marketo->>Salesforce(SFDC): [lead]