Product Qualified Lead (PQL) development guidelines
The Product Qualified Lead (PQL) funnel connects our users with our team members. Read more about PQL product principles.
A hand-raise PQL is a user who requests to speak to sales from within the product.
Set up your development environment
- Set up GDK with a connection to your local CustomersDot instance.
-
Set up CustomersDot to talk to a staging instance of Workato.
- Set up CustomersDot using the standard install instructions.
- Set the
CUSTOMER_PORTAL_URL
environment variable to your local URL of your CustomersDot instance. - Place
export CUSTOMER_PORTAL_URL=http://localhost:5000/
in your shellrc
script (~/.zshrc
or~/.bash_profile
or~/.bashrc
) and restart GDK. - Enter the credentials on CustomersDot development to Workato in your
/config/secrets.yml
and restart. Credentials for the Workato Staging are in the 1Password Subscription portal vault. The URL for staging ishttps://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'] %>"
Set up lead monitoring
- Set up access for the Marketo sandbox, similar to this example request.
Manually test leads
- Register a new user with a unique email on your local GitLab instance.
- Send the PQL lead by submitting your new form or creating a new trial or a new hand raise lead.
- Use easily identifiable values that can be easily seen in Workato staging.
- Observe the entry in the staging instance of Workato and paste in the merge request comment and mention.
Troubleshooting
- Check the application and Sidekiq logs on
gitlab.com
and CustomersDot to monitor leads. - Check the
leads
table in CustomersDot. - Ask for access to the Marketo Sandbox and validate the leads there, to this example request.
Embed a hand-raise lead form
HandRaiseLeadButton is a reusable component that adds a button and a hand-raise modal to any screen.
You can import a hand-raise lead button in the following ways:
For Haml:
.js-hand-raise-lead-trigger{ data: discover_page_hand_raise_lead_data(group) }
For 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>
The hand-raise lead form submission can send unique data on modal submission and customize the button by providing the following props to the button:
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,
},
},
The ctaTracking
parameters follow the data-track
attributes for implementing Snowplow tracking.
The provided tracking attributes are attached to the button inside the HandRaiseLeadButton
component,
which triggers the hand-raise lead modal when selected.
Monitor the lead location
When embedding a new hand raise form, use a unique glmContent
or glm_content
field that is different to any existing values.
PQL lead flow
The flow of a PQL lead is as follows:
- A user triggers a
HandRaiseLeadButton
component ongitlab.com
. - The
HandRaiseLeadButton
submits any information to the following API endpoint:/-/gitlab_subscriptions/hand_raise_leads
. - That endpoint reposts the form to the CustomersDot
trials/create_hand_raise_lead
endpoint. - CustomersDot records the form data to the
leads
table and posts the form to Workato. - Workato sends the form to Marketo.
- Marketo does scoring and sends the form to Salesforce.
- Our Sales team uses Salesforce to connect to the leads.