InfoGrab DocsInfoGrab Docs

Product Qualified Lead (PQL) 개발 가이드라인

요약

Product 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]

Product Qualified Lead (PQL) 개발 가이드라인

GitLab v19.1
원문 보기
요약

Product 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]